From 646a57b4356be541fa038242216a52664ff06dab Mon Sep 17 00:00:00 2001 From: AllenFang Date: Wed, 4 Nov 2015 00:01:10 +0800 Subject: [PATCH 01/15] change table structure --- css/react-bootstrap-table.css | 38 ++++++++++++++--------- examples/js/basic/demo.js | 5 +++ examples/js/basic/large-column-table.js | 41 +++++++++++++++++++++++++ src/BootstrapTable.js | 7 +++-- src/TableBody.js | 2 +- 5 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 examples/js/basic/large-column-table.js diff --git a/css/react-bootstrap-table.css b/css/react-bootstrap-table.css index 00dd99bb9..cd5602f16 100644 --- a/css/react-bootstrap-table.css +++ b/css/react-bootstrap-table.css @@ -1,7 +1,7 @@ /*editor error animate*/ /*@import "~toastr/build/toastr.min.css";*/ -.react-bs-table .table-header{ +.react-bs-container .table-header{ height: 42px; border-top-width: 1px; border-top-style: solid; @@ -12,48 +12,56 @@ border-right-width: 1px; border-right-style: inset; border-right-color: rgb(221, 221, 221); + overflow: hidden; } -.react-bs-table .table-header > table{ - table-layout: fixed; +.react-bs-container .table-header > table{ + /*table-layout: fixed;*/ border-top-style: hidden; border-right-style: hidden; + width: 100%; } -.react-bs-table .table-header > table > thead > tr{ +.react-bs-container .table-header > table > thead > tr{ border-bottom-style: hidden; } -.react-bs-table .table-header > table > thead > tr > th .table-header-column{ - line-height: 25px +.react-bs-container .table-container > table > tbody > tr > td, +.react-bs-container .table-container > table > thead > tr > th, +.react-bs-container .table-header > table > thead > tr > th .table-header-column{ + line-height: 25px; + vertical-align: top; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } -.react-bs-table .table-header > table > thead > tr > .sort-column{ +.react-bs-container .table-header > table > thead > tr > .sort-column{ cursor: pointer; } -.react-bs-table .table-container{ - overflow-x: auto; - overflow-y: auto; +.react-bs-container .table-container{ + overflow: auto; height: 100%; border-right-style: solid; border-right-width: 1px; border-right-color: rgb(221, 221, 221); } -.react-bs-table .table-container > table{ - margin-top: -18px; - table-layout: fixed; +.react-bs-container .table-container > table{ + margin-top: -42px; + /*table-layout: fixed;*/ margin-bottom: 0px; border-right-style: hidden; border-top-width: 0px; + width: 100%; } .react-bs-container .tool-bar{ margin-bottom: 5px } /*inline editor default style*/ -.react-bs-table .form-control.editor{ +.react-bs-container .form-control.editor{ width:100%; top:0; left:0; @@ -61,7 +69,7 @@ position: absolute; } -.react-bs-table .textarea-save-btn{ +.react-bs-container .textarea-save-btn{ position: absolute; z-index: 100; right: 0; diff --git a/examples/js/basic/demo.js b/examples/js/basic/demo.js index 90512fd63..5731c14f8 100644 --- a/examples/js/basic/demo.js +++ b/examples/js/basic/demo.js @@ -2,6 +2,7 @@ import React from 'react'; import BasicTable from './basic-table'; import HoverStripedTable from './hover-striped-table'; import ScrollTable from './scroll-table'; +import LargeColumnTable from './large-column-table'; import {Col, Panel} from 'react-bootstrap'; @@ -21,6 +22,10 @@ class Demo extends React.Component {
Source in /examples/js/basic/scroll-table.js
+ +
Source in /examples/js/basic/large-column-table.js
+ +
); } diff --git a/examples/js/basic/large-column-table.js b/examples/js/basic/large-column-table.js new file mode 100644 index 000000000..8c21c3558 --- /dev/null +++ b/examples/js/basic/large-column-table.js @@ -0,0 +1,41 @@ +'use strict'; +import React from 'react'; +import {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table'; + + +var products = []; + +function addProducts(quantity) { + var startId = products.length; + for (var i = 0; i < quantity; i++) { + var id = startId + i; + products.push({ + id: id, + name: "Item name " + id, + price: 2100 + i + }); + } +} + +addProducts(5); + +export default class LargeColumnTable extends React.Component{ + render(){ + return ( + + ProductID + ProductName + ProductPrice + ProductName + ProductPrice + ProductName + ProductPrice + ProductName + ProductPrice + ProductName + ProductPrice + ProductName + + ); + } +}; diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 562ce0568..600f32ffb 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -141,6 +141,7 @@ class BootstrapTable extends React.Component { childrens = [this.props.children]; } var columns = childrens.map(function (column, i) { + console.log(column); return { name: column.props.dataField, align: column.props.dataAlign, @@ -150,6 +151,7 @@ class BootstrapTable extends React.Component { hidden: column.props.hidden, className: column.props.columnClassName, width: column.props.width, + text: column.props.children, index: i }; }, this); @@ -158,9 +160,8 @@ class BootstrapTable extends React.Component { var toolBar = this.renderToolBar(); var tableFilter = this.renderTableFilter(columns); return ( -
+
{toolBar} -
{tableFilter} {pagination} -
) } @@ -485,6 +485,7 @@ class BootstrapTable extends React.Component { if(tableHeaderDom.offsetWidth !== tableBodyDom.offsetWidth){ tableHeaderDom.style.width = tableBodyDom.offsetWidth + "px"; } + this.refs.table.childNodes[0].childNodes[0].style.width = this.refs.table.childNodes[1].childNodes[0].offsetWidth+"px"; } } diff --git a/src/TableBody.js b/src/TableBody.js index 770292fd6..a7228dfbd 100644 --- a/src/TableBody.js +++ b/src/TableBody.js @@ -148,7 +148,7 @@ class TableBody extends React.Component{ display: column.hidden?"none":null, width: column.width }; - return (); + return ({column.text}); }); return( From d41fec8cdc92d474aff46c5fd1234f152d3826f3 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Thu, 5 Nov 2015 20:28:32 +0800 Subject: [PATCH 02/15] make horizontal scroll bar and prepare to fix unfix table. --- src/BootstrapTable.js | 15 ++++++++++----- src/TableBody.js | 15 +++++++++++++-- src/TableHeader.js | 8 +++++--- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 600f32ffb..e87e3cbd1 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -99,6 +99,11 @@ class BootstrapTable extends React.Component { componentDidMount() { this._adjustHeaderWidth(); window.addEventListener('resize', this._adjustHeaderWidth.bind(this)); + const headerProps = this.refs.body.getBodyHeaderDomProp(); + //start from here + this.refs.body.refs.container.addEventListener('scroll', (e) => { + this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft; + }); } componentWillUnmount() { @@ -141,7 +146,6 @@ class BootstrapTable extends React.Component { childrens = [this.props.children]; } var columns = childrens.map(function (column, i) { - console.log(column); return { name: column.props.dataField, align: column.props.dataAlign, @@ -163,13 +167,15 @@ class BootstrapTable extends React.Component {
{toolBar} + bordered={this.props.bordered} + condensed={this.props.condensed}> {this.props.children} +
{tableHeader} @@ -152,7 +152,7 @@ class TableBody extends React.Component{ }); return( - + {selectRowHeader}{theader} ) @@ -220,6 +220,17 @@ class TableBody extends React.Component{ } } + getBodyHeaderDomProp(){ + var headers = this.refs.header.childNodes[0].childNodes; + var headerDomProps = []; + for(let i=0;i +
@@ -87,7 +88,8 @@ TableHeader.propTypes = { sortName: React.PropTypes.string, sortOrder: React.PropTypes.string, hideSelectColumn: React.PropTypes.bool, - bordered: React.PropTypes.bool + bordered: React.PropTypes.bool, + condensed: React.PropTypes.bool }; TableHeader.defaultProps = { From 3d85c98d21972535fc8dffb769e2427ef5b94f54 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Thu, 5 Nov 2015 20:28:56 +0800 Subject: [PATCH 03/15] add large column demo --- examples/js/basic/demo.js | 8 ++++---- examples/js/basic/large-column-table.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/js/basic/demo.js b/examples/js/basic/demo.js index 5731c14f8..44c49e21f 100644 --- a/examples/js/basic/demo.js +++ b/examples/js/basic/demo.js @@ -18,14 +18,14 @@ class Demo extends React.Component {
Source in /examples/js/basic/hover-striped-table.js
- -
Source in /examples/js/basic/scroll-table.js
- -
Source in /examples/js/basic/large-column-table.js
+ +
Source in /examples/js/basic/scroll-table.js
+ +
); } diff --git a/examples/js/basic/large-column-table.js b/examples/js/basic/large-column-table.js index 8c21c3558..c03c3aaae 100644 --- a/examples/js/basic/large-column-table.js +++ b/examples/js/basic/large-column-table.js @@ -11,7 +11,7 @@ function addProducts(quantity) { var id = startId + i; products.push({ id: id, - name: "Item name " + id, + name: "Item name 12345678" + id, price: 2100 + i }); } From 99eb5a1a9f7eebca0094984be10d0bd795579166 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Fri, 6 Nov 2015 00:42:03 +0800 Subject: [PATCH 04/15] fit header --- src/BootstrapTable.js | 3 ++- src/TableHeader.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 4ac92a0ba..9caaaa636 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -100,7 +100,8 @@ class BootstrapTable extends React.Component { this._adjustHeaderWidth(); window.addEventListener('resize', this._adjustHeaderWidth.bind(this)); const headerProps = this.refs.body.getBodyHeaderDomProp(); - //start from here + this.refs.header.updateChildrens(headerProps); + this.refs.body.refs.container.addEventListener('scroll', (e) => { this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft; }); diff --git a/src/TableHeader.js b/src/TableHeader.js index 84332002f..ab018bf34 100644 --- a/src/TableHeader.js +++ b/src/TableHeader.js @@ -80,6 +80,20 @@ class TableHeader extends React.Component{ React.cloneElement(this.props.children, {key: 0, clearSortCaret: this.clearSortCaret.bind(this)}); } } + + updateChildrens(headerProps){ + if(Array.isArray(this.props.children)){ + for(let i=0;i Date: Sat, 7 Nov 2015 20:44:05 +0800 Subject: [PATCH 05/15] enhance header fit. --- src/BootstrapTable.js | 16 ++++++++-------- src/TableHeader.js | 5 +++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 523ff1c02..0d5077d69 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -100,16 +100,12 @@ class BootstrapTable extends React.Component { componentDidMount() { this._adjustHeaderWidth(); window.addEventListener('resize', this._adjustHeaderWidth.bind(this)); - const headerProps = this.refs.body.getBodyHeaderDomProp(); - this.refs.header.updateChildrens(headerProps); - - this.refs.body.refs.container.addEventListener('scroll', (e) => { - this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft; - }); + this.refs.body.refs.container.addEventListener('scroll', this._scrollHeader.bind(this)); } componentWillUnmount() { window.removeEventListener('resize', this._adjustHeaderWidth.bind(this)); + this.refs.body.refs.container.removeEventListener('scroll', this._scrollHeader.bind(this)); } componentDidUpdate() { @@ -117,8 +113,6 @@ class BootstrapTable extends React.Component { this._attachCellEditFunc(); if (this.props.options.afterTableComplete) this.props.options.afterTableComplete(); - if (this.props.options.afterSearchOrFilter) - this.props.options.afterSearchOrFilter(this.store.getDataIgnoringPagination()); } _attachCellEditFunc() { @@ -513,12 +507,18 @@ class BootstrapTable extends React.Component { } } + _scrollHeader(e){ + this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft; + } + _adjustHeaderWidth() { var tableHeaderDom = this.refs.header.refs.container.childNodes[0]; var tableBodyDom = this.refs.body.refs.container.childNodes[0]; if(tableHeaderDom.offsetWidth !== tableBodyDom.offsetWidth){ tableHeaderDom.style.width = tableBodyDom.offsetWidth + "px"; } + const headerProps = this.refs.body.getBodyHeaderDomProp(); + this.refs.header.updateChildrens(headerProps); } } diff --git a/src/TableHeader.js b/src/TableHeader.js index ab018bf34..3ef8c2592 100644 --- a/src/TableHeader.js +++ b/src/TableHeader.js @@ -83,10 +83,11 @@ class TableHeader extends React.Component{ updateChildrens(headerProps){ if(Array.isArray(this.props.children)){ + let startPosition = (this.props.rowSelectType == Const.ROW_SELECT_SINGLE || + this.props.rowSelectType == Const.ROW_SELECT_MULTI) && !this.props.hideSelectColumn ? 1:0; for(let i=0;i Date: Sun, 8 Nov 2015 13:39:56 +0800 Subject: [PATCH 06/15] fix cell edit style bug and sync all.css --- css/react-bootstrap-table-all.css | 46 ++++++++++++++++++------------- css/react-bootstrap-table.css | 8 +++--- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/css/react-bootstrap-table-all.css b/css/react-bootstrap-table-all.css index 03c1df867..714ca8b55 100644 --- a/css/react-bootstrap-table-all.css +++ b/css/react-bootstrap-table-all.css @@ -2,7 +2,7 @@ /*@import "~toastr/build/toastr.min.css";*/ @import "https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css"; -.react-bs-table .table-header{ +.react-bs-container .table-header{ height: 42px; border-top-width: 1px; border-top-style: solid; @@ -13,56 +13,64 @@ border-right-width: 1px; border-right-style: inset; border-right-color: rgb(221, 221, 221); + overflow: hidden; } -.react-bs-table .table-header > table{ - table-layout: fixed; +.react-bs-container .table-header > table{ + /*table-layout: fixed;*/ border-top-style: hidden; border-right-style: hidden; + width: 100%; } -.react-bs-table .table-header > table > thead > tr{ +.react-bs-container .table-header > table > thead > tr{ border-bottom-style: hidden; } -.react-bs-table .table-header > table > thead > tr > th .table-header-column{ - line-height: 25px +.react-bs-container .table-container > table > tbody > tr > td, +.react-bs-container .table-container > table > thead > tr > th, +.react-bs-container .table-header > table > thead > tr > th .table-header-column{ + line-height: 25px; + vertical-align: top; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } -.react-bs-table .table-header > table > thead > tr > .sort-column{ +.react-bs-container .table-header > table > thead > tr > .sort-column{ cursor: pointer; } -.react-bs-table .table-container{ - overflow-x: auto; - overflow-y: auto; +.react-bs-container .table-container{ + overflow: auto; height: 100%; border-right-style: solid; border-right-width: 1px; border-right-color: rgb(221, 221, 221); } -.react-bs-table .table-container > table{ - margin-top: -18px; - table-layout: fixed; +.react-bs-container .table-container > table{ + margin-top: -42px; + /*table-layout: fixed;*/ margin-bottom: 0px; border-right-style: hidden; border-top-width: 0px; + width: 100%; } .react-bs-container .tool-bar{ margin-bottom: 5px } /*inline editor default style*/ -.react-bs-table .form-control.editor{ - width:100%; +.react-bs-container .form-control.editor{ + /*width:100%; top:0; - left:0; - height: 100%; - position: absolute; + left:0;*/ + /*height: 100%; + position: absolute;*/ } -.react-bs-table .textarea-save-btn{ +.react-bs-container .textarea-save-btn{ position: absolute; z-index: 100; right: 0; diff --git a/css/react-bootstrap-table.css b/css/react-bootstrap-table.css index cd5602f16..3050b1bce 100644 --- a/css/react-bootstrap-table.css +++ b/css/react-bootstrap-table.css @@ -62,11 +62,11 @@ } /*inline editor default style*/ .react-bs-container .form-control.editor{ - width:100%; + /*width:100%; top:0; - left:0; - height: 100%; - position: absolute; + left:0;*/ + /*height: 100%; + position: absolute;*/ } .react-bs-container .textarea-save-btn{ From 40e3c00a3f1ea83acaebf222d337aa11b410e358 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 8 Nov 2015 13:40:54 +0800 Subject: [PATCH 07/15] fit inner table header --- src/BootstrapTable.js | 2 +- src/TableBody.js | 15 +++++++++++++++ src/TableHeader.js | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 0d5077d69..88cde0031 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -518,7 +518,7 @@ class BootstrapTable extends React.Component { tableHeaderDom.style.width = tableBodyDom.offsetWidth + "px"; } const headerProps = this.refs.body.getBodyHeaderDomProp(); - this.refs.header.updateChildrens(headerProps); + this.refs.header.fitHeader(headerProps); } } diff --git a/src/TableBody.js b/src/TableBody.js index a92ebf4f2..27c16de64 100644 --- a/src/TableBody.js +++ b/src/TableBody.js @@ -19,6 +19,14 @@ class TableBody extends React.Component{ this.editing = false; } + componentDidMount(){ + this.hardFixHeaderWidth(); + } + + componentDidUpdate(){ + this.hardFixHeaderWidth(); + } + render(){ var containerClasses = classSet("table-container"); @@ -243,6 +251,13 @@ class TableBody extends React.Component{ return headerDomProps; } + hardFixHeaderWidth(){ + var headers = this.refs.header.childNodes[0].childNodes; + for(let i=0;i Date: Sun, 8 Nov 2015 15:11:30 +0800 Subject: [PATCH 08/15] add min-width to fix user assign column width not eq offSetWidth in large column table. --- src/TableBody.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TableBody.js b/src/TableBody.js index 27c16de64..5a3b592bc 100644 --- a/src/TableBody.js +++ b/src/TableBody.js @@ -155,7 +155,8 @@ class TableBody extends React.Component{ var theader = this.props.columns.map(function(column, i){ let style={ display: column.hidden?"none":null, - width: column.width + width: column.width, + minWidth: column.width }; return (
); }); From 8b8faa803b19f438eb19cdd2b19681c7ba960529 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 8 Nov 2015 19:24:06 +0800 Subject: [PATCH 09/15] add sort caret in inner table --- src/TableBody.js | 8 ++++++-- src/util.js | 13 +++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/TableBody.js b/src/TableBody.js index 5a3b592bc..e7b1a0773 100644 --- a/src/TableBody.js +++ b/src/TableBody.js @@ -1,5 +1,6 @@ import React from 'react'; import Const from './Const'; +import Util from './util'; import TableRow from './TableRow'; import TableColumn from './TableColumn'; import TableEditColumn from './TableEditColumn'; @@ -148,7 +149,8 @@ class TableBody extends React.Component{ if(isSelectRowDefined){ let style = { - width:35 + width:35, + minWidth:35 } selectRowHeader = this.props.selectRow.hideSelectColumn?null:(); } @@ -157,8 +159,10 @@ class TableBody extends React.Component{ display: column.hidden?"none":null, width: column.width, minWidth: column.width + /** add min-wdth to fix user assign column width not eq offsetWidth in large column table **/ }; - return (); + let sortCaert = column.sort?(Util.renderReactSortCaret(Const.SORT_DESC)):null; + return (); }); return( diff --git a/src/util.js b/src/util.js index 3341d46b1..44f01e959 100644 --- a/src/util.js +++ b/src/util.js @@ -1,4 +1,6 @@ +import React from 'react'; import Const from './Const'; +import classSet from 'classnames'; export default { renderSortCaret(order) { @@ -10,6 +12,17 @@ export default { inner.style.margin = "10px 5px"; wrap.appendChild(inner); return wrap; + }, + + renderReactSortCaret(order){ + var orderClass = classSet("order", { + 'dropup': order == Const.SORT_ASC + }); + return ( + + + + ); } }; From 182081acd1409f8183a393251446aacfe4aa4739 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 8 Nov 2015 19:58:10 +0800 Subject: [PATCH 10/15] fix filter input size --- src/TableFilter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TableFilter.js b/src/TableFilter.js index e8f142705..6763e1987 100644 --- a/src/TableFilter.js +++ b/src/TableFilter.js @@ -42,7 +42,7 @@ class TableFilter extends React.Component{ return( ) From 735da6795d0ab2cdf87cc51a2ff0ad2793598172 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Mon, 9 Nov 2015 00:03:29 +0800 Subject: [PATCH 11/15] fix unalign if vertical scroll bar exist --- src/BootstrapTable.js | 3 ++- src/TableHeader.js | 4 +++- src/util.js | 26 ++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 88cde0031..9b8d05222 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -518,7 +518,8 @@ class BootstrapTable extends React.Component { tableHeaderDom.style.width = tableBodyDom.offsetWidth + "px"; } const headerProps = this.refs.body.getBodyHeaderDomProp(); - this.refs.header.fitHeader(headerProps); + this.refs.header.fitHeader(headerProps, + this.refs.body.refs.container.scrollWidth > this.refs.body.refs.container.clientWidth); } } diff --git a/src/TableHeader.js b/src/TableHeader.js index ed4040069..89bcdb19e 100644 --- a/src/TableHeader.js +++ b/src/TableHeader.js @@ -81,7 +81,7 @@ class TableHeader extends React.Component{ } } - fitHeader(headerProps){ + fitHeader(headerProps, isVerticalScrollBar){ if(Array.isArray(this.props.children)){ let startPosition = (this.props.rowSelectType == Const.ROW_SELECT_SINGLE || this.props.rowSelectType == Const.ROW_SELECT_MULTI) && !this.props.hideSelectColumn ? 1:0; @@ -94,6 +94,8 @@ class TableHeader extends React.Component{ React.cloneElement(this.props.children, {width: headerProps[0].width+"px"}); } this.forceUpdate(); + if(isVerticalScrollBar) + this.refs.container.style.marginRight = Util.getScrollBarWidth() + "px"; } } TableHeader.propTypes = { diff --git a/src/util.js b/src/util.js index 44f01e959..2a63848ff 100644 --- a/src/util.js +++ b/src/util.js @@ -23,6 +23,32 @@ export default { ); + }, + + getScrollBarWidth(){ + var inner = document.createElement('p'); + inner.style.width = "100%"; + inner.style.height = "200px"; + + var outer = document.createElement('div'); + outer.style.position = "absolute"; + outer.style.top = "0px"; + outer.style.left = "0px"; + outer.style.visibility = "hidden"; + outer.style.width = "200px"; + outer.style.height = "150px"; + outer.style.overflow = "hidden"; + outer.appendChild (inner); + + document.body.appendChild (outer); + var w1 = inner.offsetWidth; + outer.style.overflow = 'scroll'; + var w2 = inner.offsetWidth; + if (w1 == w2) w2 = outer.clientWidth; + + document.body.removeChild (outer); + + return (w1 - w2); } }; From dfa8cbecfff87f78ba0ef99f673f56f2197d423a Mon Sep 17 00:00:00 2001 From: AllenFang Date: Mon, 9 Nov 2015 20:29:15 +0800 Subject: [PATCH 12/15] fix table container border. --- css/react-bootstrap-table-all.css | 19 +++++++------------ css/react-bootstrap-table.css | 19 +++++++------------ src/BootstrapTable.js | 6 ++++-- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/css/react-bootstrap-table-all.css b/css/react-bootstrap-table-all.css index 714ca8b55..3276be6a3 100644 --- a/css/react-bootstrap-table-all.css +++ b/css/react-bootstrap-table-all.css @@ -2,17 +2,13 @@ /*@import "~toastr/build/toastr.min.css";*/ @import "https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css"; +.react-bs-container .react-bs-table-container { + border: 1px solid #dddddd; +} + .react-bs-container .table-header{ height: 42px; - border-top-width: 1px; - border-top-style: solid; - border-top-color: rgb(221, 221, 221); - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: rgb(221, 221, 221); - border-right-width: 1px; - border-right-style: inset; - border-right-color: rgb(221, 221, 221); + border: hidden; overflow: hidden; } @@ -20,6 +16,7 @@ /*table-layout: fixed;*/ border-top-style: hidden; border-right-style: hidden; + border-left-style: hidden; width: 100%; } @@ -44,15 +41,13 @@ .react-bs-container .table-container{ overflow: auto; height: 100%; - border-right-style: solid; - border-right-width: 1px; - border-right-color: rgb(221, 221, 221); } .react-bs-container .table-container > table{ margin-top: -42px; /*table-layout: fixed;*/ margin-bottom: 0px; + border-left-style: hidden; border-right-style: hidden; border-top-width: 0px; width: 100%; diff --git a/css/react-bootstrap-table.css b/css/react-bootstrap-table.css index 3050b1bce..ded1bd9eb 100644 --- a/css/react-bootstrap-table.css +++ b/css/react-bootstrap-table.css @@ -1,17 +1,13 @@ /*editor error animate*/ /*@import "~toastr/build/toastr.min.css";*/ +.react-bs-container .react-bs-table-container { + border: 1px solid #dddddd; +} + .react-bs-container .table-header{ height: 42px; - border-top-width: 1px; - border-top-style: solid; - border-top-color: rgb(221, 221, 221); - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: rgb(221, 221, 221); - border-right-width: 1px; - border-right-style: inset; - border-right-color: rgb(221, 221, 221); + border: hidden; overflow: hidden; } @@ -19,6 +15,7 @@ /*table-layout: fixed;*/ border-top-style: hidden; border-right-style: hidden; + border-left-style: hidden; width: 100%; } @@ -43,15 +40,13 @@ .react-bs-container .table-container{ overflow: auto; height: 100%; - border-right-style: solid; - border-right-width: 1px; - border-right-color: rgb(221, 221, 221); } .react-bs-container .table-container > table{ margin-top: -42px; /*table-layout: fixed;*/ margin-bottom: 0px; + border-left-style: hidden; border-right-style: hidden; border-top-width: 0px; width: 100%; diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 9b8d05222..69ee36b69 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -164,6 +164,7 @@ class BootstrapTable extends React.Component { return (
{toolBar} +
- {tableFilter} - {pagination} +
+ {tableFilter} + {pagination}
) } From 02e19d10f6b488cbb641066daef655fe748c2f46 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Mon, 9 Nov 2015 20:56:25 +0800 Subject: [PATCH 13/15] fix vertical bar checking --- src/BootstrapTable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index 69ee36b69..f730b9178 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -521,7 +521,7 @@ class BootstrapTable extends React.Component { } const headerProps = this.refs.body.getBodyHeaderDomProp(); this.refs.header.fitHeader(headerProps, - this.refs.body.refs.container.scrollWidth > this.refs.body.refs.container.clientWidth); + this.refs.body.refs.container.scrollHeight > this.refs.body.refs.container.clientHeight); } } From 416fa334484cda5380b6f3788d30e35129f09457 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Mon, 9 Nov 2015 21:59:06 +0800 Subject: [PATCH 14/15] fix table height unavailable --- src/BootstrapTable.js | 5 +++-- src/TableBody.js | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/BootstrapTable.js b/src/BootstrapTable.js index f730b9178..56982ede5 100644 --- a/src/BootstrapTable.js +++ b/src/BootstrapTable.js @@ -162,9 +162,9 @@ class BootstrapTable extends React.Component { var toolBar = this.renderToolBar(); var tableFilter = this.renderTableFilter(columns); return ( -
+
{toolBar} -
+
>>>>>> 99cd459deffd5262d88691e8b075977bc0a2811f return ( +
{column.text}{column.text}{column.text}{sortCaert}
- +
{tableHeader} @@ -263,12 +262,20 @@ class TableBody extends React.Component{ } } + calculateContainerHeight(){ + if(this.props.height == "100%") return this.props.height; + else{ + return parseInt(this.props.height) - 42; + } + } + _isSelectRowDefined(){ return this.props.selectRow.mode == Const.ROW_SELECT_SINGLE || this.props.selectRow.mode == Const.ROW_SELECT_MULTI; } } TableBody.propTypes = { + height: React.PropTypes.string, data: React.PropTypes.array, columns: React.PropTypes.array, striped: React.PropTypes.bool, From a3040b6ddf71752a571f5d09c52bd21dce7250ac Mon Sep 17 00:00:00 2001 From: AllenFang Date: Tue, 10 Nov 2015 00:04:08 +0800 Subject: [PATCH 15/15] update demo --- demo/js/demo.bundle.js | 195 +++++++++++++++++++++++++++++++++++------ demo/js/demo.js | 12 ++- 2 files changed, 175 insertions(+), 32 deletions(-) diff --git a/demo/js/demo.bundle.js b/demo/js/demo.bundle.js index 8e22a3c17..df5254c3d 100644 --- a/demo/js/demo.bundle.js +++ b/demo/js/demo.bundle.js @@ -19,7 +19,10 @@ function addProducts(quantity) { products.push({ id: id, name: "Item name " + id, - price: 100 + i + price: 100 + i, + supplierId: id + 2, + discount: "10%", + categoryId: "catorage-" + id + 6 }); } } @@ -100,13 +103,28 @@ React.render(React.createElement( ), React.createElement( TableHeaderColumn, - { dataField: "name", dataSort: true }, + { dataField: "name", width: "200px", dataSort: true }, "Product Name" ), React.createElement( TableHeaderColumn, - { dataField: "price", dataFormat: priceFormatter, editable: false }, + { dataField: "price", width: "100px", dataFormat: priceFormatter, editable: false }, "Product Price" + ), + React.createElement( + TableHeaderColumn, + { dataField: "supplierId", editable: true }, + "Supplier ID" + ), + React.createElement( + TableHeaderColumn, + { dataField: "discount", editable: false }, + "Discount(Percentage)" + ), + React.createElement( + TableHeaderColumn, + { dataField: "categoryId", editable: true }, + "Category ID" ) ), document.getElementById("basic")); @@ -32627,11 +32645,13 @@ var BootstrapTable = (function (_React$Component) { value: function componentDidMount() { this._adjustHeaderWidth(); window.addEventListener("resize", this._adjustHeaderWidth.bind(this)); + this.refs.body.refs.container.addEventListener("scroll", this._scrollHeader.bind(this)); } }, componentWillUnmount: { value: function componentWillUnmount() { window.removeEventListener("resize", this._adjustHeaderWidth.bind(this)); + this.refs.body.refs.container.removeEventListener("scroll", this._scrollHeader.bind(this)); } }, componentDidUpdate: { @@ -32639,7 +32659,6 @@ var BootstrapTable = (function (_React$Component) { this._adjustHeaderWidth(); this._attachCellEditFunc(); if (this.props.options.afterTableComplete) this.props.options.afterTableComplete(); - if (this.props.options.afterSearchOrFilter) this.props.options.afterSearchOrFilter(this.store.getDataIgnoringPagination()); } }, _attachCellEditFunc: { @@ -32684,6 +32703,7 @@ var BootstrapTable = (function (_React$Component) { hidden: column.props.hidden, className: column.props.columnClassName, width: column.props.width, + text: column.props.children, index: i }; }, this); @@ -32693,24 +32713,27 @@ var BootstrapTable = (function (_React$Component) { var tableFilter = this.renderTableFilter(columns); return React.createElement( "div", - { className: "react-bs-container" }, + { className: "react-bs-container", ref: "table" }, toolBar, React.createElement( "div", - { ref: "table", style: style, className: tableClass }, + { className: "react-bs-table-container", style: style }, React.createElement( TableHeader, { + ref: "header", rowSelectType: this.props.selectRow.mode, hideSelectColumn: this.props.selectRow.hideSelectColumn, sortName: this.props.options.sortName, sortOrder: this.props.options.sortOrder, onSort: this.handleSort.bind(this), onSelectAllRow: this.handleSelectAllRow.bind(this), - bordered: this.props.bordered }, + bordered: this.props.bordered, + condensed: this.props.condensed }, this.props.children ), React.createElement(TableBody, { + height: this.props.height, ref: "body", data: this.state.data, columns: columns, @@ -32725,10 +32748,10 @@ var BootstrapTable = (function (_React$Component) { selectedRowKeys: this.state.selectedRowKeys, onRowClick: this.handleRowClick.bind(this), onSelectRow: this.handleSelectRow.bind(this) - }), - tableFilter, - pagination - ) + }) + ), + tableFilter, + pagination ); } }, @@ -33051,13 +33074,20 @@ var BootstrapTable = (function (_React$Component) { } } }, + _scrollHeader: { + value: function _scrollHeader(e) { + this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft; + } + }, _adjustHeaderWidth: { value: function _adjustHeaderWidth() { - var tableHeaderDom = this.refs.table.childNodes[0].childNodes[0]; - var tableBodyDom = this.refs.table.childNodes[1].childNodes[0]; + var tableHeaderDom = this.refs.header.refs.container.childNodes[0]; + var tableBodyDom = this.refs.body.refs.container.childNodes[0]; if (tableHeaderDom.offsetWidth !== tableBodyDom.offsetWidth) { tableHeaderDom.style.width = tableBodyDom.offsetWidth + "px"; } + var headerProps = this.refs.body.getBodyHeaderDomProp(); + this.refs.header.fitHeader(headerProps, this.refs.body.refs.container.scrollHeight > this.refs.body.refs.container.clientHeight); } } }); @@ -33418,6 +33448,8 @@ var React = _interopRequire(require("react")); var Const = _interopRequire(require("./Const")); +var Util = _interopRequire(require("./util")); + var TableRow = _interopRequire(require("./TableRow")); var TableColumn = _interopRequire(require("./TableColumn")); @@ -33444,6 +33476,16 @@ var TableBody = (function (_React$Component) { _inherits(TableBody, _React$Component); _createClass(TableBody, { + componentDidMount: { + value: function componentDidMount() { + this.hardFixHeaderWidth(); + } + }, + componentDidUpdate: { + value: function componentDidUpdate() { + this.hardFixHeaderWidth(); + } + }, render: { value: function render() { var containerClasses = classSet("table-container"); @@ -33515,13 +33557,9 @@ var TableBody = (function (_React$Component) { } }, this); var selected = this.props.selectedRowKeys.indexOf(data[this.props.keyField]) != -1; - // <<<<<<< HEAD var selectRowColumn = isSelectRowDefined && !this.props.selectRow.hideSelectColumn ? this.renderSelectRowColumn(selected) : null; - // ======= - // var selectRowColumn = isSelectRowDefined?this.renderSelectRowColumn(selected):null; //add by bluespring for className customize var trClassName = isFun(this.props.trClassName) ? this.props.trClassName(data, r) : this.props.trClassName; - // >>>>>>> 99cd459deffd5262d88691e8b075977bc0a2811f return React.createElement( TableRow, { isSelected: selected, key: r, className: trClassName, @@ -33548,9 +33586,12 @@ var TableBody = (function (_React$Component) { } this.editing = false; + + var height = this.calculateContainerHeight().toString(); + return React.createElement( "div", - { className: containerClasses }, + { ref: "container", className: containerClasses, style: { height: height } }, React.createElement( "table", { className: tableClasses }, @@ -33570,21 +33611,30 @@ var TableBody = (function (_React$Component) { if (isSelectRowDefined) { var style = { - width: 35 + width: 35, + minWidth: 35 }; selectRowHeader = this.props.selectRow.hideSelectColumn ? null : React.createElement("th", { style: style, key: -1 }); } var theader = this.props.columns.map(function (column, i) { var style = { display: column.hidden ? "none" : null, - width: column.width + width: column.width, + minWidth: column.width + /** add min-wdth to fix user assign column width not eq offsetWidth in large column table **/ }; - return React.createElement("th", { style: style, key: i, className: column.className }); + var sortCaert = column.sort ? Util.renderReactSortCaret(Const.SORT_DESC) : null; + return React.createElement( + "th", + { style: style, key: i, className: column.className }, + column.text, + sortCaert + ); }); return React.createElement( "thead", - null, + { ref: "header" }, React.createElement( "tr", null, @@ -33679,6 +33729,35 @@ var TableBody = (function (_React$Component) { } } }, + getBodyHeaderDomProp: { + value: function getBodyHeaderDomProp() { + var headers = this.refs.header.childNodes[0].childNodes; + var headerDomProps = []; + for (var i = 0; i < headers.length; i++) { + headerDomProps.push({ + width: headers[i].offsetWidth + }); + } + return headerDomProps; + } + }, + hardFixHeaderWidth: { + value: function hardFixHeaderWidth() { + var headers = this.refs.header.childNodes[0].childNodes; + for (var i = 0; i < headers.length; i++) { + headers[i].style.width = headers[i].offsetWidth + "px"; + } + } + }, + calculateContainerHeight: { + value: function calculateContainerHeight() { + if (this.props.height == "100%") { + return this.props.height; + } else { + return parseInt(this.props.height) - 42; + } + } + }, _isSelectRowDefined: { value: function _isSelectRowDefined() { return this.props.selectRow.mode == Const.ROW_SELECT_SINGLE || this.props.selectRow.mode == Const.ROW_SELECT_MULTI; @@ -33690,6 +33769,7 @@ var TableBody = (function (_React$Component) { })(React.Component); TableBody.propTypes = { + height: React.PropTypes.string, data: React.PropTypes.array, columns: React.PropTypes.array, striped: React.PropTypes.bool, @@ -33703,7 +33783,7 @@ TableBody.propTypes = { }; module.exports = TableBody; -},{"./Const":"/Users/allen/Node/react-bootstrap-table/src/Const.js","./TableColumn":"/Users/allen/Node/react-bootstrap-table/src/TableColumn.js","./TableEditColumn":"/Users/allen/Node/react-bootstrap-table/src/TableEditColumn.js","./TableRow":"/Users/allen/Node/react-bootstrap-table/src/TableRow.js","classnames":"/Users/allen/Node/react-bootstrap-table/node_modules/classnames/index.js","react":"/Users/allen/Node/react-bootstrap-table/node_modules/react/react.js"}],"/Users/allen/Node/react-bootstrap-table/src/TableColumn.js":[function(require,module,exports){ +},{"./Const":"/Users/allen/Node/react-bootstrap-table/src/Const.js","./TableColumn":"/Users/allen/Node/react-bootstrap-table/src/TableColumn.js","./TableEditColumn":"/Users/allen/Node/react-bootstrap-table/src/TableEditColumn.js","./TableRow":"/Users/allen/Node/react-bootstrap-table/src/TableRow.js","./util":"/Users/allen/Node/react-bootstrap-table/src/util.js","classnames":"/Users/allen/Node/react-bootstrap-table/node_modules/classnames/index.js","react":"/Users/allen/Node/react-bootstrap-table/node_modules/react/react.js"}],"/Users/allen/Node/react-bootstrap-table/src/TableColumn.js":[function(require,module,exports){ "use strict"; var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; @@ -34010,7 +34090,7 @@ var TableFilter = (function (_React$Component) { React.createElement( "div", { className: "th-inner table-header-column" }, - React.createElement("input", { type: "text", placeholder: column.name, name: column.name, onKeyUp: this.handleKeyUp.bind(this) }) + React.createElement("input", { size: "10", type: "text", placeholder: column.name, name: column.name, onKeyUp: this.handleKeyUp.bind(this) }) ) ); }, this); @@ -34107,14 +34187,15 @@ var TableHeader = (function (_React$Component) { value: function render() { var containerClasses = classSet("table-header"); var tableClasses = classSet("table", "table-hover", { - "table-bordered": this.props.bordered + "table-bordered": this.props.bordered, + "table-condensed": this.props.condensed }); var selectRowHeaderCol = this.props.hideSelectColumn ? null : this.renderSelectRowHeader(); this._attachClearSortCaretFunc(); return React.createElement( "div", - { className: containerClasses }, + { ref: "container", className: containerClasses }, React.createElement( "table", { className: tableClasses }, @@ -34157,6 +34238,20 @@ var TableHeader = (function (_React$Component) { this.props.children = React.cloneElement(this.props.children, { key: 0, clearSortCaret: this.clearSortCaret.bind(this) }); } } + }, + fitHeader: { + value: function fitHeader(headerProps, isVerticalScrollBar) { + if (Array.isArray(this.props.children)) { + var startPosition = (this.props.rowSelectType == Const.ROW_SELECT_SINGLE || this.props.rowSelectType == Const.ROW_SELECT_MULTI) && !this.props.hideSelectColumn ? 1 : 0; + for (var i = 0; i < this.props.children.length; i++) { + this.props.children[i] = React.cloneElement(this.props.children[i], { width: headerProps[i + startPosition].width + "px" }); + } + } else { + this.props.children = React.cloneElement(this.props.children, { width: headerProps[0].width + "px" }); + } + this.forceUpdate(); + if (isVerticalScrollBar) this.refs.container.style.marginRight = Util.getScrollBarWidth() + "px"; + } } }); @@ -34170,7 +34265,8 @@ TableHeader.propTypes = { sortName: React.PropTypes.string, sortOrder: React.PropTypes.string, hideSelectColumn: React.PropTypes.bool, - bordered: React.PropTypes.bool + bordered: React.PropTypes.bool, + condensed: React.PropTypes.bool }; TableHeader.defaultProps = {}; @@ -35565,8 +35661,12 @@ module.exports = ToolBar; var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; +var React = _interopRequire(require("react")); + var Const = _interopRequire(require("./Const")); +var classSet = _interopRequire(require("classnames")); + module.exports = { renderSortCaret: function renderSortCaret(order) { @@ -35578,11 +35678,48 @@ module.exports = { inner.style.margin = "10px 5px"; wrap.appendChild(inner); return wrap; + }, + + renderReactSortCaret: function renderReactSortCaret(order) { + var orderClass = classSet("order", { + dropup: order == Const.SORT_ASC + }); + return React.createElement( + "span", + { className: orderClass }, + React.createElement("span", { className: "caret", style: { margin: "10px 5px" } }) + ); + }, + + getScrollBarWidth: function getScrollBarWidth() { + var inner = document.createElement("p"); + inner.style.width = "100%"; + inner.style.height = "200px"; + + var outer = document.createElement("div"); + outer.style.position = "absolute"; + outer.style.top = "0px"; + outer.style.left = "0px"; + outer.style.visibility = "hidden"; + outer.style.width = "200px"; + outer.style.height = "150px"; + outer.style.overflow = "hidden"; + outer.appendChild(inner); + + document.body.appendChild(outer); + var w1 = inner.offsetWidth; + outer.style.overflow = "scroll"; + var w2 = inner.offsetWidth; + if (w1 == w2) w2 = outer.clientWidth; + + document.body.removeChild(outer); + + return w1 - w2; } }; -},{"./Const":"/Users/allen/Node/react-bootstrap-table/src/Const.js"}],"react-bootstrap-table":[function(require,module,exports){ +},{"./Const":"/Users/allen/Node/react-bootstrap-table/src/Const.js","classnames":"/Users/allen/Node/react-bootstrap-table/node_modules/classnames/index.js","react":"/Users/allen/Node/react-bootstrap-table/node_modules/react/react.js"}],"react-bootstrap-table":[function(require,module,exports){ "use strict"; var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; @@ -35604,4 +35741,4 @@ module.exports = { }; },{"./BootstrapTable":"/Users/allen/Node/react-bootstrap-table/src/BootstrapTable.js","./TableHeaderColumn":"/Users/allen/Node/react-bootstrap-table/src/TableHeaderColumn.js","./store/TableDataStore":"/Users/allen/Node/react-bootstrap-table/src/store/TableDataStore.js"}]},{},["./demo/js/demo.js"]) -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvZGVtby9qcy9kZW1vLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvQ1NTQ29yZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9FdmVudExpc3RlbmVyLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2NhbWVsaXplLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2NhbWVsaXplU3R5bGVOYW1lLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2NvbnRhaW5zTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9jcmVhdGVBcnJheUZyb21NaXhlZC5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9lbXB0eU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9mb2N1c05vZGUuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9nZXRNYXJrdXBXcmFwLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2dldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2h5cGhlbmF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvaW52YXJpYW50LmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2lzTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9pc1RleHROb2RlLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2tleU1pcnJvci5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9rZXlPZi5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9tYXBPYmplY3QuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHkuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvcGVyZm9ybWFuY2UuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvcGVyZm9ybWFuY2VOb3cuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvc2hhbGxvd0VxdWFsLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL3RvQXJyYXkuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvd2FybmluZy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL2xpYi9Ub2FzdENvbnRhaW5lci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL1RvYXN0TWVzc2FnZS9hbmltYXRpb25NaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL1RvYXN0TWVzc2FnZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL1RvYXN0TWVzc2FnZS9qUXVlcnlNaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QtYWRkb25zLXVwZGF0ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9BdXRvRm9jdXNVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NTU1Byb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NTU1Byb3BlcnR5T3BlcmF0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9DYWxsYmFja1F1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NoYW5nZUV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NsaWVudFJlYWN0Um9vdEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0RPTUNoaWxkcmVuT3BlcmF0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9ET01Qcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvRGFuZ2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudENvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpbkh1Yi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0V2ZW50UGx1Z2luVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvRXZlbnRQcm9wYWdhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvSFRNTERPTVByb3BlcnR5Q29uZmlnLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0xpbmtlZFZhbHVlVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvT2JqZWN0LmFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDaGlsZHJlbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENsYXNzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET00uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01CdXR0b24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01Db21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01GYWN0b3JpZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01GZWF0dXJlRmxhZ3MuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01JRE9wZXJhdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01JbnB1dC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTU9wdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlbGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlbGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlcnZlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVRleHRDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01UZXh0YXJlYS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RGVmYXVsdEluamVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERlZmF1bHRQZXJmLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50VmFsaWRhdG9yLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RXJyb3JVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEV2ZW50RW1pdHRlck1peGluLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RXZlbnRMaXN0ZW5lci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEluamVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdElucHV0U2VsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0SW5zdGFuY2VIYW5kbGVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0SW5zdGFuY2VNYXAuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RJc29tb3JwaGljLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0TWFya3VwQ2hlY2tzdW0uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RNb3VudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdE11bHRpQ2hpbGQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3ROYXRpdmVDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3ROb29wVXBkYXRlUXVldWUuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RPd25lci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFBlcmYuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UmVjb25jaWxlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFJlZi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFJvb3RJbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmcuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25FdmVudHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVcGRhdGVRdWV1ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFVwZGF0ZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RWZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NWR0RPTVByb3BlcnR5Q29uZmlnLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NlcnZlclJlYWN0Um9vdEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NpbXBsZUV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0NsaXBib2FyZEV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvU3ludGhldGljRHJhZ0V2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0V2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvU3ludGhldGljSW5wdXRFdmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9TeW50aGV0aWNLZXlib2FyZEV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvU3ludGhldGljVG91Y2hFdmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9TeW50aGV0aWNVSUV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY1doZWVsRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvVHJhbnNhY3Rpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvVmlld3BvcnRNZXRyaWNzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2FjY3VtdWxhdGVJbnRvLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2FkbGVyMzIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvY2FuRGVmaW5lUHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9kZXByZWNhdGVkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9maW5kRE9NTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9mbGF0dGVuQ2hpbGRyZW4uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZm9yRWFjaEFjY3VtdWxhdGVkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEV2ZW50Q2hhckNvZGUuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0RXZlbnRLZXkuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0RXZlbnRNb2RpZmllclN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEV2ZW50VGFyZ2V0LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEl0ZXJhdG9yRm4uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9nZXRUZXh0Q29udGVudEFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvaXNFdmVudFN1cHBvcnRlZC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9pc1RleHRJbnB1dEVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvb25seUNoaWxkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3NldElubmVySFRNTC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9zZXRUZXh0Q29udGVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3VwZGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi92YWxpZGF0ZURPTU5lc3RpbmcuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9yZWFjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvQ1NTUHJvcGVydHlPcGVyYXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9DYWxsYmFja1F1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9DaGFuZ2VFdmVudFBsdWdpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9ET01Qcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvRE9NUHJvcGVydHlPcGVyYXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9EYW5nZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL0V2ZW50UGx1Z2luSHViLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpblV0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFByb3BhZ2F0b3JzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL0xpbmtlZFZhbHVlVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1Bvb2xlZENsYXNzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q2xhc3MuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET00uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9NQ29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmllcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01JRE9wZXJhdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9NSW5wdXQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9NT3B0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlbGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVRleHRhcmVhLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERlZmF1bHRJbmplY3Rpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50VmFsaWRhdG9yLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEVycm9yVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0SW5zdGFuY2VIYW5kbGVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdElzb21vcnBoaWMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0TW91bnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0TXVsdGlDaGlsZC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3ROYXRpdmVDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdE93bmVyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFBlcmYuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFNlcnZlclJlbmRlcmluZy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVcGRhdGVRdWV1ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVcGRhdGVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1NpbXBsZUV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9TeW50aGV0aWNFdmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvVHJhbnNhY3Rpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL2FjY3VtdWxhdGVJbnRvLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9kZXByZWNhdGVkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9maW5kRE9NTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvZmxhdHRlbkNoaWxkcmVuLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9vbmx5Q2hpbGQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvQm9vdHN0cmFwVGFibGUuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL0NvbnN0LmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9FZGl0b3IuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL05vdGlmaWNhdGlvbi5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvU2VsZWN0Um93SGVhZGVyQ29sdW1uLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9UYWJsZUJvZHkuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL1RhYmxlQ29sdW1uLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9UYWJsZUVkaXRDb2x1bW4uanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL1RhYmxlRmlsdGVyLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9UYWJsZUhlYWRlci5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvVGFibGVIZWFkZXJDb2x1bW4uanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL1RhYmxlUm93LmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9jc3ZfZXhwb3J0X3V0aWwuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL2ZpbGVzYXZlci5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvcGFnaW5hdGlvbi9QYWdlQnV0dG9uLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9wYWdpbmF0aW9uL1BhZ2luYXRpb25MaXN0LmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9zdG9yZS9UYWJsZURhdGFTdG9yZS5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvdG9vbGJhci9Ub29sQmFyLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy91dGlsLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7SUNBTyxLQUFLLDJCQUFNLE9BQU87O21DQUN1Qix1QkFBdUI7O0lBQS9ELGNBQWMsd0JBQWQsY0FBYztJQUFFLGlCQUFpQix3QkFBakIsaUJBQWlCOztBQUV6QyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7O0FBRWxCLFNBQVMsV0FBVyxDQUFDLFFBQVEsRUFBRTtBQUM3QixNQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQzlCLE9BQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakMsUUFBSSxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNyQixZQUFRLENBQUMsSUFBSSxDQUFDO0FBQ1osUUFBRSxFQUFFLEVBQUU7QUFDTixVQUFJLEVBQUUsWUFBWSxHQUFHLEVBQUU7QUFDdkIsV0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDO0tBQ2YsQ0FBQyxDQUFDO0dBQ0o7Q0FDRjs7QUFFRCxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7O0FBRWhCLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUM7QUFDbkMsU0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixTQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQTtDQUN2Qzs7QUFFRCxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUUsNkJBQTZCLEVBQUM7QUFDN0QsU0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUM1QyxTQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDakQsU0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0NBQzVDOztBQUVELFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDO0FBQ2hELFNBQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFDLFFBQVEsR0FBQyxnQkFBZ0IsR0FBQyxTQUFTLEdBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkUsU0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQy9CLFNBQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEI7O0FBRUQsU0FBUyxvQkFBb0IsR0FBRTtBQUM3QixTQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Q0FDdkM7O0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUM7QUFDaEMsU0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2hDLFNBQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDdEI7O0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUM7QUFDNUIsU0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2hDLFNBQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEI7O0FBRUQsSUFBSSxhQUFhLEdBQUc7QUFDbEIsTUFBSSxFQUFFLFVBQVU7QUFDaEIsZUFBYSxFQUFFLElBQUk7O0FBRW5CLFVBQVEsRUFBRSxFQUFFO0FBQ1osU0FBTyxFQUFFLG9CQUFvQjtBQUM3QixVQUFRLEVBQUUsV0FBVztBQUNyQixhQUFXLEVBQUUsV0FBVztDQUN6QixDQUFDOztBQUVGLElBQUksWUFBWSxHQUFHO0FBQ2pCLE1BQUksRUFBRSxPQUFPO0FBQ2IsWUFBVSxFQUFFLElBQUk7QUFDaEIsZUFBYSxFQUFFLGVBQWU7Q0FDL0IsQ0FBQzs7QUFFRixJQUFJLE9BQU8sR0FBRzs7Ozs7QUFLWixVQUFRLEVBQUUsTUFBTTtBQUNoQixXQUFTLEVBQUUsTUFBTTtBQUNqQixvQkFBa0IsRUFBRSxvQkFBb0I7QUFDeEMsZ0JBQWMsRUFBRSxnQkFBZ0I7QUFDaEMsZ0JBQWMsRUFBRSxnQkFBZ0I7QUFBQSxDQUNqQyxDQUFDOztBQUdGLFNBQVMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUM7QUFDaEMsU0FBTyw0Q0FBMEMsR0FBRyxJQUFJLENBQUM7Q0FDMUQ7O0FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FDVjtBQUFDLGdCQUFjO0lBQUMsSUFBSSxFQUFFLFFBQVEsQUFBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEFBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxBQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksQUFBQyxFQUFDLFNBQVMsRUFBRSxhQUFhLEFBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxBQUFDO0FBQy9HLGFBQVMsRUFBRSxJQUFJLEFBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxBQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksQUFBQyxFQUFDLFlBQVksRUFBRSxJQUFJLEFBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxBQUFDO0VBQ2pHO0FBQUMscUJBQWlCO01BQUMsU0FBUyxFQUFDLElBQUksRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBRSxJQUFJLEFBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxBQUFDOztHQUErQjtFQUNoSDtBQUFDLHFCQUFpQjtNQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFFLElBQUksQUFBQzs7R0FBaUM7RUFDcEY7QUFBQyxxQkFBaUI7TUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEFBQUMsRUFBQyxRQUFRLEVBQUUsS0FBSyxBQUFDOztHQUFrQztDQUN0RyxFQUNsQixRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUNoQyxDQUFDOzs7QUMzRkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3U0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25HQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3REQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xHQTtBQUNBO0FBQ0E7O0FDRkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcFpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaFVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbk9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25KQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDelJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25VQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcndCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3A4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25MQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbk5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbE5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3AxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbGZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDak9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3a0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3REQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDek9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3REQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdXQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzlUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25PQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNuSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3pJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9OQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDeElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN6SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM1SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3J3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDN0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN4ckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM5RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2w4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzlMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ25IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDbkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzVSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FDNUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNoVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzVFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy8wQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNsZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25RQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQzdrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDbkxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3pPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM3REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDbEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0lDN1dPLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUMxQixLQUFLLDJCQUFNLFNBQVM7O0lBQ3BCLFdBQVcsMkJBQU0sZUFBZTs7SUFDaEMsU0FBUywyQkFBTSxhQUFhOztJQUM1QixjQUFjLDJCQUFNLDZCQUE2Qjs7SUFDakQsT0FBTywyQkFBTSxtQkFBbUI7O0lBQ2hDLFdBQVcsMkJBQU0sZUFBZTs7SUFDL0IsY0FBYyxXQUFPLHdCQUF3QixFQUE3QyxjQUFjOztJQUNmLFNBQVMsMkJBQU0sbUJBQW1COztJQUVuQyxjQUFjO0FBRVAsV0FGUCxjQUFjLENBRU4sS0FBSyxFQUFFOzs7MEJBRmYsY0FBYzs7QUFHaEIsK0JBSEUsY0FBYyw2Q0FHVixLQUFLLEVBQUU7O0FBRWIsUUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdEIsUUFBUSxHQUFJLEtBQUssQ0FBakIsUUFBUTs7QUFDYixRQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQzs7QUFFM0IsUUFBSSxFQUFFLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFBLEFBQUMsRUFBRTtBQUN0RCxXQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFBLE1BQU0sRUFBRztBQUNuRCxZQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQ3RCLGNBQUksUUFBUSxJQUFJLElBQUksRUFBRTtBQUNwQixrQkFBTSw4REFBOEQsQ0FBQztXQUN0RTtBQUNELGtCQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDbkM7T0FDRixFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ1Y7O0FBRUQsU0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsVUFBQSxNQUFNLEVBQUc7QUFDbkQsVUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtBQUN6Qix5QkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO09BQ25FO0tBQ0YsRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFVCxRQUFJLFFBQVEsSUFBSSxJQUFJLEVBQ2xCLE1BQU0sNEhBQTRILENBQUM7O0FBRXJJLFFBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkMsVUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzNELFVBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCLFVBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBQyxJQUFJLEVBQUs7QUFDckMsY0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLGNBQUssUUFBUSxDQUFDO0FBQ1osY0FBSSxFQUFFLE1BQUssWUFBWSxFQUFFO1NBQzFCLENBQUMsQ0FBQTtPQUNILENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxVQUFJLENBQUMsS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEQ7O0FBRUQsUUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7O0FBRW5HLFFBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO0FBQ3pELFVBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDN0Q7O0FBRUQsUUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLFVBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3pCLHFCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtLQUNqRCxDQUFDO0dBQ0g7O1lBcERHLGNBQWM7O2VBQWQsY0FBYztBQXNEbEIsZ0JBQVk7YUFBQSx3QkFBRztBQUNiLFlBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGNBQUksSUFBSSxZQUFBO2NBQUUsV0FBVyxZQUFBLENBQUM7QUFDdEIsY0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFO0FBQzlCLHVCQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDcEQsZ0JBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztXQUM5QyxNQUFNO0FBQ0wsdUJBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVFLGdCQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztXQUNyQztBQUNELGdCQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ25ELE1BQU07QUFDTCxnQkFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDM0I7QUFDRCxlQUFPLE1BQU0sQ0FBQztPQUNmOztBQUVELDZCQUF5QjthQUFBLG1DQUFDLFNBQVMsRUFBRTtBQUNuQyxZQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2pDLGNBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxjQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osZ0JBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1dBQzFCLENBQUMsQ0FBQztTQUNKO0FBQ0QsWUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFOztBQUV2RCxjQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0QsY0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLDJCQUFlLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRO1dBQzlDLENBQUMsQ0FBQztTQUNKO09BQ0Y7O0FBRUQscUJBQWlCO2FBQUEsNkJBQUc7QUFDbEIsWUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDMUIsY0FBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7T0FDdkU7O0FBRUQsd0JBQW9CO2FBQUEsZ0NBQUc7QUFDckIsY0FBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7T0FDMUU7O0FBRUQsc0JBQWtCO2FBQUEsOEJBQUc7QUFDbkIsWUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDMUIsWUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDM0IsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUMxQyxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztPQUNsRjs7QUFFRCx1QkFBbUI7YUFBQSwrQkFBRztBQUNwQixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ3ZCLGNBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hFLGNBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxjQUFjLEVBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUM7T0FDRjs7QUFTRCxzQkFBa0I7Ozs7Ozs7Ozs7YUFBQSw0QkFBQyxLQUFLLEVBQUU7QUFDeEIsZUFBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFBLENBQUUsTUFBTSxDQUFDO09BQ3JDOztBQUVELFVBQU07YUFBQSxrQkFBRztBQUNQLFlBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVDLFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0FBQ3BDLFlBQUksS0FBSyxHQUFHO0FBQ1YsZ0JBQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07U0FDMUIsQ0FBQztBQUNGLFlBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdkMsbUJBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7QUFDRCxZQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsTUFBTSxFQUFFLENBQUMsRUFBRTtBQUMvQyxpQkFBTztBQUNMLGdCQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQzVCLGlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQzdCLGdCQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQzNCLGtCQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVO0FBQy9CLG9CQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQy9CLGtCQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzNCLHFCQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlO0FBQ3ZDLGlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQ3pCLGlCQUFLLEVBQUUsQ0FBQztXQUNULENBQUM7U0FDSCxFQUFFLElBQUksQ0FBQyxDQUFDOztBQUVULFlBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3pDLFlBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNuQyxZQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEQsZUFDRTs7WUFBSyxTQUFTLEVBQUMsb0JBQW9CO1VBQ2hDLE9BQU87VUFDUjs7Y0FBSyxHQUFHLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEFBQUMsRUFBQyxTQUFTLEVBQUUsVUFBVSxBQUFDO1lBQ25EO0FBQUMseUJBQVc7O0FBQ1YsNkJBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEFBQUM7QUFDekMsZ0NBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEFBQUM7QUFDeEQsd0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEFBQUM7QUFDdEMseUJBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEFBQUM7QUFDeEMsc0JBQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUNuQyw4QkFBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7QUFDbkQsd0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQUFBQztjQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7YUFDUjtZQUNkLG9CQUFDLFNBQVM7QUFDUixpQkFBRyxFQUFDLE1BQU07QUFDVixrQkFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxBQUFDO0FBQ3RCLHFCQUFPLEVBQUUsT0FBTyxBQUFDO0FBQ2pCLHlCQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEFBQUM7QUFDcEMscUJBQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQUFBQztBQUM1QixzQkFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxBQUFDO0FBQzlCLG1CQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEFBQUM7QUFDeEIsc0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxBQUFDO0FBQ25DLHVCQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEFBQUM7QUFDaEMsdUJBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQUFBQztBQUNoQyxzQkFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxBQUFDO0FBQzlCLDZCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEFBQUM7QUFDNUMsd0JBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUMzQyx5QkFBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO2NBQzdDO1lBQ0QsV0FBVztZQUNYLFVBQVU7V0FDUDtTQUNGLENBQ1A7T0FDRjs7QUFFRCxjQUFVO2FBQUEsb0JBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtBQUMzQixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtBQUNuQyxjQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0Q7O0FBRUQsWUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtBQUM3QixpQkFBTztTQUNSOztBQUVELFlBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyRCxZQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osY0FBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7T0FDSjs7QUFFRCx3QkFBb0I7YUFBQSw4QkFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQy9CLFlBQVksR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBbEMsWUFBWTs7QUFDbkIsWUFBSSxZQUFZLEVBQUU7QUFDaEIsc0JBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDakM7O0FBRUQsWUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtBQUM3QixpQkFBTztTQUNSOztBQUVELFlBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0RCxZQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osY0FBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7T0FDSjs7QUFFRCxrQkFBYzthQUFBLHdCQUFDLEdBQUcsRUFBRTtBQUNsQixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtBQUNqQyxjQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEM7T0FDRjs7QUFFRCxzQkFBa0I7YUFBQSw0QkFBQyxDQUFDLEVBQUU7QUFDcEIsWUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFDekMsWUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLFlBQUksVUFBVSxFQUFFO0FBQ2QseUJBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzdDOztBQUVELFlBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDOUMsWUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLHlCQUFlLEVBQUUsZUFBZTtTQUNqQyxDQUFDLENBQUM7O0FBRUgsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7QUFDcEMsY0FBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFDekMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDdkM7T0FDRjs7QUFFRCxtQkFBZTthQUFBLHlCQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7QUFDL0IsWUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ25ELFlBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDM0MsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQ3pELHNCQUFZLEdBQUcsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFBO1NBQzFDLE1BQU07QUFDTCxjQUFJLFVBQVUsRUFBRTtBQUNkLHdCQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1dBQzNCLE1BQU07QUFDTCx3QkFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDaEQscUJBQU8sTUFBTSxLQUFLLEdBQUcsQ0FBQzthQUN2QixDQUFDLENBQUM7V0FDSjtTQUNGOztBQUVELFlBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDM0MsWUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLHlCQUFlLEVBQUUsWUFBWTtTQUM5QixDQUFDLENBQUM7O0FBRUgsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7QUFDakMsY0FBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNoRDtPQUNGOztBQUVELGtCQUFjO2FBQUEsd0JBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7QUFDekMsWUFBSSxTQUFTLFlBQUEsQ0FBQztBQUNkLGFBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsTUFBTSxFQUFFLENBQUMsRUFBRTtBQUMvRCxjQUFJLENBQUMsSUFBSSxRQUFRLEVBQUU7QUFDakIscUJBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNuQyxtQkFBTyxLQUFLLENBQUM7V0FDZDtTQUNGLENBQUMsQ0FBQzs7QUFFSCxZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hFLFlBQUksQ0FBQyxRQUFRLENBQUM7QUFDWixjQUFJLEVBQUUsTUFBTTtTQUNiLENBQUMsQ0FBQzs7QUFFSCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRTtBQUNyQyxjQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2pGO09BQ0Y7O0FBRUQscUJBQWlCO2FBQUEsNkJBQUc7QUFDbEIsWUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUVuQjtPQUNGOztBQUVELGdCQUFZO2FBQUEsc0JBQUMsTUFBTSxFQUFFO0FBQ25CLFlBQUksR0FBRyxHQUFHLElBQUk7WUFBRSxNQUFNLFlBQUEsQ0FBQztBQUN2QixZQUFJO0FBQ0YsY0FBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEIsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNWLGlCQUFPLENBQUMsQ0FBQztTQUNWOztBQUVELFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7O0FBRXpCLGNBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELGNBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUNwRSxnQkFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxRCxjQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osZ0JBQUksRUFBRSxNQUFNO1dBQ2IsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9DLE1BQU07QUFDTCxnQkFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsY0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLGdCQUFJLEVBQUUsTUFBTTtXQUNiLENBQUMsQ0FBQztTQUNKOztBQUVELFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO0FBQ3JDLGNBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzQztPQUNGOztBQUVELGtCQUFjO2FBQUEsMEJBQUc7QUFDZixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGlCQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzlDO09BQ0Y7O0FBRUQsa0JBQWM7YUFBQSwwQkFBRztBQUNmLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7QUFDekIsaUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDOUM7T0FDRjs7QUFFRCxpQkFBYTthQUFBLHlCQUFHO0FBQ2QsWUFBSSxNQUFNLFlBQUEsQ0FBQztBQUNYLFlBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs7QUFFbEQsWUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDekMsY0FBSSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO0FBQ3pDLG1CQUFNO1dBQ1A7U0FDRjtBQUNELFlBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9CLFlBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7O0FBRWpDLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7QUFDekIsY0FBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDeEQsY0FBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBQ3BFLGNBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELGNBQUksV0FBVyxHQUFHLFlBQVksRUFDNUIsV0FBVyxHQUFHLFlBQVksQ0FBQztBQUM3QixnQkFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN6RCxjQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osZ0JBQUksRUFBRSxNQUFNO0FBQ1osMkJBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1dBQ2pELENBQUMsQ0FBQztBQUNILGNBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM5QyxNQUFNO0FBQ0wsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWixnQkFBSSxFQUFFLE1BQU07QUFDWiwyQkFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7V0FDakQsQ0FBQyxDQUFDO1NBQ0o7QUFDRCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtBQUNyQyxjQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEQ7T0FDRjs7QUFFRCxvQkFBZ0I7YUFBQSwwQkFBQyxTQUFTLEVBQUU7QUFDMUIsWUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsWUFBSSxNQUFNLFlBQUEsQ0FBQztBQUNYLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7QUFDekIsY0FBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDeEQsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0MsY0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BDLE1BQU07QUFDTCxnQkFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDM0I7QUFDRCxZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLFlBQUksQ0FBQyxRQUFRLENBQUM7QUFDWixjQUFJLEVBQUUsTUFBTTtTQUNiLENBQUMsQ0FBQztPQUNKOztBQUVELG1CQUFlO2FBQUEsMkJBQUc7QUFDaEIsWUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM5QixZQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDZCxZQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBUyxNQUFNLEVBQUU7QUFDdkMsY0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25DLENBQUMsQ0FBQztBQUNILGlCQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2pEOztBQUVELGdCQUFZO2FBQUEsc0JBQUMsVUFBVSxFQUFFO0FBQ3ZCLFlBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDNUQsWUFBSSxNQUFNLFlBQUEsQ0FBQztBQUNYLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7QUFDekIsY0FBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDeEQsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0MsY0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BDLE1BQU07QUFDTCxnQkFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDM0I7QUFDRCxZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztBQUNyRixZQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osY0FBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7T0FDSjs7QUFFRCxvQkFBZ0I7YUFBQSw0QkFBRztBQUNqQixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGNBQUksUUFBUSxZQUFBLENBQUM7QUFDYixjQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO0FBQzdCLG9CQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1dBQy9DLE1BQU07QUFDTCxvQkFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7V0FDcEM7QUFDRCxpQkFDRTs7O1lBQ0Usb0JBQUMsY0FBYztBQUNiLGlCQUFHLEVBQUMsWUFBWTtBQUNoQixzQkFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEFBQUM7QUFDdkMsd0JBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQ2pELHlCQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQUFBQztBQUMzRSw2QkFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEFBQUM7QUFDaEYsNEJBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLGVBQWUsQUFBQztBQUMzRSxvQkFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxBQUFDO0FBQ2xDLHNCQUFRLEVBQUUsUUFBUSxBQUFDO2NBQ25CO1dBQ0UsQ0FDTjtTQUNIO0FBQ0QsZUFBTyxJQUFJLENBQUM7T0FDYjs7QUFFRCxpQkFBYTthQUFBLHlCQUFHO0FBQ2QsWUFBSSxPQUFPLFlBQUEsQ0FBQztBQUNaLFlBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ3RDLGlCQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsTUFBTSxFQUFFO0FBQ2xELGdCQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ3pCLG1CQUFPO0FBQ0wsa0JBQUksRUFBRSxLQUFLLENBQUMsUUFBUTtBQUNwQixtQkFBSyxFQUFFLEtBQUssQ0FBQyxTQUFTOztBQUV0Qix1QkFBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSzs7QUFFbkMsc0JBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFLLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLEFBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVE7QUFDdEcsb0JBQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxLQUFLO2FBQ3RDLENBQUM7V0FDSCxDQUFDLENBQUM7U0FDSixNQUFNO0FBQ0wsaUJBQU8sR0FBRyxDQUFDO0FBQ1QsZ0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUTtBQUN4QyxpQkFBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQzFDLG9CQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVE7V0FDN0MsQ0FBQyxDQUFDO1NBQ0o7QUFDRCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFO0FBQzdGLGlCQUNFOztjQUFLLFNBQVMsRUFBQyxVQUFVO1lBQ3ZCLG9CQUFDLE9BQU87QUFDTiwwQkFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxBQUFDO0FBQ25DLDBCQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEFBQUM7QUFDbkMsMEJBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQUFBQztBQUNoQyw2QkFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxBQUFDO0FBQ3RDLHFCQUFPLEVBQUUsT0FBTyxBQUFDO0FBQ2pCLCtCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEFBQUM7QUFDaEQsc0JBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUN2QywyQkFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7QUFDakQsdUJBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUN6QyxzQkFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQ3ZDLHlCQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7Y0FDN0M7V0FDRSxDQUNQO1NBQ0YsTUFBTTtBQUNMLGlCQUFPLElBQUksQ0FBQztTQUNiO09BQ0Y7O0FBRUQscUJBQWlCO2FBQUEsMkJBQUMsT0FBTyxFQUFFO0FBQ3pCLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUU7QUFDM0IsaUJBQ0Usb0JBQUMsV0FBVyxJQUFDLE9BQU8sRUFBRSxPQUFPLEFBQUM7QUFDakIseUJBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEFBQUM7QUFDekMsb0JBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDLEdBQUUsQ0FDMUQ7U0FDSCxNQUFNO0FBQ0wsaUJBQU8sSUFBSSxDQUFDO1NBQ2I7T0FDRjs7QUFFRCxzQkFBa0I7YUFBQSw4QkFBRztBQUNuQixZQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLFlBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0QsWUFBRyxjQUFjLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxXQUFXLEVBQUM7QUFDekQsd0JBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzlEO09BQ0Y7Ozs7U0F2ZkcsY0FBYztHQUFTLEtBQUssQ0FBQyxTQUFTOztBQTBmNUMsY0FBYyxDQUFDLFNBQVMsR0FBRztBQUN6QixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ2hDLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDOUIsTUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRixRQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzVCLFNBQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDN0IsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM5QixPQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzNCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDL0IsWUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxtQkFBaUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDekMsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQy9CLFFBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDNUIsV0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUMvQixZQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO0FBQy9CLFlBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDOUIsZUFBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNqQyxpQkFBYSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNuQyxvQkFBZ0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDdEMsNEJBQXdCLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0dBQy9DLENBQUM7QUFDRixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDOUIsUUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUM1QixjQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLGlCQUFhLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0dBQ3BDLENBQUM7QUFDRixXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQy9CLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDL0IsUUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM1QixjQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2xDLGFBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUc7QUFDaEMsU0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQzdCLFlBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsYUFBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNqQyxzQkFBa0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDeEMsa0JBQWMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDcEMsa0JBQWMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDcEMsZUFBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNqQyxxQkFBaUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDdkMsY0FBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxRQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQzVCLG1CQUFlLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO0FBQ3RDLGVBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDbkMsa0JBQWMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDdEMsZ0JBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDbEMsZ0JBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFDbkMsQ0FBQztBQUNGLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUMvQixpQkFBYSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUN0QyxDQUFDO0FBQ0YsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUMvQixhQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0NBQ3BDLENBQUM7QUFDRixjQUFjLENBQUMsWUFBWSxHQUFHO0FBQzVCLFFBQU0sRUFBRSxNQUFNO0FBQ2QsU0FBTyxFQUFFLEtBQUs7QUFDZCxVQUFRLEVBQUUsSUFBSTtBQUNkLE9BQUssRUFBRSxLQUFLO0FBQ1osV0FBUyxFQUFFLEtBQUs7QUFDaEIsWUFBVSxFQUFFLEtBQUs7QUFDakIsbUJBQWlCLEVBQUUsU0FBUztBQUM1QixXQUFTLEVBQUU7QUFDVCxRQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWU7QUFDM0IsV0FBTyxFQUFFLEtBQUssQ0FBQyxtQkFBbUI7QUFDbEMsWUFBUSxFQUFFLEVBQUU7QUFDWixZQUFRLEVBQUUsU0FBUztBQUNuQixlQUFXLEVBQUUsU0FBUztBQUN0QixpQkFBYSxFQUFFLEtBQUs7QUFDcEIsb0JBQWdCLEVBQUUsS0FBSztBQUN2Qiw0QkFBd0IsRUFBRSxLQUFLO0dBQ2hDO0FBQ0QsVUFBUSxFQUFFO0FBQ1IsUUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjO0FBQzFCLGNBQVUsRUFBRSxLQUFLO0FBQ2pCLGlCQUFhLEVBQUUsU0FBUztHQUN6QjtBQUNELFdBQVMsRUFBRSxLQUFLO0FBQ2hCLFdBQVMsRUFBRSxLQUFLO0FBQ2hCLFFBQU0sRUFBRSxLQUFLO0FBQ2IsbUJBQWlCLEVBQUUsS0FBSztBQUN4QixjQUFZLEVBQUUsS0FBSztBQUNuQixhQUFXLEVBQUUsRUFBRTtBQUNmLFNBQU8sRUFBRTtBQUNQLFlBQVEsRUFBRSxTQUFTO0FBQ25CLGFBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztBQUMxQixzQkFBa0IsRUFBRSxTQUFTO0FBQzdCLGtCQUFjLEVBQUUsU0FBUztBQUN6QixrQkFBYyxFQUFFLFNBQVM7QUFDekIsZUFBVyxFQUFFLFNBQVM7QUFDdEIscUJBQWlCLEVBQUUsU0FBUztBQUM1QixjQUFVLEVBQUUsU0FBUztBQUNyQixRQUFJLEVBQUUsQ0FBQztBQUNQLG1CQUFlLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtBQUN6QyxlQUFXLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUN4QyxrQkFBYyxFQUFFLEtBQUssQ0FBQyxlQUFlO0dBQ3RDO0FBQ0QsV0FBUyxFQUFFO0FBQ1QsaUJBQWEsRUFBRSxDQUFDLEVBQ2pCO0FBQ0QsV0FBUyxFQUFFLEtBQUs7QUFDaEIsYUFBVyxFQUFFLFNBQVM7Q0FDdkIsQ0FBQzs7aUJBRWEsY0FBYzs7Ozs7OztpQkM1bUJkO0FBQ2IsV0FBUyxFQUFFLE1BQU07QUFDakIsVUFBUSxFQUFFLEtBQUs7QUFDZixlQUFhLEVBQUUsRUFBRTtBQUNqQixXQUFTLEVBQUUsR0FBRztBQUNkLFdBQVMsRUFBRSxJQUFJO0FBQ2YsVUFBUSxFQUFFLEdBQUc7QUFDYixZQUFVLEVBQUUsSUFBSTtBQUNoQixxQkFBbUIsRUFBRSxFQUFFO0FBQ3ZCLGlCQUFlLEVBQUUsTUFBTTtBQUN2QixtQkFBaUIsRUFBRSxPQUFPO0FBQzFCLGtCQUFnQixFQUFFLFVBQVU7QUFDNUIsZ0JBQWMsRUFBRSxNQUFNO0FBQ3RCLGlCQUFlLEVBQUUsT0FBTztBQUN4QixtQkFBaUIsRUFBRSxTQUFTO0FBQzVCLG9CQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BDLGlCQUFlLEVBQUUsQ0FBQztDQUNuQjs7Ozs7Ozs7O0lDakJNLEtBQUssMkJBQU0sT0FBTzs7QUFDekIsSUFBSSxNQUFNLEdBQUMsZ0JBQVMsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQzs7QUFHbEUsUUFBRyxRQUFRLEtBQUcsSUFBSSxJQUFFLE9BQU8sUUFBUSxLQUFHLFFBQVEsRUFBQzs7QUFDM0MsWUFBSSxJQUFJLEdBQUMsUUFBUSxLQUFHLElBQUksR0FBQyxNQUFNLEdBQUMsUUFBUSxDQUFDO0FBQ3pDLGVBQ0ksMENBQVcsSUFBSSxJQUFFLElBQUksRUFBRSxJQUFJLEFBQUMsRUFBQyxZQUFZLEVBQUUsWUFBWSxBQUFDO0FBQ2pELHFCQUFTLEVBQUUsQ0FBQyxXQUFXLElBQUUsRUFBRSxDQUFBLEdBQUUsZ0NBQWdDLEFBQUMsSUFBRyxDQUMzRTtLQUNKLE1BQU0sSUFBRyxDQUFDLFFBQVEsRUFBQztBQUNsQixZQUFJLElBQUksR0FBQyxRQUFRLEtBQUcsSUFBSSxHQUFDLE1BQU0sR0FBQyxRQUFRLENBQUM7QUFDekMsZUFDSSwwQ0FBVyxJQUFJLElBQUUsSUFBSSxFQUFFLElBQUksQUFBQyxFQUFDLFlBQVksRUFBRSxZQUFZLEFBQUMsRUFBQyxRQUFRLEVBQUMsVUFBVTtBQUNyRSxxQkFBUyxFQUFFLENBQUMsV0FBVyxJQUFFLEVBQUUsQ0FBQSxHQUFFLGdDQUFnQyxBQUFDLElBQUcsQ0FDM0U7S0FDRixNQUFNLElBQUcsUUFBUSxDQUFDLElBQUksRUFBQzs7O0FBRXBCLGdCQUFRLENBQUMsS0FBSyxLQUFHLElBQUksQ0FBQyxLQUFLLEdBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQSxBQUFDLENBQUM7OztBQUc1QyxZQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsV0FBVyxJQUFFLEVBQUUsQ0FBQSxHQUNoQiw0QkFBNEIsR0FDNUIsUUFBUSxDQUFDLElBQUksSUFDWixRQUFRLENBQUMsU0FBUyxHQUFFLEdBQUcsR0FBQyxRQUFRLENBQUMsU0FBUyxHQUFFLEVBQUUsQ0FBQSxBQUFDLENBQUM7O0FBRWxFLFlBQUcsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUM7O0FBQzFCLGdCQUFJLE9BQU8sR0FBRyxFQUFFO2dCQUFFLE1BQU0sR0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUNqRCxnQkFBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFDOztBQUNyQixvQkFBSSxRQUFRLENBQUM7QUFDYix1QkFBTyxHQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQzVCLDRCQUFRLEdBQUMsTUFBTSxHQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7QUFDNUIsMkJBQ0k7OzBCQUFRLEdBQUcsRUFBRSxRQUFRLEdBQUMsQ0FBQyxBQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQUFBQzt3QkFBRSxRQUFRO3FCQUFVLENBQ3pEO2lCQUNKLENBQUMsQ0FBQzthQUNOO0FBQ0QsbUJBQ0k7OzZCQUFZLElBQUksSUFBRSxZQUFZLEVBQUUsWUFBWSxBQUFDO2dCQUFFLE9BQU87YUFBVSxDQUNsRTtTQUNMLE1BQU0sSUFBRyxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBQzs7O0FBRW5DLG9CQUFRLENBQUMsSUFBSSxLQUFHLElBQUksQ0FBQyxJQUFJLEdBQUMsUUFBUSxDQUFDLElBQUksQ0FBQSxBQUFDLENBQUM7QUFDekMsb0JBQVEsQ0FBQyxJQUFJLEtBQUcsSUFBSSxDQUFDLElBQUksR0FBQyxRQUFRLENBQUMsSUFBSSxDQUFBLEFBQUMsQ0FBQztBQUN6QyxnQkFBSSxZQUFZLEdBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQUMsT0FBTyxHQUFDLElBQUksQ0FBQztBQUM3QyxnQkFBRyxZQUFZLEVBQUM7QUFDWixvQkFBSSxDQUFDLFNBQVMsR0FBQyxVQUFTLENBQUMsRUFBQztBQUN0Qix3QkFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTs7QUFDakIsb0NBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbkI7aUJBQ0osQ0FBQztBQUNGLHVCQUFPLEdBQUM7O3NCQUFPLFNBQVMsRUFBQyx1Q0FBdUMsRUFBQyxPQUFPLEVBQUUsWUFBWSxBQUFDOztpQkFBYSxDQUFBO2FBQ3ZHOztBQUVELG1CQUNJOzs7Z0JBQ0ksNkNBQWMsSUFBSSxJQUFFLFlBQVksRUFBRSxZQUFZLEFBQUMsSUFBWTtnQkFDMUQsT0FBTzthQUNOLENBRVI7U0FDTCxNQUFNLElBQUcsUUFBUSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUM7QUFDckMsZ0JBQUksT0FBTSxHQUFHLFlBQVksQ0FBQztBQUMxQixnQkFBRyxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFDOztBQUU3Qyx1QkFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ2xDO0FBQ0QsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNELGdCQUFJLENBQUMsU0FBUyxJQUFJLHNCQUFzQixDQUFDOztBQUV6QyxnQkFBSSxPQUFPLEdBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxPQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksR0FBQyxLQUFLLENBQUM7O0FBRXpGLG1CQUNFLDBDQUFXLElBQUksSUFBRSxJQUFJLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBRSxPQUFNLEFBQUMsRUFBQyxjQUFjLEVBQUUsT0FBTyxBQUFDLElBQUUsQ0FDMUU7U0FDSCxNQUFLOztBQUNGLG1CQUNJLDBDQUFXLElBQUksSUFBRSxJQUFJLEVBQUUsSUFBSSxBQUFDLEVBQUMsWUFBWSxFQUFFLFlBQVksQUFBQyxJQUFFLENBQzdEO1NBQ0o7S0FDSjs7QUFFRCxXQUNJLDBDQUFXLElBQUksSUFBRSxJQUFJLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsSUFBRSxFQUFFLENBQUEsR0FBRSxnQ0FBZ0MsQUFBQyxJQUFFLENBQ2hHO0NBQ0osQ0FBQzs7aUJBRWEsTUFBTTs7Ozs7Ozs7Ozs7OztJQ3ZGZCxLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLEtBQUssMkJBQU0sU0FBUzs7SUFDcEIsTUFBTSwyQkFBTSxjQUFjOztBQUVqQyxJQUFJLGVBQWUsR0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQzFDLElBQUksb0JBQW9CLEdBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztJQUV0RSxZQUFZO1dBQVosWUFBWTswQkFBWixZQUFZOzs7Ozs7O1lBQVosWUFBWTs7ZUFBWixZQUFZO0FBRWhCLFVBQU07OzthQUFBLGdCQUFDLElBQUksRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDO0FBQ3BCLFlBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUNsQixHQUFHLEVBQUMsS0FBSyxFQUFFO0FBQ1QsY0FBSSxFQUFDLFFBQVE7QUFDYixpQkFBTyxFQUFFLElBQUk7QUFDYix5QkFBZSxFQUFFLElBQUk7QUFDckIsdUJBQWEsRUFBRSxvQkFBb0I7QUFDbkMsdUJBQWEsRUFBRSxvQkFBb0I7U0FDcEMsQ0FBQyxDQUFDO09BQ1I7O0FBRUQsVUFBTTthQUFBLGtCQUFFO0FBQ04sZUFDSSxvQkFBQyxlQUFlLElBQUMsR0FBRyxFQUFDLFFBQVEsRUFBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQUFBQztBQUN2RCxZQUFFLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFDLGlCQUFpQixHQUFtQixDQUN4RjtPQUNGOzs7O1NBbEJHLFlBQVk7R0FBUyxLQUFLLENBQUMsU0FBUzs7aUJBcUIzQixZQUFZOzs7Ozs7Ozs7Ozs7O0lDNUJwQixLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLFFBQVEsMkJBQU0sWUFBWTs7SUFDMUIsS0FBSywyQkFBTSxTQUFTOztJQUVyQixxQkFBcUI7V0FBckIscUJBQXFCOzBCQUFyQixxQkFBcUI7Ozs7Ozs7WUFBckIscUJBQXFCOztlQUFyQixxQkFBcUI7QUFFekIsVUFBTTthQUFBLGtCQUFFO0FBQ04sWUFBSSxPQUFPLEdBQUc7QUFDWixlQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7O0FBRUYsZUFDRTs7WUFBSSxLQUFLLEVBQUUsT0FBTyxBQUFDO1VBQ2pCOztjQUFLLFNBQVMsRUFBQyw4QkFBOEI7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1dBQ2hCO1NBQ0gsQ0FDTjtPQUNGOzs7O1NBZEcscUJBQXFCO0dBQVMsS0FBSyxDQUFDLFNBQVM7O2lCQWlCcEMscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7SUNyQjdCLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsS0FBSywyQkFBTSxTQUFTOztJQUNwQixRQUFRLDJCQUFNLFlBQVk7O0lBQzFCLFdBQVcsMkJBQU0sZUFBZTs7SUFDaEMsZUFBZSwyQkFBTSxtQkFBbUI7O0lBQ3hDLFFBQVEsMkJBQU0sWUFBWTs7QUFFakMsSUFBSSxLQUFLLEdBQUMsZUFBUyxHQUFHLEVBQUM7QUFDckIsU0FBTyxHQUFHLElBQUcsT0FBTyxHQUFHLEtBQUcsVUFBVSxBQUFDLENBQUM7Q0FFdkMsQ0FBQzs7SUFDSSxTQUFTO0FBRUYsV0FGUCxTQUFTLENBRUQsS0FBSyxFQUFFOzBCQUZmLFNBQVM7O0FBR2IsK0JBSEksU0FBUyw2Q0FHUCxLQUFLLEVBQUU7QUFDWCxRQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsa0JBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7QUFDRixRQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztHQUN0Qjs7WUFSRyxTQUFTOztlQUFULFNBQVM7QUFVYixVQUFNO2FBQUEsa0JBQUU7QUFDTixZQUFJLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDOztBQUVuRCxZQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQ25DLHlCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO0FBQ25DLDBCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtBQUNyQyx1QkFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztBQUMvQiwyQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7U0FDeEMsQ0FBQyxDQUFDOztBQUVILFlBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDcEQsWUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUM7O0FBRTdELFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFTLElBQUksRUFBRSxDQUFDLEVBQUM7QUFDbkQsY0FBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVMsTUFBTSxFQUFFLENBQUMsRUFBQztBQUMzRCxnQkFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxnQkFBRyxJQUFJLENBQUMsT0FBTyxJQUNiLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQ25DLGtCQUFNLENBQUMsUUFBUTtBQUNmLGdCQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLElBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUM7QUFDL0Isa0JBQUksTUFBTSxHQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUMsVUFBUyxLQUFLLEVBQUM7QUFDdEMsdUJBQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBQyxFQUFFLENBQUMsQ0FBQztlQUN2RCxHQUFDLEtBQUssQ0FBQzs7QUFFVixxQkFDSTtBQUFDLCtCQUFlO2tCQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDOztBQUVyRCwwQkFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBQyxNQUFNLENBQUMsUUFBUSxBQUFDO0FBQ3RGLHdCQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBQyxNQUFNLEdBQUMsS0FBSyxBQUFDO0FBQ25DLHFCQUFHLEVBQUUsQ0FBQyxBQUFDO0FBQ1AsNEJBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEFBQUM7QUFDM0MsMEJBQVEsRUFBRSxDQUFDLEFBQUM7QUFDWiwwQkFBUSxFQUFFLENBQUMsQUFBQztnQkFDMUIsVUFBVTtlQUNLLENBQ25CO2FBQ0osTUFBSzs7QUFFSixrQkFBSSxXQUFXLEdBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7O0FBRS9GLGtCQUFHLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUM7QUFDdEMsb0JBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JELG9CQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtBQUN6QyxnQ0FBYyxHQUFHLDZCQUFLLHVCQUF1QixFQUFFLEVBQUMsTUFBTSxFQUFFLGNBQWMsRUFBQyxBQUFDLEdBQU8sQ0FBQztpQkFDakY7QUFDRCx1QkFDRTtBQUFDLDZCQUFXO29CQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxBQUFDO0FBQ3hCLHVCQUFHLEVBQUUsQ0FBQyxBQUFDO0FBQ1AsNkJBQVMsRUFBRSxXQUFXLEFBQUM7QUFDdkIsNEJBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQUFBQztBQUM5QiwwQkFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQ3ZDLHlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQUFBQztrQkFDOUIsY0FBYztpQkFDSCxDQUNmO2VBQ0YsTUFBSztBQUNKLHVCQUNFO0FBQUMsNkJBQVc7b0JBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEFBQUM7QUFDeEIsdUJBQUcsRUFBRSxDQUFDLEFBQUM7QUFDUCw2QkFBUyxFQUFFLFdBQVcsQUFBQztBQUN2Qiw0QkFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxBQUFDO0FBQzlCLDBCQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQUFBQztBQUN0QiwwQkFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQ3ZDLHlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQUFBQztrQkFDOUIsVUFBVTtpQkFDQyxDQUNmO2VBQ0Y7YUFDRjtXQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDVCxjQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7QUFFbkYsY0FBSSxlQUFlLEdBQUcsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FDMUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFDLElBQUksQ0FBQzs7OztBQUlsRSxjQUFJLFdBQVcsR0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7O0FBRXBHLGlCQUNFO0FBQUMsb0JBQVE7Y0FBQyxVQUFVLEVBQUUsUUFBUSxBQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQUFBQyxFQUFDLFNBQVMsRUFBRSxXQUFXLEFBQUM7QUFDN0QsdUJBQVMsRUFBRSxrQkFBa0IsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBQyxTQUFTLEFBQUM7QUFDN0QsNEJBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGNBQWMsQUFBQztBQUNsRSx3QkFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQzNDLHlCQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFDNUMsZUFBZTtZQUNmLFlBQVk7V0FDSixDQUNaO1NBQ0YsRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFVCxZQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFDO0FBQ3hCLG1CQUFTLENBQUMsSUFBSSxDQUNkO0FBQUMsb0JBQVE7Y0FBQyxHQUFHLEVBQUMsaUJBQWlCO1lBQzdCOztnQkFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFFLGtCQUFrQixHQUFDLENBQUMsR0FBQyxDQUFDLENBQUEsQUFBQyxBQUFDO0FBQzVELHFCQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEFBQUM7O2FBRTlCO1dBQ0ksQ0FBQyxDQUFDO1NBQ2Q7O0FBRUQsWUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDckIsZUFDRTs7WUFBSyxTQUFTLEVBQUUsZ0JBQWdCLEFBQUM7VUFDL0I7O2NBQU8sU0FBUyxFQUFFLFlBQVksQUFBQztZQUM1QixXQUFXO1lBQ1o7OztjQUNHLFNBQVM7YUFDSjtXQUNGO1NBQ0osQ0FDUDtPQUNGOztBQUVELHFCQUFpQjthQUFBLDJCQUFDLGtCQUFrQixFQUFDO0FBQ25DLFlBQUksZUFBZSxHQUFHLElBQUksQ0FBQzs7QUFFM0IsWUFBRyxrQkFBa0IsRUFBQztBQUNwQixjQUFJLEtBQUssR0FBRztBQUNWLGlCQUFLLEVBQUMsRUFBRTtXQUNULENBQUE7QUFDRCx5QkFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFDLElBQUksR0FBRSw0QkFBSSxLQUFLLEVBQUUsS0FBSyxBQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxBQUFDLEdBQU0sQUFBQyxDQUFDO1NBQ2pHO0FBQ0QsWUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVMsTUFBTSxFQUFFLENBQUMsRUFBQztBQUN0RCxjQUFJLEtBQUssR0FBQztBQUNSLG1CQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBQyxNQUFNLEdBQUMsSUFBSTtBQUNsQyxpQkFBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1dBQ3BCLENBQUM7QUFDRixpQkFBUSw0QkFBSSxLQUFLLEVBQUUsS0FBSyxBQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQUFBQyxFQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxBQUFDLEdBQU0sQ0FBRTtTQUN2RSxDQUFDLENBQUM7O0FBRUgsZUFDRTs7O1VBQ0U7OztZQUFLLGVBQWU7WUFBRSxPQUFPO1dBQU07U0FDN0IsQ0FDVDtPQUNGOztBQUVELGtCQUFjO2FBQUEsd0JBQUMsUUFBUSxFQUFDO0FBQ3RCLFlBQUksR0FBRyxFQUFFLFdBQVcsQ0FBQztBQUNyQixZQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBUyxHQUFHLEVBQUUsQ0FBQyxFQUFDO0FBQ3RDLGNBQUcsQ0FBQyxJQUFJLFFBQVEsR0FBQyxDQUFDLEVBQUM7QUFDakIsZUFBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLHVCQUFXLEdBQUcsR0FBRyxDQUFDO1dBQ25CO1NBQ0YsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNULFlBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ3BDOztBQUVELG1CQUFlO2FBQUEseUJBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQztBQUNuQyxZQUFJLEdBQUcsRUFBRSxXQUFXLENBQUM7QUFDckIsWUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVMsR0FBRyxFQUFFLENBQUMsRUFBQztBQUN0QyxjQUFHLENBQUMsSUFBSSxRQUFRLEdBQUMsQ0FBQyxFQUFDO0FBQ2pCLGVBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQix1QkFBVyxHQUFHLEdBQUcsQ0FBQztXQUNuQjtTQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDVCxZQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7T0FDakQ7O0FBRUQsOEJBQTBCO2FBQUEsb0NBQUMsQ0FBQyxFQUFDO0FBQzNCLFlBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsRUFBQztBQUN2RixjQUFJLENBQUMsZUFBZSxDQUNsQixDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbEY7T0FDRjs7QUFFRCxrQkFBYzthQUFBLHdCQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUM7QUFDbkMsWUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDcEIsWUFBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBQztBQUM1QixxQkFBVyxFQUFFLENBQUM7QUFDZCxjQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUN0QyxXQUFXLEVBQUUsQ0FBQztTQUNqQjtBQUNELGdCQUFRLEVBQUUsQ0FBQztBQUNYLFlBQUksUUFBUSxHQUFHO0FBQ2Isc0JBQVksRUFBRTtBQUNaLGVBQUcsRUFBRSxRQUFRO0FBQ2IsZUFBRyxFQUFFLFdBQVc7V0FDakI7U0FDRixDQUFDOztBQUVGLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUM7O0FBRS9DLGNBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEcsY0FBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0M7QUFDRCxZQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO09BQ3pCOztBQUVELGNBQVU7YUFBQSxzQkFBRTtBQUNWLFlBQUksWUFBWSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0FBQ3pDLFlBQUcsWUFBWSxFQUFDO0FBQ2QsY0FBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBQyxZQUFZLENBQUMsR0FBRyxFQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyRTtPQUNGOztBQUVELDBCQUFzQjthQUFBLGdDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFDO0FBQ25ELFlBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUNwQyxZQUFHLElBQUksSUFBSSxNQUFNLEVBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztPQUN6RTs7QUFFRCx5QkFBcUI7YUFBQSwrQkFBQyxRQUFRLEVBQUM7QUFDN0IsWUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQ3ZELGlCQUFRO0FBQUMsdUJBQVc7O1lBQUMsK0JBQU8sSUFBSSxFQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsV0FBVyxFQUFDLE9BQU8sRUFBRSxRQUFRLEFBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQyxHQUFFO1dBQWMsQ0FBRTtTQUNySixNQUFLO0FBQ0osaUJBQVE7QUFBQyx1QkFBVzs7WUFBRSwrQkFBTyxJQUFJLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBRSxRQUFRLEFBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQyxHQUFFO1dBQWMsQ0FBRTtTQUN4STtPQUNGOztBQUVELHVCQUFtQjthQUFBLCtCQUFFO0FBQ25CLGVBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztPQUMzRDs7OztTQWxPRyxTQUFTO0dBQVMsS0FBSyxDQUFDLFNBQVM7O0FBb092QyxTQUFTLENBQUMsU0FBUyxHQUFHO0FBQ3BCLE1BQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDM0IsU0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUM5QixTQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzdCLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDOUIsT0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUMzQixXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQy9CLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsaUJBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDdEMsWUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxhQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0NBQ2xDLENBQUM7aUJBQ2EsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUMzUGpCLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsS0FBSywyQkFBTSxTQUFTOztJQUVyQixXQUFXO0FBRUosV0FGUCxXQUFXLENBRUgsS0FBSyxFQUFFOzBCQUZmLFdBQVc7O0FBR2YsK0JBSEksV0FBVyw2Q0FHVCxLQUFLLEVBQUU7R0FDWjs7WUFKRyxXQUFXOztlQUFYLFdBQVc7QUFNZixrQkFBYzthQUFBLHdCQUFDLENBQUMsRUFBQztBQUNmLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBQztBQUNyRCxjQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDakQsb0JBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7V0FDNUIsTUFBTSxJQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUU7QUFDM0IsZ0JBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNoQyxlQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7V0FDekI7U0FDRjtBQUNELFlBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUNmLENBQUMsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFDdEMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztPQUM5Qjs7QUFFRCxVQUFNO2FBQUEsa0JBQUU7QUFDTixZQUFJLE9BQU8sR0FBRztBQUNaLG1CQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQy9CLGlCQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUMsTUFBTSxHQUFDLElBQUk7U0FDdkMsQ0FBQzs7QUFFRixZQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDZCxZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFDO0FBQ3JCLGNBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUM7QUFDbkQsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7V0FDL0MsTUFBSyxJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUM7QUFDM0QsZ0JBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7V0FDckQ7U0FDRjtBQUNELGVBQ0U7O3FCQUFJLEtBQUssRUFBRSxPQUFPLEFBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEFBQUMsSUFBSyxJQUFJO1VBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUNqQixDQUNOO09BQ0Y7Ozs7U0F2Q0csV0FBVztHQUFTLEtBQUssQ0FBQyxTQUFTOztBQXlDekMsV0FBVyxDQUFDLFNBQVMsR0FBRztBQUN0QixXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ2pDLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDNUIsV0FBUyxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtDQUNqQyxDQUFDOztBQUVGLFdBQVcsQ0FBQyxZQUFZLEdBQUc7QUFDekIsV0FBUyxFQUFFLE1BQU07QUFDakIsUUFBTSxFQUFFLEtBQUs7QUFDYixXQUFTLEVBQUMsRUFBRTtDQUNiLENBQUE7aUJBQ2MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7O0lDdkRuQixLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLEtBQUssMkJBQU0sU0FBUzs7SUFDcEIsTUFBTSwyQkFBTSxVQUFVOztJQUN0QixRQUFRLDJCQUFNLG1CQUFtQjs7SUFDakMsUUFBUSwyQkFBTSxZQUFZOztJQUUzQixlQUFlO0FBQ04sYUFEVCxlQUFlLENBQ0wsS0FBSyxFQUFDOzhCQURoQixlQUFlOztBQUViLG1DQUZGLGVBQWUsNkNBRVAsS0FBSyxFQUFFO0FBQ2IsWUFBSSxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUM7QUFDckIsWUFBSSxDQUFDLEtBQUssR0FBQztBQUNQLHVCQUFXLEVBQUMsS0FBSztTQUNwQixDQUFDO0tBQ0w7O2NBUEMsZUFBZTs7aUJBQWYsZUFBZTtBQVNuQixzQkFBYzttQkFBQSx3QkFBQyxDQUFDLEVBQUM7QUFDZixvQkFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTs7QUFDbkIsd0JBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLFVBQVUsR0FDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDOztBQUU5RCx3QkFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUM7QUFDdEIsK0JBQU87cUJBQ1Y7QUFDRCx3QkFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNwRCxNQUFLLElBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUM7QUFDdkIsd0JBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbkQ7YUFDRjs7QUFFRCxrQkFBVTttQkFBQSxvQkFBQyxDQUFDLEVBQUM7QUFDWCxvQkFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBQztBQUN2Qix3QkFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksVUFBVSxHQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7QUFDOUQsd0JBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFDO0FBQ3RCLCtCQUFPO3FCQUNWO0FBQ0Qsd0JBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdEQ7YUFDRjs7QUFDRCxpQkFBUzttQkFBQSxtQkFBQyxLQUFLLEVBQUM7QUFDWixvQkFBSSxFQUFFLEdBQUMsSUFBSSxDQUFDO0FBQ1osb0JBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFDO0FBQzNCLHdCQUFJLEtBQUssR0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0Msd0JBQUcsS0FBSyxLQUFHLElBQUksRUFBQztBQUNaLDBCQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ2hFLDRCQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7QUFFN0IsMEJBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNsQiwwQkFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQ2hDLDBCQUFFLENBQUMsYUFBYSxHQUFDLFVBQVUsQ0FBQyxZQUFVO0FBQUMsOEJBQUUsQ0FBQyxRQUFRLENBQUMsRUFBQyxXQUFXLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQzt5QkFBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9FLDZCQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDZCwrQkFBTyxLQUFLLENBQUM7cUJBQ2hCO2lCQUNKO0FBQ0QsdUJBQU8sSUFBSSxDQUFDO2FBRWY7O0FBQ0Qsb0JBQVk7Ozs7Ozs7Ozs7O2VBQUEsWUFBRTtBQUNWLG9CQUFHLElBQUksQ0FBQyxhQUFhLElBQUUsQ0FBQyxFQUFDO0FBQ3JCLGdDQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2pDLHdCQUFJLENBQUMsYUFBYSxHQUFDLENBQUMsQ0FBQztpQkFDeEI7YUFDSjs7QUFDRCx5QkFBaUI7bUJBQUEsNkJBQUU7QUFDZixvQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7O0FBRS9CLHFCQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDakI7O0FBRUQsNEJBQW9CO21CQUFBLGdDQUFHO0FBQ3JCLG9CQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7O0FBRUQsY0FBTTttQkFBQSxrQkFBRTtBQUNOLG9CQUFJLFFBQVEsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7b0JBQzVCLE1BQU0sR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07b0JBQ3hCLElBQUksR0FBQztBQUNELHVCQUFHLEVBQUMsVUFBVTtBQUNkLDZCQUFTLEVBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hDLDBCQUFNLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUNwQyxDQUFDOztBQUVGLHdCQUFRLENBQUMsV0FBVyxLQUFHLElBQUksQ0FBQyxXQUFXLEdBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQSxBQUFDLENBQUM7O0FBRWxFLG9CQUFJLFdBQVcsR0FBQyxRQUFRLENBQUMsRUFBQyxVQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFDLE9BQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO0FBQzdGLHVCQUNJOztzQkFBSSxHQUFHLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsQUFBQztvQkFDckMsTUFBTSxDQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLFdBQVcsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7b0JBQ2pFLG9CQUFDLFFBQVEsSUFBQyxHQUFHLEVBQUMsVUFBVSxHQUFZO2lCQUNuQyxDQUNSO2FBQ0Y7O0FBRUQseUJBQWlCO21CQUFBLDJCQUFDLENBQUMsRUFBQztBQUNsQixvQkFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2Ysb0JBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QyxxQkFBSyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsdUJBQU8sS0FBSyxDQUFDO2FBQ2Q7Ozs7V0EvRkcsZUFBZTtHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWtHN0MsZUFBZSxDQUFDLFNBQVMsR0FBRztBQUMxQixnQkFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNsQyxZQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ2hDLFlBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsY0FBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtDQUNqQyxDQUFDOztpQkFHYSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7SUNoSHZCLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsS0FBSywyQkFBTSxTQUFTOztJQUNwQixRQUFRLDJCQUFNLFlBQVk7O0lBRTNCLFdBQVc7QUFFSixXQUZQLFdBQVcsQ0FFSCxLQUFLLEVBQUU7MEJBRmYsV0FBVzs7QUFHYiwrQkFIRSxXQUFXLDZDQUdQLEtBQUssRUFBRTtBQUNiLFFBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0dBQ3JCOztZQUxHLFdBQVc7O2VBQVgsV0FBVztBQU9mLGVBQVc7YUFBQSxxQkFBQyxDQUFDLEVBQUM7QUFDWixZQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsS0FFNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDOztBQUUvRCxZQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7T0FDckM7O0FBRUQsVUFBTTthQUFBLGtCQUFFO0FBQ04sWUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRTtBQUNuQyx5QkFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztBQUNuQywyQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7U0FDeEMsQ0FBQyxDQUFDO0FBQ0gsWUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDOztBQUUzQixZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFDO0FBQ3JELGNBQUksS0FBSyxHQUFHO0FBQ1YsaUJBQUssRUFBQyxFQUFFO0FBQ1IsdUJBQVcsRUFBRSxDQUFDO0FBQ2Qsd0JBQVksRUFBRSxDQUFDO1dBQ2hCLENBQUE7QUFDRCx5QkFBZSxHQUFJOztjQUFJLEtBQUssRUFBRSxLQUFLLEFBQUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEFBQUM7O1dBQVksQUFBQyxDQUFDO1NBQzVEO0FBQ0QsWUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVMsTUFBTSxFQUFDO0FBQ3ZELGNBQUksT0FBTyxHQUFHO0FBQ1osbUJBQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFDLE1BQU0sR0FBQyxJQUFJO0FBQ2xDLGlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7V0FDcEIsQ0FBQztBQUNGLGlCQUNFOztjQUFJLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxBQUFDLEVBQUMsS0FBSyxFQUFFLE9BQU8sQUFBQztZQUNuQzs7Z0JBQUssU0FBUyxFQUFDLDhCQUE4QjtjQUMzQywrQkFBTyxJQUFJLEVBQUMsTUFBTSxFQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxBQUFDLEVBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEFBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsR0FBRTthQUNuRztXQUNILENBQ047U0FDRixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ1QsZUFDRTs7WUFBTyxTQUFTLEVBQUUsWUFBWSxBQUFDLEVBQUMsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxBQUFDO1VBQ25EOzs7WUFDRTs7Z0JBQUksS0FBSyxFQUFFLEVBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFDLEFBQUM7Y0FDdEMsZUFBZTtjQUFFLFdBQVc7YUFDMUI7V0FDQztTQUNGLENBQ1Q7T0FDRjs7OztTQXRERyxXQUFXO0dBQVMsS0FBSyxDQUFDLFNBQVM7O0FBd0R6QyxXQUFXLENBQUMsU0FBUyxHQUFHO0FBQ3RCLFNBQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDOUIsZUFBYSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNyQyxVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0NBQy9CLENBQUM7aUJBQ2EsV0FBVzs7Ozs7Ozs7Ozs7Ozs7O0lDakVuQixLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLEtBQUssMkJBQU0sU0FBUzs7SUFDcEIsSUFBSSwyQkFBTSxRQUFROztJQUNsQixRQUFRLDJCQUFNLFlBQVk7O0lBQzFCLHFCQUFxQiwyQkFBTSx5QkFBeUI7O0lBRXJELFdBQVc7QUFFSixXQUZQLFdBQVcsQ0FFSCxLQUFLLEVBQUU7MEJBRmYsV0FBVzs7QUFHYiwrQkFIRSxXQUFXLDZDQUdQLEtBQUssRUFBRTtHQUNkOztZQUpHLFdBQVc7O2VBQVgsV0FBVztBQU1mLGtCQUFjO2FBQUEsd0JBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQztBQUM5QixZQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMzQixhQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxFQUFDO0FBQ3RDLGNBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLGNBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7QUFDbkQsa0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7V0FDL0Q7U0FDRjtBQUNELFlBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztPQUNyQzs7QUFFRCxxQkFBaUI7YUFBQSw2QkFBRTs7QUFFakIsWUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBQztBQUNyQixjQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0QsY0FBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDM0IsZUFBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQyxDQUFDLEVBQUUsRUFBQztBQUN0QyxnQkFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsZ0JBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBQztBQUMzRCxvQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvRCxvQkFBTTthQUNQO1dBQ0Y7U0FDRjtPQUNGOztBQUVELFVBQU07YUFBQSxrQkFBRTtBQUNOLFlBQUksZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ2hELFlBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFO0FBQ2hELDBCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUN4QyxDQUFDLENBQUM7QUFDSCxZQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3ZGLFlBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDOztBQUVqQyxlQUNFOztZQUFLLFNBQVMsRUFBRSxnQkFBZ0IsQUFBQztVQUMvQjs7Y0FBTyxTQUFTLEVBQUUsWUFBWSxBQUFDO1lBQzdCOzs7Y0FDRTs7a0JBQUksR0FBRyxFQUFDLFFBQVE7Z0JBQ2Isa0JBQWtCO2dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7ZUFDakI7YUFDQztXQUNGO1NBQ0osQ0FDUDtPQUNGOztBQUVELHlCQUFxQjthQUFBLGlDQUFFO0FBQ3JCLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQ3RELGlCQUFRLG9CQUFDLHFCQUFxQixPQUF5QixDQUFFO1NBQzFELE1BQUssSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUM7QUFDMUQsaUJBQVE7QUFBQyxpQ0FBcUI7O1lBQUMsK0JBQU8sSUFBSSxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEFBQUMsR0FBRTtXQUF3QixDQUFFO1NBQ3ZILE1BQUk7QUFDSCxpQkFBTyxJQUFJLENBQUM7U0FDYjtPQUNGOztBQUVELDZCQUF5QjthQUFBLHFDQUFFO0FBQ3pCLFlBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFDO0FBQ3BDLGVBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7QUFDM0MsZ0JBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUNwQixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1dBQ3hHO1NBQ0YsTUFBTTtBQUNMLGNBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUNqQixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1NBQ3JHO09BQ0Y7Ozs7U0ExRUcsV0FBVztHQUFTLEtBQUssQ0FBQyxTQUFTOztBQTRFekMsV0FBVyxDQUFDLFNBQVMsR0FBRztBQUN0QixlQUFhLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ3JDLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDNUIsZ0JBQWMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDcEMsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ2pDLGtCQUFnQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUN0QyxVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0NBQy9CLENBQUM7O0FBRUYsV0FBVyxDQUFDLFlBQVksR0FBRyxFQUMxQixDQUFDO2lCQUNhLFdBQVc7Ozs7Ozs7Ozs7Ozs7SUM5Rm5CLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUMxQixLQUFLLDJCQUFNLFNBQVM7O0lBQ3BCLElBQUksMkJBQU0sUUFBUTs7SUFFbkIsaUJBQWlCO1dBQWpCLGlCQUFpQjswQkFBakIsaUJBQWlCOzs7Ozs7O1lBQWpCLGlCQUFpQjs7ZUFBakIsaUJBQWlCO0FBSXJCLHFCQUFpQjthQUFBLDJCQUFDLENBQUMsRUFBQztBQUNsQixZQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQUMsaUJBQU87U0FBQSxBQUMvQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixZQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBQyxLQUFLLENBQUMsUUFBUSxHQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDMUUsWUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVELFdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztPQUNuRDs7QUFFRCxxQkFBaUI7YUFBQSw2QkFBRTtBQUNqQixZQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7T0FDckU7O0FBRUQsVUFBTTthQUFBLGtCQUFFO0FBQ04sWUFBSSxPQUFPLEdBQUc7QUFDWixtQkFBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztBQUMvQixpQkFBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLE1BQU0sR0FBQyxJQUFJO0FBQ3RDLGVBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7U0FDeEIsQ0FBQzs7QUFFRixZQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBQyxHQUFHLElBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUMsYUFBYSxHQUFDLEVBQUUsQ0FBQSxBQUFDLENBQUM7QUFDOUUsZUFDRTs7WUFBSSxTQUFTLEVBQUUsT0FBTyxBQUFDLEVBQUMsS0FBSyxFQUFFLE9BQU8sQUFBQztVQUNyQzs7Y0FBSyxHQUFHLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyw4QkFBOEI7QUFDMUQscUJBQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1dBQU87U0FDdEUsQ0FDTjtPQUNGOzs7O1NBOUJHLGlCQUFpQjtHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWdDL0MsaUJBQWlCLENBQUMsU0FBUyxHQUFHO0FBQzVCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDakMsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNqQyxVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzlCLGdCQUFjLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ3BDLFlBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDaEMsT0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUMzQixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHO0FBQzdCLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDNUIsV0FBUyxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxPQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQzdCLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDOUIsaUJBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUc7Q0FDckMsQ0FBQzs7QUFFRixpQkFBaUIsQ0FBQyxZQUFZLEdBQUc7QUFDL0IsV0FBUyxFQUFFLE1BQU07QUFDakIsVUFBUSxFQUFFLEtBQUs7QUFDZixZQUFVLEVBQUUsU0FBUztBQUNyQixPQUFLLEVBQUUsS0FBSztBQUNaLFVBQVEsRUFBRSxJQUFJO0FBQ2QsZ0JBQWMsRUFBRSxTQUFTO0FBQ3pCLFFBQU0sRUFBRSxLQUFLO0FBQ2IsV0FBUyxFQUFFLEVBQUU7QUFDYixPQUFLLEVBQUUsSUFBSTtBQUNYLFVBQVEsRUFBRSxTQUFTO0FBQ25CLGlCQUFlLEVBQUUsRUFBRTtDQUNwQixDQUFDOztpQkFFYSxpQkFBaUI7Ozs7Ozs7Ozs7Ozs7OztJQ2xFekIsS0FBSywyQkFBTSxPQUFPOztJQUNsQixLQUFLLDJCQUFNLFNBQVM7O0lBRXJCLFFBQVE7V0FBUixRQUFROzBCQUFSLFFBQVE7Ozs7Ozs7WUFBUixRQUFROztlQUFSLFFBQVE7QUFFWixZQUFRO2FBQUEsa0JBQUMsQ0FBQyxFQUFDO0FBQ1QsWUFBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0csWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO09BQzlFOztBQUVELFVBQU07YUFBQSxrQkFBRTs7QUFFTixZQUFJLEtBQUssR0FBQztBQUNSLGVBQUssRUFBQztBQUNKLDJCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFDLElBQUk7V0FDekU7QUFDRCxtQkFBUyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFFLEVBQUU7U0FDbkMsQ0FBQzs7QUFFRixZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQSxBQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUM7QUFDL0csaUJBQ0U7O3lCQUFRLEtBQUssSUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7V0FBTSxDQUM3RTtTQUNGLE1BQUk7QUFDSCxpQkFDRTs7WUFBUSxLQUFLO1lBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1dBQU0sQ0FDMUM7U0FDRjtPQUNGOzs7O1NBNUJHLFFBQVE7R0FBUyxLQUFLLENBQUMsU0FBUzs7QUE4QnRDLFFBQVEsQ0FBQyxTQUFTLEdBQUc7QUFDbkIsWUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxnQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNwQyxZQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLGFBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7Q0FDbEMsQ0FBQztBQUNGLFFBQVEsQ0FBQyxZQUFZLEdBQUc7QUFDdEIsWUFBVSxFQUFFLFNBQVM7Q0FDdEIsQ0FBQTtpQkFDYyxRQUFROzs7Ozs7O0lDMUNoQixTQUFTLDJCQUFNLGFBQWE7O0FBQ25DLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7O0FBRTlCLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDNUIsTUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQUUsV0FBTyxVQUFVLENBQUM7R0FBQSxBQUV6QyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7O0FBRXBDLE1BQUksQ0FBQyxHQUFHLENBQUMsVUFBUyxHQUFHLEVBQUU7QUFDckIsUUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFTLEdBQUcsRUFBRTtBQUNyQixVQUFJLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQyxnQkFBVSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDL0IsQ0FBQyxDQUFDOztBQUVILGNBQVUsSUFBSSxJQUFJLENBQUM7R0FDcEIsQ0FBQyxDQUFDOztBQUVILFNBQU8sVUFBVSxDQUFDO0NBQ25CLENBQUM7O0FBRUYsSUFBSSxTQUFTLEdBQUcsbUJBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDN0MsTUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QyxRQUFNLENBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSwwQkFBMEIsRUFBQyxDQUFDLEVBQUUsUUFBUSxJQUFJLGlCQUFpQixDQUFFLENBQUM7Q0FDckcsQ0FBQzs7aUJBRWEsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1p4QixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUssQ0FBQSxVQUFTLElBQUksRUFBRTtBQUN0QyxhQUFZLENBQUM7O0FBRWIsS0FBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDakYsU0FBTztFQUNQO0FBQ0QsS0FDRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVE7O0FBQUE7S0FFbkIsT0FBTyxHQUFHLG1CQUFXO0FBQ3RCLFNBQU8sSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztFQUMxQztLQUNDLFNBQVMsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQztLQUNwRSxpQkFBaUIsSUFBRyxVQUFVLElBQUksU0FBUyxDQUFBO0tBQzNDLEtBQUssR0FBRyxlQUFTLElBQUksRUFBRTtBQUN4QixNQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQyxNQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFCO0tBQ0MsU0FBUyxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0tBQ2hFLGFBQWEsR0FBRyxJQUFJLENBQUMsdUJBQXVCO0tBQzVDLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxvQkFBb0I7S0FDN0UsYUFBYSxHQUFHLHVCQUFTLEVBQUUsRUFBRTtBQUM5QixHQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFFLFlBQVc7QUFDakQsU0FBTSxFQUFFLENBQUM7R0FDVCxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ047S0FDQyxtQkFBbUIsR0FBRywwQkFBMEI7S0FDaEQsV0FBVyxHQUFHLENBQUM7Ozs7QUFBQTtLQUlmLHdCQUF3QixHQUFHLEdBQUc7QUFBQTtLQUM5QixNQUFNLEdBQUcsZ0JBQVMsSUFBSSxFQUFFO0FBQ3pCLE1BQUksT0FBTyxHQUFHLG1CQUFXO0FBQ3hCLE9BQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFOztBQUM3QixXQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsTUFBTTs7QUFDTixRQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDZDtHQUNELENBQUM7QUFDRixNQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDaEIsVUFBTyxFQUFFLENBQUM7R0FDVixNQUFNO0FBQ04sYUFBVSxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0dBQzlDO0VBQ0Q7S0FDQyxRQUFRLEdBQUcsa0JBQVMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7QUFDcEQsYUFBVyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckMsTUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUMzQixTQUFPLENBQUMsRUFBRSxFQUFFO0FBQ1gsT0FBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxPQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUNuQyxRQUFJO0FBQ0gsYUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO0tBQzdDLENBQUMsT0FBTyxFQUFFLEVBQUU7QUFDWixrQkFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCO0lBQ0Q7R0FDRDtFQUNEO0tBQ0MsUUFBUSxHQUFHLGtCQUFTLElBQUksRUFBRTs7QUFFM0IsTUFBSSw0RUFBNEUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2pHLFVBQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7R0FDckQ7QUFDRCxTQUFPLElBQUksQ0FBQztFQUNaO0tBQ0MsU0FBUyxHQUFHLG1CQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQy9DLE1BQUksQ0FBQyxXQUFXLEVBQUU7QUFDakIsT0FBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUN0Qjs7QUFFRCxNQUNHLFNBQVMsR0FBRyxJQUFJO01BQ2hCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSTtNQUNoQixZQUFZLEdBQUcsS0FBSztNQUNwQixVQUFVO01BQ1YsV0FBVztNQUNYLFlBQVksR0FBRyx3QkFBVztBQUMzQixXQUFRLENBQUMsU0FBUyxFQUFFLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQ3JFOztBQUFBO01BRUMsUUFBUSxHQUFHLG9CQUFXO0FBQ3ZCLE9BQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUU7O0FBRWxFLFFBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7QUFDOUIsVUFBTSxDQUFDLFNBQVMsR0FBRyxZQUFXO0FBQzdCLFNBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDL0IsZ0JBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLGNBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxpQkFBWSxFQUFFLENBQUM7S0FDZixDQUFDO0FBQ0YsVUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixhQUFTLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDdEMsV0FBTztJQUNQOztBQUVELE9BQUksWUFBWSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2hDLGNBQVUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0M7QUFDRCxPQUFJLFdBQVcsRUFBRTtBQUNoQixlQUFXLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFDdkMsTUFBTTtBQUNOLFFBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLFFBQUksT0FBTyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUU7O0FBRXRDLFNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQTtLQUMvQjtJQUNEO0FBQ0QsWUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3RDLGVBQVksRUFBRSxDQUFDO0FBQ2YsU0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0dBQ25CO01BQ0MsU0FBUyxHQUFHLG1CQUFTLElBQUksRUFBRTtBQUM1QixVQUFPLFlBQVc7QUFDakIsUUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDNUMsWUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNuQztJQUNELENBQUM7R0FDRjtNQUNDLG1CQUFtQixHQUFHLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDO01BQ3RELEtBQUssQ0FDUDtBQUNELFdBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxNQUFJLENBQUMsSUFBSSxFQUFFO0FBQ1YsT0FBSSxHQUFHLFVBQVUsQ0FBQztHQUNsQjtBQUNELE1BQUksaUJBQWlCLEVBQUU7QUFDdEIsYUFBVSxHQUFHLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxZQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUM1QixZQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMxQixhQUFVLENBQUMsWUFBVztBQUNyQixTQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakIsZ0JBQVksRUFBRSxDQUFDO0FBQ2YsVUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25CLGFBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDLENBQUM7QUFDSCxVQUFPO0dBQ1A7Ozs7OztBQU1ELE1BQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLG1CQUFtQixFQUFFO0FBQ3hELFFBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDdkMsT0FBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDM0QsZUFBWSxHQUFHLElBQUksQ0FBQztHQUNwQjs7OztBQUlELE1BQUksYUFBYSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDekMsT0FBSSxJQUFJLFdBQVcsQ0FBQztHQUNwQjtBQUNELE1BQUksSUFBSSxLQUFLLG1CQUFtQixJQUFJLGFBQWEsRUFBRTtBQUNsRCxjQUFXLEdBQUcsSUFBSSxDQUFDO0dBQ25CO0FBQ0QsTUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNaLFdBQVEsRUFBRSxDQUFDO0FBQ1gsVUFBTztHQUNQO0FBQ0QsYUFBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDekIsUUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxVQUFTLEVBQUUsRUFBRTtBQUMxRCxLQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFVBQVMsR0FBRyxFQUFFO0FBQzFFLFFBQUksSUFBSSxHQUFHLGdCQUFXO0FBQ3JCLFFBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxVQUFTLElBQUksRUFBRTtBQUMvRCxVQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFTLE1BQU0sRUFBRTtBQUM1QyxhQUFNLENBQUMsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQ25DLG1CQUFXLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekMsaUJBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxnQkFBUSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsY0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2IsQ0FBQztBQUNGLGFBQU0sQ0FBQyxPQUFPLEdBQUcsWUFBVztBQUMzQixZQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ3pCLFlBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsU0FBUyxFQUFFO0FBQ25DLGlCQUFRLEVBQUUsQ0FBQztTQUNYO1FBQ0QsQ0FBQztBQUNGLHdDQUFpQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBUyxLQUFLLEVBQUU7QUFDcEUsY0FBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztBQUNILGFBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkIsZ0JBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBVztBQUM1QixjQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDZixpQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3RDLENBQUM7QUFDRixnQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO09BQ3pDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztNQUNkLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNkLENBQUM7QUFDRixPQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsRUFBRSxTQUFTLENBQUMsVUFBUyxJQUFJLEVBQUU7O0FBRTNELFNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNkLFNBQUksRUFBRSxDQUFDO0tBQ1AsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxVQUFTLEVBQUUsRUFBRTtBQUMxQixTQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRTtBQUNqQyxVQUFJLEVBQUUsQ0FBQztNQUNQLE1BQU07QUFDTixjQUFRLEVBQUUsQ0FBQztNQUNYO0tBQ0QsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7R0FDZCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7RUFDZDtLQUNDLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUztLQUM5QixNQUFNLEdBQUcsZ0JBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDNUMsU0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0VBQzlDLENBQ0Q7O0FBRUQsS0FBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFO0FBQ25FLFNBQU8sVUFBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN4QyxPQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2pCLFFBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEI7QUFDRCxVQUFPLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDO0dBQzVELENBQUM7RUFDRjs7QUFFRCxTQUFRLENBQUMsS0FBSyxHQUFHLFlBQVc7QUFDM0IsTUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFdBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxVQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQzdCLENBQUM7QUFDRixTQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLFNBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLFNBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDOztBQUVsQixTQUFRLENBQUMsS0FBSyxHQUNkLFFBQVEsQ0FBQyxZQUFZLEdBQ3JCLFFBQVEsQ0FBQyxVQUFVLEdBQ25CLFFBQVEsQ0FBQyxPQUFPLEdBQ2hCLFFBQVEsQ0FBQyxPQUFPLEdBQ2hCLFFBQVEsQ0FBQyxPQUFPLEdBQ2hCLFFBQVEsQ0FBQyxVQUFVLEdBQ2xCLElBQUksQ0FBQzs7QUFFTixRQUFPLE1BQU0sQ0FBQztDQUNkLENBQUEsQ0FDRyxPQUFPLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxJQUNuQyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxJQUN2QyxVQUFLLE9BQU8sQ0FDZixBQUFDLENBQUM7Ozs7O0FBS0gsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtBQUNuRCxPQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDaEMsTUFBTSxJQUFJLEFBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQU0sTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLEFBQUMsRUFBRTtBQUNyRixPQUFNLENBQUMsRUFBRSxFQUFFLFlBQVc7QUFDcEIsU0FBTyxNQUFNLENBQUM7RUFDZixDQUFDLENBQUM7Q0FDSjs7Ozs7Ozs7Ozs7Ozs7O0lDN1FNLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUUzQixVQUFVO0FBRUgsV0FGUCxVQUFVLENBRUYsS0FBSyxFQUFFOzBCQUZmLFVBQVU7O0FBR2QsK0JBSEksVUFBVSw2Q0FHUixLQUFLLEVBQUU7R0FDYjs7WUFKSSxVQUFVOztlQUFWLFVBQVU7QUFNZCxnQkFBWTthQUFBLHNCQUFDLENBQUMsRUFBQztBQUNiLFNBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNuQixZQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO09BQzdDOztBQUVELFVBQU07YUFBQSxrQkFBRTtBQUNOLFlBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBQyxJQUFJLENBQUM7QUFDeEQsZUFDSTs7WUFBSSxTQUFTLEVBQUUsT0FBTyxBQUFDO1VBQUM7O2NBQUcsSUFBSSxFQUFDLEdBQUcsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7V0FBSztTQUFLLENBQzVHO09BQ0Y7Ozs7U0FoQkcsVUFBVTtHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWtCeEMsVUFBVSxDQUFDLFNBQVMsR0FBRztBQUNyQixZQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7Q0FDN0IsQ0FBQzs7aUJBRWEsVUFBVTs7Ozs7Ozs7Ozs7Ozs7O0lDMUJsQixLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLFVBQVUsMkJBQU0saUJBQWlCOztJQUNqQyxLQUFLLDJCQUFNLFVBQVU7O0lBRXRCLGNBQWM7QUFFUCxXQUZQLGNBQWMsQ0FFTixLQUFLLEVBQUU7MEJBRmYsY0FBYzs7QUFHaEIsK0JBSEUsY0FBYyw2Q0FHVixLQUFLLEVBQUU7QUFDYixRQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsaUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7QUFDaEMsaUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7S0FDcEMsQ0FBQztHQUNIOztZQVJHLGNBQWM7O2VBQWQsY0FBYztBQVVsQixjQUFVO2FBQUEsb0JBQUMsSUFBSSxFQUFFO0FBQ2YsWUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtBQUMxQixjQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFLE1BQU0sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtBQUNsQyxjQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDcEcsTUFBTSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO0FBQ2xDLGNBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3hCLE1BQU0sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtBQUNuQyxjQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1YsTUFBTTtBQUNMLGNBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7O0FBRUQsWUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7QUFDbEMsY0FBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQ25DLGNBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JEO09BQ0Y7O0FBRUQsNkJBQXlCO2FBQUEsbUNBQUMsU0FBUyxFQUFFO0FBQ25DLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDckIsY0FBSSxTQUFTLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7QUFDL0MsZ0JBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix5QkFBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRO0FBQy9CLHlCQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFDbkMsQ0FBQyxDQUFDO1dBQ0o7U0FDRjtPQUNGOztBQUdELHFCQUFpQjthQUFBLDJCQUFDLENBQUMsRUFBRTtBQUNuQixTQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7O0FBRW5CLFlBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELFlBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO0FBQ3hDLGNBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUM5RCxjQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRTNDLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix1QkFBVyxFQUFFLFVBQVU7QUFDdkIsdUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7V0FDcEMsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDM0Q7T0FDRjs7QUFFRCxVQUFNO2FBQUEsa0JBQUc7OztBQUNQLFlBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFFLFlBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMvQixZQUFJLGFBQWEsR0FBRztBQUNsQixtQkFBUyxFQUFFLEtBQUs7QUFBQSxTQUNqQixDQUFBOztBQUVELFlBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFdBQVcsRUFBSztBQUNwRSxpQkFDRTs7Y0FBSSxHQUFHLEVBQUUsV0FBVyxBQUFDLEVBQUMsSUFBSSxFQUFDLGNBQWM7WUFDdkM7O2dCQUFHLElBQUksRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLE9BQU8sRUFBRSxNQUFLLGlCQUFpQixDQUFDLElBQUksT0FBTSxBQUFDO2NBQUUsV0FBVzthQUFLO1dBQ3BHLENBQ0w7U0FDSCxDQUFDLENBQUM7O0FBRUgsZUFDRTs7WUFBSyxTQUFTLEVBQUMsS0FBSztVQUNsQjs7Y0FBSyxTQUFTLEVBQUMsVUFBVTtZQUN2Qjs7Z0JBQUssU0FBUyxFQUFDLFVBQVU7Y0FDdkI7O2tCQUFRLFNBQVMsRUFBQyxpQ0FBaUMsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsZUFBWSxVQUFVO0FBQ2xHLG1DQUFjLE1BQU07Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFDdkIsOEJBQU0sU0FBUyxFQUFDLE9BQU8sR0FBRTtlQUNsQjtjQUNUOztrQkFBSSxTQUFTLEVBQUMsZUFBZSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsbUJBQWdCLGNBQWM7Z0JBQ3JFLGVBQWU7ZUFDYjthQUNEO1dBQ0Y7VUFDTjs7Y0FBSyxTQUFTLEVBQUMsVUFBVTtZQUN2Qjs7Z0JBQUksU0FBUyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUUsYUFBYSxBQUFDO2NBQzdDLFFBQVE7YUFDTjtXQUNEO1NBQ0YsQ0FDUDtPQUNGOztBQUVELFlBQVE7YUFBQSxvQkFBRztBQUNULFlBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM1QixlQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDL0IsY0FBSSxRQUFRLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0FBQy9DLGlCQUNFO0FBQUMsc0JBQVU7Y0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxBQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksQUFBQztZQUFFLElBQUk7V0FBYyxDQUNyRztTQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDVjs7QUFFRCxZQUFRO2FBQUEsb0JBQUc7QUFDVCxZQUFJLFNBQVMsR0FBRyxDQUFDO1lBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRTdDLGlCQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVGLGVBQU8sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDOztBQUVwRCxZQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzdCLGlCQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUMxQixtQkFBUyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDckQ7QUFDRCxZQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLGFBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsY0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekI7QUFDRCxhQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QixhQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QixlQUFPLEtBQUssQ0FBQztPQUNkOztBQUVELGtCQUFjO2FBQUEsMEJBQUc7QUFDZixlQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO09BQy9COztBQUVELGtCQUFjO2FBQUEsMEJBQUc7QUFDZixlQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO09BQy9COzs7O1NBbklHLGNBQWM7R0FBUyxLQUFLLENBQUMsU0FBUzs7QUFxSTVDLGNBQWMsQ0FBQyxTQUFTLEdBQUc7QUFDekIsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxhQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ25DLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsWUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxpQkFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUN0QyxnQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUN0QyxRQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQzdCLENBQUM7O0FBRUYsY0FBYyxDQUFDLFlBQVksR0FBRztBQUM1QixhQUFXLEVBQUUsS0FBSyxDQUFDLGFBQWE7Q0FDakMsQ0FBQzs7aUJBRWEsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3ZKdEIsS0FBSywyQkFBTSxVQUFVOztBQUM1QixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDOztBQUVsRCxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDOUMsT0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM1QixLQUFHLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBSztBQUNqQixRQUFJLFFBQVEsRUFBRTtBQUNaLGFBQU8sUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUIsTUFBTTtBQUNMLFVBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7QUFDNUIsZUFBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFJLEFBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBSSxDQUFDLEdBQUcsQ0FBQyxBQUFDLENBQUM7T0FDbkYsTUFBTTtBQUNMLGVBQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBSSxBQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxDQUFDO09BQ25GO0tBQ0Y7R0FDRixDQUFDLENBQUM7O0FBRUgsU0FBTyxHQUFHLENBQUM7Q0FDWjs7SUFFWSxZQUFZLFdBQVosWUFBWTtBQUNaLFdBREEsWUFBWSxDQUNYLElBQUksRUFBRTswQkFEUCxZQUFZOztBQUVyQiwrQkFGUyxZQUFZLDZDQUVmLElBQUksRUFBRTtBQUNaLFFBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0dBQ2xCOztZQUpVLFlBQVk7O2VBQVosWUFBWTtBQU12QixXQUFPO2FBQUEsaUJBQUMsSUFBSSxFQUFFO0FBQ1osWUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDM0I7O0FBRUQsU0FBSzthQUFBLGlCQUFHO0FBQ04sWUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7T0FDbEI7O0FBRUQsV0FBTzthQUFBLG1CQUFHO0FBQ1IsZUFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO09BQ2xCOzs7O1NBaEJVLFlBQVk7R0FBUyxZQUFZOztJQW1CakMsY0FBYyxXQUFkLGNBQWM7QUFFZCxXQUZBLGNBQWMsQ0FFYixJQUFJLEVBQUU7MEJBRlAsY0FBYzs7QUFHdkIsUUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsUUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUM5QixRQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN4QixRQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUN0QixRQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQixRQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNsQixRQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztHQUNyQjs7ZUFiVSxjQUFjO0FBZXpCLFlBQVE7YUFBQSxrQkFBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtBQUMxRCxZQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUN6QixZQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztBQUMzQyxZQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztPQUN0Qjs7QUFFRCxXQUFPO2FBQUEsaUJBQUMsSUFBSSxFQUFFO0FBQ1osWUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsWUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLGNBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsY0FBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1RDtBQUNELFlBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNoQixjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdkQ7T0FDRjs7QUFFRCxxQkFBaUI7YUFBQSwyQkFBQyxlQUFlLEVBQUU7QUFDakMsWUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7T0FDakM7O0FBRUQsc0JBQWtCO2FBQUEsOEJBQUc7QUFDbkIsZUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDO09BQ3RCOztBQUVELHlCQUFxQjthQUFBLGlDQUFHO0FBQ3RCLFlBQUksSUFBSSxDQUFDLFVBQVU7QUFBRSxpQkFBTyxJQUFJLENBQUMsWUFBWSxDQUFDOztBQUN6QyxpQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUE7T0FDdkI7O0FBRUQsUUFBSTthQUFBLGNBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtBQUNyQixZQUFJLENBQUMsT0FBTyxHQUFHO0FBQ2IsZUFBSyxFQUFFLEtBQUs7QUFDWixtQkFBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQzs7QUFFRixZQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3RELFlBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqRCwwQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzs7QUFFM0UsZUFBTyxJQUFJLENBQUM7T0FDYjs7QUFFRCxRQUFJOzs7Ozs7Ozs7OztTQUFBLFVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN0QixZQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUMxQyxZQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBLEFBQUMsQ0FBQztBQUMxRCxlQUFPLElBQUksQ0FBQztPQUNiOztBQUVELFFBQUk7YUFBQSxjQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO0FBQ2hDLFlBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDdEQsWUFBSSxXQUFXLFlBQUEsQ0FBQztBQUNoQixZQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQzFCLDRCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNqRCxxQkFBVyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzRCxNQUFNO0FBQ0wsNEJBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3RFLHFCQUFXLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hGO0FBQ0QsWUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQy9CLGdCQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssV0FBVyxFQUFFO0FBQ3RDLGlCQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUN4QztXQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDVjtBQUNELGVBQU8sSUFBSSxDQUFDO09BQ2I7O0FBRUQsT0FBRzthQUFBLGFBQUMsTUFBTSxFQUFFO0FBQ1YsWUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN2QyxnQkFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLHdCQUF3QixDQUFDO1NBQ2hEO0FBQ0QsWUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUN0RCwwQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDeEMsY0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDM0Qsa0JBQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztXQUN2RTtTQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRVQsMEJBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLFlBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNuQixjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtPQUNGOztBQUVELFVBQU07YUFBQSxnQkFBQyxNQUFNLEVBQUU7QUFDYixZQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3RELFlBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUNwRCxpQkFBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNqRCxFQUFFLElBQUksQ0FBQyxDQUFDOztBQUVULFlBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNuQixjQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQzFDLG1CQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1dBQ2pELEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDVCxjQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztTQUM1QixNQUFNO0FBQ0wsY0FBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7U0FDcEI7T0FDRjs7QUFFRCxVQUFNO2FBQUEsZ0JBQUMsU0FBUyxFQUFFO0FBQ2hCLFlBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3RDLGNBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLGNBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCLE1BQU07QUFDTCxjQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixjQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQ2xELGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsaUJBQUssSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFO0FBQ3pCLGtCQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDakYscUJBQUssR0FBRyxLQUFLLENBQUM7QUFDZCxzQkFBTTtlQUNQO2FBQ0Y7QUFDRCxtQkFBTyxLQUFLLENBQUM7V0FDZCxDQUFDLENBQUM7QUFDSCxjQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtPQUNGOztBQUVELFVBQU07YUFBQSxnQkFBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUU7QUFDcEMsWUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQzVCLGNBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLGNBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCLE1BQU07QUFDTCxjQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUM3QixjQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDekIsY0FBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUNsRCxnQkFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDOztBQUVsQixnQkFBSSxpQkFBaUIsRUFBRTtBQUNyQiw2QkFBZSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekMsTUFBTTtBQUNMLDZCQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xDOztBQUVELGlCQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtBQUNuQixrQkFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDWiwrQkFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFTLElBQUksRUFBRTtBQUNyQyxzQkFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3hFLHlCQUFLLEdBQUcsSUFBSSxDQUFDO21CQUNkO2lCQUNGLENBQUMsQ0FBQztBQUNILG9CQUFJLEtBQUssRUFBRSxNQUFNO2VBQ2xCO2FBQ0Y7QUFDRCxtQkFBTyxLQUFLLENBQUM7V0FDZCxDQUFDLENBQUM7QUFDSCxjQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtPQUNGOztBQUVELDZCQUF5QjthQUFBLHFDQUFHO0FBQzFCLFlBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3pDLGVBQU8sS0FBSyxDQUFDO09BQ2Q7O0FBRUQsT0FBRzthQUFBLGVBQUc7QUFDSixZQUFJLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs7QUFFekMsWUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBRSxpQkFBTyxLQUFLLENBQUM7U0FBQSxBQUVwQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDekMsaUJBQU8sS0FBSyxDQUFDO1NBQ2QsTUFBTTtBQUNMLGNBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixlQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzRCxrQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixnQkFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUMsTUFBTTtXQUNqQztBQUNELGlCQUFPLE1BQU0sQ0FBQztTQUNmO09BQ0Y7O0FBRUQsZUFBVzthQUFBLHVCQUFHO0FBQ1osZUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDO09BQ3RCOztBQUVELGNBQVU7YUFBQSxzQkFBRztBQUNYLGVBQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO09BQzVDOztBQUVELGlCQUFhO2FBQUEseUJBQUc7QUFDZCxlQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7T0FDOUQ7O0FBRUQsZ0JBQVk7YUFBQSx3QkFBRztBQUNiLGVBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDbEMsaUJBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQixFQUFFLElBQUksQ0FBQyxDQUFDO09BQ1Y7Ozs7U0FsTlUsY0FBYzs7O0FBcU4zQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7SUM1UE0sS0FBSywyQkFBTSxPQUFPOztJQUNsQixRQUFRLDJCQUFNLFlBQVk7O0lBQzFCLEtBQUssMkJBQU0sVUFBVTs7SUFDckIsTUFBTSwyQkFBTSxXQUFXOztJQUN2QixRQUFRLDJCQUFNLG9CQUFvQjs7SUFFbkMsT0FBTztBQUVBLFdBRlAsT0FBTyxDQUVDLEtBQUssRUFBRTswQkFGZixPQUFPOztBQUdYLCtCQUhJLE9BQU8sNkNBR0wsS0FBSyxFQUFFO0FBQ1gsUUFBSSxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUM7QUFDckIsUUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLHdCQUFrQixFQUFFLElBQUk7QUFDeEIsbUJBQWEsRUFBQyxJQUFJO0FBQ2xCLGlCQUFXLEVBQUMsS0FBSztLQUNsQixDQUFDO0dBQ0g7O1lBVkcsT0FBTzs7ZUFBUCxPQUFPO0FBV1gsd0JBQW9CO2FBQUEsZ0NBQUU7QUFDcEIsWUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO09BQ3JCOztBQUNELGdCQUFZOzs7Ozs7Ozs7OztTQUFBLFlBQUc7QUFDYixZQUFHLElBQUksQ0FBQyxhQUFhLEVBQUM7QUFDcEIsc0JBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDakMsY0FBSSxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUM7U0FDdEI7T0FDRjs7QUFFRCxxQkFBaUI7YUFBQSw2QkFBRTtBQUNqQixZQUFJLEVBQUUsR0FBQyxJQUFJO1lBQUMsTUFBTSxHQUFHLEVBQUU7WUFBQyxPQUFPLEdBQUMsSUFBSTtZQUFDLFNBQVM7WUFBQyxPQUFPO1lBQUMsYUFBYSxHQUFDLEVBQUUsQ0FBQztBQUN4RSxZQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBUyxNQUFNLEVBQUUsQ0FBQyxFQUFDO0FBQzVDLGNBQUcsTUFBTSxDQUFDLFNBQVMsRUFBQzs7QUFDbEIscUJBQVMsR0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLElBQUUsVUFBVSxHQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRSxZQUFZLEdBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQUFBQyxDQUFDO1dBQ3RHLE1BQUk7QUFDSCxnQkFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLHFCQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzs7QUFFdEIsZ0JBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxVQUFVLEVBQUM7QUFDdkQsa0JBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLHVCQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlDOztBQUVELGdCQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUM7O0FBQzVDLHFCQUFPLEdBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDN0Msa0JBQUcsT0FBTyxLQUFHLElBQUksRUFBQztBQUNoQix1QkFBTyxHQUFDLEtBQUssQ0FBQztBQUNkLDZCQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFDLE9BQU8sQ0FBQztlQUNyQzthQUNGO1dBQ0Y7O0FBRUQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUUsU0FBUyxDQUFDO1NBQ2pDLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRVQsWUFBRyxPQUFPLEVBQUM7QUFDVCxpQkFBTyxNQUFNLENBQUM7U0FDZixNQUFJO0FBQ0gsWUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDOztBQUVsQixjQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxXQUFXLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQzs7QUFFOUQsWUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDOztBQUVuRyxZQUFFLENBQUMsYUFBYSxHQUFDLFVBQVUsQ0FBQyxZQUFVO0FBQUMsY0FBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1dBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQztBQUMvRSxpQkFBTyxJQUFJLENBQUM7U0FDYjtPQUNGOztBQUVELHNCQUFrQjthQUFBLDRCQUFDLENBQUMsRUFBQztBQUNuQixZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUN0QyxZQUFHLENBQUMsTUFBTSxFQUFDOztBQUNULGlCQUFPO1NBQ1I7QUFDRCxZQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QyxZQUFHLEdBQUcsRUFBRTtBQUNOLGNBQUksRUFBRSxHQUFDLElBQUksQ0FBQztBQUNaLFlBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDOUQsWUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDOztBQUVsQixZQUFFLENBQUMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxhQUFhLEVBQUMsK0NBQStDLEVBQUMsQ0FBQyxDQUFDOztBQUU5RixZQUFFLENBQUMsYUFBYSxHQUFDLFVBQVUsQ0FBQyxZQUFVO0FBQUMsY0FBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1dBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQztTQUNoRixNQUFLOztBQUVKLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix5QkFBYSxFQUFDLElBQUk7QUFDbEIsdUJBQVcsRUFBQyxLQUFLO1dBQ2xCLENBQUMsQ0FBQzs7QUFFSCxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUV4QjtPQUNGOztBQUVELHlCQUFxQjthQUFBLCtCQUFDLENBQUMsRUFBQztBQUN0QixZQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO09BQ3hCOztBQUVELGtCQUFjO2FBQUEsd0JBQUMsQ0FBQyxFQUFDO0FBQ2YsWUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7T0FDMUM7O0FBRUQsZUFBVzthQUFBLHFCQUFDLENBQUMsRUFBQztBQUNaLFlBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7T0FDNUM7O0FBRUQsbUJBQWU7YUFBQSwyQkFBRztBQUNoQixZQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO09BQzFCOztBQUVELFVBQU07YUFBQSxrQkFBRTtBQUNOLFlBQUksY0FBYyxHQUFHLG1CQUFtQixHQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDOUQsWUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQ2pDOztZQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxBQUFDLEVBQUMsU0FBUyxFQUFDLGNBQWMsRUFBQyxlQUFZLE9BQU8sRUFBQyxlQUFhLEdBQUcsR0FBQyxjQUFjLEFBQUM7VUFDcEksMkJBQUcsU0FBUyxFQUFDLDBCQUEwQixHQUFLOztTQUFhLEdBQUMsSUFBSSxDQUFDOztBQUV2RSxZQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FDakM7O1lBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsaUJBQWlCLEVBQUMsZUFBWSxTQUFTLEVBQUMsa0JBQWUsT0FBTyxFQUFDLEtBQUssRUFBQyxtQkFBbUI7QUFDdEgsbUJBQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO1VBQy9DLDJCQUFHLFNBQVMsRUFBQywyQkFBMkIsR0FBSzs7U0FDdEMsR0FBQyxJQUFJLENBQUM7QUFDckIsWUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQzNDLCtCQUFPLElBQUksRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBQyxRQUFRLEFBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsR0FBRSxHQUFDLElBQUksQ0FBQztBQUNuSixZQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLEdBQUMsSUFBSSxDQUFDO0FBQ25GLFlBQUksWUFBWSxHQUFHO0FBQ2pCLGlCQUFPLEVBQUUsTUFBTTtBQUNmLHNCQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDOztBQUVGLFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUNwQzs7WUFBUSxJQUFJLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxpQkFBaUIsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7VUFDdkYsMkJBQUcsU0FBUyxFQUFDLDRCQUE0QixHQUFLOztTQUF1QixHQUFHLElBQUksQ0FBQzs7QUFFdkYsZUFDRTs7O1VBQ0U7O2NBQUssU0FBUyxFQUFDLHdCQUF3QixFQUFDLElBQUksRUFBQyxPQUFPLEVBQUMsY0FBVyxLQUFLO1lBQ2xFLFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztXQUNOO1VBQ0wsZUFBZTtVQUNoQixvQkFBQyxRQUFRLElBQUMsR0FBRyxFQUFDLFVBQVUsR0FBWTtVQUNuQyxLQUFLO1NBQ0YsQ0FDUDtPQUNGOztBQUVELHdCQUFvQjthQUFBLDhCQUFDLGNBQWMsRUFBQztBQUNsQyxZQUFJLGFBQWEsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBRSxFQUFFLENBQUM7QUFDL0MsWUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVMsTUFBTSxFQUFFLENBQUMsRUFBQztBQUN6RCxjQUFJLFFBQVEsR0FBQyxNQUFNLENBQUMsUUFBUTtjQUN4QixNQUFNLEdBQUMsTUFBTSxDQUFDLE1BQU07Y0FDcEIsSUFBSSxHQUFDLEVBQUMsR0FBRyxFQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxRQUFRLENBQUMsV0FBVyxHQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUMsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDOztBQUVoRyxjQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUM7O0FBQ2xCLG1CQUFPLElBQUksQ0FBQztXQUNiO0FBQ0QsY0FBSSxLQUFLLEdBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRTs7Y0FBTSxTQUFTLEVBQUMsc0JBQXNCO1lBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7V0FBUSxHQUFFLElBQUksQ0FBQzs7OztBQUl6SCxpQkFDRTs7Y0FBSyxTQUFTLEVBQUMsWUFBWSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxBQUFDO1lBQzVDOzs7Y0FBUSxNQUFNLENBQUMsSUFBSTthQUFTO1lBQzNCLE1BQU0sQ0FBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxFQUFFLENBQUM7WUFDL0IsS0FBSztXQUNGLENBQ047U0FDSCxDQUFDLENBQUM7QUFDSCxZQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRyxjQUFjLEVBQUM7QUFDekQsY0FBSSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtBQUFBLFNBQ3RELENBQUMsQ0FBQztBQUNILFlBQUksV0FBVyxHQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsVUFBVSxFQUFDO0FBQ2pELG9CQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztBQUNqQyxpQkFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQyxDQUFDO0FBQ0gsZUFDRTs7WUFBSyxHQUFHLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEFBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxRQUFRO1VBQ2xFOztjQUFLLFNBQVMsRUFBRSxXQUFXLEFBQUM7WUFDMUI7O2dCQUFLLFNBQVMsRUFBQyxlQUFlO2NBQzVCOztrQkFBSyxTQUFTLEVBQUMsY0FBYztnQkFDM0I7O29CQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxnQkFBYSxPQUFPLEVBQUMsY0FBVyxPQUFPO2tCQUFDOztzQkFBTSxlQUFZLE1BQU07O21CQUFlO2lCQUFTO2dCQUNoSTs7b0JBQUksU0FBUyxFQUFDLGFBQWE7O2lCQUFnQjtlQUN2QztjQUNOOztrQkFBSyxTQUFTLEVBQUMsWUFBWTtnQkFDekI7O29CQUFNLEdBQUcsRUFBQyxNQUFNO2tCQUNmLFVBQVU7aUJBQ0o7ZUFDSDtjQUNOOztrQkFBSyxTQUFTLEVBQUMsY0FBYztnQkFDM0I7O29CQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLGlCQUFpQixFQUFDLGdCQUFhLE9BQU87O2lCQUFlO2dCQUNyRjs7b0JBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDOztpQkFBYztlQUN0RzthQUNGO1dBQ0Y7U0FDRixDQUNQO09BQ0Y7Ozs7U0E5TEcsT0FBTztHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWdNckMsT0FBTyxDQUFDLFNBQVMsR0FBRztBQUNsQixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzlCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDL0IsY0FBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNsQyxjQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2xDLGNBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDbEMsU0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUM5QixtQkFBaUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07Q0FDMUMsQ0FBQzs7QUFFRixPQUFPLENBQUMsWUFBWSxHQUFHO0FBQ3JCLGNBQVksRUFBRSxLQUFLO0FBQ25CLGNBQVksRUFBRSxLQUFLO0FBQ25CLGNBQVksRUFBRSxLQUFLO0NBQ3BCLENBQUE7aUJBQ2MsT0FBTzs7Ozs7OztJQ3JOZixLQUFLLDJCQUFNLFNBQVM7O2lCQUNaOztBQUViLGlCQUFlLEVBQUEseUJBQUMsS0FBSyxFQUFFO0FBQ3JCLFFBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUMsUUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDekIsUUFBRyxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztBQUN4RCxRQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLFNBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQzFCLFNBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztBQUNoQyxRQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLFdBQU8sSUFBSSxDQUFDO0dBQ2I7O0NBRUY7Ozs7Ozs7SUNkTSxjQUFjLDJCQUFNLGtCQUFrQjs7SUFDdEMsaUJBQWlCLDJCQUFNLHFCQUFxQjs7SUFDM0MsWUFBWSxXQUFPLHdCQUF3QixFQUEzQyxZQUFZOztBQUVwQixJQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBQztBQUMvQixRQUFNLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUN2QyxRQUFNLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7Q0FDOUM7aUJBQ2M7QUFDYixnQkFBYyxFQUFkLGNBQWM7QUFDZCxtQkFBaUIsRUFBakIsaUJBQWlCO0FBQ2pCLGNBQVksRUFBWixZQUFZO0NBQ2IiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Qm9vdHN0cmFwVGFibGUsIFRhYmxlSGVhZGVyQ29sdW1ufSBmcm9tICdyZWFjdC1ib290c3RyYXAtdGFibGUnO1xuXG52YXIgcHJvZHVjdHMgPSBbXTtcblxuZnVuY3Rpb24gYWRkUHJvZHVjdHMocXVhbnRpdHkpIHtcbiAgdmFyIHN0YXJ0SWQgPSBwcm9kdWN0cy5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVhbnRpdHk7IGkrKykge1xuICAgIHZhciBpZCA9IHN0YXJ0SWQgKyBpO1xuICAgIHByb2R1Y3RzLnB1c2goe1xuICAgICAgaWQ6IGlkLFxuICAgICAgbmFtZTogXCJJdGVtIG5hbWUgXCIgKyBpZCxcbiAgICAgIHByaWNlOiAxMDAgKyBpXG4gICAgfSk7XG4gIH1cbn1cblxuYWRkUHJvZHVjdHMoNzApO1xuXG5mdW5jdGlvbiBvblJvd1NlbGVjdChyb3csIGlzU2VsZWN0ZWQpe1xuICBjb25zb2xlLmxvZyhyb3cpO1xuICBjb25zb2xlLmxvZyhcInNlbGVjdGVkOiBcIiArIGlzU2VsZWN0ZWQpXG59XG5cbmZ1bmN0aW9uIG9uU2VsZWN0QWxsKGlzU2VsZWN0ZWQsIGN1cnJlbnREaXNwbGF5QW5kU2VsZWN0ZWREYXRhKXtcbiAgY29uc29sZS5sb2coXCJpcyBzZWxlY3QgYWxsOiBcIiArIGlzU2VsZWN0ZWQpO1xuICBjb25zb2xlLmxvZyhcIkN1cnJlbnQgc2VsZWN0IGFuZCBkaXNwbGF5IGRhdGE6IFwiKTtcbiAgY29uc29sZS5sb2coY3VycmVudERpc3BsYXlBbmRTZWxlY3RlZERhdGEpO1xufVxuXG5mdW5jdGlvbiBvbkFmdGVyU2F2ZUNlbGwocm93LCBjZWxsTmFtZSwgY2VsbFZhbHVlKXtcbiAgY29uc29sZS5sb2coXCJTYXZlIGNlbGwgJ1wiK2NlbGxOYW1lK1wiJyB3aXRoIHZhbHVlICdcIitjZWxsVmFsdWUrXCInXCIpO1xuICBjb25zb2xlLmxvZyhcIlRodyB3aG9sZSByb3cgOlwiKTtcbiAgY29uc29sZS5sb2cocm93KTtcbn1cblxuZnVuY3Rpb24gb25BZnRlclRhYmxlQ29tcGxldGUoKXtcbiAgY29uc29sZS5sb2coJ1RhYmxlIHJlbmRlciBjb21wbGV0ZS4nKTtcbn1cblxuZnVuY3Rpb24gb25BZnRlckRlbGV0ZVJvdyhyb3dLZXlzKXtcbiAgY29uc29sZS5sb2coXCJvbkFmdGVyRGVsZXRlUm93XCIpO1xuICBjb25zb2xlLmxvZyhyb3dLZXlzKTtcbn1cblxuZnVuY3Rpb24gb25BZnRlckluc2VydFJvdyhyb3cpe1xuICBjb25zb2xlLmxvZyhcIm9uQWZ0ZXJJbnNlcnRSb3dcIik7XG4gIGNvbnNvbGUubG9nKHJvdyk7XG59XG5cbnZhciBzZWxlY3RSb3dQcm9wID0ge1xuICBtb2RlOiBcImNoZWNrYm94XCIsXG4gIGNsaWNrVG9TZWxlY3Q6IHRydWUsXG4gIC8vIGhpZGVTZWxlY3RDb2x1bW46IHRydWUsIC8veW91IGNhbiBoaWRlIHNlbGVjdCBjb2x1bW4sIGlmIHlvdSBlbmFibGUgY2xpY2tUb1NlbGVjdFxuICBzZWxlY3RlZDogW10sIC8vZGVmYXVsdCBzZWxlY3Rpb24gb24gdGFibGVcbiAgYmdDb2xvcjogXCJyZ2IoMjM4LCAxOTMsIDIxMylcIixcbiAgb25TZWxlY3Q6IG9uUm93U2VsZWN0LFxuICBvblNlbGVjdEFsbDogb25TZWxlY3RBbGxcbn07XG5cbnZhciBjZWxsRWRpdFByb3AgPSB7XG4gIG1vZGU6IFwiY2xpY2tcIixcbiAgYmx1clRvU2F2ZTogdHJ1ZSxcbiAgYWZ0ZXJTYXZlQ2VsbDogb25BZnRlclNhdmVDZWxsXG59O1xuXG52YXIgb3B0aW9ucyA9IHtcbiAgLy8gcGFnZTogMyxcbiAgLy8gc2l6ZVBlclBhZ2U6IDUsXG4gIC8vIHNpemVQZXJQYWdlTGlzdDogWzUsMTAsMTUsMjBdLFxuICAvLyBwYWdpbmF0aW9uU2l6ZTogNixcbiAgc29ydE5hbWU6IFwibmFtZVwiLCAgLy9kZWZhdWx0IHNvcnQgY29sdW1uIG5hbWVcbiAgc29ydE9yZGVyOiBcImRlc2NcIiwgIC8vZGVmYXVsdCBzb3J0IG9yZGVyXG4gIGFmdGVyVGFibGVDb21wbGV0ZTogb25BZnRlclRhYmxlQ29tcGxldGUsIC8vIEEgaG9vayBmb3IgYWZ0ZXIgdGFibGUgcmVuZGVyIGNvbXBsZXRlLlxuICBhZnRlckRlbGV0ZVJvdzogb25BZnRlckRlbGV0ZVJvdywgIC8vIEEgaG9vayBmb3IgYWZ0ZXIgZHJvcGluZyByb3dzLlxuICBhZnRlckluc2VydFJvdzogb25BZnRlckluc2VydFJvdyAgIC8vIEEgaG9vayBmb3IgYWZ0ZXIgaW5zZXJ0IHJvd3Ncbn07XG5cblxuZnVuY3Rpb24gcHJpY2VGb3JtYXR0ZXIoY2VsbCwgcm93KXtcbiAgcmV0dXJuICc8aSBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tdXNkXCI+PC9pPiAnICsgY2VsbDtcbn1cblxuUmVhY3QucmVuZGVyKFxuICA8Qm9vdHN0cmFwVGFibGUgZGF0YT17cHJvZHVjdHN9IHN0cmlwZWQ9e3RydWV9IGhvdmVyPXt0cnVlfSBwYWdpbmF0aW9uPXt0cnVlfSBzZWxlY3RSb3c9e3NlbGVjdFJvd1Byb3B9IGNlbGxFZGl0PXtjZWxsRWRpdFByb3B9XG4gICAgICAgICAgICAgICAgICBpbnNlcnRSb3c9e3RydWV9IGRlbGV0ZVJvdz17dHJ1ZX0gc2VhcmNoPXt0cnVlfSBjb2x1bW5GaWx0ZXI9e3RydWV9IG9wdGlvbnM9e29wdGlvbnN9PlxuICAgICAgPFRhYmxlSGVhZGVyQ29sdW1uIGRhdGFGaWVsZD1cImlkXCIgZGF0YUFsaWduPVwiY2VudGVyXCIgZGF0YVNvcnQ9e3RydWV9IGlzS2V5PXt0cnVlfT5Qcm9kdWN0IElEPC9UYWJsZUhlYWRlckNvbHVtbj5cbiAgICAgIDxUYWJsZUhlYWRlckNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgZGF0YVNvcnQ9e3RydWV9PlByb2R1Y3QgTmFtZTwvVGFibGVIZWFkZXJDb2x1bW4+XG4gICAgICA8VGFibGVIZWFkZXJDb2x1bW4gZGF0YUZpZWxkPVwicHJpY2VcIiBkYXRhRm9ybWF0PXtwcmljZUZvcm1hdHRlcn0gZWRpdGFibGU9e2ZhbHNlfT5Qcm9kdWN0IFByaWNlPC9UYWJsZUhlYWRlckNvbHVtbj5cbiAgPC9Cb290c3RyYXBUYWJsZT4sXG5cdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYmFzaWNcIilcbik7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICB0aGlzLl9ldmVudHMgPSB0aGlzLl9ldmVudHMgfHwge307XG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbkV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKG4pIHtcbiAgaWYgKCFpc051bWJlcihuKSB8fCBuIDwgMCB8fCBpc05hTihuKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGVyLCBoYW5kbGVyLCBsZW4sIGFyZ3MsIGksIGxpc3RlbmVycztcblxuICBpZiAoIXRoaXMuX2V2ZW50cylcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMuZXJyb3IgfHxcbiAgICAgICAgKGlzT2JqZWN0KHRoaXMuX2V2ZW50cy5lcnJvcikgJiYgIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKSB7XG4gICAgICBlciA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgICAgfVxuICAgICAgdGhyb3cgVHlwZUVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgXCJlcnJvclwiIGV2ZW50LicpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZXIgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzVW5kZWZpbmVkKGhhbmRsZXIpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gZmFzdCBjYXNlc1xuICAgICAgY2FzZSAxOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0sIGFyZ3VtZW50c1syXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gc2xvd2VyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuXG4gICAgbGlzdGVuZXJzID0gaGFuZGxlci5zbGljZSgpO1xuICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG07XG5cbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgaWYgKHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lcilcbiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgaXNGdW5jdGlvbihsaXN0ZW5lci5saXN0ZW5lcikgP1xuICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgZWxzZSBpZiAoaXNPYmplY3QodGhpcy5fZXZlbnRzW3R5cGVdKSlcbiAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuICBlbHNlXG4gICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdO1xuXG4gIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7XG4gICAgdmFyIG07XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9tYXhMaXN0ZW5lcnMpKSB7XG4gICAgICBtID0gdGhpcy5fbWF4TGlzdGVuZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfVxuXG4gICAgaWYgKG0gJiYgbSA+IDAgJiYgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCA+IG0pIHtcbiAgICAgIHRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArXG4gICAgICAgICAgICAgICAgICAgICdsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAnVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUudHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBpbiBJRSAxMFxuICAgICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIHZhciBmaXJlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGcoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBnKTtcblxuICAgIGlmICghZmlyZWQpIHtcbiAgICAgIGZpcmVkID0gdHJ1ZTtcbiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgZy5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICB0aGlzLm9uKHR5cGUsIGcpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWRcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXR1cm4gdGhpcztcblxuICBsaXN0ID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuICBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgcG9zaXRpb24gPSAtMTtcblxuICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHxcbiAgICAgIChpc0Z1bmN0aW9uKGxpc3QubGlzdGVuZXIpICYmIGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG5cbiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkge1xuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tID4gMDspIHtcbiAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fFxuICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbGlzdC5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdC5zcGxpY2UocG9zaXRpb24sIDEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGtleSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBmb3IgKGtleSBpbiB0aGlzLl9ldmVudHMpIHtcbiAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMSUZPIG9yZGVyXG4gICAgd2hpbGUgKGxpc3RlbmVycy5sZW5ndGgpXG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tsaXN0ZW5lcnMubGVuZ3RoIC0gMV0pO1xuICB9XG4gIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIHJldDtcbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXQgPSBbXTtcbiAgZWxzZSBpZiAoaXNGdW5jdGlvbih0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIHJldCA9IFt0aGlzLl9ldmVudHNbdHlwZV1dO1xuICBlbHNlXG4gICAgcmV0ID0gdGhpcy5fZXZlbnRzW3R5cGVdLnNsaWNlKCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgdmFyIHJldDtcbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1t0eXBlXSlcbiAgICByZXQgPSAwO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKGVtaXR0ZXIuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gMTtcbiAgZWxzZVxuICAgIHJldCA9IGVtaXR0ZXIuX2V2ZW50c1t0eXBlXS5sZW5ndGg7XG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IHRydWU7XG4gICAgdmFyIGN1cnJlbnRRdWV1ZTtcbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgdmFyIGkgPSAtMTtcbiAgICAgICAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgICAgICAgICAgY3VycmVudFF1ZXVlW2ldKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xufVxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICBxdWV1ZS5wdXNoKGZ1bik7XG4gICAgaWYgKCFkcmFpbmluZykge1xuICAgICAgICBzZXRUaW1lb3V0KGRyYWluUXVldWUsIDApO1xuICAgIH1cbn07XG5cbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG4vLyBUT0RPKHNodHlsbWFuKVxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiLyohXG4gIENvcHlyaWdodCAoYykgMjAxNSBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkge1xuXHRcdHZhciBjbGFzc2VzID0gJyc7XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3NlcyArPSAnICcgKyBhcmc7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRjbGFzc2VzICs9ICcgJyArIGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMgKz0gJyAnICsga2V5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLnN1YnN0cigxKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgQ1NTQ29yZVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCcuL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFRoZSBDU1NDb3JlIG1vZHVsZSBzcGVjaWZpZXMgdGhlIEFQSSAoYW5kIGltcGxlbWVudHMgbW9zdCBvZiB0aGUgbWV0aG9kcylcbiAqIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGRpc3BsYXkgb2YgZWxlbWVudHMgKHZpYSB0aGVpclxuICogQ1NTIGNsYXNzZXMgYW5kIHZpc2liaWxpdHkgb24gc2NyZWVuLiBJdCBpcyBhbiBBUEkgZm9jdXNlZCBvbiBtdXRhdGluZyB0aGVcbiAqIGRpc3BsYXkgYW5kIG5vdCByZWFkaW5nIGl0IGFzIG5vIGxvZ2ljYWwgc3RhdGUgc2hvdWxkIGJlIGVuY29kZWQgaW4gdGhlXG4gKiBkaXNwbGF5IG9mIGVsZW1lbnRzLlxuICovXG5cbnZhciBDU1NDb3JlID0ge1xuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBjbGFzcyBwYXNzZWQgaW4gdG8gdGhlIGVsZW1lbnQgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgaXQuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGNsYXNzIG9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWVcbiAgICogQHJldHVybiB7RE9NRWxlbWVudH0gdGhlIGVsZW1lbnQgcGFzc2VkIGluXG4gICAqL1xuICBhZGRDbGFzczogZnVuY3Rpb24gKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICAgICEhL1xccy8udGVzdChjbGFzc05hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NTU0NvcmUuYWRkQ2xhc3MgdGFrZXMgb25seSBhIHNpbmdsZSBjbGFzcyBuYW1lLiBcIiVzXCIgY29udGFpbnMgJyArICdtdWx0aXBsZSBjbGFzc2VzLicsIGNsYXNzTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgfSBlbHNlIGlmICghQ1NTQ29yZS5oYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUgKyAnICcgKyBjbGFzc05hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjbGFzcyBwYXNzZWQgaW4gZnJvbSB0aGUgZWxlbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBjbGFzcyBvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3NOYW1lXG4gICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IHRoZSBlbGVtZW50IHBhc3NlZCBpblxuICAgKi9cbiAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uIChlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgICAhIS9cXHMvLnRlc3QoY2xhc3NOYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDU1NDb3JlLnJlbW92ZUNsYXNzIHRha2VzIG9ubHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4gXCIlc1wiIGNvbnRhaW5zICcgKyAnbXVsdGlwbGUgY2xhc3Nlcy4nLCBjbGFzc05hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoQ1NTQ29yZS5oYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCcoXnxcXFxccyknICsgY2xhc3NOYW1lICsgJyg/OlxcXFxzfCQpJywgJ2cnKSwgJyQxJykucmVwbGFjZSgvXFxzKy9nLCAnICcpIC8vIG11bHRpcGxlIHNwYWNlcyB0byBvbmVcbiAgICAgICAgLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTsgLy8gdHJpbSB0aGUgZW5kc1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfSxcblxuICAvKipcbiAgICogSGVscGVyIHRvIGFkZCBvciByZW1vdmUgYSBjbGFzcyBmcm9tIGFuIGVsZW1lbnQgYmFzZWQgb24gYSBjb25kaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGNsYXNzIG9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWVcbiAgICogQHBhcmFtIHsqfSBib29sIGNvbmRpdGlvbiB0byB3aGV0aGVyIHRvIGFkZCBvciByZW1vdmUgdGhlIGNsYXNzXG4gICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IHRoZSBlbGVtZW50IHBhc3NlZCBpblxuICAgKi9cbiAgY29uZGl0aW9uQ2xhc3M6IGZ1bmN0aW9uIChlbGVtZW50LCBjbGFzc05hbWUsIGJvb2wpIHtcbiAgICByZXR1cm4gKGJvb2wgPyBDU1NDb3JlLmFkZENsYXNzIDogQ1NTQ29yZS5yZW1vdmVDbGFzcykoZWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgfSxcblxuICAvKipcbiAgICogVGVzdHMgd2hldGhlciB0aGUgZWxlbWVudCBoYXMgdGhlIGNsYXNzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHBhcmFtIHtET01Ob2RlfERPTVdpbmRvd30gZWxlbWVudCB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGNsYXNzIG9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgdGhlIENTUyBjbGFzc05hbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZWxlbWVudCBoYXMgdGhlIGNsYXNzLCBmYWxzZSBpZiBub3RcbiAgICovXG4gIGhhc0NsYXNzOiBmdW5jdGlvbiAoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gICAgISEvXFxzLy50ZXN0KGNsYXNzTmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ1NTLmhhc0NsYXNzIHRha2VzIG9ubHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7XG4gICAgICByZXR1cm4gISFjbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuICgnICcgKyBlbGVtZW50LmNsYXNzTmFtZSArICcgJykuaW5kZXhPZignICcgKyBjbGFzc05hbWUgKyAnICcpID4gLTE7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDU1NDb3JlO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5bVltcHpMMnhwWWk5RFUxTkRiM0psTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUVOVFUwTnZjbVZjYmlBcUlFQjBlWEJsWTJobFkydHpYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXBiblpoY21saGJuUW5LVHRjYmx4dUx5b3FYRzRnS2lCVWFHVWdRMU5UUTI5eVpTQnRiMlIxYkdVZ2MzQmxZMmxtYVdWeklIUm9aU0JCVUVrZ0tHRnVaQ0JwYlhCc1pXMWxiblJ6SUcxdmMzUWdiMllnZEdobElHMWxkR2h2WkhNcFhHNGdLaUIwYUdGMElITm9iM1ZzWkNCaVpTQjFjMlZrSUhkb1pXNGdaR1ZoYkdsdVp5QjNhWFJvSUhSb1pTQmthWE53YkdGNUlHOW1JR1ZzWlcxbGJuUnpJQ2gyYVdFZ2RHaGxhWEpjYmlBcUlFTlRVeUJqYkdGemMyVnpJR0Z1WkNCMmFYTnBZbWxzYVhSNUlHOXVJSE5qY21WbGJpNGdTWFFnYVhNZ1lXNGdRVkJKSUdadlkzVnpaV1FnYjI0Z2JYVjBZWFJwYm1jZ2RHaGxYRzRnS2lCa2FYTndiR0Y1SUdGdVpDQnViM1FnY21WaFpHbHVaeUJwZENCaGN5QnVieUJzYjJkcFkyRnNJSE4wWVhSbElITm9iM1ZzWkNCaVpTQmxibU52WkdWa0lHbHVJSFJvWlZ4dUlDb2daR2x6Y0d4aGVTQnZaaUJsYkdWdFpXNTBjeTVjYmlBcUwxeHVYRzUyWVhJZ1ExTlRRMjl5WlNBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FXUmtjeUIwYUdVZ1kyeGhjM01nY0dGemMyVmtJR2x1SUhSdklIUm9aU0JsYkdWdFpXNTBJR2xtSUdsMElHUnZaWE51SjNRZ1lXeHlaV0ZrZVNCb1lYWmxJR2wwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR1ZzWlcxbGJuUWdkR2hsSUdWc1pXMWxiblFnZEc4Z2MyVjBJSFJvWlNCamJHRnpjeUJ2Ymx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdZMnhoYzNOT1lXMWxJSFJvWlNCRFUxTWdZMnhoYzNOT1lXMWxYRzRnSUNBcUlFQnlaWFIxY200Z2UwUlBUVVZzWlcxbGJuUjlJSFJvWlNCbGJHVnRaVzUwSUhCaGMzTmxaQ0JwYmx4dUlDQWdLaTljYmlBZ1lXUmtRMnhoYzNNNklHWjFibU4wYVc5dUlDaGxiR1Z0Wlc1MExDQmpiR0Z6YzA1aGJXVXBJSHRjYmlBZ0lDQWhJUzljWEhNdkxuUmxjM1FvWTJ4aGMzTk9ZVzFsS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2REVTFORGIzSmxMbUZrWkVOc1lYTnpJSFJoYTJWeklHOXViSGtnWVNCemFXNW5iR1VnWTJ4aGMzTWdibUZ0WlM0Z1hDSWxjMXdpSUdOdmJuUmhhVzV6SUNjZ0t5QW5iWFZzZEdsd2JHVWdZMnhoYzNObGN5NG5MQ0JqYkdGemMwNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lHbG1JQ2hqYkdGemMwNWhiV1VwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxiR1Z0Wlc1MExtTnNZWE56VEdsemRDa2dlMXh1SUNBZ0lDQWdJQ0JsYkdWdFpXNTBMbU5zWVhOelRHbHpkQzVoWkdRb1kyeGhjM05PWVcxbEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9JVU5UVTBOdmNtVXVhR0Z6UTJ4aGMzTW9aV3hsYldWdWRDd2dZMnhoYzNOT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCbGJHVnRaVzUwTG1Oc1lYTnpUbUZ0WlNBOUlHVnNaVzFsYm5RdVkyeGhjM05PWVcxbElDc2dKeUFuSUNzZ1kyeGhjM05PWVcxbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaV3hsYldWdWREdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WdGIzWmxjeUIwYUdVZ1kyeGhjM01nY0dGemMyVmtJR2x1SUdaeWIyMGdkR2hsSUdWc1pXMWxiblJjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZiR1Z0Wlc1MGZTQmxiR1Z0Wlc1MElIUm9aU0JsYkdWdFpXNTBJSFJ2SUhObGRDQjBhR1VnWTJ4aGMzTWdiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTnNZWE56VG1GdFpTQjBhR1VnUTFOVElHTnNZWE56VG1GdFpWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVQwMUZiR1Z0Wlc1MGZTQjBhR1VnWld4bGJXVnVkQ0J3WVhOelpXUWdhVzVjYmlBZ0lDb3ZYRzRnSUhKbGJXOTJaVU5zWVhOek9pQm1kVzVqZEdsdmJpQW9aV3hsYldWdWRDd2dZMnhoYzNOT1lXMWxLU0I3WEc0Z0lDQWdJU0V2WEZ4ekx5NTBaWE4wS0dOc1lYTnpUbUZ0WlNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUTFOVFEyOXlaUzV5WlcxdmRtVkRiR0Z6Y3lCMFlXdGxjeUJ2Ym14NUlHRWdjMmx1WjJ4bElHTnNZWE56SUc1aGJXVXVJRndpSlhOY0lpQmpiMjUwWVdsdWN5QW5JQ3NnSjIxMWJIUnBjR3hsSUdOc1lYTnpaWE11Snl3Z1kyeGhjM05PWVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JwWmlBb1kyeGhjM05PWVcxbEtTQjdYRzRnSUNBZ0lDQnBaaUFvWld4bGJXVnVkQzVqYkdGemMweHBjM1FwSUh0Y2JpQWdJQ0FnSUNBZ1pXeGxiV1Z1ZEM1amJHRnpjMHhwYzNRdWNtVnRiM1psS0dOc1lYTnpUbUZ0WlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tFTlRVME52Y21VdWFHRnpRMnhoYzNNb1pXeGxiV1Z1ZEN3Z1kyeGhjM05PWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JsYkdWdFpXNTBMbU5zWVhOelRtRnRaU0E5SUdWc1pXMWxiblF1WTJ4aGMzTk9ZVzFsTG5KbGNHeGhZMlVvYm1WM0lGSmxaMFY0Y0NnbktGNThYRnhjWEhNcEp5QXJJR05zWVhOelRtRnRaU0FySUNjb1B6cGNYRnhjYzN3a0tTY3NJQ2RuSnlrc0lDY2tNU2NwTG5KbGNHeGhZMlVvTDF4Y2N5c3ZaeXdnSnlBbktTQXZMeUJ0ZFd4MGFYQnNaU0J6Y0dGalpYTWdkRzhnYjI1bFhHNGdJQ0FnSUNBZ0lDNXlaWEJzWVdObEtDOWVYRnh6S254Y1hITXFKQzluTENBbkp5azdJQzh2SUhSeWFXMGdkR2hsSUdWdVpITmNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1ZzWlcxbGJuUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVobGJIQmxjaUIwYnlCaFpHUWdiM0lnY21WdGIzWmxJR0VnWTJ4aGMzTWdabkp2YlNCaGJpQmxiR1Z0Wlc1MElHSmhjMlZrSUc5dUlHRWdZMjl1WkdsMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlHVnNaVzFsYm5RZ2RHaGxJR1ZzWlcxbGJuUWdkRzhnYzJWMElIUm9aU0JqYkdGemN5QnZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1kyeGhjM05PWVcxbElIUm9aU0JEVTFNZ1kyeGhjM05PWVcxbFhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ1ltOXZiQ0JqYjI1a2FYUnBiMjRnZEc4Z2QyaGxkR2hsY2lCMGJ5QmhaR1FnYjNJZ2NtVnRiM1psSUhSb1pTQmpiR0Z6YzF4dUlDQWdLaUJBY21WMGRYSnVJSHRFVDAxRmJHVnRaVzUwZlNCMGFHVWdaV3hsYldWdWRDQndZWE56WldRZ2FXNWNiaUFnSUNvdlhHNGdJR052Ym1ScGRHbHZia05zWVhOek9pQm1kVzVqZEdsdmJpQW9aV3hsYldWdWRDd2dZMnhoYzNOT1lXMWxMQ0JpYjI5c0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUNoaWIyOXNJRDhnUTFOVFEyOXlaUzVoWkdSRGJHRnpjeUE2SUVOVFUwTnZjbVV1Y21WdGIzWmxRMnhoYzNNcEtHVnNaVzFsYm5Rc0lHTnNZWE56VG1GdFpTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSbGMzUnpJSGRvWlhSb1pYSWdkR2hsSUdWc1pXMWxiblFnYUdGeklIUm9aU0JqYkdGemN5QnpjR1ZqYVdacFpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlRtOWtaWHhFVDAxWGFXNWtiM2Q5SUdWc1pXMWxiblFnZEdobElHVnNaVzFsYm5RZ2RHOGdjMlYwSUhSb1pTQmpiR0Z6Y3lCdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWTJ4aGMzTk9ZVzFsSUhSb1pTQkRVMU1nWTJ4aGMzTk9ZVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJSFJ5ZFdVZ2FXWWdkR2hsSUdWc1pXMWxiblFnYUdGeklIUm9aU0JqYkdGemN5d2dabUZzYzJVZ2FXWWdibTkwWEc0Z0lDQXFMMXh1SUNCb1lYTkRiR0Z6Y3pvZ1puVnVZM1JwYjI0Z0tHVnNaVzFsYm5Rc0lHTnNZWE56VG1GdFpTa2dlMXh1SUNBZ0lDRWhMMXhjY3k4dWRHVnpkQ2hqYkdGemMwNWhiV1VwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKME5UVXk1b1lYTkRiR0Z6Y3lCMFlXdGxjeUJ2Ym14NUlHRWdjMmx1WjJ4bElHTnNZWE56SUc1aGJXVXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaGxiR1Z0Wlc1MExtTnNZWE56VEdsemRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDRWhZMnhoYzNOT1lXMWxJQ1ltSUdWc1pXMWxiblF1WTJ4aGMzTk1hWE4wTG1OdmJuUmhhVzV6S0dOc1lYTnpUbUZ0WlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQW9KeUFuSUNzZ1pXeGxiV1Z1ZEM1amJHRnpjMDVoYldVZ0t5QW5JQ2NwTG1sdVpHVjRUMllvSnlBbklDc2dZMnhoYzNOT1lXMWxJQ3NnSnlBbktTQStJQzB4TzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdRMU5UUTI5eVpUc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRMaXN0ZW5lclxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogVXBzdHJlYW0gdmVyc2lvbiBvZiBldmVudCBsaXN0ZW5lci4gRG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgc3BlY2lmaWNcbiAqIG5hdHVyZSBvZiBwbGF0Zm9ybS5cbiAqL1xudmFyIEV2ZW50TGlzdGVuZXIgPSB7XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGJ1YmJsZSBwaGFzZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG4gICAqL1xuICBsaXN0ZW46IGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRhcmdldC5hdHRhY2hFdmVudCkge1xuICAgICAgdGFyZ2V0LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuICAgKi9cbiAgY2FwdHVyZTogZnVuY3Rpb24gKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuICAgIGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQXR0ZW1wdGVkIHRvIGxpc3RlbiB0byBldmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlIG9uIGEgJyArICdicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2FwdHVyZSBwaGFzZS4gWW91ciBhcHBsaWNhdGlvbiAnICsgJ3dpbGwgbm90IHJlY2VpdmUgc29tZSBldmVudHMuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZW1vdmU6IGVtcHR5RnVuY3Rpb25cbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4gIHJlZ2lzdGVyRGVmYXVsdDogZnVuY3Rpb24gKCkge31cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRMaXN0ZW5lcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OW1ZbXB6TDJ4cFlpOUZkbVZ1ZEV4cGMzUmxibVZ5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFYRzRnS2lCTWFXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FYQmhZMmhsSUV4cFkyVnVjMlVzSUZabGNuTnBiMjRnTWk0d0lDaDBhR1VnWENKTWFXTmxibk5sWENJcE8xeHVJQ29nZVc5MUlHMWhlU0J1YjNRZ2RYTmxJSFJvYVhNZ1ptbHNaU0JsZUdObGNIUWdhVzRnWTI5dGNHeHBZVzVqWlNCM2FYUm9JSFJvWlNCTWFXTmxibk5sTGx4dUlDb2dXVzkxSUcxaGVTQnZZblJoYVc0Z1lTQmpiM0I1SUc5bUlIUm9aU0JNYVdObGJuTmxJR0YwWEc0Z0tseHVJQ29nYUhSMGNEb3ZMM2QzZHk1aGNHRmphR1V1YjNKbkwyeHBZMlZ1YzJWekwweEpRMFZPVTBVdE1pNHdYRzRnS2x4dUlDb2dWVzVzWlhOeklISmxjWFZwY21Wa0lHSjVJR0Z3Y0d4cFkyRmliR1VnYkdGM0lHOXlJR0ZuY21WbFpDQjBieUJwYmlCM2NtbDBhVzVuTENCemIyWjBkMkZ5WlZ4dUlDb2daR2x6ZEhKcFluVjBaV1FnZFc1a1pYSWdkR2hsSUV4cFkyVnVjMlVnYVhNZ1pHbHpkSEpwWW5WMFpXUWdiMjRnWVc0Z1hDSkJVeUJKVTF3aUlFSkJVMGxUTEZ4dUlDb2dWMGxVU0U5VlZDQlhRVkpTUVU1VVNVVlRJRTlTSUVOUFRrUkpWRWxQVGxNZ1QwWWdRVTVaSUV0SlRrUXNJR1ZwZEdobGNpQmxlSEJ5WlhOeklHOXlJR2x0Y0d4cFpXUXVYRzRnS2lCVFpXVWdkR2hsSUV4cFkyVnVjMlVnWm05eUlIUm9aU0J6Y0dWamFXWnBZeUJzWVc1bmRXRm5aU0JuYjNabGNtNXBibWNnY0dWeWJXbHpjMmx2Ym5NZ1lXNWtYRzRnS2lCc2FXMXBkR0YwYVc5dWN5QjFibVJsY2lCMGFHVWdUR2xqWlc1elpTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1JYWmxiblJNYVhOMFpXNWxjbHh1SUNvZ1FIUjVjR1ZqYUdWamEzTmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJsYlhCMGVVWjFibU4wYVc5dUlEMGdjbVZ4ZFdseVpTZ25MaTlsYlhCMGVVWjFibU4wYVc5dUp5azdYRzVjYmk4cUtseHVJQ29nVlhCemRISmxZVzBnZG1WeWMybHZiaUJ2WmlCbGRtVnVkQ0JzYVhOMFpXNWxjaTRnUkc5bGN5QnViM1FnZEdGclpTQnBiblJ2SUdGalkyOTFiblFnYzNCbFkybG1hV05jYmlBcUlHNWhkSFZ5WlNCdlppQndiR0YwWm05eWJTNWNiaUFxTDF4dWRtRnlJRVYyWlc1MFRHbHpkR1Z1WlhJZ1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCTWFYTjBaVzRnZEc4Z1JFOU5JR1YyWlc1MGN5QmtkWEpwYm1jZ2RHaGxJR0oxWW1Kc1pTQndhR0Z6WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdEVUMDFGZG1WdWRGUmhjbWRsZEgwZ2RHRnlaMlYwSUVSUFRTQmxiR1Z0Wlc1MElIUnZJSEpsWjJsemRHVnlJR3hwYzNSbGJtVnlJRzl1TGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaWFpsYm5SVWVYQmxJRVYyWlc1MElIUjVjR1VzSUdVdVp5NGdKMk5zYVdOckp5QnZjaUFuYlc5MWMyVnZkbVZ5Snk1Y2JpQWdJQ29nUUhCaGNtRnRJSHRtZFc1amRHbHZibjBnWTJGc2JHSmhZMnNnUTJGc2JHSmhZMnNnWm5WdVkzUnBiMjR1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjlpYW1WamRIMGdUMkpxWldOMElIZHBkR2dnWVNCZ2NtVnRiM1psWUNCdFpYUm9iMlF1WEc0Z0lDQXFMMXh1SUNCc2FYTjBaVzQ2SUdaMWJtTjBhVzl1SUNoMFlYSm5aWFFzSUdWMlpXNTBWSGx3WlN3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNCcFppQW9kR0Z5WjJWMExtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJcElIdGNiaUFnSUNBZ0lIUmhjbWRsZEM1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0dWMlpXNTBWSGx3WlN3Z1kyRnNiR0poWTJzc0lHWmhiSE5sS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUhKbGJXOTJaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJoY21kbGRDNXlaVzF2ZG1WRmRtVnVkRXhwYzNSbGJtVnlLR1YyWlc1MFZIbHdaU3dnWTJGc2JHSmhZMnNzSUdaaGJITmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSaGNtZGxkQzVoZEhSaFkyaEZkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2RHRnlaMlYwTG1GMGRHRmphRVYyWlc1MEtDZHZiaWNnS3lCbGRtVnVkRlI1Y0dVc0lHTmhiR3hpWVdOcktUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lISmxiVzkyWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSaGNtZGxkQzVrWlhSaFkyaEZkbVZ1ZENnbmIyNG5JQ3NnWlhabGJuUlVlWEJsTENCallXeHNZbUZqYXlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJNYVhOMFpXNGdkRzhnUkU5TklHVjJaVzUwY3lCa2RYSnBibWNnZEdobElHTmhjSFIxY21VZ2NHaGhjMlV1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SWFpsYm5SVVlYSm5aWFI5SUhSaGNtZGxkQ0JFVDAwZ1pXeGxiV1Z1ZENCMGJ5QnlaV2RwYzNSbGNpQnNhWE4wWlc1bGNpQnZiaTVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHVjJaVzUwVkhsd1pTQkZkbVZ1ZENCMGVYQmxMQ0JsTG1jdUlDZGpiR2xqYXljZ2IzSWdKMjF2ZFhObGIzWmxjaWN1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJRU5oYkd4aVlXTnJJR1oxYm1OMGFXOXVMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHZZbXBsWTNSOUlFOWlhbVZqZENCM2FYUm9JR0VnWUhKbGJXOTJaV0FnYldWMGFHOWtMbHh1SUNBZ0tpOWNiaUFnWTJGd2RIVnlaVG9nWm5WdVkzUnBiMjRnS0hSaGNtZGxkQ3dnWlhabGJuUlVlWEJsTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUdsbUlDaDBZWEpuWlhRdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lrZ2UxeHVJQ0FnSUNBZ2RHRnlaMlYwTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvWlhabGJuUlVlWEJsTENCallXeHNZbUZqYXl3Z2RISjFaU2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0J5WlcxdmRtVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBZWEpuWlhRdWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpaGxkbVZ1ZEZSNWNHVXNJR05oYkd4aVlXTnJMQ0IwY25WbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWduUVhSMFpXMXdkR1ZrSUhSdklHeHBjM1JsYmlCMGJ5QmxkbVZ1ZEhNZ1pIVnlhVzVuSUhSb1pTQmpZWEIwZFhKbElIQm9ZWE5sSUc5dUlHRWdKeUFySUNkaWNtOTNjMlZ5SUhSb1lYUWdaRzlsY3lCdWIzUWdjM1Z3Y0c5eWRDQjBhR1VnWTJGd2RIVnlaU0J3YUdGelpTNGdXVzkxY2lCaGNIQnNhV05oZEdsdmJpQW5JQ3NnSjNkcGJHd2dibTkwSUhKbFkyVnBkbVVnYzI5dFpTQmxkbVZ1ZEhNdUp5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0lDQnlaVzF2ZG1VNklHVnRjSFI1Um5WdVkzUnBiMjVjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUhKbFoybHpkR1Z5UkdWbVlYVnNkRG9nWm5WdVkzUnBiMjRnS0NrZ2UzMWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1JYWmxiblJNYVhOMFpXNWxjanNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFeGVjdXRpb25FbnZpcm9ubWVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbi8qKlxuICogU2ltcGxlLCBsaWdodHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBhbmQgY29udGV4dCBvZlxuICogV29ya2VyLiBIZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYW5kIGFsbG93cyBjb2RlIHRvIHJlYXNvbiBhYm91dFxuICogd2hldGhlciBvciBub3QgdGhleSBhcmUgaW4gYSBXb3JrZXIsIGV2ZW4gaWYgdGhleSBuZXZlciBpbmNsdWRlIHRoZSBtYWluXG4gKiBgUmVhY3RXb3JrZXJgIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHtcblxuICBjYW5Vc2VET006IGNhblVzZURPTSxcblxuICBjYW5Vc2VXb3JrZXJzOiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxcblxuICBjYW5Vc2VFdmVudExpc3RlbmVyczogY2FuVXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVudCksXG5cbiAgY2FuVXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3JlZW4sXG5cbiAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgY2FtZWxpemVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfaHlwaGVuUGF0dGVybiA9IC8tKC4pL2c7XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgc3RyaW5nLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gY2FtZWxpemUoJ2JhY2tncm91bmQtY29sb3InKVxuICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX2h5cGhlblBhdHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIpIHtcbiAgICByZXR1cm4gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBjYW1lbGl6ZVN0eWxlTmFtZVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW1lbGl6ZSA9IHJlcXVpcmUoJy4vY2FtZWxpemUnKTtcblxudmFyIG1zUGF0dGVybiA9IC9eLW1zLS87XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnYmFja2dyb3VuZC1jb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbW96LXRyYW5zaXRpb24nKVxuICogICA8IFwiTW96VHJhbnNpdGlvblwiXG4gKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJy1tcy10cmFuc2l0aW9uJylcbiAqICAgPCBcIm1zVHJhbnNpdGlvblwiXG4gKlxuICogQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuICogKGh0dHA6Ly93d3cuYW5kaXNtaXRoLmNvbS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNgIHByZWZpeFxuICogaXMgY29udmVydGVkIHRvIGxvd2VyY2FzZSBgbXNgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2FtZWxpemVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBjYW1lbGl6ZShzdHJpbmcucmVwbGFjZShtc1BhdHRlcm4sICdtcy0nKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxpemVTdHlsZU5hbWU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGNvbnRhaW5zTm9kZVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1RleHROb2RlID0gcmVxdWlyZSgnLi9pc1RleHROb2RlJyk7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqL1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGdpdmVuIERPTSBub2RlIGNvbnRhaW5zIG9yIGlzIGFub3RoZXIgRE9NIG5vZGUuXG4gKlxuICogQHBhcmFtIHs/RE9NTm9kZX0gb3V0ZXJOb2RlIE91dGVyIERPTSBub2RlLlxuICogQHBhcmFtIHs/RE9NTm9kZX0gaW5uZXJOb2RlIElubmVyIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb3V0ZXJOb2RlYCBjb250YWlucyBvciBpcyBgaW5uZXJOb2RlYC5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnNOb2RlKF94LCBfeDIpIHtcbiAgdmFyIF9hZ2FpbiA9IHRydWU7XG5cbiAgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7XG4gICAgdmFyIG91dGVyTm9kZSA9IF94LFxuICAgICAgICBpbm5lck5vZGUgPSBfeDI7XG4gICAgX2FnYWluID0gZmFsc2U7XG5cbiAgICBpZiAoIW91dGVyTm9kZSB8fCAhaW5uZXJOb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChvdXRlck5vZGUgPT09IGlubmVyTm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUoaW5uZXJOb2RlKSkge1xuICAgICAgX3ggPSBvdXRlck5vZGU7XG4gICAgICBfeDIgPSBpbm5lck5vZGUucGFyZW50Tm9kZTtcbiAgICAgIF9hZ2FpbiA9IHRydWU7XG4gICAgICBjb250aW51ZSBfZnVuY3Rpb247XG4gICAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29udGFpbnMpIHtcbiAgICAgIHJldHVybiBvdXRlck5vZGUuY29udGFpbnMoaW5uZXJOb2RlKTtcbiAgICB9IGVsc2UgaWYgKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikge1xuICAgICAgcmV0dXJuICEhKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihpbm5lck5vZGUpICYgMTYpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29udGFpbnNOb2RlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBjcmVhdGVBcnJheUZyb21NaXhlZFxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciB0b0FycmF5ID0gcmVxdWlyZSgnLi90b0FycmF5Jyk7XG5cbi8qKlxuICogUGVyZm9ybSBhIGhldXJpc3RpYyB0ZXN0IHRvIGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgXCJhcnJheS1saWtlXCIuXG4gKlxuICogICBBIG1vbmsgYXNrZWQgSm9zaHUsIGEgWmVuIG1hc3RlciwgXCJIYXMgYSBkb2cgQnVkZGhhIG5hdHVyZT9cIlxuICogICBKb3NodSByZXBsaWVkOiBcIk11LlwiXG4gKlxuICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIGl0cyBhcmd1bWVudCBoYXMgXCJhcnJheSBuYXR1cmVcIjogaXQgcmV0dXJuc1xuICogdHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYW4gYWN0dWFsIGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmplY3QsIG9yIGFuXG4gKiBIVE1MQ29sbGVjdGlvbiAoZS5nLiBub2RlLmNoaWxkTm9kZXMgb3Igbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgpKS5cbiAqXG4gKiBJdCB3aWxsIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgYXJyYXktbGlrZSBvYmplY3RzIGxpa2UgRmlsZWxpc3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGhhc0FycmF5TmF0dXJlKG9iaikge1xuICByZXR1cm4oXG4gICAgLy8gbm90IG51bGwvZmFsc2VcbiAgICAhIW9iaiAmJiAoXG4gICAgLy8gYXJyYXlzIGFyZSBvYmplY3RzLCBOb2RlTGlzdHMgYXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmlcbiAgICB0eXBlb2Ygb2JqID09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAvLyBxdWFja3MgbGlrZSBhbiBhcnJheVxuICAgICdsZW5ndGgnIGluIG9iaiAmJlxuICAgIC8vIG5vdCB3aW5kb3dcbiAgICAhKCdzZXRJbnRlcnZhbCcgaW4gb2JqKSAmJlxuICAgIC8vIG5vIERPTSBub2RlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIGFycmF5LWxpa2VcbiAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJRThcbiAgICB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9ICdudW1iZXInICYmIChcbiAgICAvLyBhIHJlYWwgYXJyYXlcbiAgICBBcnJheS5pc0FycmF5KG9iaikgfHxcbiAgICAvLyBhcmd1bWVudHNcbiAgICAnY2FsbGVlJyBpbiBvYmogfHxcbiAgICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdFxuICAgICdpdGVtJyBpbiBvYmopXG4gICk7XG59XG5cbi8qKlxuICogRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5IGJ5IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC5cbiAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBhcmd1bWVudCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFycmF5LlxuICpcbiAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OlxuICpcbiAqICAgdmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgnY3JlYXRlQXJyYXlGcm9tTWl4ZWQnKTtcbiAqXG4gKiAgIGZ1bmN0aW9uIHRha2VzT25lT3JNb3JlVGhpbmdzKHRoaW5ncykge1xuICogICAgIHRoaW5ncyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkKHRoaW5ncyk7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqXG4gKiBUaGlzIGFsbG93cyB5b3UgdG8gdHJlYXQgYHRoaW5ncycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFycyBpbiB0aGUgQVBJLlxuICpcbiAqIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYW4gYXJyYXktbGlrZSBvYmplY3QsIGxpa2UgYGFyZ3VtZW50c2AsIGludG8gYW4gYXJyYXlcbiAqIHVzZSB0b0FycmF5IGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NaXhlZChvYmopIHtcbiAgaWYgKCFoYXNBcnJheU5hdHVyZShvYmopKSB7XG4gICAgcmV0dXJuIFtvYmpdO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmouc2xpY2UoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdG9BcnJheShvYmopO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQ7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXBcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuLyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgnLi9jcmVhdGVBcnJheUZyb21NaXhlZCcpO1xudmFyIGdldE1hcmt1cFdyYXAgPSByZXF1aXJlKCcuL2dldE1hcmt1cFdyYXAnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCcuL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIHJlbmRlciBhbGwgbWFya3VwLlxuICovXG52YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsO1xuXG4vKipcbiAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuICovXG52YXIgbm9kZU5hbWVQYXR0ZXJuID0gL15cXHMqPChcXHcrKS87XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGBub2RlTmFtZWAgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBzdHJpbmcgb2YgbWFya3VwLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAqIEByZXR1cm4gez9zdHJpbmd9IE5vZGUgbmFtZSBvZiB0aGUgc3VwcGxpZWQgbWFya3VwLlxuICovXG5mdW5jdGlvbiBnZXROb2RlTmFtZShtYXJrdXApIHtcbiAgdmFyIG5vZGVOYW1lTWF0Y2ggPSBtYXJrdXAubWF0Y2gobm9kZU5hbWVQYXR0ZXJuKTtcbiAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYgbm9kZU5hbWVNYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbm9kZXMgcmVuZGVyZWQgZnJvbSB0aGUgc3VwcGxpZWQgbWFya3VwLiBUaGVcbiAqIG9wdGlvbmFsbHkgc3VwcGxpZWQgYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIG9uY2UgZm9yIGVhY2hcbiAqIDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZC4gSWYgbm8gYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG4gKiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGlmIGFueSA8c2NyaXB0PiBlbGVtZW50cyBhcmUgcmVuZGVyZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBIVE1MIG1hcmt1cC5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBoYW5kbGVTY3JpcHQgSW52b2tlZCBvbmNlIGZvciBlYWNoIHJlbmRlcmVkIDxzY3JpcHQ+LlxuICogQHJldHVybiB7YXJyYXk8RE9NRWxlbWVudHxET01UZXh0Tm9kZT59IEFuIGFycmF5IG9mIHJlbmRlcmVkIG5vZGVzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFya3VwLCBoYW5kbGVTY3JpcHQpIHtcbiAgdmFyIG5vZGUgPSBkdW1teU5vZGU7XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgZHVtbXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB2YXIgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXApO1xuXG4gIHZhciB3cmFwID0gbm9kZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7XG4gIGlmICh3cmFwKSB7XG4gICAgbm9kZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTtcblxuICAgIHZhciB3cmFwRGVwdGggPSB3cmFwWzBdO1xuICAgIHdoaWxlICh3cmFwRGVwdGgtLSkge1xuICAgICAgbm9kZSA9IG5vZGUubGFzdENoaWxkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9IG1hcmt1cDtcbiAgfVxuXG4gIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XG4gIGlmIChzY3JpcHRzLmxlbmd0aCkge1xuICAgICFoYW5kbGVTY3JpcHQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxlbWVudCByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgY3JlYXRlQXJyYXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9yRWFjaChoYW5kbGVTY3JpcHQpO1xuICB9XG5cbiAgdmFyIG5vZGVzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQobm9kZS5jaGlsZE5vZGVzKTtcbiAgd2hpbGUgKG5vZGUubGFzdENoaWxkKSB7XG4gICAgbm9kZS5yZW1vdmVDaGlsZChub2RlLmxhc3RDaGlsZCk7XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OW1ZbXB6TDJ4cFlpOWpjbVZoZEdWT2IyUmxjMFp5YjIxTllYSnJkWEF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJR055WldGMFpVNXZaR1Z6Um5KdmJVMWhjbXQxY0Z4dUlDb2dRSFI1Y0dWamFHVmphM05jYmlBcUwxeHVYRzR2S21WemJHbHVkQzFrYVhOaFlteGxJR1ppTFhkM2R5OTFibk5oWm1VdGFIUnRiQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOUZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQ2NwTzF4dVhHNTJZWElnWTNKbFlYUmxRWEp5WVhsR2NtOXRUV2w0WldRZ1BTQnlaWEYxYVhKbEtDY3VMMk55WldGMFpVRnljbUY1Um5KdmJVMXBlR1ZrSnlrN1hHNTJZWElnWjJWMFRXRnlhM1Z3VjNKaGNDQTlJSEpsY1hWcGNtVW9KeTR2WjJWMFRXRnlhM1Z3VjNKaGNDY3BPMXh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KeTR2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dSSFZ0YlhrZ1kyOXVkR0ZwYm1WeUlIVnpaV1FnZEc4Z2NtVnVaR1Z5SUdGc2JDQnRZWEpyZFhBdVhHNGdLaTljYm5aaGNpQmtkVzF0ZVU1dlpHVWdQU0JGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZEM1allXNVZjMlZFVDAwZ1B5QmtiMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0Nka2FYWW5LU0E2SUc1MWJHdzdYRzVjYmk4cUtseHVJQ29nVUdGMGRHVnliaUIxYzJWa0lHSjVJR0JuWlhST2IyUmxUbUZ0WldBdVhHNGdLaTljYm5aaGNpQnViMlJsVG1GdFpWQmhkSFJsY200Z1BTQXZYbHhjY3lvOEtGeGNkeXNwTHp0Y2JseHVMeW9xWEc0Z0tpQkZlSFJ5WVdOMGN5QjBhR1VnWUc1dlpHVk9ZVzFsWUNCdlppQjBhR1VnWm1seWMzUWdaV3hsYldWdWRDQnBiaUJoSUhOMGNtbHVaeUJ2WmlCdFlYSnJkWEF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzFoY210MWNDQlRkSEpwYm1jZ2IyWWdiV0Z5YTNWd0xseHVJQ29nUUhKbGRIVnliaUI3UDNOMGNtbHVaMzBnVG05a1pTQnVZVzFsSUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0J0WVhKcmRYQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRTV2WkdWT1lXMWxLRzFoY210MWNDa2dlMXh1SUNCMllYSWdibTlrWlU1aGJXVk5ZWFJqYUNBOUlHMWhjbXQxY0M1dFlYUmphQ2h1YjJSbFRtRnRaVkJoZEhSbGNtNHBPMXh1SUNCeVpYUjFjbTRnYm05a1pVNWhiV1ZOWVhSamFDQW1KaUJ1YjJSbFRtRnRaVTFoZEdOb1d6RmRMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoYmlCaGNuSmhlU0JqYjI1MFlXbHVhVzVuSUhSb1pTQnViMlJsY3lCeVpXNWtaWEpsWkNCbWNtOXRJSFJvWlNCemRYQndiR2xsWkNCdFlYSnJkWEF1SUZSb1pWeHVJQ29nYjNCMGFXOXVZV3hzZVNCemRYQndiR2xsWkNCZ2FHRnVaR3hsVTJOeWFYQjBZQ0JtZFc1amRHbHZiaUIzYVd4c0lHSmxJR2x1ZG05clpXUWdiMjVqWlNCbWIzSWdaV0ZqYUZ4dUlDb2dQSE5qY21sd2RENGdaV3hsYldWdWRDQjBhR0YwSUdseklISmxibVJsY21Wa0xpQkpaaUJ1YnlCZ2FHRnVaR3hsVTJOeWFYQjBZQ0JtZFc1amRHbHZiaUJwY3lCemRYQndiR2xsWkN4Y2JpQXFJR0Z1SUdWNFkyVndkR2x2YmlCcGN5QjBhSEp2ZDI0Z2FXWWdZVzU1SUR4elkzSnBjSFErSUdWc1pXMWxiblJ6SUdGeVpTQnlaVzVrWlhKbFpDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXRnlhM1Z3SUVFZ2MzUnlhVzVuSUc5bUlIWmhiR2xrSUVoVVRVd2diV0Z5YTNWd0xseHVJQ29nUUhCaGNtRnRJSHMvWm5WdVkzUnBiMjU5SUdoaGJtUnNaVk5qY21sd2RDQkpiblp2YTJWa0lHOXVZMlVnWm05eUlHVmhZMmdnY21WdVpHVnlaV1FnUEhOamNtbHdkRDR1WEc0Z0tpQkFjbVYwZFhKdUlIdGhjbkpoZVR4RVQwMUZiR1Z0Wlc1MGZFUlBUVlJsZUhST2IyUmxQbjBnUVc0Z1lYSnlZWGtnYjJZZ2NtVnVaR1Z5WldRZ2JtOWtaWE11WEc0Z0tpOWNibVoxYm1OMGFXOXVJR055WldGMFpVNXZaR1Z6Um5KdmJVMWhjbXQxY0NodFlYSnJkWEFzSUdoaGJtUnNaVk5qY21sd2RDa2dlMXh1SUNCMllYSWdibTlrWlNBOUlHUjFiVzE1VG05a1pUdGNiaUFnSVNFaFpIVnRiWGxPYjJSbElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJOeVpXRjBaVTV2WkdWelJuSnZiVTFoY210MWNDQmtkVzF0ZVNCdWIzUWdhVzVwZEdsaGJHbDZaV1FuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUhaaGNpQnViMlJsVG1GdFpTQTlJR2RsZEU1dlpHVk9ZVzFsS0cxaGNtdDFjQ2s3WEc1Y2JpQWdkbUZ5SUhkeVlYQWdQU0J1YjJSbFRtRnRaU0FtSmlCblpYUk5ZWEpyZFhCWGNtRndLRzV2WkdWT1lXMWxLVHRjYmlBZ2FXWWdLSGR5WVhBcElIdGNiaUFnSUNCdWIyUmxMbWx1Ym1WeVNGUk5UQ0E5SUhkeVlYQmJNVjBnS3lCdFlYSnJkWEFnS3lCM2NtRndXekpkTzF4dVhHNGdJQ0FnZG1GeUlIZHlZWEJFWlhCMGFDQTlJSGR5WVhCYk1GMDdYRzRnSUNBZ2QyaHBiR1VnS0hkeVlYQkVaWEIwYUMwdEtTQjdYRzRnSUNBZ0lDQnViMlJsSUQwZ2JtOWtaUzVzWVhOMFEyaHBiR1E3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJRzV2WkdVdWFXNXVaWEpJVkUxTUlEMGdiV0Z5YTNWd08xeHVJQ0I5WEc1Y2JpQWdkbUZ5SUhOamNtbHdkSE1nUFNCdWIyUmxMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NkelkzSnBjSFFuS1R0Y2JpQWdhV1lnS0hOamNtbHdkSE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJV2hoYm1Sc1pWTmpjbWx3ZENBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RqY21WaGRHVk9iMlJsYzBaeWIyMU5ZWEpyZFhBb0xpNHVLVG9nVlc1bGVIQmxZM1JsWkNBOGMyTnlhWEIwUGlCbGJHVnRaVzUwSUhKbGJtUmxjbVZrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQmpjbVZoZEdWQmNuSmhlVVp5YjIxTmFYaGxaQ2h6WTNKcGNIUnpLUzVtYjNKRllXTm9LR2hoYm1Sc1pWTmpjbWx3ZENrN1hHNGdJSDFjYmx4dUlDQjJZWElnYm05a1pYTWdQU0JqY21WaGRHVkJjbkpoZVVaeWIyMU5hWGhsWkNodWIyUmxMbU5vYVd4a1RtOWtaWE1wTzF4dUlDQjNhR2xzWlNBb2JtOWtaUzVzWVhOMFEyaHBiR1FwSUh0Y2JpQWdJQ0J1YjJSbExuSmxiVzkyWlVOb2FXeGtLRzV2WkdVdWJHRnpkRU5vYVd4a0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JtOWtaWE03WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdZM0psWVhSbFRtOWtaWE5HY205dFRXRnlhM1Z3T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZW1wdHlGdW5jdGlvblxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gYXJnO1xuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3RzLiBUaGlzIGlzXG4gKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaFxuICogYWx3YXlzIG5lZWQgdG8gYmUgY2FsbGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFsYSBDb2NvYS5cbiAqL1xuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5cbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5RnVuY3Rpb24odHJ1ZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzO1xufTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgcmV0dXJuIGFyZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlvbjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGVtcHR5T2JqZWN0XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlPYmplY3QgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlPYmplY3Q7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTlsYlhCMGVVOWlhbVZqZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElHVnRjSFI1VDJKcVpXTjBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWlcxd2RIbFBZbXBsWTNRZ1BTQjdmVHRjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdUMkpxWldOMExtWnlaV1Y2WlNobGJYQjBlVTlpYW1WamRDazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1pXMXdkSGxQWW1wbFkzUTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGZvY3VzTm9kZVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8gZm9jdXNcbiAqL1xuZnVuY3Rpb24gZm9jdXNOb2RlKG5vZGUpIHtcbiAgLy8gSUU4IGNhbiB0aHJvdyBcIkNhbid0IG1vdmUgZm9jdXMgdG8gdGhlIGNvbnRyb2wgYmVjYXVzZSBpdCBpcyBpbnZpc2libGUsXG4gIC8vIG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdCBhY2NlcHQgdGhlIGZvY3VzLlwiIGZvciBhbGwga2luZHMgb2ZcbiAgLy8gcmVhc29ucyB0aGF0IGFyZSB0b28gZXhwZW5zaXZlIGFuZCBmcmFnaWxlIHRvIHRlc3QuXG4gIHRyeSB7XG4gICAgbm9kZS5mb2N1cygpO1xuICB9IGNhdGNoIChlKSB7fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvY3VzTm9kZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0QWN0aXZlRWxlbWVudFxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4vKipcbiAqIFNhbWUgYXMgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBidXQgd3JhcHMgaW4gYSB0cnktY2F0Y2ggYmxvY2suIEluIElFIGl0IGlzXG4gKiBub3Qgc2FmZSB0byBjYWxsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaWYgdGhlcmUgaXMgbm90aGluZyBmb2N1c2VkLlxuICpcbiAqIFRoZSBhY3RpdmVFbGVtZW50IHdpbGwgYmUgbnVsbCBvbmx5IGlmIHRoZSBkb2N1bWVudCBvciBkb2N1bWVudCBib2R5IGlzIG5vdCB5ZXQgZGVmaW5lZC5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KCkgLyo/RE9NRWxlbWVudCove1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCBkb2N1bWVudC5ib2R5O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBY3RpdmVFbGVtZW50OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0TWFya3VwV3JhcFxuICovXG5cbi8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2FyeS5cbiAqL1xudmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDtcblxuLyoqXG4gKiBTb21lIGJyb3dzZXJzIGNhbm5vdCB1c2UgYGlubmVySFRNTGAgdG8gcmVuZGVyIGNlcnRhaW4gZWxlbWVudHMgc3RhbmRhbG9uZSxcbiAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVyIHRoZSB3cmFwcGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS5cbiAqXG4gKiBJbiBJRTgsIGNlcnRhaW4gZWxlbWVudHMgY2Fubm90IHJlbmRlciBhbG9uZSwgc28gd3JhcCBhbGwgZWxlbWVudHMgKCcqJykuXG4gKi9cblxudmFyIHNob3VsZFdyYXAgPSB7fTtcblxudmFyIHNlbGVjdFdyYXAgPSBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9XCJ0cnVlXCI+JywgJzwvc2VsZWN0PiddO1xudmFyIHRhYmxlV3JhcCA9IFsxLCAnPHRhYmxlPicsICc8L3RhYmxlPiddO1xudmFyIHRyV3JhcCA9IFszLCAnPHRhYmxlPjx0Ym9keT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddO1xuXG52YXIgc3ZnV3JhcCA9IFsxLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+JywgJzwvc3ZnPiddO1xuXG52YXIgbWFya3VwV3JhcCA9IHtcbiAgJyonOiBbMSwgJz88ZGl2PicsICc8L2Rpdj4nXSxcblxuICAnYXJlYSc6IFsxLCAnPG1hcD4nLCAnPC9tYXA+J10sXG4gICdjb2wnOiBbMiwgJzx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+JywgJzwvY29sZ3JvdXA+PC90YWJsZT4nXSxcbiAgJ2xlZ2VuZCc6IFsxLCAnPGZpZWxkc2V0PicsICc8L2ZpZWxkc2V0PiddLFxuICAncGFyYW0nOiBbMSwgJzxvYmplY3Q+JywgJzwvb2JqZWN0PiddLFxuICAndHInOiBbMiwgJzx0YWJsZT48dGJvZHk+JywgJzwvdGJvZHk+PC90YWJsZT4nXSxcblxuICAnb3B0Z3JvdXAnOiBzZWxlY3RXcmFwLFxuICAnb3B0aW9uJzogc2VsZWN0V3JhcCxcblxuICAnY2FwdGlvbic6IHRhYmxlV3JhcCxcbiAgJ2NvbGdyb3VwJzogdGFibGVXcmFwLFxuICAndGJvZHknOiB0YWJsZVdyYXAsXG4gICd0Zm9vdCc6IHRhYmxlV3JhcCxcbiAgJ3RoZWFkJzogdGFibGVXcmFwLFxuXG4gICd0ZCc6IHRyV3JhcCxcbiAgJ3RoJzogdHJXcmFwXG59O1xuXG4vLyBJbml0aWFsaXplIHRoZSBTVkcgZWxlbWVudHMgc2luY2Ugd2Uga25vdyB0aGV5J2xsIGFsd2F5cyBuZWVkIHRvIGJlIHdyYXBwZWRcbi8vIGNvbnNpc3RlbnRseS4gSWYgdGhleSBhcmUgY3JlYXRlZCBpbnNpZGUgYSA8ZGl2PiB0aGV5IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW5cbi8vIHRoZSB3cm9uZyBuYW1lc3BhY2UgKGFuZCB3aWxsIG5vdCBkaXNwbGF5KS5cbnZhciBzdmdFbGVtZW50cyA9IFsnY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2RlZnMnLCAnZWxsaXBzZScsICdnJywgJ2ltYWdlJywgJ2xpbmUnLCAnbGluZWFyR3JhZGllbnQnLCAnbWFzaycsICdwYXRoJywgJ3BhdHRlcm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcsICdyZWN0JywgJ3N0b3AnLCAndGV4dCcsICd0c3BhbiddO1xuc3ZnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobm9kZU5hbWUpIHtcbiAgbWFya3VwV3JhcFtub2RlTmFtZV0gPSBzdmdXcmFwO1xuICBzaG91bGRXcmFwW25vZGVOYW1lXSA9IHRydWU7XG59KTtcblxuLyoqXG4gKiBHZXRzIHRoZSBtYXJrdXAgd3JhcCBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VwcGxpZWQgYG5vZGVOYW1lYC5cbiAqXG4gKiBOT1RFOiBUaGlzIGxhemlseSBkZXRlY3RzIHdoaWNoIHdyYXBzIGFyZSBuZWNlc3NhcnkgZm9yIHRoZSBjdXJyZW50IGJyb3dzZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5vZGVOYW1lIExvd2VyY2FzZSBgbm9kZU5hbWVgLlxuICogQHJldHVybiB7P2FycmF5fSBNYXJrdXAgd3JhcCBjb25maWd1cmF0aW9uLCBpZiBhcHBsaWNhYmxlLlxuICovXG5mdW5jdGlvbiBnZXRNYXJrdXBXcmFwKG5vZGVOYW1lKSB7XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGlmICghbWFya3VwV3JhcC5oYXNPd25Qcm9wZXJ0eShub2RlTmFtZSkpIHtcbiAgICBub2RlTmFtZSA9ICcqJztcbiAgfVxuICBpZiAoIXNob3VsZFdyYXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgaWYgKG5vZGVOYW1lID09PSAnKicpIHtcbiAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzwnICsgbm9kZU5hbWUgKyAnPjwvJyArIG5vZGVOYW1lICsgJz4nO1xuICAgIH1cbiAgICBzaG91bGRXcmFwW25vZGVOYW1lXSA9ICFkdW1teU5vZGUuZmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gc2hvdWxkV3JhcFtub2RlTmFtZV0gPyBtYXJrdXBXcmFwW25vZGVOYW1lXSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFya3VwV3JhcDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OW1ZbXB6TDJ4cFlpOW5aWFJOWVhKcmRYQlhjbUZ3TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnWjJWMFRXRnlhM1Z3VjNKaGNGeHVJQ292WEc1Y2JpOHFaWE5zYVc1MExXUnBjMkZpYkdVZ1ptSXRkM2QzTDNWdWMyRm1aUzFvZEcxc0lDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duTGk5RmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDY3BPMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duTGk5cGJuWmhjbWxoYm5RbktUdGNibHh1THlvcVhHNGdLaUJFZFcxdGVTQmpiMjUwWVdsdVpYSWdkWE5sWkNCMGJ5QmtaWFJsWTNRZ2QyaHBZMmdnZDNKaGNITWdZWEpsSUc1bFkyVnpjMkZ5ZVM1Y2JpQXFMMXh1ZG1GeUlHUjFiVzE1VG05a1pTQTlJRVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwTG1OaGJsVnpaVVJQVFNBL0lHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSjJScGRpY3BJRG9nYm5Wc2JEdGNibHh1THlvcVhHNGdLaUJUYjIxbElHSnliM2R6WlhKeklHTmhibTV2ZENCMWMyVWdZR2x1Ym1WeVNGUk5UR0FnZEc4Z2NtVnVaR1Z5SUdObGNuUmhhVzRnWld4bGJXVnVkSE1nYzNSaGJtUmhiRzl1WlN4Y2JpQXFJSE52SUhkbElIZHlZWEFnZEdobGJTd2djbVZ1WkdWeUlIUm9aU0IzY21Gd2NHVmtJRzV2WkdWekxDQjBhR1Z1SUdWNGRISmhZM1FnZEdobElHUmxjMmx5WldRZ2JtOWtaUzVjYmlBcVhHNGdLaUJKYmlCSlJUZ3NJR05sY25SaGFXNGdaV3hsYldWdWRITWdZMkZ1Ym05MElISmxibVJsY2lCaGJHOXVaU3dnYzI4Z2QzSmhjQ0JoYkd3Z1pXeGxiV1Z1ZEhNZ0tDY3FKeWt1WEc0Z0tpOWNibHh1ZG1GeUlITm9iM1ZzWkZkeVlYQWdQU0I3ZlR0Y2JseHVkbUZ5SUhObGJHVmpkRmR5WVhBZ1BTQmJNU3dnSnp4elpXeGxZM1FnYlhWc2RHbHdiR1U5WENKMGNuVmxYQ0krSnl3Z0p6d3ZjMlZzWldOMFBpZGRPMXh1ZG1GeUlIUmhZbXhsVjNKaGNDQTlJRnN4TENBblBIUmhZbXhsUGljc0lDYzhMM1JoWW14bFBpZGRPMXh1ZG1GeUlIUnlWM0poY0NBOUlGc3pMQ0FuUEhSaFlteGxQangwWW05a2VUNDhkSEkrSnl3Z0p6d3ZkSEkrUEM5MFltOWtlVDQ4TDNSaFlteGxQaWRkTzF4dVhHNTJZWElnYzNablYzSmhjQ0E5SUZzeExDQW5QSE4yWnlCNGJXeHVjejFjSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puWENJK0p5d2dKend2YzNablBpZGRPMXh1WEc1MllYSWdiV0Z5YTNWd1YzSmhjQ0E5SUh0Y2JpQWdKeW9uT2lCYk1Td2dKejg4WkdsMlBpY3NJQ2M4TDJScGRqNG5YU3hjYmx4dUlDQW5ZWEpsWVNjNklGc3hMQ0FuUEcxaGNENG5MQ0FuUEM5dFlYQStKMTBzWEc0Z0lDZGpiMnduT2lCYk1pd2dKengwWVdKc1pUNDhkR0p2WkhrK1BDOTBZbTlrZVQ0OFkyOXNaM0p2ZFhBK0p5d2dKend2WTI5c1ozSnZkWEErUEM5MFlXSnNaVDRuWFN4Y2JpQWdKMnhsWjJWdVpDYzZJRnN4TENBblBHWnBaV3hrYzJWMFBpY3NJQ2M4TDJacFpXeGtjMlYwUGlkZExGeHVJQ0FuY0dGeVlXMG5PaUJiTVN3Z0p6eHZZbXBsWTNRK0p5d2dKend2YjJKcVpXTjBQaWRkTEZ4dUlDQW5kSEluT2lCYk1pd2dKengwWVdKc1pUNDhkR0p2WkhrK0p5d2dKend2ZEdKdlpIaytQQzkwWVdKc1pUNG5YU3hjYmx4dUlDQW5iM0IwWjNKdmRYQW5PaUJ6Wld4bFkzUlhjbUZ3TEZ4dUlDQW5iM0IwYVc5dUp6b2djMlZzWldOMFYzSmhjQ3hjYmx4dUlDQW5ZMkZ3ZEdsdmJpYzZJSFJoWW14bFYzSmhjQ3hjYmlBZ0oyTnZiR2R5YjNWd0p6b2dkR0ZpYkdWWGNtRndMRnh1SUNBbmRHSnZaSGtuT2lCMFlXSnNaVmR5WVhBc1hHNGdJQ2QwWm05dmRDYzZJSFJoWW14bFYzSmhjQ3hjYmlBZ0ozUm9aV0ZrSnpvZ2RHRmliR1ZYY21Gd0xGeHVYRzRnSUNkMFpDYzZJSFJ5VjNKaGNDeGNiaUFnSjNSb0p6b2dkSEpYY21Gd1hHNTlPMXh1WEc0dkx5QkpibWwwYVdGc2FYcGxJSFJvWlNCVFZrY2daV3hsYldWdWRITWdjMmx1WTJVZ2QyVWdhMjV2ZHlCMGFHVjVKMnhzSUdGc2QyRjVjeUJ1WldWa0lIUnZJR0psSUhkeVlYQndaV1JjYmk4dklHTnZibk5wYzNSbGJuUnNlUzRnU1dZZ2RHaGxlU0JoY21VZ1kzSmxZWFJsWkNCcGJuTnBaR1VnWVNBOFpHbDJQaUIwYUdWNUlIZHBiR3dnWW1VZ2FXNXBkR2xoYkdsNlpXUWdhVzVjYmk4dklIUm9aU0IzY205dVp5QnVZVzFsYzNCaFkyVWdLR0Z1WkNCM2FXeHNJRzV2ZENCa2FYTndiR0Y1S1M1Y2JuWmhjaUJ6ZG1kRmJHVnRaVzUwY3lBOUlGc25ZMmx5WTJ4bEp5d2dKMk5zYVhCUVlYUm9KeXdnSjJSbFpuTW5MQ0FuWld4c2FYQnpaU2NzSUNkbkp5d2dKMmx0WVdkbEp5d2dKMnhwYm1VbkxDQW5iR2x1WldGeVIzSmhaR2xsYm5RbkxDQW5iV0Z6YXljc0lDZHdZWFJvSnl3Z0ozQmhkSFJsY200bkxDQW5jRzlzZVdkdmJpY3NJQ2R3YjJ4NWJHbHVaU2NzSUNkeVlXUnBZV3hIY21Ga2FXVnVkQ2NzSUNkeVpXTjBKeXdnSjNOMGIzQW5MQ0FuZEdWNGRDY3NJQ2QwYzNCaGJpZGRPMXh1YzNablJXeGxiV1Z1ZEhNdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlBb2JtOWtaVTVoYldVcElIdGNiaUFnYldGeWEzVndWM0poY0Z0dWIyUmxUbUZ0WlYwZ1BTQnpkbWRYY21Gd08xeHVJQ0J6YUc5MWJHUlhjbUZ3VzI1dlpHVk9ZVzFsWFNBOUlIUnlkV1U3WEc1OUtUdGNibHh1THlvcVhHNGdLaUJIWlhSeklIUm9aU0J0WVhKcmRYQWdkM0poY0NCamIyNW1hV2QxY21GMGFXOXVJR1p2Y2lCMGFHVWdjM1Z3Y0d4cFpXUWdZRzV2WkdWT1lXMWxZQzVjYmlBcVhHNGdLaUJPVDFSRk9pQlVhR2x6SUd4aGVtbHNlU0JrWlhSbFkzUnpJSGRvYVdOb0lIZHlZWEJ6SUdGeVpTQnVaV05sYzNOaGNua2dabTl5SUhSb1pTQmpkWEp5Wlc1MElHSnliM2R6WlhJdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1dlpHVk9ZVzFsSUV4dmQyVnlZMkZ6WlNCZ2JtOWtaVTVoYldWZ0xseHVJQ29nUUhKbGRIVnliaUI3UDJGeWNtRjVmU0JOWVhKcmRYQWdkM0poY0NCamIyNW1hV2QxY21GMGFXOXVMQ0JwWmlCaGNIQnNhV05oWW14bExseHVJQ292WEc1bWRXNWpkR2x2YmlCblpYUk5ZWEpyZFhCWGNtRndLRzV2WkdWT1lXMWxLU0I3WEc0Z0lDRWhJV1IxYlcxNVRtOWtaU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZE5ZWEpyZFhBZ2QzSmhjSEJwYm1jZ2JtOWtaU0J1YjNRZ2FXNXBkR2xoYkdsNlpXUW5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJR2xtSUNnaGJXRnlhM1Z3VjNKaGNDNW9ZWE5QZDI1UWNtOXdaWEowZVNodWIyUmxUbUZ0WlNrcElIdGNiaUFnSUNCdWIyUmxUbUZ0WlNBOUlDY3FKenRjYmlBZ2ZWeHVJQ0JwWmlBb0lYTm9iM1ZzWkZkeVlYQXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtOWtaVTVoYldVcEtTQjdYRzRnSUNBZ2FXWWdLRzV2WkdWT1lXMWxJRDA5UFNBbktpY3BJSHRjYmlBZ0lDQWdJR1IxYlcxNVRtOWtaUzVwYm01bGNraFVUVXdnUFNBblBHeHBibXNnTHo0bk8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JrZFcxdGVVNXZaR1V1YVc1dVpYSklWRTFNSUQwZ0p6d25JQ3NnYm05a1pVNWhiV1VnS3lBblBqd3ZKeUFySUc1dlpHVk9ZVzFsSUNzZ0p6NG5PMXh1SUNBZ0lIMWNiaUFnSUNCemFHOTFiR1JYY21Gd1cyNXZaR1ZPWVcxbFhTQTlJQ0ZrZFcxdGVVNXZaR1V1Wm1seWMzUkRhR2xzWkR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYzJodmRXeGtWM0poY0Z0dWIyUmxUbUZ0WlYwZ1B5QnRZWEpyZFhCWGNtRndXMjV2WkdWT1lXMWxYU0E2SUc1MWJHdzdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1oyVjBUV0Z5YTNWd1YzSmhjRHNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvblxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogR2V0cyB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBzdXBwbGllZCBlbGVtZW50IG9yIHdpbmRvdy5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlcyBhcmUgdW5ib3VuZGVkLCB1bmxpa2UgYGdldFNjcm9sbFBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGV5XG4gKiBtYXkgYmUgbmVnYXRpdmUgb3IgZXhjZWVkIHRoZSBlbGVtZW50IGJvdW5kYXJpZXMgKHdoaWNoIGlzIHBvc3NpYmxlIHVzaW5nXG4gKiBpbmVydGlhbCBzY3JvbGxpbmcpLlxuICpcbiAqIEBwYXJhbSB7RE9NV2luZG93fERPTUVsZW1lbnR9IHNjcm9sbGFibGVcbiAqIEByZXR1cm4ge29iamVjdH0gTWFwIHdpdGggYHhgIGFuZCBgeWAga2V5cy5cbiAqL1xuZnVuY3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkge1xuICBpZiAoc2Nyb2xsYWJsZSA9PT0gd2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHk6IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNjcm9sbGFibGUuc2Nyb2xsTGVmdCxcbiAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRvcFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBoeXBoZW5hdGVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3VwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xuXG4vKipcbiAqIEh5cGhlbmF0ZXMgYSBjYW1lbGNhc2VkIHN0cmluZywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGh5cGhlbmF0ZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmQtY29sb3JcIlxuICpcbiAqIEZvciBDU1Mgc3R5bGUgbmFtZXMsIHVzZSBgaHlwaGVuYXRlU3R5bGVOYW1lYCBpbnN0ZWFkIHdoaWNoIHdvcmtzIHByb3Blcmx5XG4gKiB3aXRoIGFsbCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGluZyBgbXNgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gaHlwaGVuYXRlKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX3VwcGVyY2FzZVBhdHRlcm4sICctJDEnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaHlwaGVuYXRlU3R5bGVOYW1lXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGh5cGhlbmF0ZSA9IHJlcXVpcmUoJy4vaHlwaGVuYXRlJyk7XG5cbnZhciBtc1BhdHRlcm4gPSAvXm1zLS87XG5cbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91bmRDb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ01velRyYW5zaXRpb24nKVxuICogICA8IFwiLW1vei10cmFuc2l0aW9uXCJcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ21zVHJhbnNpdGlvbicpXG4gKiAgIDwgXCItbXMtdHJhbnNpdGlvblwiXG4gKlxuICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8vbW9kZXJuaXpyLmNvbS9kb2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4XG4gKiBpcyBjb252ZXJ0ZWQgdG8gYC1tcy1gLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4gaHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaW52YXJpYW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxuICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgaW52YXJpYW50ID0gZnVuY3Rpb24gKGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcignSW52YXJpYW50IFZpb2xhdGlvbjogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTlwYm5aaGNtbGhiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ2FXNTJZWEpwWVc1MFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc0dktpcGNiaUFxSUZWelpTQnBiblpoY21saGJuUW9LU0IwYnlCaGMzTmxjblFnYzNSaGRHVWdkMmhwWTJnZ2VXOTFjaUJ3Y205bmNtRnRJR0Z6YzNWdFpYTWdkRzhnWW1VZ2RISjFaUzVjYmlBcVhHNGdLaUJRY205MmFXUmxJSE53Y21sdWRHWXRjM1I1YkdVZ1ptOXliV0YwSUNodmJteDVJQ1Z6SUdseklITjFjSEJ2Y25SbFpDa2dZVzVrSUdGeVozVnRaVzUwYzF4dUlDb2dkRzhnY0hKdmRtbGtaU0JwYm1admNtMWhkR2x2YmlCaFltOTFkQ0IzYUdGMElHSnliMnRsSUdGdVpDQjNhR0YwSUhsdmRTQjNaWEpsWEc0Z0tpQmxlSEJsWTNScGJtY3VYRzRnS2x4dUlDb2dWR2hsSUdsdWRtRnlhV0Z1ZENCdFpYTnpZV2RsSUhkcGJHd2dZbVVnYzNSeWFYQndaV1FnYVc0Z2NISnZaSFZqZEdsdmJpd2dZblYwSUhSb1pTQnBiblpoY21saGJuUmNiaUFxSUhkcGJHd2djbVZ0WVdsdUlIUnZJR1Z1YzNWeVpTQnNiMmRwWXlCa2IyVnpJRzV2ZENCa2FXWm1aWElnYVc0Z2NISnZaSFZqZEdsdmJpNWNiaUFxTDF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ1puVnVZM1JwYjI0Z0tHTnZibVJwZEdsdmJpd2dabTl5YldGMExDQmhMQ0JpTENCakxDQmtMQ0JsTENCbUtTQjdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdhV1lnS0dadmNtMWhkQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oybHVkbUZ5YVdGdWRDQnlaWEYxYVhKbGN5QmhiaUJsY25KdmNpQnRaWE56WVdkbElHRnlaM1Z0Wlc1MEp5azdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdhV1lnS0NGamIyNWthWFJwYjI0cElIdGNiaUFnSUNCMllYSWdaWEp5YjNJN1hHNGdJQ0FnYVdZZ0tHWnZjbTFoZENBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JsY25KdmNpQTlJRzVsZHlCRmNuSnZjaWduVFdsdWFXWnBaV1FnWlhoalpYQjBhVzl1SUc5alkzVnljbVZrT3lCMWMyVWdkR2hsSUc1dmJpMXRhVzVwWm1sbFpDQmtaWFlnWlc1MmFYSnZibTFsYm5RZ0p5QXJJQ2RtYjNJZ2RHaGxJR1oxYkd3Z1pYSnliM0lnYldWemMyRm5aU0JoYm1RZ1lXUmthWFJwYjI1aGJDQm9aV3h3Wm5Wc0lIZGhjbTVwYm1kekxpY3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMllYSWdZWEpuY3lBOUlGdGhMQ0JpTENCakxDQmtMQ0JsTENCbVhUdGNiaUFnSUNBZ0lIWmhjaUJoY21kSmJtUmxlQ0E5SURBN1hHNGdJQ0FnSUNCbGNuSnZjaUE5SUc1bGR5QkZjbkp2Y2lnblNXNTJZWEpwWVc1MElGWnBiMnhoZEdsdmJqb2dKeUFySUdadmNtMWhkQzV5WlhCc1lXTmxLQzhsY3k5bkxDQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoY21kelcyRnlaMGx1WkdWNEt5dGRPMXh1SUNBZ0lDQWdmU2twTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1Z5Y205eUxtWnlZVzFsYzFSdlVHOXdJRDBnTVRzZ0x5OGdkMlVnWkc5dUozUWdZMkZ5WlNCaFltOTFkQ0JwYm5aaGNtbGhiblFuY3lCdmQyNGdabkpoYldWY2JpQWdJQ0IwYUhKdmR5Qmxjbkp2Y2p0Y2JpQWdmVnh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnBiblpoY21saGJuUTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGlzTm9kZVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgb2JqZWN0IGlzIGEgRE9NIG5vZGUuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gaXNOb2RlKG9iamVjdCkge1xuICByZXR1cm4gISEob2JqZWN0ICYmICh0eXBlb2YgTm9kZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBpbnN0YW5jZW9mIE5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVOYW1lID09PSAnc3RyaW5nJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaXNUZXh0Tm9kZVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL2lzTm9kZScpO1xuXG4vKipcbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgb2JqZWN0IGlzIGEgRE9NIHRleHQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Tm9kZShvYmplY3QpIHtcbiAgcmV0dXJuIGlzTm9kZShvYmplY3QpICYmIG9iamVjdC5ub2RlVHlwZSA9PSAzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVGV4dE5vZGU7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBrZXlNaXJyb3JcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGFuIGVudW1lcmF0aW9uIHdpdGgga2V5cyBlcXVhbCB0byB0aGVpciB2YWx1ZS5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiAgIHZhciBDT0xPUlMgPSBrZXlNaXJyb3Ioe2JsdWU6IG51bGwsIHJlZDogbnVsbH0pO1xuICogICB2YXIgbXlDb2xvciA9IENPTE9SUy5ibHVlO1xuICogICB2YXIgaXNDb2xvclZhbGlkID0gISFDT0xPUlNbbXlDb2xvcl07XG4gKlxuICogVGhlIGxhc3QgbGluZSBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGlmIHRoZSB2YWx1ZXMgb2YgdGhlIGdlbmVyYXRlZCBlbnVtIHdlcmVcbiAqIG5vdCBlcXVhbCB0byB0aGVpciBrZXlzLlxuICpcbiAqICAgSW5wdXQ6ICB7a2V5MTogdmFsMSwga2V5MjogdmFsMn1cbiAqICAgT3V0cHV0OiB7a2V5MToga2V5MSwga2V5Mjoga2V5Mn1cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbnZhciBrZXlNaXJyb3IgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciByZXQgPSB7fTtcbiAgdmFyIGtleTtcbiAgIShvYmogaW5zdGFuY2VvZiBPYmplY3QgJiYgIUFycmF5LmlzQXJyYXkob2JqKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAna2V5TWlycm9yKC4uLik6IEFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJldFtrZXldID0ga2V5O1xuICB9XG4gIHJldHVybiByZXQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGtleU1pcnJvcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OW1ZbXB6TDJ4cFlpOXJaWGxOYVhKeWIzSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElHdGxlVTFwY25KdmNseHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NjdUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc0dktpcGNiaUFxSUVOdmJuTjBjblZqZEhNZ1lXNGdaVzUxYldWeVlYUnBiMjRnZDJsMGFDQnJaWGx6SUdWeGRXRnNJSFJ2SUhSb1pXbHlJSFpoYkhWbExseHVJQ3BjYmlBcUlFWnZjaUJsZUdGdGNHeGxPbHh1SUNwY2JpQXFJQ0FnZG1GeUlFTlBURTlTVXlBOUlHdGxlVTFwY25KdmNpaDdZbXgxWlRvZ2JuVnNiQ3dnY21Wa09pQnVkV3hzZlNrN1hHNGdLaUFnSUhaaGNpQnRlVU52Ykc5eUlEMGdRMDlNVDFKVExtSnNkV1U3WEc0Z0tpQWdJSFpoY2lCcGMwTnZiRzl5Vm1Gc2FXUWdQU0FoSVVOUFRFOVNVMXR0ZVVOdmJHOXlYVHRjYmlBcVhHNGdLaUJVYUdVZ2JHRnpkQ0JzYVc1bElHTnZkV3hrSUc1dmRDQmlaU0J3WlhKbWIzSnRaV1FnYVdZZ2RHaGxJSFpoYkhWbGN5QnZaaUIwYUdVZ1oyVnVaWEpoZEdWa0lHVnVkVzBnZDJWeVpWeHVJQ29nYm05MElHVnhkV0ZzSUhSdklIUm9aV2x5SUd0bGVYTXVYRzRnS2x4dUlDb2dJQ0JKYm5CMWREb2dJSHRyWlhreE9pQjJZV3d4TENCclpYa3lPaUIyWVd3eWZWeHVJQ29nSUNCUGRYUndkWFE2SUh0clpYa3hPaUJyWlhreExDQnJaWGt5T2lCclpYa3lmVnh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnZZbXBjYmlBcUlFQnlaWFIxY200Z2UyOWlhbVZqZEgxY2JpQXFMMXh1ZG1GeUlHdGxlVTFwY25KdmNpQTlJR1oxYm1OMGFXOXVJQ2h2WW1vcElIdGNiaUFnZG1GeUlISmxkQ0E5SUh0OU8xeHVJQ0IyWVhJZ2EyVjVPMXh1SUNBaEtHOWlhaUJwYm5OMFlXNWpaVzltSUU5aWFtVmpkQ0FtSmlBaFFYSnlZWGt1YVhOQmNuSmhlU2h2WW1vcEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkclpYbE5hWEp5YjNJb0xpNHVLVG9nUVhKbmRXMWxiblFnYlhWemRDQmlaU0JoYmlCdlltcGxZM1F1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCbWIzSWdLR3RsZVNCcGJpQnZZbW9wSUh0Y2JpQWdJQ0JwWmlBb0lXOWlhaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHJaWGtwS1NCN1hHNGdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwVzJ0bGVWMGdQU0JyWlhrN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhKbGREdGNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2EyVjVUV2x5Y205eU95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGtleU9mXG4gKi9cblxuLyoqXG4gKiBBbGxvd3MgZXh0cmFjdGlvbiBvZiBhIG1pbmlmaWVkIGtleS4gTGV0J3MgdGhlIGJ1aWxkIHN5c3RlbSBtaW5pZnkga2V5c1xuICogd2l0aG91dCBsb3NpbmcgdGhlIGFiaWxpdHkgdG8gZHluYW1pY2FsbHkgdXNlIGtleSBzdHJpbmdzIGFzIHZhbHVlc1xuICogdGhlbXNlbHZlcy4gUGFzcyBpbiBhbiBvYmplY3Qgd2l0aCBhIHNpbmdsZSBrZXkvdmFsIHBhaXIgYW5kIGl0IHdpbGwgcmV0dXJuXG4gKiB5b3UgdGhlIHN0cmluZyBrZXkgb2YgdGhhdCBzaW5nbGUgcmVjb3JkLiBTdXBwb3NlIHlvdSB3YW50IHRvIGdyYWIgdGhlXG4gKiB2YWx1ZSBmb3IgYSBrZXkgJ2NsYXNzTmFtZScgaW5zaWRlIG9mIGFuIG9iamVjdC4gS2V5L3ZhbCBtaW5pZmljYXRpb24gbWF5XG4gKiBoYXZlIGFsaWFzZWQgdGhhdCBrZXkgdG8gYmUgJ3hhMTInLiBrZXlPZih7Y2xhc3NOYW1lOiBudWxsfSkgd2lsbCByZXR1cm5cbiAqICd4YTEyJyBpbiB0aGF0IGNhc2UuIFJlc29sdmUga2V5cyB5b3Ugd2FudCB0byB1c2Ugb25jZSBhdCBzdGFydHVwIHRpbWUsIHRoZW5cbiAqIHJldXNlIHRob3NlIHJlc29sdXRpb25zLlxuICovXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGtleU9mID0gZnVuY3Rpb24gKG9uZUtleU9iaikge1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBvbmVLZXlPYmopIHtcbiAgICBpZiAoIW9uZUtleU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5T2Y7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIG1hcE9iamVjdFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBFeGVjdXRlcyB0aGUgcHJvdmlkZWQgYGNhbGxiYWNrYCBvbmNlIGZvciBlYWNoIGVudW1lcmFibGUgb3duIHByb3BlcnR5IGluIHRoZVxuICogb2JqZWN0IGFuZCBjb25zdHJ1Y3RzIGEgbmV3IG9iamVjdCBmcm9tIHRoZSByZXN1bHRzLiBUaGUgYGNhbGxiYWNrYCBpc1xuICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAqXG4gKiAgLSB0aGUgcHJvcGVydHkgdmFsdWVcbiAqICAtIHRoZSBwcm9wZXJ0eSBuYW1lXG4gKiAgLSB0aGUgb2JqZWN0IGJlaW5nIHRyYXZlcnNlZFxuICpcbiAqIFByb3BlcnRpZXMgdGhhdCBhcmUgYWRkZWQgYWZ0ZXIgdGhlIGNhbGwgdG8gYG1hcE9iamVjdGAgd2lsbCBub3QgYmUgdmlzaXRlZFxuICogYnkgYGNhbGxiYWNrYC4gSWYgdGhlIHZhbHVlcyBvZiBleGlzdGluZyBwcm9wZXJ0aWVzIGFyZSBjaGFuZ2VkLCB0aGUgdmFsdWVcbiAqIHBhc3NlZCB0byBgY2FsbGJhY2tgIHdpbGwgYmUgdGhlIHZhbHVlIGF0IHRoZSB0aW1lIGBtYXBPYmplY3RgIHZpc2l0cyB0aGVtLlxuICogUHJvcGVydGllcyB0aGF0IGFyZSBkZWxldGVkIGJlZm9yZSBiZWluZyB2aXNpdGVkIGFyZSBub3QgdmlzaXRlZC5cbiAqXG4gKiBAZ3JlcCBmdW5jdGlvbiBvYmplY3RNYXAoKVxuICogQGdyZXAgZnVuY3Rpb24gb2JqTWFwKClcbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0gY29udGV4dFxuICogQHJldHVybiB7P29iamVjdH1cbiAqL1xuZnVuY3Rpb24gbWFwT2JqZWN0KG9iamVjdCwgY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgaWYgKCFvYmplY3QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgcmVzdWx0ID0ge307XG4gIGZvciAodmFyIG5hbWUgaW4gb2JqZWN0KSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBuYW1lKSkge1xuICAgICAgcmVzdWx0W25hbWVdID0gY2FsbGJhY2suY2FsbChjb250ZXh0LCBvYmplY3RbbmFtZV0sIG5hbWUsIG9iamVjdCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwT2JqZWN0OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBtZW1vaXplU3RyaW5nT25seVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTWVtb2l6ZXMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBvbmUgc3RyaW5nIGFyZ3VtZW50LlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZVN0cmluZ09ubHkoY2FsbGJhY2spIHtcbiAgdmFyIGNhY2hlID0ge307XG4gIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJpbmcpKSB7XG4gICAgICBjYWNoZVtzdHJpbmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdHJpbmcpO1xuICAgIH1cbiAgICByZXR1cm4gY2FjaGVbc3RyaW5nXTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplU3RyaW5nT25seTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgcGVyZm9ybWFuY2VcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBwZXJmb3JtYW5jZTtcblxuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICBwZXJmb3JtYW5jZSA9IHdpbmRvdy5wZXJmb3JtYW5jZSB8fCB3aW5kb3cubXNQZXJmb3JtYW5jZSB8fCB3aW5kb3cud2Via2l0UGVyZm9ybWFuY2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGVyZm9ybWFuY2UgfHwge307IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHBlcmZvcm1hbmNlTm93XG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHBlcmZvcm1hbmNlID0gcmVxdWlyZSgnLi9wZXJmb3JtYW5jZScpO1xudmFyIGN1clBlcmZvcm1hbmNlID0gcGVyZm9ybWFuY2U7XG5cbi8qKlxuICogRGV0ZWN0IGlmIHdlIGNhbiB1c2UgYHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKWAgYW5kIGdyYWNlZnVsbHkgZmFsbGJhY2sgdG9cbiAqIGBEYXRlLm5vdygpYCBpZiBpdCBkb2Vzbid0IGV4aXN0LiBXZSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCA8IDE1IGZvciBub3dcbiAqIGJlY2F1c2Ugb2YgRmFjZWJvb2sncyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLlxuICovXG5pZiAoIWN1clBlcmZvcm1hbmNlIHx8ICFjdXJQZXJmb3JtYW5jZS5ub3cpIHtcbiAgY3VyUGVyZm9ybWFuY2UgPSBEYXRlO1xufVxuXG52YXIgcGVyZm9ybWFuY2VOb3cgPSBjdXJQZXJmb3JtYW5jZS5ub3cuYmluZChjdXJQZXJmb3JtYW5jZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGVyZm9ybWFuY2VOb3c7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHNoYWxsb3dFcXVhbFxuICogQHR5cGVjaGVja3NcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBQZXJmb3JtcyBlcXVhbGl0eSBieSBpdGVyYXRpbmcgdGhyb3VnaCBrZXlzIG9uIGFuIG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNlXG4gKiB3aGVuIGFueSBrZXkgaGFzIHZhbHVlcyB3aGljaCBhcmUgbm90IHN0cmljdGx5IGVxdWFsIGJldHdlZW4gdGhlIGFyZ3VtZW50cy5cbiAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZXMgb2YgYWxsIGtleXMgYXJlIHN0cmljdGx5IGVxdWFsLlxuICovXG5mdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQikge1xuICBpZiAob2JqQSA9PT0gb2JqQikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuXG4gIHZhciBiSGFzT3duUHJvcGVydHkgPSBoYXNPd25Qcm9wZXJ0eS5iaW5kKG9iakIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFiSGFzT3duUHJvcGVydHkoa2V5c0FbaV0pIHx8IG9iakFba2V5c0FbaV1dICE9PSBvYmpCW2tleXNBW2ldXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dFcXVhbDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHRvQXJyYXlcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBDb252ZXJ0IGFycmF5LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMuXG4gKlxuICogVGhpcyBBUEkgYXNzdW1lcyB0aGUgY2FsbGVyIGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVzc1xuICogd2VsbCBkZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9ialxuICogQHJldHVybiB7YXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG4gIHZhciBsZW5ndGggPSBvYmoubGVuZ3RoO1xuXG4gIC8vIFNvbWUgYnJvd3NlIGJ1aWx0aW4gb2JqZWN0cyBjYW4gcmVwb3J0IHR5cGVvZiAnZnVuY3Rpb24nIChlLmcuIE5vZGVMaXN0IGluXG4gIC8vIG9sZCB2ZXJzaW9ucyBvZiBTYWZhcmkpLlxuICAhKCFBcnJheS5pc0FycmF5KG9iaikgJiYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAhKHR5cGVvZiBsZW5ndGggPT09ICdudW1iZXInKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVydHknKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgIShsZW5ndGggPT09IDAgfHwgbGVuZ3RoIC0gMSBpbiBvYmopID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBzaG91bGQgaGF2ZSBrZXlzIGZvciBpbmRpY2VzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIC8vIE9sZCBJRSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNzIHRvIGhhc093blByb3BlcnR5LiBBc3N1bWUgaW5wdXRzXG4gIC8vIHdpdGhvdXQgbWV0aG9kIHdpbGwgdGhyb3cgZHVyaW5nIHRoZSBzbGljZSBjYWxsIGFuZCBza2lwIHN0cmFpZ2h0IHRvIHRoZVxuICAvLyBmYWxsYmFjay5cbiAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBJRSA8IDkgZG9lcyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBjb2xsZWN0aW9ucyBvYmplY3RzXG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5IGJ5IGtleS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSxcbiAgLy8gc28gd2lsbCBub3QgcHJlc2VydmUgc3BhcnNlbHkgcG9wdWxhdGVkIGlucHV0cy5cbiAgdmFyIHJldCA9IEFycmF5KGxlbmd0aCk7XG4gIGZvciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcbiAgICByZXRbaWldID0gb2JqW2lpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvQXJyYXk7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTkwYjBGeWNtRjVMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQjBiMEZ5Y21GNVhHNGdLaUJBZEhsd1pXTm9aV05yYzF4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KeTR2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dRMjl1ZG1WeWRDQmhjbkpoZVMxc2FXdGxJRzlpYW1WamRITWdkRzhnWVhKeVlYbHpMbHh1SUNwY2JpQXFJRlJvYVhNZ1FWQkpJR0Z6YzNWdFpYTWdkR2hsSUdOaGJHeGxjaUJyYm05M2N5QjBhR1VnWTI5dWRHVnVkSE1nYjJZZ2RHaGxJR1JoZEdFZ2RIbHdaUzRnUm05eUlHeGxjM05jYmlBcUlIZGxiR3dnWkdWbWFXNWxaQ0JwYm5CMWRITWdkWE5sSUdOeVpXRjBaVUZ5Y21GNVJuSnZiVTFwZUdWa0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2IySnFaV04wZkdaMWJtTjBhVzl1ZkdacGJHVnNhWE4wZlNCdlltcGNiaUFxSUVCeVpYUjFjbTRnZTJGeWNtRjVmVnh1SUNvdlhHNW1kVzVqZEdsdmJpQjBiMEZ5Y21GNUtHOWlhaWtnZTF4dUlDQjJZWElnYkdWdVozUm9JRDBnYjJKcUxteGxibWQwYUR0Y2JseHVJQ0F2THlCVGIyMWxJR0p5YjNkelpTQmlkV2xzZEdsdUlHOWlhbVZqZEhNZ1kyRnVJSEpsY0c5eWRDQjBlWEJsYjJZZ0oyWjFibU4wYVc5dUp5QW9aUzVuTGlCT2IyUmxUR2x6ZENCcGJseHVJQ0F2THlCdmJHUWdkbVZ5YzJsdmJuTWdiMllnVTJGbVlYSnBLUzVjYmlBZ0lTZ2hRWEp5WVhrdWFYTkJjbkpoZVNodlltb3BJQ1ltSUNoMGVYQmxiMllnYjJKcUlEMDlQU0FuYjJKcVpXTjBKeUI4ZkNCMGVYQmxiMllnYjJKcUlEMDlQU0FuWm5WdVkzUnBiMjRuS1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuZEc5QmNuSmhlVG9nUVhKeVlYa3RiR2xyWlNCdlltcGxZM1FnWlhod1pXTjBaV1FuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lTaDBlWEJsYjJZZ2JHVnVaM1JvSUQwOVBTQW5iblZ0WW1WeUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRHOUJjbkpoZVRvZ1QySnFaV04wSUc1bFpXUnpJR0VnYkdWdVozUm9JSEJ5YjNCbGNuUjVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNFb2JHVnVaM1JvSUQwOVBTQXdJSHg4SUd4bGJtZDBhQ0F0SURFZ2FXNGdiMkpxS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2QwYjBGeWNtRjVPaUJQWW1wbFkzUWdjMmh2ZFd4a0lHaGhkbVVnYTJWNWN5Qm1iM0lnYVc1a2FXTmxjeWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBdkx5QlBiR1FnU1VVZ1pHOWxjMjRuZENCbmFYWmxJR052Ykd4bFkzUnBiMjV6SUdGalkyVnpjeUIwYnlCb1lYTlBkMjVRY205d1pYSjBlUzRnUVhOemRXMWxJR2x1Y0hWMGMxeHVJQ0F2THlCM2FYUm9iM1YwSUcxbGRHaHZaQ0IzYVd4c0lIUm9jbTkzSUdSMWNtbHVaeUIwYUdVZ2MyeHBZMlVnWTJGc2JDQmhibVFnYzJ0cGNDQnpkSEpoYVdkb2RDQjBieUIwYUdWY2JpQWdMeThnWm1Gc2JHSmhZMnN1WEc0Z0lHbG1JQ2h2WW1vdWFHRnpUM2R1VUhKdmNHVnlkSGtwSUh0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YkdsalpTNWpZV3hzS0c5aWFpazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdMeThnU1VVZ1BDQTVJR1J2WlhNZ2JtOTBJSE4xY0hCdmNuUWdRWEp5WVhramMyeHBZMlVnYjI0Z1kyOXNiR1ZqZEdsdmJuTWdiMkpxWldOMGMxeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHZJRVpoYkd3Z1ltRmpheUIwYnlCamIzQjVhVzVuSUd0bGVTQmllU0JyWlhrdUlGUm9hWE1nWVhOemRXMWxjeUJoYkd3Z2EyVjVjeUJvWVhabElHRWdkbUZzZFdVc1hHNGdJQzh2SUhOdklIZHBiR3dnYm05MElIQnlaWE5sY25abElITndZWEp6Wld4NUlIQnZjSFZzWVhSbFpDQnBibkIxZEhNdVhHNGdJSFpoY2lCeVpYUWdQU0JCY25KaGVTaHNaVzVuZEdncE8xeHVJQ0JtYjNJZ0tIWmhjaUJwYVNBOUlEQTdJR2xwSUR3Z2JHVnVaM1JvT3lCcGFTc3JLU0I3WEc0Z0lDQWdjbVYwVzJscFhTQTlJRzlpYWx0cGFWMDdYRzRnSUgxY2JpQWdjbVYwZFhKdUlISmxkRHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQjBiMEZ5Y21GNU95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB3YXJuaW5nXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJy4vZW1wdHlGdW5jdGlvbicpO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xuXG52YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rpb247XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHdhcm5pbmcgPSBmdW5jdGlvbiAoY29uZGl0aW9uLCBmb3JtYXQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7XG4gICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suXG4gICAgfVxuXG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGNhdGNoICh4KSB7fVxuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5bVltcHpMMnhwWWk5M1lYSnVhVzVuTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0IzWVhKdWFXNW5YRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWlcxd2RIbEdkVzVqZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2Wlcxd2RIbEdkVzVqZEdsdmJpY3BPMXh1WEc0dktpcGNiaUFxSUZOcGJXbHNZWElnZEc4Z2FXNTJZWEpwWVc1MElHSjFkQ0J2Ym14NUlHeHZaM01nWVNCM1lYSnVhVzVuSUdsbUlIUm9aU0JqYjI1a2FYUnBiMjRnYVhNZ2JtOTBJRzFsZEM1Y2JpQXFJRlJvYVhNZ1kyRnVJR0psSUhWelpXUWdkRzhnYkc5bklHbHpjM1ZsY3lCcGJpQmtaWFpsYkc5d2JXVnVkQ0JsYm5acGNtOXViV1Z1ZEhNZ2FXNGdZM0pwZEdsallXeGNiaUFxSUhCaGRHaHpMaUJTWlcxdmRtbHVaeUIwYUdVZ2JHOW5aMmx1WnlCamIyUmxJR1p2Y2lCd2NtOWtkV04wYVc5dUlHVnVkbWx5YjI1dFpXNTBjeUIzYVd4c0lHdGxaWEFnZEdobFhHNGdLaUJ6WVcxbElHeHZaMmxqSUdGdVpDQm1iMnhzYjNjZ2RHaGxJSE5oYldVZ1kyOWtaU0J3WVhSb2N5NWNiaUFxTDF4dVhHNTJZWElnZDJGeWJtbHVaeUE5SUdWdGNIUjVSblZ1WTNScGIyNDdYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIZGhjbTVwYm1jZ1BTQm1kVzVqZEdsdmJpQW9ZMjl1WkdsMGFXOXVMQ0JtYjNKdFlYUXBJSHRjYmlBZ0lDQm1iM0lnS0haaGNpQmZiR1Z1SUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN3Z1lYSm5jeUE5SUVGeWNtRjVLRjlzWlc0Z1BpQXlJRDhnWDJ4bGJpQXRJRElnT2lBd0tTd2dYMnRsZVNBOUlESTdJRjlyWlhrZ1BDQmZiR1Z1T3lCZmEyVjVLeXNwSUh0Y2JpQWdJQ0FnSUdGeVozTmJYMnRsZVNBdElESmRJRDBnWVhKbmRXMWxiblJ6VzE5clpYbGRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2htYjNKdFlYUWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkZ2QyRnlibWx1WnloamIyNWthWFJwYjI0c0lHWnZjbTFoZEN3Z0xpNHVZWEpuY3lsZ0lISmxjWFZwY21WeklHRWdkMkZ5Ym1sdVp5QW5JQ3NnSjIxbGMzTmhaMlVnWVhKbmRXMWxiblFuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1ptOXliV0YwTG1sdVpHVjRUMllvSjBaaGFXeGxaQ0JEYjIxd2IzTnBkR1VnY0hKdmNGUjVjR1U2SUNjcElEMDlQU0F3S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3SUM4dklFbG5ibTl5WlNCRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RZ2NISnZjSFI1Y0dVZ1kyaGxZMnN1WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGamIyNWthWFJwYjI0cElIdGNiaUFnSUNBZ0lIWmhjaUJoY21kSmJtUmxlQ0E5SURBN1hHNGdJQ0FnSUNCMllYSWdiV1Z6YzJGblpTQTlJQ2RYWVhKdWFXNW5PaUFuSUNzZ1ptOXliV0YwTG5KbGNHeGhZMlVvTHlWekwyY3NJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGeVozTmJZWEpuU1c1a1pYZ3JLMTA3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVjMjlzWlNBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWh0WlhOellXZGxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDOHZJQzB0TFNCWFpXeGpiMjFsSUhSdklHUmxZblZuWjJsdVp5QlNaV0ZqZENBdExTMWNiaUFnSUNBZ0lDQWdMeThnVkdocGN5Qmxjbkp2Y2lCM1lYTWdkR2h5YjNkdUlHRnpJR0VnWTI5dWRtVnVhV1Z1WTJVZ2MyOGdkR2hoZENCNWIzVWdZMkZ1SUhWelpTQjBhR2x6SUhOMFlXTnJYRzRnSUNBZ0lDQWdJQzh2SUhSdklHWnBibVFnZEdobElHTmhiR3h6YVhSbElIUm9ZWFFnWTJGMWMyVmtJSFJvYVhNZ2QyRnlibWx1WnlCMGJ5Qm1hWEpsTGx4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYldWemMyRm5aU2s3WEc0Z0lDQWdJQ0I5SUdOaGRHTm9JQ2g0S1NCN2ZWeHVJQ0FnSUgxY2JpQWdmVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQjNZWEp1YVc1bk95SmRmUT09IiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdERPTScpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbnZhciB1cGRhdGUgPSByZXF1aXJlKCdyZWFjdC1hZGRvbnMtdXBkYXRlJyk7XG5cbnZhciBUb2FzdE1lc3NhZ2UgPSBSZWFjdC5jcmVhdGVGYWN0b3J5KHJlcXVpcmUoXCIuL1RvYXN0TWVzc2FnZVwiKSk7XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgZGlzcGxheU5hbWU6IFwiVG9hc3RDb250YWluZXJcIixcblxuICBlcnJvcjogZnVuY3Rpb24gZXJyb3IobWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSkge1xuICAgIHRoaXMuX25vdGlmeSh0aGlzLnByb3BzLnRvYXN0VHlwZS5lcnJvciwgbWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSk7XG4gIH0sXG5cbiAgaW5mbzogZnVuY3Rpb24gaW5mbyhtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKSB7XG4gICAgdGhpcy5fbm90aWZ5KHRoaXMucHJvcHMudG9hc3RUeXBlLmluZm8sIG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpO1xuICB9LFxuXG4gIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MobWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSkge1xuICAgIHRoaXMuX25vdGlmeSh0aGlzLnByb3BzLnRvYXN0VHlwZS5zdWNjZXNzLCBtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKTtcbiAgfSxcblxuICB3YXJuaW5nOiBmdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpIHtcbiAgICB0aGlzLl9ub3RpZnkodGhpcy5wcm9wcy50b2FzdFR5cGUud2FybmluZywgbWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSk7XG4gIH0sXG5cbiAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIHZhciByZWZzID0gdGhpcy5yZWZzO1xuICAgIHZhciBrZXk7XG4gICAgZm9yIChrZXkgaW4gcmVmcykge1xuICAgICAgcmVmc1trZXldLmhpZGVUb2FzdChmYWxzZSk7XG4gICAgfVxuICB9LFxuXG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3BzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b2FzdFR5cGU6IHtcbiAgICAgICAgZXJyb3I6IFwiZXJyb3JcIixcbiAgICAgICAgaW5mbzogXCJpbmZvXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwic3VjY2Vzc1wiLFxuICAgICAgICB3YXJuaW5nOiBcIndhcm5pbmdcIlxuICAgICAgfSxcbiAgICAgIGlkOiBcInRvYXN0LWNvbnRhaW5lclwiLFxuICAgICAgdG9hc3RNZXNzYWdlRmFjdG9yeTogVG9hc3RNZXNzYWdlLFxuICAgICAgcHJldmVudER1cGxpY2F0ZXM6IGZhbHNlLFxuICAgICAgbmV3ZXN0T25Ub3A6IHRydWUsXG4gICAgICBvbkNsaWNrOiBub29wXG4gICAgfTtcbiAgfSxcblxuICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9hc3RzOiBbXSxcbiAgICAgIHRvYXN0SWQ6IDAsXG4gICAgICBwcmV2aW91c01lc3NhZ2U6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXIodGhpcy5wcm9wcywgdGhpcy5zdGF0ZSk7XG4gIH0sXG5cbiAgX25vdGlmeTogZnVuY3Rpb24gX25vdGlmeSh0eXBlLCBtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKSB7XG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKHByb3BzLnByZXZlbnREdXBsaWNhdGVzKSB7XG4gICAgICBpZiAoc3RhdGUucHJldmlvdXNNZXNzYWdlID09PSBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGtleSA9IHN0YXRlLnRvYXN0SWQrKztcbiAgICB2YXIgdG9hc3RJZCA9IGtleTtcbiAgICB2YXIgbmV3VG9hc3QgPSB1cGRhdGUob3B0aW9uc092ZXJyaWRlIHx8IHt9LCB7XG4gICAgICAkbWVyZ2U6IHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICB0b2FzdElkOiB0b2FzdElkLFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgcmVmOiBcInRvYXN0c19fXCIgKyBrZXksXG4gICAgICAgIGhhbmRsZU9uQ2xpY2s6IHRoaXMuX2hhbmRsZV90b2FzdF9vbl9jbGljayxcbiAgICAgICAgaGFuZGxlUmVtb3ZlOiB0aGlzLl9oYW5kbGVfdG9hc3RfcmVtb3ZlXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIHRvYXN0T3BlcmF0aW9uID0ge307XG4gICAgdG9hc3RPcGVyYXRpb25bXCJcIiArIChwcm9wcy5uZXdlc3RPblRvcCA/IFwiJHVuc2hpZnRcIiA6IFwiJHB1c2hcIildID0gW25ld1RvYXN0XTtcblxuICAgIHZhciBuZXdTdGF0ZSA9IHVwZGF0ZShzdGF0ZSwge1xuICAgICAgdG9hc3RzOiB0b2FzdE9wZXJhdGlvbixcbiAgICAgIHByZXZpb3VzTWVzc2FnZTogeyAkc2V0OiBtZXNzYWdlIH1cbiAgICB9KTtcbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgfSxcblxuICBfaGFuZGxlX3RvYXN0X29uX2NsaWNrOiBmdW5jdGlvbiBfaGFuZGxlX3RvYXN0X29uX2NsaWNrKGV2ZW50KSB7XG4gICAgdGhpcy5wcm9wcy5vbkNsaWNrKGV2ZW50KTtcbiAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9LFxuXG4gIF9oYW5kbGVfdG9hc3RfcmVtb3ZlOiBmdW5jdGlvbiBfaGFuZGxlX3RvYXN0X3JlbW92ZSh0b2FzdElkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICBzdGF0ZS50b2FzdHNbXCJcIiArICh0aGlzLnByb3BzLm5ld2VzdE9uVG9wID8gXCJyZWR1Y2VSaWdodFwiIDogXCJyZWR1Y2VcIildKGZ1bmN0aW9uIChmb3VuZCwgdG9hc3QsIGluZGV4KSB7XG4gICAgICBpZiAoZm91bmQgfHwgdG9hc3QudG9hc3RJZCAhPT0gdG9hc3RJZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh1cGRhdGUoc3RhdGUsIHtcbiAgICAgICAgdG9hc3RzOiB7ICRzcGxpY2U6IFtbaW5kZXgsIDFdXSB9XG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LCBmYWxzZSk7XG4gIH0sXG5cbiAgX3JlbmRlcjogZnVuY3Rpb24gX3JlbmRlcihwcm9wcywgc3RhdGUpIHtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZGl2XCIsXG4gICAgICBfZXh0ZW5kcyh7fSwgcHJvcHMsIHsgXCJhcmlhLWxpdmVcIjogXCJwb2xpdGVcIiwgcm9sZTogXCJhbGVydFwiIH0pLFxuICAgICAgc3RhdGUudG9hc3RzLm1hcChmdW5jdGlvbiAodG9hc3QpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLnRvYXN0TWVzc2FnZUZhY3RvcnkodG9hc3QpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59KTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIENTU0NvcmUgPSByZXF1aXJlKFwiZmJqcy9saWIvQ1NTQ29yZVwiKTtcbnZhciBSZWFjdFRyYW5zaXRpb25FdmVudHMgPSByZXF1aXJlKFwicmVhY3QvbGliL1JlYWN0VHJhbnNpdGlvbkV2ZW50c1wiKTtcbnZhciBSZWFjdERPTSA9IHJlcXVpcmUoJ3JlYWN0LWRvbScpO1xudmFyIFRJQ0sgPSAxNztcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uIGdldERlZmF1bHRQcm9wcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNpdGlvbjogbnVsbCwgLy9zb21lIGV4YW1wbGVzIGRlZmluZWQgaW4gaW5kZXguc2NzcyAoc2NhbGUsIGZhZGVJbk91dCwgcm90YXRlKVxuICAgICAgc2hvd0FuaW1hdGlvbjogXCJhbmltYXRlZCBib3VuY2VJblwiLCAvL29yIG90aGVyIGFuaW1hdGlvbnMgZnJvbSBhbmltYXRlLmNzc1xuICAgICAgaGlkZUFuaW1hdGlvbjogXCJhbmltYXRlZCBib3VuY2VPdXRcIixcbiAgICAgIHRpbWVPdXQ6IDUwMDAsXG4gICAgICBleHRlbmRlZFRpbWVPdXQ6IDEwMDBcbiAgICB9O1xuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gY29tcG9uZW50V2lsbE1vdW50KCkge1xuICAgIHRoaXMuY2xhc3NOYW1lUXVldWUgPSBbXTtcbiAgICB0aGlzLmlzSGlkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbDtcbiAgfSxcblxuICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICB0aGlzLl9zaG93KHByb3BzKTtcblxuICAgIHZhciBvbkhpZGVDb21wbGV0ZSA9IGZ1bmN0aW9uIG9uSGlkZUNvbXBsZXRlKCkge1xuICAgICAgaWYgKF90aGlzLmlzSGlkaW5nKSB7XG4gICAgICAgIF90aGlzLl9zZXRfaXNfaGlkaW5nKGZhbHNlKTtcbiAgICAgICAgUmVhY3RUcmFuc2l0aW9uRXZlbnRzLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgb25IaWRlQ29tcGxldGUpO1xuICAgICAgICBfdGhpcy5faGFuZGxlX3JlbW92ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5hZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIG9uSGlkZUNvbXBsZXRlKTtcblxuICAgIGlmICgwIDwgcHJvcHMudGltZU91dCkge1xuICAgICAgdGhpcy5fc2V0X2ludGVydmFsX2lkKHNldFRpbWVvdXQodGhpcy5oaWRlVG9hc3QsIHByb3BzLnRpbWVPdXQpKTtcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbnRlcnZhbElkKTtcbiAgICB9XG4gIH0sXG4gIF9zZXRfdHJhbnNpdGlvbjogZnVuY3Rpb24gX3NldF90cmFuc2l0aW9uKGhpZGUpIHtcbiAgICB2YXIgYW5pbWF0aW9uVHlwZSA9IGhpZGUgPyBcImxlYXZlXCIgOiBcImVudGVyXCI7XG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcbiAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy50cmFuc2l0aW9uICsgXCItXCIgKyBhbmltYXRpb25UeXBlO1xuICAgIHZhciBhY3RpdmVDbGFzc05hbWUgPSBjbGFzc05hbWUgKyBcIi1hY3RpdmVcIjtcblxuICAgIHZhciBlbmRMaXN0ZW5lciA9IGZ1bmN0aW9uIGVuZExpc3RlbmVyKGUpIHtcbiAgICAgIGlmIChlICYmIGUudGFyZ2V0ICE9PSBub2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBjbGFzc05hbWUpO1xuICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBhY3RpdmVDbGFzc05hbWUpO1xuXG4gICAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMucmVtb3ZlRW5kRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7XG4gICAgfTtcblxuICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5hZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIGVuZExpc3RlbmVyKTtcblxuICAgIENTU0NvcmUuYWRkQ2xhc3Mobm9kZSwgY2xhc3NOYW1lKTtcblxuICAgIC8vIE5lZWQgdG8gZG8gdGhpcyB0byBhY3R1YWxseSB0cmlnZ2VyIGEgdHJhbnNpdGlvbi5cbiAgICB0aGlzLl9xdWV1ZV9jbGFzcyhhY3RpdmVDbGFzc05hbWUpO1xuICB9LFxuXG4gIF9jbGVhcl90cmFuc2l0aW9uOiBmdW5jdGlvbiBfY2xlYXJfdHJhbnNpdGlvbihoaWRlKSB7XG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcbiAgICB2YXIgYW5pbWF0aW9uVHlwZSA9IGhpZGUgPyBcImxlYXZlXCIgOiBcImVudGVyXCI7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMucHJvcHMudHJhbnNpdGlvbiArIFwiLVwiICsgYW5pbWF0aW9uVHlwZTtcbiAgICB2YXIgYWN0aXZlQ2xhc3NOYW1lID0gY2xhc3NOYW1lICsgXCItYWN0aXZlXCI7XG5cbiAgICBDU1NDb3JlLnJlbW92ZUNsYXNzKG5vZGUsIGNsYXNzTmFtZSk7XG4gICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBhY3RpdmVDbGFzc05hbWUpO1xuICB9LFxuXG4gIF9zZXRfYW5pbWF0aW9uOiBmdW5jdGlvbiBfc2V0X2FuaW1hdGlvbihoaWRlKSB7XG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcbiAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuX2dldF9hbmltYXRpb25fY2xhc3NlcyhoaWRlKTtcbiAgICB2YXIgZW5kTGlzdGVuZXIgPSBmdW5jdGlvbiBlbmRMaXN0ZW5lcihlKSB7XG4gICAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gbm9kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoYW5pbSkge1xuICAgICAgICBDU1NDb3JlLnJlbW92ZUNsYXNzKG5vZGUsIGFuaW0pO1xuICAgICAgfSk7XG5cbiAgICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5yZW1vdmVFbmRFdmVudExpc3RlbmVyKG5vZGUsIGVuZExpc3RlbmVyKTtcbiAgICB9O1xuXG4gICAgUmVhY3RUcmFuc2l0aW9uRXZlbnRzLmFkZEVuZEV2ZW50TGlzdGVuZXIobm9kZSwgZW5kTGlzdGVuZXIpO1xuXG4gICAgYW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChhbmltKSB7XG4gICAgICBDU1NDb3JlLmFkZENsYXNzKG5vZGUsIGFuaW0pO1xuICAgIH0pO1xuICB9LFxuXG4gIF9nZXRfYW5pbWF0aW9uX2NsYXNzZXM6IGZ1bmN0aW9uIF9nZXRfYW5pbWF0aW9uX2NsYXNzZXMoaGlkZSkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICB2YXIgYW5pbWF0aW9ucyA9IGhpZGUgPyBwcm9wcy5oaWRlQW5pbWF0aW9uIDogcHJvcHMuc2hvd0FuaW1hdGlvbjtcbiAgICBpZiAoXCJbb2JqZWN0IEFycmF5XVwiID09PSB0b1N0cmluZy5jYWxsKGFuaW1hdGlvbnMpKSB7XG4gICAgICByZXR1cm4gYW5pbWF0aW9ucztcbiAgICB9IGVsc2UgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBhbmltYXRpb25zKSB7XG4gICAgICByZXR1cm4gYW5pbWF0aW9ucy5zcGxpdChcIiBcIik7XG4gICAgfVxuICB9LFxuXG4gIF9jbGVhcl9hbmltYXRpb246IGZ1bmN0aW9uIF9jbGVhcl9hbmltYXRpb24oaGlkZSkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdmFyIGFuaW1hdGlvbnMgPSB0aGlzLl9nZXRfYW5pbWF0aW9uX2NsYXNzZXMoaGlkZSk7XG4gICAgYW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChhbmltYXRpb24pIHtcbiAgICAgIENTU0NvcmUucmVtb3ZlQ2xhc3MoUmVhY3RET00uZmluZERPTU5vZGUoX3RoaXMyKSwgYW5pbWF0aW9uKTtcbiAgICB9KTtcbiAgfSxcblxuICBfcXVldWVfY2xhc3M6IGZ1bmN0aW9uIF9xdWV1ZV9jbGFzcyhjbGFzc05hbWUpIHtcbiAgICB0aGlzLmNsYXNzTmFtZVF1ZXVlLnB1c2goY2xhc3NOYW1lKTtcblxuICAgIGlmICghdGhpcy50aW1lb3V0KSB7XG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX2ZsdXNoX2NsYXNzX25hbWVfcXVldWUsIFRJQ0spO1xuICAgIH1cbiAgfSxcblxuICBfZmx1c2hfY2xhc3NfbmFtZV9xdWV1ZTogZnVuY3Rpb24gX2ZsdXNoX2NsYXNzX25hbWVfcXVldWUoKSB7XG4gICAgaWYgKHRoaXMuaXNNb3VudGVkKCkpIHtcbiAgICAgIHRoaXMuY2xhc3NOYW1lUXVldWUuZm9yRWFjaChDU1NDb3JlLmFkZENsYXNzLmJpbmQoQ1NTQ29yZSwgUmVhY3RET00uZmluZERPTU5vZGUodGhpcykpKTtcbiAgICB9XG4gICAgdGhpcy5jbGFzc05hbWVRdWV1ZS5sZW5ndGggPSAwO1xuICAgIHRoaXMudGltZW91dCA9IG51bGw7XG4gIH0sXG5cbiAgX3Nob3c6IGZ1bmN0aW9uIF9zaG93KCkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAocHJvcHMudHJhbnNpdGlvbikge1xuICAgICAgdGhpcy5fc2V0X3RyYW5zaXRpb24oKTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnNob3dBbmltYXRpb24pIHtcbiAgICAgIHRoaXMuX3NldF9hbmltYXRpb24oKTtcbiAgICB9XG4gIH0sXG5cbiAgaGFuZGxlTW91c2VFbnRlcjogZnVuY3Rpb24gaGFuZGxlTW91c2VFbnRlcigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5pbnRlcnZhbElkKTtcbiAgICB0aGlzLl9zZXRfaW50ZXJ2YWxfaWQobnVsbCk7XG4gICAgaWYgKHRoaXMuaXNIaWRpbmcpIHtcbiAgICAgIHRoaXMuX3NldF9pc19oaWRpbmcoZmFsc2UpO1xuXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgICBpZiAocHJvcHMuaGlkZUFuaW1hdGlvbikge1xuICAgICAgICB0aGlzLl9jbGVhcl9hbmltYXRpb24odHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnRyYW5zaXRpb24pIHtcbiAgICAgICAgdGhpcy5fY2xlYXJfdHJhbnNpdGlvbih0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgaGFuZGxlTW91c2VMZWF2ZTogZnVuY3Rpb24gaGFuZGxlTW91c2VMZWF2ZSgpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKCF0aGlzLmlzSGlkaW5nICYmICgwIDwgcHJvcHMudGltZU91dCB8fCAwIDwgcHJvcHMuZXh0ZW5kZWRUaW1lT3V0KSkge1xuICAgICAgdGhpcy5fc2V0X2ludGVydmFsX2lkKHNldFRpbWVvdXQodGhpcy5oaWRlVG9hc3QsIHByb3BzLmV4dGVuZGVkVGltZU91dCkpO1xuICAgIH1cbiAgfSxcblxuICBoaWRlVG9hc3Q6IGZ1bmN0aW9uIGhpZGVUb2FzdChvdmVycmlkZSkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAodGhpcy5pc0hpZGluZyB8fCBudWxsID09IHRoaXMuaW50ZXJ2YWxJZCAmJiAhb3ZlcnJpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRfaXNfaGlkaW5nKHRydWUpO1xuICAgIGlmIChwcm9wcy50cmFuc2l0aW9uKSB7XG4gICAgICB0aGlzLl9zZXRfdHJhbnNpdGlvbih0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmhpZGVBbmltYXRpb24pIHtcbiAgICAgIHRoaXMuX3NldF9hbmltYXRpb24odHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hhbmRsZV9yZW1vdmUoKTtcbiAgICB9XG4gIH0sXG5cbiAgX3NldF9pbnRlcnZhbF9pZDogZnVuY3Rpb24gX3NldF9pbnRlcnZhbF9pZChpbnRlcnZhbElkKSB7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gaW50ZXJ2YWxJZDtcbiAgfSxcblxuICBfc2V0X2lzX2hpZGluZzogZnVuY3Rpb24gX3NldF9pc19oaWRpbmcoaXNIaWRpbmcpIHtcbiAgICB0aGlzLmlzSGlkaW5nID0gaXNIaWRpbmc7XG4gIH1cbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgdXBkYXRlID0gcmVxdWlyZSgncmVhY3QtYWRkb25zLXVwZGF0ZScpO1xudmFyIGN4ID0gcmVxdWlyZShcImNsYXNzbmFtZXNcIik7XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG52YXIgVG9hc3RNZXNzYWdlU3BlYyA9IHtcbiAgZGlzcGxheU5hbWU6IFwiVG9hc3RNZXNzYWdlXCIsXG5cbiAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiBnZXREZWZhdWx0UHJvcHMoKSB7XG4gICAgdmFyIGljb25DbGFzc05hbWVzID0ge1xuICAgICAgZXJyb3I6IFwidG9hc3QtZXJyb3JcIixcbiAgICAgIGluZm86IFwidG9hc3QtaW5mb1wiLFxuICAgICAgc3VjY2VzczogXCJ0b2FzdC1zdWNjZXNzXCIsXG4gICAgICB3YXJuaW5nOiBcInRvYXN0LXdhcm5pbmdcIlxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBcInRvYXN0XCIsXG4gICAgICBpY29uQ2xhc3NOYW1lczogaWNvbkNsYXNzTmFtZXMsXG4gICAgICB0aXRsZUNsYXNzTmFtZTogXCJ0b2FzdC10aXRsZVwiLFxuICAgICAgbWVzc2FnZUNsYXNzTmFtZTogXCJ0b2FzdC1tZXNzYWdlXCIsXG4gICAgICB0YXBUb0Rpc21pc3M6IHRydWUsXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGhhbmRsZU9uQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZU9uQ2xpY2soZXZlbnQpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgcHJvcHMuaGFuZGxlT25DbGljayhldmVudCk7XG4gICAgaWYgKHByb3BzLnRhcFRvRGlzbWlzcykge1xuICAgICAgdGhpcy5oaWRlVG9hc3QodHJ1ZSk7XG4gICAgfVxuICB9LFxuXG4gIF9oYW5kbGVfY2xvc2VfYnV0dG9uX2NsaWNrOiBmdW5jdGlvbiBfaGFuZGxlX2Nsb3NlX2J1dHRvbl9jbGljayhldmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaGlkZVRvYXN0KHRydWUpO1xuICB9LFxuXG4gIF9oYW5kbGVfcmVtb3ZlOiBmdW5jdGlvbiBfaGFuZGxlX3JlbW92ZSgpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgcHJvcHMuaGFuZGxlUmVtb3ZlKHByb3BzLnRvYXN0SWQpO1xuICB9LFxuXG4gIF9yZW5kZXJfY2xvc2VfYnV0dG9uOiBmdW5jdGlvbiBfcmVuZGVyX2Nsb3NlX2J1dHRvbihwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy5jbG9zZUJ1dHRvbiA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgeyBjbGFzc05hbWU6IFwidG9hc3QtY2xvc2UtYnV0dG9uXCIsIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9oYW5kbGVfY2xvc2VfYnV0dG9uX2NsaWNrLFxuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHsgX19odG1sOiBcIiZ0aW1lcztcIiB9XG4gICAgfSkgOiBmYWxzZTtcbiAgfSxcblxuICBfcmVuZGVyX3RpdGxlX2VsZW1lbnQ6IGZ1bmN0aW9uIF9yZW5kZXJfdGl0bGVfZWxlbWVudChwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy50aXRsZSA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImRpdlwiLFxuICAgICAgeyBjbGFzc05hbWU6IHByb3BzLnRpdGxlQ2xhc3NOYW1lIH0sXG4gICAgICBwcm9wcy50aXRsZVxuICAgICkgOiBmYWxzZTtcbiAgfSxcblxuICBfcmVuZGVyX21lc3NhZ2VfZWxlbWVudDogZnVuY3Rpb24gX3JlbmRlcl9tZXNzYWdlX2VsZW1lbnQocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMubWVzc2FnZSA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImRpdlwiLFxuICAgICAgeyBjbGFzc05hbWU6IHByb3BzLm1lc3NhZ2VDbGFzc05hbWUgfSxcbiAgICAgIHByb3BzLm1lc3NhZ2VcbiAgICApIDogZmFsc2U7XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgIHZhciBpY29uQ2xhc3NOYW1lID0gcHJvcHMuaWNvbkNsYXNzTmFtZSB8fCBwcm9wcy5pY29uQ2xhc3NOYW1lc1twcm9wcy50eXBlXTtcblxuICAgIHZhciB0b2FzdENsYXNzID0ge307XG4gICAgdG9hc3RDbGFzc1twcm9wcy5jbGFzc05hbWVdID0gdHJ1ZTtcbiAgICB0b2FzdENsYXNzW2ljb25DbGFzc05hbWVdID0gdHJ1ZTtcblxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgY2xhc3NOYW1lOiBjeCh0b2FzdENsYXNzKSwgc3R5bGU6IHByb3BzLnN0eWxlIHx8IHt9LFxuICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZU9uQ2xpY2ssXG4gICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5oYW5kbGVNb3VzZUVudGVyLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMuaGFuZGxlTW91c2VMZWF2ZSB9LFxuICAgICAgdGhpcy5fcmVuZGVyX2Nsb3NlX2J1dHRvbihwcm9wcyksXG4gICAgICB0aGlzLl9yZW5kZXJfdGl0bGVfZWxlbWVudChwcm9wcyksXG4gICAgICB0aGlzLl9yZW5kZXJfbWVzc2FnZV9lbGVtZW50KHByb3BzKVxuICAgICk7XG4gIH1cbn07XG5cbnZhciBhbmltYXRpb24gPSBSZWFjdC5jcmVhdGVDbGFzcyh1cGRhdGUoVG9hc3RNZXNzYWdlU3BlYywge1xuICBkaXNwbGF5TmFtZTogeyAkc2V0OiBcIlRvYXN0TWVzc2FnZS5hbmltYXRpb25cIiB9LFxuICBtaXhpbnM6IHsgJHNldDogW3JlcXVpcmUoXCIuL2FuaW1hdGlvbk1peGluXCIpXSB9XG59KSk7XG5cbnZhciBqUXVlcnkgPSBSZWFjdC5jcmVhdGVDbGFzcyh1cGRhdGUoVG9hc3RNZXNzYWdlU3BlYywge1xuICBkaXNwbGF5TmFtZTogeyAkc2V0OiBcIlRvYXN0TWVzc2FnZS5qUXVlcnlcIiB9LFxuICBtaXhpbnM6IHsgJHNldDogW3JlcXVpcmUoXCIuL2pRdWVyeU1peGluXCIpXSB9XG59KSk7XG5cbi8qXG4gKiBhc3NpZ24gZGVmYXVsdCBub29wIGZ1bmN0aW9uc1xuICovXG5Ub2FzdE1lc3NhZ2VTcGVjLmhhbmRsZU1vdXNlRW50ZXIgPSBub29wO1xuVG9hc3RNZXNzYWdlU3BlYy5oYW5kbGVNb3VzZUxlYXZlID0gbm9vcDtcblRvYXN0TWVzc2FnZVNwZWMuaGlkZVRvYXN0ID0gbm9vcDtcblxudmFyIFRvYXN0TWVzc2FnZSA9IG1vZHVsZS5leHBvcnRzID0gUmVhY3QuY3JlYXRlQ2xhc3MoVG9hc3RNZXNzYWdlU3BlYyk7XG5Ub2FzdE1lc3NhZ2UuYW5pbWF0aW9uID0gYW5pbWF0aW9uO1xuVG9hc3RNZXNzYWdlLmpRdWVyeSA9IGpRdWVyeTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbnZhciBfcmVhY3REb20gPSByZXF1aXJlKFwicmVhY3QtZG9tXCIpO1xuXG52YXIgX3JlYWN0RG9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0RG9tKTtcblxuZnVuY3Rpb24gY2FsbF9zaG93X21ldGhvZCgkbm9kZSwgcHJvcHMpIHtcbiAgJG5vZGVbcHJvcHMuc2hvd01ldGhvZF0oe1xuICAgIGR1cmF0aW9uOiBwcm9wcy5zaG93RHVyYXRpb24sXG4gICAgZWFzaW5nOiBwcm9wcy5zaG93RWFzaW5nXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiBnZXREZWZhdWx0UHJvcHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6IFwibm9uZVwiIH0sXG4gICAgICAvLyBlZmZlY3RpdmUgJC5oaWRlKClcbiAgICAgIHNob3dNZXRob2Q6IFwiZmFkZUluXCIsIC8vLCBzbGlkZURvd24sIGFuZCBzaG93IGFyZSBidWlsdCBpbnRvIGpRdWVyeVxuICAgICAgc2hvd0R1cmF0aW9uOiAzMDAsXG4gICAgICBzaG93RWFzaW5nOiBcInN3aW5nXCIsIC8vIGFuZCBsaW5lYXIgYXJlIGJ1aWx0IGludG8galF1ZXJ5XG4gICAgICBoaWRlTWV0aG9kOiBcImZhZGVPdXRcIixcbiAgICAgIGhpZGVEdXJhdGlvbjogMTAwMCxcbiAgICAgIGhpZGVFYXNpbmc6IFwic3dpbmdcIixcbiAgICAgIC8vXG4gICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgZXh0ZW5kZWRUaW1lT3V0OiAxMDAwXG4gICAgfTtcbiAgfSxcblxuICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW50ZXJ2YWxJZDogbnVsbCxcbiAgICAgIGlzSGlkaW5nOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICBjYWxsX3Nob3dfbWV0aG9kKHRoaXMuX2dldF8kX25vZGUoKSwgcHJvcHMpO1xuICAgIGlmICgwIDwgcHJvcHMudGltZU91dCkge1xuICAgICAgdGhpcy5fc2V0X2ludGVydmFsX2lkKHNldFRpbWVvdXQodGhpcy5oaWRlVG9hc3QsIHByb3BzLnRpbWVPdXQpKTtcbiAgICB9XG4gIH0sXG5cbiAgaGFuZGxlTW91c2VFbnRlcjogZnVuY3Rpb24gaGFuZGxlTW91c2VFbnRlcigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zdGF0ZS5pbnRlcnZhbElkKTtcbiAgICB0aGlzLl9zZXRfaW50ZXJ2YWxfaWQobnVsbCk7XG4gICAgdGhpcy5fc2V0X2lzX2hpZGluZyhmYWxzZSk7XG5cbiAgICBjYWxsX3Nob3dfbWV0aG9kKHRoaXMuX2dldF8kX25vZGUoKS5zdG9wKHRydWUsIHRydWUpLCB0aGlzLnByb3BzKTtcbiAgfSxcblxuICBoYW5kbGVNb3VzZUxlYXZlOiBmdW5jdGlvbiBoYW5kbGVNb3VzZUxlYXZlKCkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoIXRoaXMuc3RhdGUuaXNIaWRpbmcgJiYgKDAgPCBwcm9wcy50aW1lT3V0IHx8IDAgPCBwcm9wcy5leHRlbmRlZFRpbWVPdXQpKSB7XG4gICAgICB0aGlzLl9zZXRfaW50ZXJ2YWxfaWQoc2V0VGltZW91dCh0aGlzLmhpZGVUb2FzdCwgcHJvcHMuZXh0ZW5kZWRUaW1lT3V0KSk7XG4gICAgfVxuICB9LFxuXG4gIGhpZGVUb2FzdDogZnVuY3Rpb24gaGlkZVRvYXN0KG92ZXJyaWRlKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHN0YXRlLmlzSGlkaW5nIHx8IG51bGwgPT0gc3RhdGUuaW50ZXJ2YWxJZCAmJiAhb3ZlcnJpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGlzSGlkaW5nOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5fZ2V0XyRfbm9kZSgpW3Byb3BzLmhpZGVNZXRob2RdKHtcbiAgICAgIGR1cmF0aW9uOiBwcm9wcy5oaWRlRHVyYXRpb24sXG4gICAgICBlYXNpbmc6IHByb3BzLmhpZGVFYXNpbmcsXG4gICAgICBjb21wbGV0ZTogdGhpcy5faGFuZGxlX3JlbW92ZVxuICAgIH0pO1xuICB9LFxuXG4gIF9nZXRfJF9ub2RlOiBmdW5jdGlvbiBfZ2V0XyRfbm9kZSgpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuICAgIHJldHVybiBqUXVlcnkoX3JlYWN0RG9tMltcImRlZmF1bHRcIl0uZmluZERPTU5vZGUodGhpcykpO1xuICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW5kZWYgKi9cbiAgfSxcblxuICBfc2V0X2ludGVydmFsX2lkOiBmdW5jdGlvbiBfc2V0X2ludGVydmFsX2lkKGludGVydmFsSWQpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGludGVydmFsSWQ6IGludGVydmFsSWRcbiAgICB9KTtcbiAgfSxcblxuICBfc2V0X2lzX2hpZGluZzogZnVuY3Rpb24gX3NldF9pc19oaWRpbmcoaXNIaWRpbmcpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzSGlkaW5nOiBpc0hpZGluZ1xuICAgIH0pO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuZXhwb3J0cy5Ub2FzdENvbnRhaW5lciA9IHJlcXVpcmUoXCIuL1RvYXN0Q29udGFpbmVyXCIpO1xuZXhwb3J0cy5Ub2FzdE1lc3NhZ2UgPSByZXF1aXJlKFwiLi9Ub2FzdE1lc3NhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdyZWFjdC9saWIvdXBkYXRlJyk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEF1dG9Gb2N1c1V0aWxzXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcblxudmFyIGZpbmRET01Ob2RlID0gcmVxdWlyZSgnLi9maW5kRE9NTm9kZScpO1xudmFyIGZvY3VzTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2ZvY3VzTm9kZScpO1xuXG52YXIgTWl4aW4gPSB7XG4gIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICBmb2N1c05vZGUoZmluZERPTU5vZGUodGhpcykpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIEF1dG9Gb2N1c1V0aWxzID0ge1xuICBNaXhpbjogTWl4aW4sXG5cbiAgZm9jdXNET01Db21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBmb2N1c05vZGUoUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBdXRvRm9jdXNVdGlsczsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlID0gcmVxdWlyZSgnLi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUnKTtcbnZhciBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50Jyk7XG52YXIgU3ludGhldGljSW5wdXRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljSW5wdXRFdmVudCcpO1xuXG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xuXG52YXIgRU5EX0tFWUNPREVTID0gWzksIDEzLCAyNywgMzJdOyAvLyBUYWIsIFJldHVybiwgRXNjLCBTcGFjZVxudmFyIFNUQVJUX0tFWUNPREUgPSAyMjk7XG5cbnZhciBjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdDb21wb3NpdGlvbkV2ZW50JyBpbiB3aW5kb3c7XG5cbnZhciBkb2N1bWVudE1vZGUgPSBudWxsO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkge1xuICBkb2N1bWVudE1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG59XG5cbi8vIFdlYmtpdCBvZmZlcnMgYSB2ZXJ5IHVzZWZ1bCBgdGV4dElucHV0YCBldmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvXG4vLyBkaXJlY3RseSByZXByZXNlbnQgYGJlZm9yZUlucHV0YC4gVGhlIElFIGB0ZXh0aW5wdXRgIGV2ZW50IGlzIG5vdCBhc1xuLy8gdXNlZnVsLCBzbyB3ZSBkb24ndCB1c2UgaXQuXG52YXIgY2FuVXNlVGV4dElucHV0RXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ1RleHRFdmVudCcgaW4gd2luZG93ICYmICFkb2N1bWVudE1vZGUgJiYgIWlzUHJlc3RvKCk7XG5cbi8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNvbXBvc2l0aW9uIGV2ZW50cywgYnV0IHRoZSBkYXRhIHN1cHBsaWVkXG4vLyBieSB0aGUgbmF0aXZlIGNvbXBvc2l0aW9uZW5kIGV2ZW50IG1heSBiZSBpbmNvcnJlY3QuIEphcGFuZXNlIGlkZW9ncmFwaGljXG4vLyBzcGFjZXMsIGZvciBpbnN0YW5jZSAoXFx1MzAwMCkgYXJlIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkuXG52YXIgdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8IGRvY3VtZW50TW9kZSAmJiBkb2N1bWVudE1vZGUgPiA4ICYmIGRvY3VtZW50TW9kZSA8PSAxMSk7XG5cbi8qKlxuICogT3BlcmEgPD0gMTIgaW5jbHVkZXMgVGV4dEV2ZW50IGluIHdpbmRvdywgYnV0IGRvZXMgbm90IGZpcmVcbiAqIHRleHQgaW5wdXQgZXZlbnRzLiBSZWx5IG9uIGtleXByZXNzIGluc3RlYWQuXG4gKi9cbmZ1bmN0aW9uIGlzUHJlc3RvKCkge1xuICB2YXIgb3BlcmEgPSB3aW5kb3cub3BlcmE7XG4gIHJldHVybiB0eXBlb2Ygb3BlcmEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcGVyYS52ZXJzaW9uID09PSAnZnVuY3Rpb24nICYmIHBhcnNlSW50KG9wZXJhLnZlcnNpb24oKSwgMTApIDw9IDEyO1xufVxuXG52YXIgU1BBQ0VCQVJfQ09ERSA9IDMyO1xudmFyIFNQQUNFQkFSX0NIQVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNQQUNFQkFSX0NPREUpO1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG5cbi8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcy5cbnZhciBldmVudFR5cGVzID0ge1xuICBiZWZvcmVJbnB1dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQmVmb3JlSW5wdXQ6IG51bGwgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkJlZm9yZUlucHV0Q2FwdHVyZTogbnVsbCB9KVxuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wTGV2ZWxUeXBlcy50b3BDb21wb3NpdGlvbkVuZCwgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzcywgdG9wTGV2ZWxUeXBlcy50b3BUZXh0SW5wdXQsIHRvcExldmVsVHlwZXMudG9wUGFzdGVdXG4gIH0sXG4gIGNvbXBvc2l0aW9uRW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db21wb3NpdGlvbkVuZDogbnVsbCB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ29tcG9zaXRpb25FbmRDYXB0dXJlOiBudWxsIH0pXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcEJsdXIsIHRvcExldmVsVHlwZXMudG9wQ29tcG9zaXRpb25FbmQsIHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzcywgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcCwgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd25dXG4gIH0sXG4gIGNvbXBvc2l0aW9uU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNvbXBvc2l0aW9uU3RhcnQ6IG51bGwgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlOiBudWxsIH0pXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcEJsdXIsIHRvcExldmVsVHlwZXMudG9wQ29tcG9zaXRpb25TdGFydCwgdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duLCB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzLCB0b3BMZXZlbFR5cGVzLnRvcEtleVVwLCB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93bl1cbiAgfSxcbiAgY29tcG9zaXRpb25VcGRhdGU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNvbXBvc2l0aW9uVXBkYXRlOiBudWxsIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmU6IG51bGwgfSlcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogW3RvcExldmVsVHlwZXMudG9wQmx1ciwgdG9wTGV2ZWxUeXBlcy50b3BDb21wb3NpdGlvblVwZGF0ZSwgdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duLCB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzLCB0b3BMZXZlbFR5cGVzLnRvcEtleVVwLCB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93bl1cbiAgfVxufTtcblxuLy8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVzcyBvbiB0aGUgc3BhY2Uga2V5LlxudmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1bWVkIHRvIGJlIGEgY29tbWFuZC5cbiAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94IGZpcmVzIGBrZXlwcmVzc2AgZXZlbnRzIGZvciBrZXkgY29tbWFuZHNcbiAqIChjdXQsIGNvcHksIHNlbGVjdC1hbGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIChuYXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5KSAmJlxuICAvLyBjdHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFsdEdyLCBhbmQgaXMgbm90IGEgY29tbWFuZC5cbiAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5hdGl2ZUV2ZW50LmFsdEtleSk7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZlbnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUpIHtcbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ29tcG9zaXRpb25TdGFydDpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uRW5kOlxuICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uVXBkYXRlOlxuICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBEb2VzIG91ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRoaXMgZXZlbnQgc2lnbmlmaWVzIHRoYXRcbiAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJUX0tFWUNPREU7XG59XG5cbi8qKlxuICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0IHRoaXMgZXZlbnQgaXMgdGhlIGVuZCBvZiBjb21wb3NpdGlvbj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVVwOlxuICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVhciBJTUUgaW5wdXQuXG4gICAgICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSkgIT09IC0xO1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duOlxuICAgICAgLy8gRXhwZWN0IElNRSBrZXlDb2RlIG9uIGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlclxuICAgICAgLy8gY29kZSB3ZSBtdXN0IGhhdmUgZXhpdGVkIGVhcmxpZXIuXG4gICAgICByZXR1cm4gbmF0aXZlRXZlbnQua2V5Q29kZSAhPT0gU1RBUlRfS0VZQ09ERTtcbiAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5UHJlc3M6XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93bjpcbiAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQmx1cjpcbiAgICAgIC8vIEV2ZW50cyBhcmUgbm90IHBvc3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogR29vZ2xlIElucHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEgdmlhIGEgQ3VzdG9tRXZlbnQsXG4gKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVkIGluIHRoZSBgZGV0YWlsYCBvYmplY3QuIElmIHRoaXNcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2UgaXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluXG4gKiBjb21wb3NpdGlvbiBldmVudCBhbmQgd2UgaGF2ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4gez9zdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGRldGFpbCA9IG5hdGl2ZUV2ZW50LmRldGFpbDtcbiAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBkZXRhaWwpIHtcbiAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlvbiBmYWxsYmFjayBvYmplY3QsIGlmIGFueS5cbnZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICB2YXIgZXZlbnRUeXBlO1xuICB2YXIgZmFsbGJhY2tEYXRhO1xuXG4gIGlmIChjYW5Vc2VDb21wb3NpdGlvbkV2ZW50KSB7XG4gICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBlKTtcbiAgfSBlbHNlIGlmICghY3VycmVudENvbXBvc2l0aW9uKSB7XG4gICAgaWYgKGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7XG4gICAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7XG4gIH1cblxuICBpZiAoIWV2ZW50VHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhKSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgY29tcG9zaXRpb24gaXMgc3RvcmVkIHN0YXRpY2FsbHkgYW5kIG11c3Qgbm90IGJlXG4gICAgLy8gb3ZlcndyaXR0ZW4gd2hpbGUgY29tcG9zaXRpb24gY29udGludWVzLlxuICAgIGlmICghY3VycmVudENvbXBvc2l0aW9uICYmIGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0KSB7XG4gICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuZ2V0UG9vbGVkKHRvcExldmVsVGFyZ2V0KTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZCkge1xuICAgICAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikge1xuICAgICAgICBmYWxsYmFja0RhdGEgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBldmVudCA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZSwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICBpZiAoZmFsbGJhY2tEYXRhKSB7XG4gICAgLy8gSW5qZWN0IGRhdGEgZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2sgcGF0aCBpbnRvIHRoZSBzeW50aGV0aWMgZXZlbnQuXG4gICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBwcm9wZXJ0eSBvZiBuYXRpdmUgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZS5cbiAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRhO1xuICB9IGVsc2Uge1xuICAgIHZhciBjdXN0b21EYXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7XG4gICAgaWYgKGN1c3RvbURhdGEgIT09IG51bGwpIHtcbiAgICAgIGV2ZW50LmRhdGEgPSBjdXN0b21EYXRhO1xuICAgIH1cbiAgfVxuXG4gIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gIHJldHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ29tcG9zaXRpb25FbmQ6XG4gICAgICByZXR1cm4gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzOlxuICAgICAgLyoqXG4gICAgICAgKiBJZiBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRzIGFyZSBhdmFpbGFibGUsIG91ciBnb2FsIGlzIHRvIG1ha2VcbiAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVyLCB0aGVyZSBpcyBhIHNwZWNpYWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS5cbiAgICAgICAqIEluIFdlYmtpdCwgcHJldmVudGluZyBkZWZhdWx0IG9uIGEgc3BhY2ViYXIgYHRleHRJbnB1dGAgZXZlbnRcbiAgICAgICAqIGNhbmNlbHMgY2hhcmFjdGVyIGluc2VydGlvbiwgYnV0IGl0ICphbHNvKiBjYXVzZXMgdGhlIGJyb3dzZXJcbiAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVsdCBzcGFjZWJhciBiZWhhdmlvciBvZiBzY3JvbGxpbmcgdGhlXG4gICAgICAgKiBwYWdlLlxuICAgICAgICpcbiAgICAgICAqIFRyYWNraW5nIGF0OlxuICAgICAgICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM1NTEwM1xuICAgICAgICpcbiAgICAgICAqIFRvIGF2b2lkIHRoaXMgaXNzdWUsIHVzZSB0aGUga2V5cHJlc3MgZXZlbnQgYXMgaWYgbm8gYHRleHRJbnB1dGBcbiAgICAgICAqIGV2ZW50IGlzIGF2YWlsYWJsZS5cbiAgICAgICAqL1xuICAgICAgdmFyIHdoaWNoID0gbmF0aXZlRXZlbnQud2hpY2g7XG4gICAgICBpZiAod2hpY2ggIT09IFNQQUNFQkFSX0NPREUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGhhc1NwYWNlS2V5cHJlc3MgPSB0cnVlO1xuICAgICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7XG5cbiAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVGV4dElucHV0OlxuICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBET00uXG4gICAgICB2YXIgY2hhcnMgPSBuYXRpdmVFdmVudC5kYXRhO1xuXG4gICAgICAvLyBJZiBpdCdzIGEgc3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVhZHkgaGFuZGxlZFxuICAgICAgLy8gaXQgYXQgdGhlIGtleXByZXNzIGxldmVsIGFuZCBiYWlsIGltbWVkaWF0ZWx5LiBBbmRyb2lkIENocm9tZVxuICAgICAgLy8gZG9lc24ndCBnaXZlIHVzIGtleWNvZGVzLCBzbyB3ZSBuZWVkIHRvIGJsYWNrbGlzdCBpdC5cbiAgICAgIGlmIChjaGFycyA9PT0gU1BBQ0VCQVJfQ0hBUiAmJiBoYXNTcGFjZUtleXByZXNzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhcnM7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gRm9yIG90aGVyIG5hdGl2ZSBldmVudCB0eXBlcywgZG8gbm90aGluZy5cbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHByb3ZpZGUgdGhlIGB0ZXh0SW5wdXRgIGV2ZW50LCBleHRyYWN0IHRoZVxuICogYXBwcm9wcmlhdGUgc3RyaW5nIHRvIHVzZSBmb3IgU3ludGhldGljSW5wdXRFdmVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZmFsbGJhY2sgc3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9zaW5nIChJTUUpIGFuZCB1c2luZyBhIGZhbGxiYWNrIHRvIGRvIHNvLFxuICAvLyB0cnkgdG8gZXh0cmFjdCB0aGUgY29tcG9zZWQgY2hhcmFjdGVycyBmcm9tIHRoZSBmYWxsYmFjayBvYmplY3QuXG4gIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uRW5kIHx8IGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgdmFyIGNoYXJzID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5yZWxlYXNlKGN1cnJlbnRDb21wb3NpdGlvbik7XG4gICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuICAgICAgcmV0dXJuIGNoYXJzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBhc3RlOlxuICAgICAgLy8gSWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVzcywgdGhyb3cgb3V0IHRoZSBpbnB1dFxuICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVmb3JlSW5wdXQgZXZlbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzOlxuICAgICAgLyoqXG4gICAgICAgKiBBcyBvZiB2MjcsIEZpcmVmb3ggbWF5IGZpcmUga2V5cHJlc3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXJcbiAgICAgICAqIHdpbGwgYmUgaW5zZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6XG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hgIGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLlxuICAgICAgICpcbiAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMgYXZhaWxhYmxlLlxuICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNoLiBUaGVyZSBpcyBubyBtb2RpZmllZCBjaGFyYWN0ZXIgZm9yXG4gICAgICAgKiAgIHRoaXMga2V5IGNvbWJpbmF0aW9uIGFuZCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGVcbiAgICAgICAqICAgZG9jdW1lbnQsIGJ1dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBhbnl3YXkuXG4gICAgICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAgICAgICAqXG4gICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBhIGNvbW1hbmQgY29tYmluYXRpb24gaXNcbiAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQrQ2AuIE5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCwgYW5kIG5vXG4gICAgICAgKiAgIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAgICAgICAqL1xuICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNoICYmICFpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobmF0aXZlRXZlbnQud2hpY2gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uRW5kOlxuICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIFN5bnRoZXRpY0lucHV0RXZlbnQgZm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBuYXRpdmVcbiAqIGB0ZXh0SW5wdXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRpY0lucHV0RXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICB2YXIgY2hhcnM7XG5cbiAgaWYgKGNhblVzZVRleHRJbnB1dEV2ZW50KSB7XG4gICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuICB9IGVsc2Uge1xuICAgIGNoYXJzID0gZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuICB9XG5cbiAgLy8gSWYgbm8gY2hhcmFjdGVycyBhcmUgYmVpbmcgaW5zZXJ0ZWQsIG5vIEJlZm9yZUlucHV0IGV2ZW50IHNob3VsZFxuICAvLyBiZSBmaXJlZC5cbiAgaWYgKCFjaGFycykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGV2ZW50ID0gU3ludGhldGljSW5wdXRFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5iZWZvcmVJbnB1dCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICBldmVudC5kYXRhID0gY2hhcnM7XG4gIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gIHJldHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYG9uQmVmb3JlSW5wdXRgIGV2ZW50IHRvIG1hdGNoXG4gKiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNS8jZXZlbnRzLWlucHV0ZXZlbnRzLlxuICpcbiAqIFRoaXMgZXZlbnQgcGx1Z2luIGlzIGJhc2VkIG9uIHRoZSBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRcbiAqIGF2YWlsYWJsZSBpbiBDaHJvbWUsIFNhZmFyaSwgT3BlcmEsIGFuZCBJRS4gVGhpcyBldmVudCBmaXJlcyBhZnRlclxuICogYG9uS2V5UHJlc3NgIGFuZCBgb25Db21wb3NpdGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9uSW5wdXRgLlxuICpcbiAqIGBiZWZvcmVJbnB1dGAgaXMgc3BlYydkIGJ1dCBub3QgaW1wbGVtZW50ZWQgaW4gYW55IGJyb3dzZXJzLCBhbmRcbiAqIHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGhhc1xuICogYWN0dWFsbHkgYmVlbiBhZGRlZCwgY29udHJhcnkgdG8gdGhlIHNwZWMuIFRodXMsIGB0ZXh0SW5wdXRgIGlzIHRoZSBiZXN0XG4gKiBhdmFpbGFibGUgZXZlbnQgdG8gaWRlbnRpZnkgdGhlIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGFjdHVhbGx5IGJlZW4gaW5zZXJ0ZWRcbiAqIGludG8gdGhlIHRhcmdldCBub2RlLlxuICpcbiAqIFRoaXMgcGx1Z2luIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5nIGBjb21wb3NpdGlvbmAgZXZlbnRzLCB0aHVzXG4gKiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxsYmFjayBjb2RlIGZvciBib3RoIGBiZWZvcmVJbnB1dGAgYW5kXG4gKiBgY29tcG9zaXRpb25gIGV2ZW50IHR5cGVzLlxuICovXG52YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHtcblxuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50c31cbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICByZXR1cm4gW2V4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCksIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCldO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0RXZlbnRQbHVnaW47IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENTU1Byb3BlcnR5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGluIHVuaXRzIG9mIFwicHhcIi5cbiAqL1xudmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVlLFxuICBib3hGbGV4OiB0cnVlLFxuICBib3hGbGV4R3JvdXA6IHRydWUsXG4gIGJveE9yZGluYWxHcm91cDogdHJ1ZSxcbiAgY29sdW1uQ291bnQ6IHRydWUsXG4gIGZsZXg6IHRydWUsXG4gIGZsZXhHcm93OiB0cnVlLFxuICBmbGV4UG9zaXRpdmU6IHRydWUsXG4gIGZsZXhTaHJpbms6IHRydWUsXG4gIGZsZXhOZWdhdGl2ZTogdHJ1ZSxcbiAgZmxleE9yZGVyOiB0cnVlLFxuICBmb250V2VpZ2h0OiB0cnVlLFxuICBsaW5lQ2xhbXA6IHRydWUsXG4gIGxpbmVIZWlnaHQ6IHRydWUsXG4gIG9wYWNpdHk6IHRydWUsXG4gIG9yZGVyOiB0cnVlLFxuICBvcnBoYW5zOiB0cnVlLFxuICB0YWJTaXplOiB0cnVlLFxuICB3aWRvd3M6IHRydWUsXG4gIHpJbmRleDogdHJ1ZSxcbiAgem9vbTogdHJ1ZSxcblxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiB0cnVlLFxuICBzdG9wT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogdHJ1ZSxcbiAgc3Ryb2tlT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlV2lkdGg6IHRydWVcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Via2l0XG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRoIGBwcmVmaXhgLCBwcm9wZXJseSBjYW1lbENhc2VkLCBlZzpcbiAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlvblxuICovXG5mdW5jdGlvbiBwcmVmaXhLZXkocHJlZml4LCBrZXkpIHtcbiAgcmV0dXJuIHByZWZpeCArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG59XG5cbi8qKlxuICogU3VwcG9ydCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25zXG4gKiBvZiB2ZW5kb3IgcHJlZml4ZXMuXG4gKi9cbnZhciBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ21zJywgJ01veicsICdPJ107XG5cbi8vIFVzaW5nIE9iamVjdC5rZXlzIGhlcmUsIG9yIGVsc2UgdGhlIHZhbmlsbGEgZm9yLWluIGxvb3AgbWFrZXMgSUU4IGdvIGludG8gYW5cbi8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0ZXMgb3ZlciB0aGUgbmV3bHkgYWRkZWQgcHJvcHMgdG9vLlxuT2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJlcikuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICBwcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07XG4gIH0pO1xufSk7XG5cbi8qKlxuICogTW9zdCBzdHlsZSBwcm9wZXJ0aWVzIGNhbiBiZSB1bnNldCBieSBkb2luZyAuc3R5bGVbcHJvcF0gPSAnJyBidXQgSUU4XG4gKiBkb2Vzbid0IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBwcm9wZXJ0aWVzIHNvIGZvciB0aGUgcHJvcGVydGllcyB0aGF0XG4gKiBJRTggYnJlYWtzIG9uLCB3aGljaCBhcmUgbGlzdGVkIGhlcmUsIHdlIGluc3RlYWQgdW5zZXQgZWFjaCBvZiB0aGVcbiAqIGluZGl2aWR1YWwgcHJvcGVydGllcy4gU2VlIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzg1LlxuICogVGhlIDQtdmFsdWUgJ2Nsb2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBwYWRkaW5nLCBib3JkZXItd2lkdGggc2VlbSB0b1xuICogYmVoYXZlIHdpdGhvdXQgYW55IHByb2JsZW1zLiBDdXJpb3VzbHksIGxpc3Qtc3R5bGUgd29ya3MgdG9vIHdpdGhvdXQgYW55XG4gKiBzcGVjaWFsIHByb2RkaW5nLlxuICovXG52YXIgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zID0ge1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6IHRydWUsXG4gICAgYmFja2dyb3VuZENvbG9yOiB0cnVlLFxuICAgIGJhY2tncm91bmRJbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUsXG4gICAgYmFja2dyb3VuZFJlcGVhdDogdHJ1ZVxuICB9LFxuICBiYWNrZ3JvdW5kUG9zaXRpb246IHtcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWVcbiAgfSxcbiAgYm9yZGVyOiB7XG4gICAgYm9yZGVyV2lkdGg6IHRydWUsXG4gICAgYm9yZGVyU3R5bGU6IHRydWUsXG4gICAgYm9yZGVyQ29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyQm90dG9tOiB7XG4gICAgYm9yZGVyQm90dG9tV2lkdGg6IHRydWUsXG4gICAgYm9yZGVyQm90dG9tU3R5bGU6IHRydWUsXG4gICAgYm9yZGVyQm90dG9tQ29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyTGVmdDoge1xuICAgIGJvcmRlckxlZnRXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJMZWZ0U3R5bGU6IHRydWUsXG4gICAgYm9yZGVyTGVmdENvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlclJpZ2h0OiB7XG4gICAgYm9yZGVyUmlnaHRXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJSaWdodFN0eWxlOiB0cnVlLFxuICAgIGJvcmRlclJpZ2h0Q29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyVG9wOiB7XG4gICAgYm9yZGVyVG9wV2lkdGg6IHRydWUsXG4gICAgYm9yZGVyVG9wU3R5bGU6IHRydWUsXG4gICAgYm9yZGVyVG9wQ29sb3I6IHRydWVcbiAgfSxcbiAgZm9udDoge1xuICAgIGZvbnRTdHlsZTogdHJ1ZSxcbiAgICBmb250VmFyaWFudDogdHJ1ZSxcbiAgICBmb250V2VpZ2h0OiB0cnVlLFxuICAgIGZvbnRTaXplOiB0cnVlLFxuICAgIGxpbmVIZWlnaHQ6IHRydWUsXG4gICAgZm9udEZhbWlseTogdHJ1ZVxuICB9LFxuICBvdXRsaW5lOiB7XG4gICAgb3V0bGluZVdpZHRoOiB0cnVlLFxuICAgIG91dGxpbmVTdHlsZTogdHJ1ZSxcbiAgICBvdXRsaW5lQ29sb3I6IHRydWVcbiAgfVxufTtcblxudmFyIENTU1Byb3BlcnR5ID0ge1xuICBpc1VuaXRsZXNzTnVtYmVyOiBpc1VuaXRsZXNzTnVtYmVyLFxuICBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6IHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eTsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENTU1Byb3BlcnR5T3BlcmF0aW9uc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBDU1NQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcblxudmFyIGNhbWVsaXplU3R5bGVOYW1lID0gcmVxdWlyZSgnZmJqcy9saWIvY2FtZWxpemVTdHlsZU5hbWUnKTtcbnZhciBkYW5nZXJvdXNTdHlsZVZhbHVlID0gcmVxdWlyZSgnLi9kYW5nZXJvdXNTdHlsZVZhbHVlJyk7XG52YXIgaHlwaGVuYXRlU3R5bGVOYW1lID0gcmVxdWlyZSgnZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lJyk7XG52YXIgbWVtb2l6ZVN0cmluZ09ubHkgPSByZXF1aXJlKCdmYmpzL2xpYi9tZW1vaXplU3RyaW5nT25seScpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBwcm9jZXNzU3R5bGVOYW1lID0gbWVtb2l6ZVN0cmluZ09ubHkoZnVuY3Rpb24gKHN0eWxlTmFtZSkge1xuICByZXR1cm4gaHlwaGVuYXRlU3R5bGVOYW1lKHN0eWxlTmFtZSk7XG59KTtcblxudmFyIGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnID0gZmFsc2U7XG52YXIgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ2Nzc0Zsb2F0JztcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgdmFyIHRlbXBTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlO1xuICB0cnkge1xuICAgIC8vIElFOCB0aHJvd3MgXCJJbnZhbGlkIGFyZ3VtZW50LlwiIGlmIHJlc2V0dGluZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVydGllcy5cbiAgICB0ZW1wU3R5bGUuZm9udCA9ICcnO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0cnVlO1xuICB9XG4gIC8vIElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFzIHN0eWxlRmxvYXRcbiAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NGbG9hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ3N0eWxlRmxvYXQnO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vICdtc1RyYW5zZm9ybScgaXMgY29ycmVjdCwgYnV0IHRoZSBvdGhlciBwcmVmaXhlcyBzaG91bGQgYmUgY2FwaXRhbGl6ZWRcbiAgdmFyIGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybiA9IC9eKD86d2Via2l0fG1venxvKVtBLVpdLztcblxuICAvLyBzdHlsZSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb25cbiAgdmFyIGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiA9IC87XFxzKiQvO1xuXG4gIHZhciB3YXJuZWRTdHlsZU5hbWVzID0ge307XG4gIHZhciB3YXJuZWRTdHlsZVZhbHVlcyA9IHt9O1xuXG4gIHZhciB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBwb3J0ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8nLCBuYW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1lKSkgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBwb3J0ZWQgdmVuZG9yLXByZWZpeGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSkpIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIHZhciB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAod2FybmVkU3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0eWxlVmFsdWVzW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlVmFsdWVzW3ZhbHVlXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTdHlsZSBwcm9wZXJ0eSB2YWx1ZXMgc2hvdWxkblxcJ3QgY29udGFpbiBhIHNlbWljb2xvbi4gJyArICdUcnkgXCIlczogJXNcIiBpbnN0ZWFkLicsIG5hbWUsIHZhbHVlLnJlcGxhY2UoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqL1xuICB2YXIgd2FyblZhbGlkU3R5bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAobmFtZS5pbmRleE9mKCctJykgPiAtMSkge1xuICAgICAgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUobmFtZSk7XG4gICAgfSBlbHNlIGlmIChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4udGVzdChuYW1lKSkge1xuICAgICAgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24obmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggQ1NTIHByb3BlcnRpZXMuXG4gKi9cbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgZm9yIHVzZSBhcyBpbmxpbmUgc3R5bGVzOlxuICAgKlxuICAgKiAgID4gY3JlYXRlTWFya3VwRm9yU3R5bGVzKHt3aWR0aDogJzIwMHB4JywgaGVpZ2h0OiAwfSlcbiAgICogICBcIndpZHRoOjIwMHB4O2hlaWdodDowO1wiXG4gICAqXG4gICAqIFVuZGVmaW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28gdGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuXG4gICAqIFRoZSByZXN1bHQgc2hvdWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUgaW5zZXJ0aW9uIGludG8gdGhlIERPTS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuICAgKiBAcmV0dXJuIHs/c3RyaW5nfVxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAoc3R5bGVzKSB7XG4gICAgdmFyIHNlcmlhbGl6ZWQgPSAnJztcbiAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG4gICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHN0eWxlVmFsdWUgPSBzdHlsZXNbc3R5bGVOYW1lXTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3R5bGVWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonO1xuICAgICAgICBzZXJpYWxpemVkICs9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlKSArICc7JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBhIG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhc1xuICAgKiAnJyAoZW1wdHkgc3RyaW5nKSwgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICovXG4gIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVzKSB7XG4gICAgdmFyIHN0eWxlID0gbm9kZS5zdHlsZTtcbiAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG4gICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSk7XG4gICAgICB9XG4gICAgICB2YXIgc3R5bGVWYWx1ZSA9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSk7XG4gICAgICBpZiAoc3R5bGVOYW1lID09PSAnZmxvYXQnKSB7XG4gICAgICAgIHN0eWxlTmFtZSA9IHN0eWxlRmxvYXRBY2Nlc3NvcjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHlsZVZhbHVlKSB7XG4gICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSBzdHlsZVZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGV4cGFuc2lvbiA9IGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnICYmIENTU1Byb3BlcnR5LnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1tzdHlsZU5hbWVdO1xuICAgICAgICBpZiAoZXhwYW5zaW9uKSB7XG4gICAgICAgICAgLy8gU2hvcnRoYW5kIHByb3BlcnR5IHRoYXQgSUU4IHdvbid0IGxpa2UgdW5zZXR0aW5nLCBzbyB1bnNldCBlYWNoXG4gICAgICAgICAgLy8gY29tcG9uZW50IHRvIHBsYWNhdGUgaXRcbiAgICAgICAgICBmb3IgKHZhciBpbmRpdmlkdWFsU3R5bGVOYW1lIGluIGV4cGFuc2lvbikge1xuICAgICAgICAgICAgc3R5bGVbaW5kaXZpZHVhbFN0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhDU1NQcm9wZXJ0eU9wZXJhdGlvbnMsICdDU1NQcm9wZXJ0eU9wZXJhdGlvbnMnLCB7XG4gIHNldFZhbHVlRm9yU3R5bGVzOiAnc2V0VmFsdWVGb3JTdHlsZXMnXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlEVTFOUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdRMU5UVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6WEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFTlRVMUJ5YjNCbGNuUjVJRDBnY21WeGRXbHlaU2duTGk5RFUxTlFjbTl3WlhKMGVTY3BPMXh1ZG1GeUlFVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2UlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RbktUdGNiblpoY2lCU1pXRmpkRkJsY21ZZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVHVnlaaWNwTzF4dVhHNTJZWElnWTJGdFpXeHBlbVZUZEhsc1pVNWhiV1VnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5allXMWxiR2w2WlZOMGVXeGxUbUZ0WlNjcE8xeHVkbUZ5SUdSaGJtZGxjbTkxYzFOMGVXeGxWbUZzZFdVZ1BTQnlaWEYxYVhKbEtDY3VMMlJoYm1kbGNtOTFjMU4wZVd4bFZtRnNkV1VuS1R0Y2JuWmhjaUJvZVhCb1pXNWhkR1ZUZEhsc1pVNWhiV1VnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5b2VYQm9aVzVoZEdWVGRIbHNaVTVoYldVbktUdGNiblpoY2lCdFpXMXZhWHBsVTNSeWFXNW5UMjVzZVNBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyMWxiVzlwZW1WVGRISnBibWRQYm14NUp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlIQnliMk5sYzNOVGRIbHNaVTVoYldVZ1BTQnRaVzF2YVhwbFUzUnlhVzVuVDI1c2VTaG1kVzVqZEdsdmJpQW9jM1I1YkdWT1lXMWxLU0I3WEc0Z0lISmxkSFZ5YmlCb2VYQm9aVzVoZEdWVGRIbHNaVTVoYldVb2MzUjViR1ZPWVcxbEtUdGNibjBwTzF4dVhHNTJZWElnYUdGelUyaHZjblJvWVc1a1VISnZjR1Z5ZEhsQ2RXY2dQU0JtWVd4elpUdGNiblpoY2lCemRIbHNaVVpzYjJGMFFXTmpaWE56YjNJZ1BTQW5ZM056Um14dllYUW5PMXh1YVdZZ0tFVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBMbU5oYmxWelpVUlBUU2tnZTF4dUlDQjJZWElnZEdWdGNGTjBlV3hsSUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2duWkdsMkp5a3VjM1I1YkdVN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnTHk4Z1NVVTRJSFJvY205M2N5QmNJa2x1ZG1Gc2FXUWdZWEpuZFcxbGJuUXVYQ0lnYVdZZ2NtVnpaWFIwYVc1bklITm9iM0owYUdGdVpDQnpkSGxzWlNCd2NtOXdaWEowYVdWekxseHVJQ0FnSUhSbGJYQlRkSGxzWlM1bWIyNTBJRDBnSnljN1hHNGdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0JvWVhOVGFHOXlkR2hoYm1SUWNtOXdaWEowZVVKMVp5QTlJSFJ5ZFdVN1hHNGdJSDFjYmlBZ0x5OGdTVVU0SUc5dWJIa2djM1Z3Y0c5eWRITWdZV05qWlhOemFXNW5JR056YzBac2IyRjBJQ2h6ZEdGdVpHRnlaQ2tnWVhNZ2MzUjViR1ZHYkc5aGRGeHVJQ0JwWmlBb1pHOWpkVzFsYm5RdVpHOWpkVzFsYm5SRmJHVnRaVzUwTG5OMGVXeGxMbU56YzBac2IyRjBJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNCemRIbHNaVVpzYjJGMFFXTmpaWE56YjNJZ1BTQW5jM1I1YkdWR2JHOWhkQ2M3WEc0Z0lIMWNibjFjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdMeThnSjIxelZISmhibk5tYjNKdEp5QnBjeUJqYjNKeVpXTjBMQ0JpZFhRZ2RHaGxJRzkwYUdWeUlIQnlaV1pwZUdWeklITm9iM1ZzWkNCaVpTQmpZWEJwZEdGc2FYcGxaRnh1SUNCMllYSWdZbUZrVm1WdVpHOXlaV1JUZEhsc1pVNWhiV1ZRWVhSMFpYSnVJRDBnTDE0b1B6cDNaV0pyYVhSOGJXOTZmRzhwVzBFdFdsMHZPMXh1WEc0Z0lDOHZJSE4wZVd4bElIWmhiSFZsY3lCemFHOTFiR1J1SjNRZ1kyOXVkR0ZwYmlCaElITmxiV2xqYjJ4dmJseHVJQ0IyWVhJZ1ltRmtVM1I1YkdWV1lXeDFaVmRwZEdoVFpXMXBZMjlzYjI1UVlYUjBaWEp1SUQwZ0x6dGNYSE1xSkM4N1hHNWNiaUFnZG1GeUlIZGhjbTVsWkZOMGVXeGxUbUZ0WlhNZ1BTQjdmVHRjYmlBZ2RtRnlJSGRoY201bFpGTjBlV3hsVm1Gc2RXVnpJRDBnZTMwN1hHNWNiaUFnZG1GeUlIZGhjbTVJZVhCb1pXNWhkR1ZrVTNSNWJHVk9ZVzFsSUQwZ1puVnVZM1JwYjI0Z0tHNWhiV1VwSUh0Y2JpQWdJQ0JwWmlBb2QyRnlibVZrVTNSNWJHVk9ZVzFsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQW1KaUIzWVhKdVpXUlRkSGxzWlU1aGJXVnpXMjVoYldWZEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZDJGeWJtVmtVM1I1YkdWT1lXMWxjMXR1WVcxbFhTQTlJSFJ5ZFdVN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkVmJuTjFjSEJ2Y25SbFpDQnpkSGxzWlNCd2NtOXdaWEowZVNBbGN5NGdSR2xrSUhsdmRTQnRaV0Z1SUNWelB5Y3NJRzVoYldVc0lHTmhiV1ZzYVhwbFUzUjViR1ZPWVcxbEtHNWhiV1VwS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlR0Y2JseHVJQ0IyWVhJZ2QyRnlia0poWkZabGJtUnZjbVZrVTNSNWJHVk9ZVzFsSUQwZ1puVnVZM1JwYjI0Z0tHNWhiV1VwSUh0Y2JpQWdJQ0JwWmlBb2QyRnlibVZrVTNSNWJHVk9ZVzFsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQW1KaUIzWVhKdVpXUlRkSGxzWlU1aGJXVnpXMjVoYldWZEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZDJGeWJtVmtVM1I1YkdWT1lXMWxjMXR1WVcxbFhTQTlJSFJ5ZFdVN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkVmJuTjFjSEJ2Y25SbFpDQjJaVzVrYjNJdGNISmxabWw0WldRZ2MzUjViR1VnY0hKdmNHVnlkSGtnSlhNdUlFUnBaQ0I1YjNVZ2JXVmhiaUFsY3o4bkxDQnVZVzFsTENCdVlXMWxMbU5vWVhKQmRDZ3dLUzUwYjFWd2NHVnlRMkZ6WlNncElDc2dibUZ0WlM1emJHbGpaU2d4S1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgwN1hHNWNiaUFnZG1GeUlIZGhjbTVUZEhsc1pWWmhiSFZsVjJsMGFGTmxiV2xqYjJ4dmJpQTlJR1oxYm1OMGFXOXVJQ2h1WVcxbExDQjJZV3gxWlNrZ2UxeHVJQ0FnSUdsbUlDaDNZWEp1WldSVGRIbHNaVlpoYkhWbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNoMllXeDFaU2tnSmlZZ2QyRnlibVZrVTNSNWJHVldZV3gxWlhOYmRtRnNkV1ZkS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkMkZ5Ym1Wa1UzUjViR1ZXWVd4MVpYTmJkbUZzZFdWZElEMGdkSEoxWlR0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjFOMGVXeGxJSEJ5YjNCbGNuUjVJSFpoYkhWbGN5QnphRzkxYkdSdVhGd25kQ0JqYjI1MFlXbHVJR0VnYzJWdGFXTnZiRzl1TGlBbklDc2dKMVJ5ZVNCY0lpVnpPaUFsYzF3aUlHbHVjM1JsWVdRdUp5d2dibUZ0WlN3Z2RtRnNkV1V1Y21Wd2JHRmpaU2hpWVdSVGRIbHNaVlpoYkhWbFYybDBhRk5sYldsamIyeHZibEJoZEhSbGNtNHNJQ2NuS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgwN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J1WVcxbFhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ2RtRnNkV1ZjYmlBZ0lDb3ZYRzRnSUhaaGNpQjNZWEp1Vm1Gc2FXUlRkSGxzWlNBOUlHWjFibU4wYVc5dUlDaHVZVzFsTENCMllXeDFaU2tnZTF4dUlDQWdJR2xtSUNodVlXMWxMbWx1WkdWNFQyWW9KeTBuS1NBK0lDMHhLU0I3WEc0Z0lDQWdJQ0IzWVhKdVNIbHdhR1Z1WVhSbFpGTjBlV3hsVG1GdFpTaHVZVzFsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dKaFpGWmxibVJ2Y21Wa1UzUjViR1ZPWVcxbFVHRjBkR1Z5Ymk1MFpYTjBLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQjNZWEp1UW1Ga1ZtVnVaRzl5WldSVGRIbHNaVTVoYldVb2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hpWVdSVGRIbHNaVlpoYkhWbFYybDBhRk5sYldsamIyeHZibEJoZEhSbGNtNHVkR1Z6ZENoMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUhkaGNtNVRkSGxzWlZaaGJIVmxWMmwwYUZObGJXbGpiMnh2YmlodVlXMWxMQ0IyWVd4MVpTazdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dWZWeHVYRzR2S2lwY2JpQXFJRTl3WlhKaGRHbHZibk1nWm05eUlHUmxZV3hwYm1jZ2QybDBhQ0JEVTFNZ2NISnZjR1Z5ZEdsbGN5NWNiaUFxTDF4dWRtRnlJRU5UVTFCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3lBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyVnlhV0ZzYVhwbGN5QmhJRzFoY0hCcGJtY2diMllnYzNSNWJHVWdjSEp2Y0dWeWRHbGxjeUJtYjNJZ2RYTmxJR0Z6SUdsdWJHbHVaU0J6ZEhsc1pYTTZYRzRnSUNBcVhHNGdJQ0FxSUNBZ1BpQmpjbVZoZEdWTllYSnJkWEJHYjNKVGRIbHNaWE1vZTNkcFpIUm9PaUFuTWpBd2NIZ25MQ0JvWldsbmFIUTZJREI5S1Z4dUlDQWdLaUFnSUZ3aWQybGtkR2c2TWpBd2NIZzdhR1ZwWjJoME9qQTdYQ0pjYmlBZ0lDcGNiaUFnSUNvZ1ZXNWtaV1pwYm1Wa0lIWmhiSFZsY3lCaGNtVWdhV2R1YjNKbFpDQnpieUIwYUdGMElHUmxZMnhoY21GMGFYWmxJSEJ5YjJkeVlXMXRhVzVuSUdseklHVmhjMmxsY2k1Y2JpQWdJQ29nVkdobElISmxjM1ZzZENCemFHOTFiR1FnWW1VZ1NGUk5UQzFsYzJOaGNHVmtJR0psWm05eVpTQnBibk5sY25ScGIyNGdhVzUwYnlCMGFHVWdSRTlOTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2MzUjViR1Z6WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejl6ZEhKcGJtZDlYRzRnSUNBcUwxeHVJQ0JqY21WaGRHVk5ZWEpyZFhCR2IzSlRkSGxzWlhNNklHWjFibU4wYVc5dUlDaHpkSGxzWlhNcElIdGNiaUFnSUNCMllYSWdjMlZ5YVdGc2FYcGxaQ0E5SUNjbk8xeHVJQ0FnSUdadmNpQW9kbUZ5SUhOMGVXeGxUbUZ0WlNCcGJpQnpkSGxzWlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2doYzNSNWJHVnpMbWhoYzA5M2JsQnliM0JsY25SNUtITjBlV3hsVG1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IyWVhJZ2MzUjViR1ZXWVd4MVpTQTlJSE4wZVd4bGMxdHpkSGxzWlU1aGJXVmRPMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdkMkZ5YmxaaGJHbGtVM1I1YkdVb2MzUjViR1ZPWVcxbExDQnpkSGxzWlZaaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoemRIbHNaVlpoYkhWbElDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdjMlZ5YVdGc2FYcGxaQ0FyUFNCd2NtOWpaWE56VTNSNWJHVk9ZVzFsS0hOMGVXeGxUbUZ0WlNrZ0t5QW5PaWM3WEc0Z0lDQWdJQ0FnSUhObGNtbGhiR2w2WldRZ0t6MGdaR0Z1WjJWeWIzVnpVM1I1YkdWV1lXeDFaU2h6ZEhsc1pVNWhiV1VzSUhOMGVXeGxWbUZzZFdVcElDc2dKenNuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2MyVnlhV0ZzYVhwbFpDQjhmQ0J1ZFd4c08xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUWlhSeklIUm9aU0IyWVd4MVpTQm1iM0lnYlhWc2RHbHdiR1VnYzNSNWJHVnpJRzl1SUdFZ2JtOWtaUzRnSUVsbUlHRWdkbUZzZFdVZ2FYTWdjM0JsWTJsbWFXVmtJR0Z6WEc0Z0lDQXFJQ2NuSUNobGJYQjBlU0J6ZEhKcGJtY3BMQ0IwYUdVZ1kyOXljbVZ6Y0c5dVpHbHVaeUJ6ZEhsc1pTQndjbTl3WlhKMGVTQjNhV3hzSUdKbElIVnVjMlYwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJRzV2WkdWY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSE4wZVd4bGMxeHVJQ0FnS2k5Y2JpQWdjMlYwVm1Gc2RXVkdiM0pUZEhsc1pYTTZJR1oxYm1OMGFXOXVJQ2h1YjJSbExDQnpkSGxzWlhNcElIdGNiaUFnSUNCMllYSWdjM1I1YkdVZ1BTQnViMlJsTG5OMGVXeGxPMXh1SUNBZ0lHWnZjaUFvZG1GeUlITjBlV3hsVG1GdFpTQnBiaUJ6ZEhsc1pYTXBJSHRjYmlBZ0lDQWdJR2xtSUNnaGMzUjViR1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSE4wZVd4bFRtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCM1lYSnVWbUZzYVdSVGRIbHNaU2h6ZEhsc1pVNWhiV1VzSUhOMGVXeGxjMXR6ZEhsc1pVNWhiV1ZkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQnpkSGxzWlZaaGJIVmxJRDBnWkdGdVoyVnliM1Z6VTNSNWJHVldZV3gxWlNoemRIbHNaVTVoYldVc0lITjBlV3hsYzF0emRIbHNaVTVoYldWZEtUdGNiaUFnSUNBZ0lHbG1JQ2h6ZEhsc1pVNWhiV1VnUFQwOUlDZG1iRzloZENjcElIdGNiaUFnSUNBZ0lDQWdjM1I1YkdWT1lXMWxJRDBnYzNSNWJHVkdiRzloZEVGalkyVnpjMjl5TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tITjBlV3hsVm1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnYzNSNWJHVmJjM1I1YkdWT1lXMWxYU0E5SUhOMGVXeGxWbUZzZFdVN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMllYSWdaWGh3WVc1emFXOXVJRDBnYUdGelUyaHZjblJvWVc1a1VISnZjR1Z5ZEhsQ2RXY2dKaVlnUTFOVFVISnZjR1Z5ZEhrdWMyaHZjblJvWVc1a1VISnZjR1Z5ZEhsRmVIQmhibk5wYjI1elczTjBlV3hsVG1GdFpWMDdYRzRnSUNBZ0lDQWdJR2xtSUNobGVIQmhibk5wYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCVGFHOXlkR2hoYm1RZ2NISnZjR1Z5ZEhrZ2RHaGhkQ0JKUlRnZ2QyOXVKM1FnYkdsclpTQjFibk5sZEhScGJtY3NJSE52SUhWdWMyVjBJR1ZoWTJoY2JpQWdJQ0FnSUNBZ0lDQXZMeUJqYjIxd2IyNWxiblFnZEc4Z2NHeGhZMkYwWlNCcGRGeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2x1WkdsMmFXUjFZV3hUZEhsc1pVNWhiV1VnYVc0Z1pYaHdZVzV6YVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVnRwYm1ScGRtbGtkV0ZzVTNSNWJHVk9ZVzFsWFNBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpkSGxzWlZ0emRIbHNaVTVoYldWZElEMGdKeWM3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibHh1ZlR0Y2JseHVVbVZoWTNSUVpYSm1MbTFsWVhOMWNtVk5aWFJvYjJSektFTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeXdnSjBOVFUxQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5Y3NJSHRjYmlBZ2MyVjBWbUZzZFdWR2IzSlRkSGxzWlhNNklDZHpaWFJXWVd4MVpVWnZjbE4wZVd4bGN5ZGNibjBwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjenNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgQ2FsbGJhY2tRdWV1ZVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZlbnQgbW9kdWxlIHRvIGhlbHAga2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG9cbiAqIGJlIG5vdGlmaWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB1c2UuXG4gKlxuICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLlxuICogSW5zdGVhZCwgdXNlIGBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpYC5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5XG4gKiBAaW1wbGVtZW50cyBQb29sZWRDbGFzc1xuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIENhbGxiYWNrUXVldWUoKSB7XG4gIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcbn1cblxuYXNzaWduKENhbGxiYWNrUXVldWUucHJvdG90eXBlLCB7XG5cbiAgLyoqXG4gICAqIEVucXVldWVzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IGNvbnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFja2Agd2l0aC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwgW107XG4gICAgdGhpcy5fY29udGV4dHMgPSB0aGlzLl9jb250ZXh0cyB8fCBbXTtcbiAgICB0aGlzLl9jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgdGhpcy5fY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICogSW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVlLiBUaGlzIGlzIGludm9rZWQgYWZ0ZXJcbiAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbm90aWZ5QWxsOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcztcbiAgICB2YXIgY29udGV4dHMgPSB0aGlzLl9jb250ZXh0cztcbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAhKGNhbGxiYWNrcy5sZW5ndGggPT09IGNvbnRleHRzLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWlzbWF0Y2hlZCBsaXN0IG9mIGNvbnRleHRzIGluIGNhbGxiYWNrIHF1ZXVlJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcbiAgICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxiYWNrc1tpXS5jYWxsKGNvbnRleHRzW2ldKTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgICAgY29udGV4dHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW50ZXJuYWwgcXVldWUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcy5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxufSk7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1ZXVlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYWxsYmFja1F1ZXVlO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RFlXeHNZbUZqYTFGMVpYVmxMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQkRZV3hzWW1GamExRjFaWFZsWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VHOXZiR1ZrUTJ4aGMzTWdQU0J5WlhGMWFYSmxLQ2N1TDFCdmIyeGxaRU5zWVhOekp5azdYRzVjYm5aaGNpQmhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDY3VMMDlpYW1WamRDNWhjM05wWjI0bktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dUx5b3FYRzRnS2lCQklITndaV05wWVd4cGVtVmtJSEJ6WlhWa2J5MWxkbVZ1ZENCdGIyUjFiR1VnZEc4Z2FHVnNjQ0JyWldWd0lIUnlZV05ySUc5bUlHTnZiWEJ2Ym1WdWRITWdkMkZwZEdsdVp5QjBiMXh1SUNvZ1ltVWdibTkwYVdacFpXUWdkMmhsYmlCMGFHVnBjaUJFVDAwZ2NtVndjbVZ6Wlc1MFlYUnBiMjV6SUdGeVpTQmhkbUZwYkdGaWJHVWdabTl5SUhWelpTNWNiaUFxWEc0Z0tpQlVhR2x6SUdsdGNHeGxiV1Z1ZEhNZ1lGQnZiMnhsWkVOc1lYTnpZQ3dnYzI4Z2VXOTFJSE5vYjNWc1pDQnVaWFpsY2lCdVpXVmtJSFJ2SUdsdWMzUmhiblJwWVhSbElIUm9hWE11WEc0Z0tpQkpibk4wWldGa0xDQjFjMlVnWUVOaGJHeGlZV05yVVhWbGRXVXVaMlYwVUc5dmJHVmtLQ2xnTGx4dUlDcGNiaUFxSUVCamJHRnpjeUJTWldGamRFMXZkVzUwVW1WaFpIbGNiaUFxSUVCcGJYQnNaVzFsYm5SeklGQnZiMnhsWkVOc1lYTnpYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnUTJGc2JHSmhZMnRSZFdWMVpTZ3BJSHRjYmlBZ2RHaHBjeTVmWTJGc2JHSmhZMnR6SUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVmWTI5dWRHVjRkSE1nUFNCdWRXeHNPMXh1ZlZ4dVhHNWhjM05wWjI0b1EyRnNiR0poWTJ0UmRXVjFaUzV3Y205MGIzUjVjR1VzSUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUlc1eGRXVjFaWE1nWVNCallXeHNZbUZqYXlCMGJ5QmlaU0JwYm5admEyVmtJSGRvWlc0Z1lHNXZkR2xtZVVGc2JHQWdhWE1nYVc1MmIydGxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1NXNTJiMnRsWkNCM2FHVnVJR0J1YjNScFpubEJiR3hnSUdseklHbHVkbTlyWldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnWTI5dWRHVjRkQ0JEYjI1MFpYaDBJSFJ2SUdOaGJHd2dZR05oYkd4aVlXTnJZQ0IzYVhSb0xseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdVNklHWjFibU4wYVc5dUlDaGpZV3hzWW1GamF5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIUm9hWE11WDJOaGJHeGlZV05yY3lBOUlIUm9hWE11WDJOaGJHeGlZV05yY3lCOGZDQmJYVHRjYmlBZ0lDQjBhR2x6TGw5amIyNTBaWGgwY3lBOUlIUm9hWE11WDJOdmJuUmxlSFJ6SUh4OElGdGRPMXh1SUNBZ0lIUm9hWE11WDJOaGJHeGlZV05yY3k1d2RYTm9LR05oYkd4aVlXTnJLVHRjYmlBZ0lDQjBhR2x6TGw5amIyNTBaWGgwY3k1d2RYTm9LR052Ym5SbGVIUXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZ6SUdGc2JDQmxibkYxWlhWbFpDQmpZV3hzWW1GamEzTWdZVzVrSUdOc1pXRnljeUIwYUdVZ2NYVmxkV1V1SUZSb2FYTWdhWE1nYVc1MmIydGxaQ0JoWm5SbGNseHVJQ0FnS2lCMGFHVWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUdFZ1kyOXRjRzl1Wlc1MElHaGhjeUJpWldWdUlHTnlaV0YwWldRZ2IzSWdkWEJrWVhSbFpDNWNiaUFnSUNwY2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCdWIzUnBabmxCYkd3NklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjJZWElnWTJGc2JHSmhZMnR6SUQwZ2RHaHBjeTVmWTJGc2JHSmhZMnR6TzF4dUlDQWdJSFpoY2lCamIyNTBaWGgwY3lBOUlIUm9hWE11WDJOdmJuUmxlSFJ6TzF4dUlDQWdJR2xtSUNoallXeHNZbUZqYTNNcElIdGNiaUFnSUNBZ0lDRW9ZMkZzYkdKaFkydHpMbXhsYm1kMGFDQTlQVDBnWTI5dWRHVjRkSE11YkdWdVozUm9LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZE5hWE50WVhSamFHVmtJR3hwYzNRZ2IyWWdZMjl1ZEdWNGRITWdhVzRnWTJGc2JHSmhZMnNnY1hWbGRXVW5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCMGFHbHpMbDlqWVd4c1ltRmphM01nUFNCdWRXeHNPMXh1SUNBZ0lDQWdkR2hwY3k1ZlkyOXVkR1Y0ZEhNZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCallXeHNZbUZqYTNNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnWTJGc2JHSmhZMnR6VzJsZExtTmhiR3dvWTI5dWRHVjRkSE5iYVYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1kyRnNiR0poWTJ0ekxteGxibWQwYUNBOUlEQTdYRzRnSUNBZ0lDQmpiMjUwWlhoMGN5NXNaVzVuZEdnZ1BTQXdPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WelpYUnpJSFJvWlNCcGJuUmxjbTVoYkNCeGRXVjFaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQnlaWE5sZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIUm9hWE11WDJOaGJHeGlZV05yY3lBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZlkyOXVkR1Y0ZEhNZ1BTQnVkV3hzTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQmdVRzl2YkdWa1EyeGhjM05nSUd4dmIydHpJR1p2Y2lCMGFHbHpMbHh1SUNBZ0tpOWNiaUFnWkdWemRISjFZM1J2Y2pvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIUm9hWE11Y21WelpYUW9LVHRjYmlBZ2ZWeHVYRzU5S1R0Y2JseHVVRzl2YkdWa1EyeGhjM011WVdSa1VHOXZiR2x1WjFSdktFTmhiR3hpWVdOclVYVmxkV1VwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFTmhiR3hpWVdOclVYVmxkV1U3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBDaGFuZ2VFdmVudFBsdWdpblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1aXJlKCcuL2lzVGV4dElucHV0RWxlbWVudCcpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgY2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DaGFuZ2U6IG51bGwgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNoYW5nZUNhcHR1cmU6IG51bGwgfSlcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogW3RvcExldmVsVHlwZXMudG9wQmx1ciwgdG9wTGV2ZWxUeXBlcy50b3BDaGFuZ2UsIHRvcExldmVsVHlwZXMudG9wQ2xpY2ssIHRvcExldmVsVHlwZXMudG9wRm9jdXMsIHRvcExldmVsVHlwZXMudG9wSW5wdXQsIHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcCwgdG9wTGV2ZWxUeXBlcy50b3BTZWxlY3Rpb25DaGFuZ2VdXG4gIH1cbn07XG5cbi8qKlxuICogRm9yIElFIHNoaW1zXG4gKi9cbnZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbnZhciBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBjaGFuZ2VgIGV2ZW50XG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHwgbm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAnZmlsZSc7XG59XG5cbnZhciBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBmYWxzZTtcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gU2VlIGBoYW5kbGVDaGFuZ2VgIGNvbW1lbnQgYmVsb3dcbiAgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gaXNFdmVudFN1cHBvcnRlZCgnY2hhbmdlJykgJiYgKCEoJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDgpO1xufVxuXG5mdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG4gIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgYWN0aXZlRWxlbWVudElELCBuYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpKTtcbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcblxuICAvLyBJZiBjaGFuZ2UgYW5kIHByb3BlcnR5Y2hhbmdlIGJ1YmJsZWQsIHdlJ2QganVzdCBiaW5kIHRvIGl0IGxpa2UgYWxsIHRoZVxuICAvLyBvdGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28gdGhyb3VnaCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNlIGl0XG4gIC8vIGRvZXNuJ3QsIHdlIG1hbnVhbGx5IGxpc3RlbiBmb3IgdGhlIGV2ZW50cyBhbmQgc28gd2UgaGF2ZSB0byBlbnF1ZXVlIGFuZFxuICAvLyBwcm9jZXNzIHRoZSBhYnN0cmFjdCBldmVudCBtYW51YWxseS5cbiAgLy9cbiAgLy8gQmF0Y2hpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYWxsIGV2ZW50IGhhbmRsZXJzIHJ1blxuICAvLyBiZWZvcmUgdGhlIG5leHQgcmVyZW5kZXIgKGluY2x1ZGluZyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCB0byBhbmNlc3RvclxuICAvLyBlbGVtZW50cyBpbnN0ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJvbGxlZFxuICAvLyBjb21wb25lbnRzIGRvbid0IHdvcmsgcHJvcGVybHkgaW4gY29uanVuY3Rpb24gd2l0aCBldmVudCBidWJibGluZyBiZWNhdXNlXG4gIC8vIHRoZSBjb21wb25lbnQgaXMgcmVyZW5kZXJlZCBhbmQgdGhlIHZhbHVlIHJldmVydGVkIGJlZm9yZSBhbGwgdGhlIGV2ZW50XG4gIC8vIGhhbmRsZXJzIGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcwOC5cbiAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHJ1bkV2ZW50SW5CYXRjaCwgZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBydW5FdmVudEluQmF0Y2goZXZlbnQpIHtcbiAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudCk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SUQpIHtcbiAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudElEID0gdGFyZ2V0SUQ7XG4gIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG59XG5cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCkge1xuICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcbiAgYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gIGFjdGl2ZUVsZW1lbnRJRCA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldElERm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcENoYW5nZSkge1xuICAgIHJldHVybiB0b3BMZXZlbFRhcmdldElEO1xuICB9XG59XG5mdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wRm9jdXMpIHtcbiAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKTtcbiAgfSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wQmx1cikge1xuICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGlucHV0YCBldmVudFxuICovXG52YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFOSBjbGFpbXMgdG8gc3VwcG9ydCB0aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRvIHRyaWdnZXIgaXQgd2hlblxuICAvLyBkZWxldGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50c1xuICBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1dCcpICYmICghKCdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA5KTtcbn1cblxuLyoqXG4gKiAoRm9yIG9sZCBJRS4pIFJlcGxhY2VtZW50IGdldHRlci9zZXR0ZXIgZm9yIHRoZSBgdmFsdWVgIHByb3BlcnR5IHRoYXQgZ2V0c1xuICogc2V0IG9uIHRoZSBhY3RpdmUgZWxlbWVudC5cbiAqL1xudmFyIG5ld1ZhbHVlUHJvcCA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AuZ2V0LmNhbGwodGhpcyk7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbCkge1xuICAgIC8vIENhc3QgdG8gYSBzdHJpbmcgc28gd2UgY2FuIGRvIGVxdWFsaXR5IGNoZWNrcy5cbiAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSAnJyArIHZhbDtcbiAgICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wLnNldC5jYWxsKHRoaXMsIHZhbCk7XG4gIH1cbn07XG5cbi8qKlxuICogKEZvciBvbGQgSUUuKSBTdGFydHMgdHJhY2tpbmcgcHJvcGVydHljaGFuZ2UgZXZlbnRzIG9uIHRoZSBwYXNzZWQtaW4gZWxlbWVudFxuICogYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBmcm9tXG4gKiB2YWx1ZSBjaGFuZ2VzIGluIEpTLlxuICovXG5mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJRCkge1xuICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xuICBhY3RpdmVFbGVtZW50SUQgPSB0YXJnZXRJRDtcbiAgYWN0aXZlRWxlbWVudFZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQuY29uc3RydWN0b3IucHJvdG90eXBlLCAndmFsdWUnKTtcblxuICAvLyBOb3QgZ3VhcmRlZCBpbiBhIGNhbkRlZmluZVByb3BlcnR5IGNoZWNrOiBJRTggc3VwcG9ydHMgZGVmaW5lUHJvcGVydHkgb25seVxuICAvLyBvbiBET00gZWxlbWVudHNcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFjdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG5ld1ZhbHVlUHJvcCk7XG4gIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7XG59XG5cbi8qKlxuICogKEZvciBvbGQgSUUuKSBSZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCxcbiAqIGlmIGFueSBleGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkge1xuICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBkZWxldGUgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIHByb3BlcnR5IGRlZmluaXRpb25cbiAgZGVsZXRlIGFjdGl2ZUVsZW1lbnQudmFsdWU7XG4gIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7XG5cbiAgYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gIGFjdGl2ZUVsZW1lbnRJRCA9IG51bGw7XG4gIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IG51bGw7XG4gIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AgPSBudWxsO1xufVxuXG4vKipcbiAqIChGb3Igb2xkIElFLikgSGFuZGxlcyBhIHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEgYGNoYW5nZWAgZXZlbnQgaWZcbiAqIHRoZSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGVsZW1lbnQgaGFzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2ZW50KSB7XG4gIGlmIChuYXRpdmVFdmVudC5wcm9wZXJ0eU5hbWUgIT09ICd2YWx1ZScpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHZhbHVlID0gbmF0aXZlRXZlbnQuc3JjRWxlbWVudC52YWx1ZTtcbiAgaWYgKHZhbHVlID09PSBhY3RpdmVFbGVtZW50VmFsdWUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYWN0aXZlRWxlbWVudFZhbHVlID0gdmFsdWU7XG5cbiAgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCk7XG59XG5cbi8qKlxuICogSWYgYSBgY2hhbmdlYCBldmVudCBzaG91bGQgYmUgZmlyZWQsIHJldHVybnMgdGhlIHRhcmdldCdzIElELlxuICovXG5mdW5jdGlvbiBnZXRUYXJnZXRJREZvcklucHV0RXZlbnQodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcElucHV0KSB7XG4gICAgLy8gSW4gbW9kZXJuIGJyb3dzZXJzIChpLmUuLCBub3QgSUU4IG9yIElFOSksIHRoZSBpbnB1dCBldmVudCBpcyBleGFjdGx5XG4gICAgLy8gd2hhdCB3ZSB3YW50IHNvIGZhbGwgdGhyb3VnaCBoZXJlIGFuZCB0cmlnZ2VyIGFuIGFic3RyYWN0IGV2ZW50XG4gICAgcmV0dXJuIHRvcExldmVsVGFyZ2V0SUQ7XG4gIH1cbn1cblxuLy8gRm9yIElFOCBhbmQgSUU5LlxuZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BGb2N1cykge1xuICAgIC8vIEluIElFOCwgd2UgY2FuIGNhcHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBhZGRpbmcgYVxuICAgIC8vIHByb3BlcnR5Y2hhbmdlIGhhbmRsZXIgYW5kIGxvb2tpbmcgZm9yIGV2ZW50cyB3aXRoIHByb3BlcnR5TmFtZVxuICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcbiAgICAvLyBJbiBJRTksIHByb3BlcnR5Y2hhbmdlIGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMgYnVnZ3kgYW5kXG4gICAgLy8gZG9lc24ndCBmaXJlIHdoZW4gdGV4dCBpcyBkZWxldGVkLCBidXQgY29udmVuaWVudGx5LCBzZWxlY3Rpb25jaGFuZ2VcbiAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4gYWxsIG9mIHRoZSByZW1haW5pbmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG4gICAgLy8gZm9yd2FyZCB0aGUgZXZlbnQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUgdmFsdWVcbiAgICAvLyBpcyBjaGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIgZm9yIGAudmFsdWVgIHRoYXQgdXBkYXRlc1xuICAgIC8vIG91ciBhY3RpdmVFbGVtZW50VmFsdWUgdmFyaWFibGUsIGFsbG93aW5nIHVzIHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzXG4gICAgLy9cbiAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKTtcbiAgfSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wQmx1cikge1xuICAgIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCk7XG4gIH1cbn1cblxuLy8gRm9yIElFOCBhbmQgSUU5LlxuZnVuY3Rpb24gZ2V0VGFyZ2V0SURGb3JJbnB1dEV2ZW50SUUodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFNlbGVjdGlvbkNoYW5nZSB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wS2V5VXAgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEtleURvd24pIHtcbiAgICAvLyBPbiB0aGUgc2VsZWN0aW9uY2hhbmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3RcbiAgICAvLyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVsZW1lbnQgaW5zdGVhZC5cbiAgICAvL1xuICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJlbid0IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcbiAgICAvLyBwcm9wZXJ0eWNoYW5nZSBvbiB0aGUgZmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVgIGZyb20gYVxuICAgIC8vIHNjcmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywga2V5dXAuIENhdGNoaW5nIGtleXVwIHVzdWFsbHlcbiAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlkb3duIGxldHMgdXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG4gICAgLy8ga2V5c3Ryb2tlIGlmIHVzZXIgZG9lcyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5ZWQ6IHJpZ2h0XG4gICAgLy8gYmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5wdXQgbWV0aG9kcyAoZS5nLiwgcGFzdGUpIHNlZW0gdG9cbiAgICAvLyBmaXJlIHNlbGVjdGlvbmNoYW5nZSBub3JtYWxseS5cbiAgICBpZiAoYWN0aXZlRWxlbWVudCAmJiBhY3RpdmVFbGVtZW50LnZhbHVlICE9PSBhY3RpdmVFbGVtZW50VmFsdWUpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IGFjdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICByZXR1cm4gYWN0aXZlRWxlbWVudElEO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBgY2xpY2tgIGV2ZW50XG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVzZUNsaWNrRXZlbnQoZWxlbSkge1xuICAvLyBVc2UgdGhlIGBjbGlja2AgZXZlbnQgdG8gZGV0ZWN0IGNoYW5nZXMgdG8gY2hlY2tib3ggYW5kIHJhZGlvIGlucHV0cy5cbiAgLy8gVGhpcyBhcHByb2FjaCB3b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90IGZpcmVcbiAgLy8gdW50aWwgYGJsdXJgIGluIElFOC5cbiAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIChlbGVtLnR5cGUgPT09ICdjaGVja2JveCcgfHwgZWxlbS50eXBlID09PSAncmFkaW8nKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SURGb3JDbGlja0V2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BDbGljaykge1xuICAgIHJldHVybiB0b3BMZXZlbFRhcmdldElEO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25DaGFuZ2VgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzXG4gKiBhY3Jvc3MgZm9ybSBlbGVtZW50cy4gVGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hlbiBpdCdzIHBvc3NpYmxlIHRvXG4gKiBjaGFuZ2UgdGhlIGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWluZyBhIGZsaWNrZXIuXG4gKlxuICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcbiAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YClcbiAqIC0gdGV4dGFyZWFcbiAqIC0gc2VsZWN0XG4gKi9cbnZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHtcblxuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50c31cbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblxuICAgIHZhciBnZXRUYXJnZXRJREZ1bmMsIGhhbmRsZUV2ZW50RnVuYztcbiAgICBpZiAoc2hvdWxkVXNlQ2hhbmdlRXZlbnQodG9wTGV2ZWxUYXJnZXQpKSB7XG4gICAgICBpZiAoZG9lc0NoYW5nZUV2ZW50QnViYmxlKSB7XG4gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9yQ2hhbmdlRXZlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFODtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0b3BMZXZlbFRhcmdldCkpIHtcbiAgICAgIGlmIChpc0lucHV0RXZlbnRTdXBwb3J0ZWQpIHtcbiAgICAgICAgZ2V0VGFyZ2V0SURGdW5jID0gZ2V0VGFyZ2V0SURGb3JJbnB1dEV2ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0VGFyZ2V0SURGdW5jID0gZ2V0VGFyZ2V0SURGb3JJbnB1dEV2ZW50SUU7XG4gICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJRTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNob3VsZFVzZUNsaWNrRXZlbnQodG9wTGV2ZWxUYXJnZXQpKSB7XG4gICAgICBnZXRUYXJnZXRJREZ1bmMgPSBnZXRUYXJnZXRJREZvckNsaWNrRXZlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGdldFRhcmdldElERnVuYykge1xuICAgICAgdmFyIHRhcmdldElEID0gZ2V0VGFyZ2V0SURGdW5jKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpO1xuICAgICAgaWYgKHRhcmdldElEKSB7XG4gICAgICAgIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgdGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAgIGV2ZW50LnR5cGUgPSAnY2hhbmdlJztcbiAgICAgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYW5kbGVFdmVudEZ1bmMpIHtcbiAgICAgIGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDaGFuZ2VFdmVudFBsdWdpbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgQ2xpZW50UmVhY3RSb290SW5kZXhcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbmV4dFJlYWN0Um9vdEluZGV4ID0gMDtcblxudmFyIENsaWVudFJlYWN0Um9vdEluZGV4ID0ge1xuICBjcmVhdGVSZWFjdFJvb3RJbmRleDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXh0UmVhY3RSb290SW5kZXgrKztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDbGllbnRSZWFjdFJvb3RJbmRleDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERPTUNoaWxkcmVuT3BlcmF0aW9uc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBEYW5nZXIgPSByZXF1aXJlKCcuL0RhbmdlcicpO1xudmFyIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcycpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xudmFyIHNldFRleHRDb250ZW50ID0gcmVxdWlyZSgnLi9zZXRUZXh0Q29udGVudCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBhcmVudCBub2RlIGluIHdoaWNoIHRvIGluc2VydC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGluZGV4KSB7XG4gIC8vIEJ5IGV4cGxvaXRpbmcgYXJyYXlzIHJldHVybmluZyBgdW5kZWZpbmVkYCBmb3IgYW4gdW5kZWZpbmVkIGluZGV4LCB3ZSBjYW5cbiAgLy8gcmVseSBleGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNpbmdcbiAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gSG93ZXZlciwgdXNpbmcgYHVuZGVmaW5lZGAgaXMgbm90IGFsbG93ZWQgYnkgYWxsXG4gIC8vIGJyb3dzZXJzIHNvIHdlIG11c3QgcmVwbGFjZSBpdCB3aXRoIGBudWxsYC5cblxuICAvLyBmaXggcmVuZGVyIG9yZGVyIGVycm9yIGluIHNhZmFyaVxuICAvLyBJRTggd2lsbCB0aHJvdyBlcnJvciB3aGVuIGluZGV4IG91dCBvZiBsaXN0IHNpemUuXG4gIHZhciBiZWZvcmVDaGlsZCA9IGluZGV4ID49IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPyBudWxsIDogcGFyZW50Tm9kZS5jaGlsZE5vZGVzLml0ZW0oaW5kZXgpO1xuXG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkTm9kZSwgYmVmb3JlQ2hpbGQpO1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbnMgZm9yIHVwZGF0aW5nIHdpdGggRE9NIGNoaWxkcmVuLlxuICovXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0ge1xuXG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAsXG5cbiAgdXBkYXRlVGV4dENvbnRlbnQ6IHNldFRleHRDb250ZW50LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLiBUaGVcbiAgICogdXBkYXRlIGNvbmZpZ3VyYXRpb25zIGFyZSBlYWNoIGV4cGVjdGVkIHRvIGhhdmUgYSBgcGFyZW50Tm9kZWAgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cbiAgICogQHBhcmFtIHthcnJheTxzdHJpbmc+fSBtYXJrdXBMaXN0IExpc3Qgb2YgbWFya3VwIHN0cmluZ3MuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uICh1cGRhdGVzLCBtYXJrdXBMaXN0KSB7XG4gICAgdmFyIHVwZGF0ZTtcbiAgICAvLyBNYXBwaW5nIGZyb20gcGFyZW50IElEcyB0byBpbml0aWFsIGNoaWxkIG9yZGVyaW5ncy5cbiAgICB2YXIgaW5pdGlhbENoaWxkcmVuID0gbnVsbDtcbiAgICAvLyBMaXN0IG9mIGNoaWxkcmVuIHRoYXQgd2lsbCBiZSBtb3ZlZCBvciByZW1vdmVkLlxuICAgIHZhciB1cGRhdGVkQ2hpbGRyZW4gPSBudWxsO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cGRhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB1cGRhdGUgPSB1cGRhdGVzW2ldO1xuICAgICAgaWYgKHVwZGF0ZS50eXBlID09PSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5NT1ZFX0VYSVNUSU5HIHx8IHVwZGF0ZS50eXBlID09PSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5SRU1PVkVfTk9ERSkge1xuICAgICAgICB2YXIgdXBkYXRlZEluZGV4ID0gdXBkYXRlLmZyb21JbmRleDtcbiAgICAgICAgdmFyIHVwZGF0ZWRDaGlsZCA9IHVwZGF0ZS5wYXJlbnROb2RlLmNoaWxkTm9kZXNbdXBkYXRlZEluZGV4XTtcbiAgICAgICAgdmFyIHBhcmVudElEID0gdXBkYXRlLnBhcmVudElEO1xuXG4gICAgICAgICF1cGRhdGVkQ2hpbGQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncHJvY2Vzc1VwZGF0ZXMoKTogVW5hYmxlIHRvIGZpbmQgY2hpbGQgJXMgb2YgZWxlbWVudC4gVGhpcyAnICsgJ3Byb2JhYmx5IG1lYW5zIHRoZSBET00gd2FzIHVuZXhwZWN0ZWRseSBtdXRhdGVkIChlLmcuLCBieSB0aGUgJyArICdicm93c2VyKSwgdXN1YWxseSBkdWUgdG8gZm9yZ2V0dGluZyBhIDx0Ym9keT4gd2hlbiB1c2luZyB0YWJsZXMsICcgKyAnbmVzdGluZyB0YWdzIGxpa2UgPGZvcm0+LCA8cD4sIG9yIDxhPiwgb3IgdXNpbmcgbm9uLVNWRyBlbGVtZW50cyAnICsgJ2luIGFuIDxzdmc+IHBhcmVudC4gVHJ5IGluc3BlY3RpbmcgdGhlIGNoaWxkIG5vZGVzIG9mIHRoZSBlbGVtZW50ICcgKyAnd2l0aCBSZWFjdCBJRCBgJXNgLicsIHVwZGF0ZWRJbmRleCwgcGFyZW50SUQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpbml0aWFsQ2hpbGRyZW4gPSBpbml0aWFsQ2hpbGRyZW4gfHwge307XG4gICAgICAgIGluaXRpYWxDaGlsZHJlbltwYXJlbnRJRF0gPSBpbml0aWFsQ2hpbGRyZW5bcGFyZW50SURdIHx8IFtdO1xuICAgICAgICBpbml0aWFsQ2hpbGRyZW5bcGFyZW50SURdW3VwZGF0ZWRJbmRleF0gPSB1cGRhdGVkQ2hpbGQ7XG5cbiAgICAgICAgdXBkYXRlZENoaWxkcmVuID0gdXBkYXRlZENoaWxkcmVuIHx8IFtdO1xuICAgICAgICB1cGRhdGVkQ2hpbGRyZW4ucHVzaCh1cGRhdGVkQ2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZW5kZXJlZE1hcmt1cDtcbiAgICAvLyBtYXJrdXBMaXN0IGlzIGVpdGhlciBhIGxpc3Qgb2YgbWFya3VwIG9yIGp1c3QgYSBsaXN0IG9mIGVsZW1lbnRzXG4gICAgaWYgKG1hcmt1cExpc3QubGVuZ3RoICYmIHR5cGVvZiBtYXJrdXBMaXN0WzBdID09PSAnc3RyaW5nJykge1xuICAgICAgcmVuZGVyZWRNYXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlSZW5kZXJNYXJrdXAobWFya3VwTGlzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbmRlcmVkTWFya3VwID0gbWFya3VwTGlzdDtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgdXBkYXRlZCBjaGlsZHJlbiBmaXJzdCBzbyB0aGF0IGB0b0luZGV4YCBpcyBjb25zaXN0ZW50LlxuICAgIGlmICh1cGRhdGVkQ2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdXBkYXRlZENoaWxkcmVuLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHVwZGF0ZWRDaGlsZHJlbltqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHVwZGF0ZWRDaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7XG4gICAgICB1cGRhdGUgPSB1cGRhdGVzW2tdO1xuICAgICAgc3dpdGNoICh1cGRhdGUudHlwZSkge1xuICAgICAgICBjYXNlIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLklOU0VSVF9NQVJLVVA6XG4gICAgICAgICAgaW5zZXJ0Q2hpbGRBdCh1cGRhdGUucGFyZW50Tm9kZSwgcmVuZGVyZWRNYXJrdXBbdXBkYXRlLm1hcmt1cEluZGV4XSwgdXBkYXRlLnRvSW5kZXgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLk1PVkVfRVhJU1RJTkc6XG4gICAgICAgICAgaW5zZXJ0Q2hpbGRBdCh1cGRhdGUucGFyZW50Tm9kZSwgaW5pdGlhbENoaWxkcmVuW3VwZGF0ZS5wYXJlbnRJRF1bdXBkYXRlLmZyb21JbmRleF0sIHVwZGF0ZS50b0luZGV4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5TRVRfTUFSS1VQOlxuICAgICAgICAgIHNldElubmVySFRNTCh1cGRhdGUucGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlRFWFRfQ09OVEVOVDpcbiAgICAgICAgICBzZXRUZXh0Q29udGVudCh1cGRhdGUucGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlJFTU9WRV9OT0RFOlxuICAgICAgICAgIC8vIEFscmVhZHkgcmVtb3ZlZCBieSB0aGUgZm9yLWxvb3AgYWJvdmUuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhET01DaGlsZHJlbk9wZXJhdGlvbnMsICdET01DaGlsZHJlbk9wZXJhdGlvbnMnLCB7XG4gIHVwZGF0ZVRleHRDb250ZW50OiAndXBkYXRlVGV4dENvbnRlbnQnXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01DaGlsZHJlbk9wZXJhdGlvbnM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUVSUFRVTm9hV3hrY21WdVQzQmxjbUYwYVc5dWMxeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJFWVc1blpYSWdQU0J5WlhGMWFYSmxLQ2N1TDBSaGJtZGxjaWNwTzF4dWRtRnlJRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3ljcE8xeHVkbUZ5SUZKbFlXTjBVR1Z5WmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUVpYSm1KeWs3WEc1Y2JuWmhjaUJ6WlhSSmJtNWxja2hVVFV3Z1BTQnlaWEYxYVhKbEtDY3VMM05sZEVsdWJtVnlTRlJOVENjcE8xeHVkbUZ5SUhObGRGUmxlSFJEYjI1MFpXNTBJRDBnY21WeGRXbHlaU2duTGk5elpYUlVaWGgwUTI5dWRHVnVkQ2NwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzR2S2lwY2JpQXFJRWx1YzJWeWRITWdZR05vYVd4a1RtOWtaV0FnWVhNZ1lTQmphR2xzWkNCdlppQmdjR0Z5Wlc1MFRtOWtaV0FnWVhRZ2RHaGxJR0JwYm1SbGVHQXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0J3WVhKbGJuUk9iMlJsSUZCaGNtVnVkQ0J1YjJSbElHbHVJSGRvYVdOb0lIUnZJR2x1YzJWeWRDNWNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyaHBiR1JPYjJSbElFTm9hV3hrSUc1dlpHVWdkRzhnYVc1elpYSjBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRJRWx1WkdWNElHRjBJSGRvYVdOb0lIUnZJR2x1YzJWeWRDQjBhR1VnWTJocGJHUXVYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1elpYSjBRMmhwYkdSQmRDaHdZWEpsYm5ST2IyUmxMQ0JqYUdsc1pFNXZaR1VzSUdsdVpHVjRLU0I3WEc0Z0lDOHZJRUo1SUdWNGNHeHZhWFJwYm1jZ1lYSnlZWGx6SUhKbGRIVnlibWx1WnlCZ2RXNWtaV1pwYm1Wa1lDQm1iM0lnWVc0Z2RXNWtaV1pwYm1Wa0lHbHVaR1Y0TENCM1pTQmpZVzVjYmlBZ0x5OGdjbVZzZVNCbGVHTnNkWE5wZG1Wc2VTQnZiaUJnYVc1elpYSjBRbVZtYjNKbEtHNXZaR1VzSUc1MWJHd3BZQ0JwYm5OMFpXRmtJRzltSUdGc2MyOGdkWE5wYm1kY2JpQWdMeThnWUdGd2NHVnVaRU5vYVd4a0tHNXZaR1VwWUM0Z1NHOTNaWFpsY2l3Z2RYTnBibWNnWUhWdVpHVm1hVzVsWkdBZ2FYTWdibTkwSUdGc2JHOTNaV1FnWW5rZ1lXeHNYRzRnSUM4dklHSnliM2R6WlhKeklITnZJSGRsSUcxMWMzUWdjbVZ3YkdGalpTQnBkQ0IzYVhSb0lHQnVkV3hzWUM1Y2JseHVJQ0F2THlCbWFYZ2djbVZ1WkdWeUlHOXlaR1Z5SUdWeWNtOXlJR2x1SUhOaFptRnlhVnh1SUNBdkx5QkpSVGdnZDJsc2JDQjBhSEp2ZHlCbGNuSnZjaUIzYUdWdUlHbHVaR1Y0SUc5MWRDQnZaaUJzYVhOMElITnBlbVV1WEc0Z0lIWmhjaUJpWldadmNtVkRhR2xzWkNBOUlHbHVaR1Y0SUQ0OUlIQmhjbVZ1ZEU1dlpHVXVZMmhwYkdST2IyUmxjeTVzWlc1bmRHZ2dQeUJ1ZFd4c0lEb2djR0Z5Wlc1MFRtOWtaUzVqYUdsc1pFNXZaR1Z6TG1sMFpXMG9hVzVrWlhncE8xeHVYRzRnSUhCaGNtVnVkRTV2WkdVdWFXNXpaWEowUW1WbWIzSmxLR05vYVd4a1RtOWtaU3dnWW1WbWIzSmxRMmhwYkdRcE8xeHVmVnh1WEc0dktpcGNiaUFxSUU5d1pYSmhkR2x2Ym5NZ1ptOXlJSFZ3WkdGMGFXNW5JSGRwZEdnZ1JFOU5JR05vYVd4a2NtVnVMbHh1SUNvdlhHNTJZWElnUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1eklEMGdlMXh1WEc0Z0lHUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3T2lCRVlXNW5aWEl1WkdGdVoyVnliM1Z6YkhsU1pYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQXNYRzVjYmlBZ2RYQmtZWFJsVkdWNGRFTnZiblJsYm5RNklITmxkRlJsZUhSRGIyNTBaVzUwTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWY0dSaGRHVnpJR0VnWTI5dGNHOXVaVzUwSjNNZ1kyaHBiR1J5Wlc0Z1lua2djSEp2WTJWemMybHVaeUJoSUhObGNtbGxjeUJ2WmlCMWNHUmhkR1Z6TGlCVWFHVmNiaUFnSUNvZ2RYQmtZWFJsSUdOdmJtWnBaM1Z5WVhScGIyNXpJR0Z5WlNCbFlXTm9JR1Y0Y0dWamRHVmtJSFJ2SUdoaGRtVWdZU0JnY0dGeVpXNTBUbTlrWldBZ2NISnZjR1Z5ZEhrdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdZWEp5WVhrOGIySnFaV04wUG4wZ2RYQmtZWFJsY3lCTWFYTjBJRzltSUhWd1pHRjBaU0JqYjI1bWFXZDFjbUYwYVc5dWN5NWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aGNuSmhlVHh6ZEhKcGJtYytmU0J0WVhKcmRYQk1hWE4wSUV4cGMzUWdiMllnYldGeWEzVndJSE4wY21sdVozTXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdjSEp2WTJWemMxVndaR0YwWlhNNklHWjFibU4wYVc5dUlDaDFjR1JoZEdWekxDQnRZWEpyZFhCTWFYTjBLU0I3WEc0Z0lDQWdkbUZ5SUhWd1pHRjBaVHRjYmlBZ0lDQXZMeUJOWVhCd2FXNW5JR1p5YjIwZ2NHRnlaVzUwSUVsRWN5QjBieUJwYm1sMGFXRnNJR05vYVd4a0lHOXlaR1Z5YVc1bmN5NWNiaUFnSUNCMllYSWdhVzVwZEdsaGJFTm9hV3hrY21WdUlEMGdiblZzYkR0Y2JpQWdJQ0F2THlCTWFYTjBJRzltSUdOb2FXeGtjbVZ1SUhSb1lYUWdkMmxzYkNCaVpTQnRiM1psWkNCdmNpQnlaVzF2ZG1Wa0xseHVJQ0FnSUhaaGNpQjFjR1JoZEdWa1EyaHBiR1J5Wlc0Z1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCMWNHUmhkR1Z6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjFjR1JoZEdVZ1BTQjFjR1JoZEdWelcybGRPMXh1SUNBZ0lDQWdhV1lnS0hWd1pHRjBaUzUwZVhCbElEMDlQU0JTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVOVDFaRlgwVllTVk5VU1U1SElIeDhJSFZ3WkdGMFpTNTBlWEJsSUQwOVBTQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NVNSVTFQVmtWZlRrOUVSU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdkWEJrWVhSbFpFbHVaR1Y0SUQwZ2RYQmtZWFJsTG1aeWIyMUpibVJsZUR0Y2JpQWdJQ0FnSUNBZ2RtRnlJSFZ3WkdGMFpXUkRhR2xzWkNBOUlIVndaR0YwWlM1d1lYSmxiblJPYjJSbExtTm9hV3hrVG05a1pYTmJkWEJrWVhSbFpFbHVaR1Y0WFR0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJoY21WdWRFbEVJRDBnZFhCa1lYUmxMbkJoY21WdWRFbEVPMXh1WEc0Z0lDQWdJQ0FnSUNGMWNHUmhkR1ZrUTJocGJHUWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmNISnZZMlZ6YzFWd1pHRjBaWE1vS1RvZ1ZXNWhZbXhsSUhSdklHWnBibVFnWTJocGJHUWdKWE1nYjJZZ1pXeGxiV1Z1ZEM0Z1ZHaHBjeUFuSUNzZ0ozQnliMkpoWW14NUlHMWxZVzV6SUhSb1pTQkVUMDBnZDJGeklIVnVaWGh3WldOMFpXUnNlU0J0ZFhSaGRHVmtJQ2hsTG1jdUxDQmllU0IwYUdVZ0p5QXJJQ2RpY205M2MyVnlLU3dnZFhOMVlXeHNlU0JrZFdVZ2RHOGdabTl5WjJWMGRHbHVaeUJoSUR4MFltOWtlVDRnZDJobGJpQjFjMmx1WnlCMFlXSnNaWE1zSUNjZ0t5QW5ibVZ6ZEdsdVp5QjBZV2R6SUd4cGEyVWdQR1p2Y20wK0xDQThjRDRzSUc5eUlEeGhQaXdnYjNJZ2RYTnBibWNnYm05dUxWTldSeUJsYkdWdFpXNTBjeUFuSUNzZ0oybHVJR0Z1SUR4emRtYytJSEJoY21WdWRDNGdWSEo1SUdsdWMzQmxZM1JwYm1jZ2RHaGxJR05vYVd4a0lHNXZaR1Z6SUc5bUlIUm9aU0JsYkdWdFpXNTBJQ2NnS3lBbmQybDBhQ0JTWldGamRDQkpSQ0JnSlhOZ0xpY3NJSFZ3WkdGMFpXUkpibVJsZUN3Z2NHRnlaVzUwU1VRcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQ0FnSUNCcGJtbDBhV0ZzUTJocGJHUnlaVzRnUFNCcGJtbDBhV0ZzUTJocGJHUnlaVzRnZkh3Z2UzMDdYRzRnSUNBZ0lDQWdJR2x1YVhScFlXeERhR2xzWkhKbGJsdHdZWEpsYm5SSlJGMGdQU0JwYm1sMGFXRnNRMmhwYkdSeVpXNWJjR0Z5Wlc1MFNVUmRJSHg4SUZ0ZE8xeHVJQ0FnSUNBZ0lDQnBibWwwYVdGc1EyaHBiR1J5Wlc1YmNHRnlaVzUwU1VSZFczVndaR0YwWldSSmJtUmxlRjBnUFNCMWNHUmhkR1ZrUTJocGJHUTdYRzVjYmlBZ0lDQWdJQ0FnZFhCa1lYUmxaRU5vYVd4a2NtVnVJRDBnZFhCa1lYUmxaRU5vYVd4a2NtVnVJSHg4SUZ0ZE8xeHVJQ0FnSUNBZ0lDQjFjR1JoZEdWa1EyaHBiR1J5Wlc0dWNIVnphQ2gxY0dSaGRHVmtRMmhwYkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQnlaVzVrWlhKbFpFMWhjbXQxY0R0Y2JpQWdJQ0F2THlCdFlYSnJkWEJNYVhOMElHbHpJR1ZwZEdobGNpQmhJR3hwYzNRZ2IyWWdiV0Z5YTNWd0lHOXlJR3AxYzNRZ1lTQnNhWE4wSUc5bUlHVnNaVzFsYm5SelhHNGdJQ0FnYVdZZ0tHMWhjbXQxY0V4cGMzUXViR1Z1WjNSb0lDWW1JSFI1Y0dWdlppQnRZWEpyZFhCTWFYTjBXekJkSUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdjbVZ1WkdWeVpXUk5ZWEpyZFhBZ1BTQkVZVzVuWlhJdVpHRnVaMlZ5YjNWemJIbFNaVzVrWlhKTllYSnJkWEFvYldGeWEzVndUR2x6ZENrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsYm1SbGNtVmtUV0Z5YTNWd0lEMGdiV0Z5YTNWd1RHbHpkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJTWlcxdmRtVWdkWEJrWVhSbFpDQmphR2xzWkhKbGJpQm1hWEp6ZENCemJ5QjBhR0YwSUdCMGIwbHVaR1Y0WUNCcGN5QmpiMjV6YVhOMFpXNTBMbHh1SUNBZ0lHbG1JQ2gxY0dSaGRHVmtRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR29nUFNBd095QnFJRHdnZFhCa1lYUmxaRU5vYVd4a2NtVnVMbXhsYm1kMGFEc2dhaXNyS1NCN1hHNGdJQ0FnSUNBZ0lIVndaR0YwWldSRGFHbHNaSEpsYmx0cVhTNXdZWEpsYm5ST2IyUmxMbkpsYlc5MlpVTm9hV3hrS0hWd1pHRjBaV1JEYUdsc1pISmxibHRxWFNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm05eUlDaDJZWElnYXlBOUlEQTdJR3NnUENCMWNHUmhkR1Z6TG14bGJtZDBhRHNnYXlzcktTQjdYRzRnSUNBZ0lDQjFjR1JoZEdVZ1BTQjFjR1JoZEdWelcydGRPMXh1SUNBZ0lDQWdjM2RwZEdOb0lDaDFjR1JoZEdVdWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpMa2xPVTBWU1ZGOU5RVkpMVlZBNlhHNGdJQ0FnSUNBZ0lDQWdhVzV6WlhKMFEyaHBiR1JCZENoMWNHUmhkR1V1Y0dGeVpXNTBUbTlrWlN3Z2NtVnVaR1Z5WldSTllYSnJkWEJiZFhCa1lYUmxMbTFoY210MWNFbHVaR1Y0WFN3Z2RYQmtZWFJsTG5SdlNXNWtaWGdwTzF4dUlDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCallYTmxJRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpMazFQVmtWZlJWaEpVMVJKVGtjNlhHNGdJQ0FnSUNBZ0lDQWdhVzV6WlhKMFEyaHBiR1JCZENoMWNHUmhkR1V1Y0dGeVpXNTBUbTlrWlN3Z2FXNXBkR2xoYkVOb2FXeGtjbVZ1VzNWd1pHRjBaUzV3WVhKbGJuUkpSRjFiZFhCa1lYUmxMbVp5YjIxSmJtUmxlRjBzSUhWd1pHRjBaUzUwYjBsdVpHVjRLVHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWTJGelpTQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NVRSVlJmVFVGU1MxVlFPbHh1SUNBZ0lDQWdJQ0FnSUhObGRFbHVibVZ5U0ZSTlRDaDFjR1JoZEdVdWNHRnlaVzUwVG05a1pTd2dkWEJrWVhSbExtTnZiblJsYm5RcE8xeHVJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6TGxSRldGUmZRMDlPVkVWT1ZEcGNiaUFnSUNBZ0lDQWdJQ0J6WlhSVVpYaDBRMjl1ZEdWdWRDaDFjR1JoZEdVdWNHRnlaVzUwVG05a1pTd2dkWEJrWVhSbExtTnZiblJsYm5RcE8xeHVJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6TGxKRlRVOVdSVjlPVDBSRk9seHVJQ0FnSUNBZ0lDQWdJQzh2SUVGc2NtVmhaSGtnY21WdGIzWmxaQ0JpZVNCMGFHVWdabTl5TFd4dmIzQWdZV0p2ZG1VdVhHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYm4wN1hHNWNibEpsWVdOMFVHVnlaaTV0WldGemRYSmxUV1YwYUc5a2N5aEVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk1zSUNkRVQwMURhR2xzWkhKbGJrOXdaWEpoZEdsdmJuTW5MQ0I3WEc0Z0lIVndaR0YwWlZSbGVIUkRiMjUwWlc1ME9pQW5kWEJrWVhSbFZHVjRkRU52Ym5SbGJuUW5YRzU5S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQkVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk03SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRE9NUHJvcGVydHlcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbmZ1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwgYml0bWFzaykge1xuICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7XG59XG5cbnZhciBET01Qcm9wZXJ0eUluamVjdGlvbiA9IHtcbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBub3JtYWxpemVkLCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0aGF0XG4gICAqIHNwZWNpZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBvciByZW5kZXJlZC5cbiAgICovXG4gIE1VU1RfVVNFX0FUVFJJQlVURTogMHgxLFxuICBNVVNUX1VTRV9QUk9QRVJUWTogMHgyLFxuICBIQVNfU0lERV9FRkZFQ1RTOiAweDQsXG4gIEhBU19CT09MRUFOX1ZBTFVFOiAweDgsXG4gIEhBU19OVU1FUklDX1ZBTFVFOiAweDEwLFxuICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgyMCB8IDB4MTAsXG4gIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6IDB4NDAsXG5cbiAgLyoqXG4gICAqIEluamVjdCBzb21lIHNwZWNpYWxpemVkIGtub3dsZWRnZSBhYm91dCB0aGUgRE9NLiBUaGlzIHRha2VzIGEgY29uZmlnIG9iamVjdFxuICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIHRoYXQgZ2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUgd2lsbCByZXR1cm4gdHJ1ZVxuICAgKiBpZiBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSpcbiAgICogYXR0cmlidXRlcyB3aGVyZSBpdCdzIGltcG9zc2libGUgdG8gZW51bWVyYXRlIGFsbCBvZiB0aGUgcG9zc2libGVcbiAgICogYXR0cmlidXRlIG5hbWVzLFxuICAgKlxuICAgKiBQcm9wZXJ0aWVzOiBvYmplY3QgbWFwcGluZyBET00gcHJvcGVydHkgbmFtZSB0byBvbmUgb2YgdGhlXG4gICAqIERPTVByb3BlcnR5SW5qZWN0aW9uIGNvbnN0YW50cyBvciBudWxsLiBJZiB5b3VyIGF0dHJpYnV0ZSBpc24ndCBpbiBoZXJlLFxuICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLlxuICAgKlxuICAgKiBET01BdHRyaWJ1dGVOYW1lczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqXG4gICAqIG5vcm1hbGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZXNwYWNlIFVSTC4gKEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSBubyBuYW1lc3BhY2UuKVxuICAgKlxuICAgKiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0ZU5hbWVzIGJ1dCBmb3IgRE9NIHByb3BlcnRpZXMuXG4gICAqIFByb3BlcnR5IG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSBub3JtYWxpemVkIG5hbWUuXG4gICAqXG4gICAqIERPTU11dGF0aW9uTWV0aG9kczogUHJvcGVydGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRob2RzLiBJZlxuICAgKiBgdmFsdWVgIGlzIHVuZGVmaW5lZCwgdGhlIG11dGF0aW9uIG1ldGhvZCBzaG91bGQgdW5zZXQgdGhlIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZG9tUHJvcGVydHlDb25maWcgdGhlIGNvbmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuXG4gICAqL1xuICBpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzogZnVuY3Rpb24gKGRvbVByb3BlcnR5Q29uZmlnKSB7XG4gICAgdmFyIEluamVjdGlvbiA9IERPTVByb3BlcnR5SW5qZWN0aW9uO1xuICAgIHZhciBQcm9wZXJ0aWVzID0gZG9tUHJvcGVydHlDb25maWcuUHJvcGVydGllcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXNwYWNlcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgfHwge307XG4gICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXMgfHwge307XG4gICAgdmFyIERPTVByb3BlcnR5TmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01Qcm9wZXJ0eU5hbWVzIHx8IHt9O1xuICAgIHZhciBET01NdXRhdGlvbk1ldGhvZHMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01NdXRhdGlvbk1ldGhvZHMgfHwge307XG5cbiAgICBpZiAoZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpIHtcbiAgICAgIERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRlKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBQcm9wZXJ0aWVzKSB7XG4gICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlvdVxcJ3JlIHRyeWluZyB0byBpbmplY3QgRE9NIHByb3BlcnR5ICcgKyAnXFwnJXNcXCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1heSBiZSBhY2NpZGVudGFsbHkgJyArICdpbmplY3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNvbmZpZyB0d2ljZSwgb3IgeW91IG1heSBiZSAnICsgJ2luamVjdGluZyB0d28gY29uZmlncyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9wTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3Byb3BOYW1lXTtcblxuICAgICAgdmFyIHByb3BlcnR5SW5mbyA9IHtcbiAgICAgICAgYXR0cmlidXRlTmFtZTogbG93ZXJDYXNlZCxcbiAgICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BOYW1lLFxuICAgICAgICBtdXRhdGlvbk1ldGhvZDogbnVsbCxcblxuICAgICAgICBtdXN0VXNlQXR0cmlidXRlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLk1VU1RfVVNFX0FUVFJJQlVURSksXG4gICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksXG4gICAgICAgIGhhc1NpZGVFZmZlY3RzOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19TSURFX0VGRkVDVFMpLFxuICAgICAgICBoYXNCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUpLFxuICAgICAgICBoYXNOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksXG4gICAgICAgIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSlcbiAgICAgIH07XG5cbiAgICAgICEoIXByb3BlcnR5SW5mby5tdXN0VXNlQXR0cmlidXRlIHx8ICFwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0eTogQ2Fubm90IHJlcXVpcmUgdXNpbmcgYm90aCBhdHRyaWJ1dGUgYW5kIHByb3BlcnR5OiAlcycsIHByb3BOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAhKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkgfHwgIXByb3BlcnR5SW5mby5oYXNTaWRlRWZmZWN0cykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFByb3BlcnRpZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cyBtdXN0IHVzZSBwcm9wZXJ0eTogJXMnLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgIShwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICsgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSArIHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgJyArICdudW1lcmljIHZhbHVlLCBidXQgbm90IGEgY29tYmluYXRpb246ICVzJywgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZF0gPSBwcm9wTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTtcbiAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0gcHJvcE5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5hbWVzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG4gICAgfVxuICB9XG59O1xudmFyIGRlZmF1bHRWYWx1ZUNhY2hlID0ge307XG5cbi8qKlxuICogRE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2UgZnVuY3Rpb25zOlxuICpcbiAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddXG4gKiAgIHRydWVcbiAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXInXVxuICogICB1bmRlZmluZWRcbiAqXG4gKiBBbHRob3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJldHRlciBpbiBnZW5lcmFsLlxuICpcbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0c1xuICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZ1xuICovXG52YXIgRE9NUHJvcGVydHkgPSB7XG5cbiAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLFxuXG4gIC8qKlxuICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSBcInN0YW5kYXJkIG5hbWVcIiB0byBhbiBvYmplY3Qgd2l0aCBpbmZvIGFib3V0IGhvdyB0byBzZXRcbiAgICogdGhlIHByb3BlcnR5IGluIHRoZSBET00uIEVhY2ggb2JqZWN0IGNvbnRhaW5zOlxuICAgKlxuICAgKiBhdHRyaWJ1dGVOYW1lOlxuICAgKiAgIFVzZWQgd2hlbiByZW5kZXJpbmcgbWFya3VwIG9yIHdpdGggYCpBdHRyaWJ1dGUoKWAuXG4gICAqIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICAgKiBwcm9wZXJ0eU5hbWU6XG4gICAqICAgVXNlZCBvbiBET00gbm9kZSBpbnN0YW5jZXMuIChUaGlzIGluY2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBtdXRhdGUgZHVlIHRvXG4gICAqICAgZXh0ZXJuYWwgZmFjdG9ycy4pXG4gICAqIG11dGF0aW9uTWV0aG9kOlxuICAgKiAgIElmIG5vbi1udWxsLCB1c2VkIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG9yIGBzZXRBdHRyaWJ1dGUoKWAgYWZ0ZXJcbiAgICogICBpbml0aWFsIHJlbmRlci5cbiAgICogbXVzdFVzZUF0dHJpYnV0ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIHVzaW5nIGAqQXR0cmlidXRlKClgLlxuICAgKiAgIChUaGlzIGluY2x1ZGVzIGFueXRoaW5nIHRoYXQgZmFpbHMgYDxwcm9wTmFtZT4gaW4gPGVsZW1lbnQ+YC4pXG4gICAqIG11c3RVc2VQcm9wZXJ0eTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9wZXJ0eS5cbiAgICogaGFzU2lkZUVmZmVjdHM6XG4gICAqICAgV2hldGhlciBvciBub3Qgc2V0dGluZyBhIHZhbHVlIGNhdXNlcyBzaWRlIGVmZmVjdHMgc3VjaCBhcyB0cmlnZ2VyaW5nXG4gICAqICAgcmVzb3VyY2VzIHRvIGJlIGxvYWRlZCBvciB0ZXh0IHNlbGVjdGlvbiBjaGFuZ2VzLiBJZiB0cnVlLCB3ZSByZWFkIGZyb21cbiAgICogICB0aGUgRE9NIGJlZm9yZSB1cGRhdGluZyB0byBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXMgb25seSBzZXQgaWYgaXQgaGFzXG4gICAqICAgY2hhbmdlZC5cbiAgICogaGFzQm9vbGVhblZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IHNob3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNOdW1lcmljVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlXG4gICAqICAgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgcG9zaXRpdmVcbiAgICogICBudW1lcmljIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBhcyBhIGZsYWcgYXMgd2VsbCBhcyB3aXRoIGEgdmFsdWUuXG4gICAqICAgUmVtb3ZlZCB3aGVuIHN0cmljdGx5IGVxdWFsIHRvIGZhbHNlOyBwcmVzZW50IHdpdGhvdXQgYSB2YWx1ZSB3aGVuXG4gICAqICAgc3RyaWN0bHkgZXF1YWwgdG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJvcGVydGllczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcHJvcGVydHkgbmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVzZWRcbiAgICogdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9fREVWX18uXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHt9IDogbnVsbCxcblxuICAvKipcbiAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC5cbiAgICovXG4gIF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sXG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXNDdXN0b21BdHRyaWJ1dGVGbiA9IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTtcbiAgICAgIGlmIChpc0N1c3RvbUF0dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRlZmF1bHQgcHJvcGVydHkgdmFsdWUgZm9yIGEgRE9NIHByb3BlcnR5IChpLmUuLCBub3QgYW5cbiAgICogYXR0cmlidXRlKS4gTW9zdCBkZWZhdWx0IHZhbHVlcyBhcmUgJycgb3IgZmFsc2UsIGJ1dCBub3QgYWxsLiBXb3JzZSB5ZXQsXG4gICAqIHNvbWUgKGluIHBhcnRpY3VsYXIsIGB0eXBlYCkgdmFyeSBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZWxlbWVudC5cbiAgICpcbiAgICogVE9ETzogSXMgaXQgYmV0dGVyIHRvIGdyYWIgYWxsIHRoZSBwb3NzaWJsZSBwcm9wZXJ0aWVzIHdoZW4gY3JlYXRpbmcgYW5cbiAgICogZWxlbWVudCB0byBhdm9pZCBoYXZpbmcgdG8gY3JlYXRlIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2U/XG4gICAqL1xuICBnZXREZWZhdWx0VmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGVOYW1lLCBwcm9wKSB7XG4gICAgdmFyIG5vZGVEZWZhdWx0cyA9IGRlZmF1bHRWYWx1ZUNhY2hlW25vZGVOYW1lXTtcbiAgICB2YXIgdGVzdEVsZW1lbnQ7XG4gICAgaWYgKCFub2RlRGVmYXVsdHMpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZUNhY2hlW25vZGVOYW1lXSA9IG5vZGVEZWZhdWx0cyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShwcm9wIGluIG5vZGVEZWZhdWx0cykpIHtcbiAgICAgIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChub2RlTmFtZSk7XG4gICAgICBub2RlRGVmYXVsdHNbcHJvcF0gPSB0ZXN0RWxlbWVudFtwcm9wXTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVEZWZhdWx0c1twcm9wXTtcbiAgfSxcblxuICBpbmplY3Rpb246IERPTVByb3BlcnR5SW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RVQwMVFjbTl3WlhKMGVTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdSRTlOVUhKdmNHVnlkSGxjYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JtWjFibU4wYVc5dUlHTm9aV05yVFdGemF5aDJZV3gxWlN3Z1ltbDBiV0Z6YXlrZ2UxeHVJQ0J5WlhSMWNtNGdLSFpoYkhWbElDWWdZbWwwYldGemF5a2dQVDA5SUdKcGRHMWhjMnM3WEc1OVhHNWNiblpoY2lCRVQwMVFjbTl3WlhKMGVVbHVhbVZqZEdsdmJpQTlJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFMWhjSEJwYm1jZ1puSnZiU0J1YjNKdFlXeHBlbVZrTENCallXMWxiR05oYzJWa0lIQnliM0JsY25SNUlHNWhiV1Z6SUhSdklHRWdZMjl1Wm1sbmRYSmhkR2x2YmlCMGFHRjBYRzRnSUNBcUlITndaV05wWm1sbGN5Qm9iM2NnZEdobElHRnpjMjlqYVdGMFpXUWdSRTlOSUhCeWIzQmxjblI1SUhOb2IzVnNaQ0JpWlNCaFkyTmxjM05sWkNCdmNpQnlaVzVrWlhKbFpDNWNiaUFnSUNvdlhHNGdJRTFWVTFSZlZWTkZYMEZVVkZKSlFsVlVSVG9nTUhneExGeHVJQ0JOVlZOVVgxVlRSVjlRVWs5UVJWSlVXVG9nTUhneUxGeHVJQ0JJUVZOZlUwbEVSVjlGUmtaRlExUlRPaUF3ZURRc1hHNGdJRWhCVTE5Q1QwOU1SVUZPWDFaQlRGVkZPaUF3ZURnc1hHNGdJRWhCVTE5T1ZVMUZVa2xEWDFaQlRGVkZPaUF3ZURFd0xGeHVJQ0JJUVZOZlVFOVRTVlJKVmtWZlRsVk5SVkpKUTE5V1FVeFZSVG9nTUhneU1DQjhJREI0TVRBc1hHNGdJRWhCVTE5UFZrVlNURTlCUkVWRVgwSlBUMHhGUVU1ZlZrRk1WVVU2SURCNE5EQXNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhbVZqZENCemIyMWxJSE53WldOcFlXeHBlbVZrSUd0dWIzZHNaV1JuWlNCaFltOTFkQ0IwYUdVZ1JFOU5MaUJVYUdseklIUmhhMlZ6SUdFZ1kyOXVabWxuSUc5aWFtVmpkRnh1SUNBZ0tpQjNhWFJvSUhSb1pTQm1iMnhzYjNkcGJtY2djSEp2Y0dWeWRHbGxjenBjYmlBZ0lDcGNiaUFnSUNvZ2FYTkRkWE4wYjIxQmRIUnlhV0oxZEdVNklHWjFibU4wYVc5dUlIUm9ZWFFnWjJsMlpXNGdZVzRnWVhSMGNtbGlkWFJsSUc1aGJXVWdkMmxzYkNCeVpYUjFjbTRnZEhKMVpWeHVJQ0FnS2lCcFppQnBkQ0JqWVc0Z1ltVWdhVzV6WlhKMFpXUWdhVzUwYnlCMGFHVWdSRTlOSUhabGNtSmhkR2x0TGlCVmMyVm1kV3dnWm05eUlHUmhkR0V0S2lCdmNpQmhjbWxoTFNwY2JpQWdJQ29nWVhSMGNtbGlkWFJsY3lCM2FHVnlaU0JwZENkeklHbHRjRzl6YzJsaWJHVWdkRzhnWlc1MWJXVnlZWFJsSUdGc2JDQnZaaUIwYUdVZ2NHOXpjMmxpYkdWY2JpQWdJQ29nWVhSMGNtbGlkWFJsSUc1aGJXVnpMRnh1SUNBZ0tseHVJQ0FnS2lCUWNtOXdaWEowYVdWek9pQnZZbXBsWTNRZ2JXRndjR2x1WnlCRVQwMGdjSEp2Y0dWeWRIa2dibUZ0WlNCMGJ5QnZibVVnYjJZZ2RHaGxYRzRnSUNBcUlFUlBUVkJ5YjNCbGNuUjVTVzVxWldOMGFXOXVJR052Ym5OMFlXNTBjeUJ2Y2lCdWRXeHNMaUJKWmlCNWIzVnlJR0YwZEhKcFluVjBaU0JwYzI0bmRDQnBiaUJvWlhKbExGeHVJQ0FnS2lCcGRDQjNiMjRuZENCblpYUWdkM0pwZEhSbGJpQjBieUIwYUdVZ1JFOU5MbHh1SUNBZ0tseHVJQ0FnS2lCRVQwMUJkSFJ5YVdKMWRHVk9ZVzFsY3pvZ2IySnFaV04wSUcxaGNIQnBibWNnVW1WaFkzUWdZWFIwY21saWRYUmxJRzVoYldVZ2RHOGdkR2hsSUVSUFRWeHVJQ0FnS2lCaGRIUnlhV0oxZEdVZ2JtRnRaUzRnUVhSMGNtbGlkWFJsSUc1aGJXVnpJRzV2ZENCemNHVmphV1pwWldRZ2RYTmxJSFJvWlNBcUtteHZkMlZ5WTJGelpTb3FYRzRnSUNBcUlHNXZjbTFoYkdsNlpXUWdibUZ0WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dSRTlOUVhSMGNtbGlkWFJsVG1GdFpYTndZV05sY3pvZ2IySnFaV04wSUcxaGNIQnBibWNnVW1WaFkzUWdZWFIwY21saWRYUmxJRzVoYldVZ2RHOGdkR2hsSUVSUFRWeHVJQ0FnS2lCaGRIUnlhV0oxZEdVZ2JtRnRaWE53WVdObElGVlNUQzRnS0VGMGRISnBZblYwWlNCdVlXMWxjeUJ1YjNRZ2MzQmxZMmxtYVdWa0lIVnpaU0J1YnlCdVlXMWxjM0JoWTJVdUtWeHVJQ0FnS2x4dUlDQWdLaUJFVDAxUWNtOXdaWEowZVU1aGJXVnpPaUJ6YVcxcGJHRnlJSFJ2SUVSUFRVRjBkSEpwWW5WMFpVNWhiV1Z6SUdKMWRDQm1iM0lnUkU5TklIQnliM0JsY25ScFpYTXVYRzRnSUNBcUlGQnliM0JsY25SNUlHNWhiV1Z6SUc1dmRDQnpjR1ZqYVdacFpXUWdkWE5sSUhSb1pTQnViM0p0WVd4cGVtVmtJRzVoYldVdVhHNGdJQ0FxWEc0Z0lDQXFJRVJQVFUxMWRHRjBhVzl1VFdWMGFHOWtjem9nVUhKdmNHVnlkR2xsY3lCMGFHRjBJSEpsY1hWcGNtVWdjM0JsWTJsaGJDQnRkWFJoZEdsdmJpQnRaWFJvYjJSekxpQkpabHh1SUNBZ0tpQmdkbUZzZFdWZ0lHbHpJSFZ1WkdWbWFXNWxaQ3dnZEdobElHMTFkR0YwYVc5dUlHMWxkR2h2WkNCemFHOTFiR1FnZFc1elpYUWdkR2hsSUhCeWIzQmxjblI1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1pHOXRVSEp2Y0dWeWRIbERiMjVtYVdjZ2RHaGxJR052Ym1acFp5QmhjeUJrWlhOamNtbGlaV1FnWVdKdmRtVXVYRzRnSUNBcUwxeHVJQ0JwYm1wbFkzUkVUMDFRY205d1pYSjBlVU52Ym1acFp6b2dablZ1WTNScGIyNGdLR1J2YlZCeWIzQmxjblI1UTI5dVptbG5LU0I3WEc0Z0lDQWdkbUZ5SUVsdWFtVmpkR2x2YmlBOUlFUlBUVkJ5YjNCbGNuUjVTVzVxWldOMGFXOXVPMXh1SUNBZ0lIWmhjaUJRY205d1pYSjBhV1Z6SUQwZ1pHOXRVSEp2Y0dWeWRIbERiMjVtYVdjdVVISnZjR1Z5ZEdsbGN5QjhmQ0I3ZlR0Y2JpQWdJQ0IyWVhJZ1JFOU5RWFIwY21saWRYUmxUbUZ0WlhOd1lXTmxjeUE5SUdSdmJWQnliM0JsY25SNVEyOXVabWxuTGtSUFRVRjBkSEpwWW5WMFpVNWhiV1Z6Y0dGalpYTWdmSHdnZTMwN1hHNGdJQ0FnZG1GeUlFUlBUVUYwZEhKcFluVjBaVTVoYldWeklEMGdaRzl0VUhKdmNHVnlkSGxEYjI1bWFXY3VSRTlOUVhSMGNtbGlkWFJsVG1GdFpYTWdmSHdnZTMwN1hHNGdJQ0FnZG1GeUlFUlBUVkJ5YjNCbGNuUjVUbUZ0WlhNZ1BTQmtiMjFRY205d1pYSjBlVU52Ym1acFp5NUVUMDFRY205d1pYSjBlVTVoYldWeklIeDhJSHQ5TzF4dUlDQWdJSFpoY2lCRVQwMU5kWFJoZEdsdmJrMWxkR2h2WkhNZ1BTQmtiMjFRY205d1pYSjBlVU52Ym1acFp5NUVUMDFOZFhSaGRHbHZiazFsZEdodlpITWdmSHdnZTMwN1hHNWNiaUFnSUNCcFppQW9aRzl0VUhKdmNHVnlkSGxEYjI1bWFXY3VhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVXBJSHRjYmlBZ0lDQWdJRVJQVFZCeWIzQmxjblI1TGw5cGMwTjFjM1J2YlVGMGRISnBZblYwWlVaMWJtTjBhVzl1Y3k1d2RYTm9LR1J2YlZCeWIzQmxjblI1UTI5dVptbG5MbWx6UTNWemRHOXRRWFIwY21saWRYUmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQm1iM0lnS0haaGNpQndjbTl3VG1GdFpTQnBiaUJRY205d1pYSjBhV1Z6S1NCN1hHNGdJQ0FnSUNBaElVUlBUVkJ5YjNCbGNuUjVMbkJ5YjNCbGNuUnBaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oybHVhbVZqZEVSUFRWQnliM0JsY25SNVEyOXVabWxuS0M0dUxpazZJRmx2ZFZ4Y0ozSmxJSFJ5ZVdsdVp5QjBieUJwYm1wbFkzUWdSRTlOSUhCeWIzQmxjblI1SUNjZ0t5QW5YRnduSlhOY1hDY2dkMmhwWTJnZ2FHRnpJR0ZzY21WaFpIa2dZbVZsYmlCcGJtcGxZM1JsWkM0Z1dXOTFJRzFoZVNCaVpTQmhZMk5wWkdWdWRHRnNiSGtnSnlBcklDZHBibXBsWTNScGJtY2dkR2hsSUhOaGJXVWdSRTlOSUhCeWIzQmxjblI1SUdOdmJtWnBaeUIwZDJsalpTd2diM0lnZVc5MUlHMWhlU0JpWlNBbklDc2dKMmx1YW1WamRHbHVaeUIwZDI4Z1kyOXVabWxuY3lCMGFHRjBJR2hoZG1VZ1kyOXVabXhwWTNScGJtY2djSEp2Y0dWeWRIa2dibUZ0WlhNdUp5d2djSEp2Y0U1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ2RtRnlJR3h2ZDJWeVEyRnpaV1FnUFNCd2NtOXdUbUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BPMXh1SUNBZ0lDQWdkbUZ5SUhCeWIzQkRiMjVtYVdjZ1BTQlFjbTl3WlhKMGFXVnpXM0J5YjNCT1lXMWxYVHRjYmx4dUlDQWdJQ0FnZG1GeUlIQnliM0JsY25SNVNXNW1ieUE5SUh0Y2JpQWdJQ0FnSUNBZ1lYUjBjbWxpZFhSbFRtRnRaVG9nYkc5M1pYSkRZWE5sWkN4Y2JpQWdJQ0FnSUNBZ1lYUjBjbWxpZFhSbFRtRnRaWE53WVdObE9pQnVkV3hzTEZ4dUlDQWdJQ0FnSUNCd2NtOXdaWEowZVU1aGJXVTZJSEJ5YjNCT1lXMWxMRnh1SUNBZ0lDQWdJQ0J0ZFhSaGRHbHZiazFsZEdodlpEb2diblZzYkN4Y2JseHVJQ0FnSUNBZ0lDQnRkWE4wVlhObFFYUjBjbWxpZFhSbE9pQmphR1ZqYTAxaGMyc29jSEp2Y0VOdmJtWnBaeXdnU1c1cVpXTjBhVzl1TGsxVlUxUmZWVk5GWDBGVVZGSkpRbFZVUlNrc1hHNGdJQ0FnSUNBZ0lHMTFjM1JWYzJWUWNtOXdaWEowZVRvZ1kyaGxZMnROWVhOcktIQnliM0JEYjI1bWFXY3NJRWx1YW1WamRHbHZiaTVOVlZOVVgxVlRSVjlRVWs5UVJWSlVXU2tzWEc0Z0lDQWdJQ0FnSUdoaGMxTnBaR1ZGWm1abFkzUnpPaUJqYUdWamEwMWhjMnNvY0hKdmNFTnZibVpwWnl3Z1NXNXFaV04wYVc5dUxraEJVMTlUU1VSRlgwVkdSa1ZEVkZNcExGeHVJQ0FnSUNBZ0lDQm9ZWE5DYjI5c1pXRnVWbUZzZFdVNklHTm9aV05yVFdGemF5aHdjbTl3UTI5dVptbG5MQ0JKYm1wbFkzUnBiMjR1U0VGVFgwSlBUMHhGUVU1ZlZrRk1WVVVwTEZ4dUlDQWdJQ0FnSUNCb1lYTk9kVzFsY21salZtRnNkV1U2SUdOb1pXTnJUV0Z6YXlod2NtOXdRMjl1Wm1sbkxDQkpibXBsWTNScGIyNHVTRUZUWDA1VlRVVlNTVU5mVmtGTVZVVXBMRnh1SUNBZ0lDQWdJQ0JvWVhOUWIzTnBkR2wyWlU1MWJXVnlhV05XWVd4MVpUb2dZMmhsWTJ0TllYTnJLSEJ5YjNCRGIyNW1hV2NzSUVsdWFtVmpkR2x2Ymk1SVFWTmZVRTlUU1ZSSlZrVmZUbFZOUlZKSlExOVdRVXhWUlNrc1hHNGdJQ0FnSUNBZ0lHaGhjMDkyWlhKc2IyRmtaV1JDYjI5c1pXRnVWbUZzZFdVNklHTm9aV05yVFdGemF5aHdjbTl3UTI5dVptbG5MQ0JKYm1wbFkzUnBiMjR1U0VGVFgwOVdSVkpNVDBGRVJVUmZRazlQVEVWQlRsOVdRVXhWUlNsY2JpQWdJQ0FnSUgwN1hHNWNiaUFnSUNBZ0lDRW9JWEJ5YjNCbGNuUjVTVzVtYnk1dGRYTjBWWE5sUVhSMGNtbGlkWFJsSUh4OElDRndjbTl3WlhKMGVVbHVabTh1YlhWemRGVnpaVkJ5YjNCbGNuUjVLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEVUMDFRY205d1pYSjBlVG9nUTJGdWJtOTBJSEpsY1hWcGNtVWdkWE5wYm1jZ1ltOTBhQ0JoZEhSeWFXSjFkR1VnWVc1a0lIQnliM0JsY25SNU9pQWxjeWNzSUhCeWIzQk9ZVzFsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWhLSEJ5YjNCbGNuUjVTVzVtYnk1dGRYTjBWWE5sVUhKdmNHVnlkSGtnZkh3Z0lYQnliM0JsY25SNVNXNW1ieTVvWVhOVGFXUmxSV1ptWldOMGN5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJFOU5VSEp2Y0dWeWRIazZJRkJ5YjNCbGNuUnBaWE1nZEdoaGRDQm9ZWFpsSUhOcFpHVWdaV1ptWldOMGN5QnRkWE4wSUhWelpTQndjbTl3WlhKMGVUb2dKWE1uTENCd2NtOXdUbUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJU2h3Y205d1pYSjBlVWx1Wm04dWFHRnpRbTl2YkdWaGJsWmhiSFZsSUNzZ2NISnZjR1Z5ZEhsSmJtWnZMbWhoYzA1MWJXVnlhV05XWVd4MVpTQXJJSEJ5YjNCbGNuUjVTVzVtYnk1b1lYTlBkbVZ5Ykc5aFpHVmtRbTl2YkdWaGJsWmhiSFZsSUR3OUlERXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owUlBUVkJ5YjNCbGNuUjVPaUJXWVd4MVpTQmpZVzRnWW1VZ2IyNWxJRzltSUdKdmIyeGxZVzRzSUc5MlpYSnNiMkZrWldRZ1ltOXZiR1ZoYml3Z2IzSWdKeUFySUNkdWRXMWxjbWxqSUhaaGJIVmxMQ0JpZFhRZ2JtOTBJR0VnWTI5dFltbHVZWFJwYjI0NklDVnpKeXdnY0hKdmNFNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdSRTlOVUhKdmNHVnlkSGt1WjJWMFVHOXpjMmxpYkdWVGRHRnVaR0Z5WkU1aGJXVmJiRzkzWlhKRFlYTmxaRjBnUFNCd2NtOXdUbUZ0WlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRVJQVFVGMGRISnBZblYwWlU1aGJXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1lYUjBjbWxpZFhSbFRtRnRaU0E5SUVSUFRVRjBkSEpwWW5WMFpVNWhiV1Z6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUNBZ2NISnZjR1Z5ZEhsSmJtWnZMbUYwZEhKcFluVjBaVTVoYldVZ1BTQmhkSFJ5YVdKMWRHVk9ZVzFsTzF4dUlDQWdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lFUlBUVkJ5YjNCbGNuUjVMbWRsZEZCdmMzTnBZbXhsVTNSaGJtUmhjbVJPWVcxbFcyRjBkSEpwWW5WMFpVNWhiV1ZkSUQwZ2NISnZjRTVoYldVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0VSUFRVRjBkSEpwWW5WMFpVNWhiV1Z6Y0dGalpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSEJ5YjNCbGNuUjVTVzVtYnk1aGRIUnlhV0oxZEdWT1lXMWxjM0JoWTJVZ1BTQkVUMDFCZEhSeWFXSjFkR1ZPWVcxbGMzQmhZMlZ6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRVJQVFZCeWIzQmxjblI1VG1GdFpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSEJ5YjNCbGNuUjVTVzVtYnk1d2NtOXdaWEowZVU1aGJXVWdQU0JFVDAxUWNtOXdaWEowZVU1aGJXVnpXM0J5YjNCT1lXMWxYVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tFUlBUVTExZEdGMGFXOXVUV1YwYUc5a2N5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2NtOXdUbUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdjSEp2Y0dWeWRIbEpibVp2TG0xMWRHRjBhVzl1VFdWMGFHOWtJRDBnUkU5TlRYVjBZWFJwYjI1TlpYUm9iMlJ6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1JFOU5VSEp2Y0dWeWRIa3VjSEp2Y0dWeWRHbGxjMXR3Y205d1RtRnRaVjBnUFNCd2NtOXdaWEowZVVsdVptODdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVkbUZ5SUdSbFptRjFiSFJXWVd4MVpVTmhZMmhsSUQwZ2UzMDdYRzVjYmk4cUtseHVJQ29nUkU5TlVISnZjR1Z5ZEhrZ1pYaHdiM0owY3lCc2IyOXJkWEFnYjJKcVpXTjBjeUIwYUdGMElHTmhiaUJpWlNCMWMyVmtJR3hwYTJVZ1puVnVZM1JwYjI1ek9seHVJQ3BjYmlBcUlDQWdQaUJFVDAxUWNtOXdaWEowZVM1cGMxWmhiR2xrV3lkcFpDZGRYRzRnS2lBZ0lIUnlkV1ZjYmlBcUlDQWdQaUJFVDAxUWNtOXdaWEowZVM1cGMxWmhiR2xrV3lkbWIyOWlZWEluWFZ4dUlDb2dJQ0IxYm1SbFptbHVaV1JjYmlBcVhHNGdLaUJCYkhSb2IzVm5hQ0IwYUdseklHMWhlU0JpWlNCamIyNW1kWE5wYm1jc0lHbDBJSEJsY21admNtMXpJR0psZEhSbGNpQnBiaUJuWlc1bGNtRnNMbHh1SUNwY2JpQXFJRUJ6WldVZ2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdmEyVjVMV1Y0YVhOMGMxeHVJQ29nUUhObFpTQm9kSFJ3T2k4dmFuTndaWEptTG1OdmJTOXJaWGt0YldsemMybHVaMXh1SUNvdlhHNTJZWElnUkU5TlVISnZjR1Z5ZEhrZ1BTQjdYRzVjYmlBZ1NVUmZRVlJVVWtsQ1ZWUkZYMDVCVFVVNklDZGtZWFJoTFhKbFlXTjBhV1FuTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJOWVhBZ1puSnZiU0J3Y205d1pYSjBlU0JjSW5OMFlXNWtZWEprSUc1aGJXVmNJaUIwYnlCaGJpQnZZbXBsWTNRZ2QybDBhQ0JwYm1adklHRmliM1YwSUdodmR5QjBieUJ6WlhSY2JpQWdJQ29nZEdobElIQnliM0JsY25SNUlHbHVJSFJvWlNCRVQwMHVJRVZoWTJnZ2IySnFaV04wSUdOdmJuUmhhVzV6T2x4dUlDQWdLbHh1SUNBZ0tpQmhkSFJ5YVdKMWRHVk9ZVzFsT2x4dUlDQWdLaUFnSUZWelpXUWdkMmhsYmlCeVpXNWtaWEpwYm1jZ2JXRnlhM1Z3SUc5eUlIZHBkR2dnWUNwQmRIUnlhV0oxZEdVb0tXQXVYRzRnSUNBcUlHRjBkSEpwWW5WMFpVNWhiV1Z6Y0dGalpWeHVJQ0FnS2lCd2NtOXdaWEowZVU1aGJXVTZYRzRnSUNBcUlDQWdWWE5sWkNCdmJpQkVUMDBnYm05a1pTQnBibk4wWVc1alpYTXVJQ2hVYUdseklHbHVZMngxWkdWeklIQnliM0JsY25ScFpYTWdkR2hoZENCdGRYUmhkR1VnWkhWbElIUnZYRzRnSUNBcUlDQWdaWGgwWlhKdVlXd2dabUZqZEc5eWN5NHBYRzRnSUNBcUlHMTFkR0YwYVc5dVRXVjBhRzlrT2x4dUlDQWdLaUFnSUVsbUlHNXZiaTF1ZFd4c0xDQjFjMlZrSUdsdWMzUmxZV1FnYjJZZ2RHaGxJSEJ5YjNCbGNuUjVJRzl5SUdCelpYUkJkSFJ5YVdKMWRHVW9LV0FnWVdaMFpYSmNiaUFnSUNvZ0lDQnBibWwwYVdGc0lISmxibVJsY2k1Y2JpQWdJQ29nYlhWemRGVnpaVUYwZEhKcFluVjBaVHBjYmlBZ0lDb2dJQ0JYYUdWMGFHVnlJSFJvWlNCd2NtOXdaWEowZVNCdGRYTjBJR0psSUdGalkyVnpjMlZrSUdGdVpDQnRkWFJoZEdWa0lIVnphVzVuSUdBcVFYUjBjbWxpZFhSbEtDbGdMbHh1SUNBZ0tpQWdJQ2hVYUdseklHbHVZMngxWkdWeklHRnVlWFJvYVc1bklIUm9ZWFFnWm1GcGJITWdZRHh3Y205d1RtRnRaVDRnYVc0Z1BHVnNaVzFsYm5RK1lDNHBYRzRnSUNBcUlHMTFjM1JWYzJWUWNtOXdaWEowZVRwY2JpQWdJQ29nSUNCWGFHVjBhR1Z5SUhSb1pTQndjbTl3WlhKMGVTQnRkWE4wSUdKbElHRmpZMlZ6YzJWa0lHRnVaQ0J0ZFhSaGRHVmtJR0Z6SUdGdUlHOWlhbVZqZENCd2NtOXdaWEowZVM1Y2JpQWdJQ29nYUdGelUybGtaVVZtWm1WamRITTZYRzRnSUNBcUlDQWdWMmhsZEdobGNpQnZjaUJ1YjNRZ2MyVjBkR2x1WnlCaElIWmhiSFZsSUdOaGRYTmxjeUJ6YVdSbElHVm1abVZqZEhNZ2MzVmphQ0JoY3lCMGNtbG5aMlZ5YVc1blhHNGdJQ0FxSUNBZ2NtVnpiM1Z5WTJWeklIUnZJR0psSUd4dllXUmxaQ0J2Y2lCMFpYaDBJSE5sYkdWamRHbHZiaUJqYUdGdVoyVnpMaUJKWmlCMGNuVmxMQ0IzWlNCeVpXRmtJR1p5YjIxY2JpQWdJQ29nSUNCMGFHVWdSRTlOSUdKbFptOXlaU0IxY0dSaGRHbHVaeUIwYnlCbGJuTjFjbVVnZEdoaGRDQjBhR1VnZG1Gc2RXVWdhWE1nYjI1c2VTQnpaWFFnYVdZZ2FYUWdhR0Z6WEc0Z0lDQXFJQ0FnWTJoaGJtZGxaQzVjYmlBZ0lDb2dhR0Z6UW05dmJHVmhibFpoYkhWbE9seHVJQ0FnS2lBZ0lGZG9aWFJvWlhJZ2RHaGxJSEJ5YjNCbGNuUjVJSE5vYjNWc1pDQmlaU0J5WlcxdmRtVmtJSGRvWlc0Z2MyVjBJSFJ2SUdFZ1ptRnNjMlY1SUhaaGJIVmxMbHh1SUNBZ0tpQm9ZWE5PZFcxbGNtbGpWbUZzZFdVNlhHNGdJQ0FxSUNBZ1YyaGxkR2hsY2lCMGFHVWdjSEp2Y0dWeWRIa2diWFZ6ZENCaVpTQnVkVzFsY21saklHOXlJSEJoY25ObElHRnpJR0VnYm5WdFpYSnBZeUJoYm1RZ2MyaHZkV3hrSUdKbFhHNGdJQ0FxSUNBZ2NtVnRiM1psWkNCM2FHVnVJSE5sZENCMGJ5QmhJR1poYkhObGVTQjJZV3gxWlM1Y2JpQWdJQ29nYUdGelVHOXphWFJwZG1WT2RXMWxjbWxqVm1Gc2RXVTZYRzRnSUNBcUlDQWdWMmhsZEdobGNpQjBhR1VnY0hKdmNHVnlkSGtnYlhWemRDQmlaU0J3YjNOcGRHbDJaU0J1ZFcxbGNtbGpJRzl5SUhCaGNuTmxJR0Z6SUdFZ2NHOXphWFJwZG1WY2JpQWdJQ29nSUNCdWRXMWxjbWxqSUdGdVpDQnphRzkxYkdRZ1ltVWdjbVZ0YjNabFpDQjNhR1Z1SUhObGRDQjBieUJoSUdaaGJITmxlU0IyWVd4MVpTNWNiaUFnSUNvZ2FHRnpUM1psY214dllXUmxaRUp2YjJ4bFlXNVdZV3gxWlRwY2JpQWdJQ29nSUNCWGFHVjBhR1Z5SUhSb1pTQndjbTl3WlhKMGVTQmpZVzRnWW1VZ2RYTmxaQ0JoY3lCaElHWnNZV2NnWVhNZ2QyVnNiQ0JoY3lCM2FYUm9JR0VnZG1Gc2RXVXVYRzRnSUNBcUlDQWdVbVZ0YjNabFpDQjNhR1Z1SUhOMGNtbGpkR3g1SUdWeGRXRnNJSFJ2SUdaaGJITmxPeUJ3Y21WelpXNTBJSGRwZEdodmRYUWdZU0IyWVd4MVpTQjNhR1Z1WEc0Z0lDQXFJQ0FnYzNSeWFXTjBiSGtnWlhGMVlXd2dkRzhnZEhKMVpUc2djSEpsYzJWdWRDQjNhWFJvSUdFZ2RtRnNkV1VnYjNSb1pYSjNhWE5sTGx4dUlDQWdLaTljYmlBZ2NISnZjR1Z5ZEdsbGN6b2dlMzBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoY0hCcGJtY2dabkp2YlNCc2IzZGxjbU5oYzJVZ2NISnZjR1Z5ZEhrZ2JtRnRaWE1nZEc4Z2RHaGxJSEJ5YjNCbGNteDVJR05oYzJWa0lIWmxjbk5wYjI0c0lIVnpaV1JjYmlBZ0lDb2dkRzhnZDJGeWJpQnBiaUIwYUdVZ1kyRnpaU0J2WmlCdGFYTnphVzVuSUhCeWIzQmxjblJwWlhNdUlFRjJZV2xzWVdKc1pTQnZibXg1SUdsdUlGOWZSRVZXWDE4dVhHNGdJQ0FxSUVCMGVYQmxJSHRQWW1wbFkzUjlYRzRnSUNBcUwxeHVJQ0JuWlhSUWIzTnphV0pzWlZOMFlXNWtZWEprVG1GdFpUb2djSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUh0OUlEb2diblZzYkN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVd4c0lHOW1JSFJvWlNCcGMwTjFjM1J2YlVGMGRISnBZblYwWlNncElHWjFibU4wYVc5dWN5QjBhR0YwSUdoaGRtVWdZbVZsYmlCcGJtcGxZM1JsWkM1Y2JpQWdJQ292WEc0Z0lGOXBjME4xYzNSdmJVRjBkSEpwWW5WMFpVWjFibU4wYVc5dWN6b2dXMTBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU5vWldOcmN5QjNhR1YwYUdWeUlHRWdjSEp2Y0dWeWRIa2dibUZ0WlNCcGN5QmhJR04xYzNSdmJTQmhkSFJ5YVdKMWRHVXVYRzRnSUNBcUlFQnRaWFJvYjJSY2JpQWdJQ292WEc0Z0lHbHpRM1Z6ZEc5dFFYUjBjbWxpZFhSbE9pQm1kVzVqZEdsdmJpQW9ZWFIwY21saWRYUmxUbUZ0WlNrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1JFOU5VSEp2Y0dWeWRIa3VYMmx6UTNWemRHOXRRWFIwY21saWRYUmxSblZ1WTNScGIyNXpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVkdiaUE5SUVSUFRWQnliM0JsY25SNUxsOXBjME4xYzNSdmJVRjBkSEpwWW5WMFpVWjFibU4wYVc5dWMxdHBYVHRjYmlBZ0lDQWdJR2xtSUNocGMwTjFjM1J2YlVGMGRISnBZblYwWlVadUtHRjBkSEpwWW5WMFpVNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nZEdobElHUmxabUYxYkhRZ2NISnZjR1Z5ZEhrZ2RtRnNkV1VnWm05eUlHRWdSRTlOSUhCeWIzQmxjblI1SUNocExtVXVMQ0J1YjNRZ1lXNWNiaUFnSUNvZ1lYUjBjbWxpZFhSbEtTNGdUVzl6ZENCa1pXWmhkV3gwSUhaaGJIVmxjeUJoY21VZ0p5Y2diM0lnWm1Gc2MyVXNJR0oxZENCdWIzUWdZV3hzTGlCWGIzSnpaU0I1WlhRc1hHNGdJQ0FxSUhOdmJXVWdLR2x1SUhCaGNuUnBZM1ZzWVhJc0lHQjBlWEJsWUNrZ2RtRnllU0JrWlhCbGJtUnBibWNnYjI0Z2RHaGxJSFI1Y0dVZ2IyWWdaV3hsYldWdWRDNWNiaUFnSUNwY2JpQWdJQ29nVkU5RVR6b2dTWE1nYVhRZ1ltVjBkR1Z5SUhSdklHZHlZV0lnWVd4c0lIUm9aU0J3YjNOemFXSnNaU0J3Y205d1pYSjBhV1Z6SUhkb1pXNGdZM0psWVhScGJtY2dZVzVjYmlBZ0lDb2daV3hsYldWdWRDQjBieUJoZG05cFpDQm9ZWFpwYm1jZ2RHOGdZM0psWVhSbElIUm9aU0J6WVcxbElHVnNaVzFsYm5RZ2RIZHBZMlUvWEc0Z0lDQXFMMXh1SUNCblpYUkVaV1poZFd4MFZtRnNkV1ZHYjNKUWNtOXdaWEowZVRvZ1puVnVZM1JwYjI0Z0tHNXZaR1ZPWVcxbExDQndjbTl3S1NCN1hHNGdJQ0FnZG1GeUlHNXZaR1ZFWldaaGRXeDBjeUE5SUdSbFptRjFiSFJXWVd4MVpVTmhZMmhsVzI1dlpHVk9ZVzFsWFR0Y2JpQWdJQ0IyWVhJZ2RHVnpkRVZzWlcxbGJuUTdYRzRnSUNBZ2FXWWdLQ0Z1YjJSbFJHVm1ZWFZzZEhNcElIdGNiaUFnSUNBZ0lHUmxabUYxYkhSV1lXeDFaVU5oWTJobFcyNXZaR1ZPWVcxbFhTQTlJRzV2WkdWRVpXWmhkV3gwY3lBOUlIdDlPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9JU2h3Y205d0lHbHVJRzV2WkdWRVpXWmhkV3gwY3lrcElIdGNiaUFnSUNBZ0lIUmxjM1JGYkdWdFpXNTBJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDaHViMlJsVG1GdFpTazdYRzRnSUNBZ0lDQnViMlJsUkdWbVlYVnNkSE5iY0hKdmNGMGdQU0IwWlhOMFJXeGxiV1Z1ZEZ0d2NtOXdYVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc1dlpHVkVaV1poZFd4MGMxdHdjbTl3WFR0Y2JpQWdmU3hjYmx4dUlDQnBibXBsWTNScGIyNDZJRVJQVFZCeWIzQmxjblI1U1c1cVpXTjBhVzl1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRVJQVFZCeWIzQmxjblI1T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERPTVByb3BlcnR5T3BlcmF0aW9uc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIgPSByZXF1aXJlKCcuL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IC9eW2EtekEtWl9dW1xcd1xcLlxcLV0qJC87XG52YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xudmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTtcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHJlYWN0UHJvcHMgPSB7XG4gICAgY2hpbGRyZW46IHRydWUsXG4gICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHRydWUsXG4gICAga2V5OiB0cnVlLFxuICAgIHJlZjogdHJ1ZVxuICB9O1xuICB2YXIgd2FybmVkUHJvcGVydGllcyA9IHt9O1xuXG4gIHZhciB3YXJuVW5rbm93blByb3BlcnR5ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAocmVhY3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiByZWFjdFByb3BzW25hbWVdIHx8IHdhcm5lZFByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkUHJvcGVydGllc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlO1xuICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIGRhdGEtKiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNhc2U7IHN1Z2dlc3QgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uXG4gICAgdmFyIHN0YW5kYXJkTmFtZSA9IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDogRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDtcblxuICAgIC8vIEZvciBub3csIG9ubHkgd2FybiB3aGVuIHdlIGhhdmUgYSBzdWdnZXN0ZWQgY29ycmVjdGlvbi4gVGhpcyBwcmV2ZW50c1xuICAgIC8vIGxvZ2dpbmcgdG9vIG11Y2ggd2hlbiB1c2luZyB0cmFuc2ZlclByb3BzVG8uXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoc3RhbmRhcmROYW1lID09IG51bGwsICdVbmtub3duIERPTSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIHN0YW5kYXJkTmFtZSkgOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIERPTSBwcm9wZXJ0aWVzLlxuICovXG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0ge1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVkIElELlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIoaWQpO1xuICB9LFxuXG4gIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9kZSwgaWQpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSwgaWQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxsIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPVwiXCInO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuVW5rbm93blByb3BlcnR5KG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIGEgY3VzdG9tIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICovXG4gIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kO1xuICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7XG4gICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZUF0dHJpYnV0ZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgICAgICB2YXIgbmFtZXNwYWNlID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAgICAgICAgLy8gYHNldEF0dHJpYnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBgW29iamVjdF1gIGluIElFOC85LFxuICAgICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZTtcbiAgICAgICAgLy8gTXVzdCBleHBsaWNpdGx5IGNhc3QgdmFsdWVzIGZvciBIQVNfU0lERV9FRkZFQ1RTLXByb3BlcnRpZXMgdG8gdGhlXG4gICAgICAgIC8vIHByb3BlcnR5IHR5cGUgYmVmb3JlIGNvbXBhcmluZzsgb25seSBgdmFsdWVgIGRvZXMgYW5kIGlzIHN0cmluZy5cbiAgICAgICAgaWYgKCFwcm9wZXJ0eUluZm8uaGFzU2lkZUVmZmVjdHMgfHwgJycgKyBub2RlW3Byb3BOYW1lXSAhPT0gJycgKyB2YWx1ZSkge1xuICAgICAgICAgIC8vIENvbnRyYXJ5IHRvIGBzZXRBdHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGllcyBhcmUgcHJvcGVybHlcbiAgICAgICAgICAvLyBgdG9TdHJpbmdgZWQgYnkgSUU4LzkuXG4gICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuVW5rbm93blByb3BlcnR5KG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKi9cbiAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZUF0dHJpYnV0ZSkge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gRE9NUHJvcGVydHkuZ2V0RGVmYXVsdFZhbHVlRm9yUHJvcGVydHkobm9kZS5ub2RlTmFtZSwgcHJvcE5hbWUpO1xuICAgICAgICBpZiAoIXByb3BlcnR5SW5mby5oYXNTaWRlRWZmZWN0cyB8fCAnJyArIG5vZGVbcHJvcE5hbWVdICE9PSBkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblVua25vd25Qcm9wZXJ0eShuYW1lKTtcbiAgICB9XG4gIH1cblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKERPTVByb3BlcnR5T3BlcmF0aW9ucywgJ0RPTVByb3BlcnR5T3BlcmF0aW9ucycsIHtcbiAgc2V0VmFsdWVGb3JQcm9wZXJ0eTogJ3NldFZhbHVlRm9yUHJvcGVydHknLFxuICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTogJ3NldFZhbHVlRm9yQXR0cmlidXRlJyxcbiAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogJ2RlbGV0ZVZhbHVlRm9yUHJvcGVydHknXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjMXh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCRVQwMVFjbTl3WlhKMGVTQTlJSEpsY1hWcGNtVW9KeTR2UkU5TlVISnZjR1Z5ZEhrbktUdGNiblpoY2lCU1pXRmpkRkJsY21ZZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVHVnlaaWNwTzF4dVhHNTJZWElnY1hWdmRHVkJkSFJ5YVdKMWRHVldZV3gxWlVadmNrSnliM2R6WlhJZ1BTQnlaWEYxYVhKbEtDY3VMM0YxYjNSbFFYUjBjbWxpZFhSbFZtRnNkV1ZHYjNKQ2NtOTNjMlZ5SnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVMeThnVTJsdGNHeHBabWxsWkNCemRXSnpaWFJjYm5aaGNpQldRVXhKUkY5QlZGUlNTVUpWVkVWZlRrRk5SVjlTUlVkRldDQTlJQzllVzJFdGVrRXRXbDlkVzF4Y2QxeGNMbHhjTFYwcUpDODdYRzUyWVhJZ2FXeHNaV2RoYkVGMGRISnBZblYwWlU1aGJXVkRZV05vWlNBOUlIdDlPMXh1ZG1GeUlIWmhiR2xrWVhSbFpFRjBkSEpwWW5WMFpVNWhiV1ZEWVdOb1pTQTlJSHQ5TzF4dVhHNW1kVzVqZEdsdmJpQnBjMEYwZEhKcFluVjBaVTVoYldWVFlXWmxLR0YwZEhKcFluVjBaVTVoYldVcElIdGNiaUFnYVdZZ0tIWmhiR2xrWVhSbFpFRjBkSEpwWW5WMFpVNWhiV1ZEWVdOb1pTNW9ZWE5QZDI1UWNtOXdaWEowZVNoaGRIUnlhV0oxZEdWT1lXMWxLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlYRzRnSUdsbUlDaHBiR3hsWjJGc1FYUjBjbWxpZFhSbFRtRnRaVU5oWTJobExtaGhjMDkzYmxCeWIzQmxjblI1S0dGMGRISnBZblYwWlU1aGJXVXBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzRnSUdsbUlDaFdRVXhKUkY5QlZGUlNTVUpWVkVWZlRrRk5SVjlTUlVkRldDNTBaWE4wS0dGMGRISnBZblYwWlU1aGJXVXBLU0I3WEc0Z0lDQWdkbUZzYVdSaGRHVmtRWFIwY21saWRYUmxUbUZ0WlVOaFkyaGxXMkYwZEhKcFluVjBaVTVoYldWZElEMGdkSEoxWlR0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1SUNCcGJHeGxaMkZzUVhSMGNtbGlkWFJsVG1GdFpVTmhZMmhsVzJGMGRISnBZblYwWlU1aGJXVmRJRDBnZEhKMVpUdGNiaUFnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkSmJuWmhiR2xrSUdGMGRISnBZblYwWlNCdVlXMWxPaUJnSlhOZ0p5d2dZWFIwY21saWRYUmxUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUhKbGRIVnliaUJtWVd4elpUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2MyaHZkV3hrU1dkdWIzSmxWbUZzZFdVb2NISnZjR1Z5ZEhsSmJtWnZMQ0IyWVd4MVpTa2dlMXh1SUNCeVpYUjFjbTRnZG1Gc2RXVWdQVDBnYm5Wc2JDQjhmQ0J3Y205d1pYSjBlVWx1Wm04dWFHRnpRbTl2YkdWaGJsWmhiSFZsSUNZbUlDRjJZV3gxWlNCOGZDQndjbTl3WlhKMGVVbHVabTh1YUdGelRuVnRaWEpwWTFaaGJIVmxJQ1ltSUdselRtRk9LSFpoYkhWbEtTQjhmQ0J3Y205d1pYSjBlVWx1Wm04dWFHRnpVRzl6YVhScGRtVk9kVzFsY21salZtRnNkV1VnSmlZZ2RtRnNkV1VnUENBeElIeDhJSEJ5YjNCbGNuUjVTVzVtYnk1b1lYTlBkbVZ5Ykc5aFpHVmtRbTl2YkdWaGJsWmhiSFZsSUNZbUlIWmhiSFZsSUQwOVBTQm1ZV3h6WlR0Y2JuMWNibHh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ2RtRnlJSEpsWVdOMFVISnZjSE1nUFNCN1hHNGdJQ0FnWTJocGJHUnlaVzQ2SUhSeWRXVXNYRzRnSUNBZ1pHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXc2SUhSeWRXVXNYRzRnSUNBZ2EyVjVPaUIwY25WbExGeHVJQ0FnSUhKbFpqb2dkSEoxWlZ4dUlDQjlPMXh1SUNCMllYSWdkMkZ5Ym1Wa1VISnZjR1Z5ZEdsbGN5QTlJSHQ5TzF4dVhHNGdJSFpoY2lCM1lYSnVWVzVyYm05M2JsQnliM0JsY25SNUlEMGdablZ1WTNScGIyNGdLRzVoYldVcElIdGNiaUFnSUNCcFppQW9jbVZoWTNSUWNtOXdjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NBbUppQnlaV0ZqZEZCeWIzQnpXMjVoYldWZElIeDhJSGRoY201bFpGQnliM0JsY25ScFpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnSmlZZ2QyRnlibVZrVUhKdmNHVnlkR2xsYzF0dVlXMWxYU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIZGhjbTVsWkZCeWIzQmxjblJwWlhOYmJtRnRaVjBnUFNCMGNuVmxPMXh1SUNBZ0lIWmhjaUJzYjNkbGNrTmhjMlZrVG1GdFpTQTlJRzVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmx4dUlDQWdJQzh2SUdSaGRHRXRLaUJoZEhSeWFXSjFkR1Z6SUhOb2IzVnNaQ0JpWlNCc2IzZGxjbU5oYzJVN0lITjFaMmRsYzNRZ2RHaGxJR3h2ZDJWeVkyRnpaU0IyWlhKemFXOXVYRzRnSUNBZ2RtRnlJSE4wWVc1a1lYSmtUbUZ0WlNBOUlFUlBUVkJ5YjNCbGNuUjVMbWx6UTNWemRHOXRRWFIwY21saWRYUmxLR3h2ZDJWeVEyRnpaV1JPWVcxbEtTQS9JR3h2ZDJWeVEyRnpaV1JPWVcxbElEb2dSRTlOVUhKdmNHVnlkSGt1WjJWMFVHOXpjMmxpYkdWVGRHRnVaR0Z5WkU1aGJXVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JHOTNaWEpEWVhObFpFNWhiV1VwSUQ4Z1JFOU5VSEp2Y0dWeWRIa3VaMlYwVUc5emMybGliR1ZUZEdGdVpHRnlaRTVoYldWYmJHOTNaWEpEWVhObFpFNWhiV1ZkSURvZ2JuVnNiRHRjYmx4dUlDQWdJQzh2SUVadmNpQnViM2NzSUc5dWJIa2dkMkZ5YmlCM2FHVnVJSGRsSUdoaGRtVWdZU0J6ZFdkblpYTjBaV1FnWTI5eWNtVmpkR2x2Ymk0Z1ZHaHBjeUJ3Y21WMlpXNTBjMXh1SUNBZ0lDOHZJR3h2WjJkcGJtY2dkRzl2SUcxMVkyZ2dkMmhsYmlCMWMybHVaeUIwY21GdWMyWmxjbEJ5YjNCelZHOHVYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29jM1JoYm1SaGNtUk9ZVzFsSUQwOUlHNTFiR3dzSUNkVmJtdHViM2R1SUVSUFRTQndjbTl3WlhKMGVTQWxjeTRnUkdsa0lIbHZkU0J0WldGdUlDVnpQeWNzSUc1aGJXVXNJSE4wWVc1a1lYSmtUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgwN1hHNTlYRzVjYmk4cUtseHVJQ29nVDNCbGNtRjBhVzl1Y3lCbWIzSWdaR1ZoYkdsdVp5QjNhWFJvSUVSUFRTQndjbTl3WlhKMGFXVnpMbHh1SUNvdlhHNTJZWElnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1eklEMGdlMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdWeklHMWhjbXQxY0NCbWIzSWdkR2hsSUVsRUlIQnliM0JsY25SNUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnVlc1bGMyTmhjR1ZrSUVsRUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUUxaGNtdDFjQ0J6ZEhKcGJtY3VYRzRnSUNBcUwxeHVJQ0JqY21WaGRHVk5ZWEpyZFhCR2IzSkpSRG9nWm5WdVkzUnBiMjRnS0dsa0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVSUFRWQnliM0JsY25SNUxrbEVYMEZVVkZKSlFsVlVSVjlPUVUxRklDc2dKejBuSUNzZ2NYVnZkR1ZCZEhSeWFXSjFkR1ZXWVd4MVpVWnZja0p5YjNkelpYSW9hV1FwTzF4dUlDQjlMRnh1WEc0Z0lITmxkRUYwZEhKcFluVjBaVVp2Y2tsRU9pQm1kVzVqZEdsdmJpQW9ibTlrWlN3Z2FXUXBJSHRjYmlBZ0lDQnViMlJsTG5ObGRFRjBkSEpwWW5WMFpTaEVUMDFRY205d1pYSjBlUzVKUkY5QlZGUlNTVUpWVkVWZlRrRk5SU3dnYVdRcE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJRzFoY210MWNDQm1iM0lnWVNCd2NtOXdaWEowZVM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNWhiV1ZjYmlBZ0lDb2dRSEJoY21GdElIc3FmU0IyWVd4MVpWeHVJQ0FnS2lCQWNtVjBkWEp1SUhzL2MzUnlhVzVuZlNCTllYSnJkWEFnYzNSeWFXNW5MQ0J2Y2lCdWRXeHNJR2xtSUhSb1pTQndjbTl3WlhKMGVTQjNZWE1nYVc1MllXeHBaQzVjYmlBZ0lDb3ZYRzRnSUdOeVpXRjBaVTFoY210MWNFWnZjbEJ5YjNCbGNuUjVPaUJtZFc1amRHbHZiaUFvYm1GdFpTd2dkbUZzZFdVcElIdGNiaUFnSUNCMllYSWdjSEp2Y0dWeWRIbEpibVp2SUQwZ1JFOU5VSEp2Y0dWeWRIa3VjSEp2Y0dWeWRHbGxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NBL0lFUlBUVkJ5YjNCbGNuUjVMbkJ5YjNCbGNuUnBaWE5iYm1GdFpWMGdPaUJ1ZFd4c08xeHVJQ0FnSUdsbUlDaHdjbTl3WlhKMGVVbHVabThwSUh0Y2JpQWdJQ0FnSUdsbUlDaHphRzkxYkdSSloyNXZjbVZXWVd4MVpTaHdjbTl3WlhKMGVVbHVabThzSUhaaGJIVmxLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnSnljN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMllYSWdZWFIwY21saWRYUmxUbUZ0WlNBOUlIQnliM0JsY25SNVNXNW1ieTVoZEhSeWFXSjFkR1ZPWVcxbE8xeHVJQ0FnSUNBZ2FXWWdLSEJ5YjNCbGNuUjVTVzVtYnk1b1lYTkNiMjlzWldGdVZtRnNkV1VnZkh3Z2NISnZjR1Z5ZEhsSmJtWnZMbWhoYzA5MlpYSnNiMkZrWldSQ2IyOXNaV0Z1Vm1Gc2RXVWdKaVlnZG1Gc2RXVWdQVDA5SUhSeWRXVXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0YwZEhKcFluVjBaVTVoYldVZ0t5QW5QVndpWENJbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdGMGRISnBZblYwWlU1aGJXVWdLeUFuUFNjZ0t5QnhkVzkwWlVGMGRISnBZblYwWlZaaGJIVmxSbTl5UW5KdmQzTmxjaWgyWVd4MVpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaEVUMDFRY205d1pYSjBlUzVwYzBOMWMzUnZiVUYwZEhKcFluVjBaU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdhV1lnS0haaGJIVmxJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJRzVoYldVZ0t5QW5QU2NnS3lCeGRXOTBaVUYwZEhKcFluVjBaVlpoYkhWbFJtOXlRbkp2ZDNObGNpaDJZV3gxWlNrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQjNZWEp1Vlc1cmJtOTNibEJ5YjNCbGNuUjVLRzVoYldVcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QnRZWEpyZFhBZ1ptOXlJR0VnWTNWemRHOXRJSEJ5YjNCbGNuUjVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYm1GdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdUV0Z5YTNWd0lITjBjbWx1Wnl3Z2IzSWdaVzF3ZEhrZ2MzUnlhVzVuSUdsbUlIUm9aU0J3Y205d1pYSjBlU0IzWVhNZ2FXNTJZV3hwWkM1Y2JpQWdJQ292WEc0Z0lHTnlaV0YwWlUxaGNtdDFjRVp2Y2tOMWMzUnZiVUYwZEhKcFluVjBaVG9nWm5WdVkzUnBiMjRnS0c1aGJXVXNJSFpoYkhWbEtTQjdYRzRnSUNBZ2FXWWdLQ0ZwYzBGMGRISnBZblYwWlU1aGJXVlRZV1psS0c1aGJXVXBJSHg4SUhaaGJIVmxJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5KenRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc1aGJXVWdLeUFuUFNjZ0t5QnhkVzkwWlVGMGRISnBZblYwWlZaaGJIVmxSbTl5UW5KdmQzTmxjaWgyWVd4MVpTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRITWdkR2hsSUhaaGJIVmxJR1p2Y2lCaElIQnliM0JsY25SNUlHOXVJR0VnYm05a1pTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCdWIyUmxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdWY2JpQWdJQ292WEc0Z0lITmxkRlpoYkhWbFJtOXlVSEp2Y0dWeWRIazZJR1oxYm1OMGFXOXVJQ2h1YjJSbExDQnVZVzFsTENCMllXeDFaU2tnZTF4dUlDQWdJSFpoY2lCd2NtOXdaWEowZVVsdVptOGdQU0JFVDAxUWNtOXdaWEowZVM1d2NtOXdaWEowYVdWekxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBJRDhnUkU5TlVISnZjR1Z5ZEhrdWNISnZjR1Z5ZEdsbGMxdHVZVzFsWFNBNklHNTFiR3c3WEc0Z0lDQWdhV1lnS0hCeWIzQmxjblI1U1c1bWJ5a2dlMXh1SUNBZ0lDQWdkbUZ5SUcxMWRHRjBhVzl1VFdWMGFHOWtJRDBnY0hKdmNHVnlkSGxKYm1adkxtMTFkR0YwYVc5dVRXVjBhRzlrTzF4dUlDQWdJQ0FnYVdZZ0tHMTFkR0YwYVc5dVRXVjBhRzlrS1NCN1hHNGdJQ0FnSUNBZ0lHMTFkR0YwYVc5dVRXVjBhRzlrS0c1dlpHVXNJSFpoYkhWbEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9jMmh2ZFd4a1NXZHViM0psVm1Gc2RXVW9jSEp2Y0dWeWRIbEpibVp2TENCMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVrWld4bGRHVldZV3gxWlVadmNsQnliM0JsY25SNUtHNXZaR1VzSUc1aGJXVXBPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h3Y205d1pYSjBlVWx1Wm04dWJYVnpkRlZ6WlVGMGRISnBZblYwWlNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWVhSMGNtbGlkWFJsVG1GdFpTQTlJSEJ5YjNCbGNuUjVTVzVtYnk1aGRIUnlhV0oxZEdWT1lXMWxPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JtRnRaWE53WVdObElEMGdjSEp2Y0dWeWRIbEpibVp2TG1GMGRISnBZblYwWlU1aGJXVnpjR0ZqWlR0Y2JpQWdJQ0FnSUNBZ0x5OGdZSE5sZEVGMGRISnBZblYwWldBZ2QybDBhQ0J2WW1wbFkzUnpJR0psWTI5dFpYTWdiMjVzZVNCZ1cyOWlhbVZqZEYxZ0lHbHVJRWxGT0M4NUxGeHVJQ0FnSUNBZ0lDQXZMeUFvSnljZ0t5QjJZV3gxWlNrZ2JXRnJaWE1nYVhRZ2IzVjBjSFYwSUhSb1pTQmpiM0p5WldOMElIUnZVM1J5YVc1bktDa3RkbUZzZFdVdVhHNGdJQ0FnSUNBZ0lHbG1JQ2h1WVcxbGMzQmhZMlVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsTG5ObGRFRjBkSEpwWW5WMFpVNVRLRzVoYldWemNHRmpaU3dnWVhSMGNtbGlkWFJsVG1GdFpTd2dKeWNnS3lCMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NISnZjR1Z5ZEhsSmJtWnZMbWhoYzBKdmIyeGxZVzVXWVd4MVpTQjhmQ0J3Y205d1pYSjBlVWx1Wm04dWFHRnpUM1psY214dllXUmxaRUp2YjJ4bFlXNVdZV3gxWlNBbUppQjJZV3gxWlNBOVBUMGdkSEoxWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzV2WkdVdWMyVjBRWFIwY21saWRYUmxLR0YwZEhKcFluVjBaVTVoYldVc0lDY25LVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCdWIyUmxMbk5sZEVGMGRISnBZblYwWlNoaGRIUnlhV0oxZEdWT1lXMWxMQ0FuSnlBcklIWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJ5YjNCT1lXMWxJRDBnY0hKdmNHVnlkSGxKYm1adkxuQnliM0JsY25SNVRtRnRaVHRjYmlBZ0lDQWdJQ0FnTHk4Z1RYVnpkQ0JsZUhCc2FXTnBkR3g1SUdOaGMzUWdkbUZzZFdWeklHWnZjaUJJUVZOZlUwbEVSVjlGUmtaRlExUlRMWEJ5YjNCbGNuUnBaWE1nZEc4Z2RHaGxYRzRnSUNBZ0lDQWdJQzh2SUhCeWIzQmxjblI1SUhSNWNHVWdZbVZtYjNKbElHTnZiWEJoY21sdVp6c2diMjVzZVNCZ2RtRnNkV1ZnSUdSdlpYTWdZVzVrSUdseklITjBjbWx1Wnk1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z3Y205d1pYSjBlVWx1Wm04dWFHRnpVMmxrWlVWbVptVmpkSE1nZkh3Z0p5Y2dLeUJ1YjJSbFczQnliM0JPWVcxbFhTQWhQVDBnSnljZ0t5QjJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUVOdmJuUnlZWEo1SUhSdklHQnpaWFJCZEhSeWFXSjFkR1ZnTENCdlltcGxZM1FnY0hKdmNHVnlkR2xsY3lCaGNtVWdjSEp2Y0dWeWJIbGNiaUFnSUNBZ0lDQWdJQ0F2THlCZ2RHOVRkSEpwYm1kZ1pXUWdZbmtnU1VVNEx6a3VYRzRnSUNBZ0lDQWdJQ0FnYm05a1pWdHdjbTl3VG1GdFpWMGdQU0IyWVd4MVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9SRTlOVUhKdmNHVnlkSGt1YVhORGRYTjBiMjFCZEhSeWFXSjFkR1VvYm1GdFpTa3BJSHRjYmlBZ0lDQWdJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1elpYUldZV3gxWlVadmNrRjBkSEpwWW5WMFpTaHViMlJsTENCdVlXMWxMQ0IyWVd4MVpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IzWVhKdVZXNXJibTkzYmxCeWIzQmxjblI1S0c1aGJXVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0J6WlhSV1lXeDFaVVp2Y2tGMGRISnBZblYwWlRvZ1puVnVZM1JwYjI0Z0tHNXZaR1VzSUc1aGJXVXNJSFpoYkhWbEtTQjdYRzRnSUNBZ2FXWWdLQ0ZwYzBGMGRISnBZblYwWlU1aGJXVlRZV1psS0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDJZV3gxWlNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCdWIyUmxMbkpsYlc5MlpVRjBkSEpwWW5WMFpTaHVZVzFsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdibTlrWlM1elpYUkJkSFJ5YVdKMWRHVW9ibUZ0WlN3Z0p5Y2dLeUIyWVd4MVpTazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFWld4bGRHVnpJSFJvWlNCMllXeDFaU0JtYjNJZ1lTQndjbTl3WlhKMGVTQnZiaUJoSUc1dlpHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaVnh1SUNBZ0tpOWNiaUFnWkdWc1pYUmxWbUZzZFdWR2IzSlFjbTl3WlhKMGVUb2dablZ1WTNScGIyNGdLRzV2WkdVc0lHNWhiV1VwSUh0Y2JpQWdJQ0IyWVhJZ2NISnZjR1Z5ZEhsSmJtWnZJRDBnUkU5TlVISnZjR1Z5ZEhrdWNISnZjR1Z5ZEdsbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU0EvSUVSUFRWQnliM0JsY25SNUxuQnliM0JsY25ScFpYTmJibUZ0WlYwZ09pQnVkV3hzTzF4dUlDQWdJR2xtSUNod2NtOXdaWEowZVVsdVptOHBJSHRjYmlBZ0lDQWdJSFpoY2lCdGRYUmhkR2x2YmsxbGRHaHZaQ0E5SUhCeWIzQmxjblI1U1c1bWJ5NXRkWFJoZEdsdmJrMWxkR2h2WkR0Y2JpQWdJQ0FnSUdsbUlDaHRkWFJoZEdsdmJrMWxkR2h2WkNrZ2UxeHVJQ0FnSUNBZ0lDQnRkWFJoZEdsdmJrMWxkR2h2WkNodWIyUmxMQ0IxYm1SbFptbHVaV1FwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNod2NtOXdaWEowZVVsdVptOHViWFZ6ZEZWelpVRjBkSEpwWW5WMFpTa2dlMXh1SUNBZ0lDQWdJQ0J1YjJSbExuSmxiVzkyWlVGMGRISnBZblYwWlNod2NtOXdaWEowZVVsdVptOHVZWFIwY21saWRYUmxUbUZ0WlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMllYSWdjSEp2Y0U1aGJXVWdQU0J3Y205d1pYSjBlVWx1Wm04dWNISnZjR1Z5ZEhsT1lXMWxPMXh1SUNBZ0lDQWdJQ0IyWVhJZ1pHVm1ZWFZzZEZaaGJIVmxJRDBnUkU5TlVISnZjR1Z5ZEhrdVoyVjBSR1ZtWVhWc2RGWmhiSFZsUm05eVVISnZjR1Z5ZEhrb2JtOWtaUzV1YjJSbFRtRnRaU3dnY0hKdmNFNWhiV1VwTzF4dUlDQWdJQ0FnSUNCcFppQW9JWEJ5YjNCbGNuUjVTVzVtYnk1b1lYTlRhV1JsUldabVpXTjBjeUI4ZkNBbkp5QXJJRzV2WkdWYmNISnZjRTVoYldWZElDRTlQU0JrWldaaGRXeDBWbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0J1YjJSbFczQnliM0JPWVcxbFhTQTlJR1JsWm1GMWJIUldZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1JFOU5VSEp2Y0dWeWRIa3VhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVW9ibUZ0WlNrcElIdGNiaUFnSUNBZ0lHNXZaR1V1Y21WdGIzWmxRWFIwY21saWRYUmxLRzVoYldVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkMkZ5YmxWdWEyNXZkMjVRY205d1pYSjBlU2h1WVcxbEtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dWZUdGNibHh1VW1WaFkzUlFaWEptTG0xbFlYTjFjbVZOWlhSb2IyUnpLRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3l3Z0owUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeWNzSUh0Y2JpQWdjMlYwVm1Gc2RXVkdiM0pRY205d1pYSjBlVG9nSjNObGRGWmhiSFZsUm05eVVISnZjR1Z5ZEhrbkxGeHVJQ0J6WlhSV1lXeDFaVVp2Y2tGMGRISnBZblYwWlRvZ0ozTmxkRlpoYkhWbFJtOXlRWFIwY21saWRYUmxKeXhjYmlBZ1pHVnNaWFJsVm1Gc2RXVkdiM0pRY205d1pYSjBlVG9nSjJSbGJHVjBaVlpoYkhWbFJtOXlVSEp2Y0dWeWRIa25YRzU5S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk03SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRGFuZ2VyXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cCA9IHJlcXVpcmUoJ2ZianMvbGliL2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCcpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZ2V0TWFya3VwV3JhcCA9IHJlcXVpcmUoJ2ZianMvbGliL2dldE1hcmt1cFdyYXAnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIE9QRU5fVEFHX05BTUVfRVhQID0gL14oPFteIFxcLz5dKykvO1xudmFyIFJFU1VMVF9JTkRFWF9BVFRSID0gJ2RhdGEtZGFuZ2VyLWluZGV4JztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYG5vZGVOYW1lYCBmcm9tIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAqXG4gKiBOT1RFOiBFeHRyYWN0aW5nIHRoZSBgbm9kZU5hbWVgIGRvZXMgbm90IHJlcXVpcmUgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hcbiAqIGJlY2F1c2Ugd2UgbWFrZSBhc3N1bXB0aW9ucyBhYm91dCBSZWFjdC1nZW5lcmF0ZWQgbWFya3VwIChpLmUuIHRoZXJlIGFyZSBub1xuICogc3BhY2VzIHN1cnJvdW5kaW5nIHRoZSBvcGVuaW5nIHRhZyBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZSkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuICogQHJldHVybiB7c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1cC5cbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vZXh0cmFjdC1ub2RlbmFtZVxuICovXG5mdW5jdGlvbiBnZXROb2RlTmFtZShtYXJrdXApIHtcbiAgcmV0dXJuIG1hcmt1cC5zdWJzdHJpbmcoMSwgbWFya3VwLmluZGV4T2YoJyAnKSk7XG59XG5cbnZhciBEYW5nZXIgPSB7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgbWFya3VwIGludG8gYW4gYXJyYXkgb2Ygbm9kZXMuIFRoZSBtYXJrdXAgaXMgZXhwZWN0ZWQgdG8gcmVuZGVyXG4gICAqIGludG8gYSBsaXN0IG9mIHJvb3Qgbm9kZXMuIEFsc28sIHRoZSBsZW5ndGggb2YgYHJlc3VsdExpc3RgIGFuZFxuICAgKiBgbWFya3VwTGlzdGAgc2hvdWxkIGJlIHRoZSBzYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PHN0cmluZz59IG1hcmt1cExpc3QgTGlzdCBvZiBtYXJrdXAgc3RyaW5ncyB0byByZW5kZXIuXG4gICAqIEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnQ+fSBMaXN0IG9mIHJlbmRlcmVkIG5vZGVzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdlcm91c2x5UmVuZGVyTWFya3VwOiBmdW5jdGlvbiAobWFya3VwTGlzdCkge1xuICAgICFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZW5kZXJNYXJrdXAoLi4uKTogQ2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIgJyArICd0aHJlYWQuIE1ha2Ugc3VyZSBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBhcmUgYXZhaWxhYmxlIGdsb2JhbGx5ICcgKyAnYmVmb3JlIHJlcXVpcmluZyBSZWFjdCB3aGVuIHVuaXQgdGVzdGluZyBvciB1c2UgJyArICdSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZyBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIG5vZGVOYW1lO1xuICAgIHZhciBtYXJrdXBCeU5vZGVOYW1lID0ge307XG4gICAgLy8gR3JvdXAgbWFya3VwIGJ5IGBub2RlTmFtZWAgaWYgYSB3cmFwIGlzIG5lY2Vzc2FyeSwgZWxzZSBieSAnKicuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrdXBMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAhbWFya3VwTGlzdFtpXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlbmRlck1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1cC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBub2RlTmFtZSA9IGdldE5vZGVOYW1lKG1hcmt1cExpc3RbaV0pO1xuICAgICAgbm9kZU5hbWUgPSBnZXRNYXJrdXBXcmFwKG5vZGVOYW1lKSA/IG5vZGVOYW1lIDogJyonO1xuICAgICAgbWFya3VwQnlOb2RlTmFtZVtub2RlTmFtZV0gPSBtYXJrdXBCeU5vZGVOYW1lW25vZGVOYW1lXSB8fCBbXTtcbiAgICAgIG1hcmt1cEJ5Tm9kZU5hbWVbbm9kZU5hbWVdW2ldID0gbWFya3VwTGlzdFtpXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdExpc3QgPSBbXTtcbiAgICB2YXIgcmVzdWx0TGlzdEFzc2lnbm1lbnRDb3VudCA9IDA7XG4gICAgZm9yIChub2RlTmFtZSBpbiBtYXJrdXBCeU5vZGVOYW1lKSB7XG4gICAgICBpZiAoIW1hcmt1cEJ5Tm9kZU5hbWUuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIG1hcmt1cExpc3RCeU5vZGVOYW1lID0gbWFya3VwQnlOb2RlTmFtZVtub2RlTmFtZV07XG5cbiAgICAgIC8vIFRoaXMgZm9yLWluIGxvb3Agc2tpcHMgdGhlIGhvbGVzIG9mIHRoZSBzcGFyc2UgYXJyYXkuIFRoZSBvcmRlciBvZlxuICAgICAgLy8gaXRlcmF0aW9uIHNob3VsZCBmb2xsb3cgdGhlIG9yZGVyIG9mIGFzc2lnbm1lbnQsIHdoaWNoIGhhcHBlbnMgdG8gbWF0Y2hcbiAgICAgIC8vIG51bWVyaWNhbCBpbmRleCBvcmRlciwgYnV0IHdlIGRvbid0IHJlbHkgb24gdGhhdC5cbiAgICAgIHZhciByZXN1bHRJbmRleDtcbiAgICAgIGZvciAocmVzdWx0SW5kZXggaW4gbWFya3VwTGlzdEJ5Tm9kZU5hbWUpIHtcbiAgICAgICAgaWYgKG1hcmt1cExpc3RCeU5vZGVOYW1lLmhhc093blByb3BlcnR5KHJlc3VsdEluZGV4KSkge1xuICAgICAgICAgIHZhciBtYXJrdXAgPSBtYXJrdXBMaXN0QnlOb2RlTmFtZVtyZXN1bHRJbmRleF07XG5cbiAgICAgICAgICAvLyBQdXNoIHRoZSByZXF1ZXN0ZWQgbWFya3VwIHdpdGggYW4gYWRkaXRpb25hbCBSRVNVTFRfSU5ERVhfQVRUUlxuICAgICAgICAgIC8vIGF0dHJpYnV0ZS4gIElmIHRoZSBtYXJrdXAgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIDwgY2hhcmFjdGVyLCBpdFxuICAgICAgICAgIC8vIHdpbGwgYmUgZGlzY2FyZGVkIGJlbG93ICh3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbnNvbGUuZXJyb3IpLlxuICAgICAgICAgIG1hcmt1cExpc3RCeU5vZGVOYW1lW3Jlc3VsdEluZGV4XSA9IG1hcmt1cC5yZXBsYWNlKE9QRU5fVEFHX05BTUVfRVhQLFxuICAgICAgICAgIC8vIFRoaXMgaW5kZXggd2lsbCBiZSBwYXJzZWQgYmFjayBvdXQgYmVsb3cuXG4gICAgICAgICAgJyQxICcgKyBSRVNVTFRfSU5ERVhfQVRUUiArICc9XCInICsgcmVzdWx0SW5kZXggKyAnXCIgJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVuZGVyIGVhY2ggZ3JvdXAgb2YgbWFya3VwIHdpdGggc2ltaWxhciB3cmFwcGluZyBgbm9kZU5hbWVgLlxuICAgICAgdmFyIHJlbmRlck5vZGVzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cExpc3RCeU5vZGVOYW1lLmpvaW4oJycpLCBlbXB0eUZ1bmN0aW9uIC8vIERvIG5vdGhpbmcgc3BlY2lhbCB3aXRoIDxzY3JpcHQ+IHRhZ3MuXG4gICAgICApO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlbmRlck5vZGVzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIHZhciByZW5kZXJOb2RlID0gcmVuZGVyTm9kZXNbal07XG4gICAgICAgIGlmIChyZW5kZXJOb2RlLmhhc0F0dHJpYnV0ZSAmJiByZW5kZXJOb2RlLmhhc0F0dHJpYnV0ZShSRVNVTFRfSU5ERVhfQVRUUikpIHtcblxuICAgICAgICAgIHJlc3VsdEluZGV4ID0gK3JlbmRlck5vZGUuZ2V0QXR0cmlidXRlKFJFU1VMVF9JTkRFWF9BVFRSKTtcbiAgICAgICAgICByZW5kZXJOb2RlLnJlbW92ZUF0dHJpYnV0ZShSRVNVTFRfSU5ERVhfQVRUUik7XG5cbiAgICAgICAgICAhIXJlc3VsdExpc3QuaGFzT3duUHJvcGVydHkocmVzdWx0SW5kZXgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RhbmdlcjogQXNzaWduaW5nIHRvIGFuIGFscmVhZHktb2NjdXBpZWQgcmVzdWx0IGluZGV4LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHJlc3VsdExpc3RbcmVzdWx0SW5kZXhdID0gcmVuZGVyTm9kZTtcblxuICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG1hdGNoIHJlc3VsdExpc3QubGVuZ3RoIGFuZCBtYXJrdXBMaXN0Lmxlbmd0aCB3aGVuXG4gICAgICAgICAgLy8gd2UncmUgZG9uZS5cbiAgICAgICAgICByZXN1bHRMaXN0QXNzaWdubWVudENvdW50ICs9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0RhbmdlcjogRGlzY2FyZGluZyB1bmV4cGVjdGVkIG5vZGU6JywgcmVuZGVyTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHRob3VnaCByZXN1bHRMaXN0IHdhcyBwb3B1bGF0ZWQgb3V0IG9mIG9yZGVyLCBpdCBzaG91bGQgbm93IGJlIGEgZGVuc2VcbiAgICAvLyBhcnJheS5cbiAgICAhKHJlc3VsdExpc3RBc3NpZ25tZW50Q291bnQgPT09IHJlc3VsdExpc3QubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdEYW5nZXI6IERpZCBub3QgYXNzaWduIHRvIGV2ZXJ5IGluZGV4IG9mIHJlc3VsdExpc3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgIShyZXN1bHRMaXN0Lmxlbmd0aCA9PT0gbWFya3VwTGlzdC5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RhbmdlcjogRXhwZWN0ZWQgbWFya3VwIHRvIHJlbmRlciAlcyBub2RlcywgYnV0IHJlbmRlcmVkICVzLicsIG1hcmt1cExpc3QubGVuZ3RoLCByZXN1bHRMaXN0Lmxlbmd0aCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHJlc3VsdExpc3Q7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzXG4gICAqIHBhcmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hpbGQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXApIHtcbiAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgJyArICd3b3JrZXIgdGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSAnICsgJ2dsb2JhbGx5IGJlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0IHRlc3Rpbmcgb3IgdXNlICcgKyAnUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgIW1hcmt1cCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1cC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgIShvbGRDaGlsZC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdodG1sJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxhY2UgbWFya3VwIG9mIHRoZSAnICsgJzxodG1sPiBub2RlLiBUaGlzIGlzIGJlY2F1c2UgYnJvd3NlciBxdWlya3MgbWFrZSB0aGlzIHVucmVsaWFibGUgJyArICdhbmQvb3Igc2xvdy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSAnICsgJ3NlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBuZXdDaGlsZDtcbiAgICBpZiAodHlwZW9mIG1hcmt1cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5ld0NoaWxkID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgZW1wdHlGdW5jdGlvbilbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0NoaWxkID0gbWFya3VwO1xuICAgIH1cbiAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGFuZ2VyO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RVlXNW5aWEl1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdSR0Z1WjJWeVhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlJYaGxZM1YwYVc5dVJXNTJhWEp2Ym0xbGJuUW5LVHRjYmx4dWRtRnlJR055WldGMFpVNXZaR1Z6Um5KdmJVMWhjbXQxY0NBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyTnlaV0YwWlU1dlpHVnpSbkp2YlUxaGNtdDFjQ2NwTzF4dWRtRnlJR1Z0Y0hSNVJuVnVZM1JwYjI0Z1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOWxiWEIwZVVaMWJtTjBhVzl1SnlrN1hHNTJZWElnWjJWMFRXRnlhM1Z3VjNKaGNDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmRsZEUxaGNtdDFjRmR5WVhBbktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dWRtRnlJRTlRUlU1ZlZFRkhYMDVCVFVWZlJWaFFJRDBnTDE0b1BGdGVJRnhjTHo1ZEt5a3ZPMXh1ZG1GeUlGSkZVMVZNVkY5SlRrUkZXRjlCVkZSU0lEMGdKMlJoZEdFdFpHRnVaMlZ5TFdsdVpHVjRKenRjYmx4dUx5b3FYRzRnS2lCRmVIUnlZV04wY3lCMGFHVWdZRzV2WkdWT1lXMWxZQ0JtY205dElHRWdjM1J5YVc1bklHOW1JRzFoY210MWNDNWNiaUFxWEc0Z0tpQk9UMVJGT2lCRmVIUnlZV04wYVc1bklIUm9aU0JnYm05a1pVNWhiV1ZnSUdSdlpYTWdibTkwSUhKbGNYVnBjbVVnWVNCeVpXZDFiR0Z5SUdWNGNISmxjM05wYjI0Z2JXRjBZMmhjYmlBcUlHSmxZMkYxYzJVZ2QyVWdiV0ZyWlNCaGMzTjFiWEIwYVc5dWN5QmhZbTkxZENCU1pXRmpkQzFuWlc1bGNtRjBaV1FnYldGeWEzVndJQ2hwTG1VdUlIUm9aWEpsSUdGeVpTQnViMXh1SUNvZ2MzQmhZMlZ6SUhOMWNuSnZkVzVrYVc1bklIUm9aU0J2Y0dWdWFXNW5JSFJoWnlCaGJtUWdkR2hsY21VZ2FYTWdZWFFnYkdWaGMzUWdiMjVsSUdGMGRISnBZblYwWlNrdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcxaGNtdDFjQ0JUZEhKcGJtY2diMllnYldGeWEzVndMbHh1SUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCT2IyUmxJRzVoYldVZ2IyWWdkR2hsSUhOMWNIQnNhV1ZrSUcxaGNtdDFjQzVjYmlBcUlFQnpaV1VnYUhSMGNEb3ZMMnB6Y0dWeVppNWpiMjB2WlhoMGNtRmpkQzF1YjJSbGJtRnRaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJPYjJSbFRtRnRaU2h0WVhKcmRYQXBJSHRjYmlBZ2NtVjBkWEp1SUcxaGNtdDFjQzV6ZFdKemRISnBibWNvTVN3Z2JXRnlhM1Z3TG1sdVpHVjRUMllvSnlBbktTazdYRzU5WEc1Y2JuWmhjaUJFWVc1blpYSWdQU0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYm1SbGNuTWdiV0Z5YTNWd0lHbHVkRzhnWVc0Z1lYSnlZWGtnYjJZZ2JtOWtaWE11SUZSb1pTQnRZWEpyZFhBZ2FYTWdaWGh3WldOMFpXUWdkRzhnY21WdVpHVnlYRzRnSUNBcUlHbHVkRzhnWVNCc2FYTjBJRzltSUhKdmIzUWdibTlrWlhNdUlFRnNjMjhzSUhSb1pTQnNaVzVuZEdnZ2IyWWdZSEpsYzNWc2RFeHBjM1JnSUdGdVpGeHVJQ0FnS2lCZ2JXRnlhM1Z3VEdsemRHQWdjMmh2ZFd4a0lHSmxJSFJvWlNCellXMWxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTJGeWNtRjVQSE4wY21sdVp6NTlJRzFoY210MWNFeHBjM1FnVEdsemRDQnZaaUJ0WVhKcmRYQWdjM1J5YVc1bmN5QjBieUJ5Wlc1a1pYSXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnljbUY1UEVSUFRVVnNaVzFsYm5RK2ZTQk1hWE4wSUc5bUlISmxibVJsY21Wa0lHNXZaR1Z6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdSaGJtZGxjbTkxYzJ4NVVtVnVaR1Z5VFdGeWEzVndPaUJtZFc1amRHbHZiaUFvYldGeWEzVndUR2x6ZENrZ2UxeHVJQ0FnSUNGRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDNWpZVzVWYzJWRVQwMGdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblpHRnVaMlZ5YjNWemJIbFNaVzVrWlhKTllYSnJkWEFvTGk0dUtUb2dRMkZ1Ym05MElISmxibVJsY2lCdFlYSnJkWEFnYVc0Z1lTQjNiM0pyWlhJZ0p5QXJJQ2QwYUhKbFlXUXVJRTFoYTJVZ2MzVnlaU0JnZDJsdVpHOTNZQ0JoYm1RZ1lHUnZZM1Z0Wlc1MFlDQmhjbVVnWVhaaGFXeGhZbXhsSUdkc2IySmhiR3g1SUNjZ0t5QW5ZbVZtYjNKbElISmxjWFZwY21sdVp5QlNaV0ZqZENCM2FHVnVJSFZ1YVhRZ2RHVnpkR2x1WnlCdmNpQjFjMlVnSnlBcklDZFNaV0ZqZEVSUFRWTmxjblpsY2k1eVpXNWtaWEpVYjFOMGNtbHVaeUJtYjNJZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1Wnk0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdkbUZ5SUc1dlpHVk9ZVzFsTzF4dUlDQWdJSFpoY2lCdFlYSnJkWEJDZVU1dlpHVk9ZVzFsSUQwZ2UzMDdYRzRnSUNBZ0x5OGdSM0p2ZFhBZ2JXRnlhM1Z3SUdKNUlHQnViMlJsVG1GdFpXQWdhV1lnWVNCM2NtRndJR2x6SUc1bFkyVnpjMkZ5ZVN3Z1pXeHpaU0JpZVNBbktpY3VYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnRZWEpyZFhCTWFYTjBMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBaGJXRnlhM1Z3VEdsemRGdHBYU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZGtZVzVuWlhKdmRYTnNlVkpsYm1SbGNrMWhjbXQxY0NndUxpNHBPaUJOYVhOemFXNW5JRzFoY210MWNDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCdWIyUmxUbUZ0WlNBOUlHZGxkRTV2WkdWT1lXMWxLRzFoY210MWNFeHBjM1JiYVYwcE8xeHVJQ0FnSUNBZ2JtOWtaVTVoYldVZ1BTQm5aWFJOWVhKcmRYQlhjbUZ3S0c1dlpHVk9ZVzFsS1NBL0lHNXZaR1ZPWVcxbElEb2dKeW9uTzF4dUlDQWdJQ0FnYldGeWEzVndRbmxPYjJSbFRtRnRaVnR1YjJSbFRtRnRaVjBnUFNCdFlYSnJkWEJDZVU1dlpHVk9ZVzFsVzI1dlpHVk9ZVzFsWFNCOGZDQmJYVHRjYmlBZ0lDQWdJRzFoY210MWNFSjVUbTlrWlU1aGJXVmJibTlrWlU1aGJXVmRXMmxkSUQwZ2JXRnlhM1Z3VEdsemRGdHBYVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJSEpsYzNWc2RFeHBjM1FnUFNCYlhUdGNiaUFnSUNCMllYSWdjbVZ6ZFd4MFRHbHpkRUZ6YzJsbmJtMWxiblJEYjNWdWRDQTlJREE3WEc0Z0lDQWdabTl5SUNodWIyUmxUbUZ0WlNCcGJpQnRZWEpyZFhCQ2VVNXZaR1ZPWVcxbEtTQjdYRzRnSUNBZ0lDQnBaaUFvSVcxaGNtdDFjRUo1VG05a1pVNWhiV1V1YUdGelQzZHVVSEp2Y0dWeWRIa29ibTlrWlU1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZG1GeUlHMWhjbXQxY0V4cGMzUkNlVTV2WkdWT1lXMWxJRDBnYldGeWEzVndRbmxPYjJSbFRtRnRaVnR1YjJSbFRtRnRaVjA3WEc1Y2JpQWdJQ0FnSUM4dklGUm9hWE1nWm05eUxXbHVJR3h2YjNBZ2MydHBjSE1nZEdobElHaHZiR1Z6SUc5bUlIUm9aU0J6Y0dGeWMyVWdZWEp5WVhrdUlGUm9aU0J2Y21SbGNpQnZabHh1SUNBZ0lDQWdMeThnYVhSbGNtRjBhVzl1SUhOb2IzVnNaQ0JtYjJ4c2IzY2dkR2hsSUc5eVpHVnlJRzltSUdGemMybG5ibTFsYm5Rc0lIZG9hV05vSUdoaGNIQmxibk1nZEc4Z2JXRjBZMmhjYmlBZ0lDQWdJQzh2SUc1MWJXVnlhV05oYkNCcGJtUmxlQ0J2Y21SbGNpd2dZblYwSUhkbElHUnZiaWQwSUhKbGJIa2diMjRnZEdoaGRDNWNiaUFnSUNBZ0lIWmhjaUJ5WlhOMWJIUkpibVJsZUR0Y2JpQWdJQ0FnSUdadmNpQW9jbVZ6ZFd4MFNXNWtaWGdnYVc0Z2JXRnlhM1Z3VEdsemRFSjVUbTlrWlU1aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhjbXQxY0V4cGMzUkNlVTV2WkdWT1lXMWxMbWhoYzA5M2JsQnliM0JsY25SNUtISmxjM1ZzZEVsdVpHVjRLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJ0WVhKcmRYQWdQU0J0WVhKcmRYQk1hWE4wUW5sT2IyUmxUbUZ0WlZ0eVpYTjFiSFJKYm1SbGVGMDdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QlFkWE5vSUhSb1pTQnlaWEYxWlhOMFpXUWdiV0Z5YTNWd0lIZHBkR2dnWVc0Z1lXUmthWFJwYjI1aGJDQlNSVk5WVEZSZlNVNUVSVmhmUVZSVVVseHVJQ0FnSUNBZ0lDQWdJQzh2SUdGMGRISnBZblYwWlM0Z0lFbG1JSFJvWlNCdFlYSnJkWEFnWkc5bGN5QnViM1FnYzNSaGNuUWdkMmwwYUNCaElEd2dZMmhoY21GamRHVnlMQ0JwZEZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSGRwYkd3Z1ltVWdaR2x6WTJGeVpHVmtJR0psYkc5M0lDaDNhWFJvSUdGdUlHRndjSEp2Y0hKcFlYUmxJR052Ym5OdmJHVXVaWEp5YjNJcExseHVJQ0FnSUNBZ0lDQWdJRzFoY210MWNFeHBjM1JDZVU1dlpHVk9ZVzFsVzNKbGMzVnNkRWx1WkdWNFhTQTlJRzFoY210MWNDNXlaWEJzWVdObEtFOVFSVTVmVkVGSFgwNUJUVVZmUlZoUUxGeHVJQ0FnSUNBZ0lDQWdJQzh2SUZSb2FYTWdhVzVrWlhnZ2QybHNiQ0JpWlNCd1lYSnpaV1FnWW1GamF5QnZkWFFnWW1Wc2IzY3VYRzRnSUNBZ0lDQWdJQ0FnSnlReElDY2dLeUJTUlZOVlRGUmZTVTVFUlZoZlFWUlVVaUFySUNjOVhDSW5JQ3NnY21WemRXeDBTVzVrWlhnZ0t5QW5YQ0lnSnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdMeThnVW1WdVpHVnlJR1ZoWTJnZ1ozSnZkWEFnYjJZZ2JXRnlhM1Z3SUhkcGRHZ2djMmx0YVd4aGNpQjNjbUZ3Y0dsdVp5QmdibTlrWlU1aGJXVmdMbHh1SUNBZ0lDQWdkbUZ5SUhKbGJtUmxjazV2WkdWeklEMGdZM0psWVhSbFRtOWtaWE5HY205dFRXRnlhM1Z3S0cxaGNtdDFjRXhwYzNSQ2VVNXZaR1ZPWVcxbExtcHZhVzRvSnljcExDQmxiWEIwZVVaMWJtTjBhVzl1SUM4dklFUnZJRzV2ZEdocGJtY2djM0JsWTJsaGJDQjNhWFJvSUR4elkzSnBjSFErSUhSaFozTXVYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0JtYjNJZ0tIWmhjaUJxSUQwZ01Ec2dhaUE4SUhKbGJtUmxjazV2WkdWekxteGxibWQwYURzZ0t5dHFLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaVzVrWlhKT2IyUmxJRDBnY21WdVpHVnlUbTlrWlhOYmFsMDdYRzRnSUNBZ0lDQWdJR2xtSUNoeVpXNWtaWEpPYjJSbExtaGhjMEYwZEhKcFluVjBaU0FtSmlCeVpXNWtaWEpPYjJSbExtaGhjMEYwZEhKcFluVjBaU2hTUlZOVlRGUmZTVTVFUlZoZlFWUlVVaWtwSUh0Y2JseHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RFbHVaR1Y0SUQwZ0szSmxibVJsY2s1dlpHVXVaMlYwUVhSMGNtbGlkWFJsS0ZKRlUxVk1WRjlKVGtSRldGOUJWRlJTS1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaVzVrWlhKT2IyUmxMbkpsYlc5MlpVRjBkSEpwWW5WMFpTaFNSVk5WVEZSZlNVNUVSVmhmUVZSVVVpazdYRzVjYmlBZ0lDQWdJQ0FnSUNBaElYSmxjM1ZzZEV4cGMzUXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NtVnpkV3gwU1c1a1pYZ3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owUmhibWRsY2pvZ1FYTnphV2R1YVc1bklIUnZJR0Z1SUdGc2NtVmhaSGt0YjJOamRYQnBaV1FnY21WemRXeDBJR2x1WkdWNExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RFeHBjM1JiY21WemRXeDBTVzVrWlhoZElEMGdjbVZ1WkdWeVRtOWtaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJRlJvYVhNZ2MyaHZkV3hrSUcxaGRHTm9JSEpsYzNWc2RFeHBjM1F1YkdWdVozUm9JR0Z1WkNCdFlYSnJkWEJNYVhOMExteGxibWQwYUNCM2FHVnVYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2QyVW5jbVVnWkc5dVpTNWNiaUFnSUNBZ0lDQWdJQ0J5WlhOMWJIUk1hWE4wUVhOemFXZHViV1Z1ZEVOdmRXNTBJQ3M5SURFN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvSjBSaGJtZGxjam9nUkdselkyRnlaR2x1WnlCMWJtVjRjR1ZqZEdWa0lHNXZaR1U2Snl3Z2NtVnVaR1Z5VG05a1pTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJCYkhSb2IzVm5hQ0J5WlhOMWJIUk1hWE4wSUhkaGN5QndiM0IxYkdGMFpXUWdiM1YwSUc5bUlHOXlaR1Z5TENCcGRDQnphRzkxYkdRZ2JtOTNJR0psSUdFZ1pHVnVjMlZjYmlBZ0lDQXZMeUJoY25KaGVTNWNiaUFnSUNBaEtISmxjM1ZzZEV4cGMzUkJjM05wWjI1dFpXNTBRMjkxYm5RZ1BUMDlJSEpsYzNWc2RFeHBjM1F1YkdWdVozUm9LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEVZVzVuWlhJNklFUnBaQ0J1YjNRZ1lYTnphV2R1SUhSdklHVjJaWEo1SUdsdVpHVjRJRzltSUhKbGMzVnNkRXhwYzNRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnSVNoeVpYTjFiSFJNYVhOMExteGxibWQwYUNBOVBUMGdiV0Z5YTNWd1RHbHpkQzVzWlc1bmRHZ3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owUmhibWRsY2pvZ1JYaHdaV04wWldRZ2JXRnlhM1Z3SUhSdklISmxibVJsY2lBbGN5QnViMlJsY3l3Z1luVjBJSEpsYm1SbGNtVmtJQ1Z6TGljc0lHMWhjbXQxY0V4cGMzUXViR1Z1WjNSb0xDQnlaWE4xYkhSTWFYTjBMbXhsYm1kMGFDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2RFeHBjM1E3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjR3hoWTJWeklHRWdibTlrWlNCM2FYUm9JR0VnYzNSeWFXNW5JRzltSUcxaGNtdDFjQ0JoZENCcGRITWdZM1Z5Y21WdWRDQndiM05wZEdsdmJpQjNhWFJvYVc0Z2FYUnpYRzRnSUNBcUlIQmhjbVZ1ZEM0Z1ZHaGxJRzFoY210MWNDQnRkWE4wSUhKbGJtUmxjaUJwYm5SdklHRWdjMmx1WjJ4bElISnZiM1FnYm05a1pTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCdmJHUkRhR2xzWkNCRGFHbHNaQ0J1YjJSbElIUnZJSEpsY0d4aFkyVXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFlYSnJkWEFnVFdGeWEzVndJSFJ2SUhKbGJtUmxjaUJwYmlCd2JHRmpaU0J2WmlCMGFHVWdZMmhwYkdRZ2JtOWtaUzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JrWVc1blpYSnZkWE5zZVZKbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNEb2dablZ1WTNScGIyNGdLRzlzWkVOb2FXeGtMQ0J0WVhKcmRYQXBJSHRjYmlBZ0lDQWhSWGhsWTNWMGFXOXVSVzUyYVhKdmJtMWxiblF1WTJGdVZYTmxSRTlOSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMlJoYm1kbGNtOTFjMng1VW1Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd0tDNHVMaWs2SUVOaGJtNXZkQ0J5Wlc1a1pYSWdiV0Z5YTNWd0lHbHVJR0VnSnlBcklDZDNiM0pyWlhJZ2RHaHlaV0ZrTGlCTllXdGxJSE4xY21VZ1lIZHBibVJ2ZDJBZ1lXNWtJR0JrYjJOMWJXVnVkR0FnWVhKbElHRjJZV2xzWVdKc1pTQW5JQ3NnSjJkc2IySmhiR3g1SUdKbFptOXlaU0J5WlhGMWFYSnBibWNnVW1WaFkzUWdkMmhsYmlCMWJtbDBJSFJsYzNScGJtY2diM0lnZFhObElDY2dLeUFuVW1WaFkzUkVUMDFUWlhKMlpYSXVjbVZ1WkdWeVZHOVRkSEpwYm1jb0tTQm1iM0lnYzJWeWRtVnlJSEpsYm1SbGNtbHVaeTRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lXMWhjbXQxY0NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RrWVc1blpYSnZkWE5zZVZKbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNDZ3VMaTRwT2lCTmFYTnphVzVuSUcxaGNtdDFjQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lTaHZiR1JEYUdsc1pDNTBZV2RPWVcxbExuUnZURzkzWlhKRFlYTmxLQ2tnSVQwOUlDZG9kRzFzSnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWkdGdVoyVnliM1Z6YkhsU1pYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQW9MaTR1S1RvZ1EyRnVibTkwSUhKbGNHeGhZMlVnYldGeWEzVndJRzltSUhSb1pTQW5JQ3NnSnp4b2RHMXNQaUJ1YjJSbExpQlVhR2x6SUdseklHSmxZMkYxYzJVZ1luSnZkM05sY2lCeGRXbHlhM01nYldGclpTQjBhR2x6SUhWdWNtVnNhV0ZpYkdVZ0p5QXJJQ2RoYm1RdmIzSWdjMnh2ZHk0Z1NXWWdlVzkxSUhkaGJuUWdkRzhnY21WdVpHVnlJSFJ2SUhSb1pTQnliMjkwSUhsdmRTQnRkWE4wSUhWelpTQW5JQ3NnSjNObGNuWmxjaUJ5Wlc1a1pYSnBibWN1SUZObFpTQlNaV0ZqZEVSUFRWTmxjblpsY2k1eVpXNWtaWEpVYjFOMGNtbHVaeWdwTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSFpoY2lCdVpYZERhR2xzWkR0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUcxaGNtdDFjQ0E5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNBZ0lHNWxkME5vYVd4a0lEMGdZM0psWVhSbFRtOWtaWE5HY205dFRXRnlhM1Z3S0cxaGNtdDFjQ3dnWlcxd2RIbEdkVzVqZEdsdmJpbGJNRjA3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHNWxkME5vYVd4a0lEMGdiV0Z5YTNWd08xeHVJQ0FnSUgxY2JpQWdJQ0J2YkdSRGFHbHNaQzV3WVhKbGJuUk9iMlJsTG5KbGNHeGhZMlZEYUdsc1pDaHVaWGREYUdsc1pDd2diMnhrUTJocGJHUXBPMXh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1JHRnVaMlZ5T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG5cbi8qKlxuICogTW9kdWxlIHRoYXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQgc3BlY2lmaWVzIGFcbiAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1Z2luYHMuIEEgY29udmVuaWVudCB3YXkgdG8gcmVhc29uIGFib3V0XG4gKiBwbHVnaW5zLCB3aXRob3V0IGhhdmluZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG4gKiBoYXZpbmcgcGx1Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgaW5qZWN0ZWQgYmVjYXVzZVxuICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBwYWNrYWdpbmcgb3JkZXIuXG4gKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qgb2NjdXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuICogcHJldmVudGluZyBkZWZhdWx0IG9uIGV2ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdpbmAgaGFuZGxlcnMuXG4gKi9cbnZhciBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlciA9IFtrZXlPZih7IFJlc3BvbmRlckV2ZW50UGx1Z2luOiBudWxsIH0pLCBrZXlPZih7IFNpbXBsZUV2ZW50UGx1Z2luOiBudWxsIH0pLCBrZXlPZih7IFRhcEV2ZW50UGx1Z2luOiBudWxsIH0pLCBrZXlPZih7IEVudGVyTGVhdmVFdmVudFBsdWdpbjogbnVsbCB9KSwga2V5T2YoeyBDaGFuZ2VFdmVudFBsdWdpbjogbnVsbCB9KSwga2V5T2YoeyBTZWxlY3RFdmVudFBsdWdpbjogbnVsbCB9KSwga2V5T2YoeyBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOiBudWxsIH0pXTtcblxubW9kdWxlLmV4cG9ydHMgPSBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG5cbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG52YXIgZ2V0Rmlyc3RSZWFjdERPTSA9IFJlYWN0TW91bnQuZ2V0Rmlyc3RSZWFjdERPTTtcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIG1vdXNlRW50ZXI6IHtcbiAgICByZWdpc3RyYXRpb25OYW1lOiBrZXlPZih7IG9uTW91c2VFbnRlcjogbnVsbCB9KSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3V0LCB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3Zlcl1cbiAgfSxcbiAgbW91c2VMZWF2ZToge1xuICAgIHJlZ2lzdHJhdGlvbk5hbWU6IGtleU9mKHsgb25Nb3VzZUxlYXZlOiBudWxsIH0pLFxuICAgIGRlcGVuZGVuY2llczogW3RvcExldmVsVHlwZXMudG9wTW91c2VPdXQsIHRvcExldmVsVHlwZXMudG9wTW91c2VPdmVyXVxuICB9XG59O1xuXG52YXIgZXh0cmFjdGVkRXZlbnRzID0gW251bGwsIG51bGxdO1xuXG52YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luID0ge1xuXG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4gICAqIEZvciBhbG1vc3QgZXZlcnkgaW50ZXJhY3Rpb24gd2UgY2FyZSBhYm91dCwgdGhlcmUgd2lsbCBiZSBib3RoIGEgdG9wLWxldmVsXG4gICAqIGBtb3VzZW92ZXJgIGFuZCBgbW91c2VvdXRgIGV2ZW50IHRoYXQgb2NjdXJzLiBPbmx5IHVzZSBgbW91c2VvdXRgIHNvIHRoYXRcbiAgICogd2UgZG8gbm90IGV4dHJhY3QgZHVwbGljYXRlIGV2ZW50cy4gSG93ZXZlciwgbW92aW5nIHRoZSBtb3VzZSBpbnRvIHRoZVxuICAgKiBicm93c2VyIGZyb20gb3V0c2lkZSB3aWxsIG5vdCBmaXJlIGEgYG1vdXNlb3V0YCBldmVudC4gSW4gdGhpcyBjYXNlLCB3ZSB1c2VcbiAgICogdGhlIGBtb3VzZW92ZXJgIHRvcC1sZXZlbCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU92ZXIgJiYgKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQuZnJvbUVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRvcExldmVsVHlwZSAhPT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU91dCAmJiB0b3BMZXZlbFR5cGUgIT09IHRvcExldmVsVHlwZXMudG9wTW91c2VPdmVyKSB7XG4gICAgICAvLyBNdXN0IG5vdCBiZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHdpbjtcbiAgICBpZiAodG9wTGV2ZWxUYXJnZXQud2luZG93ID09PSB0b3BMZXZlbFRhcmdldCkge1xuICAgICAgLy8gYHRvcExldmVsVGFyZ2V0YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuXG4gICAgICB3aW4gPSB0b3BMZXZlbFRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LlxuICAgICAgdmFyIGRvYyA9IHRvcExldmVsVGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICBpZiAoZG9jKSB7XG4gICAgICAgIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luID0gd2luZG93O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBmcm9tO1xuICAgIHZhciB0bztcbiAgICB2YXIgZnJvbUlEID0gJyc7XG4gICAgdmFyIHRvSUQgPSAnJztcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3V0KSB7XG4gICAgICBmcm9tID0gdG9wTGV2ZWxUYXJnZXQ7XG4gICAgICBmcm9tSUQgPSB0b3BMZXZlbFRhcmdldElEO1xuICAgICAgdG8gPSBnZXRGaXJzdFJlYWN0RE9NKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQudG9FbGVtZW50KTtcbiAgICAgIGlmICh0bykge1xuICAgICAgICB0b0lEID0gUmVhY3RNb3VudC5nZXRJRCh0byk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0byA9IHdpbjtcbiAgICAgIH1cbiAgICAgIHRvID0gdG8gfHwgd2luO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcm9tID0gd2luO1xuICAgICAgdG8gPSB0b3BMZXZlbFRhcmdldDtcbiAgICAgIHRvSUQgPSB0b3BMZXZlbFRhcmdldElEO1xuICAgIH1cblxuICAgIGlmIChmcm9tID09PSB0bykge1xuICAgICAgLy8gTm90aGluZyBwZXJ0YWlucyB0byBvdXIgbWFuYWdlZCBjb21wb25lbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3VzZUxlYXZlLCBmcm9tSUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgbGVhdmUudHlwZSA9ICdtb3VzZWxlYXZlJztcbiAgICBsZWF2ZS50YXJnZXQgPSBmcm9tO1xuICAgIGxlYXZlLnJlbGF0ZWRUYXJnZXQgPSB0bztcblxuICAgIHZhciBlbnRlciA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VFbnRlciwgdG9JRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBlbnRlci50eXBlID0gJ21vdXNlZW50ZXInO1xuICAgIGVudGVyLnRhcmdldCA9IHRvO1xuICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tO1xuXG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tSUQsIHRvSUQpO1xuXG4gICAgZXh0cmFjdGVkRXZlbnRzWzBdID0gbGVhdmU7XG4gICAgZXh0cmFjdGVkRXZlbnRzWzFdID0gZW50ZXI7XG5cbiAgICByZXR1cm4gZXh0cmFjdGVkRXZlbnRzO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudENvbnN0YW50c1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGtleU1pcnJvciA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU1pcnJvcicpO1xuXG52YXIgUHJvcGFnYXRpb25QaGFzZXMgPSBrZXlNaXJyb3IoeyBidWJibGVkOiBudWxsLCBjYXB0dXJlZDogbnVsbCB9KTtcblxuLyoqXG4gKiBUeXBlcyBvZiByYXcgc2lnbmFscyBmcm9tIHRoZSBicm93c2VyIGNhdWdodCBhdCB0aGUgdG9wIGxldmVsLlxuICovXG52YXIgdG9wTGV2ZWxUeXBlcyA9IGtleU1pcnJvcih7XG4gIHRvcEFib3J0OiBudWxsLFxuICB0b3BCbHVyOiBudWxsLFxuICB0b3BDYW5QbGF5OiBudWxsLFxuICB0b3BDYW5QbGF5VGhyb3VnaDogbnVsbCxcbiAgdG9wQ2hhbmdlOiBudWxsLFxuICB0b3BDbGljazogbnVsbCxcbiAgdG9wQ29tcG9zaXRpb25FbmQ6IG51bGwsXG4gIHRvcENvbXBvc2l0aW9uU3RhcnQ6IG51bGwsXG4gIHRvcENvbXBvc2l0aW9uVXBkYXRlOiBudWxsLFxuICB0b3BDb250ZXh0TWVudTogbnVsbCxcbiAgdG9wQ29weTogbnVsbCxcbiAgdG9wQ3V0OiBudWxsLFxuICB0b3BEb3VibGVDbGljazogbnVsbCxcbiAgdG9wRHJhZzogbnVsbCxcbiAgdG9wRHJhZ0VuZDogbnVsbCxcbiAgdG9wRHJhZ0VudGVyOiBudWxsLFxuICB0b3BEcmFnRXhpdDogbnVsbCxcbiAgdG9wRHJhZ0xlYXZlOiBudWxsLFxuICB0b3BEcmFnT3ZlcjogbnVsbCxcbiAgdG9wRHJhZ1N0YXJ0OiBudWxsLFxuICB0b3BEcm9wOiBudWxsLFxuICB0b3BEdXJhdGlvbkNoYW5nZTogbnVsbCxcbiAgdG9wRW1wdGllZDogbnVsbCxcbiAgdG9wRW5jcnlwdGVkOiBudWxsLFxuICB0b3BFbmRlZDogbnVsbCxcbiAgdG9wRXJyb3I6IG51bGwsXG4gIHRvcEZvY3VzOiBudWxsLFxuICB0b3BJbnB1dDogbnVsbCxcbiAgdG9wS2V5RG93bjogbnVsbCxcbiAgdG9wS2V5UHJlc3M6IG51bGwsXG4gIHRvcEtleVVwOiBudWxsLFxuICB0b3BMb2FkOiBudWxsLFxuICB0b3BMb2FkZWREYXRhOiBudWxsLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogbnVsbCxcbiAgdG9wTG9hZFN0YXJ0OiBudWxsLFxuICB0b3BNb3VzZURvd246IG51bGwsXG4gIHRvcE1vdXNlTW92ZTogbnVsbCxcbiAgdG9wTW91c2VPdXQ6IG51bGwsXG4gIHRvcE1vdXNlT3ZlcjogbnVsbCxcbiAgdG9wTW91c2VVcDogbnVsbCxcbiAgdG9wUGFzdGU6IG51bGwsXG4gIHRvcFBhdXNlOiBudWxsLFxuICB0b3BQbGF5OiBudWxsLFxuICB0b3BQbGF5aW5nOiBudWxsLFxuICB0b3BQcm9ncmVzczogbnVsbCxcbiAgdG9wUmF0ZUNoYW5nZTogbnVsbCxcbiAgdG9wUmVzZXQ6IG51bGwsXG4gIHRvcFNjcm9sbDogbnVsbCxcbiAgdG9wU2Vla2VkOiBudWxsLFxuICB0b3BTZWVraW5nOiBudWxsLFxuICB0b3BTZWxlY3Rpb25DaGFuZ2U6IG51bGwsXG4gIHRvcFN0YWxsZWQ6IG51bGwsXG4gIHRvcFN1Ym1pdDogbnVsbCxcbiAgdG9wU3VzcGVuZDogbnVsbCxcbiAgdG9wVGV4dElucHV0OiBudWxsLFxuICB0b3BUaW1lVXBkYXRlOiBudWxsLFxuICB0b3BUb3VjaENhbmNlbDogbnVsbCxcbiAgdG9wVG91Y2hFbmQ6IG51bGwsXG4gIHRvcFRvdWNoTW92ZTogbnVsbCxcbiAgdG9wVG91Y2hTdGFydDogbnVsbCxcbiAgdG9wVm9sdW1lQ2hhbmdlOiBudWxsLFxuICB0b3BXYWl0aW5nOiBudWxsLFxuICB0b3BXaGVlbDogbnVsbFxufSk7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHtcbiAgdG9wTGV2ZWxUeXBlczogdG9wTGV2ZWxUeXBlcyxcbiAgUHJvcGFnYXRpb25QaGFzZXM6IFByb3BhZ2F0aW9uUGhhc2VzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50Q29uc3RhbnRzOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQbHVnaW5IdWJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJlZ2lzdHJ5Jyk7XG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5VdGlscycpO1xudmFyIFJlYWN0RXJyb3JVdGlscyA9IHJlcXVpcmUoJy4vUmVhY3RFcnJvclV0aWxzJyk7XG5cbnZhciBhY2N1bXVsYXRlSW50byA9IHJlcXVpcmUoJy4vYWNjdW11bGF0ZUludG8nKTtcbnZhciBmb3JFYWNoQWNjdW11bGF0ZWQgPSByZXF1aXJlKCcuL2ZvckVhY2hBY2N1bXVsYXRlZCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVyc1xuICovXG52YXIgbGlzdGVuZXJCYW5rID0ge307XG5cbi8qKlxuICogSW50ZXJuYWwgcXVldWUgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBhcmVcbiAqIHdhaXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLlxuICovXG52YXIgZXZlbnRRdWV1ZSA9IG51bGw7XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQgcmVsZWFzZXMgaXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLlxuICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHtcbiAgaWYgKGV2ZW50KSB7XG4gICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCk7XG5cbiAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7XG4gICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcbiAgICB9XG4gIH1cbn07XG52YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTtcbn07XG52YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkge1xuICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTtcbn07XG5cbi8qKlxuICogLSBgSW5zdGFuY2VIYW5kbGVgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0IHBlcmZvcm1zIGxvZ2ljYWwgdHJhdmVyc2FscyBvZiBET01cbiAqICAgaGllcmFyY2h5IGdpdmVuIGlkcyBvZiB0aGUgbG9naWNhbCBET00gZWxlbWVudHMgaW52b2x2ZWQuXG4gKi9cbnZhciBJbnN0YW5jZUhhbmRsZSA9IG51bGw7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSW5zdGFuY2VIYW5kbGUoKSB7XG4gIHZhciB2YWxpZCA9IEluc3RhbmNlSGFuZGxlICYmIEluc3RhbmNlSGFuZGxlLnRyYXZlcnNlVHdvUGhhc2UgJiYgSW5zdGFuY2VIYW5kbGUudHJhdmVyc2VFbnRlckxlYXZlO1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh2YWxpZCwgJ0luc3RhbmNlSGFuZGxlIG5vdCBpbmplY3RlZCBiZWZvcmUgdXNlIScpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgYSB1bmlmaWVkIGludGVyZmFjZSBmb3IgZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQuXG4gKlxuICogRXZlbnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01FdmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfVxuICogICAgIFJlcXVpcmVkLiBXaGVuIGEgdG9wLWxldmVsIGV2ZW50IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0b1xuICogICAgIGV4dHJhY3Qgc3ludGhldGljIGV2ZW50cyB0aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1ZWQgYW5kIGRpc3BhdGNoZWQuXG4gKlxuICogICBgZXZlbnRUeXBlc2Age29iamVjdH1cbiAqICAgICBPcHRpb25hbCwgcGx1Z2lucyB0aGF0IGZpcmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBpbmcgb2YgcmVnaXN0cmF0aW9uXG4gKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcgbXVzdFxuICogICAgIGJlIG9iamVjdHMgdGhhdCBjb250YWluIGByZWdpc3RyYXRpb25OYW1lYCBvciBgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNgLlxuICpcbiAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmluZyl9XG4gKiAgICAgT3B0aW9uYWwsIGFsbG93cyBwbHVnaW5zIHRvIG92ZXJyaWRlIGhvdyBhbiBldmVudCBnZXRzIGRpc3BhdGNoZWQuIEJ5XG4gKiAgICAgZGVmYXVsdCwgdGhlIGxpc3RlbmVyIGlzIHNpbXBseSBpbnZva2VkLlxuICpcbiAqIEVhY2ggcGx1Z2luIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBgRXZlbnRzUGx1Z2luSHViYCBpcyBpbW1lZGlhdGVseSBvcGVyYWJsZS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnZhciBFdmVudFBsdWdpbkh1YiA9IHtcblxuICAvKipcbiAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIGluamVjdGlvbjoge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IEluamVjdGVkTW91bnRcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgaW5qZWN0TW91bnQ6IEV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdE1vdW50LFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IEluamVjdGVkSW5zdGFuY2VIYW5kbGVcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgaW5qZWN0SW5zdGFuY2VIYW5kbGU6IGZ1bmN0aW9uIChJbmplY3RlZEluc3RhbmNlSGFuZGxlKSB7XG4gICAgICBJbnN0YW5jZUhhbmRsZSA9IEluamVjdGVkSW5zdGFuY2VIYW5kbGU7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZUluc3RhbmNlSGFuZGxlKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGdldEluc3RhbmNlSGFuZGxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZUluc3RhbmNlSGFuZGxlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gSW5zdGFuY2VIYW5kbGU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luT3JkZXIsXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICAgKi9cbiAgICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lXG5cbiAgfSxcblxuICBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLFxuXG4gIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFxuXG4gIC8qKlxuICAgKiBTdG9yZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2lkXWAuIElzIGlkZW1wb3RlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS5cbiAgICovXG4gIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgISh0eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVzIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24sIGluc3RlYWQgZ290IHR5cGUgJXMnLCByZWdpc3RyYXRpb25OYW1lLCB0eXBlb2YgbGlzdGVuZXIpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSB8fCAobGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdID0ge30pO1xuICAgIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2lkXSA9IGxpc3RlbmVyO1xuXG4gICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIpIHtcbiAgICAgIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIHRoZSBET00gZWxlbWVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259IFRoZSBzdG9yZWQgY2FsbGJhY2suXG4gICAqL1xuICBnZXRMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtpZF07XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSByZWdpc3RyYXRpb24gYmFuay5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIHRoZSBET00gZWxlbWVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKi9cbiAgZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIG5ldmVyIGJlIG51bGwgLS0gd2hlbiBpcyBpdD9cbiAgICBpZiAoYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICAgIGRlbGV0ZSBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtpZF07XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBsaXN0ZW5lcnMgZm9yIHRoZSBET00gZWxlbWVudCB3aXRoIHRoZSBzdXBwbGllZCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIHRoZSBET00gZWxlbWVudC5cbiAgICovXG4gIGRlbGV0ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gKGlkKSB7XG4gICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiBsaXN0ZW5lckJhbmspIHtcbiAgICAgIGlmICghbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2lkXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1baWRdO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbFxuICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZXZlbnRzO1xuICAgIHZhciBwbHVnaW5zID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gTm90IGV2ZXJ5IHBsdWdpbiBpbiB0aGUgb3JkZXJpbmcgbWF5IGJlIGxvYWRlZCBhdCBydW50aW1lLlxuICAgICAgdmFyIHBvc3NpYmxlUGx1Z2luID0gcGx1Z2luc1tpXTtcbiAgICAgIGlmIChwb3NzaWJsZVBsdWdpbikge1xuICAgICAgICB2YXIgZXh0cmFjdGVkRXZlbnRzID0gcG9zc2libGVQbHVnaW4uZXh0cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgICBpZiAoZXh0cmFjdGVkRXZlbnRzKSB7XG4gICAgICAgICAgZXZlbnRzID0gYWNjdW11bGF0ZUludG8oZXZlbnRzLCBleHRyYWN0ZWRFdmVudHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBldmVudHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEVucXVldWVzIGEgc3ludGhldGljIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlblxuICAgKiBgcHJvY2Vzc0V2ZW50UXVldWVgIGlzIGludm9rZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gZXZlbnRzIEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVFdmVudHM6IGZ1bmN0aW9uIChldmVudHMpIHtcbiAgICBpZiAoZXZlbnRzKSB7XG4gICAgICBldmVudFF1ZXVlID0gYWNjdW11bGF0ZUludG8oZXZlbnRRdWV1ZSwgZXZlbnRzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYWxsIHN5bnRoZXRpYyBldmVudHMgb24gdGhlIGV2ZW50IHF1ZXVlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb2Nlc3NFdmVudFF1ZXVlOiBmdW5jdGlvbiAoc2ltdWxhdGVkKSB7XG4gICAgLy8gU2V0IGBldmVudFF1ZXVlYCB0byBudWxsIGJlZm9yZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQgd2UgY2FuIHRlbGwgaWYgbW9yZVxuICAgIC8vIGV2ZW50cyBnZXQgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZy5cbiAgICB2YXIgcHJvY2Vzc2luZ0V2ZW50UXVldWUgPSBldmVudFF1ZXVlO1xuICAgIGV2ZW50UXVldWUgPSBudWxsO1xuICAgIGlmIChzaW11bGF0ZWQpIHtcbiAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yRWFjaEFjY3VtdWxhdGVkKHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCk7XG4gICAgfVxuICAgICEhZXZlbnRRdWV1ZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwcm9jZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlvbmFsIGV2ZW50cyB3ZXJlIGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcgJyArICdhbiBldmVudCBxdWV1ZS4gU3VwcG9ydCBmb3IgdGhpcyBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAvLyBUaGlzIHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYgYW55IG9mIHRoZSBldmVudCBoYW5kbGVycyB0aHJldy5cbiAgICBSZWFjdEVycm9yVXRpbHMucmV0aHJvd0NhdWdodEVycm9yKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRlc3RzIG9ubHkuIERvIG5vdCB1c2UhXG4gICAqL1xuICBfX3B1cmdlOiBmdW5jdGlvbiAoKSB7XG4gICAgbGlzdGVuZXJCYW5rID0ge307XG4gIH0sXG5cbiAgX19nZXRMaXN0ZW5lckJhbms6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbGlzdGVuZXJCYW5rO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5IdWI7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlGZG1WdWRGQnNkV2RwYmtoMVlpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdSWFpsYm5SUWJIVm5hVzVJZFdKY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVJRDBnY21WeGRXbHlaU2duTGk5RmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUp5azdYRzUyWVhJZ1JYWmxiblJRYkhWbmFXNVZkR2xzY3lBOUlISmxjWFZwY21Vb0p5NHZSWFpsYm5SUWJIVm5hVzVWZEdsc2N5Y3BPMXh1ZG1GeUlGSmxZV04wUlhKeWIzSlZkR2xzY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmNuSnZjbFYwYVd4ekp5azdYRzVjYm5aaGNpQmhZMk4xYlhWc1lYUmxTVzUwYnlBOUlISmxjWFZwY21Vb0p5NHZZV05qZFcxMWJHRjBaVWx1ZEc4bktUdGNiblpoY2lCbWIzSkZZV05vUVdOamRXMTFiR0YwWldRZ1BTQnlaWEYxYVhKbEtDY3VMMlp2Y2tWaFkyaEJZMk4xYlhWc1lYUmxaQ2NwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiaThxS2x4dUlDb2dTVzUwWlhKdVlXd2djM1J2Y21VZ1ptOXlJR1YyWlc1MElHeHBjM1JsYm1WeWMxeHVJQ292WEc1MllYSWdiR2x6ZEdWdVpYSkNZVzVySUQwZ2UzMDdYRzVjYmk4cUtseHVJQ29nU1c1MFpYSnVZV3dnY1hWbGRXVWdiMllnWlhabGJuUnpJSFJvWVhRZ2FHRjJaU0JoWTJOMWJYVnNZWFJsWkNCMGFHVnBjaUJrYVhOd1lYUmphR1Z6SUdGdVpDQmhjbVZjYmlBcUlIZGhhWFJwYm1jZ2RHOGdhR0YyWlNCMGFHVnBjaUJrYVhOd1lYUmphR1Z6SUdWNFpXTjFkR1ZrTGx4dUlDb3ZYRzUyWVhJZ1pYWmxiblJSZFdWMVpTQTlJRzUxYkd3N1hHNWNiaThxS2x4dUlDb2dSR2x6Y0dGMFkyaGxjeUJoYmlCbGRtVnVkQ0JoYm1RZ2NtVnNaV0Z6WlhNZ2FYUWdZbUZqYXlCcGJuUnZJSFJvWlNCd2IyOXNMQ0IxYm14bGMzTWdjR1Z5YzJsemRHVnVkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJR1YyWlc1MElGTjViblJvWlhScFl5QmxkbVZ1ZENCMGJ5QmlaU0JrYVhOd1lYUmphR1ZrTGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQnphVzExYkdGMFpXUWdTV1lnZEdobElHVjJaVzUwSUdseklITnBiWFZzWVhSbFpDQW9ZMmhoYm1kbGN5QmxlRzRnWW1Wb1lYWnBiM0lwWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1MllYSWdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkJibVJTWld4bFlYTmxJRDBnWm5WdVkzUnBiMjRnS0dWMlpXNTBMQ0J6YVcxMWJHRjBaV1FwSUh0Y2JpQWdhV1lnS0dWMlpXNTBLU0I3WEc0Z0lDQWdSWFpsYm5SUWJIVm5hVzVWZEdsc2N5NWxlR1ZqZFhSbFJHbHpjR0YwWTJobGMwbHVUM0prWlhJb1pYWmxiblFzSUhOcGJYVnNZWFJsWkNrN1hHNWNiaUFnSUNCcFppQW9JV1YyWlc1MExtbHpVR1Z5YzJsemRHVnVkQ2dwS1NCN1hHNGdJQ0FnSUNCbGRtVnVkQzVqYjI1emRISjFZM1J2Y2k1eVpXeGxZWE5sS0dWMlpXNTBLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzUyWVhJZ1pYaGxZM1YwWlVScGMzQmhkR05vWlhOQmJtUlNaV3hsWVhObFUybHRkV3hoZEdWa0lEMGdablZ1WTNScGIyNGdLR1VwSUh0Y2JpQWdjbVYwZFhKdUlHVjRaV04xZEdWRWFYTndZWFJqYUdWelFXNWtVbVZzWldGelpTaGxMQ0IwY25WbEtUdGNibjA3WEc1MllYSWdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkJibVJTWld4bFlYTmxWRzl3VEdWMlpXd2dQU0JtZFc1amRHbHZiaUFvWlNrZ2UxeHVJQ0J5WlhSMWNtNGdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkJibVJTWld4bFlYTmxLR1VzSUdaaGJITmxLVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dMU0JnU1c1emRHRnVZMlZJWVc1a2JHVmdPaUJiY21WeGRXbHlaV1JkSUUxdlpIVnNaU0IwYUdGMElIQmxjbVp2Y20xeklHeHZaMmxqWVd3Z2RISmhkbVZ5YzJGc2N5QnZaaUJFVDAxY2JpQXFJQ0FnYUdsbGNtRnlZMmg1SUdkcGRtVnVJR2xrY3lCdlppQjBhR1VnYkc5bmFXTmhiQ0JFVDAwZ1pXeGxiV1Z1ZEhNZ2FXNTJiMngyWldRdVhHNGdLaTljYm5aaGNpQkpibk4wWVc1alpVaGhibVJzWlNBOUlHNTFiR3c3WEc1Y2JtWjFibU4wYVc5dUlIWmhiR2xrWVhSbFNXNXpkR0Z1WTJWSVlXNWtiR1VvS1NCN1hHNGdJSFpoY2lCMllXeHBaQ0E5SUVsdWMzUmhibU5sU0dGdVpHeGxJQ1ltSUVsdWMzUmhibU5sU0dGdVpHeGxMblJ5WVhabGNuTmxWSGR2VUdoaGMyVWdKaVlnU1c1emRHRnVZMlZJWVc1a2JHVXVkSEpoZG1WeWMyVkZiblJsY2t4bFlYWmxPMXh1SUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aDJZV3hwWkN3Z0owbHVjM1JoYm1ObFNHRnVaR3hsSUc1dmRDQnBibXBsWTNSbFpDQmlaV1p2Y21VZ2RYTmxJU2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVmVnh1WEc0dktpcGNiaUFxSUZSb2FYTWdhWE1nWVNCMWJtbG1hV1ZrSUdsdWRHVnlabUZqWlNCbWIzSWdaWFpsYm5RZ2NHeDFaMmx1Y3lCMGJ5QmlaU0JwYm5OMFlXeHNaV1FnWVc1a0lHTnZibVpwWjNWeVpXUXVYRzRnS2x4dUlDb2dSWFpsYm5RZ2NHeDFaMmx1Y3lCallXNGdhVzF3YkdWdFpXNTBJSFJvWlNCbWIyeHNiM2RwYm1jZ2NISnZjR1Z5ZEdsbGN6cGNiaUFxWEc0Z0tpQWdJR0JsZUhSeVlXTjBSWFpsYm5SellDQjdablZ1WTNScGIyNG9jM1J5YVc1bkxDQkVUMDFGZG1WdWRGUmhjbWRsZEN3Z2MzUnlhVzVuTENCdlltcGxZM1FwT2lBcWZWeHVJQ29nSUNBZ0lGSmxjWFZwY21Wa0xpQlhhR1Z1SUdFZ2RHOXdMV3hsZG1Wc0lHVjJaVzUwSUdseklHWnBjbVZrTENCMGFHbHpJRzFsZEdodlpDQnBjeUJsZUhCbFkzUmxaQ0IwYjF4dUlDb2dJQ0FnSUdWNGRISmhZM1FnYzNsdWRHaGxkR2xqSUdWMlpXNTBjeUIwYUdGMElIZHBiR3dnYVc0Z2RIVnliaUJpWlNCeGRXVjFaV1FnWVc1a0lHUnBjM0JoZEdOb1pXUXVYRzRnS2x4dUlDb2dJQ0JnWlhabGJuUlVlWEJsYzJBZ2UyOWlhbVZqZEgxY2JpQXFJQ0FnSUNCUGNIUnBiMjVoYkN3Z2NHeDFaMmx1Y3lCMGFHRjBJR1pwY21VZ1pYWmxiblJ6SUcxMWMzUWdjSFZpYkdsemFDQmhJRzFoY0hCcGJtY2diMllnY21WbmFYTjBjbUYwYVc5dVhHNGdLaUFnSUNBZ2JtRnRaWE1nZEdoaGRDQmhjbVVnZFhObFpDQjBieUJ5WldkcGMzUmxjaUJzYVhOMFpXNWxjbk11SUZaaGJIVmxjeUJ2WmlCMGFHbHpJRzFoY0hCcGJtY2diWFZ6ZEZ4dUlDb2dJQ0FnSUdKbElHOWlhbVZqZEhNZ2RHaGhkQ0JqYjI1MFlXbHVJR0J5WldkcGMzUnlZWFJwYjI1T1lXMWxZQ0J2Y2lCZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE5nTGx4dUlDcGNiaUFxSUNBZ1lHVjRaV04xZEdWRWFYTndZWFJqYUdBZ2UyWjFibU4wYVc5dUtHOWlhbVZqZEN3Z1puVnVZM1JwYjI0c0lITjBjbWx1WnlsOVhHNGdLaUFnSUNBZ1QzQjBhVzl1WVd3c0lHRnNiRzkzY3lCd2JIVm5hVzV6SUhSdklHOTJaWEp5YVdSbElHaHZkeUJoYmlCbGRtVnVkQ0JuWlhSeklHUnBjM0JoZEdOb1pXUXVJRUo1WEc0Z0tpQWdJQ0FnWkdWbVlYVnNkQ3dnZEdobElHeHBjM1JsYm1WeUlHbHpJSE5wYlhCc2VTQnBiblp2YTJWa0xseHVJQ3BjYmlBcUlFVmhZMmdnY0d4MVoybHVJSFJvWVhRZ2FYTWdhVzVxWldOMFpXUWdhVzUwYnlCZ1JYWmxiblJ6VUd4MVoybHVTSFZpWUNCcGN5QnBiVzFsWkdsaGRHVnNlU0J2Y0dWeVlXSnNaUzVjYmlBcVhHNGdLaUJBY0hWaWJHbGpYRzRnS2k5Y2JuWmhjaUJGZG1WdWRGQnNkV2RwYmtoMVlpQTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dUV1YwYUc5a2N5Qm1iM0lnYVc1cVpXTjBhVzVuSUdSbGNHVnVaR1Z1WTJsbGN5NWNiaUFnSUNvdlhHNGdJR2x1YW1WamRHbHZiam9nZTF4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUVsdWFtVmpkR1ZrVFc5MWJuUmNiaUFnSUNBZ0tpQkFjSFZpYkdsalhHNGdJQ0FnSUNvdlhHNGdJQ0FnYVc1cVpXTjBUVzkxYm5RNklFVjJaVzUwVUd4MVoybHVWWFJwYkhNdWFXNXFaV04wYVc5dUxtbHVhbVZqZEUxdmRXNTBMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRWx1YW1WamRHVmtTVzV6ZEdGdVkyVklZVzVrYkdWY2JpQWdJQ0FnS2lCQWNIVmliR2xqWEc0Z0lDQWdJQ292WEc0Z0lDQWdhVzVxWldOMFNXNXpkR0Z1WTJWSVlXNWtiR1U2SUdaMWJtTjBhVzl1SUNoSmJtcGxZM1JsWkVsdWMzUmhibU5sU0dGdVpHeGxLU0I3WEc0Z0lDQWdJQ0JKYm5OMFlXNWpaVWhoYm1Sc1pTQTlJRWx1YW1WamRHVmtTVzV6ZEdGdVkyVklZVzVrYkdVN1hHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCMllXeHBaR0YwWlVsdWMzUmhibU5sU0dGdVpHeGxLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYmx4dUlDQWdJR2RsZEVsdWMzUmhibU5sU0dGdVpHeGxPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCMllXeHBaR0YwWlVsdWMzUmhibU5sU0dGdVpHeGxLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdTVzV6ZEdGdVkyVklZVzVrYkdVN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1lYSnlZWGw5SUVsdWFtVmpkR1ZrUlhabGJuUlFiSFZuYVc1UGNtUmxjbHh1SUNBZ0lDQXFJRUJ3ZFdKc2FXTmNiaUFnSUNBZ0tpOWNiaUFnSUNCcGJtcGxZM1JGZG1WdWRGQnNkV2RwYms5eVpHVnlPaUJGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG1sdWFtVmpkRVYyWlc1MFVHeDFaMmx1VDNKa1pYSXNYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdhVzVxWldOMFpXUk9ZVzFsYzFSdlVHeDFaMmx1Y3lCTllYQWdabkp2YlNCdVlXMWxjeUIwYnlCd2JIVm5hVzRnYlc5a2RXeGxjeTVjYmlBZ0lDQWdLaTljYmlBZ0lDQnBibXBsWTNSRmRtVnVkRkJzZFdkcGJuTkNlVTVoYldVNklFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua3VhVzVxWldOMFJYWmxiblJRYkhWbmFXNXpRbmxPWVcxbFhHNWNiaUFnZlN4Y2JseHVJQ0JsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTTZJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1WlhabGJuUk9ZVzFsUkdsemNHRjBZMmhEYjI1bWFXZHpMRnh1WEc0Z0lISmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6T2lCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUZEc5eVpYTWdZR3hwYzNSbGJtVnlZQ0JoZENCZ2JHbHpkR1Z1WlhKQ1lXNXJXM0psWjJsemRISmhkR2x2Yms1aGJXVmRXMmxrWFdBdUlFbHpJR2xrWlcxd2IzUmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQkpSQ0J2WmlCMGFHVWdSRTlOSUdWc1pXMWxiblF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnlaV2RwYzNSeVlYUnBiMjVPWVcxbElFNWhiV1VnYjJZZ2JHbHpkR1Z1WlhJZ0tHVXVaeTRnWUc5dVEyeHBZMnRnS1M1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvWm5WdVkzUnBiMjU5SUd4cGMzUmxibVZ5SUZSb1pTQmpZV3hzWW1GamF5QjBieUJ6ZEc5eVpTNWNiaUFnSUNvdlhHNGdJSEIxZEV4cGMzUmxibVZ5T2lCbWRXNWpkR2x2YmlBb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXNJR3hwYzNSbGJtVnlLU0I3WEc0Z0lDQWdJU2gwZVhCbGIyWWdiR2x6ZEdWdVpYSWdQVDA5SUNkbWRXNWpkR2x2YmljcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWNGNHVmpkR1ZrSUNWeklHeHBjM1JsYm1WeUlIUnZJR0psSUdFZ1puVnVZM1JwYjI0c0lHbHVjM1JsWVdRZ1oyOTBJSFI1Y0dVZ0pYTW5MQ0J5WldkcGMzUnlZWFJwYjI1T1lXMWxMQ0IwZVhCbGIyWWdiR2x6ZEdWdVpYSXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhaaGNpQmlZVzVyUm05eVVtVm5hWE4wY21GMGFXOXVUbUZ0WlNBOUlHeHBjM1JsYm1WeVFtRnVhMXR5WldkcGMzUnlZWFJwYjI1T1lXMWxYU0I4ZkNBb2JHbHpkR1Z1WlhKQ1lXNXJXM0psWjJsemRISmhkR2x2Yms1aGJXVmRJRDBnZTMwcE8xeHVJQ0FnSUdKaGJtdEdiM0pTWldkcGMzUnlZWFJwYjI1T1lXMWxXMmxrWFNBOUlHeHBjM1JsYm1WeU8xeHVYRzRnSUNBZ2RtRnlJRkJzZFdkcGJrMXZaSFZzWlNBOUlFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua3VjbVZuYVhOMGNtRjBhVzl1VG1GdFpVMXZaSFZzWlhOYmNtVm5hWE4wY21GMGFXOXVUbUZ0WlYwN1hHNGdJQ0FnYVdZZ0tGQnNkV2RwYmsxdlpIVnNaU0FtSmlCUWJIVm5hVzVOYjJSMWJHVXVaR2xrVUhWMFRHbHpkR1Z1WlhJcElIdGNiaUFnSUNBZ0lGQnNkV2RwYmsxdlpIVnNaUzVrYVdSUWRYUk1hWE4wWlc1bGNpaHBaQ3dnY21WbmFYTjBjbUYwYVc5dVRtRnRaU3dnYkdsemRHVnVaWElwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdsa0lFbEVJRzltSUhSb1pTQkVUMDBnWld4bGJXVnVkQzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISmxaMmx6ZEhKaGRHbHZiazVoYldVZ1RtRnRaU0J2WmlCc2FYTjBaVzVsY2lBb1pTNW5MaUJnYjI1RGJHbGphMkFwTGx4dUlDQWdLaUJBY21WMGRYSnVJSHMvWm5WdVkzUnBiMjU5SUZSb1pTQnpkRzl5WldRZ1kyRnNiR0poWTJzdVhHNGdJQ0FxTDF4dUlDQm5aWFJNYVhOMFpXNWxjam9nWm5WdVkzUnBiMjRnS0dsa0xDQnlaV2RwYzNSeVlYUnBiMjVPWVcxbEtTQjdYRzRnSUNBZ2RtRnlJR0poYm10R2IzSlNaV2RwYzNSeVlYUnBiMjVPWVcxbElEMGdiR2x6ZEdWdVpYSkNZVzVyVzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkTzF4dUlDQWdJSEpsZEhWeWJpQmlZVzVyUm05eVVtVm5hWE4wY21GMGFXOXVUbUZ0WlNBbUppQmlZVzVyUm05eVVtVm5hWE4wY21GMGFXOXVUbUZ0WlZ0cFpGMDdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVSbGJHVjBaWE1nWVNCc2FYTjBaVzVsY2lCbWNtOXRJSFJvWlNCeVpXZHBjM1J5WVhScGIyNGdZbUZ1YXk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRWxFSUc5bUlIUm9aU0JFVDAwZ1pXeGxiV1Z1ZEM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEpsWjJsemRISmhkR2x2Yms1aGJXVWdUbUZ0WlNCdlppQnNhWE4wWlc1bGNpQW9aUzVuTGlCZ2IyNURiR2xqYTJBcExseHVJQ0FnS2k5Y2JpQWdaR1ZzWlhSbFRHbHpkR1Z1WlhJNklHWjFibU4wYVc5dUlDaHBaQ3dnY21WbmFYTjBjbUYwYVc5dVRtRnRaU2tnZTF4dUlDQWdJSFpoY2lCUWJIVm5hVzVOYjJSMWJHVWdQU0JGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG5KbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpXM0psWjJsemRISmhkR2x2Yms1aGJXVmRPMXh1SUNBZ0lHbG1JQ2hRYkhWbmFXNU5iMlIxYkdVZ0ppWWdVR3gxWjJsdVRXOWtkV3hsTG5kcGJHeEVaV3hsZEdWTWFYTjBaVzVsY2lrZ2UxeHVJQ0FnSUNBZ1VHeDFaMmx1VFc5a2RXeGxMbmRwYkd4RVpXeGxkR1ZNYVhOMFpXNWxjaWhwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlHSmhibXRHYjNKU1pXZHBjM1J5WVhScGIyNU9ZVzFsSUQwZ2JHbHpkR1Z1WlhKQ1lXNXJXM0psWjJsemRISmhkR2x2Yms1aGJXVmRPMXh1SUNBZ0lDOHZJRlJQUkU4NklGUm9hWE1nYzJodmRXeGtJRzVsZG1WeUlHSmxJRzUxYkd3Z0xTMGdkMmhsYmlCcGN5QnBkRDljYmlBZ0lDQnBaaUFvWW1GdWEwWnZjbEpsWjJsemRISmhkR2x2Yms1aGJXVXBJSHRjYmlBZ0lDQWdJR1JsYkdWMFpTQmlZVzVyUm05eVVtVm5hWE4wY21GMGFXOXVUbUZ0WlZ0cFpGMDdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFWld4bGRHVnpJR0ZzYkNCc2FYTjBaVzVsY25NZ1ptOXlJSFJvWlNCRVQwMGdaV3hsYldWdWRDQjNhWFJvSUhSb1pTQnpkWEJ3YkdsbFpDQkpSQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdsa0lFbEVJRzltSUhSb1pTQkVUMDBnWld4bGJXVnVkQzVjYmlBZ0lDb3ZYRzRnSUdSbGJHVjBaVUZzYkV4cGMzUmxibVZ5Y3pvZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdabTl5SUNoMllYSWdjbVZuYVhOMGNtRjBhVzl1VG1GdFpTQnBiaUJzYVhOMFpXNWxja0poYm1zcElIdGNiaUFnSUNBZ0lHbG1JQ2doYkdsemRHVnVaWEpDWVc1clczSmxaMmx6ZEhKaGRHbHZiazVoYldWZFcybGtYU2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2RtRnlJRkJzZFdkcGJrMXZaSFZzWlNBOUlFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua3VjbVZuYVhOMGNtRjBhVzl1VG1GdFpVMXZaSFZzWlhOYmNtVm5hWE4wY21GMGFXOXVUbUZ0WlYwN1hHNGdJQ0FnSUNCcFppQW9VR3gxWjJsdVRXOWtkV3hsSUNZbUlGQnNkV2RwYmsxdlpIVnNaUzUzYVd4c1JHVnNaWFJsVEdsemRHVnVaWElwSUh0Y2JpQWdJQ0FnSUNBZ1VHeDFaMmx1VFc5a2RXeGxMbmRwYkd4RVpXeGxkR1ZNYVhOMFpXNWxjaWhwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHUmxiR1YwWlNCc2FYTjBaVzVsY2tKaGJtdGJjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMWJhV1JkTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FXeHNiM2R6SUhKbFoybHpkR1Z5WldRZ2NHeDFaMmx1Y3lCaGJpQnZjSEJ2Y25SMWJtbDBlU0IwYnlCbGVIUnlZV04wSUdWMlpXNTBjeUJtY205dElIUnZjQzFzWlhabGJGeHVJQ0FnS2lCdVlYUnBkbVVnWW5KdmQzTmxjaUJsZG1WdWRITXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IwYjNCTVpYWmxiRlI1Y0dVZ1VtVmpiM0prSUdaeWIyMGdZRVYyWlc1MFEyOXVjM1JoYm5SellDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZkbVZ1ZEZSaGNtZGxkSDBnZEc5d1RHVjJaV3hVWVhKblpYUWdWR2hsSUd4cGMzUmxibWx1WnlCamIyMXdiMjVsYm5RZ2NtOXZkQ0J1YjJSbExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEc5d1RHVjJaV3hVWVhKblpYUkpSQ0JKUkNCdlppQmdkRzl3VEdWMlpXeFVZWEpuWlhSZ0xseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1GMGFYWmxSWFpsYm5RZ1RtRjBhWFpsSUdKeWIzZHpaWElnWlhabGJuUXVYRzRnSUNBcUlFQnlaWFIxY200Z2V5cDlJRUZ1SUdGalkzVnRkV3hoZEdsdmJpQnZaaUJ6ZVc1MGFHVjBhV01nWlhabGJuUnpMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Y0ZEhKaFkzUkZkbVZ1ZEhNNklHWjFibU4wYVc5dUlDaDBiM0JNWlhabGJGUjVjR1VzSUhSdmNFeGxkbVZzVkdGeVoyVjBMQ0IwYjNCTVpYWmxiRlJoY21kbGRFbEVMQ0J1WVhScGRtVkZkbVZ1ZEN3Z2JtRjBhWFpsUlhabGJuUlVZWEpuWlhRcElIdGNiaUFnSUNCMllYSWdaWFpsYm5Sek8xeHVJQ0FnSUhaaGNpQndiSFZuYVc1eklEMGdSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzV3YkhWbmFXNXpPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2djR3gxWjJsdWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnTHk4Z1RtOTBJR1YyWlhKNUlIQnNkV2RwYmlCcGJpQjBhR1VnYjNKa1pYSnBibWNnYldGNUlHSmxJR3h2WVdSbFpDQmhkQ0J5ZFc1MGFXMWxMbHh1SUNBZ0lDQWdkbUZ5SUhCdmMzTnBZbXhsVUd4MVoybHVJRDBnY0d4MVoybHVjMXRwWFR0Y2JpQWdJQ0FnSUdsbUlDaHdiM056YVdKc1pWQnNkV2RwYmlrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWlhoMGNtRmpkR1ZrUlhabGJuUnpJRDBnY0c5emMybGliR1ZRYkhWbmFXNHVaWGgwY21GamRFVjJaVzUwY3loMGIzQk1aWFpsYkZSNWNHVXNJSFJ2Y0V4bGRtVnNWR0Z5WjJWMExDQjBiM0JNWlhabGJGUmhjbWRsZEVsRUxDQnVZWFJwZG1WRmRtVnVkQ3dnYm1GMGFYWmxSWFpsYm5SVVlYSm5aWFFwTzF4dUlDQWdJQ0FnSUNCcFppQW9aWGgwY21GamRHVmtSWFpsYm5SektTQjdYRzRnSUNBZ0lDQWdJQ0FnWlhabGJuUnpJRDBnWVdOamRXMTFiR0YwWlVsdWRHOG9aWFpsYm5SekxDQmxlSFJ5WVdOMFpXUkZkbVZ1ZEhNcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJsZG1WdWRITTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVWdWNYVmxkV1Z6SUdFZ2MzbHVkR2hsZEdsaklHVjJaVzUwSUhSb1lYUWdjMmh2ZFd4a0lHSmxJR1JwYzNCaGRHTm9aV1FnZDJobGJseHVJQ0FnS2lCZ2NISnZZMlZ6YzBWMlpXNTBVWFZsZFdWZ0lHbHpJR2x1ZG05clpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ1pYWmxiblJ6SUVGdUlHRmpZM1Z0ZFd4aGRHbHZiaUJ2WmlCemVXNTBhR1YwYVdNZ1pYWmxiblJ6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZGZG1WdWRITTZJR1oxYm1OMGFXOXVJQ2hsZG1WdWRITXBJSHRjYmlBZ0lDQnBaaUFvWlhabGJuUnpLU0I3WEc0Z0lDQWdJQ0JsZG1WdWRGRjFaWFZsSUQwZ1lXTmpkVzExYkdGMFpVbHVkRzhvWlhabGJuUlJkV1YxWlN3Z1pYWmxiblJ6S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUnBjM0JoZEdOb1pYTWdZV3hzSUhONWJuUm9aWFJwWXlCbGRtVnVkSE1nYjI0Z2RHaGxJR1YyWlc1MElIRjFaWFZsTGx4dUlDQWdLbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJSEJ5YjJObGMzTkZkbVZ1ZEZGMVpYVmxPaUJtZFc1amRHbHZiaUFvYzJsdGRXeGhkR1ZrS1NCN1hHNGdJQ0FnTHk4Z1UyVjBJR0JsZG1WdWRGRjFaWFZsWUNCMGJ5QnVkV3hzSUdKbFptOXlaU0J3Y205alpYTnphVzVuSUdsMElITnZJSFJvWVhRZ2QyVWdZMkZ1SUhSbGJHd2dhV1lnYlc5eVpWeHVJQ0FnSUM4dklHVjJaVzUwY3lCblpYUWdaVzV4ZFdWMVpXUWdkMmhwYkdVZ2NISnZZMlZ6YzJsdVp5NWNiaUFnSUNCMllYSWdjSEp2WTJWemMybHVaMFYyWlc1MFVYVmxkV1VnUFNCbGRtVnVkRkYxWlhWbE8xeHVJQ0FnSUdWMlpXNTBVWFZsZFdVZ1BTQnVkV3hzTzF4dUlDQWdJR2xtSUNoemFXMTFiR0YwWldRcElIdGNiaUFnSUNBZ0lHWnZja1ZoWTJoQlkyTjFiWFZzWVhSbFpDaHdjbTlqWlhOemFXNW5SWFpsYm5SUmRXVjFaU3dnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5CYm1SU1pXeGxZWE5sVTJsdGRXeGhkR1ZrS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdabTl5UldGamFFRmpZM1Z0ZFd4aGRHVmtLSEJ5YjJObGMzTnBibWRGZG1WdWRGRjFaWFZsTENCbGVHVmpkWFJsUkdsemNHRjBZMmhsYzBGdVpGSmxiR1ZoYzJWVWIzQk1aWFpsYkNrN1hHNGdJQ0FnZlZ4dUlDQWdJQ0VoWlhabGJuUlJkV1YxWlNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R3Y205alpYTnpSWFpsYm5SUmRXVjFaU2dwT2lCQlpHUnBkR2x2Ym1Gc0lHVjJaVzUwY3lCM1pYSmxJR1Z1Y1hWbGRXVmtJSGRvYVd4bElIQnliMk5sYzNOcGJtY2dKeUFySUNkaGJpQmxkbVZ1ZENCeGRXVjFaUzRnVTNWd2NHOXlkQ0JtYjNJZ2RHaHBjeUJvWVhNZ2JtOTBJSGxsZENCaVpXVnVJR2x0Y0d4bGJXVnVkR1ZrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQXZMeUJVYUdseklIZHZkV3hrSUdKbElHRWdaMjl2WkNCMGFXMWxJSFJ2SUhKbGRHaHliM2NnYVdZZ1lXNTVJRzltSUhSb1pTQmxkbVZ1ZENCb1lXNWtiR1Z5Y3lCMGFISmxkeTVjYmlBZ0lDQlNaV0ZqZEVWeWNtOXlWWFJwYkhNdWNtVjBhSEp2ZDBOaGRXZG9kRVZ5Y205eUtDazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pYTmxJR0Z5WlNCdVpXVmtaV1FnWm05eUlIUmxjM1J6SUc5dWJIa3VJRVJ2SUc1dmRDQjFjMlVoWEc0Z0lDQXFMMXh1SUNCZlgzQjFjbWRsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2JHbHpkR1Z1WlhKQ1lXNXJJRDBnZTMwN1hHNGdJSDBzWEc1Y2JpQWdYMTluWlhSTWFYTjBaVzVsY2tKaGJtczZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiR2x6ZEdWdVpYSkNZVzVyTzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdSWFpsYm5SUWJIVm5hVzVJZFdJN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV2ZW50UGx1Z2luUmVnaXN0cnlcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVudCBwbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG4gKi9cbnZhciBuYW1lc1RvUGx1Z2lucyA9IHt9O1xuXG4vKipcbiAqIFJlY29tcHV0ZXMgdGhlIHBsdWdpbiBsaXN0IHVzaW5nIHRoZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG4gIGlmICghRXZlbnRQbHVnaW5PcmRlcikge1xuICAgIC8vIFdhaXQgdW50aWwgYW4gYEV2ZW50UGx1Z2luT3JkZXJgIGlzIGluamVjdGVkLlxuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIFBsdWdpbk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgIHZhciBwbHVnaW5JbmRleCA9IEV2ZW50UGx1Z2luT3JkZXIuaW5kZXhPZihwbHVnaW5OYW1lKTtcbiAgICAhKHBsdWdpbkluZGV4ID4gLTEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiAnICsgJ3RoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIGlmIChFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgIVBsdWdpbk1vZHVsZS5leHRyYWN0RXZlbnRzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4gYGV4dHJhY3RFdmVudHNgICcgKyAnbWV0aG9kLCBidXQgYCVzYCBkb2VzIG5vdC4nLCBwbHVnaW5OYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IFBsdWdpbk1vZHVsZTtcbiAgICB2YXIgcHVibGlzaGVkRXZlbnRzID0gUGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7XG4gICAgZm9yICh2YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hlZEV2ZW50cykge1xuICAgICAgIXB1Ymxpc2hFdmVudEZvclBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgUGx1Z2luTW9kdWxlLCBldmVudE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdpbiBgJXNgLicsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhbiBldmVudCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBzdXBwbGllZCBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIERpc3BhdGNoIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBldmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwdWJsaXNoRXZlbnRGb3JQbHVnaW4oZGlzcGF0Y2hDb25maWcsIFBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgJyArICdldmVudCBuYW1lLCBgJXNgLicsIGV2ZW50TmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdID0gZGlzcGF0Y2hDb25maWc7XG5cbiAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7XG4gIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIGZvciAodmFyIHBoYXNlTmFtZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlTmFtZSkpIHtcbiAgICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUgPSBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZU5hbWVdO1xuICAgICAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShwaGFzZWRSZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhIHJlZ2lzdHJhdGlvbiBuYW1lIHRoYXQgaXMgdXNlZCB0byBpZGVudGlmeSBkaXNwYXRjaGVkIGV2ZW50cyBhbmRcbiAqIGNhbiBiZSB1c2VkIHdpdGggYEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyYCB0byByZWdpc3RlciBsaXN0ZW5lcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgUmVnaXN0cmF0aW9uIG5hbWUgdG8gYWRkLlxuICogQHBhcmFtIHtvYmplY3R9IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShyZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lICcgKyAncmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9uTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gUGx1Z2luTW9kdWxlO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBQbHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tldmVudE5hbWVdLmRlcGVuZGVuY2llcztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy5cbiAqXG4gKiBAc2VlIHtFdmVudFBsdWdpbkh1Yn1cbiAqL1xudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSB7XG5cbiAgLyoqXG4gICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLlxuICAgKi9cbiAgcGx1Z2luczogW10sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3BhdGNoIGNvbmZpZ1xuICAgKi9cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGVcbiAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWVcbiAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBJbmplY3RzIGFuIG9yZGVyaW5nIG9mIHBsdWdpbnMgKGJ5IHBsdWdpbiBuYW1lKS4gVGhpcyBhbGxvd3MgdGhlIG9yZGVyaW5nXG4gICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGluamVjdGlvbiBvZiB0aGUgYWN0dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuICAgKiBhbHdheXMgZGV0ZXJtaW5pc3RpYyByZWdhcmRsZXNzIG9mIHBhY2thZ2luZywgb24tdGhlLWZseSBpbmplY3Rpb24sIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcn1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IGZ1bmN0aW9uIChJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAhIUV2ZW50UGx1Z2luT3JkZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuICcgKyAnb25jZS4gWW91IGFyZSBsaWtlbHkgdHJ5aW5nIHRvIGxvYWQgbW9yZSB0aGFuIG9uZSBjb3B5IG9mIFJlYWN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28gaXQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IG11dGF0ZWQuXG4gICAgRXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKEluamVjdGVkRXZlbnRQbHVnaW5PcmRlcik7XG4gICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgfSxcblxuICAvKipcbiAgICogSW5qZWN0cyBwbHVnaW5zIHRvIGJlIHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1lcyBtdXN0IGJlXG4gICAqIGluIHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAuXG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0aWFsaXphdGlvbiBvciBvbi10aGUtZmx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1bmN0aW9uIChpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIGlzT3JkZXJpbmdEaXJ0eSA9IGZhbHNlO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICBpZiAoIW5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpIHx8IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdICE9PSBQbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lucyAnICsgJ3VzaW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA9IFBsdWdpbk1vZHVsZTtcbiAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkge1xuICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnO1xuICAgIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsO1xuICAgIH1cbiAgICBmb3IgKHZhciBwaGFzZSBpbiBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgaWYgKCFkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZV1dO1xuICAgICAgaWYgKFBsdWdpbk1vZHVsZSkge1xuICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Jlc2V0RXZlbnRQbHVnaW5zOiBmdW5jdGlvbiAoKSB7XG4gICAgRXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG4gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYgKG5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zLmxlbmd0aCA9IDA7XG5cbiAgICB2YXIgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7XG4gICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncykge1xuICAgICAgaWYgKGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO1xuICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMpIHtcbiAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5SZWdpc3RyeTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOUZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25sY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dTVzVxWldOMFlXSnNaU0J2Y21SbGNtbHVaeUJ2WmlCbGRtVnVkQ0J3YkhWbmFXNXpMbHh1SUNvdlhHNTJZWElnUlhabGJuUlFiSFZuYVc1UGNtUmxjaUE5SUc1MWJHdzdYRzVjYmk4cUtseHVJQ29nU1c1cVpXTjBZV0pzWlNCdFlYQndhVzVuSUdaeWIyMGdibUZ0WlhNZ2RHOGdaWFpsYm5RZ2NHeDFaMmx1SUcxdlpIVnNaWE11WEc0Z0tpOWNiblpoY2lCdVlXMWxjMVJ2VUd4MVoybHVjeUE5SUh0OU8xeHVYRzR2S2lwY2JpQXFJRkpsWTI5dGNIVjBaWE1nZEdobElIQnNkV2RwYmlCc2FYTjBJSFZ6YVc1bklIUm9aU0JwYm1wbFkzUmxaQ0J3YkhWbmFXNXpJR0Z1WkNCd2JIVm5hVzRnYjNKa1pYSnBibWN1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdjbVZqYjIxd2RYUmxVR3gxWjJsdVQzSmtaWEpwYm1jb0tTQjdYRzRnSUdsbUlDZ2hSWFpsYm5SUWJIVm5hVzVQY21SbGNpa2dlMXh1SUNBZ0lDOHZJRmRoYVhRZ2RXNTBhV3dnWVc0Z1lFVjJaVzUwVUd4MVoybHVUM0prWlhKZ0lHbHpJR2x1YW1WamRHVmtMbHh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCbWIzSWdLSFpoY2lCd2JIVm5hVzVPWVcxbElHbHVJRzVoYldWelZHOVFiSFZuYVc1ektTQjdYRzRnSUNBZ2RtRnlJRkJzZFdkcGJrMXZaSFZzWlNBOUlHNWhiV1Z6Vkc5UWJIVm5hVzV6VzNCc2RXZHBiazVoYldWZE8xeHVJQ0FnSUhaaGNpQndiSFZuYVc1SmJtUmxlQ0E5SUVWMlpXNTBVR3gxWjJsdVQzSmtaWEl1YVc1a1pYaFBaaWh3YkhWbmFXNU9ZVzFsS1R0Y2JpQWdJQ0FoS0hCc2RXZHBia2x1WkdWNElENGdMVEVwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbms2SUVOaGJtNXZkQ0JwYm1wbFkzUWdaWFpsYm5RZ2NHeDFaMmx1Y3lCMGFHRjBJR1J2SUc1dmRDQmxlR2x6ZENCcGJpQW5JQ3NnSjNSb1pTQndiSFZuYVc0Z2IzSmtaWEpwYm1jc0lHQWxjMkF1Snl3Z2NHeDFaMmx1VG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJR2xtSUNoRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuQnNkV2RwYm5OYmNHeDFaMmx1U1c1a1pYaGRLU0I3WEc0Z0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQjlYRzRnSUNBZ0lWQnNkV2RwYmsxdlpIVnNaUzVsZUhSeVlXTjBSWFpsYm5SeklEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rNklFVjJaVzUwSUhCc2RXZHBibk1nYlhWemRDQnBiWEJzWlcxbGJuUWdZVzRnWUdWNGRISmhZM1JGZG1WdWRITmdJQ2NnS3lBbmJXVjBhRzlrTENCaWRYUWdZQ1Z6WUNCa2IyVnpJRzV2ZEM0bkxDQndiSFZuYVc1T1lXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1d2JIVm5hVzV6VzNCc2RXZHBia2x1WkdWNFhTQTlJRkJzZFdkcGJrMXZaSFZzWlR0Y2JpQWdJQ0IyWVhJZ2NIVmliR2x6YUdWa1JYWmxiblJ6SUQwZ1VHeDFaMmx1VFc5a2RXeGxMbVYyWlc1MFZIbHdaWE03WEc0Z0lDQWdabTl5SUNoMllYSWdaWFpsYm5ST1lXMWxJR2x1SUhCMVlteHBjMmhsWkVWMlpXNTBjeWtnZTF4dUlDQWdJQ0FnSVhCMVlteHBjMmhGZG1WdWRFWnZjbEJzZFdkcGJpaHdkV0pzYVhOb1pXUkZkbVZ1ZEhOYlpYWmxiblJPWVcxbFhTd2dVR3gxWjJsdVRXOWtkV3hsTENCbGRtVnVkRTVoYldVcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rNklFWmhhV3hsWkNCMGJ5QndkV0pzYVhOb0lHVjJaVzUwSUdBbGMyQWdabTl5SUhCc2RXZHBiaUJnSlhOZ0xpY3NJR1YyWlc1MFRtRnRaU3dnY0d4MVoybHVUbUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRkIxWW14cGMyaGxjeUJoYmlCbGRtVnVkQ0J6YnlCMGFHRjBJR2wwSUdOaGJpQmlaU0JrYVhOd1lYUmphR1ZrSUdKNUlIUm9aU0J6ZFhCd2JHbGxaQ0J3YkhWbmFXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHUnBjM0JoZEdOb1EyOXVabWxuSUVScGMzQmhkR05vSUdOdmJtWnBaM1Z5WVhScGIyNGdabTl5SUhSb1pTQmxkbVZ1ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQlFiSFZuYVc1TmIyUjFiR1VnVUd4MVoybHVJSEIxWW14cGMyaHBibWNnZEdobElHVjJaVzUwTGx4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWSEoxWlNCcFppQjBhR1VnWlhabGJuUWdkMkZ6SUhOMVkyTmxjM05tZFd4c2VTQndkV0pzYVhOb1pXUXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJ3ZFdKc2FYTm9SWFpsYm5SR2IzSlFiSFZuYVc0b1pHbHpjR0YwWTJoRGIyNW1hV2NzSUZCc2RXZHBiazF2WkhWc1pTd2daWFpsYm5ST1lXMWxLU0I3WEc0Z0lDRWhSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzVsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb1pYWmxiblJPWVcxbEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmRtVnVkRkJzZFdkcGJraDFZam9nVFc5eVpTQjBhR0Z1SUc5dVpTQndiSFZuYVc0Z1lYUjBaVzF3ZEdWa0lIUnZJSEIxWW14cGMyZ2dkR2hsSUhOaGJXVWdKeUFySUNkbGRtVnVkQ0J1WVcxbExDQmdKWE5nTGljc0lHVjJaVzUwVG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbVYyWlc1MFRtRnRaVVJwYzNCaGRHTm9RMjl1Wm1sbmMxdGxkbVZ1ZEU1aGJXVmRJRDBnWkdsemNHRjBZMmhEYjI1bWFXYzdYRzVjYmlBZ2RtRnlJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWeklEMGdaR2x6Y0dGMFkyaERiMjVtYVdjdWNHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE03WEc0Z0lHbG1JQ2h3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5a2dlMXh1SUNBZ0lHWnZjaUFvZG1GeUlIQm9ZWE5sVG1GdFpTQnBiaUJ3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0hCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQm9ZWE5sVG1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1VnUFNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjMXR3YUdGelpVNWhiV1ZkTzF4dUlDQWdJQ0FnSUNCd2RXSnNhWE5vVW1WbmFYTjBjbUYwYVc5dVRtRnRaU2h3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbExDQlFiSFZuYVc1TmIyUjFiR1VzSUdWMlpXNTBUbUZ0WlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLR1JwYzNCaGRHTm9RMjl1Wm1sbkxuSmxaMmx6ZEhKaGRHbHZiazVoYldVcElIdGNiaUFnSUNCd2RXSnNhWE5vVW1WbmFYTjBjbUYwYVc5dVRtRnRaU2hrYVhOd1lYUmphRU52Ym1acFp5NXlaV2RwYzNSeVlYUnBiMjVPWVcxbExDQlFiSFZuYVc1TmIyUjFiR1VzSUdWMlpXNTBUbUZ0WlNrN1hHNGdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdaaGJITmxPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGQjFZbXhwYzJobGN5QmhJSEpsWjJsemRISmhkR2x2YmlCdVlXMWxJSFJvWVhRZ2FYTWdkWE5sWkNCMGJ5QnBaR1Z1ZEdsbWVTQmthWE53WVhSamFHVmtJR1YyWlc1MGN5QmhibVJjYmlBcUlHTmhiaUJpWlNCMWMyVmtJSGRwZEdnZ1lFVjJaVzUwVUd4MVoybHVTSFZpTG5CMWRFeHBjM1JsYm1WeVlDQjBieUJ5WldkcGMzUmxjaUJzYVhOMFpXNWxjbk11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEpsWjJsemRISmhkR2x2Yms1aGJXVWdVbVZuYVhOMGNtRjBhVzl1SUc1aGJXVWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRkJzZFdkcGJrMXZaSFZzWlNCUWJIVm5hVzRnY0hWaWJHbHphR2x1WnlCMGFHVWdaWFpsYm5RdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQndkV0pzYVhOb1VtVm5hWE4wY21GMGFXOXVUbUZ0WlNoeVpXZHBjM1J5WVhScGIyNU9ZVzFsTENCUWJIVm5hVzVOYjJSMWJHVXNJR1YyWlc1MFRtRnRaU2tnZTF4dUlDQWhJVVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTmJjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMGdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJYWmxiblJRYkhWbmFXNUlkV0k2SUUxdmNtVWdkR2hoYmlCdmJtVWdjR3gxWjJsdUlHRjBkR1Z0Y0hSbFpDQjBieUJ3ZFdKc2FYTm9JSFJvWlNCellXMWxJQ2NnS3lBbmNtVm5hWE4wY21GMGFXOXVJRzVoYldVc0lHQWxjMkF1Snl3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6VzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkSUQwZ1VHeDFaMmx1VFc5a2RXeGxPMXh1SUNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWRVpYQmxibVJsYm1OcFpYTmJjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMGdQU0JRYkhWbmFXNU5iMlIxYkdVdVpYWmxiblJVZVhCbGMxdGxkbVZ1ZEU1aGJXVmRMbVJsY0dWdVpHVnVZMmxsY3p0Y2JuMWNibHh1THlvcVhHNGdLaUJTWldkcGMzUmxjbk1nY0d4MVoybHVjeUJ6YnlCMGFHRjBJSFJvWlhrZ1kyRnVJR1Y0ZEhKaFkzUWdZVzVrSUdScGMzQmhkR05vSUdWMlpXNTBjeTVjYmlBcVhHNGdLaUJBYzJWbElIdEZkbVZ1ZEZCc2RXZHBia2gxWW4xY2JpQXFMMXh1ZG1GeUlFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua2dQU0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTl5WkdWeVpXUWdiR2x6ZENCdlppQnBibXBsWTNSbFpDQndiSFZuYVc1ekxseHVJQ0FnS2k5Y2JpQWdjR3gxWjJsdWN6b2dXMTBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoY0hCcGJtY2dabkp2YlNCbGRtVnVkQ0J1WVcxbElIUnZJR1JwYzNCaGRHTm9JR052Ym1acFoxeHVJQ0FnS2k5Y2JpQWdaWFpsYm5ST1lXMWxSR2x6Y0dGMFkyaERiMjVtYVdkek9pQjdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dUV0Z3Y0dsdVp5Qm1jbTl0SUhKbFoybHpkSEpoZEdsdmJpQnVZVzFsSUhSdklIQnNkV2RwYmlCdGIyUjFiR1ZjYmlBZ0lDb3ZYRzRnSUhKbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpPaUI3ZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVFdGd2NHbHVaeUJtY205dElISmxaMmx6ZEhKaGRHbHZiaUJ1WVcxbElIUnZJR1YyWlc1MElHNWhiV1ZjYmlBZ0lDb3ZYRzRnSUhKbFoybHpkSEpoZEdsdmJrNWhiV1ZFWlhCbGJtUmxibU5wWlhNNklIdDlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibXBsWTNSeklHRnVJRzl5WkdWeWFXNW5JRzltSUhCc2RXZHBibk1nS0dKNUlIQnNkV2RwYmlCdVlXMWxLUzRnVkdocGN5QmhiR3h2ZDNNZ2RHaGxJRzl5WkdWeWFXNW5YRzRnSUNBcUlIUnZJR0psSUdSbFkyOTFjR3hsWkNCbWNtOXRJR2x1YW1WamRHbHZiaUJ2WmlCMGFHVWdZV04wZFdGc0lIQnNkV2RwYm5NZ2MyOGdkR2hoZENCdmNtUmxjbWx1WnlCcGMxeHVJQ0FnS2lCaGJIZGhlWE1nWkdWMFpYSnRhVzVwYzNScFl5QnlaV2RoY21Sc1pYTnpJRzltSUhCaFkydGhaMmx1Wnl3Z2IyNHRkR2hsTFdac2VTQnBibXBsWTNScGIyNHNJR1YwWXk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdGhjbkpoZVgwZ1NXNXFaV04wWldSRmRtVnVkRkJzZFdkcGJrOXlaR1Z5WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpQkFjMlZsSUh0RmRtVnVkRkJzZFdkcGJraDFZaTVwYm1wbFkzUnBiMjR1YVc1cVpXTjBSWFpsYm5SUWJIVm5hVzVQY21SbGNuMWNiaUFnSUNvdlhHNGdJR2x1YW1WamRFVjJaVzUwVUd4MVoybHVUM0prWlhJNklHWjFibU4wYVc5dUlDaEpibXBsWTNSbFpFVjJaVzUwVUd4MVoybHVUM0prWlhJcElIdGNiaUFnSUNBaElVVjJaVzUwVUd4MVoybHVUM0prWlhJZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVRvZ1EyRnVibTkwSUdsdWFtVmpkQ0JsZG1WdWRDQndiSFZuYVc0Z2IzSmtaWEpwYm1jZ2JXOXlaU0IwYUdGdUlDY2dLeUFuYjI1alpTNGdXVzkxSUdGeVpTQnNhV3RsYkhrZ2RISjVhVzVuSUhSdklHeHZZV1FnYlc5eVpTQjBhR0Z1SUc5dVpTQmpiM0I1SUc5bUlGSmxZV04wTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQXZMeUJEYkc5dVpTQjBhR1VnYjNKa1pYSnBibWNnYzI4Z2FYUWdZMkZ1Ym05MElHSmxJR1I1Ym1GdGFXTmhiR3g1SUcxMWRHRjBaV1F1WEc0Z0lDQWdSWFpsYm5SUWJIVm5hVzVQY21SbGNpQTlJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLRWx1YW1WamRHVmtSWFpsYm5SUWJIVm5hVzVQY21SbGNpazdYRzRnSUNBZ2NtVmpiMjF3ZFhSbFVHeDFaMmx1VDNKa1pYSnBibWNvS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzVxWldOMGN5QndiSFZuYVc1eklIUnZJR0psSUhWelpXUWdZbmtnWUVWMlpXNTBVR3gxWjJsdVNIVmlZQzRnVkdobElIQnNkV2RwYmlCdVlXMWxjeUJ0ZFhOMElHSmxYRzRnSUNBcUlHbHVJSFJvWlNCdmNtUmxjbWx1WnlCcGJtcGxZM1JsWkNCaWVTQmdhVzVxWldOMFJYWmxiblJRYkhWbmFXNVBjbVJsY21BdVhHNGdJQ0FxWEc0Z0lDQXFJRkJzZFdkcGJuTWdZMkZ1SUdKbElHbHVhbVZqZEdWa0lHRnpJSEJoY25RZ2IyWWdjR0ZuWlNCcGJtbDBhV0ZzYVhwaGRHbHZiaUJ2Y2lCdmJpMTBhR1V0Wm14NUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdhVzVxWldOMFpXUk9ZVzFsYzFSdlVHeDFaMmx1Y3lCTllYQWdabkp2YlNCdVlXMWxjeUIwYnlCd2JIVm5hVzRnYlc5a2RXeGxjeTVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUlFQnpaV1VnZTBWMlpXNTBVR3gxWjJsdVNIVmlMbWx1YW1WamRHbHZiaTVwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBibk5DZVU1aGJXVjlYRzRnSUNBcUwxeHVJQ0JwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBibk5DZVU1aGJXVTZJR1oxYm1OMGFXOXVJQ2hwYm1wbFkzUmxaRTVoYldWelZHOVFiSFZuYVc1ektTQjdYRzRnSUNBZ2RtRnlJR2x6VDNKa1pYSnBibWRFYVhKMGVTQTlJR1poYkhObE8xeHVJQ0FnSUdadmNpQW9kbUZ5SUhCc2RXZHBiazVoYldVZ2FXNGdhVzVxWldOMFpXUk9ZVzFsYzFSdlVHeDFaMmx1Y3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZwYm1wbFkzUmxaRTVoYldWelZHOVFiSFZuYVc1ekxtaGhjMDkzYmxCeWIzQmxjblI1S0hCc2RXZHBiazVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUZCc2RXZHBiazF2WkhWc1pTQTlJR2x1YW1WamRHVmtUbUZ0WlhOVWIxQnNkV2RwYm5OYmNHeDFaMmx1VG1GdFpWMDdYRzRnSUNBZ0lDQnBaaUFvSVc1aGJXVnpWRzlRYkhWbmFXNXpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnNkV2RwYms1aGJXVXBJSHg4SUc1aGJXVnpWRzlRYkhWbmFXNXpXM0JzZFdkcGJrNWhiV1ZkSUNFOVBTQlFiSFZuYVc1TmIyUjFiR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lTRnVZVzFsYzFSdlVHeDFaMmx1YzF0d2JIVm5hVzVPWVcxbFhTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNU9pQkRZVzV1YjNRZ2FXNXFaV04wSUhSM2J5QmthV1ptWlhKbGJuUWdaWFpsYm5RZ2NHeDFaMmx1Y3lBbklDc2dKM1Z6YVc1bklIUm9aU0J6WVcxbElHNWhiV1VzSUdBbGMyQXVKeXdnY0d4MVoybHVUbUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0J1WVcxbGMxUnZVR3gxWjJsdWMxdHdiSFZuYVc1T1lXMWxYU0E5SUZCc2RXZHBiazF2WkhWc1pUdGNiaUFnSUNBZ0lDQWdhWE5QY21SbGNtbHVaMFJwY25SNUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dselQzSmtaWEpwYm1kRWFYSjBlU2tnZTF4dUlDQWdJQ0FnY21WamIyMXdkWFJsVUd4MVoybHVUM0prWlhKcGJtY29LVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUV4dmIydHpJSFZ3SUhSb1pTQndiSFZuYVc0Z1ptOXlJSFJvWlNCemRYQndiR2xsWkNCbGRtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdWMlpXNTBJRUVnYzNsdWRHaGxkR2xqSUdWMlpXNTBMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIcy9iMkpxWldOMGZTQlVhR1VnY0d4MVoybHVJSFJvWVhRZ1kzSmxZWFJsWkNCMGFHVWdjM1Z3Y0d4cFpXUWdaWFpsYm5RdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1oyVjBVR3gxWjJsdVRXOWtkV3hsUm05eVJYWmxiblE2SUdaMWJtTjBhVzl1SUNobGRtVnVkQ2tnZTF4dUlDQWdJSFpoY2lCa2FYTndZWFJqYUVOdmJtWnBaeUE5SUdWMlpXNTBMbVJwYzNCaGRHTm9RMjl1Wm1sbk8xeHVJQ0FnSUdsbUlDaGthWE53WVhSamFFTnZibVpwWnk1eVpXZHBjM1J5WVhScGIyNU9ZVzFsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjMXRrYVhOd1lYUmphRU52Ym1acFp5NXlaV2RwYzNSeVlYUnBiMjVPWVcxbFhTQjhmQ0J1ZFd4c08xeHVJQ0FnSUgxY2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3YUdGelpTQnBiaUJrYVhOd1lYUmphRU52Ym1acFp5NXdhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZrYVhOd1lYUmphRU52Ym1acFp5NXdhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h3YUdGelpTa3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IyWVhJZ1VHeDFaMmx1VFc5a2RXeGxJRDBnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjMXRrYVhOd1lYUmphRU52Ym1acFp5NXdhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsYzF0d2FHRnpaVjFkTzF4dUlDQWdJQ0FnYVdZZ0tGQnNkV2RwYmsxdlpIVnNaU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVUd4MVoybHVUVzlrZFd4bE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSWGh3YjNObFpDQm1iM0lnZFc1cGRDQjBaWE4wYVc1bkxseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ1gzSmxjMlYwUlhabGJuUlFiSFZuYVc1ek9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdSWFpsYm5SUWJIVm5hVzVQY21SbGNpQTlJRzUxYkd3N1hHNGdJQ0FnWm05eUlDaDJZWElnY0d4MVoybHVUbUZ0WlNCcGJpQnVZVzFsYzFSdlVHeDFaMmx1Y3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLRzVoYldWelZHOVFiSFZuYVc1ekxtaGhjMDkzYmxCeWIzQmxjblI1S0hCc2RXZHBiazVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJR1JsYkdWMFpTQnVZVzFsYzFSdlVHeDFaMmx1YzF0d2JIVm5hVzVPWVcxbFhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1d2JIVm5hVzV6TG14bGJtZDBhQ0E5SURBN1hHNWNiaUFnSUNCMllYSWdaWFpsYm5ST1lXMWxSR2x6Y0dGMFkyaERiMjVtYVdkeklEMGdSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzVsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTTdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ1pYWmxiblJPWVcxbElHbHVJR1YyWlc1MFRtRnRaVVJwYzNCaGRHTm9RMjl1Wm1sbmN5a2dlMXh1SUNBZ0lDQWdhV1lnS0dWMlpXNTBUbUZ0WlVScGMzQmhkR05vUTI5dVptbG5jeTVvWVhOUGQyNVFjbTl3WlhKMGVTaGxkbVZ1ZEU1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUdSbGJHVjBaU0JsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTmJaWFpsYm5ST1lXMWxYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTWdQU0JGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG5KbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpPMXh1SUNBZ0lHWnZjaUFvZG1GeUlISmxaMmx6ZEhKaGRHbHZiazVoYldVZ2FXNGdjbVZuYVhOMGNtRjBhVzl1VG1GdFpVMXZaSFZzWlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2h5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNoeVpXZHBjM1J5WVhScGIyNU9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE5iY21WbmFYTjBjbUYwYVc5dVRtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVUc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudFBsdWdpblV0aWxzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOlxuICovXG5cbi8qKlxuICogLSBgTW91bnRgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgZG9tIElEcyBhbmRcbiAqICAgYWN0dWFsIG5vZGUgcmVmZXJlbmNlcy5cbiAqL1xudmFyIGluamVjdGlvbiA9IHtcbiAgTW91bnQ6IG51bGwsXG4gIGluamVjdE1vdW50OiBmdW5jdGlvbiAoSW5qZWN0ZWRNb3VudCkge1xuICAgIGluamVjdGlvbi5Nb3VudCA9IEluamVjdGVkTW91bnQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkTW91bnQgJiYgSW5qZWN0ZWRNb3VudC5nZXROb2RlICYmIEluamVjdGVkTW91bnQuZ2V0SUQsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RNb3VudCguLi4pOiBJbmplY3RlZCBNb3VudCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGUgb3IgZ2V0SUQuJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59O1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG5cbmZ1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlVXAgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoRW5kIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BUb3VjaENhbmNlbDtcbn1cblxuZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlTW92ZSB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wVG91Y2hNb3ZlO1xufVxuZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd24gfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoU3RhcnQ7XG59XG5cbnZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICAgIHZhciBkaXNwYXRjaElEcyA9IGV2ZW50Ll9kaXNwYXRjaElEcztcblxuICAgIHZhciBsaXN0ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpO1xuICAgIHZhciBpZHNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJRHMpO1xuICAgIHZhciBJRHNMZW4gPSBpZHNJc0FyciA/IGRpc3BhdGNoSURzLmxlbmd0aCA6IGRpc3BhdGNoSURzID8gMSA6IDA7XG4gICAgdmFyIGxpc3RlbmVyc0xlbiA9IGxpc3RlbmVyc0lzQXJyID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoIDogZGlzcGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDtcblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGlkc0lzQXJyID09PSBsaXN0ZW5lcnNJc0FyciAmJiBJRHNMZW4gPT09IGxpc3RlbmVyc0xlbiwgJ0V2ZW50UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLlxuICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcilcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxldmVsIGNhbGxiYWNrXG4gKiBAcGFyYW0ge3N0cmluZ30gZG9tSUQgRE9NIGlkIHRvIHBhc3MgdG8gdGhlIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVsYXRlZCwgbGlzdGVuZXIsIGRvbUlEKSB7XG4gIHZhciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBpbmplY3Rpb24uTW91bnQuZ2V0Tm9kZShkb21JRCk7XG4gIGlmIChzaW11bGF0ZWQpIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBldmVudCwgZG9tSUQpO1xuICB9IGVsc2Uge1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sodHlwZSwgbGlzdGVuZXIsIGV2ZW50LCBkb21JRCk7XG4gIH1cbiAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7XG59XG5cbi8qKlxuICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMuXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKSB7XG4gIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgdmFyIGRpc3BhdGNoSURzID0gZXZlbnQuX2Rpc3BhdGNoSURzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIExpc3RlbmVycyBhbmQgSURzIGFyZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLlxuICAgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzW2ldLCBkaXNwYXRjaElEc1tpXSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzLCBkaXNwYXRjaElEcyk7XG4gIH1cbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoSURzID0gbnVsbDtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcywgYnV0IHN0b3BzXG4gKiBhdCB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHJldHVybmluZyB0cnVlLCBhbmQgcmV0dXJucyB0aGF0IGlkLlxuICpcbiAqIEByZXR1cm4gez9zdHJpbmd9IGlkIG9mIHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gd2hvJ3MgbGlzdGVuZXIgcmV0dXJuc1xuICogdHJ1ZSwgb3IgbnVsbCBpZiBubyBsaXN0ZW5lciByZXR1cm5lZCB0cnVlLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaElEcyA9IGV2ZW50Ll9kaXNwYXRjaElEcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMgYW5kIElEcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cbiAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJRHNbaV0pKSB7XG4gICAgICAgIHJldHVybiBkaXNwYXRjaElEc1tpXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHtcbiAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSURzKSkge1xuICAgICAgcmV0dXJuIGRpc3BhdGNoSURzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBAc2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHtcbiAgdmFyIHJldCA9IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTtcbiAgZXZlbnQuX2Rpc3BhdGNoSURzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBFeGVjdXRpb24gb2YgYSBcImRpcmVjdFwiIGRpc3BhdGNoIC0gdGhlcmUgbXVzdCBiZSBhdCBtb3N0IG9uZSBkaXNwYXRjaFxuICogYWNjdW11bGF0ZWQgb24gdGhlIGV2ZW50IG9yIGl0IGlzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIEl0IGRvZXNuJ3QgcmVhbGx5IG1ha2VcbiAqIHNlbnNlIGZvciBhbiBldmVudCB3aXRoIG11bHRpcGxlIGRpc3BhdGNoZXMgKGJ1YmJsZWQpIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gKiByZXR1cm4gdmFsdWVzIGF0IGVhY2ggZGlzcGF0Y2ggZXhlY3V0aW9uLCBidXQgaXQgZG9lcyB0ZW5kIHRvIG1ha2Ugc2Vuc2Ugd2hlblxuICogZGVhbGluZyB3aXRoIFwiZGlyZWN0XCIgZGlzcGF0Y2hlcy5cbiAqXG4gKiBAcmV0dXJuIHsqfSBUaGUgcmV0dXJuIHZhbHVlIG9mIGV4ZWN1dGluZyB0aGUgc2luZ2xlIGRpc3BhdGNoLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlyZWN0RGlzcGF0Y2goZXZlbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXIgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaElEID0gZXZlbnQuX2Rpc3BhdGNoSURzO1xuICAhIUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURpcmVjdERpc3BhdGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHZhciByZXMgPSBkaXNwYXRjaExpc3RlbmVyID8gZGlzcGF0Y2hMaXN0ZW5lcihldmVudCwgZGlzcGF0Y2hJRCkgOiBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hJRHMgPSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmZiBudW1iZXIgb2YgZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cbiAqL1xuZnVuY3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG59XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZnVsIGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHtcbiAgaXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVpc2g6IGlzTW92ZWlzaCxcbiAgaXNTdGFydGlzaDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGlyZWN0RGlzcGF0Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhhc0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMsXG5cbiAgZ2V0Tm9kZTogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGluamVjdGlvbi5Nb3VudC5nZXROb2RlKGlkKTtcbiAgfSxcbiAgZ2V0SUQ6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGluamVjdGlvbi5Nb3VudC5nZXRJRChub2RlKTtcbiAgfSxcblxuICBpbmplY3Rpb246IGluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblV0aWxzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RmRtVnVkRkJzZFdkcGJsVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFVjJaVzUwVUd4MVoybHVWWFJwYkhOY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkZkbVZ1ZEVOdmJuTjBZVzUwY3lBOUlISmxjWFZwY21Vb0p5NHZSWFpsYm5SRGIyNXpkR0Z1ZEhNbktUdGNiblpoY2lCU1pXRmpkRVZ5Y205eVZYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUlhKeWIzSlZkR2xzY3ljcE8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dUx5b3FYRzRnS2lCSmJtcGxZM1JsWkNCa1pYQmxibVJsYm1OcFpYTTZYRzRnS2k5Y2JseHVMeW9xWEc0Z0tpQXRJR0JOYjNWdWRHQTZJRnR5WlhGMWFYSmxaRjBnVFc5a2RXeGxJSFJvWVhRZ1kyRnVJR052Ym5abGNuUWdZbVYwZDJWbGJpQlNaV0ZqZENCa2IyMGdTVVJ6SUdGdVpGeHVJQ29nSUNCaFkzUjFZV3dnYm05a1pTQnlaV1psY21WdVkyVnpMbHh1SUNvdlhHNTJZWElnYVc1cVpXTjBhVzl1SUQwZ2UxeHVJQ0JOYjNWdWREb2diblZzYkN4Y2JpQWdhVzVxWldOMFRXOTFiblE2SUdaMWJtTjBhVzl1SUNoSmJtcGxZM1JsWkUxdmRXNTBLU0I3WEc0Z0lDQWdhVzVxWldOMGFXOXVMazF2ZFc1MElEMGdTVzVxWldOMFpXUk5iM1Z1ZER0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvU1c1cVpXTjBaV1JOYjNWdWRDQW1KaUJKYm1wbFkzUmxaRTF2ZFc1MExtZGxkRTV2WkdVZ0ppWWdTVzVxWldOMFpXUk5iM1Z1ZEM1blpYUkpSQ3dnSjBWMlpXNTBVR3gxWjJsdVZYUnBiSE11YVc1cVpXTjBhVzl1TG1sdWFtVmpkRTF2ZFc1MEtDNHVMaWs2SUVsdWFtVmpkR1ZrSUUxdmRXNTBJQ2NnS3lBbmJXOWtkV3hsSUdseklHMXBjM05wYm1jZ1oyVjBUbTlrWlNCdmNpQm5aWFJKUkM0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQjBiM0JNWlhabGJGUjVjR1Z6SUQwZ1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN6dGNibHh1Wm5WdVkzUnBiMjRnYVhORmJtUnBjMmdvZEc5d1RHVjJaV3hVZVhCbEtTQjdYRzRnSUhKbGRIVnliaUIwYjNCTVpYWmxiRlI1Y0dVZ1BUMDlJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdUVzkxYzJWVmNDQjhmQ0IwYjNCTVpYWmxiRlI1Y0dVZ1BUMDlJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoRmJtUWdmSHdnZEc5d1RHVjJaV3hVZVhCbElEMDlQU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRlJ2ZFdOb1EyRnVZMlZzTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJwYzAxdmRtVnBjMmdvZEc5d1RHVjJaV3hVZVhCbEtTQjdYRzRnSUhKbGRIVnliaUIwYjNCTVpYWmxiRlI1Y0dVZ1BUMDlJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdUVzkxYzJWTmIzWmxJSHg4SUhSdmNFeGxkbVZzVkhsd1pTQTlQVDBnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JVYjNWamFFMXZkbVU3WEc1OVhHNW1kVzVqZEdsdmJpQnBjMU4wWVhKMGFYTm9LSFJ2Y0V4bGRtVnNWSGx3WlNrZ2UxeHVJQ0J5WlhSMWNtNGdkRzl3VEdWMlpXeFVlWEJsSUQwOVBTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFMXZkWE5sUkc5M2JpQjhmQ0IwYjNCTVpYWmxiRlI1Y0dVZ1BUMDlJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoVGRHRnlkRHRjYm4xY2JseHVkbUZ5SUhaaGJHbGtZWFJsUlhabGJuUkVhWE53WVhSamFHVnpPMXh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ2RtRnNhV1JoZEdWRmRtVnVkRVJwYzNCaGRHTm9aWE1nUFNCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0IyWVhJZ1pHbHpjR0YwWTJoTWFYTjBaVzVsY25NZ1BTQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25NN1hHNGdJQ0FnZG1GeUlHUnBjM0JoZEdOb1NVUnpJRDBnWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6TzF4dVhHNGdJQ0FnZG1GeUlHeHBjM1JsYm1WeWMwbHpRWEp5SUQwZ1FYSnlZWGt1YVhOQmNuSmhlU2hrYVhOd1lYUmphRXhwYzNSbGJtVnljeWs3WEc0Z0lDQWdkbUZ5SUdsa2MwbHpRWEp5SUQwZ1FYSnlZWGt1YVhOQmNuSmhlU2hrYVhOd1lYUmphRWxFY3lrN1hHNGdJQ0FnZG1GeUlFbEVjMHhsYmlBOUlHbGtjMGx6UVhKeUlEOGdaR2x6Y0dGMFkyaEpSSE11YkdWdVozUm9JRG9nWkdsemNHRjBZMmhKUkhNZ1B5QXhJRG9nTUR0Y2JpQWdJQ0IyWVhJZ2JHbHpkR1Z1WlhKelRHVnVJRDBnYkdsemRHVnVaWEp6U1hOQmNuSWdQeUJrYVhOd1lYUmphRXhwYzNSbGJtVnljeTVzWlc1bmRHZ2dPaUJrYVhOd1lYUmphRXhwYzNSbGJtVnljeUEvSURFZ09pQXdPMXh1WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvYVdSelNYTkJjbklnUFQwOUlHeHBjM1JsYm1WeWMwbHpRWEp5SUNZbUlFbEVjMHhsYmlBOVBUMGdiR2x6ZEdWdVpYSnpUR1Z1TENBblJYWmxiblJRYkhWbmFXNVZkR2xzY3pvZ1NXNTJZV3hwWkNCZ1pYWmxiblJnTGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOU8xeHVmVnh1WEc0dktpcGNiaUFxSUVScGMzQmhkR05vSUhSb1pTQmxkbVZ1ZENCMGJ5QjBhR1VnYkdsemRHVnVaWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UxTjViblJvWlhScFkwVjJaVzUwZlNCbGRtVnVkQ0JUZVc1MGFHVjBhV05GZG1WdWRDQjBieUJvWVc1a2JHVmNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnYzJsdGRXeGhkR1ZrSUVsbUlIUm9aU0JsZG1WdWRDQnBjeUJ6YVcxMWJHRjBaV1FnS0dOb1lXNW5aWE1nWlhodUlHSmxhR0YyYVc5eUtWeHVJQ29nUUhCaGNtRnRJSHRtZFc1amRHbHZibjBnYkdsemRHVnVaWElnUVhCd2JHbGpZWFJwYjI0dGJHVjJaV3dnWTJGc2JHSmhZMnRjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCa2IyMUpSQ0JFVDAwZ2FXUWdkRzhnY0dGemN5QjBieUIwYUdVZ1kyRnNiR0poWTJzdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdWNFpXTjFkR1ZFYVhOd1lYUmphQ2hsZG1WdWRDd2djMmx0ZFd4aGRHVmtMQ0JzYVhOMFpXNWxjaXdnWkc5dFNVUXBJSHRjYmlBZ2RtRnlJSFI1Y0dVZ1BTQmxkbVZ1ZEM1MGVYQmxJSHg4SUNkMWJtdHViM2R1TFdWMlpXNTBKenRjYmlBZ1pYWmxiblF1WTNWeWNtVnVkRlJoY21kbGRDQTlJR2x1YW1WamRHbHZiaTVOYjNWdWRDNW5aWFJPYjJSbEtHUnZiVWxFS1R0Y2JpQWdhV1lnS0hOcGJYVnNZWFJsWkNrZ2UxeHVJQ0FnSUZKbFlXTjBSWEp5YjNKVmRHbHNjeTVwYm5admEyVkhkV0Z5WkdWa1EyRnNiR0poWTJ0WGFYUm9RMkYwWTJnb2RIbHdaU3dnYkdsemRHVnVaWElzSUdWMlpXNTBMQ0JrYjIxSlJDazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdVbVZoWTNSRmNuSnZjbFYwYVd4ekxtbHVkbTlyWlVkMVlYSmtaV1JEWVd4c1ltRmpheWgwZVhCbExDQnNhWE4wWlc1bGNpd2daWFpsYm5Rc0lHUnZiVWxFS1R0Y2JpQWdmVnh1SUNCbGRtVnVkQzVqZFhKeVpXNTBWR0Z5WjJWMElEMGdiblZzYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZEdGdVpHRnlaQzl6YVcxd2JHVWdhWFJsY21GMGFXOXVJSFJvY205MVoyZ2dZVzRnWlhabGJuUW5jeUJqYjJ4c1pXTjBaV1FnWkdsemNHRjBZMmhsY3k1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5KYms5eVpHVnlLR1YyWlc1MExDQnphVzExYkdGMFpXUXBJSHRjYmlBZ2RtRnlJR1JwYzNCaGRHTm9UR2x6ZEdWdVpYSnpJRDBnWlhabGJuUXVYMlJwYzNCaGRHTm9UR2x6ZEdWdVpYSnpPMXh1SUNCMllYSWdaR2x6Y0dGMFkyaEpSSE1nUFNCbGRtVnVkQzVmWkdsemNHRjBZMmhKUkhNN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2RtRnNhV1JoZEdWRmRtVnVkRVJwYzNCaGRHTm9aWE1vWlhabGJuUXBPMXh1SUNCOVhHNGdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLR1JwYzNCaGRHTm9UR2x6ZEdWdVpYSnpLU2tnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnWkdsemNHRjBZMmhNYVhOMFpXNWxjbk11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lHbG1JQ2hsZG1WdWRDNXBjMUJ5YjNCaFoyRjBhVzl1VTNSdmNIQmxaQ2dwS1NCN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnTHk4Z1RHbHpkR1Z1WlhKeklHRnVaQ0JKUkhNZ1lYSmxJSFIzYnlCd1lYSmhiR3hsYkNCaGNuSmhlWE1nZEdoaGRDQmhjbVVnWVd4M1lYbHpJR2x1SUhONWJtTXVYRzRnSUNBZ0lDQmxlR1ZqZFhSbFJHbHpjR0YwWTJnb1pYWmxiblFzSUhOcGJYVnNZWFJsWkN3Z1pHbHpjR0YwWTJoTWFYTjBaVzVsY25OYmFWMHNJR1JwYzNCaGRHTm9TVVJ6VzJsZEtUdGNiaUFnSUNCOVhHNGdJSDBnWld4elpTQnBaaUFvWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1wSUh0Y2JpQWdJQ0JsZUdWamRYUmxSR2x6Y0dGMFkyZ29aWFpsYm5Rc0lITnBiWFZzWVhSbFpDd2daR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTXNJR1JwYzNCaGRHTm9TVVJ6S1R0Y2JpQWdmVnh1SUNCbGRtVnVkQzVmWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1nUFNCdWRXeHNPMXh1SUNCbGRtVnVkQzVmWkdsemNHRjBZMmhKUkhNZ1BTQnVkV3hzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4wWVc1a1lYSmtMM05wYlhCc1pTQnBkR1Z5WVhScGIyNGdkR2h5YjNWbmFDQmhiaUJsZG1WdWRDZHpJR052Ykd4bFkzUmxaQ0JrYVhOd1lYUmphR1Z6TENCaWRYUWdjM1J2Y0hOY2JpQXFJR0YwSUhSb1pTQm1hWEp6ZENCa2FYTndZWFJqYUNCbGVHVmpkWFJwYjI0Z2NtVjBkWEp1YVc1bklIUnlkV1VzSUdGdVpDQnlaWFIxY201eklIUm9ZWFFnYVdRdVhHNGdLbHh1SUNvZ1FISmxkSFZ5YmlCN1AzTjBjbWx1WjMwZ2FXUWdiMllnZEdobElHWnBjbk4wSUdScGMzQmhkR05vSUdWNFpXTjFkR2x2YmlCM2FHOG5jeUJzYVhOMFpXNWxjaUJ5WlhSMWNtNXpYRzRnS2lCMGNuVmxMQ0J2Y2lCdWRXeHNJR2xtSUc1dklHeHBjM1JsYm1WeUlISmxkSFZ5Ym1Wa0lIUnlkV1V1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpTVzVQY21SbGNsTjBiM0JCZEZSeWRXVkpiWEJzS0dWMlpXNTBLU0I3WEc0Z0lIWmhjaUJrYVhOd1lYUmphRXhwYzNSbGJtVnljeUE5SUdWMlpXNTBMbDlrYVhOd1lYUmphRXhwYzNSbGJtVnljenRjYmlBZ2RtRnlJR1JwYzNCaGRHTm9TVVJ6SUQwZ1pYWmxiblF1WDJScGMzQmhkR05vU1VSek8xeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIWmhiR2xrWVhSbFJYWmxiblJFYVhOd1lYUmphR1Z6S0dWMlpXNTBLVHRjYmlBZ2ZWeHVJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hrYVhOd1lYUmphRXhwYzNSbGJtVnljeWtwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUdScGMzQmhkR05vVEdsemRHVnVaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvWlhabGJuUXVhWE5RY205d1lXZGhkR2x2YmxOMGIzQndaV1FvS1NrZ2UxeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklFeHBjM1JsYm1WeWN5QmhibVFnU1VSeklHRnlaU0IwZDI4Z2NHRnlZV3hzWld3Z1lYSnlZWGx6SUhSb1lYUWdZWEpsSUdGc2QyRjVjeUJwYmlCemVXNWpMbHh1SUNBZ0lDQWdhV1lnS0dScGMzQmhkR05vVEdsemRHVnVaWEp6VzJsZEtHVjJaVzUwTENCa2FYTndZWFJqYUVsRWMxdHBYU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzQmhkR05vU1VSelcybGRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNoa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3lrZ2UxeHVJQ0FnSUdsbUlDaGthWE53WVhSamFFeHBjM1JsYm1WeWN5aGxkbVZ1ZEN3Z1pHbHpjR0YwWTJoSlJITXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaR2x6Y0dGMFkyaEpSSE03WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnVkV3hzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUJ6WldVZ1pYaGxZM1YwWlVScGMzQmhkR05vWlhOSmJrOXlaR1Z5VTNSdmNFRjBWSEoxWlVsdGNHeGNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pYaGxZM1YwWlVScGMzQmhkR05vWlhOSmJrOXlaR1Z5VTNSdmNFRjBWSEoxWlNobGRtVnVkQ2tnZTF4dUlDQjJZWElnY21WMElEMGdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkpiazl5WkdWeVUzUnZjRUYwVkhKMVpVbHRjR3dvWlhabGJuUXBPMXh1SUNCbGRtVnVkQzVmWkdsemNHRjBZMmhKUkhNZ1BTQnVkV3hzTzF4dUlDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25NZ1BTQnVkV3hzTzF4dUlDQnlaWFIxY200Z2NtVjBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVjRaV04xZEdsdmJpQnZaaUJoSUZ3aVpHbHlaV04wWENJZ1pHbHpjR0YwWTJnZ0xTQjBhR1Z5WlNCdGRYTjBJR0psSUdGMElHMXZjM1FnYjI1bElHUnBjM0JoZEdOb1hHNGdLaUJoWTJOMWJYVnNZWFJsWkNCdmJpQjBhR1VnWlhabGJuUWdiM0lnYVhRZ2FYTWdZMjl1YzJsa1pYSmxaQ0JoYmlCbGNuSnZjaTRnU1hRZ1pHOWxjMjRuZENCeVpXRnNiSGtnYldGclpWeHVJQ29nYzJWdWMyVWdabTl5SUdGdUlHVjJaVzUwSUhkcGRHZ2diWFZzZEdsd2JHVWdaR2x6Y0dGMFkyaGxjeUFvWW5WaVlteGxaQ2tnZEc4Z2EyVmxjQ0IwY21GamF5QnZaaUIwYUdWY2JpQXFJSEpsZEhWeWJpQjJZV3gxWlhNZ1lYUWdaV0ZqYUNCa2FYTndZWFJqYUNCbGVHVmpkWFJwYjI0c0lHSjFkQ0JwZENCa2IyVnpJSFJsYm1RZ2RHOGdiV0ZyWlNCelpXNXpaU0IzYUdWdVhHNGdLaUJrWldGc2FXNW5JSGRwZEdnZ1hDSmthWEpsWTNSY0lpQmthWE53WVhSamFHVnpMbHh1SUNwY2JpQXFJRUJ5WlhSMWNtNGdleXA5SUZSb1pTQnlaWFIxY200Z2RtRnNkV1VnYjJZZ1pYaGxZM1YwYVc1bklIUm9aU0J6YVc1bmJHVWdaR2x6Y0dGMFkyZ3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHVjRaV04xZEdWRWFYSmxZM1JFYVhOd1lYUmphQ2hsZG1WdWRDa2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSFpoYkdsa1lYUmxSWFpsYm5SRWFYTndZWFJqYUdWektHVjJaVzUwS1R0Y2JpQWdmVnh1SUNCMllYSWdaR2x6Y0dGMFkyaE1hWE4wWlc1bGNpQTlJR1YyWlc1MExsOWthWE53WVhSamFFeHBjM1JsYm1WeWN6dGNiaUFnZG1GeUlHUnBjM0JoZEdOb1NVUWdQU0JsZG1WdWRDNWZaR2x6Y0dGMFkyaEpSSE03WEc0Z0lDRWhRWEp5WVhrdWFYTkJjbkpoZVNoa2FYTndZWFJqYUV4cGMzUmxibVZ5S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RsZUdWamRYUmxSR2x5WldOMFJHbHpjR0YwWTJnb0xpNHVLVG9nU1c1MllXeHBaQ0JnWlhabGJuUmdMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZG1GeUlISmxjeUE5SUdScGMzQmhkR05vVEdsemRHVnVaWElnUHlCa2FYTndZWFJqYUV4cGMzUmxibVZ5S0dWMlpXNTBMQ0JrYVhOd1lYUmphRWxFS1NBNklHNTFiR3c3WEc0Z0lHVjJaVzUwTGw5a2FYTndZWFJqYUV4cGMzUmxibVZ5Y3lBOUlHNTFiR3c3WEc0Z0lHVjJaVzUwTGw5a2FYTndZWFJqYUVsRWN5QTlJRzUxYkd3N1hHNGdJSEpsZEhWeWJpQnlaWE03WEc1OVhHNWNiaThxS2x4dUlDb2dRSEJoY21GdElIdFRlVzUwYUdWMGFXTkZkbVZ1ZEgwZ1pYWmxiblJjYmlBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdabUlHNTFiV0psY2lCdlppQmthWE53WVhSamFHVnpJR0ZqWTNWdGRXeGhkR1ZrSUdseklHZHlaV0YwWlhJZ2RHaGhiaUF3TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJvWVhORWFYTndZWFJqYUdWektHVjJaVzUwS1NCN1hHNGdJSEpsZEhWeWJpQWhJV1YyWlc1MExsOWthWE53WVhSamFFeHBjM1JsYm1WeWN6dGNibjFjYmx4dUx5b3FYRzRnS2lCSFpXNWxjbUZzSUhWMGFXeHBkR2xsY3lCMGFHRjBJR0Z5WlNCMWMyVm1kV3dnYVc0Z1kzSmxZWFJwYm1jZ1kzVnpkRzl0SUVWMlpXNTBJRkJzZFdkcGJuTXVYRzRnS2k5Y2JuWmhjaUJGZG1WdWRGQnNkV2RwYmxWMGFXeHpJRDBnZTF4dUlDQnBjMFZ1WkdsemFEb2dhWE5GYm1ScGMyZ3NYRzRnSUdselRXOTJaV2x6YURvZ2FYTk5iM1psYVhOb0xGeHVJQ0JwYzFOMFlYSjBhWE5vT2lCcGMxTjBZWEowYVhOb0xGeHVYRzRnSUdWNFpXTjFkR1ZFYVhKbFkzUkVhWE53WVhSamFEb2daWGhsWTNWMFpVUnBjbVZqZEVScGMzQmhkR05vTEZ4dUlDQmxlR1ZqZFhSbFJHbHpjR0YwWTJobGMwbHVUM0prWlhJNklHVjRaV04xZEdWRWFYTndZWFJqYUdWelNXNVBjbVJsY2l4Y2JpQWdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkpiazl5WkdWeVUzUnZjRUYwVkhKMVpUb2daWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkpiazl5WkdWeVUzUnZjRUYwVkhKMVpTeGNiaUFnYUdGelJHbHpjR0YwWTJobGN6b2dhR0Z6UkdsemNHRjBZMmhsY3l4Y2JseHVJQ0JuWlhST2IyUmxPaUJtZFc1amRHbHZiaUFvYVdRcElIdGNiaUFnSUNCeVpYUjFjbTRnYVc1cVpXTjBhVzl1TGsxdmRXNTBMbWRsZEU1dlpHVW9hV1FwTzF4dUlDQjlMRnh1SUNCblpYUkpSRG9nWm5WdVkzUnBiMjRnS0c1dlpHVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2FXNXFaV04wYVc5dUxrMXZkVzUwTG1kbGRFbEVLRzV2WkdVcE8xeHVJQ0I5TEZ4dVhHNGdJR2x1YW1WamRHbHZiam9nYVc1cVpXTjBhVzl1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRVYyWlc1MFVHeDFaMmx1VlhScGJITTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudFByb3BhZ2F0b3JzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSByZXF1aXJlKCcuL2FjY3VtdWxhdGVJbnRvJyk7XG52YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gcmVxdWlyZSgnLi9mb3JFYWNoQWNjdW11bGF0ZWQnKTtcblxudmFyIFByb3BhZ2F0aW9uUGhhc2VzID0gRXZlbnRDb25zdGFudHMuUHJvcGFnYXRpb25QaGFzZXM7XG52YXIgZ2V0TGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcjtcblxuLyoqXG4gKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50XG4gKiBcInBoYXNlc1wiIG9mIHByb3BhZ2F0aW9uLiBUaGlzIGZpbmRzIGxpc3RlbmVycyBieSBhIGdpdmVuIHBoYXNlLlxuICovXG5mdW5jdGlvbiBsaXN0ZW5lckF0UGhhc2UoaWQsIGV2ZW50LCBwcm9wYWdhdGlvblBoYXNlKSB7XG4gIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFnYXRpb25QaGFzZV07XG4gIHJldHVybiBnZXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7XG59XG5cbi8qKlxuICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3RlbmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvblxuICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC5cbiAqIE11dGF0aW5nIHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhIHdyYXBwaW5nXG4gKiBcImRpc3BhdGNoXCIgb2JqZWN0IHRoYXQgcGFpcnMgdGhlIGV2ZW50IHdpdGggdGhlIGxpc3RlbmVyLlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzKGRvbUlELCB1cHdhcmRzLCBldmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRvbUlELCAnRGlzcGF0Y2hpbmcgaWQgbXVzdCBub3QgYmUgbnVsbCcpIDogdW5kZWZpbmVkO1xuICB9XG4gIHZhciBwaGFzZSA9IHVwd2FyZHMgPyBQcm9wYWdhdGlvblBoYXNlcy5idWJibGVkIDogUHJvcGFnYXRpb25QaGFzZXMuY2FwdHVyZWQ7XG4gIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShkb21JRCwgZXZlbnQsIHBoYXNlKTtcbiAgaWYgKGxpc3RlbmVyKSB7XG4gICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gICAgZXZlbnQuX2Rpc3BhdGNoSURzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSURzLCBkb21JRCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50aXJlbHkgY29sbGVjdGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0XG4gKiB0ZXN0cykuIExhemlseSBhbGxvY2F0ZSB0aGUgYXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29wIHRocm91Z2hcbiAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdlIGNhbm5vdCBwZXJmb3JtIGFcbiAqIHNpbmdsZSB0cmF2ZXJzYWwgZm9yIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBvZiBldmVudHMgYmVjYXVzZSBlYWNoIGV2ZW50IG1heVxuICogaGF2ZSBhIGRpZmZlcmVudCB0YXJnZXQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmdldEluc3RhbmNlSGFuZGxlKCkudHJhdmVyc2VUd29QaGFzZShldmVudC5kaXNwYXRjaE1hcmtlciwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmdldEluc3RhbmNlSGFuZGxlKCkudHJhdmVyc2VUd29QaGFzZVNraXBUYXJnZXQoZXZlbnQuZGlzcGF0Y2hNYXJrZXIsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEFjY3VtdWxhdGVzIHdpdGhvdXQgcmVnYXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3QgbG9vayBmb3IgcGhhc2VkXG4gKiByZWdpc3RyYXRpb24gbmFtZXMuIFNhbWUgYXMgYGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlYCBidXQgd2l0aG91dFxuICogcmVxdWlyaW5nIHRoYXQgdGhlIGBkaXNwYXRjaE1hcmtlcmAgYmUgdGhlIHNhbWUgYXMgdGhlIGRpc3BhdGNoZWQgSUQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXNwYXRjaGVzKGlkLCBpZ25vcmVkRGlyZWN0aW9uLCBldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZTtcbiAgICB2YXIgbGlzdGVuZXIgPSBnZXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgICAgIGV2ZW50Ll9kaXNwYXRjaElEcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaElEcywgaWQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY3VtdWxhdGVzIGRpc3BhdGNoZXMgb24gYW4gYFN5bnRoZXRpY0V2ZW50YCwgYnV0IG9ubHkgZm9yIHRoZVxuICogYGRpc3BhdGNoTWFya2VyYC5cbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgYWNjdW11bGF0ZURpc3BhdGNoZXMoZXZlbnQuZGlzcGF0Y2hNYXJrZXIsIG51bGwsIGV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbUlELCB0b0lEKSB7XG4gIEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5nZXRJbnN0YW5jZUhhbmRsZSgpLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tSUQsIHRvSUQsIGFjY3VtdWxhdGVEaXNwYXRjaGVzLCBsZWF2ZSwgZW50ZXIpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG4vKipcbiAqIEEgc21hbGwgc2V0IG9mIHByb3BhZ2F0aW9uIHBhdHRlcm5zLCBlYWNoIG9mIHdoaWNoIHdpbGwgYWNjZXB0IGEgc21hbGwgYW1vdW50XG4gKiBvZiBpbmZvcm1hdGlvbiwgYW5kIGdlbmVyYXRlIGEgc2V0IG9mIFwiZGlzcGF0Y2ggcmVhZHkgZXZlbnQgb2JqZWN0c1wiIC0gd2hpY2hcbiAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWRcbiAqIGxpc3RlbmVyIGZ1bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3YXkgdG8gZGlzY291cmFnZSB0aGVzZVxuICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFjdHVhbGx5IGV4ZWN1dGluZyB0aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2VcbiAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhlIGVudGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGFcbiAqIHNpbmdsZSBvbmUuXG4gKlxuICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnNcbiAqL1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSB7XG4gIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCxcbiAgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzLFxuICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlc1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RmRtVnVkRkJ5YjNCaFoyRjBiM0p6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCRmRtVnVkRkJ5YjNCaFoyRjBiM0p6WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1JYWmxiblJEYjI1emRHRnVkSE1nUFNCeVpYRjFhWEpsS0NjdUwwVjJaVzUwUTI5dWMzUmhiblJ6SnlrN1hHNTJZWElnUlhabGJuUlFiSFZuYVc1SWRXSWdQU0J5WlhGMWFYSmxLQ2N1TDBWMlpXNTBVR3gxWjJsdVNIVmlKeWs3WEc1Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNTJZWElnWVdOamRXMTFiR0YwWlVsdWRHOGdQU0J5WlhGMWFYSmxLQ2N1TDJGalkzVnRkV3hoZEdWSmJuUnZKeWs3WEc1MllYSWdabTl5UldGamFFRmpZM1Z0ZFd4aGRHVmtJRDBnY21WeGRXbHlaU2duTGk5bWIzSkZZV05vUVdOamRXMTFiR0YwWldRbktUdGNibHh1ZG1GeUlGQnliM0JoWjJGMGFXOXVVR2hoYzJWeklEMGdSWFpsYm5SRGIyNXpkR0Z1ZEhNdVVISnZjR0ZuWVhScGIyNVFhR0Z6WlhNN1hHNTJZWElnWjJWMFRHbHpkR1Z1WlhJZ1BTQkZkbVZ1ZEZCc2RXZHBia2gxWWk1blpYUk1hWE4wWlc1bGNqdGNibHh1THlvcVhHNGdLaUJUYjIxbElHVjJaVzUwSUhSNWNHVnpJR2hoZG1VZ1lTQnViM1JwYjI0Z2IyWWdaR2xtWm1WeVpXNTBJSEpsWjJsemRISmhkR2x2YmlCdVlXMWxjeUJtYjNJZ1pHbG1abVZ5Wlc1MFhHNGdLaUJjSW5Cb1lYTmxjMXdpSUc5bUlIQnliM0JoWjJGMGFXOXVMaUJVYUdseklHWnBibVJ6SUd4cGMzUmxibVZ5Y3lCaWVTQmhJR2RwZG1WdUlIQm9ZWE5sTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJzYVhOMFpXNWxja0YwVUdoaGMyVW9hV1FzSUdWMlpXNTBMQ0J3Y205d1lXZGhkR2x2YmxCb1lYTmxLU0I3WEc0Z0lIWmhjaUJ5WldkcGMzUnlZWFJwYjI1T1lXMWxJRDBnWlhabGJuUXVaR2x6Y0dGMFkyaERiMjVtYVdjdWNHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE5iY0hKdmNHRm5ZWFJwYjI1UWFHRnpaVjA3WEc0Z0lISmxkSFZ5YmlCblpYUk1hWE4wWlc1bGNpaHBaQ3dnY21WbmFYTjBjbUYwYVc5dVRtRnRaU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dWR0ZuY3lCaElHQlRlVzUwYUdWMGFXTkZkbVZ1ZEdBZ2QybDBhQ0JrYVhOd1lYUmphR1ZrSUd4cGMzUmxibVZ5Y3k0Z1EzSmxZWFJwYm1jZ2RHaHBjeUJtZFc1amRHbHZibHh1SUNvZ2FHVnlaU3dnWVd4c2IzZHpJSFZ6SUhSdklHNXZkQ0JvWVhabElIUnZJR0pwYm1RZ2IzSWdZM0psWVhSbElHWjFibU4wYVc5dWN5Qm1iM0lnWldGamFDQmxkbVZ1ZEM1Y2JpQXFJRTExZEdGMGFXNW5JSFJvWlNCbGRtVnVkQ2R6SUcxbGJXSmxjbk1nWVd4c2IzZHpJSFZ6SUhSdklHNXZkQ0JvWVhabElIUnZJR055WldGMFpTQmhJSGR5WVhCd2FXNW5YRzRnS2lCY0ltUnBjM0JoZEdOb1hDSWdiMkpxWldOMElIUm9ZWFFnY0dGcGNuTWdkR2hsSUdWMlpXNTBJSGRwZEdnZ2RHaGxJR3hwYzNSbGJtVnlMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmhZMk4xYlhWc1lYUmxSR2x5WldOMGFXOXVZV3hFYVhOd1lYUmphR1Z6S0dSdmJVbEVMQ0IxY0hkaGNtUnpMQ0JsZG1WdWRDa2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0dSdmJVbEVMQ0FuUkdsemNHRjBZMmhwYm1jZ2FXUWdiWFZ6ZENCdWIzUWdZbVVnYm5Wc2JDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlYRzRnSUhaaGNpQndhR0Z6WlNBOUlIVndkMkZ5WkhNZ1B5QlFjbTl3WVdkaGRHbHZibEJvWVhObGN5NWlkV0ppYkdWa0lEb2dVSEp2Y0dGbllYUnBiMjVRYUdGelpYTXVZMkZ3ZEhWeVpXUTdYRzRnSUhaaGNpQnNhWE4wWlc1bGNpQTlJR3hwYzNSbGJtVnlRWFJRYUdGelpTaGtiMjFKUkN3Z1pYWmxiblFzSUhCb1lYTmxLVHRjYmlBZ2FXWWdLR3hwYzNSbGJtVnlLU0I3WEc0Z0lDQWdaWFpsYm5RdVgyUnBjM0JoZEdOb1RHbHpkR1Z1WlhKeklEMGdZV05qZFcxMWJHRjBaVWx1ZEc4b1pYWmxiblF1WDJScGMzQmhkR05vVEdsemRHVnVaWEp6TENCc2FYTjBaVzVsY2lrN1hHNGdJQ0FnWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6SUQwZ1lXTmpkVzExYkdGMFpVbHVkRzhvWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6TENCa2IyMUpSQ2s3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCRGIyeHNaV04wSUdScGMzQmhkR05vWlhNZ0tHMTFjM1FnWW1VZ1pXNTBhWEpsYkhrZ1kyOXNiR1ZqZEdWa0lHSmxabTl5WlNCa2FYTndZWFJqYUdsdVp5QXRJSE5sWlNCMWJtbDBYRzRnS2lCMFpYTjBjeWt1SUV4aGVtbHNlU0JoYkd4dlkyRjBaU0IwYUdVZ1lYSnlZWGtnZEc4Z1kyOXVjMlZ5ZG1VZ2JXVnRiM0o1TGlBZ1YyVWdiWFZ6ZENCc2IyOXdJSFJvY205MVoyaGNiaUFxSUdWaFkyZ2daWFpsYm5RZ1lXNWtJSEJsY21admNtMGdkR2hsSUhSeVlYWmxjbk5oYkNCbWIzSWdaV0ZqYUNCdmJtVXVJRmRsSUdOaGJtNXZkQ0J3WlhKbWIzSnRJR0ZjYmlBcUlITnBibWRzWlNCMGNtRjJaWEp6WVd3Z1ptOXlJSFJvWlNCbGJuUnBjbVVnWTI5c2JHVmpkR2x2YmlCdlppQmxkbVZ1ZEhNZ1ltVmpZWFZ6WlNCbFlXTm9JR1YyWlc1MElHMWhlVnh1SUNvZ2FHRjJaU0JoSUdScFptWmxjbVZ1ZENCMFlYSm5aWFF1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE5UYVc1bmJHVW9aWFpsYm5RcElIdGNiaUFnYVdZZ0tHVjJaVzUwSUNZbUlHVjJaVzUwTG1ScGMzQmhkR05vUTI5dVptbG5MbkJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWektTQjdYRzRnSUNBZ1JYWmxiblJRYkhWbmFXNUlkV0l1YVc1cVpXTjBhVzl1TG1kbGRFbHVjM1JoYm1ObFNHRnVaR3hsS0NrdWRISmhkbVZ5YzJWVWQyOVFhR0Z6WlNobGRtVnVkQzVrYVhOd1lYUmphRTFoY210bGNpd2dZV05qZFcxMWJHRjBaVVJwY21WamRHbHZibUZzUkdsemNHRjBZMmhsY3l3Z1pYWmxiblFwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UyRnRaU0JoY3lCZ1lXTmpkVzExYkdGMFpWUjNiMUJvWVhObFJHbHpjR0YwWTJobGMxTnBibWRzWldBc0lHSjFkQ0J6YTJsd2N5QnZkbVZ5SUhSb1pTQjBZWEpuWlhSSlJDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1lXTmpkVzExYkdGMFpWUjNiMUJvWVhObFJHbHpjR0YwWTJobGMxTnBibWRzWlZOcmFYQlVZWEpuWlhRb1pYWmxiblFwSUh0Y2JpQWdhV1lnS0dWMlpXNTBJQ1ltSUdWMlpXNTBMbVJwYzNCaGRHTm9RMjl1Wm1sbkxuQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6S1NCN1hHNGdJQ0FnUlhabGJuUlFiSFZuYVc1SWRXSXVhVzVxWldOMGFXOXVMbWRsZEVsdWMzUmhibU5sU0dGdVpHeGxLQ2t1ZEhKaGRtVnljMlZVZDI5UWFHRnpaVk5yYVhCVVlYSm5aWFFvWlhabGJuUXVaR2x6Y0dGMFkyaE5ZWEpyWlhJc0lHRmpZM1Z0ZFd4aGRHVkVhWEpsWTNScGIyNWhiRVJwYzNCaGRHTm9aWE1zSUdWMlpXNTBLVHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVGalkzVnRkV3hoZEdWeklIZHBkR2h2ZFhRZ2NtVm5ZWEprSUhSdklHUnBjbVZqZEdsdmJpd2daRzlsY3lCdWIzUWdiRzl2YXlCbWIzSWdjR2hoYzJWa1hHNGdLaUJ5WldkcGMzUnlZWFJwYjI0Z2JtRnRaWE11SUZOaGJXVWdZWE1nWUdGalkzVnRkV3hoZEdWRWFYSmxZM1JFYVhOd1lYUmphR1Z6VTJsdVoyeGxZQ0JpZFhRZ2QybDBhRzkxZEZ4dUlDb2djbVZ4ZFdseWFXNW5JSFJvWVhRZ2RHaGxJR0JrYVhOd1lYUmphRTFoY210bGNtQWdZbVVnZEdobElITmhiV1VnWVhNZ2RHaGxJR1JwYzNCaGRHTm9aV1FnU1VRdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdGalkzVnRkV3hoZEdWRWFYTndZWFJqYUdWektHbGtMQ0JwWjI1dmNtVmtSR2x5WldOMGFXOXVMQ0JsZG1WdWRDa2dlMXh1SUNCcFppQW9aWFpsYm5RZ0ppWWdaWFpsYm5RdVpHbHpjR0YwWTJoRGIyNW1hV2N1Y21WbmFYTjBjbUYwYVc5dVRtRnRaU2tnZTF4dUlDQWdJSFpoY2lCeVpXZHBjM1J5WVhScGIyNU9ZVzFsSUQwZ1pYWmxiblF1WkdsemNHRjBZMmhEYjI1bWFXY3VjbVZuYVhOMGNtRjBhVzl1VG1GdFpUdGNiaUFnSUNCMllYSWdiR2x6ZEdWdVpYSWdQU0JuWlhSTWFYTjBaVzVsY2locFpDd2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTazdYRzRnSUNBZ2FXWWdLR3hwYzNSbGJtVnlLU0I3WEc0Z0lDQWdJQ0JsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTWdQU0JoWTJOMWJYVnNZWFJsU1c1MGJ5aGxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25Nc0lHeHBjM1JsYm1WeUtUdGNiaUFnSUNBZ0lHVjJaVzUwTGw5a2FYTndZWFJqYUVsRWN5QTlJR0ZqWTNWdGRXeGhkR1ZKYm5SdktHVjJaVzUwTGw5a2FYTndZWFJqYUVsRWN5d2dhV1FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVGalkzVnRkV3hoZEdWeklHUnBjM0JoZEdOb1pYTWdiMjRnWVc0Z1lGTjViblJvWlhScFkwVjJaVzUwWUN3Z1luVjBJRzl1YkhrZ1ptOXlJSFJvWlZ4dUlDb2dZR1JwYzNCaGRHTm9UV0Z5YTJWeVlDNWNiaUFxSUVCd1lYSmhiU0I3VTNsdWRHaGxkR2xqUlhabGJuUjlJR1YyWlc1MFhHNGdLaTljYm1aMWJtTjBhVzl1SUdGalkzVnRkV3hoZEdWRWFYSmxZM1JFYVhOd1lYUmphR1Z6VTJsdVoyeGxLR1YyWlc1MEtTQjdYRzRnSUdsbUlDaGxkbVZ1ZENBbUppQmxkbVZ1ZEM1a2FYTndZWFJqYUVOdmJtWnBaeTV5WldkcGMzUnlZWFJwYjI1T1lXMWxLU0I3WEc0Z0lDQWdZV05qZFcxMWJHRjBaVVJwYzNCaGRHTm9aWE1vWlhabGJuUXVaR2x6Y0dGMFkyaE5ZWEpyWlhJc0lHNTFiR3dzSUdWMlpXNTBLVHRjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCaFkyTjFiWFZzWVhSbFZIZHZVR2hoYzJWRWFYTndZWFJqYUdWektHVjJaVzUwY3lrZ2UxeHVJQ0JtYjNKRllXTm9RV05qZFcxMWJHRjBaV1FvWlhabGJuUnpMQ0JoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6VTJsdVoyeGxLVHRjYm4xY2JseHVablZ1WTNScGIyNGdZV05qZFcxMWJHRjBaVlIzYjFCb1lYTmxSR2x6Y0dGMFkyaGxjMU5yYVhCVVlYSm5aWFFvWlhabGJuUnpLU0I3WEc0Z0lHWnZja1ZoWTJoQlkyTjFiWFZzWVhSbFpDaGxkbVZ1ZEhNc0lHRmpZM1Z0ZFd4aGRHVlVkMjlRYUdGelpVUnBjM0JoZEdOb1pYTlRhVzVuYkdWVGEybHdWR0Z5WjJWMEtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1lXTmpkVzExYkdGMFpVVnVkR1Z5VEdWaGRtVkVhWE53WVhSamFHVnpLR3hsWVhabExDQmxiblJsY2l3Z1puSnZiVWxFTENCMGIwbEVLU0I3WEc0Z0lFVjJaVzUwVUd4MVoybHVTSFZpTG1sdWFtVmpkR2x2Ymk1blpYUkpibk4wWVc1alpVaGhibVJzWlNncExuUnlZWFpsY25ObFJXNTBaWEpNWldGMlpTaG1jbTl0U1VRc0lIUnZTVVFzSUdGalkzVnRkV3hoZEdWRWFYTndZWFJqYUdWekxDQnNaV0YyWlN3Z1pXNTBaWElwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJoWTJOMWJYVnNZWFJsUkdseVpXTjBSR2x6Y0dGMFkyaGxjeWhsZG1WdWRITXBJSHRjYmlBZ1ptOXlSV0ZqYUVGalkzVnRkV3hoZEdWa0tHVjJaVzUwY3l3Z1lXTmpkVzExYkdGMFpVUnBjbVZqZEVScGMzQmhkR05vWlhOVGFXNW5iR1VwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUVnYzIxaGJHd2djMlYwSUc5bUlIQnliM0JoWjJGMGFXOXVJSEJoZEhSbGNtNXpMQ0JsWVdOb0lHOW1JSGRvYVdOb0lIZHBiR3dnWVdOalpYQjBJR0VnYzIxaGJHd2dZVzF2ZFc1MFhHNGdLaUJ2WmlCcGJtWnZjbTFoZEdsdmJpd2dZVzVrSUdkbGJtVnlZWFJsSUdFZ2MyVjBJRzltSUZ3aVpHbHpjR0YwWTJnZ2NtVmhaSGtnWlhabGJuUWdiMkpxWldOMGMxd2lJQzBnZDJocFkyaGNiaUFxSUdGeVpTQnpaWFJ6SUc5bUlHVjJaVzUwY3lCMGFHRjBJR2hoZG1VZ1lXeHlaV0ZrZVNCaVpXVnVJR0Z1Ym05MFlYUmxaQ0IzYVhSb0lHRWdjMlYwSUc5bUlHUnBjM0JoZEdOb1pXUmNiaUFxSUd4cGMzUmxibVZ5SUdaMWJtTjBhVzl1Y3k5cFpITXVJRlJvWlNCQlVFa2dhWE1nWkdWemFXZHVaV1FnZEdocGN5QjNZWGtnZEc4Z1pHbHpZMjkxY21GblpTQjBhR1Z6WlZ4dUlDb2djSEp2Y0dGbllYUnBiMjRnYzNSeVlYUmxaMmxsY3lCbWNtOXRJR0ZqZEhWaGJHeDVJR1Y0WldOMWRHbHVaeUIwYUdVZ1pHbHpjR0YwWTJobGN5d2djMmx1WTJVZ2QyVmNiaUFxSUdGc2QyRjVjeUIzWVc1MElIUnZJR052Ykd4bFkzUWdkR2hsSUdWdWRHbHlaU0J6WlhRZ2IyWWdaR2x6Y0dGMFkyaGxjeUJpWldadmNtVWdaWGhsWTNWMGFXNW5JR1YyWlc1MElHRmNiaUFxSUhOcGJtZHNaU0J2Ym1VdVhHNGdLbHh1SUNvZ1FHTnZibk4wY25WamRHOXlJRVYyWlc1MFVISnZjR0ZuWVhSdmNuTmNiaUFxTDF4dWRtRnlJRVYyWlc1MFVISnZjR0ZuWVhSdmNuTWdQU0I3WEc0Z0lHRmpZM1Z0ZFd4aGRHVlVkMjlRYUdGelpVUnBjM0JoZEdOb1pYTTZJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE1zWEc0Z0lHRmpZM1Z0ZFd4aGRHVlVkMjlRYUdGelpVUnBjM0JoZEdOb1pYTlRhMmx3VkdGeVoyVjBPaUJoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6VTJ0cGNGUmhjbWRsZEN4Y2JpQWdZV05qZFcxMWJHRjBaVVJwY21WamRFUnBjM0JoZEdOb1pYTTZJR0ZqWTNWdGRXeGhkR1ZFYVhKbFkzUkVhWE53WVhSamFHVnpMRnh1SUNCaFkyTjFiWFZzWVhSbFJXNTBaWEpNWldGMlpVUnBjM0JoZEdOb1pYTTZJR0ZqWTNWdGRXeGhkR1ZGYm5SbGNreGxZWFpsUkdsemNHRjBZMmhsYzF4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JGZG1WdWRGQnliM0JoWjJGMGIzSnpPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGVcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0gcmVxdWlyZSgnLi9nZXRUZXh0Q29udGVudEFjY2Vzc29yJyk7XG5cbi8qKlxuICogVGhpcyBoZWxwZXIgY2xhc3Mgc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IHRleHQgY29udGVudCBvZiBhIHRhcmdldCBub2RlLFxuICogYWxsb3dpbmcgY29tcGFyaXNvbiBvZiBjb250ZW50IGJlZm9yZSBhbmQgYWZ0ZXIgYSBnaXZlbiBldmVudC5cbiAqXG4gKiBJZGVudGlmeSB0aGUgbm9kZSB3aGVyZSBzZWxlY3Rpb24gY3VycmVudGx5IGJlZ2lucywgdGhlbiBvYnNlcnZlXG4gKiBib3RoIGl0cyB0ZXh0IGNvbnRlbnQgYW5kIGl0cyBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBET00uIFNpbmNlIHRoZVxuICogYnJvd3NlciBtYXkgbmF0aXZlbHkgcmVwbGFjZSB0aGUgdGFyZ2V0IG5vZGUgZHVyaW5nIGNvbXBvc2l0aW9uLCB3ZSBjYW5cbiAqIHVzZSBpdHMgcG9zaXRpb24gdG8gZmluZCBpdHMgcmVwbGFjZW1lbnQuXG4gKlxuICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gcm9vdFxuICovXG5mdW5jdGlvbiBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUocm9vdCkge1xuICB0aGlzLl9yb290ID0gcm9vdDtcbiAgdGhpcy5fc3RhcnRUZXh0ID0gdGhpcy5nZXRUZXh0KCk7XG4gIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7XG59XG5cbmFzc2lnbihGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9yb290ID0gbnVsbDtcbiAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsO1xuICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5wdXQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldFRleHQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290KSB7XG4gICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3RbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTtcbiAgfSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWRcbiAgICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRleHQ7XG4gICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7XG4gICAgdmFyIGVuZDtcbiAgICB2YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTtcbiAgICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoO1xuXG4gICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRMZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtaW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0O1xuICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNlVGFpbCk7XG4gICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgSFRNTERPTVByb3BlcnR5Q29uZmlnXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgTVVTVF9VU0VfQVRUUklCVVRFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLk1VU1RfVVNFX0FUVFJJQlVURTtcbnZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWTtcbnZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTtcbnZhciBIQVNfU0lERV9FRkZFQ1RTID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19TSURFX0VGRkVDVFM7XG52YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFO1xuXG52YXIgaGFzU1ZHO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB2YXIgaW1wbGVtZW50YXRpb24gPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbjtcbiAgaGFzU1ZHID0gaW1wbGVtZW50YXRpb24gJiYgaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJiBpbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlJywgJzEuMScpO1xufVxuXG52YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0ge1xuICBpc0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQoL14oZGF0YXxhcmlhKS1bYS16X11bYS16XFxkXy5cXC1dKiQvKSxcbiAgUHJvcGVydGllczoge1xuICAgIC8qKlxuICAgICAqIFN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhY2NlcHQ6IG51bGwsXG4gICAgYWNjZXB0Q2hhcnNldDogbnVsbCxcbiAgICBhY2Nlc3NLZXk6IG51bGwsXG4gICAgYWN0aW9uOiBudWxsLFxuICAgIGFsbG93RnVsbFNjcmVlbjogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYWxsb3dUcmFuc3BhcmVuY3k6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBhbHQ6IG51bGwsXG4gICAgYXN5bmM6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGF1dG9Db21wbGV0ZTogbnVsbCxcbiAgICAvLyBhdXRvRm9jdXMgaXMgcG9seWZpbGxlZC9ub3JtYWxpemVkIGJ5IEF1dG9Gb2N1c1V0aWxzXG4gICAgLy8gYXV0b0ZvY3VzOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBhdXRvUGxheTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2FwdHVyZTogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2VsbFBhZGRpbmc6IG51bGwsXG4gICAgY2VsbFNwYWNpbmc6IG51bGwsXG4gICAgY2hhclNldDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGNoYWxsZW5nZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGNoZWNrZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2xhc3NJRDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIFRvIHNldCBjbGFzc05hbWUgb24gU1ZHIGVsZW1lbnRzLCBpdCdzIG5lY2Vzc2FyeSB0byB1c2UgLnNldEF0dHJpYnV0ZTtcbiAgICAvLyB0aGlzIHdvcmtzIG9uIEhUTUwgZWxlbWVudHMgdG9vIGluIGFsbCBicm93c2VycyBleGNlcHQgSUU4LiBDb252ZW5pZW50bHksXG4gICAgLy8gSUU4IGRvZXNuJ3Qgc3VwcG9ydCBTVkcgYW5kIHNvIHdlIGNhbiBzaW1wbHkgdXNlIHRoZSBhdHRyaWJ1dGUgaW5cbiAgICAvLyBicm93c2VycyB0aGF0IHN1cHBvcnQgU1ZHIGFuZCB0aGUgcHJvcGVydHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCxcbiAgICAvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgSFRNTCBvciBTVkcuXG4gICAgY2xhc3NOYW1lOiBoYXNTVkcgPyBNVVNUX1VTRV9BVFRSSUJVVEUgOiBNVVNUX1VTRV9QUk9QRVJUWSxcbiAgICBjb2xzOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBjb2xTcGFuOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudEVkaXRhYmxlOiBudWxsLFxuICAgIGNvbnRleHRNZW51OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgY29udHJvbHM6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY29vcmRzOiBudWxsLFxuICAgIGNyb3NzT3JpZ2luOiBudWxsLFxuICAgIGRhdGE6IG51bGwsIC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBhcyBgc3JjYC5cbiAgICBkYXRlVGltZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgICdkZWZhdWx0JzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZGVmZXI6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRpcjogbnVsbCxcbiAgICBkaXNhYmxlZDogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsXG4gICAgZHJhZ2dhYmxlOiBudWxsLFxuICAgIGVuY1R5cGU6IG51bGwsXG4gICAgZm9ybTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZvcm1BY3Rpb246IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtRW5jVHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZvcm1NZXRob2Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtTm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZm9ybVRhcmdldDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZyYW1lQm9yZGVyOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaGVhZGVyczogbnVsbCxcbiAgICBoZWlnaHQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBoaWRkZW46IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGhpZ2g6IG51bGwsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBodG1sRm9yOiBudWxsLFxuICAgIGh0dHBFcXVpdjogbnVsbCxcbiAgICBpY29uOiBudWxsLFxuICAgIGlkOiBNVVNUX1VTRV9QUk9QRVJUWSxcbiAgICBpbnB1dE1vZGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpbnRlZ3JpdHk6IG51bGwsXG4gICAgaXM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBrZXlQYXJhbXM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBrZXlUeXBlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAga2luZDogbnVsbCxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBsYW5nOiBudWxsLFxuICAgIGxpc3Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBsb29wOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGxvdzogbnVsbCxcbiAgICBtYW5pZmVzdDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1hcmdpbkhlaWdodDogbnVsbCxcbiAgICBtYXJnaW5XaWR0aDogbnVsbCxcbiAgICBtYXg6IG51bGwsXG4gICAgbWF4TGVuZ3RoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbWVkaWE6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtZWRpYUdyb3VwOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbWluTGVuZ3RoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbmFtZTogbnVsbCxcbiAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcHRpbXVtOiBudWxsLFxuICAgIHBhdHRlcm46IG51bGwsXG4gICAgcGxhY2Vob2xkZXI6IG51bGwsXG4gICAgcG9zdGVyOiBudWxsLFxuICAgIHByZWxvYWQ6IG51bGwsXG4gICAgcmFkaW9Hcm91cDogbnVsbCxcbiAgICByZWFkT25seTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZWw6IG51bGwsXG4gICAgcmVxdWlyZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHJvbGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICByb3dzOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICByb3dTcGFuOiBudWxsLFxuICAgIHNhbmRib3g6IG51bGwsXG4gICAgc2NvcGU6IG51bGwsXG4gICAgc2NvcGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzY3JvbGxpbmc6IG51bGwsXG4gICAgc2VhbWxlc3M6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHNoYXBlOiBudWxsLFxuICAgIHNpemU6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHNpemVzOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3BhbjogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgc3BlbGxDaGVjazogbnVsbCxcbiAgICBzcmM6IG51bGwsXG4gICAgc3JjRG9jOiBNVVNUX1VTRV9QUk9QRVJUWSxcbiAgICBzcmNMYW5nOiBudWxsLFxuICAgIHNyY1NldDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHN0YXJ0OiBIQVNfTlVNRVJJQ19WQUxVRSxcbiAgICBzdGVwOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHN1bW1hcnk6IG51bGwsXG4gICAgdGFiSW5kZXg6IG51bGwsXG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHRpdGxlOiBudWxsLFxuICAgIHR5cGU6IG51bGwsXG4gICAgdXNlTWFwOiBudWxsLFxuICAgIHZhbHVlOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19TSURFX0VGRkVDVFMsXG4gICAgd2lkdGg6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB3bW9kZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHdyYXA6IG51bGwsXG5cbiAgICAvKipcbiAgICAgKiBSREZhIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhYm91dDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGRhdGF0eXBlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaW5saXN0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcHJlZml4OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gcHJvcGVydHkgaXMgYWxzbyBzdXBwb3J0ZWQgZm9yIE9wZW5HcmFwaCBpbiBtZXRhIHRhZ3MuXG4gICAgcHJvcGVydHk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICByZXNvdXJjZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgICd0eXBlb2YnOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgdm9jYWI6IE1VU1RfVVNFX0FUVFJJQlVURSxcblxuICAgIC8qKlxuICAgICAqIE5vbi1zdGFuZGFyZCBQcm9wZXJ0aWVzXG4gICAgICovXG4gICAgLy8gYXV0b0NhcGl0YWxpemUgYW5kIGF1dG9Db3JyZWN0IGFyZSBzdXBwb3J0ZWQgaW4gTW9iaWxlIFNhZmFyaSBmb3JcbiAgICAvLyBrZXlib2FyZCBoaW50cy5cbiAgICBhdXRvQ2FwaXRhbGl6ZTogbnVsbCxcbiAgICBhdXRvQ29ycmVjdDogbnVsbCxcbiAgICAvLyBhdXRvU2F2ZSBhbGxvd3MgV2ViS2l0L0JsaW5rIHRvIHBlcnNpc3QgdmFsdWVzIG9mIGlucHV0IGZpZWxkcyBvbiBwYWdlIHJlbG9hZHNcbiAgICBhdXRvU2F2ZTogbnVsbCxcbiAgICAvLyBjb2xvciBpcyBmb3IgU2FmYXJpIG1hc2staWNvbiBsaW5rXG4gICAgY29sb3I6IG51bGwsXG4gICAgLy8gaXRlbVByb3AsIGl0ZW1TY29wZSwgaXRlbVR5cGUgYXJlIGZvclxuICAgIC8vIE1pY3JvZGF0YSBzdXBwb3J0LiBTZWUgaHR0cDovL3NjaGVtYS5vcmcvZG9jcy9ncy5odG1sXG4gICAgaXRlbVByb3A6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpdGVtU2NvcGU6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGl0ZW1UeXBlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gaXRlbUlEIGFuZCBpdGVtUmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcbiAgICAvLyBvbmx5IHNwZWNpZmllZCBpbiB0aGUgdGhlIFdIQVRXRyBzcGVjIGRvY3VtZW50LiBTZWVcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaVxuICAgIGl0ZW1JRDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGl0ZW1SZWY6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAvLyByZXN1bHRzIHNob3cgbG9va2luZyBnbGFzcyBpY29uIGFuZCByZWNlbnQgc2VhcmNoZXMgb24gaW5wdXRcbiAgICAvLyBzZWFyY2ggZmllbGRzIGluIFdlYktpdC9CbGlua1xuICAgIHJlc3VsdHM6IG51bGwsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBzcGVjaWZpZXMgc2VjdXJpdHkgcmVzdHJpY3Rpb25zIG9uIGFuIGlmcmFtZVxuICAgIC8vIGFzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvbiBJRTwxMFxuICAgIHNlY3VyaXR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlvclxuICAgIHVuc2VsZWN0YWJsZTogTVVTVF9VU0VfQVRUUklCVVRFXG4gIH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7XG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgaHRtbEZvcjogJ2ZvcicsXG4gICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgRE9NUHJvcGVydHlOYW1lczoge1xuICAgIGF1dG9DYXBpdGFsaXplOiAnYXV0b2NhcGl0YWxpemUnLFxuICAgIGF1dG9Db21wbGV0ZTogJ2F1dG9jb21wbGV0ZScsXG4gICAgYXV0b0NvcnJlY3Q6ICdhdXRvY29ycmVjdCcsXG4gICAgYXV0b0ZvY3VzOiAnYXV0b2ZvY3VzJyxcbiAgICBhdXRvUGxheTogJ2F1dG9wbGF5JyxcbiAgICBhdXRvU2F2ZTogJ2F1dG9zYXZlJyxcbiAgICAvLyBgZW5jb2RpbmdgIGlzIGVxdWl2YWxlbnQgdG8gYGVuY3R5cGVgLCBJRTggbGFja3MgYW4gYGVuY3R5cGVgIHNldHRlci5cbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9mb3Jtcy5odG1sI2RvbS1mcy1lbmNvZGluZ1xuICAgIGVuY1R5cGU6ICdlbmNvZGluZycsXG4gICAgaHJlZkxhbmc6ICdocmVmbGFuZycsXG4gICAgcmFkaW9Hcm91cDogJ3JhZGlvZ3JvdXAnLFxuICAgIHNwZWxsQ2hlY2s6ICdzcGVsbGNoZWNrJyxcbiAgICBzcmNEb2M6ICdzcmNkb2MnLFxuICAgIHNyY1NldDogJ3NyY3NldCdcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIVE1MRE9NUHJvcGVydHlDb25maWc7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBMaW5rZWRWYWx1ZVV0aWxzXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlcycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBoYXNSZWFkT25seVZhbHVlID0ge1xuICAnYnV0dG9uJzogdHJ1ZSxcbiAgJ2NoZWNrYm94JzogdHJ1ZSxcbiAgJ2ltYWdlJzogdHJ1ZSxcbiAgJ2hpZGRlbic6IHRydWUsXG4gICdyYWRpbyc6IHRydWUsXG4gICdyZXNldCc6IHRydWUsXG4gICdzdWJtaXQnOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7XG4gICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5rID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgdmFsdWVMaW5rLiBJZiB5b3Ugd2FudCB0byB1c2UgJyArICdjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rIGFuZCB2aWNlIHZlcnNhLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIHZhbHVlTGluayBhbmQgYSB2YWx1ZSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgJyArICd0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluay4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKSB7XG4gIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSBjaGVja2VkIHByb3BlcnR5IG9yIG9uQ2hhbmdlIGV2ZW50LiAnICsgJ0lmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvICcgKyAndXNlIGNoZWNrZWRMaW5rJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG52YXIgcHJvcFR5cGVzID0ge1xuICB2YWx1ZTogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuICB9LFxuICBjaGVja2VkOiBmdW5jdGlvbiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgaWYgKCFwcm9wc1twcm9wTmFtZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAgb25DaGFuZ2U6IFJlYWN0UHJvcFR5cGVzLmZ1bmNcbn07XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFByb3ZpZGUgYSBsaW5rZWQgYHZhbHVlYCBhdHRyaWJ1dGUgZm9yIGNvbnRyb2xsZWQgZm9ybXMuIFlvdSBzaG91bGQgbm90IHVzZVxuICogdGhpcyBvdXRzaWRlIG9mIHRoZSBSZWFjdERPTSBjb250cm9sbGVkIGZvcm0gY29tcG9uZW50cy5cbiAqL1xudmFyIExpbmtlZFZhbHVlVXRpbHMgPSB7XG4gIGNoZWNrUHJvcFR5cGVzOiBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIG93bmVyKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJvcFR5cGVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IgPSBwcm9wVHlwZXNbcHJvcE5hbWVdKHByb3BzLCBwcm9wTmFtZSwgdGFnTmFtZSwgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcbiAgICogQHJldHVybiB7Kn0gY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gdmFsdWUgcHJvcCBvciBsaW5rLlxuICAgKi9cbiAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG4gICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2YgdGhlIGlucHV0IGVpdGhlciBmcm9tIGNoZWNrZWQgcHJvcFxuICAgKiAgICAgICAgICAgICBvciBsaW5rLlxuICAgKi9cbiAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG4gICAqL1xuICBleGVjdXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChpbnB1dFByb3BzLCBldmVudCkge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7XG4gICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLm9uQ2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpbmtlZFZhbHVlVXRpbHM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlNYVc1clpXUldZV3gxWlZWMGFXeHpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzYzF4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEZCeWIzQlVlWEJsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlhNbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpKeWs3WEc1Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzUyWVhJZ2FHRnpVbVZoWkU5dWJIbFdZV3gxWlNBOUlIdGNiaUFnSjJKMWRIUnZiaWM2SUhSeWRXVXNYRzRnSUNkamFHVmphMkp2ZUNjNklIUnlkV1VzWEc0Z0lDZHBiV0ZuWlNjNklIUnlkV1VzWEc0Z0lDZG9hV1JrWlc0bk9pQjBjblZsTEZ4dUlDQW5jbUZrYVc4bk9pQjBjblZsTEZ4dUlDQW5jbVZ6WlhRbk9pQjBjblZsTEZ4dUlDQW5jM1ZpYldsMEp6b2dkSEoxWlZ4dWZUdGNibHh1Wm5WdVkzUnBiMjRnWDJGemMyVnlkRk5wYm1kc1pVeHBibXNvYVc1d2RYUlFjbTl3Y3lrZ2UxeHVJQ0FoS0dsdWNIVjBVSEp2Y0hNdVkyaGxZMnRsWkV4cGJtc2dQVDBnYm5Wc2JDQjhmQ0JwYm5CMWRGQnliM0J6TG5aaGJIVmxUR2x1YXlBOVBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2REWVc1dWIzUWdjSEp2ZG1sa1pTQmhJR05vWldOclpXUk1hVzVySUdGdVpDQmhJSFpoYkhWbFRHbHVheTRnU1dZZ2VXOTFJSGRoYm5RZ2RHOGdkWE5sSUNjZ0t5QW5ZMmhsWTJ0bFpFeHBibXNzSUhsdmRTQndjbTlpWVdKc2VTQmtiMjVjWENkMElIZGhiblFnZEc4Z2RYTmxJSFpoYkhWbFRHbHVheUJoYm1RZ2RtbGpaU0IyWlhKellTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNTlYRzVtZFc1amRHbHZiaUJmWVhOelpYSjBWbUZzZFdWTWFXNXJLR2x1Y0hWMFVISnZjSE1wSUh0Y2JpQWdYMkZ6YzJWeWRGTnBibWRzWlV4cGJtc29hVzV3ZFhSUWNtOXdjeWs3WEc0Z0lDRW9hVzV3ZFhSUWNtOXdjeTUyWVd4MVpTQTlQU0J1ZFd4c0lDWW1JR2x1Y0hWMFVISnZjSE11YjI1RGFHRnVaMlVnUFQwZ2JuVnNiQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5RMkZ1Ym05MElIQnliM1pwWkdVZ1lTQjJZV3gxWlV4cGJtc2dZVzVrSUdFZ2RtRnNkV1VnYjNJZ2IyNURhR0Z1WjJVZ1pYWmxiblF1SUVsbUlIbHZkU0IzWVc1MElDY2dLeUFuZEc4Z2RYTmxJSFpoYkhWbElHOXlJRzl1UTJoaGJtZGxMQ0I1YjNVZ2NISnZZbUZpYkhrZ1pHOXVYRnduZENCM1lXNTBJSFJ2SUhWelpTQjJZV3gxWlV4cGJtc3VKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCZllYTnpaWEowUTJobFkydGxaRXhwYm1zb2FXNXdkWFJRY205d2N5a2dlMXh1SUNCZllYTnpaWEowVTJsdVoyeGxUR2x1YXlocGJuQjFkRkJ5YjNCektUdGNiaUFnSVNocGJuQjFkRkJ5YjNCekxtTm9aV05yWldRZ1BUMGdiblZzYkNBbUppQnBibkIxZEZCeWIzQnpMbTl1UTJoaGJtZGxJRDA5SUc1MWJHd3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owTmhibTV2ZENCd2NtOTJhV1JsSUdFZ1kyaGxZMnRsWkV4cGJtc2dZVzVrSUdFZ1kyaGxZMnRsWkNCd2NtOXdaWEowZVNCdmNpQnZia05vWVc1blpTQmxkbVZ1ZEM0Z0p5QXJJQ2RKWmlCNWIzVWdkMkZ1ZENCMGJ5QjFjMlVnWTJobFkydGxaQ0J2Y2lCdmJrTm9ZVzVuWlN3Z2VXOTFJSEJ5YjJKaFlteDVJR1J2Ymx4Y0ozUWdkMkZ1ZENCMGJ5QW5JQ3NnSjNWelpTQmphR1ZqYTJWa1RHbHVheWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibjFjYmx4dWRtRnlJSEJ5YjNCVWVYQmxjeUE5SUh0Y2JpQWdkbUZzZFdVNklHWjFibU4wYVc5dUlDaHdjbTl3Y3l3Z2NISnZjRTVoYldVc0lHTnZiWEJ2Ym1WdWRFNWhiV1VwSUh0Y2JpQWdJQ0JwWmlBb0lYQnliM0J6VzNCeWIzQk9ZVzFsWFNCOGZDQm9ZWE5TWldGa1QyNXNlVlpoYkhWbFczQnliM0J6TG5SNWNHVmRJSHg4SUhCeWIzQnpMbTl1UTJoaGJtZGxJSHg4SUhCeWIzQnpMbkpsWVdSUGJteDVJSHg4SUhCeWIzQnpMbVJwYzJGaWJHVmtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJGY25KdmNpZ25XVzkxSUhCeWIzWnBaR1ZrSUdFZ1lIWmhiSFZsWUNCd2NtOXdJSFJ2SUdFZ1ptOXliU0JtYVdWc1pDQjNhWFJvYjNWMElHRnVJQ2NnS3lBbllHOXVRMmhoYm1kbFlDQm9ZVzVrYkdWeUxpQlVhR2x6SUhkcGJHd2djbVZ1WkdWeUlHRWdjbVZoWkMxdmJteDVJR1pwWld4a0xpQkpaaUFuSUNzZ0ozUm9aU0JtYVdWc1pDQnphRzkxYkdRZ1ltVWdiWFYwWVdKc1pTQjFjMlVnWUdSbFptRjFiSFJXWVd4MVpXQXVJRTkwYUdWeWQybHpaU3dnSnlBcklDZHpaWFFnWldsMGFHVnlJR0J2YmtOb1lXNW5aV0FnYjNJZ1lISmxZV1JQYm14NVlDNG5LVHRjYmlBZ2ZTeGNiaUFnWTJobFkydGxaRG9nWm5WdVkzUnBiMjRnS0hCeWIzQnpMQ0J3Y205d1RtRnRaU3dnWTI5dGNHOXVaVzUwVG1GdFpTa2dlMXh1SUNBZ0lHbG1JQ2doY0hKdmNITmJjSEp2Y0U1aGJXVmRJSHg4SUhCeWIzQnpMbTl1UTJoaGJtZGxJSHg4SUhCeWIzQnpMbkpsWVdSUGJteDVJSHg4SUhCeWIzQnpMbVJwYzJGaWJHVmtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJGY25KdmNpZ25XVzkxSUhCeWIzWnBaR1ZrSUdFZ1lHTm9aV05yWldSZ0lIQnliM0FnZEc4Z1lTQm1iM0p0SUdacFpXeGtJSGRwZEdodmRYUWdZVzRnSnlBcklDZGdiMjVEYUdGdVoyVmdJR2hoYm1Sc1pYSXVJRlJvYVhNZ2QybHNiQ0J5Wlc1a1pYSWdZU0J5WldGa0xXOXViSGtnWm1sbGJHUXVJRWxtSUNjZ0t5QW5kR2hsSUdacFpXeGtJSE5vYjNWc1pDQmlaU0J0ZFhSaFlteGxJSFZ6WlNCZ1pHVm1ZWFZzZEVOb1pXTnJaV1JnTGlCUGRHaGxjbmRwYzJVc0lDY2dLeUFuYzJWMElHVnBkR2hsY2lCZ2IyNURhR0Z1WjJWZ0lHOXlJR0J5WldGa1QyNXNlV0F1SnlrN1hHNGdJSDBzWEc0Z0lHOXVRMmhoYm1kbE9pQlNaV0ZqZEZCeWIzQlVlWEJsY3k1bWRXNWpYRzU5TzF4dVhHNTJZWElnYkc5bloyVmtWSGx3WlVaaGFXeDFjbVZ6SUQwZ2UzMDdYRzVtZFc1amRHbHZiaUJuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvYjNkdVpYSXBJSHRjYmlBZ2FXWWdLRzkzYm1WeUtTQjdYRzRnSUNBZ2RtRnlJRzVoYldVZ1BTQnZkMjVsY2k1blpYUk9ZVzFsS0NrN1hHNGdJQ0FnYVdZZ0tHNWhiV1VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFuSUVOb1pXTnJJSFJvWlNCeVpXNWtaWElnYldWMGFHOWtJRzltSUdBbklDc2dibUZ0WlNBcklDZGdMaWM3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQW5KenRjYm4xY2JseHVMeW9xWEc0Z0tpQlFjbTkyYVdSbElHRWdiR2x1YTJWa0lHQjJZV3gxWldBZ1lYUjBjbWxpZFhSbElHWnZjaUJqYjI1MGNtOXNiR1ZrSUdadmNtMXpMaUJaYjNVZ2MyaHZkV3hrSUc1dmRDQjFjMlZjYmlBcUlIUm9hWE1nYjNWMGMybGtaU0J2WmlCMGFHVWdVbVZoWTNSRVQwMGdZMjl1ZEhKdmJHeGxaQ0JtYjNKdElHTnZiWEJ2Ym1WdWRITXVYRzRnS2k5Y2JuWmhjaUJNYVc1clpXUldZV3gxWlZWMGFXeHpJRDBnZTF4dUlDQmphR1ZqYTFCeWIzQlVlWEJsY3pvZ1puVnVZM1JwYjI0Z0tIUmhaMDVoYldVc0lIQnliM0J6TENCdmQyNWxjaWtnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJSEJ5YjNCT1lXMWxJR2x1SUhCeWIzQlVlWEJsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjNCVWVYQmxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3VG1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVnljbTl5SUQwZ2NISnZjRlI1Y0dWelczQnliM0JPWVcxbFhTaHdjbTl3Y3l3Z2NISnZjRTVoYldVc0lIUmhaMDVoYldVc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk11Y0hKdmNDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvWlhKeWIzSWdhVzV6ZEdGdVkyVnZaaUJGY25KdmNpQW1KaUFoS0dWeWNtOXlMbTFsYzNOaFoyVWdhVzRnYkc5bloyVmtWSGx3WlVaaGFXeDFjbVZ6S1NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJQYm14NUlHMXZibWwwYjNJZ2RHaHBjeUJtWVdsc2RYSmxJRzl1WTJVZ1ltVmpZWFZ6WlNCMGFHVnlaU0IwWlc1a2N5QjBieUJpWlNCaElHeHZkQ0J2WmlCMGFHVmNiaUFnSUNBZ0lDQWdMeThnYzJGdFpTQmxjbkp2Y2k1Y2JpQWdJQ0FnSUNBZ2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WelcyVnljbTl5TG0xbGMzTmhaMlZkSUQwZ2RISjFaVHRjYmx4dUlDQWdJQ0FnSUNCMllYSWdZV1JrWlc1a2RXMGdQU0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvYjNkdVpYSXBPMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjBaaGFXeGxaQ0JtYjNKdElIQnliM0JVZVhCbE9pQWxjeVZ6Snl3Z1pYSnliM0l1YldWemMyRm5aU3dnWVdSa1pXNWtkVzBwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHbHVjSFYwVUhKdmNITWdVSEp2Y0hNZ1ptOXlJR1p2Y20wZ1kyOXRjRzl1Wlc1MFhHNGdJQ0FxSUVCeVpYUjFjbTRnZXlwOUlHTjFjbkpsYm5RZ2RtRnNkV1VnYjJZZ2RHaGxJR2x1Y0hWMElHVnBkR2hsY2lCbWNtOXRJSFpoYkhWbElIQnliM0FnYjNJZ2JHbHVheTVjYmlBZ0lDb3ZYRzRnSUdkbGRGWmhiSFZsT2lCbWRXNWpkR2x2YmlBb2FXNXdkWFJRY205d2N5a2dlMXh1SUNBZ0lHbG1JQ2hwYm5CMWRGQnliM0J6TG5aaGJIVmxUR2x1YXlrZ2UxeHVJQ0FnSUNBZ1gyRnpjMlZ5ZEZaaGJIVmxUR2x1YXlocGJuQjFkRkJ5YjNCektUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCcGJuQjFkRkJ5YjNCekxuWmhiSFZsVEdsdWF5NTJZV3gxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHbHVjSFYwVUhKdmNITXVkbUZzZFdVN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnBibkIxZEZCeWIzQnpJRkJ5YjNCeklHWnZjaUJtYjNKdElHTnZiWEJ2Ym1WdWRGeHVJQ0FnS2lCQWNtVjBkWEp1SUhzcWZTQmpkWEp5Wlc1MElHTm9aV05yWldRZ2MzUmhkSFZ6SUc5bUlIUm9aU0JwYm5CMWRDQmxhWFJvWlhJZ1puSnZiU0JqYUdWamEyVmtJSEJ5YjNCY2JpQWdJQ29nSUNBZ0lDQWdJQ0FnSUNBZ2IzSWdiR2x1YXk1Y2JpQWdJQ292WEc0Z0lHZGxkRU5vWldOclpXUTZJR1oxYm1OMGFXOXVJQ2hwYm5CMWRGQnliM0J6S1NCN1hHNGdJQ0FnYVdZZ0tHbHVjSFYwVUhKdmNITXVZMmhsWTJ0bFpFeHBibXNwSUh0Y2JpQWdJQ0FnSUY5aGMzTmxjblJEYUdWamEyVmtUR2x1YXlocGJuQjFkRkJ5YjNCektUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCcGJuQjFkRkJ5YjNCekxtTm9aV05yWldSTWFXNXJMblpoYkhWbE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhVzV3ZFhSUWNtOXdjeTVqYUdWamEyVmtPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYVc1d2RYUlFjbTl3Y3lCUWNtOXdjeUJtYjNJZ1ptOXliU0JqYjIxd2IyNWxiblJjYmlBZ0lDb2dRSEJoY21GdElIdFRlVzUwYUdWMGFXTkZkbVZ1ZEgwZ1pYWmxiblFnWTJoaGJtZGxJR1YyWlc1MElIUnZJR2hoYm1Sc1pWeHVJQ0FnS2k5Y2JpQWdaWGhsWTNWMFpVOXVRMmhoYm1kbE9pQm1kVzVqZEdsdmJpQW9hVzV3ZFhSUWNtOXdjeXdnWlhabGJuUXBJSHRjYmlBZ0lDQnBaaUFvYVc1d2RYUlFjbTl3Y3k1MllXeDFaVXhwYm1zcElIdGNiaUFnSUNBZ0lGOWhjM05sY25SV1lXeDFaVXhwYm1zb2FXNXdkWFJRY205d2N5azdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNXdkWFJRY205d2N5NTJZV3gxWlV4cGJtc3VjbVZ4ZFdWemRFTm9ZVzVuWlNobGRtVnVkQzUwWVhKblpYUXVkbUZzZFdVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2FXNXdkWFJRY205d2N5NWphR1ZqYTJWa1RHbHVheWtnZTF4dUlDQWdJQ0FnWDJGemMyVnlkRU5vWldOclpXUk1hVzVyS0dsdWNIVjBVSEp2Y0hNcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUdsdWNIVjBVSEp2Y0hNdVkyaGxZMnRsWkV4cGJtc3VjbVZ4ZFdWemRFTm9ZVzVuWlNobGRtVnVkQzUwWVhKblpYUXVZMmhsWTJ0bFpDazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBibkIxZEZCeWIzQnpMbTl1UTJoaGJtZGxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzV3ZFhSUWNtOXdjeTV2YmtOb1lXNW5aUzVqWVd4c0tIVnVaR1ZtYVc1bFpDd2daWFpsYm5RcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ek95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIE9iamVjdC5hc3NpZ25cbiAqL1xuXG4vLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtb2JqZWN0LmFzc2lnblxuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZXMpIHtcbiAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiB0YXJnZXQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7XG4gIH1cblxuICB2YXIgdG8gPSBPYmplY3QodGFyZ2V0KTtcbiAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuICBmb3IgKHZhciBuZXh0SW5kZXggPSAxOyBuZXh0SW5kZXggPCBhcmd1bWVudHMubGVuZ3RoOyBuZXh0SW5kZXgrKykge1xuICAgIHZhciBuZXh0U291cmNlID0gYXJndW1lbnRzW25leHRJbmRleF07XG4gICAgaWYgKG5leHRTb3VyY2UgPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGZyb20gPSBPYmplY3QobmV4dFNvdXJjZSk7XG5cbiAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBhY2Nlc3NvcnMgbm9yIHByb3hpZXMuIFRoZXJlZm9yZSB0aGlzXG4gICAgLy8gY29weSBjYW5ub3QgdGhyb3cuIElmIHdlIGV2ZXIgc3VwcG9ydGVkIHRoaXMgdGhlbiB3ZSBtdXN0IGhhbmRsZVxuICAgIC8vIGV4Y2VwdGlvbnMgYW5kIHNpZGUtZWZmZWN0cy4gV2UgZG9uJ3Qgc3VwcG9ydCBzeW1ib2xzIHNvIHRoZXkgd29uJ3RcbiAgICAvLyBiZSB0cmFuc2ZlcnJlZC5cblxuICAgIGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG4gICAgICAgIHRvW2tleV0gPSBmcm9tW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFBvb2xlZENsYXNzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2ZcbiAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGRcbiAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMgdG9cbiAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW1cbiAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBmaWxlcy5cbiAqL1xudmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7XG4gIH1cbn07XG5cbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpO1xuICB9XG59O1xuXG52YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuICB9XG59O1xuXG52YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7XG4gIH1cbn07XG5cbnZhciBmaXZlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQsIGE1KSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0LCBhNSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KTtcbiAgfVxufTtcblxudmFyIHN0YW5kYXJkUmVsZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgIShpbnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcnlpbmcgdG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRvIGEgcG9vbCBvZiBhIGRpZmZlcmVudCB0eXBlLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFuY2UpO1xuICB9XG59O1xuXG52YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDtcbnZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXG4vKipcbiAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3NcbiAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZpZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvclxuICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGFcbiAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzIChvcHRpb25hbCkuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb29sZXIgQ3VzdG9taXphYmxlIHBvb2xlci5cbiAqL1xudmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikge1xuICB2YXIgTmV3S2xhc3MgPSBDb3B5Q29uc3RydWN0b3I7XG4gIE5ld0tsYXNzLmluc3RhbmNlUG9vbCA9IFtdO1xuICBOZXdLbGFzcy5nZXRQb29sZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09MRVI7XG4gIGlmICghTmV3S2xhc3MucG9vbFNpemUpIHtcbiAgICBOZXdLbGFzcy5wb29sU2l6ZSA9IERFRkFVTFRfUE9PTF9TSVpFO1xuICB9XG4gIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJlbGVhc2VyO1xuICByZXR1cm4gTmV3S2xhc3M7XG59O1xuXG52YXIgUG9vbGVkQ2xhc3MgPSB7XG4gIGFkZFBvb2xpbmdUbzogYWRkUG9vbGluZ1RvLFxuICBvbmVBcmd1bWVudFBvb2xlcjogb25lQXJndW1lbnRQb29sZXIsXG4gIHR3b0FyZ3VtZW50UG9vbGVyOiB0d29Bcmd1bWVudFBvb2xlcixcbiAgdGhyZWVBcmd1bWVudFBvb2xlcjogdGhyZWVBcmd1bWVudFBvb2xlcixcbiAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXIsXG4gIGZpdmVBcmd1bWVudFBvb2xlcjogZml2ZUFyZ3VtZW50UG9vbGVyXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5UWIyOXNaV1JEYkdGemN5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkJ2YjJ4bFpFTnNZWE56WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1UzUmhkR2xqSUhCdmIyeGxjbk11SUZObGRtVnlZV3dnWTNWemRHOXRJSFpsY25OcGIyNXpJR1p2Y2lCbFlXTm9JSEJ2ZEdWdWRHbGhiQ0J1ZFcxaVpYSWdiMlpjYmlBcUlHRnlaM1Z0Wlc1MGN5NGdRU0JqYjIxd2JHVjBaV3g1SUdkbGJtVnlhV01nY0c5dmJHVnlJR2x6SUdWaGMza2dkRzhnYVcxd2JHVnRaVzUwTENCaWRYUWdkMjkxYkdSY2JpQXFJSEpsY1hWcGNtVWdZV05qWlhOemFXNW5JSFJvWlNCZ1lYSm5kVzFsYm5SellDQnZZbXBsWTNRdUlFbHVJR1ZoWTJnZ2IyWWdkR2hsYzJVc0lHQjBhR2x6WUNCeVpXWmxjbk1nZEc5Y2JpQXFJSFJvWlNCRGJHRnpjeUJwZEhObGJHWXNJRzV2ZENCaGJpQnBibk4wWVc1alpTNGdTV1lnWVc1NUlHOTBhR1Z5Y3lCaGNtVWdibVZsWkdWa0xDQnphVzF3YkhrZ1lXUmtJSFJvWlcxY2JpQXFJR2hsY21Vc0lHOXlJR2x1SUhSb1pXbHlJRzkzYmlCbWFXeGxjeTVjYmlBcUwxeHVkbUZ5SUc5dVpVRnlaM1Z0Wlc1MFVHOXZiR1Z5SUQwZ1puVnVZM1JwYjI0Z0tHTnZjSGxHYVdWc1pITkdjbTl0S1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR052Y0hsR2FXVnNaSE5HY205dEtUdGNiaUFnSUNCeVpYUjFjbTRnYVc1emRHRnVZMlU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCTGJHRnpjeWhqYjNCNVJtbGxiR1J6Um5KdmJTazdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQjBkMjlCY21kMWJXVnVkRkJ2YjJ4bGNpQTlJR1oxYm1OMGFXOXVJQ2hoTVN3Z1lUSXBJSHRjYmlBZ2RtRnlJRXRzWVhOeklEMGdkR2hwY3p0Y2JpQWdhV1lnS0V0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkR0Z1WTJVZ1BTQkxiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3VjRzl3S0NrN1hHNGdJQ0FnUzJ4aGMzTXVZMkZzYkNocGJuTjBZVzVqWlN3Z1lURXNJR0V5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdhVzV6ZEdGdVkyVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJMYkdGemN5aGhNU3dnWVRJcE8xeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ2RHaHlaV1ZCY21kMWJXVnVkRkJ2YjJ4bGNpQTlJR1oxYm1OMGFXOXVJQ2hoTVN3Z1lUSXNJR0V6S1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR0V4TENCaE1pd2dZVE1wTzF4dUlDQWdJSEpsZEhWeWJpQnBibk4wWVc1alpUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRXRzWVhOektHRXhMQ0JoTWl3Z1lUTXBPMXh1SUNCOVhHNTlPMXh1WEc1MllYSWdabTkxY2tGeVozVnRaVzUwVUc5dmJHVnlJRDBnWm5WdVkzUnBiMjRnS0dFeExDQmhNaXdnWVRNc0lHRTBLU0I3WEc0Z0lIWmhjaUJMYkdGemN5QTlJSFJvYVhNN1hHNGdJR2xtSUNoTGJHRnpjeTVwYm5OMFlXNWpaVkJ2YjJ3dWJHVnVaM1JvS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1JoYm1ObElEMGdTMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbkJ2Y0NncE8xeHVJQ0FnSUV0c1lYTnpMbU5oYkd3b2FXNXpkR0Z1WTJVc0lHRXhMQ0JoTWl3Z1lUTXNJR0UwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdhVzV6ZEdGdVkyVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJMYkdGemN5aGhNU3dnWVRJc0lHRXpMQ0JoTkNrN1hHNGdJSDFjYm4wN1hHNWNiblpoY2lCbWFYWmxRWEpuZFcxbGJuUlFiMjlzWlhJZ1BTQm1kVzVqZEdsdmJpQW9ZVEVzSUdFeUxDQmhNeXdnWVRRc0lHRTFLU0I3WEc0Z0lIWmhjaUJMYkdGemN5QTlJSFJvYVhNN1hHNGdJR2xtSUNoTGJHRnpjeTVwYm5OMFlXNWpaVkJ2YjJ3dWJHVnVaM1JvS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1JoYm1ObElEMGdTMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbkJ2Y0NncE8xeHVJQ0FnSUV0c1lYTnpMbU5oYkd3b2FXNXpkR0Z1WTJVc0lHRXhMQ0JoTWl3Z1lUTXNJR0UwTENCaE5TazdYRzRnSUNBZ2NtVjBkWEp1SUdsdWMzUmhibU5sTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1MyeGhjM01vWVRFc0lHRXlMQ0JoTXl3Z1lUUXNJR0UxS1R0Y2JpQWdmVnh1ZlR0Y2JseHVkbUZ5SUhOMFlXNWtZWEprVW1Wc1pXRnpaWElnUFNCbWRXNWpkR2x2YmlBb2FXNXpkR0Z1WTJVcElIdGNiaUFnZG1GeUlFdHNZWE56SUQwZ2RHaHBjenRjYmlBZ0lTaHBibk4wWVc1alpTQnBibk4wWVc1alpXOW1JRXRzWVhOektTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkVWNubHBibWNnZEc4Z2NtVnNaV0Z6WlNCaGJpQnBibk4wWVc1alpTQnBiblJ2SUdFZ2NHOXZiQ0J2WmlCaElHUnBabVpsY21WdWRDQjBlWEJsTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2FXNXpkR0Z1WTJVdVpHVnpkSEoxWTNSdmNpZ3BPMXh1SUNCcFppQW9TMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbXhsYm1kMGFDQThJRXRzWVhOekxuQnZiMnhUYVhwbEtTQjdYRzRnSUNBZ1MyeGhjM011YVc1emRHRnVZMlZRYjI5c0xuQjFjMmdvYVc1emRHRnVZMlVwTzF4dUlDQjlYRzU5TzF4dVhHNTJZWElnUkVWR1FWVk1WRjlRVDA5TVgxTkpXa1VnUFNBeE1EdGNiblpoY2lCRVJVWkJWVXhVWDFCUFQweEZVaUE5SUc5dVpVRnlaM1Z0Wlc1MFVHOXZiR1Z5TzF4dVhHNHZLaXBjYmlBcUlFRjFaMjFsYm5SeklHQkRiM0I1UTI5dWMzUnlkV04wYjNKZ0lIUnZJR0psSUdFZ2NHOXZiR0ZpYkdVZ1kyeGhjM01zSUdGMVoyMWxiblJwYm1jZ2IyNXNlU0IwYUdVZ1kyeGhjM05jYmlBcUlHbDBjMlZzWmlBb2MzUmhkR2xqWVd4c2VTa2dibTkwSUdGa1pHbHVaeUJoYm5rZ2NISnZkRzkwZVhCcFkyRnNJR1pwWld4a2N5NGdRVzU1SUVOdmNIbERiMjV6ZEhKMVkzUnZjbHh1SUNvZ2VXOTFJR2RwZG1VZ2RHaHBjeUJ0WVhrZ2FHRjJaU0JoSUdCd2IyOXNVMmw2WldBZ2NISnZjR1Z5ZEhrc0lHRnVaQ0IzYVd4c0lHeHZiMnNnWm05eUlHRmNiaUFxSUhCeWIzUnZkSGx3YVdOaGJDQmdaR1Z6ZEhKMVkzUnZjbUFnYjI0Z2FXNXpkR0Z1WTJWeklDaHZjSFJwYjI1aGJDa3VYRzRnS2x4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdRMjl3ZVVOdmJuTjBjblZqZEc5eUlFTnZibk4wY25WamRHOXlJSFJvWVhRZ1kyRnVJR0psSUhWelpXUWdkRzhnY21WelpYUXVYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCd2IyOXNaWElnUTNWemRHOXRhWHBoWW14bElIQnZiMnhsY2k1Y2JpQXFMMXh1ZG1GeUlHRmtaRkJ2YjJ4cGJtZFVieUE5SUdaMWJtTjBhVzl1SUNoRGIzQjVRMjl1YzNSeWRXTjBiM0lzSUhCdmIyeGxjaWtnZTF4dUlDQjJZWElnVG1WM1MyeGhjM01nUFNCRGIzQjVRMjl1YzNSeWRXTjBiM0k3WEc0Z0lFNWxkMHRzWVhOekxtbHVjM1JoYm1ObFVHOXZiQ0E5SUZ0ZE8xeHVJQ0JPWlhkTGJHRnpjeTVuWlhSUWIyOXNaV1FnUFNCd2IyOXNaWElnZkh3Z1JFVkdRVlZNVkY5UVQwOU1SVkk3WEc0Z0lHbG1JQ2doVG1WM1MyeGhjM011Y0c5dmJGTnBlbVVwSUh0Y2JpQWdJQ0JPWlhkTGJHRnpjeTV3YjI5c1UybDZaU0E5SUVSRlJrRlZURlJmVUU5UFRGOVRTVnBGTzF4dUlDQjlYRzRnSUU1bGQwdHNZWE56TG5KbGJHVmhjMlVnUFNCemRHRnVaR0Z5WkZKbGJHVmhjMlZ5TzF4dUlDQnlaWFIxY200Z1RtVjNTMnhoYzNNN1hHNTlPMXh1WEc1MllYSWdVRzl2YkdWa1EyeGhjM01nUFNCN1hHNGdJR0ZrWkZCdmIyeHBibWRVYnpvZ1lXUmtVRzl2YkdsdVoxUnZMRnh1SUNCdmJtVkJjbWQxYldWdWRGQnZiMnhsY2pvZ2IyNWxRWEpuZFcxbGJuUlFiMjlzWlhJc1hHNGdJSFIzYjBGeVozVnRaVzUwVUc5dmJHVnlPaUIwZDI5QmNtZDFiV1Z1ZEZCdmIyeGxjaXhjYmlBZ2RHaHlaV1ZCY21kMWJXVnVkRkJ2YjJ4bGNqb2dkR2h5WldWQmNtZDFiV1Z1ZEZCdmIyeGxjaXhjYmlBZ1ptOTFja0Z5WjNWdFpXNTBVRzl2YkdWeU9pQm1iM1Z5UVhKbmRXMWxiblJRYjI5c1pYSXNYRzRnSUdacGRtVkJjbWQxYldWdWRGQnZiMnhsY2pvZ1ptbDJaVUZ5WjNWdFpXNTBVRzl2YkdWeVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZCdmIyeGxaRU5zWVhOek95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET00gPSByZXF1aXJlKCcuL1JlYWN0RE9NJyk7XG52YXIgUmVhY3RET01TZXJ2ZXIgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VydmVyJyk7XG52YXIgUmVhY3RJc29tb3JwaGljID0gcmVxdWlyZSgnLi9SZWFjdElzb21vcnBoaWMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGRlcHJlY2F0ZWQgPSByZXF1aXJlKCcuL2RlcHJlY2F0ZWQnKTtcblxuLy8gYHZlcnNpb25gIHdpbGwgYmUgYWRkZWQgaGVyZSBieSBSZWFjdElzb21vcnBoaWMuXG52YXIgUmVhY3QgPSB7fTtcblxuYXNzaWduKFJlYWN0LCBSZWFjdElzb21vcnBoaWMpO1xuXG5hc3NpZ24oUmVhY3QsIHtcbiAgLy8gUmVhY3RET01cbiAgZmluZERPTU5vZGU6IGRlcHJlY2F0ZWQoJ2ZpbmRET01Ob2RlJywgJ1JlYWN0RE9NJywgJ3JlYWN0LWRvbScsIFJlYWN0RE9NLCBSZWFjdERPTS5maW5kRE9NTm9kZSksXG4gIHJlbmRlcjogZGVwcmVjYXRlZCgncmVuZGVyJywgJ1JlYWN0RE9NJywgJ3JlYWN0LWRvbScsIFJlYWN0RE9NLCBSZWFjdERPTS5yZW5kZXIpLFxuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBkZXByZWNhdGVkKCd1bm1vdW50Q29tcG9uZW50QXROb2RlJywgJ1JlYWN0RE9NJywgJ3JlYWN0LWRvbScsIFJlYWN0RE9NLCBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKSxcblxuICAvLyBSZWFjdERPTVNlcnZlclxuICByZW5kZXJUb1N0cmluZzogZGVwcmVjYXRlZCgncmVuZGVyVG9TdHJpbmcnLCAnUmVhY3RET01TZXJ2ZXInLCAncmVhY3QtZG9tL3NlcnZlcicsIFJlYWN0RE9NU2VydmVyLCBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZyksXG4gIHJlbmRlclRvU3RhdGljTWFya3VwOiBkZXByZWNhdGVkKCdyZW5kZXJUb1N0YXRpY01hcmt1cCcsICdSZWFjdERPTVNlcnZlcicsICdyZWFjdC1kb20vc2VydmVyJywgUmVhY3RET01TZXJ2ZXIsIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RhdGljTWFya3VwKVxufSk7XG5cblJlYWN0Ll9fU0VDUkVUX0RPTV9ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID0gUmVhY3RET007XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcblxudmFyIGZpbmRET01Ob2RlID0gcmVxdWlyZSgnLi9maW5kRE9NTm9kZScpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuS2V5ID0gJ19nZXRET01Ob2RlRGlkV2Fybic7XG5cbnZhciBSZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbiA9IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgY29tcG9uZW50LlxuICAgKiBAZmluYWxcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgZ2V0RE9NTm9kZTogZnVuY3Rpb24gKCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHRoaXMuY29uc3RydWN0b3JbZGlkV2FybktleV0sICclcy5nZXRET01Ob2RlKC4uLikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAnICsgJ1JlYWN0RE9NLmZpbmRET01Ob2RlKGluc3RhbmNlKSBpbnN0ZWFkLicsIFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLmdldE5hbWUoKSB8fCB0aGlzLnRhZ05hbWUgfHwgJ1Vua25vd24nKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNvbnN0cnVjdG9yW2RpZFdhcm5LZXldID0gdHJ1ZTtcbiAgICByZXR1cm4gZmluZERPTU5vZGUodGhpcyk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW47XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFSnliM2R6WlhKRGIyMXdiMjVsYm5STmFYaHBiaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkNjbTkzYzJWeVEyOXRjRzl1Wlc1MFRXbDRhVzVjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVsdWMzUmhibU5sVFdGd0p5azdYRzVjYm5aaGNpQm1hVzVrUkU5TlRtOWtaU0E5SUhKbGNYVnBjbVVvSnk0dlptbHVaRVJQVFU1dlpHVW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1MllYSWdaR2xrVjJGeWJrdGxlU0E5SUNkZloyVjBSRTlOVG05a1pVUnBaRmRoY200bk8xeHVYRzUyWVhJZ1VtVmhZM1JDY205M2MyVnlRMjl0Y0c5dVpXNTBUV2w0YVc0Z1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQkVUMDBnYm05a1pTQnlaVzVrWlhKbFpDQmllU0IwYUdseklHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnliaUI3UkU5TlJXeGxiV1Z1ZEgwZ1ZHaGxJSEp2YjNRZ2JtOWtaU0J2WmlCMGFHbHpJR052YlhCdmJtVnVkQzVjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxSUVCd2NtOTBaV04wWldSY2JpQWdJQ292WEc0Z0lHZGxkRVJQVFU1dlpHVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGFHbHpMbU52Ym5OMGNuVmpkRzl5VzJScFpGZGhjbTVMWlhsZExDQW5KWE11WjJWMFJFOU5UbTlrWlNndUxpNHBJR2x6SUdSbGNISmxZMkYwWldRdUlGQnNaV0Z6WlNCMWMyVWdKeUFySUNkU1pXRmpkRVJQVFM1bWFXNWtSRTlOVG05a1pTaHBibk4wWVc1alpTa2dhVzV6ZEdWaFpDNG5MQ0JTWldGamRFbHVjM1JoYm1ObFRXRndMbWRsZENoMGFHbHpLUzVuWlhST1lXMWxLQ2tnZkh3Z2RHaHBjeTUwWVdkT1lXMWxJSHg4SUNkVmJtdHViM2R1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RHaHBjeTVqYjI1emRISjFZM1J2Y2x0a2FXUlhZWEp1UzJWNVhTQTlJSFJ5ZFdVN1hHNGdJQ0FnY21WMGRYSnVJR1pwYm1SRVQwMU9iMlJsS0hSb2FYTXBPMXh1SUNCOVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBRbkp2ZDNObGNrTnZiWEJ2Ym1WdWRFMXBlR2x1T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0gcmVxdWlyZSgnLi9SZWFjdEV2ZW50RW1pdHRlck1peGluJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBWaWV3cG9ydE1ldHJpY3MgPSByZXF1aXJlKCcuL1ZpZXdwb3J0TWV0cmljcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1cHBvcnRlZCcpO1xuXG4vKipcbiAqIFN1bW1hcnkgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgZXZlbnQgaGFuZGxpbmc6XG4gKlxuICogIC0gVG9wLWxldmVsIGRlbGVnYXRpb24gaXMgdXNlZCB0byB0cmFwIG1vc3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG4gKiAgICBtYXkgb25seSBvY2N1ciBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZlxuICogICAgUmVhY3RFdmVudExpc3RlbmVyLCB3aGljaCBpcyBpbmplY3RlZCBhbmQgY2FuIHRoZXJlZm9yZSBzdXBwb3J0IHBsdWdnYWJsZVxuICogICAgZXZlbnQgc291cmNlcy4gVGhpcyBpcyB0aGUgb25seSB3b3JrIHRoYXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5cbiAqXG4gKiAgLSBXZSBub3JtYWxpemUgYW5kIGRlLWR1cGxpY2F0ZSBldmVudHMgdG8gYWNjb3VudCBmb3IgYnJvd3NlciBxdWlya3MuIFRoaXNcbiAqICAgIG1heSBiZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFkLlxuICpcbiAqICAtIEZvcndhcmQgdGhlc2UgbmF0aXZlIGV2ZW50cyAod2l0aCB0aGUgYXNzb2NpYXRlZCB0b3AtbGV2ZWwgdHlwZSB1c2VkIHRvXG4gKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5IdWJgLCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG4gKiAgICB0byBleHRyYWN0IGFueSBzeW50aGV0aWMgZXZlbnRzLlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVtIHdpdGhcbiAqICAgIFwiZGlzcGF0Y2hlc1wiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURzIHRoYXQgY2FyZSBhYm91dCB0aGF0IGV2ZW50LlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLlxuICpcbiAqIE92ZXJ2aWV3IG9mIFJlYWN0IGFuZCB0aGUgZXZlbnQgc3lzdGVtOlxuICpcbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqIHwgICAgRE9NICAgICB8ICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqICAgICAgIHwgICAgICAgICAgIC5cbiAqICAgICAgIHYgICAgICAgICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqIHwgUmVhY3RFdmVudCB8ICAgIC5cbiAqIHwgIExpc3RlbmVyICB8ICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZlbnR8XG4gKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4gICAgIHxcbiAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58RXZlbnRQbHVnaW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfFxuICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0b3JzfFxuICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfFxuICogfCAgRW1pdHRlciAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lufFxuICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1dGlsaXRpZXMgfFxuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rXG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZlfFxuICogICAgICAgKyAgICAgICAgICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8XG4gKiArLS0tLS0tLS0tLS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAqIHwgYXBwbGljYXRpb24gfCAgIC5cbiAqIHwtLS0tLS0tLS0tLS0tfCAgIC5cbiAqIHwgICAgICAgICAgICAgfCAgIC5cbiAqIHwgICAgICAgICAgICAgfCAgIC5cbiAqICstLS0tLS0tLS0tLS0tKyAgIC5cbiAqICAgICAgICAgICAgICAgICAgIC5cbiAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwgUHVycG9zZSBFdmVudCBQbHVnaW4gU3lzdGVtXG4gKi9cblxudmFyIGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9O1xudmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gZmFsc2U7XG52YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDtcblxuLy8gRm9yIGV2ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQgYVxuLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5nIGF0IGBkb2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlXG4vLyBldmVudHMgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGhlcmVcbnZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG4gIHRvcEFib3J0OiAnYWJvcnQnLFxuICB0b3BCbHVyOiAnYmx1cicsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG4gIHRvcENoYW5nZTogJ2NoYW5nZScsXG4gIHRvcENsaWNrOiAnY2xpY2snLFxuICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJyxcbiAgdG9wQ29tcG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLFxuICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2NvbXBvc2l0aW9udXBkYXRlJyxcbiAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVudScsXG4gIHRvcENvcHk6ICdjb3B5JyxcbiAgdG9wQ3V0OiAnY3V0JyxcbiAgdG9wRG91YmxlQ2xpY2s6ICdkYmxjbGljaycsXG4gIHRvcERyYWc6ICdkcmFnJyxcbiAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQnLFxuICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLFxuICB0b3BEcmFnRXhpdDogJ2RyYWdleGl0JyxcbiAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJyxcbiAgdG9wRHJhZ092ZXI6ICdkcmFnb3ZlcicsXG4gIHRvcERyYWdTdGFydDogJ2RyYWdzdGFydCcsXG4gIHRvcERyb3A6ICdkcm9wJyxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdlbmRlZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BGb2N1czogJ2ZvY3VzJyxcbiAgdG9wSW5wdXQ6ICdpbnB1dCcsXG4gIHRvcEtleURvd246ICdrZXlkb3duJyxcbiAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsXG4gIHRvcEtleVVwOiAna2V5dXAnLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLFxuICB0b3BNb3VzZU1vdmU6ICdtb3VzZW1vdmUnLFxuICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JyxcbiAgdG9wTW91c2VPdmVyOiAnbW91c2VvdmVyJyxcbiAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuICB0b3BQYXN0ZTogJ3Bhc3RlJyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5JyxcbiAgdG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTY3JvbGw6ICdzY3JvbGwnLFxuICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFNlbGVjdGlvbkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcbiAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQnLFxuICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLFxuICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJyxcbiAgdG9wVG91Y2hNb3ZlOiAndG91Y2htb3ZlJyxcbiAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLFxuICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLFxuICB0b3BXYWl0aW5nOiAnd2FpdGluZycsXG4gIHRvcFdoZWVsOiAnd2hlZWwnXG59O1xuXG4vKipcbiAqIFRvIGVuc3VyZSBubyBjb25mbGljdHMgd2l0aCBvdGhlciBwb3RlbnRpYWwgUmVhY3QgaW5zdGFuY2VzIG9uIHRoZSBwYWdlXG4gKi9cbnZhciB0b3BMaXN0ZW5lcnNJREtleSA9ICdfcmVhY3RMaXN0ZW5lcnNJRCcgKyBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMik7XG5cbmZ1bmN0aW9uIGdldExpc3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQpIHtcbiAgLy8gSW4gSUU4LCBgbW91bnRBdGAgaXMgYSBob3N0IG9iamVjdCBhbmQgZG9lc24ndCBoYXZlIGBoYXNPd25Qcm9wZXJ0eWBcbiAgLy8gZGlyZWN0bHkuXG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vdW50QXQsIHRvcExpc3RlbmVyc0lES2V5KSkge1xuICAgIG1vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldID0gcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyKys7XG4gICAgYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXSA9IHt9O1xuICB9XG4gIHJldHVybiBhbHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dO1xufVxuXG4vKipcbiAqIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGlzIHVzZWQgdG8gYXR0YWNoIHRvcC1sZXZlbCBldmVudCBsaXN0ZW5lcnMuIEZvclxuICogZXhhbXBsZTpcbiAqXG4gKiAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5wdXRMaXN0ZW5lcignbXlJRCcsICdvbkNsaWNrJywgbXlGdW5jdGlvbik7XG4gKlxuICogVGhpcyB3b3VsZCBhbGxvY2F0ZSBhIFwicmVnaXN0cmF0aW9uXCIgb2YgYCgnb25DbGljaycsIG15RnVuY3Rpb24pYCBvbiAnbXlJRCcuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBhc3NpZ24oe30sIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4sIHtcblxuICAvKipcbiAgICogSW5qZWN0YWJsZSBldmVudCBiYWNrZW5kXG4gICAqL1xuICBSZWFjdEV2ZW50TGlzdGVuZXI6IG51bGwsXG5cbiAgaW5qZWN0aW9uOiB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFJlYWN0RXZlbnRMaXN0ZW5lclxuICAgICAqL1xuICAgIGluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKFJlYWN0RXZlbnRMaXN0ZW5lcikge1xuICAgICAgUmVhY3RFdmVudExpc3RlbmVyLnNldEhhbmRsZVRvcExldmVsKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5oYW5kbGVUb3BMZXZlbCk7XG4gICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyID0gUmVhY3RFdmVudExpc3RlbmVyO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2V0cyB3aGV0aGVyIG9yIG5vdCBhbnkgY3JlYXRlZCBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBUcnVlIGlmIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICovXG4gIHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7XG4gICAgaWYgKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlbmFibGVkKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgY2FsbGJhY2tzIGFyZSBlbmFibGVkLlxuICAgKi9cbiAgaXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgJiYgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdlIGxpc3RlbiBmb3IgYnViYmxlZCB0b3VjaCBldmVudHMgb24gdGhlIGRvY3VtZW50IG9iamVjdC5cbiAgICpcbiAgICogRmlyZWZveCB2OC4wMSAoYW5kIHBvc3NpYmx5IG90aGVycykgZXhoaWJpdGVkIHN0cmFuZ2UgYmVoYXZpb3Igd2hlblxuICAgKiBtb3VudGluZyBgb25tb3VzZW1vdmVgIGV2ZW50cyBhdCBzb21lIG5vZGUgdGhhdCB3YXMgbm90IHRoZSBkb2N1bWVudFxuICAgKiBlbGVtZW50LiBUaGUgc3ltcHRvbXMgd2VyZSB0aGF0IGlmIHlvdXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVyIHNvbWV0aGluZ1xuICAgKiBjb250YWluZWQgd2l0aGluIHRoYXQgbW91bnQgcG9pbnQgKGZvciBleGFtcGxlIG9uIHRoZSBiYWNrZ3JvdW5kKSB0aGVcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyBmb3IgYG9ubW91c2Vtb3ZlYCB3b24ndCBiZSBjYWxsZWQuIEhvd2V2ZXIsIGlmIHlvdVxuICAgKiByZWdpc3RlciB0aGUgYG1vdXNlbW92ZWAgb24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhlbiBpdCB3aWxsIG9mIGNvdXJzZVxuICAgKiBjYXRjaCBhbGwgYG1vdXNlbW92ZWBzLiBUaGlzIGFsb25nIHdpdGggaU9TIHF1aXJrcywganVzdGlmaWVzIHJlc3RyaWN0aW5nXG4gICAqIHRvcC1sZXZlbCBsaXN0ZW5lcnMgdG8gdGhlIGRvY3VtZW50IG9iamVjdCBvbmx5LCBhdCBsZWFzdCBmb3IgdGhlc2VcbiAgICogbW92ZW1lbnQgdHlwZXMgb2YgZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwgZXZlbnRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sXG4gICAqXG4gICAqIEFsc28sIGBrZXl1cGAvYGtleXByZXNzYC9ga2V5ZG93bmAgZG8gbm90IGJ1YmJsZSB0byB0aGUgd2luZG93IG9uIElFLCBidXRcbiAgICogdGhleSBidWJibGUgdG8gZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnREb2N1bWVudEhhbmRsZSBEb2N1bWVudCB3aGljaCBvd25zIHRoZSBjb250YWluZXJcbiAgICovXG4gIGxpc3RlblRvOiBmdW5jdGlvbiAocmVnaXN0cmF0aW9uTmFtZSwgY29udGVudERvY3VtZW50SGFuZGxlKSB7XG4gICAgdmFyIG1vdW50QXQgPSBjb250ZW50RG9jdW1lbnRIYW5kbGU7XG4gICAgdmFyIGlzTGlzdGVuaW5nID0gZ2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQobW91bnRBdCk7XG4gICAgdmFyIGRlcGVuZGVuY2llcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXTtcblxuICAgIHZhciB0b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRlbmNpZXNbaV07XG4gICAgICBpZiAoIShpc0xpc3RlbmluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSAmJiBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSkpIHtcbiAgICAgICAgaWYgKGRlcGVuZGVuY3kgPT09IHRvcExldmVsVHlwZXMudG9wV2hlZWwpIHtcbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnd2hlZWwnKSkge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wV2hlZWwsICd3aGVlbCcsIG1vdW50QXQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnbW91c2V3aGVlbCcpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BXaGVlbCwgJ21vdXNld2hlZWwnLCBtb3VudEF0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmlyZWZveCBuZWVkcyB0byBjYXB0dXJlIGEgZGlmZmVyZW50IG1vdXNlIHNjcm9sbCBldmVudC5cbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Rlc3RzL3Njcm9sbC5odG1sXG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BXaGVlbCwgJ0RPTU1vdXNlU2Nyb2xsJywgbW91bnRBdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09IHRvcExldmVsVHlwZXMudG9wU2Nyb2xsKSB7XG5cbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnc2Nyb2xsJywgdHJ1ZSkpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BTY3JvbGwsICdzY3JvbGwnLCBtb3VudEF0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wU2Nyb2xsLCAnc2Nyb2xsJywgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5jeSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BGb2N1cyB8fCBkZXBlbmRlbmN5ID09PSB0b3BMZXZlbFR5cGVzLnRvcEJsdXIpIHtcblxuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1cycsIHRydWUpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wRm9jdXMsICdmb2N1cycsIG1vdW50QXQpO1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcEJsdXIsICdibHVyJywgbW91bnRBdCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykpIHtcbiAgICAgICAgICAgIC8vIElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdoaWNoIGJ1YmJsZS5cbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVsZWdhdGluZ190aGUuaHRtbFxuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wRm9jdXMsICdmb2N1c2luJywgbW91bnRBdCk7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BCbHVyLCAnZm9jdXNvdXQnLCBtb3VudEF0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgYmx1ciBhbmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0dGFjaGVkIG9uY2VcbiAgICAgICAgICBpc0xpc3RlbmluZ1t0b3BMZXZlbFR5cGVzLnRvcEJsdXJdID0gdHJ1ZTtcbiAgICAgICAgICBpc0xpc3RlbmluZ1t0b3BMZXZlbFR5cGVzLnRvcEZvY3VzXSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodG9wRXZlbnRNYXBwaW5nLmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG4gICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRlcGVuZGVuY3ksIHRvcEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcbiAgICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICAvKipcbiAgICogTGlzdGVucyB0byB3aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzLiBXZSBjYWNoZSBzY3JvbGwgdmFsdWVzIHNvIHRoYXRcbiAgICogYXBwbGljYXRpb24gY29kZSBjYW4gYWNjZXNzIHRoZW0gd2l0aG91dCB0cmlnZ2VyaW5nIHJlZmxvd3MuXG4gICAqXG4gICAqIE5PVEU6IFNjcm9sbCBldmVudHMgZG8gbm90IGJ1YmJsZS5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMvc2Nyb2xsLmh0bWxcbiAgICovXG4gIGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzogZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUpIHtcbiAgICAgIHZhciByZWZyZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hTY3JvbGxWYWx1ZXM7XG4gICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShyZWZyZXNoKTtcbiAgICAgIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH0sXG5cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiBFdmVudFBsdWdpbkh1Yi5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MsXG5cbiAgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6IEV2ZW50UGx1Z2luSHViLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFxuXG4gIHB1dExpc3RlbmVyOiBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcixcblxuICBnZXRMaXN0ZW5lcjogRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXIsXG5cbiAgZGVsZXRlTGlzdGVuZXI6IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVyLFxuXG4gIGRlbGV0ZUFsbExpc3RlbmVyczogRXZlbnRQbHVnaW5IdWIuZGVsZXRlQWxsTGlzdGVuZXJzXG5cbn0pO1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLCAnUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJywge1xuICBwdXRMaXN0ZW5lcjogJ3B1dExpc3RlbmVyJyxcbiAgZGVsZXRlTGlzdGVuZXI6ICdkZWxldGVMaXN0ZW5lcidcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q2hpbGRSZWNvbmNpbGVyXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG5cbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0YW5jZXMsIGNoaWxkLCBuYW1lKSB7XG4gIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3RhbmNlLlxuICB2YXIga2V5VW5pcXVlID0gY2hpbGRJbnN0YW5jZXNbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhrZXlVbmlxdWUsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4nLCBuYW1lKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoY2hpbGQgIT0gbnVsbCAmJiBrZXlVbmlxdWUpIHtcbiAgICBjaGlsZEluc3RhbmNlc1tuYW1lXSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoY2hpbGQsIG51bGwpO1xuICB9XG59XG5cbi8qKlxuICogUmVhY3RDaGlsZFJlY29uY2lsZXIgcHJvdmlkZXMgaGVscGVycyBmb3IgaW5pdGlhbGl6aW5nIG9yIHVwZGF0aW5nIGEgc2V0IG9mXG4gKiBjaGlsZHJlbi4gSXRzIG91dHB1dCBpcyBzdWl0YWJsZSBmb3IgcGFzc2luZyBpdCBvbnRvIFJlYWN0TXVsdGlDaGlsZCB3aGljaFxuICogZG9lcyBkaWZmZWQgcmVvcmRlcmluZyBhbmQgaW5zZXJ0aW9uLlxuICovXG52YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZE5vZGVzIE5lc3RlZCBjaGlsZCBtYXBzLlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgaW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgaWYgKG5lc3RlZENoaWxkTm9kZXMgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBjaGlsZEluc3RhbmNlcyA9IHt9O1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgaW5zdGFudGlhdGVDaGlsZCwgY2hpbGRJbnN0YW5jZXMpO1xuICAgIHJldHVybiBjaGlsZEluc3RhbmNlcztcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gYW5kIHJldHVybnMgYSBuZXcgc2V0IG9mIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBoYXZlIGEgd2F5IHRvIHRyYWNrIG1vdmVzIGhlcmUgYnV0IGlmIHdlIHVzZSBpdGVyYXRvcnNcbiAgICAvLyBpbnN0ZWFkIG9mIGZvci4uaW4gd2UgY2FuIHppcCB0aGUgaXRlcmF0b3JzIGFuZCBjaGVjayBpZiBhbiBpdGVtIGhhc1xuICAgIC8vIG1vdmVkLlxuICAgIC8vIFRPRE86IElmIG5vdGhpbmcgaGFzIGNoYW5nZWQsIHJldHVybiB0aGUgcHJldkNoaWxkcmVuIG9iamVjdCBzbyB0aGF0IHdlXG4gICAgLy8gY2FuIHF1aWNrbHkgYmFpbG91dCBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLlxuICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgbmFtZTtcbiAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG4gICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldkNoaWxkICYmIHByZXZDaGlsZC5fY3VycmVudEVsZW1lbnQ7XG4gICAgICB2YXIgbmV4dEVsZW1lbnQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG4gICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuICAgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q2hpbGQsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IHByZXZDaGlsZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcmV2Q2hpbGQpIHtcbiAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQsIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuICAgICAgICB2YXIgbmV4dENoaWxkSW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50LCBudWxsKTtcbiAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gbmV4dENoaWxkSW5zdGFuY2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFVubW91bnQgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQuXG4gICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpKSB7XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGlsZHJlbltuYW1lXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXh0Q2hpbGRyZW47XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlblxuICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC5cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSByZW5kZXJlZENoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgIGlmIChyZW5kZXJlZENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHZhciByZW5kZXJlZENoaWxkID0gcmVuZGVyZWRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocmVuZGVyZWRDaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFTm9hV3hrVW1WamIyNWphV3hsY2k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TkMweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeVhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFVtVmpiMjVqYVd4bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlNaV052Ym1OcGJHVnlKeWs3WEc1Y2JuWmhjaUJwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5cGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnYzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwzTm9iM1ZzWkZWd1pHRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpQTlJSEpsY1hWcGNtVW9KeTR2ZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNibVoxYm1OMGFXOXVJR2x1YzNSaGJuUnBZWFJsUTJocGJHUW9ZMmhwYkdSSmJuTjBZVzVqWlhNc0lHTm9hV3hrTENCdVlXMWxLU0I3WEc0Z0lDOHZJRmRsSUdadmRXNWtJR0VnWTI5dGNHOXVaVzUwSUdsdWMzUmhibU5sTGx4dUlDQjJZWElnYTJWNVZXNXBjWFZsSUQwZ1kyaHBiR1JKYm5OMFlXNWpaWE5iYm1GdFpWMGdQVDA5SUhWdVpHVm1hVzVsWkR0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aHJaWGxWYm1seGRXVXNJQ2RtYkdGMGRHVnVRMmhwYkdSeVpXNG9MaTR1S1RvZ1JXNWpiM1Z1ZEdWeVpXUWdkSGR2SUdOb2FXeGtjbVZ1SUhkcGRHZ2dkR2hsSUhOaGJXVWdhMlY1TENBbklDc2dKMkFsYzJBdUlFTm9hV3hrSUd0bGVYTWdiWFZ6ZENCaVpTQjFibWx4ZFdVN0lIZG9aVzRnZEhkdklHTm9hV3hrY21WdUlITm9ZWEpsSUdFZ2EyVjVMQ0J2Ym14NUlDY2dLeUFuZEdobElHWnBjbk4wSUdOb2FXeGtJSGRwYkd3Z1ltVWdkWE5sWkM0bkxDQnVZVzFsS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dUlDQnBaaUFvWTJocGJHUWdJVDBnYm5Wc2JDQW1KaUJyWlhsVmJtbHhkV1VwSUh0Y2JpQWdJQ0JqYUdsc1pFbHVjM1JoYm1ObGMxdHVZVzFsWFNBOUlHbHVjM1JoYm5ScFlYUmxVbVZoWTNSRGIyMXdiMjVsYm5Rb1kyaHBiR1FzSUc1MWJHd3BPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nVW1WaFkzUkRhR2xzWkZKbFkyOXVZMmxzWlhJZ2NISnZkbWxrWlhNZ2FHVnNjR1Z5Y3lCbWIzSWdhVzVwZEdsaGJHbDZhVzVuSUc5eUlIVndaR0YwYVc1bklHRWdjMlYwSUc5bVhHNGdLaUJqYUdsc1pISmxiaTRnU1hSeklHOTFkSEIxZENCcGN5QnpkV2wwWVdKc1pTQm1iM0lnY0dGemMybHVaeUJwZENCdmJuUnZJRkpsWVdOMFRYVnNkR2xEYUdsc1pDQjNhR2xqYUZ4dUlDb2daRzlsY3lCa2FXWm1aV1FnY21WdmNtUmxjbWx1WnlCaGJtUWdhVzV6WlhKMGFXOXVMbHh1SUNvdlhHNTJZWElnVW1WaFkzUkRhR2xzWkZKbFkyOXVZMmxzWlhJZ1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCSFpXNWxjbUYwWlhNZ1lTQmNJbTF2ZFc1MElHbHRZV2RsWENJZ1ptOXlJR1ZoWTJnZ2IyWWdkR2hsSUhOMWNIQnNhV1ZrSUdOb2FXeGtjbVZ1TGlCSmJpQjBhR1VnWTJGelpWeHVJQ0FnS2lCdlppQmdVbVZoWTNSRVQwMURiMjF3YjI1bGJuUmdMQ0JoSUcxdmRXNTBJR2x0WVdkbElHbHpJR0VnYzNSeWFXNW5JRzltSUcxaGNtdDFjQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCdVpYTjBaV1JEYUdsc1pFNXZaR1Z6SUU1bGMzUmxaQ0JqYUdsc1pDQnRZWEJ6TGx4dUlDQWdLaUJBY21WMGRYSnVJSHMvYjJKcVpXTjBmU0JCSUhObGRDQnZaaUJqYUdsc1pDQnBibk4wWVc1alpYTXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdhVzV6ZEdGdWRHbGhkR1ZEYUdsc1pISmxiam9nWm5WdVkzUnBiMjRnS0c1bGMzUmxaRU5vYVd4a1RtOWtaWE1zSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ2FXWWdLRzVsYzNSbFpFTm9hV3hrVG05a1pYTWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJqYUdsc1pFbHVjM1JoYm1ObGN5QTlJSHQ5TzF4dUlDQWdJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzRvYm1WemRHVmtRMmhwYkdST2IyUmxjeXdnYVc1emRHRnVkR2xoZEdWRGFHbHNaQ3dnWTJocGJHUkpibk4wWVc1alpYTXBPMXh1SUNBZ0lISmxkSFZ5YmlCamFHbHNaRWx1YzNSaGJtTmxjenRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsY3lCMGFHVWdjbVZ1WkdWeVpXUWdZMmhwYkdSeVpXNGdZVzVrSUhKbGRIVnlibk1nWVNCdVpYY2djMlYwSUc5bUlHTm9hV3hrY21WdUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJSEJ5WlhaRGFHbHNaSEpsYmlCUWNtVjJhVzkxYzJ4NUlHbHVhWFJwWVd4cGVtVmtJSE5sZENCdlppQmphR2xzWkhKbGJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCdVpYaDBRMmhwYkdSeVpXNGdSbXhoZENCamFHbHNaQ0JsYkdWdFpXNTBJRzFoY0hNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052Ym5SbGVIUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AyOWlhbVZqZEgwZ1FTQnVaWGNnYzJWMElHOW1JR05vYVd4a0lHbHVjM1JoYm1ObGN5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQjFjR1JoZEdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tIQnlaWFpEYUdsc1pISmxiaXdnYm1WNGRFTm9hV3hrY21WdUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQzh2SUZkbElHTjFjbkpsYm5Sc2VTQmtiMjRuZENCb1lYWmxJR0VnZDJGNUlIUnZJSFJ5WVdOcklHMXZkbVZ6SUdobGNtVWdZblYwSUdsbUlIZGxJSFZ6WlNCcGRHVnlZWFJ2Y25OY2JpQWdJQ0F2THlCcGJuTjBaV0ZrSUc5bUlHWnZjaTR1YVc0Z2QyVWdZMkZ1SUhwcGNDQjBhR1VnYVhSbGNtRjBiM0p6SUdGdVpDQmphR1ZqYXlCcFppQmhiaUJwZEdWdElHaGhjMXh1SUNBZ0lDOHZJRzF2ZG1Wa0xseHVJQ0FnSUM4dklGUlBSRTg2SUVsbUlHNXZkR2hwYm1jZ2FHRnpJR05vWVc1blpXUXNJSEpsZEhWeWJpQjBhR1VnY0hKbGRrTm9hV3hrY21WdUlHOWlhbVZqZENCemJ5QjBhR0YwSUhkbFhHNGdJQ0FnTHk4Z1kyRnVJSEYxYVdOcmJIa2dZbUZwYkc5MWRDQnBaaUJ1YjNSb2FXNW5JR2hoY3lCamFHRnVaMlZrTGx4dUlDQWdJR2xtSUNnaGJtVjRkRU5vYVd4a2NtVnVJQ1ltSUNGd2NtVjJRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmlBZ0lDQjJZWElnYm1GdFpUdGNiaUFnSUNCbWIzSWdLRzVoYldVZ2FXNGdibVY0ZEVOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNCcFppQW9JVzVsZUhSRGFHbHNaSEpsYmk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFpoY2lCd2NtVjJRMmhwYkdRZ1BTQndjbVYyUTJocGJHUnlaVzRnSmlZZ2NISmxka05vYVd4a2NtVnVXMjVoYldWZE8xeHVJQ0FnSUNBZ2RtRnlJSEJ5WlhaRmJHVnRaVzUwSUQwZ2NISmxka05vYVd4a0lDWW1JSEJ5WlhaRGFHbHNaQzVmWTNWeWNtVnVkRVZzWlcxbGJuUTdYRzRnSUNBZ0lDQjJZWElnYm1WNGRFVnNaVzFsYm5RZ1BTQnVaWGgwUTJocGJHUnlaVzViYm1GdFpWMDdYRzRnSUNBZ0lDQnBaaUFvY0hKbGRrTm9hV3hrSUNFOUlHNTFiR3dnSmlZZ2MyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5Rb2NISmxka1ZzWlcxbGJuUXNJRzVsZUhSRmJHVnRaVzUwS1NrZ2UxeHVJQ0FnSUNBZ0lDQlNaV0ZqZEZKbFkyOXVZMmxzWlhJdWNtVmpaV2wyWlVOdmJYQnZibVZ1ZENod2NtVjJRMmhwYkdRc0lHNWxlSFJGYkdWdFpXNTBMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lHNWxlSFJEYUdsc1pISmxibHR1WVcxbFhTQTlJSEJ5WlhaRGFHbHNaRHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR2xtSUNod2NtVjJRMmhwYkdRcElIdGNiaUFnSUNBZ0lDQWdJQ0JTWldGamRGSmxZMjl1WTJsc1pYSXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRDaHdjbVYyUTJocGJHUXNJRzVoYldVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQzh2SUZSb1pTQmphR2xzWkNCdGRYTjBJR0psSUdsdWMzUmhiblJwWVhSbFpDQmlaV1p2Y21VZ2FYUW5jeUJ0YjNWdWRHVmtMbHh1SUNBZ0lDQWdJQ0IyWVhJZ2JtVjRkRU5vYVd4a1NXNXpkR0Z1WTJVZ1BTQnBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEtHNWxlSFJGYkdWdFpXNTBMQ0J1ZFd4c0tUdGNiaUFnSUNBZ0lDQWdibVY0ZEVOb2FXeGtjbVZ1VzI1aGJXVmRJRDBnYm1WNGRFTm9hV3hrU1c1emRHRnVZMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJRlZ1Ylc5MWJuUWdZMmhwYkdSeVpXNGdkR2hoZENCaGNtVWdibThnYkc5dVoyVnlJSEJ5WlhObGJuUXVYRzRnSUNBZ1ptOXlJQ2h1WVcxbElHbHVJSEJ5WlhaRGFHbHNaSEpsYmlrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5WlhaRGFHbHNaSEpsYmk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQW1KaUFoS0c1bGVIUkRhR2xzWkhKbGJpQW1KaUJ1WlhoMFEyaHBiR1J5Wlc0dWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa3BLU0I3WEc0Z0lDQWdJQ0FnSUZKbFlXTjBVbVZqYjI1amFXeGxjaTUxYm0xdmRXNTBRMjl0Y0c5dVpXNTBLSEJ5WlhaRGFHbHNaSEpsYmx0dVlXMWxYU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdVpYaDBRMmhwYkdSeVpXNDdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWdWJXOTFiblJ6SUdGc2JDQnlaVzVrWlhKbFpDQmphR2xzWkhKbGJpNGdWR2hwY3lCemFHOTFiR1FnWW1VZ2RYTmxaQ0IwYnlCamJHVmhiaUIxY0NCamFHbHNaSEpsYmx4dUlDQWdLaUIzYUdWdUlIUm9hWE1nWTI5dGNHOXVaVzUwSUdseklIVnViVzkxYm5SbFpDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0J5Wlc1a1pYSmxaRU5vYVd4a2NtVnVJRkJ5WlhacGIzVnpiSGtnYVc1cGRHbGhiR2w2WldRZ2MyVjBJRzltSUdOb2FXeGtjbVZ1TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUhWdWJXOTFiblJEYUdsc1pISmxiam9nWm5WdVkzUnBiMjRnS0hKbGJtUmxjbVZrUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ1WVcxbElHbHVJSEpsYm1SbGNtVmtRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpXNWtaWEpsWkVOb2FXeGtjbVZ1TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCeVpXNWtaWEpsWkVOb2FXeGtJRDBnY21WdVpHVnlaV1JEYUdsc1pISmxibHR1WVcxbFhUdGNiaUFnSUNBZ0lDQWdVbVZoWTNSU1pXTnZibU5wYkdWeUxuVnViVzkxYm5SRGIyMXdiMjVsYm5Rb2NtVnVaR1Z5WldSRGFHbHNaQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q2hpbGRyZW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG5cbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyO1xudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcjtcblxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1xcLyg/IVxcLykvZztcbmZ1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7XG4gIHJldHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4LCAnLy8nKTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGRcbiAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxuICpcbiAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5cbiAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0IHdpdGguXG4gKi9cbmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250ZXh0KSB7XG4gIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcbiAgdGhpcy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuRm9yRWFjaEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtcbn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jO1xuICB2YXIgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cbiAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMoY2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZm9yRWFjaEZ1bmNcbiAqIEBwYXJhbSB7Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4dCBmb3IgZm9yRWFjaENvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRleHQgPSBGb3JFYWNoQm9va0tlZXBpbmcuZ2V0UG9vbGVkKGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCk7XG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZCwgdHJhdmVyc2VDb250ZXh0KTtcbiAgRm9yRWFjaEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGRcbiAqIG1hcHBpbmcuIEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgTWFwQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBtYXBGdW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC5cbiAqIEBwYXJhbSB7Pyp9IG1hcENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC5cbiAqL1xuZnVuY3Rpb24gTWFwQm9va0tlZXBpbmcobWFwUmVzdWx0LCBrZXlQcmVmaXgsIG1hcEZ1bmN0aW9uLCBtYXBDb250ZXh0KSB7XG4gIHRoaXMucmVzdWx0ID0gbWFwUmVzdWx0O1xuICB0aGlzLmtleVByZWZpeCA9IGtleVByZWZpeDtcbiAgdGhpcy5mdW5jID0gbWFwRnVuY3Rpb247XG4gIHRoaXMuY29udGV4dCA9IG1hcENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuTWFwQm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMucmVzdWx0ID0gbnVsbDtcbiAgdGhpcy5rZXlQcmVmaXggPSBudWxsO1xuICB0aGlzLmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtcbn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oTWFwQm9va0tlZXBpbmcsIGZvdXJBcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQoYm9va0tlZXBpbmcsIGNoaWxkLCBjaGlsZEtleSkge1xuICB2YXIgcmVzdWx0ID0gYm9va0tlZXBpbmcucmVzdWx0O1xuICB2YXIga2V5UHJlZml4ID0gYm9va0tlZXBpbmcua2V5UHJlZml4O1xuICB2YXIgZnVuYyA9IGJvb2tLZWVwaW5nLmZ1bmM7XG4gIHZhciBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDtcblxuICB2YXIgbWFwcGVkQ2hpbGQgPSBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50KyspO1xuICBpZiAoQXJyYXkuaXNBcnJheShtYXBwZWRDaGlsZCkpIHtcbiAgICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKG1hcHBlZENoaWxkLCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKG1hcHBlZENoaWxkICE9IG51bGwpIHtcbiAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG1hcHBlZENoaWxkKSkge1xuICAgICAgbWFwcGVkQ2hpbGQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLFxuICAgICAgLy8gS2VlcCBib3RoIHRoZSAobWFwcGVkKSBhbmQgb2xkIGtleXMgaWYgdGhleSBkaWZmZXIsIGp1c3QgYXNcbiAgICAgIC8vIHRyYXZlcnNlQWxsQ2hpbGRyZW4gdXNlZCB0byBkbyBmb3Igb2JqZWN0cyBhcyBjaGlsZHJlblxuICAgICAga2V5UHJlZml4ICsgKG1hcHBlZENoaWxkICE9PSBjaGlsZCA/IGVzY2FwZVVzZXJQcm92aWRlZEtleShtYXBwZWRDaGlsZC5rZXkgfHwgJycpICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xuICAgIH1cbiAgICByZXN1bHQucHVzaChtYXBwZWRDaGlsZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgYXJyYXksIHByZWZpeCwgZnVuYywgY29udGV4dCkge1xuICB2YXIgZXNjYXBlZFByZWZpeCA9ICcnO1xuICBpZiAocHJlZml4ICE9IG51bGwpIHtcbiAgICBlc2NhcGVkUHJlZml4ID0gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHByZWZpeCkgKyAnLyc7XG4gIH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IE1hcEJvb2tLZWVwaW5nLmdldFBvb2xlZChhcnJheSwgZXNjYXBlZFByZWZpeCwgZnVuYywgY29udGV4dCk7XG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHRyYXZlcnNlQ29udGV4dCk7XG4gIE1hcEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTtcbn1cblxuLyoqXG4gKiBNYXBzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBUaGUgcHJvdmlkZWQgbWFwRnVuY3Rpb24oY2hpbGQsIGtleSwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5jIFRoZSBtYXAgZnVuY3Rpb24uXG4gKiBAcGFyYW0geyp9IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuYywgY29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZnVuYywgY29udGV4dCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZER1bW15KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ291bnQgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzXG4gKiBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLlxuICovXG5mdW5jdGlvbiBjb3VudENoaWxkcmVuKGNoaWxkcmVuLCBjb250ZXh0KSB7XG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVsbCk7XG59XG5cbi8qKlxuICogRmxhdHRlbiBhIGNoaWxkcmVuIG9iamVjdCAodHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gKSBhbmRcbiAqIHJldHVybiBhbiBhcnJheSB3aXRoIGFwcHJvcHJpYXRlbHkgcmUta2V5ZWQgY2hpbGRyZW4uXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkoY2hpbGRyZW4pIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBSZWFjdENoaWxkcmVuID0ge1xuICBmb3JFYWNoOiBmb3JFYWNoQ2hpbGRyZW4sXG4gIG1hcDogbWFwQ2hpbGRyZW4sXG4gIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6IG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwsXG4gIGNvdW50OiBjb3VudENoaWxkcmVuLFxuICB0b0FycmF5OiB0b0FycmF5XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRyZW47IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENsYXNzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25zJyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzJyk7XG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIga2V5TWlycm9yID0gcmVxdWlyZSgnZmJqcy9saWIva2V5TWlycm9yJyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBNSVhJTlNfS0VZID0ga2V5T2YoeyBtaXhpbnM6IG51bGwgfSk7XG5cbi8qKlxuICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cbiAqL1xudmFyIFNwZWNQb2xpY3kgPSBrZXlNaXJyb3Ioe1xuICAvKipcbiAgICogVGhlc2UgbWV0aG9kcyBtYXkgYmUgZGVmaW5lZCBvbmx5IG9uY2UgYnkgdGhlIGNsYXNzIHNwZWNpZmljYXRpb24gb3IgbWl4aW4uXG4gICAqL1xuICBERUZJTkVfT05DRTogbnVsbCxcbiAgLyoqXG4gICAqIFRoZXNlIG1ldGhvZHMgbWF5IGJlIGRlZmluZWQgYnkgYm90aCB0aGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBhbmQgbWl4aW5zLlxuICAgKiBTdWJzZXF1ZW50IGRlZmluaXRpb25zIHdpbGwgYmUgY2hhaW5lZC4gVGhlc2UgbWV0aG9kcyBtdXN0IHJldHVybiB2b2lkLlxuICAgKi9cbiAgREVGSU5FX01BTlk6IG51bGwsXG4gIC8qKlxuICAgKiBUaGVzZSBtZXRob2RzIGFyZSBvdmVycmlkaW5nIHRoZSBiYXNlIGNsYXNzLlxuICAgKi9cbiAgT1ZFUlJJREVfQkFTRTogbnVsbCxcbiAgLyoqXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIHNpbWlsYXIgdG8gREVGSU5FX01BTlksIGV4Y2VwdCB3ZSBhc3N1bWUgdGhleSByZXR1cm5cbiAgICogb2JqZWN0cy4gV2UgdHJ5IHRvIG1lcmdlIHRoZSBrZXlzIG9mIHRoZSByZXR1cm4gdmFsdWVzIG9mIGFsbCB0aGUgbWl4ZWQgaW5cbiAgICogZnVuY3Rpb25zLiBJZiB0aGVyZSBpcyBhIGtleSBjb25mbGljdCB3ZSB0aHJvdy5cbiAgICovXG4gIERFRklORV9NQU5ZX01FUkdFRDogbnVsbFxufSk7XG5cbnZhciBpbmplY3RlZE1peGlucyA9IFtdO1xuXG52YXIgd2FybmVkU2V0UHJvcHMgPSBmYWxzZTtcbmZ1bmN0aW9uIHdhcm5TZXRQcm9wcygpIHtcbiAgaWYgKCF3YXJuZWRTZXRQcm9wcykge1xuICAgIHdhcm5lZFNldFByb3BzID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3NldFByb3BzKC4uLikgYW5kIHJlcGxhY2VQcm9wcyguLi4pIGFyZSBkZXByZWNhdGVkLiAnICsgJ0luc3RlYWQsIGNhbGwgcmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJykgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuICogb3IgbmF0aXZlIGNvbXBvbmVudHMuXG4gKlxuICogVG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzc1xuICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG4gKlxuICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuICogICAgIH1cbiAqICAgfSk7XG4gKlxuICogVGhlIGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRob2RzIHRoYXQgaGF2ZVxuICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3JcbiAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuICogY2xhc3Mgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLlxuICpcbiAqIEBpbnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZVxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmplY3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge2FycmF5fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIG1peGluczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXG4gICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBzdGF0aWNzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIHByb3BUeXBlczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb250ZXh0VHlwZXM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY2hpbGRDb250ZXh0VHlwZXM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQgb25cbiAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWx5XG4gICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgZ2V0RGVmYXVsdFByb3BzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCxcblxuICAvKipcbiAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkXG4gICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5cbiAgICpcbiAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgcmV0dXJuIHtcbiAgICogICAgICAgaXNPbjogZmFsc2UsXG4gICAqICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgZ2V0SW5pdGlhbFN0YXRlOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGdldENoaWxkQ29udGV4dDogU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQsXG5cbiAgLyoqXG4gICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcbiAgICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cbiAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuXG4gICAqXG4gICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICogICAgIHZhciBuYW1lID0gdGhpcy5wcm9wcy5uYW1lO1xuICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8L2Rpdj47XG4gICAqICAgfVxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAgICogQG5vc2lkZWVmZmVjdHNcbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICByZW5kZXI6IFNwZWNQb2xpY3kuREVGSU5FX09OQ0UsXG5cbiAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG4gICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAqIGJ5IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRgLlxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxNb3VudDogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgKiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50LlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudERpZE1vdW50OiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXG4gICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICpcbiAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XG4gICAqICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRcbiAgICogICAgIH0pO1xuICAgKiAgIH1cbiAgICpcbiAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3BcbiAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50XG4gICAqIHVwZGF0ZS5cbiAgICpcbiAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkge1xuICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMpIHx8XG4gICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG4gICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICogICB9XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBzaG91bGRDb21wb25lbnRVcGRhdGU6IFNwZWNQb2xpY3kuREVGSU5FX09OQ0UsXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb21cbiAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuICAgKiBhbmQgYG5leHRDb250ZXh0YC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAgICpcbiAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxVcGRhdGU6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAqIGJlZW4gdXBkYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wc1xuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0XG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50RGlkVXBkYXRlOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkIGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZVxuICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW5cbiAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuXG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50V2lsbFVubW91bnQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBTcGVjUG9saWN5Lk9WRVJSSURFX0JBU0VcblxufTtcblxuLyoqXG4gKiBNYXBwaW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG4gKlxuICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xuICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5cGUuIERlc3BpdGVcbiAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5IHVuZGVyXG4gKiB3aGljaCBhbGwgb3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gKi9cbnZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG4gIGRpc3BsYXlOYW1lOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG4gICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgfSxcbiAgbWl4aW5zOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIG1peGlucykge1xuICAgIGlmIChtaXhpbnMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jaGlsZENvbnRleHQpO1xuICAgIH1cbiAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IGFzc2lnbih7fSwgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dFR5cGVzKTtcbiAgfSxcbiAgY29udGV4dFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jb250ZXh0KTtcbiAgICB9XG4gICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMsIGNvbnRleHRUeXBlcyk7XG4gIH0sXG4gIC8qKlxuICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcbiAgICogYXV0b21hdGljIG1lcmdpbmcuXG4gICAqL1xuICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLCBnZXREZWZhdWx0UHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBnZXREZWZhdWx0UHJvcHM7XG4gICAgfVxuICB9LFxuICBwcm9wVHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLnByb3ApO1xuICAgIH1cbiAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBhc3NpZ24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcbiAgfSxcbiAgc3RhdGljczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuICB9LFxuICBhdXRvYmluZDogZnVuY3Rpb24gKCkge30gfTtcblxuLy8gbm9vcFxuZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7XG4gICAgaWYgKHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gaW52YXJpYW50IHNvIGNvbXBvbmVudHNcbiAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgbm90IGluIF9fREVWX19cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJywgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHByb3BOYW1lKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RPdmVycmlkZShwcm90bywgbmFtZSkge1xuICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSkgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdIDogbnVsbDtcblxuICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgIShzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5Lk9WRVJSSURFX0JBU0UpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSAnICsgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgKyAnZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLicsIG5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgaWYgKHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgIShzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZIHx8IHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VEKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgKyAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlICcgKyAndG8gYSBtaXhpbi4nLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcbiAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzc2VzLlxuICovXG5mdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICBpZiAoIXNwZWMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAhKHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcXCdyZSBhdHRlbXB0aW5nIHRvICcgKyAndXNlIGEgY29tcG9uZW50IGNsYXNzIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAhIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzcGVjKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcXCdyZSBhdHRlbXB0aW5nIHRvICcgKyAndXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHZhciBwcm90byA9IENvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcbiAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXG4gIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRlciB0aGVzZSBtZXRob2RzIGluIHRoZSBzcGVjLlxuICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcbiAgfVxuXG4gIGZvciAodmFyIG5hbWUgaW4gc3BlYykge1xuICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09IE1JWElOU19LRVkpIHtcbiAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92ZS5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBwcm9wZXJ0eSA9IHNwZWNbbmFtZV07XG4gICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShwcm90bywgbmFtZSk7XG5cbiAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG4gICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3VuZDpcbiAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPSBpc0Z1bmN0aW9uICYmICFpc1JlYWN0Q2xhc3NNZXRob2QgJiYgIWlzQWxyZWFkeURlZmluZWQgJiYgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAgIGlmIChzaG91bGRBdXRvQmluZCkge1xuICAgICAgICBpZiAoIXByb3RvLl9fcmVhY3RBdXRvQmluZE1hcCkge1xuICAgICAgICAgIHByb3RvLl9fcmVhY3RBdXRvQmluZE1hcCA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHByb3RvLl9fcmVhY3RBdXRvQmluZE1hcFtuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cbiAgICAgICAgICAhKGlzUmVhY3RDbGFzc01ldGhvZCAmJiAoc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQgfHwgc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyAnICsgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLCBzcGVjUG9saWN5LCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcbiAgICAgICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXG4gICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VEKSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZKSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gIGlmICghc3RhdGljcykge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdO1xuICAgIGlmICghc3RhdGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGlzUmVzZXJ2ZWQgPSAobmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVMpO1xuICAgICEhaXNSZXNlcnZlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIga2V5LiBEZWZpbmUgaXQgJyArICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgKyAnY29uc3RydWN0b3IuJywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGlzSW5oZXJpdGVkID0gKG5hbWUgaW4gQ29uc3RydWN0b3IpO1xuICAgICEhaXNJbmhlcml0ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICsgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlICcgKyAnZHVlIHRvIGEgbWl4aW4uJywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIENvbnN0cnVjdG9yW25hbWVdID0gcHJvcGVydHk7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICovXG5mdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4gICEob25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIGZvciAodmFyIGtleSBpbiB0d28pIHtcbiAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICEob25lW2tleV0gPT09IHVuZGVmaW5lZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICsgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0ICcgKyAnbWF5IGJlIGR1ZSB0byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0aGlzIG1heSBiZSBjYXVzZWQgYnkgdHdvICcgKyAnZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICsgJ3dpdGggY2xhc2hpbmcga2V5cy4nLCBrZXkpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvbmU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMgdGhlaXIgcmV0dXJuIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZFJlc3VsdCgpIHtcbiAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKGEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGI7XG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cbiAgICB2YXIgYyA9IHt9O1xuICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBiKTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtcbiAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5cbiAqL1xuZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XG4gIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDtcbiAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcbiAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIGJsb2NrLXNjb3BlZC12YXIsIG5vLXVuZGVmICovXG4gICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uIChuZXdUaGlzKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIC8vIFVzZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBhbiBhdXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsXG4gICAgICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cbiAgICAgIC8vIGxldCdzIHdhcm4uXG4gICAgICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdiaW5kKCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2RzIG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAnICsgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJywgY29tcG9uZW50TmFtZSkgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICsgJ1JlYWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgKyAnd2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLCBjb21wb25lbnROYW1lKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICAgICAgfVxuICAgICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcbiAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG4gICAgfTtcbiAgfVxuICByZXR1cm4gYm91bmRNZXRob2Q7XG59XG5cbi8qKlxuICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gKi9cbmZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7XG4gIGZvciAodmFyIGF1dG9CaW5kS2V5IGluIGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRNYXApIHtcbiAgICBpZiAoY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZE1hcC5oYXNPd25Qcm9wZXJ0eShhdXRvQmluZEtleSkpIHtcbiAgICAgIHZhciBtZXRob2QgPSBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kTWFwW2F1dG9CaW5kS2V5XTtcbiAgICAgIGNvbXBvbmVudFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFuZFxuICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5cbiAqL1xudmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHtcblxuICAvKipcbiAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50XG4gICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cbiAgICovXG4gIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKG5ld1N0YXRlLCBjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxQcm9wcyBTdWJzZXQgb2YgdGhlIG5leHQgcHJvcHMuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgcHJvcHMgYXJlIHVwZGF0ZWQuXG4gICAqIEBmaW5hbFxuICAgKiBAcHVibGljXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzZXRQcm9wczogZnVuY3Rpb24gKHBhcnRpYWxQcm9wcywgY2FsbGJhY2spIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblNldFByb3BzKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0UHJvcHModGhpcywgcGFydGlhbFByb3BzKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZSBhbGwgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UHJvcHMgU3Vic2V0IG9mIHRoZSBuZXh0IHByb3BzLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHByb3BzIGFyZSB1cGRhdGVkLlxuICAgKiBAZmluYWxcbiAgICogQHB1YmxpY1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcmVwbGFjZVByb3BzOiBmdW5jdGlvbiAobmV3UHJvcHMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5TZXRQcm9wcygpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VQcm9wcyh0aGlzLCBuZXdQcm9wcyk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge307XG5hc3NpZ24oUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RDbGFzc01peGluKTtcblxuLyoqXG4gKiBNb2R1bGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0ZSBjb21wb25lbnRzLlxuICpcbiAqIEBjbGFzcyBSZWFjdENsYXNzXG4gKi9cbnZhciBSZWFjdENsYXNzID0ge1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgY3JlYXRlQ2xhc3M6IGZ1bmN0aW9uIChzcGVjKSB7XG4gICAgdmFyIENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXG4gICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvciwgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgKyAnSlNYIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5JykgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRNYXApIHtcbiAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cbiAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFkLCB0aGV5IHVzZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIgaW5pdGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5nZXRJbml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9uKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIH07XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xhc3NDb21wb25lbnQoKTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcblxuICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3BlcnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRlLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/Jywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHtcbiAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9LFxuXG4gIGluamVjdGlvbjoge1xuICAgIGluamVjdE1peGluOiBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICAgIGluamVjdGVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2xhc3M7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFTnNZWE56TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVOc1lYTnpYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkRiMjF3YjI1bGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMjl0Y0c5dVpXNTBKeWs3WEc1MllYSWdVbVZoWTNSRmJHVnRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWc1pXMWxiblFuS1R0Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1eklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1ekp5azdYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Yms1aGJXVnpKeWs3WEc1MllYSWdVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1VnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVG05dmNGVndaR0YwWlZGMVpYVmxKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmxiWEIwZVU5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJWdGNIUjVUMkpxWldOMEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdhMlY1VFdseWNtOXlJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YTJWNVRXbHljbTl5SnlrN1hHNTJZWElnYTJWNVQyWWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlyWlhsUFppY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm5aaGNpQk5TVmhKVGxOZlMwVlpJRDBnYTJWNVQyWW9leUJ0YVhocGJuTTZJRzUxYkd3Z2ZTazdYRzVjYmk4cUtseHVJQ29nVUc5c2FXTnBaWE1nZEdoaGRDQmtaWE5qY21saVpTQnRaWFJvYjJSeklHbHVJR0JTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sWUM1Y2JpQXFMMXh1ZG1GeUlGTndaV05RYjJ4cFkza2dQU0JyWlhsTmFYSnliM0lvZTF4dUlDQXZLaXBjYmlBZ0lDb2dWR2hsYzJVZ2JXVjBhRzlrY3lCdFlYa2dZbVVnWkdWbWFXNWxaQ0J2Ym14NUlHOXVZMlVnWW5rZ2RHaGxJR05zWVhOeklITndaV05wWm1sallYUnBiMjRnYjNJZ2JXbDRhVzR1WEc0Z0lDQXFMMXh1SUNCRVJVWkpUa1ZmVDA1RFJUb2diblZzYkN4Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlhObElHMWxkR2h2WkhNZ2JXRjVJR0psSUdSbFptbHVaV1FnWW5rZ1ltOTBhQ0IwYUdVZ1kyeGhjM01nYzNCbFkybG1hV05oZEdsdmJpQmhibVFnYldsNGFXNXpMbHh1SUNBZ0tpQlRkV0p6WlhGMVpXNTBJR1JsWm1sdWFYUnBiMjV6SUhkcGJHd2dZbVVnWTJoaGFXNWxaQzRnVkdobGMyVWdiV1YwYUc5a2N5QnRkWE4wSUhKbGRIVnliaUIyYjJsa0xseHVJQ0FnS2k5Y2JpQWdSRVZHU1U1RlgwMUJUbGs2SUc1MWJHd3NYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVnpaU0J0WlhSb2IyUnpJR0Z5WlNCdmRtVnljbWxrYVc1bklIUm9aU0JpWVhObElHTnNZWE56TGx4dUlDQWdLaTljYmlBZ1QxWkZVbEpKUkVWZlFrRlRSVG9nYm5Wc2JDeGNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pYTmxJRzFsZEdodlpITWdZWEpsSUhOcGJXbHNZWElnZEc4Z1JFVkdTVTVGWDAxQlRsa3NJR1Y0WTJWd2RDQjNaU0JoYzNOMWJXVWdkR2hsZVNCeVpYUjFjbTVjYmlBZ0lDb2diMkpxWldOMGN5NGdWMlVnZEhKNUlIUnZJRzFsY21kbElIUm9aU0JyWlhseklHOW1JSFJvWlNCeVpYUjFjbTRnZG1Gc2RXVnpJRzltSUdGc2JDQjBhR1VnYldsNFpXUWdhVzVjYmlBZ0lDb2dablZ1WTNScGIyNXpMaUJKWmlCMGFHVnlaU0JwY3lCaElHdGxlU0JqYjI1bWJHbGpkQ0IzWlNCMGFISnZkeTVjYmlBZ0lDb3ZYRzRnSUVSRlJrbE9SVjlOUVU1WlgwMUZVa2RGUkRvZ2JuVnNiRnh1ZlNrN1hHNWNiblpoY2lCcGJtcGxZM1JsWkUxcGVHbHVjeUE5SUZ0ZE8xeHVYRzUyWVhJZ2QyRnlibVZrVTJWMFVISnZjSE1nUFNCbVlXeHpaVHRjYm1aMWJtTjBhVzl1SUhkaGNtNVRaWFJRY205d2N5Z3BJSHRjYmlBZ2FXWWdLQ0YzWVhKdVpXUlRaWFJRY205d2N5a2dlMXh1SUNBZ0lIZGhjbTVsWkZObGRGQnliM0J6SUQwZ2RISjFaVHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKM05sZEZCeWIzQnpLQzR1TGlrZ1lXNWtJSEpsY0d4aFkyVlFjbTl3Y3lndUxpNHBJR0Z5WlNCa1pYQnlaV05oZEdWa0xpQW5JQ3NnSjBsdWMzUmxZV1FzSUdOaGJHd2djbVZ1WkdWeUlHRm5ZV2x1SUdGMElIUm9aU0IwYjNBZ2JHVjJaV3d1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJEYjIxd2IzTnBkR1VnWTI5dGNHOXVaVzUwY3lCaGNtVWdhR2xuYUdWeUxXeGxkbVZzSUdOdmJYQnZibVZ1ZEhNZ2RHaGhkQ0JqYjIxd2IzTmxJRzkwYUdWeUlHTnZiWEJ2YzJsMFpWeHVJQ29nYjNJZ2JtRjBhWFpsSUdOdmJYQnZibVZ1ZEhNdVhHNGdLbHh1SUNvZ1ZHOGdZM0psWVhSbElHRWdibVYzSUhSNWNHVWdiMllnWUZKbFlXTjBRMnhoYzNOZ0xDQndZWE56SUdFZ2MzQmxZMmxtYVdOaGRHbHZiaUJ2Wmx4dUlDb2dlVzkxY2lCdVpYY2dZMnhoYzNNZ2RHOGdZRkpsWVdOMExtTnlaV0YwWlVOc1lYTnpZQzRnVkdobElHOXViSGtnY21WeGRXbHlaVzFsYm5RZ2IyWWdlVzkxY2lCamJHRnpjMXh1SUNvZ2MzQmxZMmxtYVdOaGRHbHZiaUJwY3lCMGFHRjBJSGx2ZFNCcGJYQnNaVzFsYm5RZ1lTQmdjbVZ1WkdWeVlDQnRaWFJvYjJRdVhHNGdLbHh1SUNvZ0lDQjJZWElnVFhsRGIyMXdiMjVsYm5RZ1BTQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemN5aDdYRzRnS2lBZ0lDQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBcUlDQWdJQ0FnSUhKbGRIVnliaUE4WkdsMlBraGxiR3h2SUZkdmNteGtQQzlrYVhZK08xeHVJQ29nSUNBZ0lIMWNiaUFxSUNBZ2ZTazdYRzRnS2x4dUlDb2dWR2hsSUdOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0Z2MzVndjRzl5ZEhNZ1lTQnpjR1ZqYVdacFl5QndjbTkwYjJOdmJDQnZaaUJ0WlhSb2IyUnpJSFJvWVhRZ2FHRjJaVnh1SUNvZ2MzQmxZMmxoYkNCdFpXRnVhVzVuSUNobExtY3VJR0J5Wlc1a1pYSmdLUzRnVTJWbElHQlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxZQ0JtYjNKY2JpQXFJRzF2Y21VZ2RHaGxJR052YlhCeVpXaGxibk5wZG1VZ2NISnZkRzlqYjJ3dUlFRnVlU0J2ZEdobGNpQndjbTl3WlhKMGFXVnpJR0Z1WkNCdFpYUm9iMlJ6SUdsdUlIUm9aVnh1SUNvZ1kyeGhjM01nYzNCbFkybG1hV05oZEdsdmJpQjNhV3hzSUdKbElHRjJZV2xzWVdKc1pTQnZiaUIwYUdVZ2NISnZkRzkwZVhCbExseHVJQ3BjYmlBcUlFQnBiblJsY21aaFkyVWdVbVZoWTNSRGJHRnpjMGx1ZEdWeVptRmpaVnh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm5aaGNpQlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJCYmlCaGNuSmhlU0J2WmlCTmFYaHBiaUJ2WW1wbFkzUnpJSFJ2SUdsdVkyeDFaR1VnZDJobGJpQmtaV1pwYm1sdVp5QjViM1Z5SUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSFI1Y0dVZ2UyRnljbUY1ZlZ4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUcxcGVHbHVjem9nVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FXNGdiMkpxWldOMElHTnZiblJoYVc1cGJtY2djSEp2Y0dWeWRHbGxjeUJoYm1RZ2JXVjBhRzlrY3lCMGFHRjBJSE5vYjNWc1pDQmlaU0JrWldacGJtVmtJRzl1WEc0Z0lDQXFJSFJvWlNCamIyMXdiMjVsYm5RbmN5QmpiMjV6ZEhKMVkzUnZjaUJwYm5OMFpXRmtJRzltSUdsMGN5QndjbTkwYjNSNWNHVWdLSE4wWVhScFl5QnRaWFJvYjJSektTNWNiaUFnSUNwY2JpQWdJQ29nUUhSNWNHVWdlMjlpYW1WamRIMWNiaUFnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FxTDF4dUlDQnpkR0YwYVdOek9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFWldacGJtbDBhVzl1SUc5bUlIQnliM0FnZEhsd1pYTWdabTl5SUhSb2FYTWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWRIbHdaU0I3YjJKcVpXTjBmVnh1SUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNvdlhHNGdJSEJ5YjNCVWVYQmxjem9nVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1JHVm1hVzVwZEdsdmJpQnZaaUJqYjI1MFpYaDBJSFI1Y0dWeklHWnZjaUIwYUdseklHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhSNWNHVWdlMjlpYW1WamRIMWNiaUFnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FxTDF4dUlDQmpiMjUwWlhoMFZIbHdaWE02SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUmxabWx1YVhScGIyNGdiMllnWTI5dWRHVjRkQ0IwZVhCbGN5QjBhR2x6SUdOdmJYQnZibVZ1ZENCelpYUnpJR1p2Y2lCcGRITWdZMmhwYkdSeVpXNHVYRzRnSUNBcVhHNGdJQ0FxSUVCMGVYQmxJSHR2WW1wbFkzUjlYRzRnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnS2k5Y2JpQWdZMmhwYkdSRGIyNTBaWGgwVkhsd1pYTTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxrc1hHNWNiaUFnTHk4Z1BUMDlQU0JFWldacGJtbDBhVzl1SUcxbGRHaHZaSE1nUFQwOVBWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZrSUhkb1pXNGdkR2hsSUdOdmJYQnZibVZ1ZENCcGN5QnRiM1Z1ZEdWa0xpQldZV3gxWlhNZ2FXNGdkR2hsSUcxaGNIQnBibWNnZDJsc2JDQmlaU0J6WlhRZ2IyNWNiaUFnSUNvZ1lIUm9hWE11Y0hKdmNITmdJR2xtSUhSb1lYUWdjSEp2Y0NCcGN5QnViM1FnYzNCbFkybG1hV1ZrSUNocExtVXVJSFZ6YVc1bklHRnVJR0JwYm1BZ1kyaGxZMnNwTGx4dUlDQWdLbHh1SUNBZ0tpQlVhR2x6SUcxbGRHaHZaQ0JwY3lCcGJuWnZhMlZrSUdKbFptOXlaU0JnWjJWMFNXNXBkR2xoYkZOMFlYUmxZQ0JoYm1RZ2RHaGxjbVZtYjNKbElHTmhibTV2ZENCeVpXeDVYRzRnSUNBcUlHOXVJR0IwYUdsekxuTjBZWFJsWUNCdmNpQjFjMlVnWUhSb2FYTXVjMlYwVTNSaGRHVmdMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dlltcGxZM1I5WEc0Z0lDQXFJRUJ2Y0hScGIyNWhiRnh1SUNBZ0tpOWNiaUFnWjJWMFJHVm1ZWFZzZEZCeWIzQnpPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WlgwMUZVa2RGUkN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0J2Ym1ObElHSmxabTl5WlNCMGFHVWdZMjl0Y0c5dVpXNTBJR2x6SUcxdmRXNTBaV1F1SUZSb1pTQnlaWFIxY200Z2RtRnNkV1VnZDJsc2JDQmlaU0IxYzJWa1hHNGdJQ0FxSUdGeklIUm9aU0JwYm1sMGFXRnNJSFpoYkhWbElHOW1JR0IwYUdsekxuTjBZWFJsWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dJQ0JuWlhSSmJtbDBhV0ZzVTNSaGRHVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdLaUFnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ29nSUNBZ0lDQWdhWE5QYmpvZ1ptRnNjMlVzWEc0Z0lDQXFJQ0FnSUNBZ0lHWnZiMEpoZWpvZ2JtVjNJRUpoZWtadmJ5Z3BYRzRnSUNBcUlDQWdJQ0I5WEc0Z0lDQXFJQ0FnZlZ4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHZZbXBsWTNSOVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ1oyVjBTVzVwZEdsaGJGTjBZWFJsT2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpYMDFGVWtkRlJDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FISmxkSFZ5YmlCN2IySnFaV04wZlZ4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdkbGRFTm9hV3hrUTI5dWRHVjRkRG9nVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dWOU5SVkpIUlVRc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWelpYTWdjSEp2Y0hNZ1puSnZiU0JnZEdocGN5NXdjbTl3YzJBZ1lXNWtJSE4wWVhSbElHWnliMjBnWUhSb2FYTXVjM1JoZEdWZ0lIUnZJSEpsYm1SbGNpQjBhR1ZjYmlBZ0lDb2djM1J5ZFdOMGRYSmxJRzltSUhSb1pTQmpiMjF3YjI1bGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUU1dklHZDFZWEpoYm5SbFpYTWdZWEpsSUcxaFpHVWdZV0p2ZFhRZ2QyaGxiaUJ2Y2lCb2IzY2diMlowWlc0Z2RHaHBjeUJ0WlhSb2IyUWdhWE1nYVc1MmIydGxaQ3dnYzI5Y2JpQWdJQ29nYVhRZ2JYVnpkQ0J1YjNRZ2FHRjJaU0J6YVdSbElHVm1abVZqZEhNdVhHNGdJQ0FxWEc0Z0lDQXFJQ0FnY21WdVpHVnlPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ29nSUNBZ0lIWmhjaUJ1WVcxbElEMGdkR2hwY3k1d2NtOXdjeTV1WVcxbE8xeHVJQ0FnS2lBZ0lDQWdjbVYwZFhKdUlEeGthWFkrU0dWc2JHOHNJSHR1WVcxbGZTRThMMlJwZGo0N1hHNGdJQ0FxSUNBZ2ZWeHVJQ0FnS2x4dUlDQWdLaUJBY21WMGRYSnVJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMWNiaUFnSUNvZ1FHNXZjMmxrWldWbVptVmpkSE5jYmlBZ0lDb2dRSEpsY1hWcGNtVmtYRzRnSUNBcUwxeHVJQ0J5Wlc1a1pYSTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDlPUTBVc1hHNWNiaUFnTHk4Z1BUMDlQU0JFWld4bFoyRjBaU0J0WlhSb2IyUnpJRDA5UFQxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0IzYUdWdUlIUm9aU0JqYjIxd2IyNWxiblFnYVhNZ2FXNXBkR2xoYkd4NUlHTnlaV0YwWldRZ1lXNWtJR0ZpYjNWMElIUnZJR0psSUcxdmRXNTBaV1F1WEc0Z0lDQXFJRlJvYVhNZ2JXRjVJR2hoZG1VZ2MybGtaU0JsWm1abFkzUnpMQ0JpZFhRZ1lXNTVJR1Y0ZEdWeWJtRnNJSE4xWW5OamNtbHdkR2x2Ym5NZ2IzSWdaR0YwWVNCamNtVmhkR1ZrWEc0Z0lDQXFJR0o1SUhSb2FYTWdiV1YwYUc5a0lHMTFjM1FnWW1VZ1kyeGxZVzVsWkNCMWNDQnBiaUJnWTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5SZ0xseHVJQ0FnS2x4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJYQnZibVZ1ZEZkcGJHeE5iM1Z1ZERvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzUyYjJ0bFpDQjNhR1Z1SUhSb1pTQmpiMjF3YjI1bGJuUWdhR0Z6SUdKbFpXNGdiVzkxYm5SbFpDQmhibVFnYUdGeklHRWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVMbHh1SUNBZ0tpQkliM2RsZG1WeUxDQjBhR1Z5WlNCcGN5QnVieUJuZFdGeVlXNTBaV1VnZEdoaGRDQjBhR1VnUkU5TklHNXZaR1VnYVhNZ2FXNGdkR2hsSUdSdlkzVnRaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQlZjMlVnZEdocGN5QmhjeUJoYmlCdmNIQnZjblIxYm1sMGVTQjBieUJ2Y0dWeVlYUmxJRzl1SUhSb1pTQkVUMDBnZDJobGJpQjBhR1VnWTI5dGNHOXVaVzUwSUdoaGMxeHVJQ0FnS2lCaVpXVnVJRzF2ZFc1MFpXUWdLR2x1YVhScFlXeHBlbVZrSUdGdVpDQnlaVzVrWlhKbFpDa2dabTl5SUhSb1pTQm1hWEp6ZENCMGFXMWxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlISnZiM1JPYjJSbElFUlBUU0JsYkdWdFpXNTBJSEpsY0hKbGMyVnVkR2x1WnlCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNvdlhHNGdJR052YlhCdmJtVnVkRVJwWkUxdmRXNTBPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZrSUdKbFptOXlaU0IwYUdVZ1kyOXRjRzl1Wlc1MElISmxZMlZwZG1WeklHNWxkeUJ3Y205d2N5NWNiaUFnSUNwY2JpQWdJQ29nVlhObElIUm9hWE1nWVhNZ1lXNGdiM0J3YjNKMGRXNXBkSGtnZEc4Z2NtVmhZM1FnZEc4Z1lTQndjbTl3SUhSeVlXNXphWFJwYjI0Z1lua2dkWEJrWVhScGJtY2dkR2hsWEc0Z0lDQXFJSE4wWVhSbElIVnphVzVuSUdCMGFHbHpMbk5sZEZOMFlYUmxZQzRnUTNWeWNtVnVkQ0J3Y205d2N5QmhjbVVnWVdOalpYTnpaV1FnZG1saElHQjBhR2x6TG5CeWIzQnpZQzVjYmlBZ0lDcGNiaUFnSUNvZ0lDQmpiMjF3YjI1bGJuUlhhV3hzVW1WalpXbDJaVkJ5YjNCek9pQm1kVzVqZEdsdmJpaHVaWGgwVUhKdmNITXNJRzVsZUhSRGIyNTBaWGgwS1NCN1hHNGdJQ0FxSUNBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0h0Y2JpQWdJQ29nSUNBZ0lDQWdiR2xyWlhOSmJtTnlaV0Z6YVc1bk9pQnVaWGgwVUhKdmNITXViR2xyWlVOdmRXNTBJRDRnZEdocGN5NXdjbTl3Y3k1c2FXdGxRMjkxYm5SY2JpQWdJQ29nSUNBZ0lIMHBPMXh1SUNBZ0tpQWdJSDFjYmlBZ0lDcGNiaUFnSUNvZ1RrOVVSVG9nVkdobGNtVWdhWE1nYm04Z1pYRjFhWFpoYkdWdWRDQmdZMjl0Y0c5dVpXNTBWMmxzYkZKbFkyVnBkbVZUZEdGMFpXQXVJRUZ1SUdsdVkyOXRhVzVuSUhCeWIzQmNiaUFnSUNvZ2RISmhibk5wZEdsdmJpQnRZWGtnWTJGMWMyVWdZU0J6ZEdGMFpTQmphR0Z1WjJVc0lHSjFkQ0IwYUdVZ2IzQndiM05wZEdVZ2FYTWdibTkwSUhSeWRXVXVJRWxtSUhsdmRWeHVJQ0FnS2lCdVpXVmtJR2wwTENCNWIzVWdZWEpsSUhCeWIySmhZbXg1SUd4dmIydHBibWNnWm05eUlHQmpiMjF3YjI1bGJuUlhhV3hzVlhCa1lYUmxZQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc1bGVIUlFjbTl3YzF4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJYQnZibVZ1ZEZkcGJHeFNaV05sYVhabFVISnZjSE02SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVkbTlyWldRZ2QyaHBiR1VnWkdWamFXUnBibWNnYVdZZ2RHaGxJR052YlhCdmJtVnVkQ0J6YUc5MWJHUWdZbVVnZFhCa1lYUmxaQ0JoY3lCaElISmxjM1ZzZENCdlpseHVJQ0FnS2lCeVpXTmxhWFpwYm1jZ2JtVjNJSEJ5YjNCekxDQnpkR0YwWlNCaGJtUXZiM0lnWTI5dWRHVjRkQzVjYmlBZ0lDcGNiaUFnSUNvZ1ZYTmxJSFJvYVhNZ1lYTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdZSEpsZEhWeWJpQm1ZV3h6WldBZ2QyaGxiaUI1YjNVbmNtVWdZMlZ5ZEdGcGJpQjBhR0YwSUhSb1pWeHVJQ0FnS2lCMGNtRnVjMmwwYVc5dUlIUnZJSFJvWlNCdVpYY2djSEp2Y0hNdmMzUmhkR1V2WTI5dWRHVjRkQ0IzYVd4c0lHNXZkQ0J5WlhGMWFYSmxJR0VnWTI5dGNHOXVaVzUwWEc0Z0lDQXFJSFZ3WkdGMFpTNWNiaUFnSUNwY2JpQWdJQ29nSUNCemFHOTFiR1JEYjIxd2IyNWxiblJWY0dSaGRHVTZJR1oxYm1OMGFXOXVLRzVsZUhSUWNtOXdjeXdnYm1WNGRGTjBZWFJsTENCdVpYaDBRMjl1ZEdWNGRDa2dlMXh1SUNBZ0tpQWdJQ0FnY21WMGRYSnVJQ0ZsY1hWaGJDaHVaWGgwVUhKdmNITXNJSFJvYVhNdWNISnZjSE1wSUh4OFhHNGdJQ0FxSUNBZ0lDQWdJQ0ZsY1hWaGJDaHVaWGgwVTNSaGRHVXNJSFJvYVhNdWMzUmhkR1VwSUh4OFhHNGdJQ0FxSUNBZ0lDQWdJQ0ZsY1hWaGJDaHVaWGgwUTI5dWRHVjRkQ3dnZEdocGN5NWpiMjUwWlhoMEtUdGNiaUFnSUNvZ0lDQjlYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J1WlhoMFVISnZjSE5jYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQnVaWGgwVTNSaGRHVmNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCdVpYaDBRMjl1ZEdWNGRGeHVJQ0FnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCVWNuVmxJR2xtSUhSb1pTQmpiMjF3YjI1bGJuUWdjMmh2ZFd4a0lIVndaR0YwWlM1Y2JpQWdJQ29nUUc5d2RHbHZibUZzWEc0Z0lDQXFMMXh1SUNCemFHOTFiR1JEYjIxd2IyNWxiblJWY0dSaGRHVTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDlPUTBVc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsdWRtOXJaV1FnZDJobGJpQjBhR1VnWTI5dGNHOXVaVzUwSUdseklHRmliM1YwSUhSdklIVndaR0YwWlNCa2RXVWdkRzhnWVNCMGNtRnVjMmwwYVc5dUlHWnliMjFjYmlBZ0lDb2dZSFJvYVhNdWNISnZjSE5nTENCZ2RHaHBjeTV6ZEdGMFpXQWdZVzVrSUdCMGFHbHpMbU52Ym5SbGVIUmdJSFJ2SUdCdVpYaDBVSEp2Y0hOZ0xDQmdibVY0ZEZOMFlYUmxZRnh1SUNBZ0tpQmhibVFnWUc1bGVIUkRiMjUwWlhoMFlDNWNiaUFnSUNwY2JpQWdJQ29nVlhObElIUm9hWE1nWVhNZ1lXNGdiM0J3YjNKMGRXNXBkSGtnZEc4Z2NHVnlabTl5YlNCd2NtVndZWEpoZEdsdmJpQmlaV1p2Y21VZ1lXNGdkWEJrWVhSbElHOWpZM1Z5Y3k1Y2JpQWdJQ3BjYmlBZ0lDb2dUazlVUlRvZ1dXOTFJQ29xWTJGdWJtOTBLaW9nZFhObElHQjBhR2x6TG5ObGRGTjBZWFJsS0NsZ0lHbHVJSFJvYVhNZ2JXVjBhRzlrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2JtVjRkRkJ5YjNCelhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRGTjBZWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVY0ZEVOdmJuUmxlSFJjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNvdlhHNGdJR052YlhCdmJtVnVkRmRwYkd4VmNHUmhkR1U2SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVkbTlyWldRZ2QyaGxiaUIwYUdVZ1kyOXRjRzl1Wlc1MEozTWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUXVYRzRnSUNBcVhHNGdJQ0FxSUZWelpTQjBhR2x6SUdGeklHRnVJRzl3Y0c5eWRIVnVhWFI1SUhSdklHOXdaWEpoZEdVZ2IyNGdkR2hsSUVSUFRTQjNhR1Z1SUhSb1pTQmpiMjF3YjI1bGJuUWdhR0Z6WEc0Z0lDQXFJR0psWlc0Z2RYQmtZWFJsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlIQnlaWFpRY205d2MxeHVJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUhCeVpYWlRkR0YwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJSEJ5WlhaRGIyNTBaWGgwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnY205dmRFNXZaR1VnUkU5TklHVnNaVzFsYm5RZ2NtVndjbVZ6Wlc1MGFXNW5JSFJvWlNCamIyMXdiMjVsYm5RdVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbE9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm5admEyVmtJSGRvWlc0Z2RHaGxJR052YlhCdmJtVnVkQ0JwY3lCaFltOTFkQ0IwYnlCaVpTQnlaVzF2ZG1Wa0lHWnliMjBnYVhSeklIQmhjbVZ1ZENCaGJtUWdhR0YyWlZ4dUlDQWdLaUJwZEhNZ1JFOU5JSEpsY0hKbGMyVnVkR0YwYVc5dUlHUmxjM1J5YjNsbFpDNWNiaUFnSUNwY2JpQWdJQ29nVlhObElIUm9hWE1nWVhNZ1lXNGdiM0J3YjNKMGRXNXBkSGtnZEc4Z1pHVmhiR3h2WTJGMFpTQmhibmtnWlhoMFpYSnVZV3dnY21WemIzVnlZMlZ6TGx4dUlDQWdLbHh1SUNBZ0tpQk9UMVJGT2lCVWFHVnlaU0JwY3lCdWJ5QmdZMjl0Y0c5dVpXNTBSR2xrVlc1dGIzVnVkR0FnYzJsdVkyVWdlVzkxY2lCamIyMXdiMjVsYm5RZ2QybHNiQ0JvWVhabElHSmxaVzVjYmlBZ0lDb2daR1Z6ZEhKdmVXVmtJR0o1SUhSb1lYUWdjRzlwYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ2Y0hScGIyNWhiRnh1SUNBZ0tpOWNiaUFnWTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5RNklGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGtzWEc1Y2JpQWdMeThnUFQwOVBTQkJaSFpoYm1ObFpDQnRaWFJvYjJSeklEMDlQVDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWEJrWVhSbGN5QjBhR1VnWTI5dGNHOXVaVzUwSjNNZ1kzVnljbVZ1ZEd4NUlHMXZkVzUwWldRZ1JFOU5JSEpsY0hKbGMyVnVkR0YwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJDZVNCa1pXWmhkV3gwTENCMGFHbHpJR2x0Y0d4bGJXVnVkSE1nVW1WaFkzUW5jeUJ5Wlc1a1pYSnBibWNnWVc1a0lISmxZMjl1WTJsc2FXRjBhVzl1SUdGc1oyOXlhWFJvYlM1Y2JpQWdJQ29nVTI5d2FHbHpkR2xqWVhSbFpDQmpiR2xsYm5SeklHMWhlU0IzYVhOb0lIUnZJRzkyWlhKeWFXUmxJSFJvYVhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUlFQnZkbVZ5Y21sa1lXSnNaVnh1SUNBZ0tpOWNiaUFnZFhCa1lYUmxRMjl0Y0c5dVpXNTBPaUJUY0dWalVHOXNhV041TGs5V1JWSlNTVVJGWDBKQlUwVmNibHh1ZlR0Y2JseHVMeW9xWEc0Z0tpQk5ZWEJ3YVc1bklHWnliMjBnWTJ4aGMzTWdjM0JsWTJsbWFXTmhkR2x2YmlCclpYbHpJSFJ2SUhOd1pXTnBZV3dnY0hKdlkyVnpjMmx1WnlCbWRXNWpkR2x2Ym5NdVhHNGdLbHh1SUNvZ1FXeDBhRzkxWjJnZ2RHaGxjMlVnWVhKbElHUmxZMnhoY21Wa0lHeHBhMlVnYVc1emRHRnVZMlVnY0hKdmNHVnlkR2xsY3lCcGJpQjBhR1VnYzNCbFkybG1hV05oZEdsdmJseHVJQ29nZDJobGJpQmtaV1pwYm1sdVp5QmpiR0Z6YzJWeklIVnphVzVuSUdCU1pXRmpkQzVqY21WaGRHVkRiR0Z6YzJBc0lIUm9aWGtnWVhKbElHRmpkSFZoYkd4NUlITjBZWFJwWTF4dUlDb2dZVzVrSUdGeVpTQmhZMk5sYzNOcFlteGxJRzl1SUhSb1pTQmpiMjV6ZEhKMVkzUnZjaUJwYm5OMFpXRmtJRzltSUhSb1pTQndjbTkwYjNSNWNHVXVJRVJsYzNCcGRHVmNiaUFxSUdKbGFXNW5JSE4wWVhScFl5d2dkR2hsZVNCdGRYTjBJR0psSUdSbFptbHVaV1FnYjNWMGMybGtaU0J2WmlCMGFHVWdYQ0p6ZEdGMGFXTnpYQ0lnYTJWNUlIVnVaR1Z5WEc0Z0tpQjNhR2xqYUNCaGJHd2diM1JvWlhJZ2MzUmhkR2xqSUcxbGRHaHZaSE1nWVhKbElHUmxabWx1WldRdVhHNGdLaTljYm5aaGNpQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTWdQU0I3WEc0Z0lHUnBjM0JzWVhsT1lXMWxPaUJtZFc1amRHbHZiaUFvUTI5dWMzUnlkV04wYjNJc0lHUnBjM0JzWVhsT1lXMWxLU0I3WEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVZ1BTQmthWE53YkdGNVRtRnRaVHRjYmlBZ2ZTeGNiaUFnYldsNGFXNXpPaUJtZFc1amRHbHZiaUFvUTI5dWMzUnlkV04wYjNJc0lHMXBlR2x1Y3lrZ2UxeHVJQ0FnSUdsbUlDaHRhWGhwYm5NcElIdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diV2w0YVc1ekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUcxcGVGTndaV05KYm5SdlEyOXRjRzl1Wlc1MEtFTnZibk4wY25WamRHOXlMQ0J0YVhocGJuTmJhVjBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWTJocGJHUkRiMjUwWlhoMFZIbHdaWE02SUdaMWJtTjBhVzl1SUNoRGIyNXpkSEoxWTNSdmNpd2dZMmhwYkdSRGIyNTBaWGgwVkhsd1pYTXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnNhV1JoZEdWVWVYQmxSR1ZtS0VOdmJuTjBjblZqZEc5eUxDQmphR2xzWkVOdmJuUmxlSFJVZVhCbGN5d2dVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3k1amFHbHNaRU52Ym5SbGVIUXBPMXh1SUNBZ0lIMWNiaUFnSUNCRGIyNXpkSEoxWTNSdmNpNWphR2xzWkVOdmJuUmxlSFJVZVhCbGN5QTlJR0Z6YzJsbmJpaDdmU3dnUTI5dWMzUnlkV04wYjNJdVkyaHBiR1JEYjI1MFpYaDBWSGx3WlhNc0lHTm9hV3hrUTI5dWRHVjRkRlI1Y0dWektUdGNiaUFnZlN4Y2JpQWdZMjl1ZEdWNGRGUjVjR1Z6T2lCbWRXNWpkR2x2YmlBb1EyOXVjM1J5ZFdOMGIzSXNJR052Ym5SbGVIUlVlWEJsY3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVd4cFpHRjBaVlI1Y0dWRVpXWW9RMjl1YzNSeWRXTjBiM0lzSUdOdmJuUmxlSFJVZVhCbGN5d2dVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3k1amIyNTBaWGgwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0l1WTI5dWRHVjRkRlI1Y0dWeklEMGdZWE56YVdkdUtIdDlMQ0JEYjI1emRISjFZM1J2Y2k1amIyNTBaWGgwVkhsd1pYTXNJR052Ym5SbGVIUlVlWEJsY3lrN1hHNGdJSDBzWEc0Z0lDOHFLbHh1SUNBZ0tpQlRjR1ZqYVdGc0lHTmhjMlVnWjJWMFJHVm1ZWFZzZEZCeWIzQnpJSGRvYVdOb0lITm9iM1ZzWkNCdGIzWmxJR2x1ZEc4Z2MzUmhkR2xqY3lCaWRYUWdjbVZ4ZFdseVpYTmNiaUFnSUNvZ1lYVjBiMjFoZEdsaklHMWxjbWRwYm1jdVhHNGdJQ0FxTDF4dUlDQm5aWFJFWldaaGRXeDBVSEp2Y0hNNklHWjFibU4wYVc5dUlDaERiMjV6ZEhKMVkzUnZjaXdnWjJWMFJHVm1ZWFZzZEZCeWIzQnpLU0I3WEc0Z0lDQWdhV1lnS0VOdmJuTjBjblZqZEc5eUxtZGxkRVJsWm1GMWJIUlFjbTl3Y3lrZ2UxeHVJQ0FnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVaMlYwUkdWbVlYVnNkRkJ5YjNCeklEMGdZM0psWVhSbFRXVnlaMlZrVW1WemRXeDBSblZ1WTNScGIyNG9RMjl1YzNSeWRXTjBiM0l1WjJWMFJHVm1ZWFZzZEZCeWIzQnpMQ0JuWlhSRVpXWmhkV3gwVUhKdmNITXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCRGIyNXpkSEoxWTNSdmNpNW5aWFJFWldaaGRXeDBVSEp2Y0hNZ1BTQm5aWFJFWldaaGRXeDBVSEp2Y0hNN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCd2NtOXdWSGx3WlhNNklHWjFibU4wYVc5dUlDaERiMjV6ZEhKMVkzUnZjaXdnY0hKdmNGUjVjR1Z6S1NCN1hHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSFpoYkdsa1lYUmxWSGx3WlVSbFppaERiMjV6ZEhKMVkzUnZjaXdnY0hKdmNGUjVjR1Z6TENCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpMbkJ5YjNBcE8xeHVJQ0FnSUgxY2JpQWdJQ0JEYjI1emRISjFZM1J2Y2k1d2NtOXdWSGx3WlhNZ1BTQmhjM05wWjI0b2UzMHNJRU52Ym5OMGNuVmpkRzl5TG5CeWIzQlVlWEJsY3l3Z2NISnZjRlI1Y0dWektUdGNiaUFnZlN4Y2JpQWdjM1JoZEdsamN6b2dablZ1WTNScGIyNGdLRU52Ym5OMGNuVmpkRzl5TENCemRHRjBhV056S1NCN1hHNGdJQ0FnYldsNFUzUmhkR2xqVTNCbFkwbHVkRzlEYjIxd2IyNWxiblFvUTI5dWMzUnlkV04wYjNJc0lITjBZWFJwWTNNcE8xeHVJQ0I5TEZ4dUlDQmhkWFJ2WW1sdVpEb2dablZ1WTNScGIyNGdLQ2tnZTMwZ2ZUdGNibHh1THk4Z2JtOXZjRnh1Wm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1ZVZVhCbFJHVm1LRU52Ym5OMGNuVmpkRzl5TENCMGVYQmxSR1ZtTENCc2IyTmhkR2x2YmlrZ2UxeHVJQ0JtYjNJZ0tIWmhjaUJ3Y205d1RtRnRaU0JwYmlCMGVYQmxSR1ZtS1NCN1hHNGdJQ0FnYVdZZ0tIUjVjR1ZFWldZdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwS1NCN1hHNGdJQ0FnSUNBdkx5QjFjMlVnWVNCM1lYSnVhVzVuSUdsdWMzUmxZV1FnYjJZZ1lXNGdhVzUyWVhKcFlXNTBJSE52SUdOdmJYQnZibVZ1ZEhOY2JpQWdJQ0FnSUM4dklHUnZiaWQwSUhOb2IzY2dkWEFnYVc0Z2NISnZaQ0JpZFhRZ2JtOTBJR2x1SUY5ZlJFVldYMTljYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hSNWNHVnZaaUIwZVhCbFJHVm1XM0J5YjNCT1lXMWxYU0E5UFQwZ0oyWjFibU4wYVc5dUp5d2dKeVZ6T2lBbGN5QjBlWEJsSUdBbGMyQWdhWE1nYVc1MllXeHBaRHNnYVhRZ2JYVnpkQ0JpWlNCaElHWjFibU4wYVc5dUxDQjFjM1ZoYkd4NUlHWnliMjBnSnlBcklDZFNaV0ZqZEM1UWNtOXdWSGx3WlhNdUp5d2dRMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVZ2ZId2dKMUpsWVdOMFEyeGhjM01uTENCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsYzF0c2IyTmhkR2x2Ymwwc0lIQnliM0JPWVcxbEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1ZOWlhSb2IyUlBkbVZ5Y21sa1pTaHdjbTkwYnl3Z2JtRnRaU2tnZTF4dUlDQjJZWElnYzNCbFkxQnZiR2xqZVNBOUlGSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnUHlCU1pXRmpkRU5zWVhOelNXNTBaWEptWVdObFcyNWhiV1ZkSURvZ2JuVnNiRHRjYmx4dUlDQXZMeUJFYVhOaGJHeHZkeUJ2ZG1WeWNtbGthVzVuSUc5bUlHSmhjMlVnWTJ4aGMzTWdiV1YwYUc5a2N5QjFibXhsYzNNZ1pYaHdiR2xqYVhSc2VTQmhiR3h2ZDJWa0xseHVJQ0JwWmlBb1VtVmhZM1JEYkdGemMwMXBlR2x1TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTQjdYRzRnSUNBZ0lTaHpjR1ZqVUc5c2FXTjVJRDA5UFNCVGNHVmpVRzlzYVdONUxrOVdSVkpTU1VSRlgwSkJVMFVwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFEyeGhjM05KYm5SbGNtWmhZMlU2SUZsdmRTQmhjbVVnWVhSMFpXMXdkR2x1WnlCMGJ5QnZkbVZ5Y21sa1pTQW5JQ3NnSjJBbGMyQWdabkp2YlNCNWIzVnlJR05zWVhOeklITndaV05wWm1sallYUnBiMjR1SUVWdWMzVnlaU0IwYUdGMElIbHZkWElnYldWMGFHOWtJRzVoYldWeklDY2dLeUFuWkc4Z2JtOTBJRzkyWlhKc1lYQWdkMmwwYUNCU1pXRmpkQ0J0WlhSb2IyUnpMaWNzSUc1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1WEc0Z0lDOHZJRVJwYzJGc2JHOTNJR1JsWm1sdWFXNW5JRzFsZEdodlpITWdiVzl5WlNCMGFHRnVJRzl1WTJVZ2RXNXNaWE56SUdWNGNHeHBZMmwwYkhrZ1lXeHNiM2RsWkM1Y2JpQWdhV1lnS0hCeWIzUnZMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwS1NCN1hHNGdJQ0FnSVNoemNHVmpVRzlzYVdONUlEMDlQU0JUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WklIeDhJSE53WldOUWIyeHBZM2tnUFQwOUlGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGxmVFVWU1IwVkVLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxPaUJaYjNVZ1lYSmxJR0YwZEdWdGNIUnBibWNnZEc4Z1pHVm1hVzVsSUNjZ0t5QW5ZQ1Z6WUNCdmJpQjViM1Z5SUdOdmJYQnZibVZ1ZENCdGIzSmxJSFJvWVc0Z2IyNWpaUzRnVkdocGN5QmpiMjVtYkdsamRDQnRZWGtnWW1VZ1pIVmxJQ2NnS3lBbmRHOGdZU0J0YVhocGJpNG5MQ0J1WVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCTmFYaHBiaUJvWld4d1pYSWdkMmhwWTJnZ2FHRnVaR3hsY3lCd2IyeHBZM2tnZG1Gc2FXUmhkR2x2YmlCaGJtUWdjbVZ6WlhKMlpXUmNiaUFxSUhOd1pXTnBabWxqWVhScGIyNGdhMlY1Y3lCM2FHVnVJR0oxYVd4a2FXNW5JRkpsWVdOMElHTnNZWE56YzJWekxseHVJQ292WEc1bWRXNWpkR2x2YmlCdGFYaFRjR1ZqU1c1MGIwTnZiWEJ2Ym1WdWRDaERiMjV6ZEhKMVkzUnZjaXdnYzNCbFl5a2dlMXh1SUNCcFppQW9JWE53WldNcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNibHh1SUNBaEtIUjVjR1Z2WmlCemNHVmpJQ0U5UFNBblpuVnVZM1JwYjI0bktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkU1pXRmpkRU5zWVhOek9pQlpiM1ZjWENkeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUNjZ0t5QW5kWE5sSUdFZ1kyOXRjRzl1Wlc1MElHTnNZWE56SUdGeklHRWdiV2w0YVc0dUlFbHVjM1JsWVdRc0lHcDFjM1FnZFhObElHRWdjbVZuZFd4aGNpQnZZbXBsWTNRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWhJVkpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ2h6Y0dWaktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkU1pXRmpkRU5zWVhOek9pQlpiM1ZjWENkeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUNjZ0t5QW5kWE5sSUdFZ1kyOXRjRzl1Wlc1MElHRnpJR0VnYldsNGFXNHVJRWx1YzNSbFlXUXNJR3AxYzNRZ2RYTmxJR0VnY21WbmRXeGhjaUJ2WW1wbFkzUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUhaaGNpQndjbTkwYnlBOUlFTnZibk4wY25WamRHOXlMbkJ5YjNSdmRIbHdaVHRjYmx4dUlDQXZMeUJDZVNCb1lXNWtiR2x1WnlCdGFYaHBibk1nWW1WbWIzSmxJR0Z1ZVNCdmRHaGxjaUJ3Y205d1pYSjBhV1Z6TENCM1pTQmxibk4xY21VZ2RHaGxJSE5oYldWY2JpQWdMeThnWTJoaGFXNXBibWNnYjNKa1pYSWdhWE1nWVhCd2JHbGxaQ0IwYnlCdFpYUm9iMlJ6SUhkcGRHZ2dSRVZHU1U1RlgwMUJUbGtnY0c5c2FXTjVMQ0IzYUdWMGFHVnlYRzRnSUM4dklHMXBlR2x1Y3lCaGNtVWdiR2x6ZEdWa0lHSmxabTl5WlNCdmNpQmhablJsY2lCMGFHVnpaU0J0WlhSb2IyUnpJR2x1SUhSb1pTQnpjR1ZqTGx4dUlDQnBaaUFvYzNCbFl5NW9ZWE5QZDI1UWNtOXdaWEowZVNoTlNWaEpUbE5mUzBWWktTa2dlMXh1SUNBZ0lGSkZVMFZTVmtWRVgxTlFSVU5mUzBWWlV5NXRhWGhwYm5Nb1EyOXVjM1J5ZFdOMGIzSXNJSE53WldNdWJXbDRhVzV6S1R0Y2JpQWdmVnh1WEc0Z0lHWnZjaUFvZG1GeUlHNWhiV1VnYVc0Z2MzQmxZeWtnZTF4dUlDQWdJR2xtSUNnaGMzQmxZeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHNWhiV1VnUFQwOUlFMUpXRWxPVTE5TFJWa3BJSHRjYmlBZ0lDQWdJQzh2SUZkbElHaGhkbVVnWVd4eVpXRmtlU0JvWVc1a2JHVmtJRzFwZUdsdWN5QnBiaUJoSUhOd1pXTnBZV3dnWTJGelpTQmhZbTkyWlM1Y2JpQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCd2NtOXdaWEowZVNBOUlITndaV05iYm1GdFpWMDdYRzRnSUNBZ2RtRnNhV1JoZEdWTlpYUm9iMlJQZG1WeWNtbGtaU2h3Y205MGJ5d2dibUZ0WlNrN1hHNWNiaUFnSUNCcFppQW9Va1ZUUlZKV1JVUmZVMUJGUTE5TFJWbFRMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwS1NCN1hHNGdJQ0FnSUNCU1JWTkZVbFpGUkY5VFVFVkRYMHRGV1ZOYmJtRnRaVjBvUTI5dWMzUnlkV04wYjNJc0lIQnliM0JsY25SNUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1UyVjBkWEFnYldWMGFHOWtjeUJ2YmlCd2NtOTBiM1I1Y0dVNlhHNGdJQ0FnSUNBdkx5QlVhR1VnWm05c2JHOTNhVzVuSUcxbGJXSmxjaUJ0WlhSb2IyUnpJSE5vYjNWc1pDQnViM1FnWW1VZ1lYVjBiMjFoZEdsallXeHNlU0JpYjNWdVpEcGNiaUFnSUNBZ0lDOHZJREV1SUVWNGNHVmpkR1ZrSUZKbFlXTjBRMnhoYzNNZ2JXVjBhRzlrY3lBb2FXNGdkR2hsSUZ3aWFXNTBaWEptWVdObFhDSXBMbHh1SUNBZ0lDQWdMeThnTWk0Z1QzWmxjbkpwWkdSbGJpQnRaWFJvYjJSeklDaDBhR0YwSUhkbGNtVWdiV2w0WldRZ2FXNHBMbHh1SUNBZ0lDQWdkbUZ5SUdselVtVmhZM1JEYkdGemMwMWxkR2h2WkNBOUlGSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2s3WEc0Z0lDQWdJQ0IyWVhJZ2FYTkJiSEpsWVdSNVJHVm1hVzVsWkNBOUlIQnliM1J2TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcE8xeHVJQ0FnSUNBZ2RtRnlJR2x6Um5WdVkzUnBiMjRnUFNCMGVYQmxiMllnY0hKdmNHVnlkSGtnUFQwOUlDZG1kVzVqZEdsdmJpYzdYRzRnSUNBZ0lDQjJZWElnYzJodmRXeGtRWFYwYjBKcGJtUWdQU0JwYzBaMWJtTjBhVzl1SUNZbUlDRnBjMUpsWVdOMFEyeGhjM05OWlhSb2IyUWdKaVlnSVdselFXeHlaV0ZrZVVSbFptbHVaV1FnSmlZZ2MzQmxZeTVoZFhSdlltbHVaQ0FoUFQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0FnSUdsbUlDaHphRzkxYkdSQmRYUnZRbWx1WkNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVhCeWIzUnZMbDlmY21WaFkzUkJkWFJ2UW1sdVpFMWhjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIQnliM1J2TGw5ZmNtVmhZM1JCZFhSdlFtbHVaRTFoY0NBOUlIdDlPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhCeWIzUnZMbDlmY21WaFkzUkJkWFJ2UW1sdVpFMWhjRnR1WVcxbFhTQTlJSEJ5YjNCbGNuUjVPMXh1SUNBZ0lDQWdJQ0J3Y205MGIxdHVZVzFsWFNBOUlIQnliM0JsY25SNU8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6UVd4eVpXRmtlVVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMllYSWdjM0JsWTFCdmJHbGplU0E5SUZKbFlXTjBRMnhoYzNOSmJuUmxjbVpoWTJWYmJtRnRaVjA3WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJVYUdWelpTQmpZWE5sY3lCemFHOTFiR1FnWVd4eVpXRmtlU0JpWlNCallYVm5hSFFnWW5rZ2RtRnNhV1JoZEdWTlpYUm9iMlJQZG1WeWNtbGtaUzVjYmlBZ0lDQWdJQ0FnSUNBaEtHbHpVbVZoWTNSRGJHRnpjMDFsZEdodlpDQW1KaUFvYzNCbFkxQnZiR2xqZVNBOVBUMGdVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1Y5TlJWSkhSVVFnZkh3Z2MzQmxZMUJ2YkdsamVTQTlQVDBnVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dTa3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wUTJ4aGMzTTZJRlZ1Wlhod1pXTjBaV1FnYzNCbFl5QndiMnhwWTNrZ0pYTWdabTl5SUd0bGVTQWxjeUFuSUNzZ0ozZG9aVzRnYldsNGFXNW5JR2x1SUdOdmJYQnZibVZ1ZENCemNHVmpjeTRuTENCemNHVmpVRzlzYVdONUxDQnVZVzFsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QkdiM0lnYldWMGFHOWtjeUIzYUdsamFDQmhjbVVnWkdWbWFXNWxaQ0J0YjNKbElIUm9ZVzRnYjI1alpTd2dZMkZzYkNCMGFHVWdaWGhwYzNScGJtZGNiaUFnSUNBZ0lDQWdJQ0F2THlCdFpYUm9iMlJ6SUdKbFptOXlaU0JqWVd4c2FXNW5JSFJvWlNCdVpYY2djSEp2Y0dWeWRIa3NJRzFsY21kcGJtY2dhV1lnWVhCd2NtOXdjbWxoZEdVdVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hOd1pXTlFiMnhwWTNrZ1BUMDlJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxsZlRVVlNSMFZFS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205MGIxdHVZVzFsWFNBOUlHTnlaV0YwWlUxbGNtZGxaRkpsYzNWc2RFWjFibU4wYVc5dUtIQnliM1J2VzI1aGJXVmRMQ0J3Y205d1pYSjBlU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHpjR1ZqVUc5c2FXTjVJRDA5UFNCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQndjbTkwYjF0dVlXMWxYU0E5SUdOeVpXRjBaVU5vWVdsdVpXUkdkVzVqZEdsdmJpaHdjbTkwYjF0dVlXMWxYU3dnY0hKdmNHVnlkSGtwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0J3Y205MGIxdHVZVzFsWFNBOUlIQnliM0JsY25SNU8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkJaR1FnZG1WeVltOXpaU0JrYVhOd2JHRjVUbUZ0WlNCMGJ5QjBhR1VnWm5WdVkzUnBiMjRzSUhkb2FXTm9JR2hsYkhCeklIZG9aVzRnYkc5dmEybHVaMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdZWFFnY0hKdlptbHNhVzVuSUhSdmIyeHpMbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQndjbTl3WlhKMGVTQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUppQnpjR1ZqTG1ScGMzQnNZWGxPWVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnliM1J2VzI1aGJXVmRMbVJwYzNCc1lYbE9ZVzFsSUQwZ2MzQmxZeTVrYVhOd2JHRjVUbUZ0WlNBcklDZGZKeUFySUc1aGJXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUcxcGVGTjBZWFJwWTFOd1pXTkpiblJ2UTI5dGNHOXVaVzUwS0VOdmJuTjBjblZqZEc5eUxDQnpkR0YwYVdOektTQjdYRzRnSUdsbUlDZ2hjM1JoZEdsamN5a2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCbWIzSWdLSFpoY2lCdVlXMWxJR2x1SUhOMFlYUnBZM01wSUh0Y2JpQWdJQ0IyWVhJZ2NISnZjR1Z5ZEhrZ1BTQnpkR0YwYVdOelcyNWhiV1ZkTzF4dUlDQWdJR2xtSUNnaGMzUmhkR2xqY3k1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJR2x6VW1WelpYSjJaV1FnUFNBb2JtRnRaU0JwYmlCU1JWTkZVbFpGUkY5VFVFVkRYMHRGV1ZNcE8xeHVJQ0FnSUNFaGFYTlNaWE5sY25abFpDQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkU1pXRmpkRU5zWVhOek9pQlpiM1VnWVhKbElHRjBkR1Z0Y0hScGJtY2dkRzhnWkdWbWFXNWxJR0VnY21WelpYSjJaV1FnSnlBcklDZHdjbTl3WlhKMGVTd2dZQ1Z6WUN3Z2RHaGhkQ0J6YUc5MWJHUnVYRnduZENCaVpTQnZiaUIwYUdVZ1hDSnpkR0YwYVdOelhDSWdhMlY1TGlCRVpXWnBibVVnYVhRZ0p5QXJJQ2RoY3lCaGJpQnBibk4wWVc1alpTQndjbTl3WlhKMGVTQnBibk4wWldGa095QnBkQ0IzYVd4c0lITjBhV3hzSUdKbElHRmpZMlZ6YzJsaWJHVWdiMjRnZEdobElDY2dLeUFuWTI5dWMzUnlkV04wYjNJdUp5d2dibUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdkbUZ5SUdselNXNW9aWEpwZEdWa0lEMGdLRzVoYldVZ2FXNGdRMjl1YzNSeWRXTjBiM0lwTzF4dUlDQWdJQ0VoYVhOSmJtaGxjbWwwWldRZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUkRiR0Z6Y3pvZ1dXOTFJR0Z5WlNCaGRIUmxiWEIwYVc1bklIUnZJR1JsWm1sdVpTQW5JQ3NnSjJBbGMyQWdiMjRnZVc5MWNpQmpiMjF3YjI1bGJuUWdiVzl5WlNCMGFHRnVJRzl1WTJVdUlGUm9hWE1nWTI5dVpteHBZM1FnYldGNUlHSmxJQ2NnS3lBblpIVmxJSFJ2SUdFZ2JXbDRhVzR1Snl3Z2JtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUVOdmJuTjBjblZqZEc5eVcyNWhiV1ZkSUQwZ2NISnZjR1Z5ZEhrN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQk5aWEpuWlNCMGQyOGdiMkpxWldOMGN5d2dZblYwSUhSb2NtOTNJR2xtSUdKdmRHZ2dZMjl1ZEdGcGJpQjBhR1VnYzJGdFpTQnJaWGt1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzl1WlNCVWFHVWdabWx5YzNRZ2IySnFaV04wTENCM2FHbGphQ0JwY3lCdGRYUmhkR1ZrTGx4dUlDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlIUjNieUJVYUdVZ2MyVmpiMjVrSUc5aWFtVmpkRnh1SUNvZ1FISmxkSFZ5YmlCN2IySnFaV04wZlNCdmJtVWdZV1owWlhJZ2FYUWdhR0Z6SUdKbFpXNGdiWFYwWVhSbFpDQjBieUJqYjI1MFlXbHVJR1YyWlhKNWRHaHBibWNnYVc0Z2RIZHZMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnRaWEpuWlVsdWRHOVhhWFJvVG05RWRYQnNhV05oZEdWTFpYbHpLRzl1WlN3Z2RIZHZLU0I3WEc0Z0lDRW9iMjVsSUNZbUlIUjNieUFtSmlCMGVYQmxiMllnYjI1bElEMDlQU0FuYjJKcVpXTjBKeUFtSmlCMGVYQmxiMllnZEhkdklEMDlQU0FuYjJKcVpXTjBKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5iV1Z5WjJWSmJuUnZWMmwwYUU1dlJIVndiR2xqWVhSbFMyVjVjeWdwT2lCRFlXNXViM1FnYldWeVoyVWdibTl1TFc5aWFtVmpkSE11SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lHWnZjaUFvZG1GeUlHdGxlU0JwYmlCMGQyOHBJSHRjYmlBZ0lDQnBaaUFvZEhkdkxtaGhjMDkzYmxCeWIzQmxjblI1S0d0bGVTa3BJSHRjYmlBZ0lDQWdJQ0VvYjI1bFcydGxlVjBnUFQwOUlIVnVaR1ZtYVc1bFpDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmJXVnlaMlZKYm5SdlYybDBhRTV2UkhWd2JHbGpZWFJsUzJWNWN5Z3BPaUFuSUNzZ0oxUnlhV1ZrSUhSdklHMWxjbWRsSUhSM2J5QnZZbXBsWTNSeklIZHBkR2dnZEdobElITmhiV1VnYTJWNU9pQmdKWE5nTGlCVWFHbHpJR052Ym1ac2FXTjBJQ2NnS3lBbmJXRjVJR0psSUdSMVpTQjBieUJoSUcxcGVHbHVPeUJwYmlCd1lYSjBhV04xYkdGeUxDQjBhR2x6SUcxaGVTQmlaU0JqWVhWelpXUWdZbmtnZEhkdklDY2dLeUFuWjJWMFNXNXBkR2xoYkZOMFlYUmxLQ2tnYjNJZ1oyVjBSR1ZtWVhWc2RGQnliM0J6S0NrZ2JXVjBhRzlrY3lCeVpYUjFjbTVwYm1jZ2IySnFaV04wY3lBbklDc2dKM2RwZEdnZ1kyeGhjMmhwYm1jZ2EyVjVjeTRuTENCclpYa3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUc5dVpWdHJaWGxkSUQwZ2RIZHZXMnRsZVYwN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJ2Ym1VN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoSUdaMWJtTjBhVzl1SUhSb1lYUWdhVzUyYjJ0bGN5QjBkMjhnWm5WdVkzUnBiMjV6SUdGdVpDQnRaWEpuWlhNZ2RHaGxhWElnY21WMGRYSnVJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQnZibVVnUm5WdVkzUnBiMjRnZEc4Z2FXNTJiMnRsSUdacGNuTjBMbHh1SUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ2RIZHZJRVoxYm1OMGFXOXVJSFJ2SUdsdWRtOXJaU0J6WldOdmJtUXVYRzRnS2lCQWNtVjBkWEp1SUh0bWRXNWpkR2x2Ym4wZ1JuVnVZM1JwYjI0Z2RHaGhkQ0JwYm5admEyVnpJSFJvWlNCMGQyOGdZWEpuZFcxbGJuUWdablZ1WTNScGIyNXpMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxUV1Z5WjJWa1VtVnpkV3gwUm5WdVkzUnBiMjRvYjI1bExDQjBkMjhwSUh0Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlHMWxjbWRsWkZKbGMzVnNkQ2dwSUh0Y2JpQWdJQ0IyWVhJZ1lTQTlJRzl1WlM1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lIWmhjaUJpSUQwZ2RIZHZMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnYVdZZ0tHRWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHSTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGlJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmhPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdZeUE5SUh0OU8xeHVJQ0FnSUcxbGNtZGxTVzUwYjFkcGRHaE9iMFIxY0d4cFkyRjBaVXRsZVhNb1l5d2dZU2s3WEc0Z0lDQWdiV1Z5WjJWSmJuUnZWMmwwYUU1dlJIVndiR2xqWVhSbFMyVjVjeWhqTENCaUtUdGNiaUFnSUNCeVpYUjFjbTRnWXp0Y2JpQWdmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdablZ1WTNScGIyNGdkR2hoZENCcGJuWnZhMlZ6SUhSM2J5Qm1kVzVqZEdsdmJuTWdZVzVrSUdsbmJtOXlaWE1nZEdobGFYSWdjbVYwZFhKdUlIWmhiR1Z6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUc5dVpTQkdkVzVqZEdsdmJpQjBieUJwYm5admEyVWdabWx5YzNRdVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0IwZDI4Z1JuVnVZM1JwYjI0Z2RHOGdhVzUyYjJ0bElITmxZMjl1WkM1Y2JpQXFJRUJ5WlhSMWNtNGdlMloxYm1OMGFXOXVmU0JHZFc1amRHbHZiaUIwYUdGMElHbHVkbTlyWlhNZ2RHaGxJSFIzYnlCaGNtZDFiV1Z1ZENCbWRXNWpkR2x2Ym5NdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQmpjbVZoZEdWRGFHRnBibVZrUm5WdVkzUnBiMjRvYjI1bExDQjBkMjhwSUh0Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlHTm9ZV2x1WldSR2RXNWpkR2x2YmlncElIdGNiaUFnSUNCdmJtVXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0IwZDI4dVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ2ZUdGNibjFjYmx4dUx5b3FYRzRnS2lCQ2FXNWtjeUJoSUcxbGRHaHZaQ0IwYnlCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQmpiMjF3YjI1bGJuUWdRMjl0Y0c5dVpXNTBJSGRvYjNObElHMWxkR2h2WkNCcGN5Qm5iMmx1WnlCMGJ5QmlaU0JpYjNWdVpDNWNiaUFxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUcxbGRHaHZaQ0JOWlhSb2IyUWdkRzhnWW1VZ1ltOTFibVF1WEc0Z0tpQkFjbVYwZFhKdUlIdG1kVzVqZEdsdmJuMGdWR2hsSUdKdmRXNWtJRzFsZEdodlpDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1ltbHVaRUYxZEc5Q2FXNWtUV1YwYUc5a0tHTnZiWEJ2Ym1WdWRDd2diV1YwYUc5a0tTQjdYRzRnSUhaaGNpQmliM1Z1WkUxbGRHaHZaQ0E5SUcxbGRHaHZaQzVpYVc1a0tHTnZiWEJ2Ym1WdWRDazdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdZbTkxYm1STlpYUm9iMlF1WDE5eVpXRmpkRUp2ZFc1a1EyOXVkR1Y0ZENBOUlHTnZiWEJ2Ym1WdWREdGNiaUFnSUNCaWIzVnVaRTFsZEdodlpDNWZYM0psWVdOMFFtOTFibVJOWlhSb2IyUWdQU0J0WlhSb2IyUTdYRzRnSUNBZ1ltOTFibVJOWlhSb2IyUXVYMTl5WldGamRFSnZkVzVrUVhKbmRXMWxiblJ6SUQwZ2JuVnNiRHRjYmlBZ0lDQjJZWElnWTI5dGNHOXVaVzUwVG1GdFpTQTlJR052YlhCdmJtVnVkQzVqYjI1emRISjFZM1J2Y2k1a2FYTndiR0Y1VG1GdFpUdGNiaUFnSUNCMllYSWdYMkpwYm1RZ1BTQmliM1Z1WkUxbGRHaHZaQzVpYVc1a08xeHVJQ0FnSUM4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUdKc2IyTnJMWE5qYjNCbFpDMTJZWElzSUc1dkxYVnVaR1ZtSUNvdlhHNGdJQ0FnWW05MWJtUk5aWFJvYjJRdVltbHVaQ0E5SUdaMWJtTjBhVzl1SUNodVpYZFVhR2x6S1NCN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCZmJHVnVJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ3dnWVhKbmN5QTlJRUZ5Y21GNUtGOXNaVzRnUGlBeElEOGdYMnhsYmlBdElERWdPaUF3S1N3Z1gydGxlU0E5SURFN0lGOXJaWGtnUENCZmJHVnVPeUJmYTJWNUt5c3BJSHRjYmlBZ0lDQWdJQ0FnWVhKbmMxdGZhMlY1SUMwZ01WMGdQU0JoY21kMWJXVnVkSE5iWDJ0bGVWMDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUZWelpYSWdhWE1nZEhKNWFXNW5JSFJ2SUdKcGJtUW9LU0JoYmlCaGRYUnZZbTkxYm1RZ2JXVjBhRzlrT3lCM1pTQmxabVpsWTNScGRtVnNlU0IzYVd4c1hHNGdJQ0FnSUNBdkx5QnBaMjV2Y21VZ2RHaGxJSFpoYkhWbElHOW1JRndpZEdocGMxd2lJSFJvWVhRZ2RHaGxJSFZ6WlhJZ2FYTWdkSEo1YVc1bklIUnZJSFZ6WlN3Z2MyOWNiaUFnSUNBZ0lDOHZJR3hsZENkeklIZGhjbTR1WEc0Z0lDQWdJQ0JwWmlBb2JtVjNWR2hwY3lBaFBUMGdZMjl0Y0c5dVpXNTBJQ1ltSUc1bGQxUm9hWE1nSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZGlhVzVrS0NrNklGSmxZV04wSUdOdmJYQnZibVZ1ZENCdFpYUm9iMlJ6SUcxaGVTQnZibXg1SUdKbElHSnZkVzVrSUhSdklIUm9aU0FuSUNzZ0oyTnZiWEJ2Ym1WdWRDQnBibk4wWVc1alpTNGdVMlZsSUNWekp5d2dZMjl0Y0c5dVpXNTBUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ0ZoY21kekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMkpwYm1Rb0tUb2dXVzkxSUdGeVpTQmlhVzVrYVc1bklHRWdZMjl0Y0c5dVpXNTBJRzFsZEdodlpDQjBieUIwYUdVZ1kyOXRjRzl1Wlc1MExpQW5JQ3NnSjFKbFlXTjBJR1J2WlhNZ2RHaHBjeUJtYjNJZ2VXOTFJR0YxZEc5dFlYUnBZMkZzYkhrZ2FXNGdZU0JvYVdkb0xYQmxjbVp2Y20xaGJtTmxJQ2NnS3lBbmQyRjVMQ0J6YnlCNWIzVWdZMkZ1SUhOaFptVnNlU0J5WlcxdmRtVWdkR2hwY3lCallXeHNMaUJUWldVZ0pYTW5MQ0JqYjIxd2IyNWxiblJPWVcxbEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0p2ZFc1a1RXVjBhRzlrTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZG1GeUlISmxZbTkxYm1STlpYUm9iMlFnUFNCZlltbHVaQzVoY0hCc2VTaGliM1Z1WkUxbGRHaHZaQ3dnWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0FnSUhKbFltOTFibVJOWlhSb2IyUXVYMTl5WldGamRFSnZkVzVrUTI5dWRHVjRkQ0E5SUdOdmJYQnZibVZ1ZER0Y2JpQWdJQ0FnSUhKbFltOTFibVJOWlhSb2IyUXVYMTl5WldGamRFSnZkVzVrVFdWMGFHOWtJRDBnYldWMGFHOWtPMXh1SUNBZ0lDQWdjbVZpYjNWdVpFMWxkR2h2WkM1ZlgzSmxZV04wUW05MWJtUkJjbWQxYldWdWRITWdQU0JoY21kek8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbFltOTFibVJOWlhSb2IyUTdYRzRnSUNBZ0lDQXZLaUJsYzJ4cGJuUXRaVzVoWW14bElDb3ZYRzRnSUNBZ2ZUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z1ltOTFibVJOWlhSb2IyUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FtbHVaSE1nWVd4c0lHRjFkRzh0WW05MWJtUWdiV1YwYUc5a2N5QnBiaUJoSUdOdmJYQnZibVZ1ZEM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dGNHOXVaVzUwSUVOdmJYQnZibVZ1ZENCM2FHOXpaU0J0WlhSb2IyUWdhWE1nWjI5cGJtY2dkRzhnWW1VZ1ltOTFibVF1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0pwYm1SQmRYUnZRbWx1WkUxbGRHaHZaSE1vWTI5dGNHOXVaVzUwS1NCN1hHNGdJR1p2Y2lBb2RtRnlJR0YxZEc5Q2FXNWtTMlY1SUdsdUlHTnZiWEJ2Ym1WdWRDNWZYM0psWVdOMFFYVjBiMEpwYm1STllYQXBJSHRjYmlBZ0lDQnBaaUFvWTI5dGNHOXVaVzUwTGw5ZmNtVmhZM1JCZFhSdlFtbHVaRTFoY0M1b1lYTlBkMjVRY205d1pYSjBlU2hoZFhSdlFtbHVaRXRsZVNrcElIdGNiaUFnSUNBZ0lIWmhjaUJ0WlhSb2IyUWdQU0JqYjIxd2IyNWxiblF1WDE5eVpXRmpkRUYxZEc5Q2FXNWtUV0Z3VzJGMWRHOUNhVzVrUzJWNVhUdGNiaUFnSUNBZ0lHTnZiWEJ2Ym1WdWRGdGhkWFJ2UW1sdVpFdGxlVjBnUFNCaWFXNWtRWFYwYjBKcGJtUk5aWFJvYjJRb1kyOXRjRzl1Wlc1MExDQnRaWFJvYjJRcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmtaQ0J0YjNKbElIUnZJSFJvWlNCU1pXRmpkRU5zWVhOeklHSmhjMlVnWTJ4aGMzTXVJRlJvWlhObElHRnlaU0JoYkd3Z2JHVm5ZV041SUdabFlYUjFjbVZ6SUdGdVpGeHVJQ29nZEdobGNtVm1iM0psSUc1dmRDQmhiSEpsWVdSNUlIQmhjblFnYjJZZ2RHaGxJRzF2WkdWeWJpQlNaV0ZqZEVOdmJYQnZibVZ1ZEM1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUTJ4aGMzTk5hWGhwYmlBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZFOUVUem9nVkdocGN5QjNhV3hzSUdKbElHUmxjSEpsWTJGMFpXUWdZbVZqWVhWelpTQnpkR0YwWlNCemFHOTFiR1FnWVd4M1lYbHpJR3RsWlhBZ1lTQmpiMjV6YVhOMFpXNTBYRzRnSUNBcUlIUjVjR1VnYzJsbmJtRjBkWEpsSUdGdVpDQjBhR1VnYjI1c2VTQjFjMlVnWTJGelpTQm1iM0lnZEdocGN5d2dhWE1nZEc4Z1lYWnZhV1FnZEdoaGRDNWNiaUFnSUNvdlhHNGdJSEpsY0d4aFkyVlRkR0YwWlRvZ1puVnVZM1JwYjI0Z0tHNWxkMU4wWVhSbExDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lIUm9hWE11ZFhCa1lYUmxjaTVsYm5GMVpYVmxVbVZ3YkdGalpWTjBZWFJsS0hSb2FYTXNJRzVsZDFOMFlYUmxLVHRjYmlBZ0lDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbGNpNWxibkYxWlhWbFEyRnNiR0poWTJzb2RHaHBjeXdnWTJGc2JHSmhZMnNwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1EyaGxZMnR6SUhkb1pYUm9aWElnYjNJZ2JtOTBJSFJvYVhNZ1kyOXRjRzl6YVhSbElHTnZiWEJ2Ym1WdWRDQnBjeUJ0YjNWdWRHVmtMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlHMXZkVzUwWldRc0lHWmhiSE5sSUc5MGFHVnlkMmx6WlM1Y2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvdlhHNGdJR2x6VFc5MWJuUmxaRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVndaR0YwWlhJdWFYTk5iM1Z1ZEdWa0tIUm9hWE1wTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRaWFJ6SUdFZ2MzVmljMlYwSUc5bUlIUm9aU0J3Y205d2N5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJoY25ScFlXeFFjbTl3Y3lCVGRXSnpaWFFnYjJZZ2RHaGxJRzVsZUhRZ2NISnZjSE11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJEWVd4c1pXUWdZV1owWlhJZ2NISnZjSE1nWVhKbElIVndaR0YwWldRdVhHNGdJQ0FxSUVCbWFXNWhiRnh1SUNBZ0tpQkFjSFZpYkdsalhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa1hHNGdJQ0FxTDF4dUlDQnpaWFJRY205d2N6b2dablZ1WTNScGIyNGdLSEJoY25ScFlXeFFjbTl3Y3l3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZDJGeWJsTmxkRkJ5YjNCektDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVkWEJrWVhSbGNpNWxibkYxWlhWbFUyVjBVSEp2Y0hNb2RHaHBjeXdnY0dGeWRHbGhiRkJ5YjNCektUdGNiaUFnSUNCcFppQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsY2k1bGJuRjFaWFZsUTJGc2JHSmhZMnNvZEdocGN5d2dZMkZzYkdKaFkyc3BPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1Wd2JHRmpaU0JoYkd3Z2RHaGxJSEJ5YjNCekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdibVYzVUhKdmNITWdVM1ZpYzJWMElHOW1JSFJvWlNCdVpYaDBJSEJ5YjNCekxseHVJQ0FnS2lCQWNHRnlZVzBnZXo5bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1EyRnNiR1ZrSUdGbWRHVnlJSEJ5YjNCeklHRnlaU0IxY0dSaGRHVmtMbHh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUhCMVlteHBZMXh1SUNBZ0tpQkFaR1Z3Y21WallYUmxaRnh1SUNBZ0tpOWNiaUFnY21Wd2JHRmpaVkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9ibVYzVUhKdmNITXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIZGhjbTVUWlhSUWNtOXdjeWdwTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVkpsY0d4aFkyVlFjbTl3Y3loMGFHbHpMQ0J1WlhkUWNtOXdjeWs3WEc0Z0lDQWdhV1lnS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVTmhiR3hpWVdOcktIUm9hWE1zSUdOaGJHeGlZV05yS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUJTWldGamRFTnNZWE56UTI5dGNHOXVaVzUwSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMzA3WEc1aGMzTnBaMjRvVW1WaFkzUkRiR0Z6YzBOdmJYQnZibVZ1ZEM1d2NtOTBiM1I1Y0dVc0lGSmxZV04wUTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlN3Z1VtVmhZM1JEYkdGemMwMXBlR2x1S1R0Y2JseHVMeW9xWEc0Z0tpQk5iMlIxYkdVZ1ptOXlJR055WldGMGFXNW5JR052YlhCdmMybDBaU0JqYjIxd2IyNWxiblJ6TGx4dUlDcGNiaUFxSUVCamJHRnpjeUJTWldGamRFTnNZWE56WEc0Z0tpOWNiblpoY2lCU1pXRmpkRU5zWVhOeklEMGdlMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdWeklHRWdZMjl0Y0c5emFYUmxJR052YlhCdmJtVnVkQ0JqYkdGemN5Qm5hWFpsYmlCaElHTnNZWE56SUhOd1pXTnBabWxqWVhScGIyNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J6Y0dWaklFTnNZWE56SUhOd1pXTnBabWxqWVhScGIyNGdLSGRvYVdOb0lHMTFjM1FnWkdWbWFXNWxJR0J5Wlc1a1pYSmdLUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdablZ1WTNScGIyNTlJRU52YlhCdmJtVnVkQ0JqYjI1emRISjFZM1J2Y2lCbWRXNWpkR2x2Ymk1Y2JpQWdJQ29nUUhCMVlteHBZMXh1SUNBZ0tpOWNiaUFnWTNKbFlYUmxRMnhoYzNNNklHWjFibU4wYVc5dUlDaHpjR1ZqS1NCN1hHNGdJQ0FnZG1GeUlFTnZibk4wY25WamRHOXlJRDBnWm5WdVkzUnBiMjRnS0hCeWIzQnpMQ0JqYjI1MFpYaDBMQ0IxY0dSaGRHVnlLU0I3WEc0Z0lDQWdJQ0F2THlCVWFHbHpJR052Ym5OMGNuVmpkRzl5SUdseklHOTJaWEp5YVdSa1pXNGdZbmtnYlc5amEzTXVJRlJvWlNCaGNtZDFiV1Z1ZENCcGN5QjFjMlZrWEc0Z0lDQWdJQ0F2THlCaWVTQnRiMk5yY3lCMGJ5QmhjM05sY25RZ2IyNGdkMmhoZENCblpYUnpJRzF2ZFc1MFpXUXVYRzVjYmlBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hSb2FYTWdhVzV6ZEdGdVkyVnZaaUJEYjI1emRISjFZM1J2Y2l3Z0oxTnZiV1YwYUdsdVp5QnBjeUJqWVd4c2FXNW5JR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJR1JwY21WamRHeDVMaUJWYzJVZ1lTQm1ZV04wYjNKNUlHOXlJQ2NnS3lBblNsTllJR2x1YzNSbFlXUXVJRk5sWlRvZ2FIUjBjSE02THk5bVlpNXRaUzl5WldGamRDMXNaV2RoWTNsbVlXTjBiM0o1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUZkcGNtVWdkWEFnWVhWMGJ5MWlhVzVrYVc1blhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZlgzSmxZV04wUVhWMGIwSnBibVJOWVhBcElIdGNiaUFnSUNBZ0lDQWdZbWx1WkVGMWRHOUNhVzVrVFdWMGFHOWtjeWgwYUdsektUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkR2hwY3k1d2NtOXdjeUE5SUhCeWIzQnpPMXh1SUNBZ0lDQWdkR2hwY3k1amIyNTBaWGgwSUQwZ1kyOXVkR1Y0ZER0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZtY3lBOUlHVnRjSFI1VDJKcVpXTjBPMXh1SUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1Z5SUQwZ2RYQmtZWFJsY2lCOGZDQlNaV0ZqZEU1dmIzQlZjR1JoZEdWUmRXVjFaVHRjYmx4dUlDQWdJQ0FnZEdocGN5NXpkR0YwWlNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0FnSUM4dklGSmxZV04wUTJ4aGMzTmxjeUJrYjJWemJpZDBJR2hoZG1VZ1kyOXVjM1J5ZFdOMGIzSnpMaUJKYm5OMFpXRmtMQ0IwYUdWNUlIVnpaU0IwYUdWY2JpQWdJQ0FnSUM4dklHZGxkRWx1YVhScFlXeFRkR0YwWlNCaGJtUWdZMjl0Y0c5dVpXNTBWMmxzYkUxdmRXNTBJRzFsZEdodlpITWdabTl5SUdsdWFYUnBZV3hwZW1GMGFXOXVMbHh1WEc0Z0lDQWdJQ0IyWVhJZ2FXNXBkR2xoYkZOMFlYUmxJRDBnZEdocGN5NW5aWFJKYm1sMGFXRnNVM1JoZEdVZ1B5QjBhR2x6TG1kbGRFbHVhWFJwWVd4VGRHRjBaU2dwSURvZ2JuVnNiRHRjYmlBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQzh2SUZkbElHRnNiRzkzSUdGMWRHOHRiVzlqYTNNZ2RHOGdjSEp2WTJWbFpDQmhjeUJwWmlCMGFHVjVKM0psSUhKbGRIVnlibWx1WnlCdWRXeHNMbHh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdsdWFYUnBZV3hUZEdGMFpTQTlQVDBnSjNWdVpHVm1hVzVsWkNjZ0ppWWdkR2hwY3k1blpYUkpibWwwYVdGc1UzUmhkR1V1WDJselRXOWphMFoxYm1OMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdWR2hwY3lCcGN5QndjbTlpWVdKc2VTQmlZV1FnY0hKaFkzUnBZMlV1SUVOdmJuTnBaR1Z5SUhkaGNtNXBibWNnYUdWeVpTQmhibVJjYmlBZ0lDQWdJQ0FnSUNBdkx5QmtaWEJ5WldOaGRHbHVaeUIwYUdseklHTnZiblpsYm1sbGJtTmxMbHh1SUNBZ0lDQWdJQ0FnSUdsdWFYUnBZV3hUZEdGMFpTQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDRW9kSGx3Wlc5bUlHbHVhWFJwWVd4VGRHRjBaU0E5UFQwZ0oyOWlhbVZqZENjZ0ppWWdJVUZ5Y21GNUxtbHpRWEp5WVhrb2FXNXBkR2xoYkZOMFlYUmxLU2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE11WjJWMFNXNXBkR2xoYkZOMFlYUmxLQ2s2SUcxMWMzUWdjbVYwZFhKdUlHRnVJRzlpYW1WamRDQnZjaUJ1ZFd4c0p5d2dRMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbk4wWVhSbElEMGdhVzVwZEdsaGJGTjBZWFJsTzF4dUlDQWdJSDA3WEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsSUQwZ2JtVjNJRkpsWVdOMFEyeGhjM05EYjIxd2IyNWxiblFvS1R0Y2JpQWdJQ0JEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dVdVkyOXVjM1J5ZFdOMGIzSWdQU0JEYjI1emRISjFZM1J2Y2p0Y2JseHVJQ0FnSUdsdWFtVmpkR1ZrVFdsNGFXNXpMbVp2Y2tWaFkyZ29iV2w0VTNCbFkwbHVkRzlEYjIxd2IyNWxiblF1WW1sdVpDaHVkV3hzTENCRGIyNXpkSEoxWTNSdmNpa3BPMXh1WEc0Z0lDQWdiV2w0VTNCbFkwbHVkRzlEYjIxd2IyNWxiblFvUTI5dWMzUnlkV04wYjNJc0lITndaV01wTzF4dVhHNGdJQ0FnTHk4Z1NXNXBkR2xoYkdsNlpTQjBhR1VnWkdWbVlYVnNkRkJ5YjNCeklIQnliM0JsY25SNUlHRm1kR1Z5SUdGc2JDQnRhWGhwYm5NZ2FHRjJaU0JpWldWdUlHMWxjbWRsWkM1Y2JpQWdJQ0JwWmlBb1EyOXVjM1J5ZFdOMGIzSXVaMlYwUkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ0lDQkRiMjV6ZEhKMVkzUnZjaTVrWldaaGRXeDBVSEp2Y0hNZ1BTQkRiMjV6ZEhKMVkzUnZjaTVuWlhSRVpXWmhkV3gwVUhKdmNITW9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0x5OGdWR2hwY3lCcGN5QmhJSFJoWnlCMGJ5QnBibVJwWTJGMFpTQjBhR0YwSUhSb1pTQjFjMlVnYjJZZ2RHaGxjMlVnYldWMGFHOWtJRzVoYldWeklHbHpJRzlyTEZ4dUlDQWdJQ0FnTHk4Z2MybHVZMlVnYVhRbmN5QjFjMlZrSUhkcGRHZ2dZM0psWVhSbFEyeGhjM011SUVsbUlHbDBKM01nYm05MExDQjBhR1Z1SUdsMEozTWdiR2xyWld4NUlHRmNiaUFnSUNBZ0lDOHZJRzFwYzNSaGEyVWdjMjhnZDJVbmJHd2dkMkZ5YmlCNWIzVWdkRzhnZFhObElIUm9aU0J6ZEdGMGFXTWdjSEp2Y0dWeWRIa3NJSEJ5YjNCbGNuUjVYRzRnSUNBZ0lDQXZMeUJwYm1sMGFXRnNhWHBsY2lCdmNpQmpiMjV6ZEhKMVkzUnZjaUJ5WlhOd1pXTjBhWFpsYkhrdVhHNGdJQ0FnSUNCcFppQW9RMjl1YzNSeWRXTjBiM0l1WjJWMFJHVm1ZWFZzZEZCeWIzQnpLU0I3WEc0Z0lDQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxtZGxkRVJsWm1GMWJIUlFjbTl3Y3k1cGMxSmxZV04wUTJ4aGMzTkJjSEJ5YjNabFpDQTlJSHQ5TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tFTnZibk4wY25WamRHOXlMbkJ5YjNSdmRIbHdaUzVuWlhSSmJtbDBhV0ZzVTNSaGRHVXBJSHRjYmlBZ0lDQWdJQ0FnUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbExtZGxkRWx1YVhScFlXeFRkR0YwWlM1cGMxSmxZV04wUTJ4aGMzTkJjSEJ5YjNabFpDQTlJSHQ5TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQ0ZEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dVdWNtVnVaR1Z5SUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMk55WldGMFpVTnNZWE56S0M0dUxpazZJRU5zWVhOeklITndaV05wWm1sallYUnBiMjRnYlhWemRDQnBiWEJzWlcxbGJuUWdZU0JnY21WdVpHVnlZQ0J0WlhSb2IyUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRkRiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1V1WTI5dGNHOXVaVzUwVTJodmRXeGtWWEJrWVhSbExDQW5KWE1nYUdGeklHRWdiV1YwYUc5a0lHTmhiR3hsWkNBbklDc2dKMk52YlhCdmJtVnVkRk5vYjNWc1pGVndaR0YwWlNncExpQkVhV1FnZVc5MUlHMWxZVzRnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbEtDay9JQ2NnS3lBblZHaGxJRzVoYldVZ2FYTWdjR2h5WVhObFpDQmhjeUJoSUhGMVpYTjBhVzl1SUdKbFkyRjFjMlVnZEdobElHWjFibU4wYVc5dUlHbHpJQ2NnS3lBblpYaHdaV04wWldRZ2RHOGdjbVYwZFhKdUlHRWdkbUZzZFdVdUp5d2djM0JsWXk1a2FYTndiR0Y1VG1GdFpTQjhmQ0FuUVNCamIyMXdiMjVsYm5RbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGRGIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXVZMjl0Y0c5dVpXNTBWMmxzYkZKbFkybGxkbVZRY205d2N5d2dKeVZ6SUdoaGN5QmhJRzFsZEdodlpDQmpZV3hzWldRZ0p5QXJJQ2RqYjIxd2IyNWxiblJYYVd4c1VtVmphV1YyWlZCeWIzQnpLQ2t1SUVScFpDQjViM1VnYldWaGJpQmpiMjF3YjI1bGJuUlhhV3hzVW1WalpXbDJaVkJ5YjNCektDay9KeXdnYzNCbFl5NWthWE53YkdGNVRtRnRaU0I4ZkNBblFTQmpiMjF3YjI1bGJuUW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCU1pXUjFZMlVnZEdsdFpTQnpjR1Z1ZENCa2IybHVaeUJzYjI5cmRYQnpJR0o1SUhObGRIUnBibWNnZEdobGMyVWdiMjRnZEdobElIQnliM1J2ZEhsd1pTNWNiaUFnSUNCbWIzSWdLSFpoY2lCdFpYUm9iMlJPWVcxbElHbHVJRkpsWVdOMFEyeGhjM05KYm5SbGNtWmhZMlVwSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hRMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsVzIxbGRHaHZaRTVoYldWZEtTQjdYRzRnSUNBZ0lDQWdJRU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlZ0dFpYUm9iMlJPWVcxbFhTQTlJRzUxYkd3N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRU52Ym5OMGNuVmpkRzl5TzF4dUlDQjlMRnh1WEc0Z0lHbHVhbVZqZEdsdmJqb2dlMXh1SUNBZ0lHbHVhbVZqZEUxcGVHbHVPaUJtZFc1amRHbHZiaUFvYldsNGFXNHBJSHRjYmlBZ0lDQWdJR2x1YW1WamRHVmtUV2w0YVc1ekxuQjFjMmdvYldsNGFXNHBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBRMnhoYzNNN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gUmVhY3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIuXG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5cblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8qKlxuICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcbiAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxuICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVkLlxuICpcbiAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25lbnQgYXJndW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZlcmVudFxuICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXG4gKiBhc3NpZ25lZCB0byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAgICAgcHJvZHVjZSBuZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICAhKHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdmdW5jdGlvbicgfHwgcGFydGlhbFN0YXRlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgJyArICdmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0ZSAhPSBudWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVsbCBzdGF0ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB1bmRlZmluZWQ7XG4gIH1cbiAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAqXG4gKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICpcbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQSXMgdXNlZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlXG4gKiB3ZSB3b3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdyZSBub3QgZ29pbmcgdG8gbW92ZSB0aGVtIG92ZXIgdG8gdGhpc1xuICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcbiAgICBnZXRET01Ob2RlOiBbJ2dldERPTU5vZGUnLCAnVXNlIFJlYWN0RE9NLmZpbmRET01Ob2RlKGNvbXBvbmVudCkgaW5zdGVhZC4nXSxcbiAgICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG4gICAgcmVwbGFjZVByb3BzOiBbJ3JlcGxhY2VQcm9wcycsICdJbnN0ZWFkLCBjYWxsIHJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLiddLFxuICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddLFxuICAgIHNldFByb3BzOiBbJ3NldFByb3BzJywgJ0luc3RlYWQsIGNhbGwgcmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJ11cbiAgfTtcbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1lLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xuICAgIGlmIChkZXByZWNhdGVkQVBJcy5oYXNPd25Qcm9wZXJ0eShmbk5hbWUpKSB7XG4gICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNhdGVkQVBJc1tmbk5hbWVdKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVOdmJYQnZibVZ1ZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBRMjl0Y0c5dVpXNTBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNWNiblpoY2lCallXNUVaV1pwYm1WUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHZZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa25LVHRjYm5aaGNpQmxiWEIwZVU5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJWdGNIUjVUMkpxWldOMEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dUx5b3FYRzRnS2lCQ1lYTmxJR05zWVhOeklHaGxiSEJsY25NZ1ptOXlJSFJvWlNCMWNHUmhkR2x1WnlCemRHRjBaU0J2WmlCaElHTnZiWEJ2Ym1WdWRDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1VtVmhZM1JEYjIxd2IyNWxiblFvY0hKdmNITXNJR052Ym5SbGVIUXNJSFZ3WkdGMFpYSXBJSHRjYmlBZ2RHaHBjeTV3Y205d2N5QTlJSEJ5YjNCek8xeHVJQ0IwYUdsekxtTnZiblJsZUhRZ1BTQmpiMjUwWlhoME8xeHVJQ0IwYUdsekxuSmxabk1nUFNCbGJYQjBlVTlpYW1WamREdGNiaUFnTHk4Z1YyVWdhVzVwZEdsaGJHbDZaU0IwYUdVZ1pHVm1ZWFZzZENCMWNHUmhkR1Z5SUdKMWRDQjBhR1VnY21WaGJDQnZibVVnWjJWMGN5QnBibXBsWTNSbFpDQmllU0IwYUdWY2JpQWdMeThnY21WdVpHVnlaWEl1WEc0Z0lIUm9hWE11ZFhCa1lYUmxjaUE5SUhWd1pHRjBaWElnZkh3Z1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVTdYRzU5WEc1Y2JsSmxZV04wUTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlM1cGMxSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2UzMDdYRzVjYmk4cUtseHVJQ29nVTJWMGN5QmhJSE4xWW5ObGRDQnZaaUIwYUdVZ2MzUmhkR1V1SUVGc2QyRjVjeUIxYzJVZ2RHaHBjeUIwYnlCdGRYUmhkR1ZjYmlBcUlITjBZWFJsTGlCWmIzVWdjMmh2ZFd4a0lIUnlaV0YwSUdCMGFHbHpMbk4wWVhSbFlDQmhjeUJwYlcxMWRHRmliR1V1WEc0Z0tseHVJQ29nVkdobGNtVWdhWE1nYm04Z1ozVmhjbUZ1ZEdWbElIUm9ZWFFnWUhSb2FYTXVjM1JoZEdWZ0lIZHBiR3dnWW1VZ2FXMXRaV1JwWVhSbGJIa2dkWEJrWVhSbFpDd2djMjljYmlBcUlHRmpZMlZ6YzJsdVp5QmdkR2hwY3k1emRHRjBaV0FnWVdaMFpYSWdZMkZzYkdsdVp5QjBhR2x6SUcxbGRHaHZaQ0J0WVhrZ2NtVjBkWEp1SUhSb1pTQnZiR1FnZG1Gc2RXVXVYRzRnS2x4dUlDb2dWR2hsY21VZ2FYTWdibThnWjNWaGNtRnVkR1ZsSUhSb1lYUWdZMkZzYkhNZ2RHOGdZSE5sZEZOMFlYUmxZQ0IzYVd4c0lISjFiaUJ6ZVc1amFISnZibTkxYzJ4NUxGeHVJQ29nWVhNZ2RHaGxlU0J0WVhrZ1pYWmxiblIxWVd4c2VTQmlaU0JpWVhSamFHVmtJSFJ2WjJWMGFHVnlMaUFnV1c5MUlHTmhiaUJ3Y205MmFXUmxJR0Z1SUc5d2RHbHZibUZzWEc0Z0tpQmpZV3hzWW1GamF5QjBhR0YwSUhkcGJHd2dZbVVnWlhobFkzVjBaV1FnZDJobGJpQjBhR1VnWTJGc2JDQjBieUJ6WlhSVGRHRjBaU0JwY3lCaFkzUjFZV3hzZVZ4dUlDb2dZMjl0Y0d4bGRHVmtMbHh1SUNwY2JpQXFJRmRvWlc0Z1lTQm1kVzVqZEdsdmJpQnBjeUJ3Y205MmFXUmxaQ0IwYnlCelpYUlRkR0YwWlN3Z2FYUWdkMmxzYkNCaVpTQmpZV3hzWldRZ1lYUWdjMjl0WlNCd2IybHVkQ0JwYmx4dUlDb2dkR2hsSUdaMWRIVnlaU0FvYm05MElITjVibU5vY205dWIzVnpiSGtwTGlCSmRDQjNhV3hzSUdKbElHTmhiR3hsWkNCM2FYUm9JSFJvWlNCMWNDQjBieUJrWVhSbFhHNGdLaUJqYjIxd2IyNWxiblFnWVhKbmRXMWxiblJ6SUNoemRHRjBaU3dnY0hKdmNITXNJR052Ym5SbGVIUXBMaUJVYUdWelpTQjJZV3gxWlhNZ1kyRnVJR0psSUdScFptWmxjbVZ1ZEZ4dUlDb2dabkp2YlNCMGFHbHpMaW9nWW1WallYVnpaU0I1YjNWeUlHWjFibU4wYVc5dUlHMWhlU0JpWlNCallXeHNaV1FnWVdaMFpYSWdjbVZqWldsMlpWQnliM0J6SUdKMWRDQmlaV1p2Y21WY2JpQXFJSE5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlN3Z1lXNWtJSFJvYVhNZ2JtVjNJSE4wWVhSbExDQndjbTl3Y3l3Z1lXNWtJR052Ym5SbGVIUWdkMmxzYkNCdWIzUWdlV1YwSUdKbFhHNGdLaUJoYzNOcFoyNWxaQ0IwYnlCMGFHbHpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZHWjFibU4wYVc5dWZTQndZWEowYVdGc1UzUmhkR1VnVG1WNGRDQndZWEowYVdGc0lITjBZWFJsSUc5eUlHWjFibU4wYVc5dUlIUnZYRzRnS2lBZ0lDQWdJQ0FnY0hKdlpIVmpaU0J1WlhoMElIQmhjblJwWVd3Z2MzUmhkR1VnZEc4Z1ltVWdiV1Z5WjJWa0lIZHBkR2dnWTNWeWNtVnVkQ0J6ZEdGMFpTNWNiaUFxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCRFlXeHNaV1FnWVdaMFpYSWdjM1JoZEdVZ2FYTWdkWEJrWVhSbFpDNWNiaUFxSUVCbWFXNWhiRnh1SUNvZ1FIQnliM1JsWTNSbFpGeHVJQ292WEc1U1pXRmpkRU52YlhCdmJtVnVkQzV3Y205MGIzUjVjR1V1YzJWMFUzUmhkR1VnUFNCbWRXNWpkR2x2YmlBb2NHRnlkR2xoYkZOMFlYUmxMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWhLSFI1Y0dWdlppQndZWEowYVdGc1UzUmhkR1VnUFQwOUlDZHZZbXBsWTNRbklIeDhJSFI1Y0dWdlppQndZWEowYVdGc1UzUmhkR1VnUFQwOUlDZG1kVzVqZEdsdmJpY2dmSHdnY0dGeWRHbGhiRk4wWVhSbElEMDlJRzUxYkd3cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNObGRGTjBZWFJsS0M0dUxpazZJSFJoYTJWeklHRnVJRzlpYW1WamRDQnZaaUJ6ZEdGMFpTQjJZWEpwWVdKc1pYTWdkRzhnZFhCa1lYUmxJRzl5SUdFZ0p5QXJJQ2RtZFc1amRHbHZiaUIzYUdsamFDQnlaWFIxY201eklHRnVJRzlpYW1WamRDQnZaaUJ6ZEdGMFpTQjJZWEpwWVdKc1pYTXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSEJoY25ScFlXeFRkR0YwWlNBaFBTQnVkV3hzTENBbmMyVjBVM1JoZEdVb0xpNHVLVG9nV1c5MUlIQmhjM05sWkNCaGJpQjFibVJsWm1sdVpXUWdiM0lnYm5Wc2JDQnpkR0YwWlNCdlltcGxZM1E3SUNjZ0t5QW5hVzV6ZEdWaFpDd2dkWE5sSUdadmNtTmxWWEJrWVhSbEtDa3VKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmlBZ2RHaHBjeTUxY0dSaGRHVnlMbVZ1Y1hWbGRXVlRaWFJUZEdGMFpTaDBhR2x6TENCd1lYSjBhV0ZzVTNSaGRHVXBPMXh1SUNCcFppQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVU5oYkd4aVlXTnJLSFJvYVhNc0lHTmhiR3hpWVdOcktUdGNiaUFnZlZ4dWZUdGNibHh1THlvcVhHNGdLaUJHYjNKalpYTWdZVzRnZFhCa1lYUmxMaUJVYUdseklITm9iM1ZzWkNCdmJteDVJR0psSUdsdWRtOXJaV1FnZDJobGJpQnBkQ0JwY3lCcmJtOTNiaUIzYVhSb1hHNGdLaUJqWlhKMFlXbHVkSGtnZEdoaGRDQjNaU0JoY21VZ0tpcHViM1FxS2lCcGJpQmhJRVJQVFNCMGNtRnVjMkZqZEdsdmJpNWNiaUFxWEc0Z0tpQlpiM1VnYldGNUlIZGhiblFnZEc4Z1kyRnNiQ0IwYUdseklIZG9aVzRnZVc5MUlHdHViM2NnZEdoaGRDQnpiMjFsSUdSbFpYQmxjaUJoYzNCbFkzUWdiMllnZEdobFhHNGdLaUJqYjIxd2IyNWxiblFuY3lCemRHRjBaU0JvWVhNZ1kyaGhibWRsWkNCaWRYUWdZSE5sZEZOMFlYUmxZQ0IzWVhNZ2JtOTBJR05oYkd4bFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhkcGJHd2dibTkwSUdsdWRtOXJaU0JnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbFlDd2dZblYwSUdsMElIZHBiR3dnYVc1MmIydGxYRzRnS2lCZ1kyOXRjRzl1Wlc1MFYybHNiRlZ3WkdGMFpXQWdZVzVrSUdCamIyMXdiMjVsYm5SRWFXUlZjR1JoZEdWZ0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1AyWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QkRZV3hzWldRZ1lXWjBaWElnZFhCa1lYUmxJR2x6SUdOdmJYQnNaWFJsTGx4dUlDb2dRR1pwYm1Gc1hHNGdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0tpOWNibEpsWVdOMFEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTNW1iM0pqWlZWd1pHRjBaU0E5SUdaMWJtTjBhVzl1SUNoallXeHNZbUZqYXlrZ2UxeHVJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVadmNtTmxWWEJrWVhSbEtIUm9hWE1wTzF4dUlDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVOaGJHeGlZV05yS0hSb2FYTXNJR05oYkd4aVlXTnJLVHRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCRVpYQnlaV05oZEdWa0lFRlFTWE11SUZSb1pYTmxJRUZRU1hNZ2RYTmxaQ0IwYnlCbGVHbHpkQ0J2YmlCamJHRnpjMmxqSUZKbFlXTjBJR05zWVhOelpYTWdZblYwSUhOcGJtTmxYRzRnS2lCM1pTQjNiM1ZzWkNCc2FXdGxJSFJ2SUdSbGNISmxZMkYwWlNCMGFHVnRMQ0IzWlNkeVpTQnViM1FnWjI5cGJtY2dkRzhnYlc5MlpTQjBhR1Z0SUc5MlpYSWdkRzhnZEdocGMxeHVJQ29nYlc5a1pYSnVJR0poYzJVZ1kyeGhjM011SUVsdWMzUmxZV1FzSUhkbElHUmxabWx1WlNCaElHZGxkSFJsY2lCMGFHRjBJSGRoY201eklHbG1JR2wwSjNNZ1lXTmpaWE56WldRdVhHNGdLaTljYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhjaUJrWlhCeVpXTmhkR1ZrUVZCSmN5QTlJSHRjYmlBZ0lDQm5aWFJFVDAxT2IyUmxPaUJiSjJkbGRFUlBUVTV2WkdVbkxDQW5WWE5sSUZKbFlXTjBSRTlOTG1acGJtUkVUMDFPYjJSbEtHTnZiWEJ2Ym1WdWRDa2dhVzV6ZEdWaFpDNG5YU3hjYmlBZ0lDQnBjMDF2ZFc1MFpXUTZJRnNuYVhOTmIzVnVkR1ZrSnl3Z0owbHVjM1JsWVdRc0lHMWhhMlVnYzNWeVpTQjBieUJqYkdWaGJpQjFjQ0J6ZFdKelkzSnBjSFJwYjI1eklHRnVaQ0J3Wlc1a2FXNW5JSEpsY1hWbGMzUnpJR2x1SUNjZ0t5QW5ZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFnZEc4Z2NISmxkbVZ1ZENCdFpXMXZjbmtnYkdWaGEzTXVKMTBzWEc0Z0lDQWdjbVZ3YkdGalpWQnliM0J6T2lCYkozSmxjR3hoWTJWUWNtOXdjeWNzSUNkSmJuTjBaV0ZrTENCallXeHNJSEpsYm1SbGNpQmhaMkZwYmlCaGRDQjBhR1VnZEc5d0lHeGxkbVZzTGlkZExGeHVJQ0FnSUhKbGNHeGhZMlZUZEdGMFpUb2dXeWR5WlhCc1lXTmxVM1JoZEdVbkxDQW5VbVZtWVdOMGIzSWdlVzkxY2lCamIyUmxJSFJ2SUhWelpTQnpaWFJUZEdGMFpTQnBibk4wWldGa0lDaHpaV1VnSnlBcklDZG9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZabUZqWldKdmIyc3ZjbVZoWTNRdmFYTnpkV1Z6THpNeU16WXBMaWRkTEZ4dUlDQWdJSE5sZEZCeWIzQnpPaUJiSjNObGRGQnliM0J6Snl3Z0owbHVjM1JsWVdRc0lHTmhiR3dnY21WdVpHVnlJR0ZuWVdsdUlHRjBJSFJvWlNCMGIzQWdiR1YyWld3dUoxMWNiaUFnZlR0Y2JpQWdkbUZ5SUdSbFptbHVaVVJsY0hKbFkyRjBhVzl1VjJGeWJtbHVaeUE5SUdaMWJtTjBhVzl1SUNodFpYUm9iMlJPWVcxbExDQnBibVp2S1NCN1hHNGdJQ0FnYVdZZ0tHTmhia1JsWm1sdVpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvVW1WaFkzUkRiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxMQ0J0WlhSb2IyUk9ZVzFsTENCN1hHNGdJQ0FnSUNBZ0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuSlhNb0xpNHVLU0JwY3lCa1pYQnlaV05oZEdWa0lHbHVJSEJzWVdsdUlFcGhkbUZUWTNKcGNIUWdVbVZoWTNRZ1kyeGhjM05sY3k0Z0pYTW5MQ0JwYm1adld6QmRMQ0JwYm1adld6RmRLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUgwN1hHNGdJR1p2Y2lBb2RtRnlJR1p1VG1GdFpTQnBiaUJrWlhCeVpXTmhkR1ZrUVZCSmN5a2dlMXh1SUNBZ0lHbG1JQ2hrWlhCeVpXTmhkR1ZrUVZCSmN5NW9ZWE5QZDI1UWNtOXdaWEowZVNobWJrNWhiV1VwS1NCN1hHNGdJQ0FnSUNCa1pXWnBibVZFWlhCeVpXTmhkR2x2YmxkaGNtNXBibWNvWm01T1lXMWxMQ0JrWlhCeVpXTmhkR1ZrUVZCSmMxdG1iazVoYldWZEtUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZERzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbi8qKlxuICogQWJzdHJhY3RzIGF3YXkgYWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHJlY29uY2lsZXIgdGhhdCByZXF1aXJlcyBrbm93bGVkZ2Ugb2ZcbiAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNlIGNhbGxlcnMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG4gKiBuZWVkIGZvciB0aGlzIGluamVjdGlvbi5cbiAqL1xudmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0ge1xuXG4gIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IFJlYWN0RE9NSURPcGVyYXRpb25zLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxcblxuICByZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQsXG5cbiAgLyoqXG4gICAqIElmIGEgcGFydGljdWxhciBlbnZpcm9ubWVudCByZXF1aXJlcyB0aGF0IHNvbWUgcmVzb3VyY2VzIGJlIGNsZWFuZWQgdXAsXG4gICAqIHNwZWNpZnkgdGhpcyBpbiB0aGUgaW5qZWN0ZWQgTWl4aW4uIEluIHRoZSBET00sIHdlIHdvdWxkIGxpa2VseSB3YW50IHRvXG4gICAqIHB1cmdlIGFueSBjYWNoZWQgbm9kZSBJRCBsb29rdXBzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdW5tb3VudElERnJvbUVudmlyb25tZW50OiBmdW5jdGlvbiAocm9vdE5vZGVJRCkge1xuICAgIFJlYWN0TW91bnQucHVyZ2VJRChyb290Tm9kZUlEKTtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgaW5qZWN0ZWQgPSBmYWxzZTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBlbnZpcm9ubWVudCBkZXBlbmRlbnQgY2xlYW51cCBob29rLiAoc2VydmVyIHZzLlxuICAgKiBicm93c2VyIGV0YykuIEV4YW1wbGU6IEEgYnJvd3NlciBzeXN0ZW0gY2FjaGVzIERPTSBub2RlcyBiYXNlZCBvbiBjb21wb25lbnRcbiAgICogSUQgYW5kIG11c3QgcmVtb3ZlIHRoYXQgY2FjaGUgZW50cnkgd2hlbiB0aGlzIGluc3RhbmNlIGlzIHVubW91bnRlZC5cbiAgICovXG4gIHVubW91bnRJREZyb21FbnZpcm9ubWVudDogbnVsbCxcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgKiB0aGUgdHJlZS5cbiAgICovXG4gIHJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ6IG51bGwsXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBwcm9jZXNzaW5nIGEgcXVldWUgb2YgY2hpbGQgdXBkYXRlcy4gV2lsbFxuICAgKiBsYXRlciBtb3ZlIGludG8gTXVsdGlDaGlsZENvbXBvbmVudHMuXG4gICAqL1xuICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBudWxsLFxuXG4gIGluamVjdGlvbjoge1xuICAgIGluamVjdEVudmlyb25tZW50OiBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHtcbiAgICAgICEhaW5qZWN0ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQ6IGluamVjdEVudmlyb25tZW50KCkgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQ7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEO1xuICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcztcbiAgICAgIGluamVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRU52YlhCdmJtVnVkRVZ1ZG1seWIyNXRaVzUwTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UUXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVOdmJYQnZibVZ1ZEVWdWRtbHliMjV0Wlc1MFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiblpoY2lCcGJtcGxZM1JsWkNBOUlHWmhiSE5sTzF4dVhHNTJZWElnVW1WaFkzUkRiMjF3YjI1bGJuUkZiblpwY205dWJXVnVkQ0E5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVDNCMGFXOXVZV3hzZVNCcGJtcGxZM1JoWW14bElHVnVkbWx5YjI1dFpXNTBJR1JsY0dWdVpHVnVkQ0JqYkdWaGJuVndJR2h2YjJzdUlDaHpaWEoyWlhJZ2RuTXVYRzRnSUNBcUlHSnliM2R6WlhJZ1pYUmpLUzRnUlhoaGJYQnNaVG9nUVNCaWNtOTNjMlZ5SUhONWMzUmxiU0JqWVdOb1pYTWdSRTlOSUc1dlpHVnpJR0poYzJWa0lHOXVJR052YlhCdmJtVnVkRnh1SUNBZ0tpQkpSQ0JoYm1RZ2JYVnpkQ0J5WlcxdmRtVWdkR2hoZENCallXTm9aU0JsYm5SeWVTQjNhR1Z1SUhSb2FYTWdhVzV6ZEdGdVkyVWdhWE1nZFc1dGIzVnVkR1ZrTGx4dUlDQWdLaTljYmlBZ2RXNXRiM1Z1ZEVsRVJuSnZiVVZ1ZG1seWIyNXRaVzUwT2lCdWRXeHNMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlBjSFJwYjI1aGJHeDVJR2x1YW1WamRHRmliR1VnYUc5dmF5Qm1iM0lnYzNkaGNIQnBibWNnYjNWMElHMXZkVzUwSUdsdFlXZGxjeUJwYmlCMGFHVWdiV2xrWkd4bElHOW1YRzRnSUNBcUlIUm9aU0IwY21WbExseHVJQ0FnS2k5Y2JpQWdjbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3UW5sSlJEb2diblZzYkN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVDNCMGFXOXVZV3hzZVNCcGJtcGxZM1JoWW14bElHaHZiMnNnWm05eUlIQnliMk5sYzNOcGJtY2dZU0J4ZFdWMVpTQnZaaUJqYUdsc1pDQjFjR1JoZEdWekxpQlhhV3hzWEc0Z0lDQXFJR3hoZEdWeUlHMXZkbVVnYVc1MGJ5Qk5kV3gwYVVOb2FXeGtRMjl0Y0c5dVpXNTBjeTVjYmlBZ0lDb3ZYRzRnSUhCeWIyTmxjM05EYUdsc1pISmxibFZ3WkdGMFpYTTZJRzUxYkd3c1hHNWNiaUFnYVc1cVpXTjBhVzl1T2lCN1hHNGdJQ0FnYVc1cVpXTjBSVzUyYVhKdmJtMWxiblE2SUdaMWJtTjBhVzl1SUNobGJuWnBjbTl1YldWdWRDa2dlMXh1SUNBZ0lDQWdJU0ZwYm1wbFkzUmxaQ0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZERvZ2FXNXFaV04wUlc1MmFYSnZibTFsYm5Rb0tTQmpZVzRnYjI1c2VTQmlaU0JqWVd4c1pXUWdiMjVqWlM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0JTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBMblZ1Ylc5MWJuUkpSRVp5YjIxRmJuWnBjbTl1YldWdWRDQTlJR1Z1ZG1seWIyNXRaVzUwTG5WdWJXOTFiblJKUkVaeWIyMUZiblpwY205dWJXVnVkRHRjYmlBZ0lDQWdJRkpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUXVjbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3UW5sSlJDQTlJR1Z1ZG1seWIyNXRaVzUwTG5KbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNFSjVTVVE3WEc0Z0lDQWdJQ0JTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBMbkJ5YjJObGMzTkRhR2xzWkhKbGJsVndaR0YwWlhNZ1BTQmxiblpwY205dWJXVnVkQzV3Y205alpYTnpRMmhwYkdSeVpXNVZjR1JoZEdWek8xeHVJQ0FnSUNBZ2FXNXFaV04wWldRZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUTI5dGNHOXVaVzUwUlc1MmFYSnZibTFsYm5RN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9ucycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcycpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpIHtcbiAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwgbnVsbDtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gU3RhdGVsZXNzQ29tcG9uZW50KENvbXBvbmVudCkge31cblN0YXRlbGVzc0NvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gIHJldHVybiBDb21wb25lbnQodGhpcy5wcm9wcywgdGhpcy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIpO1xufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21wb3NpdGUgQ29tcG9uZW50IC0tLS0tLS0tLS0tLS0tLS0tLVxuICpcbiAqIC0gY29uc3RydWN0b3I6IEluaXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJldGFpbmVkLlxuICogICAtIGNvbXBvbmVudFdpbGxNb3VudFxuICogICAtIHJlbmRlclxuICogICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9yc11cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyXVxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlkTW91bnRdXG4gKiAgICAgLSBjb21wb25lbnREaWRNb3VudFxuICpcbiAqICAgICAgIFVwZGF0ZSBQaGFzZXM6XG4gKiAgICAgICAtIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVudCB1cGRhdGVkKVxuICogICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBkYXRlXG4gKiAgICAgICAgICAgLSByZW5kZXJcbiAqICAgICAgICAgICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNlc11cbiAqICAgICAgICAgLSBjb21wb25lbnREaWRVcGRhdGVcbiAqXG4gKiAgICAgLSBjb21wb25lbnRXaWxsVW5tb3VudFxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdXG4gKiAgIC0gW2NoaWxkcmVuIGRlc3Ryb3llZF1cbiAqIC0gKGRlc3Ryb3llZCk6IFRoZSBpbnN0YW5jZSBpcyBub3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0MuXG4gKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIEFuIGluY3JlbWVudGluZyBJRCBhc3NpZ25lZCB0byBlYWNoIGNvbXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXNcbiAqIHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBuZXh0TW91bnRJRCA9IDE7XG5cbi8qKlxuICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9XG4gKi9cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudE1peGluID0ge1xuXG4gIC8qKlxuICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZVxuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuXG4gICAgdGhpcy5fY29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5fbW91bnRPcmRlciA9IDA7XG4gICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcblxuICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBkYXRlUXVldWUuXG4gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSByb290SUQ7XG5cbiAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlzLl9wcm9jZXNzUHJvcHModGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMpO1xuICAgIHZhciBwdWJsaWNDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRleHQoY29udGV4dCk7XG5cbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHB1YmxpYyBjbGFzc1xuICAgIHZhciBpbnN0O1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cbiAgICAvLyBUaGlzIGlzIGEgd2F5IHRvIGRldGVjdCBpZiBDb21wb25lbnQgaXMgYSBzdGF0ZWxlc3MgYXJyb3cgZnVuY3Rpb25cbiAgICAvLyBjb21wb25lbnQsIHdoaWNoIGlzIG5vdCBuZXdhYmxlLiBJdCBtaWdodCBub3QgYmUgMTAwJSByZWxpYWJsZSBidXQgaXNcbiAgICAvLyBzb21ldGhpbmcgd2UgY2FuIGRvIHVudGlsIHdlIHN0YXJ0IGRldGVjdGluZyB0aGF0IENvbXBvbmVudCBleHRlbmRzXG4gICAgLy8gUmVhY3QuQ29tcG9uZW50LiBXZSBhbHJlYWR5IGFzc3VtZSB0aGF0IHR5cGVvZiBDb21wb25lbnQgPT09ICdmdW5jdGlvbicuXG4gICAgdmFyIGNhbkluc3RhbnRpYXRlID0gKCdwcm90b3R5cGUnIGluIENvbXBvbmVudCk7XG5cbiAgICBpZiAoY2FuSW5zdGFudGlhdGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluc3QgPSBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCBSZWFjdFVwZGF0ZVF1ZXVlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdCA9IG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIFJlYWN0VXBkYXRlUXVldWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2FuSW5zdGFudGlhdGUgfHwgaW5zdCA9PT0gbnVsbCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoaW5zdCkpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3Q7XG4gICAgICBpbnN0ID0gbmV3IFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCwgYnV0IGFkZCBhbiBlYXJseVxuICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBkZWJ1Z2dpbmdcbiAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSByZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTogeW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBkZWZpbmUgYHJlbmRlcmAsIHJldHVybmVkICcgKyAnbnVsbC9mYWxzZSBmcm9tIGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgb3IgdHJpZWQgdG8gcmVuZGVyIGFuICcgKyAnZWxlbWVudCB3aG9zZSB0eXBlIGlzIGEgZnVuY3Rpb24gdGhhdCBpc25cXCd0IGEgUmVhY3QgY29tcG9uZW50LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzdXBwb3J0IEVTNiBpbmhlcml0aW5nIGZyb20gUmVhY3QuQ29tcG9uZW50LCB0aGUgbW9kdWxlIHBhdHRlcm4sXG4gICAgICAgIC8vIGFuZCBzdGF0ZWxlc3MgY29tcG9uZW50cywgYnV0IG5vdCBFUzYgY2xhc3NlcyB0aGF0IGRvbid0IGV4dGVuZFxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCB8fCAhY2FuSW5zdGFudGlhdGUgfHwgIShpbnN0IGluc3RhbmNlb2YgQ29tcG9uZW50KSwgJyVzKC4uLik6IFJlYWN0IGNvbXBvbmVudCBjbGFzc2VzIG11c3QgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAgaW4gdGhlIGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3JcbiAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuXG4gICAgaW5zdC5wcm9wcyA9IHB1YmxpY1Byb3BzO1xuICAgIGluc3QuY29udGV4dCA9IHB1YmxpY0NvbnRleHQ7XG4gICAgaW5zdC5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgaW5zdC51cGRhdGVyID0gUmVhY3RVcGRhdGVRdWV1ZTtcblxuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdDtcblxuICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIGJhY2sgdG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG4gICAgUmVhY3RJbnN0YW5jZU1hcC5zZXQoaW5zdCwgdGhpcyk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gU2luY2UgcGxhaW4gSlMgY2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBzcGVjaWFsIGluaXRpYWxpemF0aW9uXG4gICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24gZXJyb3JzIGVhcmx5LiBUaGVyZWZvcmUsIHdlIGhhdmUgdG9cbiAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5zdGVhZC5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldEluaXRpYWxTdGF0ZSB8fCBpbnN0LmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldEluaXRpYWxTdGF0ZSB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdEaWQgeW91IG1lYW4gdG8gZGVmaW5lIGEgc3RhdGUgcHJvcGVydHkgaW5zdGVhZD8nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQcm9wcyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QucHJvcFR5cGVzLCAncHJvcFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5jb250ZXh0VHlwZXMsICdjb250ZXh0VHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhICcgKyAnc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBjb250ZXh0VHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3VudCAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRVbm1vdW50KCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAnRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdC5zdGF0ZTtcbiAgICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluc3Quc3RhdGUgPSBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgIH1cbiAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsTW91bnQpIHtcbiAgICAgIGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7XG4gICAgICAvLyBXaGVuIG1vdW50aW5nLCBjYWxscyB0byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxsTW91bnRgIHdpbGwgc2V0XG4gICAgICAvLyBgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWVgIHdpdGhvdXQgdHJpZ2dlcmluZyBhIHJlLXJlbmRlci5cbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSkge1xuICAgICAgICBpbnN0LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpbnN0LnByb3BzLCBpbnN0LmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vdCBhIHN0YXRlbGVzcyBjb21wb25lbnQsIHdlIG5vdyByZW5kZXJcbiAgICBpZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChyZW5kZXJlZEVsZW1lbnQpO1xuXG4gICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgcm9vdElELCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgaWYgKGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRNb3VudCwgaW5zdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCkge1xuICAgICAgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuICAgIH1cblxuICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuXG4gICAgLy8gUmVzZXQgcGVuZGluZyBmaWVsZHNcbiAgICAvLyBFdmVuIGlmIHRoaXMgY29tcG9uZW50IGlzIHNjaGVkdWxlZCBmb3IgYW5vdGhlciB1cGRhdGUgaW4gUmVhY3RVcGRhdGVzLFxuICAgIC8vIGl0IHdvdWxkIHN0aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0LlxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXG4gICAgLy8gVGhlc2UgZmllbGRzIGRvIG5vdCByZWFsbHkgbmVlZCB0byBiZSByZXNldCBzaW5jZSB0aGlzIG9iamVjdCBpcyBub1xuICAgIC8vIGxvbmdlciBhY2Nlc3NpYmxlLlxuICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBEZWxldGUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSB0byB0aGlzIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG4gICAgLy8gd2hpY2ggYWxsb3cgdGhlIGludGVybmFscyB0byBiZSBwcm9wZXJseSBjbGVhbmVkIHVwIGV2ZW4gaWYgdGhlIHVzZXJcbiAgICAvLyBsZWFrcyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNlLlxuICAgIFJlYWN0SW5zdGFuY2VNYXAucmVtb3ZlKGluc3QpO1xuXG4gICAgLy8gU29tZSBleGlzdGluZyBjb21wb25lbnRzIHJlbHkgb24gaW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVlblxuICAgIC8vIGRlc3Ryb3llZCAoaW4gZXZlbnQgaGFuZGxlcnMpLlxuICAgIC8vIFRPRE86IGluc3QucHJvcHMgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3QuY29udGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBgY29udGV4dFR5cGVzYFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX21hc2tDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0ID0gbnVsbDtcbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29udGV4dFR5cGVzID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcbiAgICBpZiAoIWNvbnRleHRUeXBlcykge1xuICAgICAgcmV0dXJuIGVtcHR5T2JqZWN0O1xuICAgIH1cbiAgICBtYXNrZWRDb250ZXh0ID0ge307XG4gICAgZm9yICh2YXIgY29udGV4dE5hbWUgaW4gY29udGV4dFR5cGVzKSB7XG4gICAgICBtYXNrZWRDb250ZXh0W2NvbnRleHROYW1lXSA9IGNvbnRleHRbY29udGV4dE5hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gbWFza2VkQ29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluXG4gICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNzZXJ0cyB0aGF0IHRoZXkgYXJlIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0ID0gdGhpcy5fbWFza0NvbnRleHQoY29udGV4dCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0VHlwZXMpIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQcm9wVHlwZXMoQ29tcG9uZW50LmNvbnRleHRUeXBlcywgbWFza2VkQ29udGV4dCwgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXJyZW50Q29udGV4dFxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQgJiYgaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcbiAgICBpZiAoY2hpbGRDb250ZXh0KSB7XG4gICAgICAhKHR5cGVvZiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKTogY2hpbGRDb250ZXh0VHlwZXMgbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvICcgKyAndXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJvcFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0LCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLmNoaWxkQ29udGV4dCk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuICAgICAgICAhKG5hbWUgaW4gQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKToga2V5IFwiJXNcIiBpcyBub3QgZGVmaW5lZCBpbiBjaGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwgY2hpbGRDb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgcHJvcHMgYnkgc2V0dGluZyBkZWZhdWx0IHZhbHVlcyBmb3IgdW5zcGVjaWZpZWQgcHJvcHMgYW5kXG4gICAqIGFzc2VydGluZyB0aGF0IHRoZSBwcm9wcyBhcmUgdmFsaWQuIERvZXMgbm90IG11dGF0ZSBpdHMgYXJndW1lbnQ7IHJldHVybnNcbiAgICogYSBuZXcgcHJvcHMgb2JqZWN0IHdpdGggZGVmYXVsdHMgbWVyZ2VkIGluLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UHJvcHNcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NQcm9wczogZnVuY3Rpb24gKG5ld1Byb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgICAgaWYgKENvbXBvbmVudC5wcm9wVHlwZXMpIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQcm9wVHlwZXMoQ29tcG9uZW50LnByb3BUeXBlcywgbmV3UHJvcHMsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdQcm9wcztcbiAgfSxcblxuICAvKipcbiAgICogQXNzZXJ0IHRoYXQgdGhlIHByb3BzIGFyZSB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcFR5cGVzIE1hcCBvZiBwcm9wIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uIChwcm9wVHlwZXMsIHByb3BzLCBsb2NhdGlvbikge1xuICAgIC8vIFRPRE86IFN0b3AgdmFsaWRhdGluZyBwcm9wIHR5cGVzIGhlcmUgYW5kIG9ubHkgdXNlIHRoZSBlbGVtZW50XG4gICAgLy8gdmFsaWRhdGlvbi5cbiAgICB2YXIgY29tcG9uZW50TmFtZSA9IHRoaXMuZ2V0TmFtZSgpO1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICAhKHR5cGVvZiBwcm9wVHlwZXNbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSAnICsgJ2Zyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gZXh0ZW5kIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgZXJyb3JzIGluXG4gICAgICAgICAgLy8gdG9wLWxldmVsIHJlbmRlciBjYWxscywgc28gSSdtIGFic3RyYWN0aW5nIGl0IGF3YXkgaW50b1xuICAgICAgICAgIC8vIGEgZnVuY3Rpb24gdG8gbWluaW1pemUgcmVmYWN0b3JpbmcgaW4gdGhlIGZ1dHVyZVxuICAgICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSh0aGlzKTtcblxuICAgICAgICAgIGlmIChsb2NhdGlvbiA9PT0gUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKSB7XG4gICAgICAgICAgICAvLyBQcmVmYWNlIGdpdmVzIHVzIHNvbWV0aGluZyB0byBibGFja2xpc3QgaW4gd2FybmluZyBtb2R1bGVcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgQ29udGV4dCBUeXBlczogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgcHJldkNvbnRleHQgPSB0aGlzLl9jb250ZXh0O1xuXG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICogSWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3IgYF9wZW5kaW5nRm9yY2VVcGRhdGVgXG4gICAqIGlzIHNldCwgdXBkYXRlIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbikge1xuICAgIGlmICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlzLl9wZW5kaW5nRWxlbWVudCB8fCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSAhPT0gbnVsbCB8fCB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2NvbnRleHQsIHRoaXMuX2NvbnRleHQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kXG4gICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFzc3VtaW5nIHRoZSB1cGRhdGUgaXNuJ3RcbiAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRhdGUgbGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTVxuICAgKiByZXByZXNlbnRhdGlvbiBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0UGFyZW50RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0LCBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIHZhciBuZXh0Q29udGV4dCA9IHRoaXMuX2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQgPyBpbnN0LmNvbnRleHQgOiB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICB2YXIgbmV4dFByb3BzO1xuXG4gICAgLy8gRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHByb3BzIHVwZGF0ZSB2ZXJzdXMgYSBzaW1wbGUgc3RhdGUgdXBkYXRlXG4gICAgaWYgKHByZXZQYXJlbnRFbGVtZW50ID09PSBuZXh0UGFyZW50RWxlbWVudCkge1xuICAgICAgLy8gU2tpcCBjaGVja2luZyBwcm9wIHR5cGVzIGFnYWluIC0tIHdlIGRvbid0IHJlYWQgaW5zdC5wcm9wcyB0byBhdm9pZFxuICAgICAgLy8gd2FybmluZyBmb3IgRE9NIGNvbXBvbmVudCBwcm9wcyBpbiB0aGlzIHVwZ3JhZGVcbiAgICAgIG5leHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50LnByb3BzO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0UHJvcHMgPSB0aGlzLl9wcm9jZXNzUHJvcHMobmV4dFBhcmVudEVsZW1lbnQucHJvcHMpO1xuICAgICAgLy8gQW4gdXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldFxuICAgICAgLy8gX3BlbmRpbmdTdGF0ZVF1ZXVlIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0YXRlIHVwZGF0ZXMgZ2V0c1xuICAgICAgLy8gaW1tZWRpYXRlbHkgcmVjb25jaWxlZCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGJhdGNoLlxuXG4gICAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7XG4gICAgICAgIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblxuICAgIHZhciBzaG91bGRVcGRhdGUgPSB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgfHwgIWluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlIHx8IGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIHNob3VsZFVwZGF0ZSAhPT0gJ3VuZGVmaW5lZCcsICclcy5zaG91bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVkIGluc3RlYWQgb2YgYSAnICsgJ2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1ZSBvciBmYWxzZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcbiAgICAgIC8vIFdpbGwgc2V0IGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC5cbiAgICAgIHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobmV4dFBhcmVudEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIG5leHRVbm1hc2tlZENvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQgdGhhdCBhIGNvbXBvbmVudCBzaG91bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudFxuICAgICAgLy8gdG8gc2V0IHByb3BzIGFuZCBzdGF0ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVwZGF0ZS5cbiAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7XG4gICAgICB0aGlzLl9jb250ZXh0ID0gbmV4dFVubWFza2VkQ29udGV4dDtcbiAgICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIF9wcm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciBxdWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlO1xuICAgIHZhciByZXBsYWNlID0gdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXG4gICAgaWYgKCFxdWV1ZSkge1xuICAgICAgcmV0dXJuIGluc3Quc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHJlcGxhY2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gcXVldWVbMF07XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IGFzc2lnbih7fSwgcmVwbGFjZSA/IHF1ZXVlWzBdIDogaW5zdC5zdGF0ZSk7XG4gICAgZm9yICh2YXIgaSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IHF1ZXVlW2ldO1xuICAgICAgYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09ICdmdW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4dCkgOiBwYXJ0aWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90aWZpZXMgZGVsZWdhdGUgbWV0aG9kcyBvZiB1cGRhdGUgYW5kXG4gICAqIHBlcmZvcm1zIHVwZGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQgZWxlbWVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4dCBvYmplY3QgdG8gc2V0IGFzIHN0YXRlLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0IE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHVubWFza2VkQ29udGV4dFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29tcG9uZW50RGlkVXBkYXRlKTtcbiAgICB2YXIgcHJldlByb3BzO1xuICAgIHZhciBwcmV2U3RhdGU7XG4gICAgdmFyIHByZXZDb250ZXh0O1xuICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcbiAgICAgIHByZXZQcm9wcyA9IGluc3QucHJvcHM7XG4gICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlO1xuICAgICAgcHJldkNvbnRleHQgPSBpbnN0LmNvbnRleHQ7XG4gICAgfVxuXG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZSkge1xuICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLl9jb250ZXh0ID0gdW5tYXNrZWRDb250ZXh0O1xuICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblxuICAgIHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpO1xuXG4gICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIGluc3QpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ2FsbCB0aGUgY29tcG9uZW50J3MgYHJlbmRlcmAgbWV0aG9kIGFuZCB1cGRhdGUgdGhlIERPTSBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF91cGRhdGVSZW5kZXJlZENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZDb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgIHZhciBwcmV2UmVuZGVyZWRFbGVtZW50ID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgbmV4dFJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNvbXBvbmVudEluc3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50LCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXNlIHR3byBJRHMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lISBCdXQgbm90aGluZyBzaG91bGQgcmVseSBvbiB0aGF0LlxuICAgICAgdmFyIHRoaXNJRCA9IHRoaXMuX3Jvb3ROb2RlSUQ7XG4gICAgICB2YXIgcHJldkNvbXBvbmVudElEID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9yb290Tm9kZUlEO1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNvbXBvbmVudEluc3RhbmNlKTtcblxuICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRSZW5kZXJlZEVsZW1lbnQpO1xuICAgICAgdmFyIG5leHRNYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQsIHRoaXNJRCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuICAgICAgdGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRChwcmV2Q29tcG9uZW50SUQsIG5leHRNYXJrdXApO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgX3JlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50SUQsIG5leHRNYXJrdXApIHtcbiAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQocHJldkNvbXBvbmVudElELCBuZXh0TWFya3VwKTtcbiAgfSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIHJlbmRlcmVkQ29tcG9uZW50ID0gaW5zdC5yZW5kZXIoKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICBpZiAodHlwZW9mIHJlbmRlcmVkQ29tcG9uZW50ID09PSAndW5kZWZpbmVkJyAmJiBpbnN0LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZENvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVuZGVyZWRDb21wb25lbnQ7XG4gICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7XG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgICAhKFxuICAgIC8vIFRPRE86IEFuIGBpc1ZhbGlkTm9kZWAgZnVuY3Rpb24gd291bGQgcHJvYmFibHkgYmUgbW9yZSBhcHByb3ByaWF0ZVxuICAgIHJlbmRlcmVkQ29tcG9uZW50ID09PSBudWxsIHx8IHJlbmRlcmVkQ29tcG9uZW50ID09PSBmYWxzZSB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQocmVuZGVyZWRDb21wb25lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdENvbXBvbmVudCBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgJyArICdyZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiByZW5kZXJlZENvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogTGF6aWx5IGFsbG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS5cbiAgICogQHBhcmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXR0YWNoUmVmOiBmdW5jdGlvbiAocmVmLCBjb21wb25lbnQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGhhdmUgcmVmcy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHB1YmxpY0NvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwdWJsaWNDb21wb25lbnRJbnN0YW5jZSAhPSBudWxsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRlZCBieSAlcykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYsIGNvbXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIHJlZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0LnJlZnM7XG4gICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIgcmVmcyA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzO1xuICAgIGRlbGV0ZSByZWZzW3JlZl07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0XG4gICAqIGluIGVycm9yIG1lc3NhZ2VzLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXRcbiAgICogaXMgZXhwb3NlZCBieSByZWZzIGFuZCByZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0ZWxlc3NcbiAgICogY29tcG9uZW50cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICBpZiAoaW5zdCBpbnN0YW5jZW9mIFN0YXRlbGVzc0NvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnN0O1xuICB9LFxuXG4gIC8vIFN0dWJcbiAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGxcblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50TWl4aW4sICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIHtcbiAgbW91bnRDb21wb25lbnQ6ICdtb3VudENvbXBvbmVudCcsXG4gIHVwZGF0ZUNvbXBvbmVudDogJ3VwZGF0ZUNvbXBvbmVudCcsXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ICdfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50J1xufSk7XG5cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHtcblxuICBNaXhpbjogUmVhY3RDb21wb3NpdGVDb21wb25lbnRNaXhpblxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGSmxZV04wUTI5dGNHOXVaVzUwUlc1MmFYSnZibTFsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JuWmhjaUJTWldGamRFVnNaVzFsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJXeGxiV1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBTVzV6ZEdGdVkyVk5ZWEFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wU1c1emRHRnVZMlZOWVhBbktUdGNiblpoY2lCU1pXRmpkRkJsY21ZZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVHVnlaaWNwTzF4dWRtRnlJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTW5LVHRjYm5aaGNpQlNaV0ZqZEZKbFkyOXVZMmxzWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVtVmpiMjVqYVd4bGNpY3BPMXh1ZG1GeUlGSmxZV04wVlhCa1lYUmxVWFZsZFdVZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZYQmtZWFJsVVhWbGRXVW5LVHRjYmx4dWRtRnlJR0Z6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2VDJKcVpXTjBMbUZ6YzJsbmJpY3BPMXh1ZG1GeUlHVnRjSFI1VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbFBZbXBsWTNRbktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYm5aaGNpQnphRzkxYkdSVmNHUmhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2YzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNW1kVzVqZEdsdmJpQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9ZMjl0Y0c5dVpXNTBLU0I3WEc0Z0lIWmhjaUJ2ZDI1bGNpQTlJR052YlhCdmJtVnVkQzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeUlIeDhJRzUxYkd3N1hHNGdJR2xtSUNodmQyNWxjaWtnZTF4dUlDQWdJSFpoY2lCdVlXMWxJRDBnYjNkdVpYSXVaMlYwVG1GdFpTZ3BPMXh1SUNBZ0lHbG1JQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0p5QkRhR1ZqYXlCMGFHVWdjbVZ1WkdWeUlHMWxkR2h2WkNCdlppQmdKeUFySUc1aGJXVWdLeUFuWUM0bk8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnSnljN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUZOMFlYUmxiR1Z6YzBOdmJYQnZibVZ1ZENoRGIyMXdiMjVsYm5RcElIdDlYRzVUZEdGMFpXeGxjM05EYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTG5KbGJtUmxjaUE5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnZG1GeUlFTnZiWEJ2Ym1WdWRDQTlJRkpsWVdOMFNXNXpkR0Z1WTJWTllYQXVaMlYwS0hSb2FYTXBMbDlqZFhKeVpXNTBSV3hsYldWdWRDNTBlWEJsTzF4dUlDQnlaWFIxY200Z1EyOXRjRzl1Wlc1MEtIUm9hWE11Y0hKdmNITXNJSFJvYVhNdVkyOXVkR1Y0ZEN3Z2RHaHBjeTUxY0dSaGRHVnlLVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRJRlJvWlNCTWFXWmxMVU41WTJ4bElHOW1JR0VnUTI5dGNHOXphWFJsSUVOdmJYQnZibVZ1ZENBdExTMHRMUzB0TFMwdExTMHRMUzB0TFMxY2JpQXFYRzRnS2lBdElHTnZibk4wY25WamRHOXlPaUJKYm1sMGFXRnNhWHBoZEdsdmJpQnZaaUJ6ZEdGMFpTNGdWR2hsSUdsdWMzUmhibU5sSUdseklHNXZkeUJ5WlhSaGFXNWxaQzVjYmlBcUlDQWdMU0JqYjIxd2IyNWxiblJYYVd4c1RXOTFiblJjYmlBcUlDQWdMU0J5Wlc1a1pYSmNiaUFxSUNBZ0xTQmJZMmhwYkdSeVpXNG5jeUJqYjI1emRISjFZM1J2Y25OZFhHNGdLaUFnSUNBZ0xTQmJZMmhwYkdSeVpXNG5jeUJqYjIxd2IyNWxiblJYYVd4c1RXOTFiblFnWVc1a0lISmxibVJsY2wxY2JpQXFJQ0FnSUNBdElGdGphR2xzWkhKbGJpZHpJR052YlhCdmJtVnVkRVJwWkUxdmRXNTBYVnh1SUNvZ0lDQWdJQzBnWTI5dGNHOXVaVzUwUkdsa1RXOTFiblJjYmlBcVhHNGdLaUFnSUNBZ0lDQlZjR1JoZEdVZ1VHaGhjMlZ6T2x4dUlDb2dJQ0FnSUNBZ0xTQmpiMjF3YjI1bGJuUlhhV3hzVW1WalpXbDJaVkJ5YjNCeklDaHZibXg1SUdOaGJHeGxaQ0JwWmlCd1lYSmxiblFnZFhCa1lYUmxaQ2xjYmlBcUlDQWdJQ0FnSUMwZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxYRzRnS2lBZ0lDQWdJQ0FnSUMwZ1kyOXRjRzl1Wlc1MFYybHNiRlZ3WkdGMFpWeHVJQ29nSUNBZ0lDQWdJQ0FnSUMwZ2NtVnVaR1Z5WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdMU0JiWTJocGJHUnlaVzRuY3lCamIyNXpkSEoxWTNSdmNuTWdiM0lnY21WalpXbDJaU0J3Y205d2N5QndhR0Z6WlhOZFhHNGdLaUFnSUNBZ0lDQWdJQzBnWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsWEc0Z0tseHVJQ29nSUNBZ0lDMGdZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblJjYmlBcUlDQWdJQ0F0SUZ0amFHbHNaSEpsYmlkeklHTnZiWEJ2Ym1WdWRGZHBiR3hWYm0xdmRXNTBYVnh1SUNvZ0lDQXRJRnRqYUdsc1pISmxiaUJrWlhOMGNtOTVaV1JkWEc0Z0tpQXRJQ2hrWlhOMGNtOTVaV1FwT2lCVWFHVWdhVzV6ZEdGdVkyVWdhWE1nYm05M0lHSnNZVzVyTENCeVpXeGxZWE5sWkNCaWVTQlNaV0ZqZENCaGJtUWdjbVZoWkhrZ1ptOXlJRWRETGx4dUlDcGNiaUFxSUMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRYRzRnS2k5Y2JseHVMeW9xWEc0Z0tpQkJiaUJwYm1OeVpXMWxiblJwYm1jZ1NVUWdZWE56YVdkdVpXUWdkRzhnWldGamFDQmpiMjF3YjI1bGJuUWdkMmhsYmlCcGRDQnBjeUJ0YjNWdWRHVmtMaUJVYUdseklHbHpYRzRnS2lCMWMyVmtJSFJ2SUdWdVptOXlZMlVnZEdobElHOXlaR1Z5SUdsdUlIZG9hV05vSUdCU1pXRmpkRlZ3WkdGMFpYTmdJSFZ3WkdGMFpYTWdaR2x5ZEhrZ1kyOXRjRzl1Wlc1MGN5NWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1MllYSWdibVY0ZEUxdmRXNTBTVVFnUFNBeE8xeHVYRzR2S2lwY2JpQXFJRUJzWlc1a2N5QjdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbGZWeHVJQ292WEc1MllYSWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5STmFYaHBiaUE5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUW1GelpTQmpiMjV6ZEhKMVkzUnZjaUJtYjNJZ1lXeHNJR052YlhCdmMybDBaU0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0JsYkdWdFpXNTBYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZERvZ1puVnVZM1JwYjI0Z0tHVnNaVzFsYm5RcElIdGNiaUFnSUNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDQTlJR1ZzWlcxbGJuUTdYRzRnSUNBZ2RHaHBjeTVmY205dmRFNXZaR1ZKUkNBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZmFXNXpkR0Z1WTJVZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnTHk4Z1UyVmxJRkpsWVdOMFZYQmtZWFJsVVhWbGRXVmNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5SV3hsYldWdWRDQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZFNaWEJzWVdObFUzUmhkR1VnUFNCbVlXeHpaVHRjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuUm05eVkyVlZjR1JoZEdVZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUhSb2FYTXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBJRDBnYm5Wc2JEdGNibHh1SUNBZ0lIUm9hWE11WDJOdmJuUmxlSFFnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDIxdmRXNTBUM0prWlhJZ1BTQXdPMXh1SUNBZ0lIUm9hWE11WDNSdmNFeGxkbVZzVjNKaGNIQmxjaUE5SUc1MWJHdzdYRzVjYmlBZ0lDQXZMeUJUWldVZ1VtVmhZM1JWY0dSaGRHVnpJR0Z1WkNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTGx4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNZ1BTQnVkV3hzTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibWwwYVdGc2FYcGxjeUIwYUdVZ1kyOXRjRzl1Wlc1MExDQnlaVzVrWlhKeklHMWhjbXQxY0N3Z1lXNWtJSEpsWjJsemRHVnljeUJsZG1WdWRDQnNhWE4wWlc1bGNuTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5YjI5MFNVUWdSRTlOSUVsRUlHOW1JSFJvWlNCeWIyOTBJRzV2WkdVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibnhTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFjbVYwZFhKdUlIcy9jM1J5YVc1bmZTQlNaVzVrWlhKbFpDQnRZWEpyZFhBZ2RHOGdZbVVnYVc1elpYSjBaV1FnYVc1MGJ5QjBhR1VnUkU5TkxseHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0J0YjNWdWRFTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLSEp2YjNSSlJDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IwYUdsekxsOWpiMjUwWlhoMElEMGdZMjl1ZEdWNGREdGNiaUFnSUNCMGFHbHpMbDl0YjNWdWRFOXlaR1Z5SUQwZ2JtVjRkRTF2ZFc1MFNVUXJLenRjYmlBZ0lDQjBhR2x6TGw5eWIyOTBUbTlrWlVsRUlEMGdjbTl2ZEVsRU8xeHVYRzRnSUNBZ2RtRnlJSEIxWW14cFkxQnliM0J6SUQwZ2RHaHBjeTVmY0hKdlkyVnpjMUJ5YjNCektIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCektUdGNiaUFnSUNCMllYSWdjSFZpYkdsalEyOXVkR1Y0ZENBOUlIUm9hWE11WDNCeWIyTmxjM05EYjI1MFpYaDBLR052Ym5SbGVIUXBPMXh1WEc0Z0lDQWdkbUZ5SUVOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMblI1Y0dVN1hHNWNiaUFnSUNBdkx5QkpibWwwYVdGc2FYcGxJSFJvWlNCd2RXSnNhV01nWTJ4aGMzTmNiaUFnSUNCMllYSWdhVzV6ZER0Y2JpQWdJQ0IyWVhJZ2NtVnVaR1Z5WldSRmJHVnRaVzUwTzF4dVhHNGdJQ0FnTHk4Z1ZHaHBjeUJwY3lCaElIZGhlU0IwYnlCa1pYUmxZM1FnYVdZZ1EyOXRjRzl1Wlc1MElHbHpJR0VnYzNSaGRHVnNaWE56SUdGeWNtOTNJR1oxYm1OMGFXOXVYRzRnSUNBZ0x5OGdZMjl0Y0c5dVpXNTBMQ0IzYUdsamFDQnBjeUJ1YjNRZ2JtVjNZV0pzWlM0Z1NYUWdiV2xuYUhRZ2JtOTBJR0psSURFd01DVWdjbVZzYVdGaWJHVWdZblYwSUdselhHNGdJQ0FnTHk4Z2MyOXRaWFJvYVc1bklIZGxJR05oYmlCa2J5QjFiblJwYkNCM1pTQnpkR0Z5ZENCa1pYUmxZM1JwYm1jZ2RHaGhkQ0JEYjIxd2IyNWxiblFnWlhoMFpXNWtjMXh1SUNBZ0lDOHZJRkpsWVdOMExrTnZiWEJ2Ym1WdWRDNGdWMlVnWVd4eVpXRmtlU0JoYzNOMWJXVWdkR2hoZENCMGVYQmxiMllnUTI5dGNHOXVaVzUwSUQwOVBTQW5ablZ1WTNScGIyNG5MbHh1SUNBZ0lIWmhjaUJqWVc1SmJuTjBZVzUwYVdGMFpTQTlJQ2duY0hKdmRHOTBlWEJsSnlCcGJpQkRiMjF3YjI1bGJuUXBPMXh1WEc0Z0lDQWdhV1lnS0dOaGJrbHVjM1JoYm5ScFlYUmxLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0JTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBJRDBnZEdocGN6dGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQnBibk4wSUQwZ2JtVjNJRU52YlhCdmJtVnVkQ2h3ZFdKc2FXTlFjbTl3Y3l3Z2NIVmliR2xqUTI5dWRHVjRkQ3dnVW1WaFkzUlZjR1JoZEdWUmRXVjFaU2s3WEc0Z0lDQWdJQ0FnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnSUNBZ0lDQWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHbHVjM1FnUFNCdVpYY2dRMjl0Y0c5dVpXNTBLSEIxWW14cFkxQnliM0J6TENCd2RXSnNhV05EYjI1MFpYaDBMQ0JTWldGamRGVndaR0YwWlZGMVpYVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSVdOaGJrbHVjM1JoYm5ScFlYUmxJSHg4SUdsdWMzUWdQVDA5SUc1MWJHd2dmSHdnYVc1emRDQTlQVDBnWm1Gc2MyVWdmSHdnVW1WaFkzUkZiR1Z0Wlc1MExtbHpWbUZzYVdSRmJHVnRaVzUwS0dsdWMzUXBLU0I3WEc0Z0lDQWdJQ0J5Wlc1a1pYSmxaRVZzWlcxbGJuUWdQU0JwYm5OME8xeHVJQ0FnSUNBZ2FXNXpkQ0E5SUc1bGR5QlRkR0YwWld4bGMzTkRiMjF3YjI1bGJuUW9RMjl0Y0c5dVpXNTBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0x5OGdWR2hwY3lCM2FXeHNJSFJvY205M0lHeGhkR1Z5SUdsdUlGOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5Rc0lHSjFkQ0JoWkdRZ1lXNGdaV0Z5YkhsY2JpQWdJQ0FnSUM4dklIZGhjbTVwYm1jZ2JtOTNJSFJ2SUdobGJIQWdaR1ZpZFdkbmFXNW5YRzRnSUNBZ0lDQnBaaUFvYVc1emRDNXlaVzVrWlhJZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKeVZ6S0M0dUxpazZJRTV2SUdCeVpXNWtaWEpnSUcxbGRHaHZaQ0JtYjNWdVpDQnZiaUIwYUdVZ2NtVjBkWEp1WldRZ1kyOXRjRzl1Wlc1MElDY2dLeUFuYVc1emRHRnVZMlU2SUhsdmRTQnRZWGtnYUdGMlpTQm1iM0puYjNSMFpXNGdkRzhnWkdWbWFXNWxJR0J5Wlc1a1pYSmdMQ0J5WlhSMWNtNWxaQ0FuSUNzZ0oyNTFiR3d2Wm1Gc2MyVWdabkp2YlNCaElITjBZWFJsYkdWemN5QmpiMjF3YjI1bGJuUXNJRzl5SUhSeWFXVmtJSFJ2SUhKbGJtUmxjaUJoYmlBbklDc2dKMlZzWlcxbGJuUWdkMmh2YzJVZ2RIbHdaU0JwY3lCaElHWjFibU4wYVc5dUlIUm9ZWFFnYVhOdVhGd25kQ0JoSUZKbFlXTjBJR052YlhCdmJtVnVkQzRuTENCRGIyMXdiMjVsYm5RdVpHbHpjR3hoZVU1aGJXVWdmSHdnUTI5dGNHOXVaVzUwTG01aGJXVWdmSHdnSjBOdmJYQnZibVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdMeThnVjJVZ2MzVndjRzl5ZENCRlV6WWdhVzVvWlhKcGRHbHVaeUJtY205dElGSmxZV04wTGtOdmJYQnZibVZ1ZEN3Z2RHaGxJRzF2WkhWc1pTQndZWFIwWlhKdUxGeHVJQ0FnSUNBZ0lDQXZMeUJoYm1RZ2MzUmhkR1ZzWlhOeklHTnZiWEJ2Ym1WdWRITXNJR0oxZENCdWIzUWdSVk0ySUdOc1lYTnpaWE1nZEdoaGRDQmtiMjRuZENCbGVIUmxibVJjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1EyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTQW1KaUJEYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTG1selVtVmhZM1JEYjIxd2IyNWxiblFnZkh3Z0lXTmhia2x1YzNSaGJuUnBZWFJsSUh4OElDRW9hVzV6ZENCcGJuTjBZVzVqWlc5bUlFTnZiWEJ2Ym1WdWRDa3NJQ2NsY3lndUxpNHBPaUJTWldGamRDQmpiMjF3YjI1bGJuUWdZMnhoYzNObGN5QnRkWE4wSUdWNGRHVnVaQ0JTWldGamRDNURiMjF3YjI1bGJuUXVKeXdnUTI5dGNHOXVaVzUwTG1ScGMzQnNZWGxPWVcxbElIeDhJRU52YlhCdmJtVnVkQzV1WVcxbElIeDhJQ2REYjIxd2IyNWxiblFuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QlVhR1Z6WlNCemFHOTFiR1FnWW1VZ2MyVjBJSFZ3SUdsdUlIUm9aU0JqYjI1emRISjFZM1J2Y2l3Z1luVjBJR0Z6SUdFZ1kyOXVkbVZ1YVdWdVkyVWdabTl5WEc0Z0lDQWdMeThnYzJsdGNHeGxjaUJqYkdGemN5QmhZbk4wY21GamRHbHZibk1zSUhkbElITmxkQ0IwYUdWdElIVndJR0ZtZEdWeUlIUm9aU0JtWVdOMExseHVJQ0FnSUdsdWMzUXVjSEp2Y0hNZ1BTQndkV0pzYVdOUWNtOXdjenRjYmlBZ0lDQnBibk4wTG1OdmJuUmxlSFFnUFNCd2RXSnNhV05EYjI1MFpYaDBPMXh1SUNBZ0lHbHVjM1F1Y21WbWN5QTlJR1Z0Y0hSNVQySnFaV04wTzF4dUlDQWdJR2x1YzNRdWRYQmtZWFJsY2lBOUlGSmxZV04wVlhCa1lYUmxVWFZsZFdVN1hHNWNiaUFnSUNCMGFHbHpMbDlwYm5OMFlXNWpaU0E5SUdsdWMzUTdYRzVjYmlBZ0lDQXZMeUJUZEc5eVpTQmhJSEpsWm1WeVpXNWpaU0JtY205dElIUm9aU0JwYm5OMFlXNWpaU0JpWVdOcklIUnZJSFJvWlNCcGJuUmxjbTVoYkNCeVpYQnlaWE5sYm5SaGRHbHZibHh1SUNBZ0lGSmxZV04wU1c1emRHRnVZMlZOWVhBdWMyVjBLR2x1YzNRc0lIUm9hWE1wTzF4dVhHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQzh2SUZOcGJtTmxJSEJzWVdsdUlFcFRJR05zWVhOelpYTWdZWEpsSUdSbFptbHVaV1FnZDJsMGFHOTFkQ0JoYm5rZ2MzQmxZMmxoYkNCcGJtbDBhV0ZzYVhwaGRHbHZibHh1SUNBZ0lDQWdMeThnYkc5bmFXTXNJSGRsSUdOaGJpQnViM1FnWTJGMFkyZ2dZMjl0Ylc5dUlHVnljbTl5Y3lCbFlYSnNlUzRnVkdobGNtVm1iM0psTENCM1pTQm9ZWFpsSUhSdlhHNGdJQ0FnSUNBdkx5QmpZWFJqYUNCMGFHVnRJR2hsY21Vc0lHRjBJR2x1YVhScFlXeHBlbUYwYVc5dUlIUnBiV1VzSUdsdWMzUmxZV1F1WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaGFXNXpkQzVuWlhSSmJtbDBhV0ZzVTNSaGRHVWdmSHdnYVc1emRDNW5aWFJKYm1sMGFXRnNVM1JoZEdVdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUXNJQ2RuWlhSSmJtbDBhV0ZzVTNSaGRHVWdkMkZ6SUdSbFptbHVaV1FnYjI0Z0pYTXNJR0VnY0d4aGFXNGdTbUYyWVZOamNtbHdkQ0JqYkdGemN5NGdKeUFySUNkVWFHbHpJR2x6SUc5dWJIa2djM1Z3Y0c5eWRHVmtJR1p2Y2lCamJHRnpjMlZ6SUdOeVpXRjBaV1FnZFhOcGJtY2dVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTXVJQ2NnS3lBblJHbGtJSGx2ZFNCdFpXRnVJSFJ2SUdSbFptbHVaU0JoSUhOMFlYUmxJSEJ5YjNCbGNuUjVJR2x1YzNSbFlXUS9KeXdnZEdocGN5NW5aWFJPWVcxbEtDa2dmSHdnSjJFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaGFXNXpkQzVuWlhSRVpXWmhkV3gwVUhKdmNITWdmSHdnYVc1emRDNW5aWFJFWldaaGRXeDBVSEp2Y0hNdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUXNJQ2RuWlhSRVpXWmhkV3gwVUhKdmNITWdkMkZ6SUdSbFptbHVaV1FnYjI0Z0pYTXNJR0VnY0d4aGFXNGdTbUYyWVZOamNtbHdkQ0JqYkdGemN5NGdKeUFySUNkVWFHbHpJR2x6SUc5dWJIa2djM1Z3Y0c5eWRHVmtJR1p2Y2lCamJHRnpjMlZ6SUdOeVpXRjBaV1FnZFhOcGJtY2dVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTXVJQ2NnS3lBblZYTmxJR0VnYzNSaGRHbGpJSEJ5YjNCbGNuUjVJSFJ2SUdSbFptbHVaU0JrWldaaGRXeDBVSEp2Y0hNZ2FXNXpkR1ZoWkM0bkxDQjBhR2x6TG1kbGRFNWhiV1VvS1NCOGZDQW5ZU0JqYjIxd2IyNWxiblFuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LQ0ZwYm5OMExuQnliM0JVZVhCbGN5d2dKM0J5YjNCVWVYQmxjeUIzWVhNZ1pHVm1hVzVsWkNCaGN5QmhiaUJwYm5OMFlXNWpaU0J3Y205d1pYSjBlU0J2YmlBbGN5NGdWWE5sSUdFZ2MzUmhkR2xqSUNjZ0t5QW5jSEp2Y0dWeWRIa2dkRzhnWkdWbWFXNWxJSEJ5YjNCVWVYQmxjeUJwYm5OMFpXRmtMaWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkaElHTnZiWEJ2Ym1WdWRDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lXbHVjM1F1WTI5dWRHVjRkRlI1Y0dWekxDQW5ZMjl1ZEdWNGRGUjVjR1Z6SUhkaGN5QmtaV1pwYm1Wa0lHRnpJR0Z1SUdsdWMzUmhibU5sSUhCeWIzQmxjblI1SUc5dUlDVnpMaUJWYzJVZ1lTQW5JQ3NnSjNOMFlYUnBZeUJ3Y205d1pYSjBlU0IwYnlCa1pXWnBibVVnWTI5dWRHVjRkRlI1Y0dWeklHbHVjM1JsWVdRdUp5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMkVnWTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgwZVhCbGIyWWdhVzV6ZEM1amIyMXdiMjVsYm5SVGFHOTFiR1JWY0dSaGRHVWdJVDA5SUNkbWRXNWpkR2x2Ymljc0lDY2xjeUJvWVhNZ1lTQnRaWFJvYjJRZ1kyRnNiR1ZrSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBVMmh2ZFd4a1ZYQmtZWFJsS0NrdUlFUnBaQ0I1YjNVZ2JXVmhiaUJ6YUc5MWJHUkRiMjF3YjI1bGJuUlZjR1JoZEdVb0tUOGdKeUFySUNkVWFHVWdibUZ0WlNCcGN5QndhSEpoYzJWa0lHRnpJR0VnY1hWbGMzUnBiMjRnWW1WallYVnpaU0IwYUdVZ1puVnVZM1JwYjI0Z2FYTWdKeUFySUNkbGVIQmxZM1JsWkNCMGJ5QnlaWFIxY200Z1lTQjJZV3gxWlM0bkxDQjBhR2x6TG1kbGRFNWhiV1VvS1NCOGZDQW5RU0JqYjIxd2IyNWxiblFuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSFI1Y0dWdlppQnBibk4wTG1OdmJYQnZibVZ1ZEVScFpGVnViVzkxYm5RZ0lUMDlJQ2RtZFc1amRHbHZiaWNzSUNjbGN5Qm9ZWE1nWVNCdFpYUm9iMlFnWTJGc2JHVmtJQ2NnS3lBblkyOXRjRzl1Wlc1MFJHbGtWVzV0YjNWdWRDZ3BMaUJDZFhRZ2RHaGxjbVVnYVhNZ2JtOGdjM1ZqYUNCc2FXWmxZM2xqYkdVZ2JXVjBhRzlrTGlBbklDc2dKMFJwWkNCNWIzVWdiV1ZoYmlCamIyMXdiMjVsYm5SWGFXeHNWVzV0YjNWdWRDZ3BQeWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkQklHTnZiWEJ2Ym1WdWRDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2RIbHdaVzltSUdsdWMzUXVZMjl0Y0c5dVpXNTBWMmxzYkZKbFkybGxkbVZRY205d2N5QWhQVDBnSjJaMWJtTjBhVzl1Snl3Z0p5VnpJR2hoY3lCaElHMWxkR2h2WkNCallXeHNaV1FnSnlBcklDZGpiMjF3YjI1bGJuUlhhV3hzVW1WamFXVjJaVkJ5YjNCektDa3VJRVJwWkNCNWIzVWdiV1ZoYmlCamIyMXdiMjVsYm5SWGFXeHNVbVZqWldsMlpWQnliM0J6S0NrL0p5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMEVnWTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJR2x1YVhScFlXeFRkR0YwWlNBOUlHbHVjM1F1YzNSaGRHVTdYRzRnSUNBZ2FXWWdLR2x1YVhScFlXeFRkR0YwWlNBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JwYm5OMExuTjBZWFJsSUQwZ2FXNXBkR2xoYkZOMFlYUmxJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnSVNoMGVYQmxiMllnYVc1cGRHbGhiRk4wWVhSbElEMDlQU0FuYjJKcVpXTjBKeUFtSmlBaFFYSnlZWGt1YVhOQmNuSmhlU2hwYm1sMGFXRnNVM1JoZEdVcEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNjbGN5NXpkR0YwWlRvZ2JYVnpkQ0JpWlNCelpYUWdkRzhnWVc0Z2IySnFaV04wSUc5eUlHNTFiR3duTENCMGFHbHpMbWRsZEU1aGJXVW9LU0I4ZkNBblVtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuVTNSaGRHVlJkV1YxWlNBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZmNHVnVaR2x1WjFKbGNHeGhZMlZUZEdGMFpTQTlJR1poYkhObE8xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZEdiM0pqWlZWd1pHRjBaU0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdhV1lnS0dsdWMzUXVZMjl0Y0c5dVpXNTBWMmxzYkUxdmRXNTBLU0I3WEc0Z0lDQWdJQ0JwYm5OMExtTnZiWEJ2Ym1WdWRGZHBiR3hOYjNWdWRDZ3BPMXh1SUNBZ0lDQWdMeThnVjJobGJpQnRiM1Z1ZEdsdVp5d2dZMkZzYkhNZ2RHOGdZSE5sZEZOMFlYUmxZQ0JpZVNCZ1kyOXRjRzl1Wlc1MFYybHNiRTF2ZFc1MFlDQjNhV3hzSUhObGRGeHVJQ0FnSUNBZ0x5OGdZSFJvYVhNdVgzQmxibVJwYm1kVGRHRjBaVkYxWlhWbFlDQjNhWFJvYjNWMElIUnlhV2RuWlhKcGJtY2dZU0J5WlMxeVpXNWtaWEl1WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2FXNXpkQzV6ZEdGMFpTQTlJSFJvYVhNdVgzQnliMk5sYzNOUVpXNWthVzVuVTNSaGRHVW9hVzV6ZEM1d2NtOXdjeXdnYVc1emRDNWpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QkpaaUJ1YjNRZ1lTQnpkR0YwWld4bGMzTWdZMjl0Y0c5dVpXNTBMQ0IzWlNCdWIzY2djbVZ1WkdWeVhHNGdJQ0FnYVdZZ0tISmxibVJsY21Wa1JXeGxiV1Z1ZENBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0J5Wlc1a1pYSmxaRVZzWlcxbGJuUWdQU0IwYUdsekxsOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5Rb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDl5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ0E5SUhSb2FYTXVYMmx1YzNSaGJuUnBZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9jbVZ1WkdWeVpXUkZiR1Z0Wlc1MEtUdGNibHh1SUNBZ0lIWmhjaUJ0WVhKcmRYQWdQU0JTWldGamRGSmxZMjl1WTJsc1pYSXViVzkxYm5SRGIyMXdiMjVsYm5Rb2RHaHBjeTVmY21WdVpHVnlaV1JEYjIxd2IyNWxiblFzSUhKdmIzUkpSQ3dnZEhKaGJuTmhZM1JwYjI0c0lIUm9hWE11WDNCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhRb1kyOXVkR1Y0ZENrcE8xeHVJQ0FnSUdsbUlDaHBibk4wTG1OdmJYQnZibVZ1ZEVScFpFMXZkVzUwS1NCN1hHNGdJQ0FnSUNCMGNtRnVjMkZqZEdsdmJpNW5aWFJTWldGamRFMXZkVzUwVW1WaFpIa29LUzVsYm5GMVpYVmxLR2x1YzNRdVkyOXRjRzl1Wlc1MFJHbGtUVzkxYm5Rc0lHbHVjM1FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnRZWEpyZFhBN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYkdWaGMyVnpJR0Z1ZVNCeVpYTnZkWEpqWlhNZ1lXeHNiMk5oZEdWa0lHSjVJR0J0YjNWdWRFTnZiWEJ2Ym1WdWRHQXVYRzRnSUNBcVhHNGdJQ0FxSUVCbWFXNWhiRnh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJSFZ1Ylc5MWJuUkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkQ0E5SUhSb2FYTXVYMmx1YzNSaGJtTmxPMXh1WEc0Z0lDQWdhV1lnS0dsdWMzUXVZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFwSUh0Y2JpQWdJQ0FnSUdsdWMzUXVZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JTWldGamRGSmxZMjl1WTJsc1pYSXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRDaDBhR2x6TGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENrN1hHNGdJQ0FnZEdocGN5NWZjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYMmx1YzNSaGJtTmxJRDBnYm5Wc2JEdGNibHh1SUNBZ0lDOHZJRkpsYzJWMElIQmxibVJwYm1jZ1ptbGxiR1J6WEc0Z0lDQWdMeThnUlhabGJpQnBaaUIwYUdseklHTnZiWEJ2Ym1WdWRDQnBjeUJ6WTJobFpIVnNaV1FnWm05eUlHRnViM1JvWlhJZ2RYQmtZWFJsSUdsdUlGSmxZV04wVlhCa1lYUmxjeXhjYmlBZ0lDQXZMeUJwZENCM2IzVnNaQ0J6ZEdsc2JDQmlaU0JwWjI1dmNtVmtJR0psWTJGMWMyVWdkR2hsYzJVZ1ptbGxiR1J6SUdGeVpTQnlaWE5sZEM1Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpTQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVoxSmxjR3hoWTJWVGRHRjBaU0E5SUdaaGJITmxPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRHYjNKalpWVndaR0YwWlNBOUlHWmhiSE5sTzF4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNZ1BTQnVkV3hzTzF4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kRmJHVnRaVzUwSUQwZ2JuVnNiRHRjYmx4dUlDQWdJQzh2SUZSb1pYTmxJR1pwWld4a2N5QmtieUJ1YjNRZ2NtVmhiR3g1SUc1bFpXUWdkRzhnWW1VZ2NtVnpaWFFnYzJsdVkyVWdkR2hwY3lCdlltcGxZM1FnYVhNZ2JtOWNiaUFnSUNBdkx5QnNiMjVuWlhJZ1lXTmpaWE56YVdKc1pTNWNiaUFnSUNCMGFHbHpMbDlqYjI1MFpYaDBJRDBnYm5Wc2JEdGNiaUFnSUNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFSUQwZ2JuVnNiRHRjYmlBZ0lDQjBhR2x6TGw5MGIzQk1aWFpsYkZkeVlYQndaWElnUFNCdWRXeHNPMXh1WEc0Z0lDQWdMeThnUkdWc1pYUmxJSFJvWlNCeVpXWmxjbVZ1WTJVZ1puSnZiU0IwYUdVZ2FXNXpkR0Z1WTJVZ2RHOGdkR2hwY3lCcGJuUmxjbTVoYkNCeVpYQnlaWE5sYm5SaGRHbHZibHh1SUNBZ0lDOHZJSGRvYVdOb0lHRnNiRzkzSUhSb1pTQnBiblJsY201aGJITWdkRzhnWW1VZ2NISnZjR1Z5YkhrZ1kyeGxZVzVsWkNCMWNDQmxkbVZ1SUdsbUlIUm9aU0IxYzJWeVhHNGdJQ0FnTHk4Z2JHVmhhM01nWVNCeVpXWmxjbVZ1WTJVZ2RHOGdkR2hsSUhCMVlteHBZeUJwYm5OMFlXNWpaUzVjYmlBZ0lDQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0xuSmxiVzkyWlNocGJuTjBLVHRjYmx4dUlDQWdJQzh2SUZOdmJXVWdaWGhwYzNScGJtY2dZMjl0Y0c5dVpXNTBjeUJ5Wld4NUlHOXVJR2x1YzNRdWNISnZjSE1nWlhabGJpQmhablJsY2lCMGFHVjVKM1psSUdKbFpXNWNiaUFnSUNBdkx5QmtaWE4wY205NVpXUWdLR2x1SUdWMlpXNTBJR2hoYm1Sc1pYSnpLUzVjYmlBZ0lDQXZMeUJVVDBSUE9pQnBibk4wTG5CeWIzQnpJRDBnYm5Wc2JEdGNiaUFnSUNBdkx5QlVUMFJQT2lCcGJuTjBMbk4wWVhSbElEMGdiblZzYkR0Y2JpQWdJQ0F2THlCVVQwUlBPaUJwYm5OMExtTnZiblJsZUhRZ1BTQnVkV3hzTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdhV3gwWlhKeklIUm9aU0JqYjI1MFpYaDBJRzlpYW1WamRDQjBieUJ2Ym14NUlHTnZiblJoYVc0Z2EyVjVjeUJ6Y0dWamFXWnBaV1FnYVc1Y2JpQWdJQ29nWUdOdmJuUmxlSFJVZVhCbGMyQmNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052Ym5SbGVIUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AyOWlhbVZqZEgxY2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb3ZYRzRnSUY5dFlYTnJRMjl1ZEdWNGREb2dablZ1WTNScGIyNGdLR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYldGemEyVmtRMjl1ZEdWNGRDQTlJRzUxYkd3N1hHNGdJQ0FnZG1GeUlFTnZiWEJ2Ym1WdWRDQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5SNWNHVTdYRzRnSUNBZ2RtRnlJR052Ym5SbGVIUlVlWEJsY3lBOUlFTnZiWEJ2Ym1WdWRDNWpiMjUwWlhoMFZIbHdaWE03WEc0Z0lDQWdhV1lnS0NGamIyNTBaWGgwVkhsd1pYTXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmxiWEIwZVU5aWFtVmpkRHRjYmlBZ0lDQjlYRzRnSUNBZ2JXRnphMlZrUTI5dWRHVjRkQ0E5SUh0OU8xeHVJQ0FnSUdadmNpQW9kbUZ5SUdOdmJuUmxlSFJPWVcxbElHbHVJR052Ym5SbGVIUlVlWEJsY3lrZ2UxeHVJQ0FnSUNBZ2JXRnphMlZrUTI5dWRHVjRkRnRqYjI1MFpYaDBUbUZ0WlYwZ1BTQmpiMjUwWlhoMFcyTnZiblJsZUhST1lXMWxYVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUcxaGMydGxaRU52Ym5SbGVIUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVacGJIUmxjbk1nZEdobElHTnZiblJsZUhRZ2IySnFaV04wSUhSdklHOXViSGtnWTI5dWRHRnBiaUJyWlhseklITndaV05wWm1sbFpDQnBibHh1SUNBZ0tpQmdZMjl1ZEdWNGRGUjVjR1Z6WUN3Z1lXNWtJR0Z6YzJWeWRITWdkR2hoZENCMGFHVjVJR0Z5WlNCMllXeHBaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJuUmxlSFJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMjlpYW1WamRIMWNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOXdjbTlqWlhOelEyOXVkR1Y0ZERvZ1puVnVZM1JwYjI0Z0tHTnZiblJsZUhRcElIdGNiaUFnSUNCMllYSWdiV0Z6YTJWa1EyOXVkR1Y0ZENBOUlIUm9hWE11WDIxaGMydERiMjUwWlhoMEtHTnZiblJsZUhRcE8xeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVhJZ1EyOXRjRzl1Wlc1MElEMGdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1ZEhsd1pUdGNiaUFnSUNBZ0lHbG1JQ2hEYjIxd2IyNWxiblF1WTI5dWRHVjRkRlI1Y0dWektTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyTm9aV05yVUhKdmNGUjVjR1Z6S0VOdmJYQnZibVZ1ZEM1amIyNTBaWGgwVkhsd1pYTXNJRzFoYzJ0bFpFTnZiblJsZUhRc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk11WTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdFlYTnJaV1JEYjI1MFpYaDBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTNWeWNtVnVkRU52Ym5SbGVIUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2IySnFaV04wZlZ4dUlDQWdLaUJBY0hKcGRtRjBaVnh1SUNBZ0tpOWNiaUFnWDNCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhRNklHWjFibU4wYVc5dUlDaGpkWEp5Wlc1MFEyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQkRiMjF3YjI1bGJuUWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1MGVYQmxPMXh1SUNBZ0lIWmhjaUJwYm5OMElEMGdkR2hwY3k1ZmFXNXpkR0Z1WTJVN1hHNGdJQ0FnZG1GeUlHTm9hV3hrUTI5dWRHVjRkQ0E5SUdsdWMzUXVaMlYwUTJocGJHUkRiMjUwWlhoMElDWW1JR2x1YzNRdVoyVjBRMmhwYkdSRGIyNTBaWGgwS0NrN1hHNGdJQ0FnYVdZZ0tHTm9hV3hrUTI5dWRHVjRkQ2tnZTF4dUlDQWdJQ0FnSVNoMGVYQmxiMllnUTI5dGNHOXVaVzUwTG1Ob2FXeGtRMjl1ZEdWNGRGUjVjR1Z6SUQwOVBTQW5iMkpxWldOMEp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbkpYTXVaMlYwUTJocGJHUkRiMjUwWlhoMEtDazZJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpJRzExYzNRZ1ltVWdaR1ZtYVc1bFpDQnBiaUJ2Y21SbGNpQjBieUFuSUNzZ0ozVnpaU0JuWlhSRGFHbHNaRU52Ym5SbGVIUW9LUzRuTENCMGFHbHpMbWRsZEU1aGJXVW9LU0I4ZkNBblVtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5amFHVmphMUJ5YjNCVWVYQmxjeWhEYjIxd2IyNWxiblF1WTJocGJHUkRiMjUwWlhoMFZIbHdaWE1zSUdOb2FXeGtRMjl1ZEdWNGRDd2dVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3k1amFHbHNaRU52Ym5SbGVIUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdabTl5SUNoMllYSWdibUZ0WlNCcGJpQmphR2xzWkVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lTaHVZVzFsSUdsdUlFTnZiWEJ2Ym1WdWRDNWphR2xzWkVOdmJuUmxlSFJVZVhCbGN5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbkpYTXVaMlYwUTJocGJHUkRiMjUwWlhoMEtDazZJR3RsZVNCY0lpVnpYQ0lnYVhNZ2JtOTBJR1JsWm1sdVpXUWdhVzRnWTJocGJHUkRiMjUwWlhoMFZIbHdaWE11Snl3Z2RHaHBjeTVuWlhST1lXMWxLQ2tnZkh3Z0oxSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSnl3Z2JtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdGemMybG5iaWg3ZlN3Z1kzVnljbVZ1ZEVOdmJuUmxlSFFzSUdOb2FXeGtRMjl1ZEdWNGRDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqZFhKeVpXNTBRMjl1ZEdWNGREdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVUhKdlkyVnpjMlZ6SUhCeWIzQnpJR0o1SUhObGRIUnBibWNnWkdWbVlYVnNkQ0IyWVd4MVpYTWdabTl5SUhWdWMzQmxZMmxtYVdWa0lIQnliM0J6SUdGdVpGeHVJQ0FnS2lCaGMzTmxjblJwYm1jZ2RHaGhkQ0IwYUdVZ2NISnZjSE1nWVhKbElIWmhiR2xrTGlCRWIyVnpJRzV2ZENCdGRYUmhkR1VnYVhSeklHRnlaM1Z0Wlc1ME95QnlaWFIxY201elhHNGdJQ0FxSUdFZ2JtVjNJSEJ5YjNCeklHOWlhbVZqZENCM2FYUm9JR1JsWm1GMWJIUnpJRzFsY21kbFpDQnBiaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc1bGQxQnliM0J6WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjlpYW1WamRIMWNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOXdjbTlqWlhOelVISnZjSE02SUdaMWJtTjBhVzl1SUNodVpYZFFjbTl3Y3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVhJZ1EyOXRjRzl1Wlc1MElEMGdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1ZEhsd1pUdGNiaUFnSUNBZ0lHbG1JQ2hEYjIxd2IyNWxiblF1Y0hKdmNGUjVjR1Z6S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJOb1pXTnJVSEp2Y0ZSNWNHVnpLRU52YlhCdmJtVnVkQzV3Y205d1ZIbHdaWE1zSUc1bGQxQnliM0J6TENCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpMbkJ5YjNBcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdibVYzVUhKdmNITTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGemMyVnlkQ0IwYUdGMElIUm9aU0J3Y205d2N5QmhjbVVnZG1Gc2FXUmNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJ5YjNCVWVYQmxjeUJOWVhBZ2IyWWdjSEp2Y0NCdVlXMWxJSFJ2SUdFZ1VtVmhZM1JRY205d1ZIbHdaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NISnZjSE5jYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHeHZZMkYwYVc5dUlHVXVaeTRnWENKd2NtOXdYQ0lzSUZ3aVkyOXVkR1Y0ZEZ3aUxDQmNJbU5vYVd4a0lHTnZiblJsZUhSY0lseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ1gyTm9aV05yVUhKdmNGUjVjR1Z6T2lCbWRXNWpkR2x2YmlBb2NISnZjRlI1Y0dWekxDQndjbTl3Y3l3Z2JHOWpZWFJwYjI0cElIdGNiaUFnSUNBdkx5QlVUMFJQT2lCVGRHOXdJSFpoYkdsa1lYUnBibWNnY0hKdmNDQjBlWEJsY3lCb1pYSmxJR0Z1WkNCdmJteDVJSFZ6WlNCMGFHVWdaV3hsYldWdWRGeHVJQ0FnSUM4dklIWmhiR2xrWVhScGIyNHVYRzRnSUNBZ2RtRnlJR052YlhCdmJtVnVkRTVoYldVZ1BTQjBhR2x6TG1kbGRFNWhiV1VvS1R0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3Y205d1RtRnRaU0JwYmlCd2NtOXdWSGx3WlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d1ZIbHdaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQmxjbkp2Y2p0Y2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlVhR2x6SUdseklHbHVkR1Z1ZEdsdmJtRnNiSGtnWVc0Z2FXNTJZWEpwWVc1MElIUm9ZWFFnWjJWMGN5QmpZWFZuYUhRdUlFbDBKM01nZEdobElITmhiV1ZjYmlBZ0lDQWdJQ0FnSUNBdkx5QmlaV2hoZG1sdmNpQmhjeUIzYVhSb2IzVjBJSFJvYVhNZ2MzUmhkR1Z0Wlc1MElHVjRZMlZ3ZENCM2FYUm9JR0VnWW1WMGRHVnlJRzFsYzNOaFoyVXVYRzRnSUNBZ0lDQWdJQ0FnSVNoMGVYQmxiMllnY0hKdmNGUjVjR1Z6VzNCeWIzQk9ZVzFsWFNBOVBUMGdKMloxYm1OMGFXOXVKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE02SUNWeklIUjVjR1VnWUNWellDQnBjeUJwYm5aaGJHbGtPeUJwZENCdGRYTjBJR0psSUdFZ1puVnVZM1JwYjI0c0lIVnpkV0ZzYkhrZ0p5QXJJQ2RtY205dElGSmxZV04wTGxCeWIzQlVlWEJsY3k0bkxDQmpiMjF3YjI1bGJuUk9ZVzFsSUh4OElDZFNaV0ZqZENCamJHRnpjeWNzSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6VzJ4dlkyRjBhVzl1WFN3Z2NISnZjRTVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnSUNCbGNuSnZjaUE5SUhCeWIzQlVlWEJsYzF0d2NtOXdUbUZ0WlYwb2NISnZjSE1zSUhCeWIzQk9ZVzFsTENCamIyMXdiMjVsYm5ST1lXMWxMQ0JzYjJOaGRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dWNEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWlhKeWIzSWdQU0JsZUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSWdhVzV6ZEdGdVkyVnZaaUJGY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklGZGxJRzFoZVNCM1lXNTBJSFJ2SUdWNGRHVnVaQ0IwYUdseklHeHZaMmxqSUdadmNpQnphVzFwYkdGeUlHVnljbTl5Y3lCcGJseHVJQ0FnSUNBZ0lDQWdJQzh2SUhSdmNDMXNaWFpsYkNCeVpXNWtaWElnWTJGc2JITXNJSE52SUVrbmJTQmhZbk4wY21GamRHbHVaeUJwZENCaGQyRjVJR2x1ZEc5Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJoSUdaMWJtTjBhVzl1SUhSdklHMXBibWx0YVhwbElISmxabUZqZEc5eWFXNW5JR2x1SUhSb1pTQm1kWFIxY21WY2JpQWdJQ0FnSUNBZ0lDQjJZWElnWVdSa1pXNWtkVzBnUFNCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb2RHaHBjeWs3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYkc5allYUnBiMjRnUFQwOUlGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk11Y0hKdmNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdVSEpsWm1GalpTQm5hWFpsY3lCMWN5QnpiMjFsZEdocGJtY2dkRzhnWW14aFkydHNhWE4wSUdsdUlIZGhjbTVwYm1jZ2JXOWtkV3hsWEc0Z0lDQWdJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMFpoYVd4bFpDQkRiMjF3YjNOcGRHVWdjSEp2Y0ZSNWNHVTZJQ1Z6SlhNbkxDQmxjbkp2Y2k1dFpYTnpZV2RsTENCaFpHUmxibVIxYlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5SbUZwYkdWa0lFTnZiblJsZUhRZ1ZIbHdaWE02SUNWekpYTW5MQ0JsY25KdmNpNXRaWE56WVdkbExDQmhaR1JsYm1SMWJTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEpsWTJWcGRtVkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFJXeGxiV1Z1ZEN3Z2RISmhibk5oWTNScGIyNHNJRzVsZUhSRGIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlIQnlaWFpGYkdWdFpXNTBJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnZG1GeUlIQnlaWFpEYjI1MFpYaDBJRDBnZEdocGN5NWZZMjl1ZEdWNGREdGNibHh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRGYkdWdFpXNTBJRDBnYm5Wc2JEdGNibHh1SUNBZ0lIUm9hWE11ZFhCa1lYUmxRMjl0Y0c5dVpXNTBLSFJ5WVc1ellXTjBhVzl1TENCd2NtVjJSV3hsYldWdWRDd2dibVY0ZEVWc1pXMWxiblFzSUhCeVpYWkRiMjUwWlhoMExDQnVaWGgwUTI5dWRHVjRkQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbG1JR0Z1ZVNCdlppQmdYM0JsYm1ScGJtZEZiR1Z0Wlc1MFlDd2dZRjl3Wlc1a2FXNW5VM1JoZEdWUmRXVjFaV0FzSUc5eUlHQmZjR1Z1WkdsdVowWnZjbU5sVlhCa1lYUmxZRnh1SUNBZ0tpQnBjeUJ6WlhRc0lIVndaR0YwWlNCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2NHVnlabTl5YlZWd1pHRjBaVWxtVG1WalpYTnpZWEo1T2lCbWRXNWpkR2x2YmlBb2RISmhibk5oWTNScGIyNHBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZjR1Z1WkdsdVowVnNaVzFsYm5RZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5KbFkyVnBkbVZEYjIxd2IyNWxiblFvZEdocGN5d2dkR2hwY3k1ZmNHVnVaR2x1WjBWc1pXMWxiblFnZkh3Z2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXNJSFJ5WVc1ellXTjBhVzl1TENCMGFHbHpMbDlqYjI1MFpYaDBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVWdJVDA5SUc1MWJHd2dmSHdnZEdocGN5NWZjR1Z1WkdsdVowWnZjbU5sVlhCa1lYUmxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlVOdmJYQnZibVZ1ZENoMGNtRnVjMkZqZEdsdmJpd2dkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblFzSUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExDQjBhR2x6TGw5amIyNTBaWGgwTENCMGFHbHpMbDlqYjI1MFpYaDBLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZCbGNtWnZjbTBnWVc0Z2RYQmtZWFJsSUhSdklHRWdiVzkxYm5SbFpDQmpiMjF3YjI1bGJuUXVJRlJvWlNCamIyMXdiMjVsYm5SWGFXeHNVbVZqWldsMlpWQnliM0J6SUdGdVpGeHVJQ0FnS2lCemFHOTFiR1JEYjIxd2IyNWxiblJWY0dSaGRHVWdiV1YwYUc5a2N5QmhjbVVnWTJGc2JHVmtMQ0IwYUdWdUlDaGhjM04xYldsdVp5QjBhR1VnZFhCa1lYUmxJR2x6YmlkMFhHNGdJQ0FxSUhOcmFYQndaV1FwSUhSb1pTQnlaVzFoYVc1cGJtY2dkWEJrWVhSbElHeHBabVZqZVdOc1pTQnRaWFJvYjJSeklHRnlaU0JqWVd4c1pXUWdZVzVrSUhSb1pTQkVUMDFjYmlBZ0lDb2djbVZ3Y21WelpXNTBZWFJwYjI0Z2FYTWdkWEJrWVhSbFpDNWNiaUFnSUNwY2JpQWdJQ29nUW5rZ1pHVm1ZWFZzZEN3Z2RHaHBjeUJwYlhCc1pXMWxiblJ6SUZKbFlXTjBKM01nY21WdVpHVnlhVzVuSUdGdVpDQnlaV052Ym1OcGJHbGhkR2x2YmlCaGJHZHZjbWwwYUcwdVhHNGdJQ0FxSUZOdmNHaHBjM1JwWTJGMFpXUWdZMnhwWlc1MGN5QnRZWGtnZDJsemFDQjBieUJ2ZG1WeWNtbGtaU0IwYUdsekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCd2NtVjJVR0Z5Wlc1MFJXeGxiV1Z1ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ2JtVjRkRkJoY21WdWRFVnNaVzFsYm5SY2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFJRUJ2ZG1WeWNtbGtZV0pzWlZ4dUlDQWdLaTljYmlBZ2RYQmtZWFJsUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb2RISmhibk5oWTNScGIyNHNJSEJ5WlhaUVlYSmxiblJGYkdWdFpXNTBMQ0J1WlhoMFVHRnlaVzUwUld4bGJXVnVkQ3dnY0hKbGRsVnViV0Z6YTJWa1EyOXVkR1Y0ZEN3Z2JtVjRkRlZ1YldGemEyVmtRMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJwYm5OMElEMGdkR2hwY3k1ZmFXNXpkR0Z1WTJVN1hHNWNiaUFnSUNCMllYSWdibVY0ZEVOdmJuUmxlSFFnUFNCMGFHbHpMbDlqYjI1MFpYaDBJRDA5UFNCdVpYaDBWVzV0WVhOclpXUkRiMjUwWlhoMElEOGdhVzV6ZEM1amIyNTBaWGgwSURvZ2RHaHBjeTVmY0hKdlkyVnpjME52Ym5SbGVIUW9ibVY0ZEZWdWJXRnphMlZrUTI5dWRHVjRkQ2s3WEc0Z0lDQWdkbUZ5SUc1bGVIUlFjbTl3Y3p0Y2JseHVJQ0FnSUM4dklFUnBjM1JwYm1kMWFYTm9JR0psZEhkbFpXNGdZU0J3Y205d2N5QjFjR1JoZEdVZ2RtVnljM1Z6SUdFZ2MybHRjR3hsSUhOMFlYUmxJSFZ3WkdGMFpWeHVJQ0FnSUdsbUlDaHdjbVYyVUdGeVpXNTBSV3hsYldWdWRDQTlQVDBnYm1WNGRGQmhjbVZ1ZEVWc1pXMWxiblFwSUh0Y2JpQWdJQ0FnSUM4dklGTnJhWEFnWTJobFkydHBibWNnY0hKdmNDQjBlWEJsY3lCaFoyRnBiaUF0TFNCM1pTQmtiMjRuZENCeVpXRmtJR2x1YzNRdWNISnZjSE1nZEc4Z1lYWnZhV1JjYmlBZ0lDQWdJQzh2SUhkaGNtNXBibWNnWm05eUlFUlBUU0JqYjIxd2IyNWxiblFnY0hKdmNITWdhVzRnZEdocGN5QjFjR2R5WVdSbFhHNGdJQ0FnSUNCdVpYaDBVSEp2Y0hNZ1BTQnVaWGgwVUdGeVpXNTBSV3hsYldWdWRDNXdjbTl3Y3p0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdibVY0ZEZCeWIzQnpJRDBnZEdocGN5NWZjSEp2WTJWemMxQnliM0J6S0c1bGVIUlFZWEpsYm5SRmJHVnRaVzUwTG5CeWIzQnpLVHRjYmlBZ0lDQWdJQzh2SUVGdUlIVndaR0YwWlNCb1pYSmxJSGRwYkd3Z2MyTm9aV1IxYkdVZ1lXNGdkWEJrWVhSbElHSjFkQ0JwYlcxbFpHbGhkR1ZzZVNCelpYUmNiaUFnSUNBZ0lDOHZJRjl3Wlc1a2FXNW5VM1JoZEdWUmRXVjFaU0IzYUdsamFDQjNhV3hzSUdWdWMzVnlaU0IwYUdGMElHRnVlU0J6ZEdGMFpTQjFjR1JoZEdWeklHZGxkSE5jYmlBZ0lDQWdJQzh2SUdsdGJXVmthV0YwWld4NUlISmxZMjl1WTJsc1pXUWdhVzV6ZEdWaFpDQnZaaUIzWVdsMGFXNW5JR1p2Y2lCMGFHVWdibVY0ZENCaVlYUmphQzVjYmx4dUlDQWdJQ0FnYVdZZ0tHbHVjM1F1WTI5dGNHOXVaVzUwVjJsc2JGSmxZMlZwZG1WUWNtOXdjeWtnZTF4dUlDQWdJQ0FnSUNCcGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4U1pXTmxhWFpsVUhKdmNITW9ibVY0ZEZCeWIzQnpMQ0J1WlhoMFEyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlHNWxlSFJUZEdGMFpTQTlJSFJvYVhNdVgzQnliMk5sYzNOUVpXNWthVzVuVTNSaGRHVW9ibVY0ZEZCeWIzQnpMQ0J1WlhoMFEyOXVkR1Y0ZENrN1hHNWNiaUFnSUNCMllYSWdjMmh2ZFd4a1ZYQmtZWFJsSUQwZ2RHaHBjeTVmY0dWdVpHbHVaMFp2Y21ObFZYQmtZWFJsSUh4OElDRnBibk4wTG5Ob2IzVnNaRU52YlhCdmJtVnVkRlZ3WkdGMFpTQjhmQ0JwYm5OMExuTm9iM1ZzWkVOdmJYQnZibVZ1ZEZWd1pHRjBaU2h1WlhoMFVISnZjSE1zSUc1bGVIUlRkR0YwWlN3Z2JtVjRkRU52Ym5SbGVIUXBPMXh1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSFI1Y0dWdlppQnphRzkxYkdSVmNHUmhkR1VnSVQwOUlDZDFibVJsWm1sdVpXUW5MQ0FuSlhNdWMyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxLQ2s2SUZKbGRIVnlibVZrSUhWdVpHVm1hVzVsWkNCcGJuTjBaV0ZrSUc5bUlHRWdKeUFySUNkaWIyOXNaV0Z1SUhaaGJIVmxMaUJOWVd0bElITjFjbVVnZEc4Z2NtVjBkWEp1SUhSeWRXVWdiM0lnWm1Gc2MyVXVKeXdnZEdocGN5NW5aWFJPWVcxbEtDa2dmSHdnSjFKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tITm9iM1ZzWkZWd1pHRjBaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZjR1Z1WkdsdVowWnZjbU5sVlhCa1lYUmxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQXZMeUJYYVd4c0lITmxkQ0JnZEdocGN5NXdjbTl3YzJBc0lHQjBhR2x6TG5OMFlYUmxZQ0JoYm1RZ1lIUm9hWE11WTI5dWRHVjRkR0F1WEc0Z0lDQWdJQ0IwYUdsekxsOXdaWEptYjNKdFEyOXRjRzl1Wlc1MFZYQmtZWFJsS0c1bGVIUlFZWEpsYm5SRmJHVnRaVzUwTENCdVpYaDBVSEp2Y0hNc0lHNWxlSFJUZEdGMFpTd2dibVY0ZEVOdmJuUmxlSFFzSUhSeVlXNXpZV04wYVc5dUxDQnVaWGgwVlc1dFlYTnJaV1JEYjI1MFpYaDBLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdTV1lnYVhRbmN5QmtaWFJsY20xcGJtVmtJSFJvWVhRZ1lTQmpiMjF3YjI1bGJuUWdjMmh2ZFd4a0lHNXZkQ0IxY0dSaGRHVXNJSGRsSUhOMGFXeHNJSGRoYm5SY2JpQWdJQ0FnSUM4dklIUnZJSE5sZENCd2NtOXdjeUJoYm1RZ2MzUmhkR1VnWW5WMElIZGxJSE5vYjNKMFkzVjBJSFJvWlNCeVpYTjBJRzltSUhSb1pTQjFjR1JoZEdVdVhHNGdJQ0FnSUNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDQTlJRzVsZUhSUVlYSmxiblJGYkdWdFpXNTBPMXh1SUNBZ0lDQWdkR2hwY3k1ZlkyOXVkR1Y0ZENBOUlHNWxlSFJWYm0xaGMydGxaRU52Ym5SbGVIUTdYRzRnSUNBZ0lDQnBibk4wTG5CeWIzQnpJRDBnYm1WNGRGQnliM0J6TzF4dUlDQWdJQ0FnYVc1emRDNXpkR0YwWlNBOUlHNWxlSFJUZEdGMFpUdGNiaUFnSUNBZ0lHbHVjM1F1WTI5dWRHVjRkQ0E5SUc1bGVIUkRiMjUwWlhoME8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmZjSEp2WTJWemMxQmxibVJwYm1kVGRHRjBaVG9nWm5WdVkzUnBiMjRnS0hCeWIzQnpMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkbUZ5SUdsdWMzUWdQU0IwYUdsekxsOXBibk4wWVc1alpUdGNiaUFnSUNCMllYSWdjWFZsZFdVZ1BTQjBhR2x6TGw5d1pXNWthVzVuVTNSaGRHVlJkV1YxWlR0Y2JpQWdJQ0IyWVhJZ2NtVndiR0ZqWlNBOUlIUm9hWE11WDNCbGJtUnBibWRTWlhCc1lXTmxVM1JoZEdVN1hHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVoxSmxjR3hoWTJWVGRHRjBaU0E5SUdaaGJITmxPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRUZEdGMFpWRjFaWFZsSUQwZ2JuVnNiRHRjYmx4dUlDQWdJR2xtSUNnaGNYVmxkV1VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJwYm5OMExuTjBZWFJsTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoeVpYQnNZV05sSUNZbUlIRjFaWFZsTG14bGJtZDBhQ0E5UFQwZ01Ta2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIRjFaWFZsV3pCZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQnVaWGgwVTNSaGRHVWdQU0JoYzNOcFoyNG9lMzBzSUhKbGNHeGhZMlVnUHlCeGRXVjFaVnN3WFNBNklHbHVjM1F1YzNSaGRHVXBPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0J5WlhCc1lXTmxJRDhnTVNBNklEQTdJR2tnUENCeGRXVjFaUzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEJoY25ScFlXd2dQU0J4ZFdWMVpWdHBYVHRjYmlBZ0lDQWdJR0Z6YzJsbmJpaHVaWGgwVTNSaGRHVXNJSFI1Y0dWdlppQndZWEowYVdGc0lEMDlQU0FuWm5WdVkzUnBiMjRuSUQ4Z2NHRnlkR2xoYkM1allXeHNLR2x1YzNRc0lHNWxlSFJUZEdGMFpTd2djSEp2Y0hNc0lHTnZiblJsZUhRcElEb2djR0Z5ZEdsaGJDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGVIUlRkR0YwWlR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dUV1Z5WjJWeklHNWxkeUJ3Y205d2N5QmhibVFnYzNSaGRHVXNJRzV2ZEdsbWFXVnpJR1JsYkdWbllYUmxJRzFsZEdodlpITWdiMllnZFhCa1lYUmxJR0Z1WkZ4dUlDQWdLaUJ3WlhKbWIzSnRjeUIxY0dSaGRHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkZiR1Z0Wlc1MGZTQnVaWGgwUld4bGJXVnVkQ0JPWlhoMElHVnNaVzFsYm5SY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzVsZUhSUWNtOXdjeUJPWlhoMElIQjFZbXhwWXlCdlltcGxZM1FnZEc4Z2MyVjBJR0Z6SUhCeWIzQmxjblJwWlhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRGTjBZWFJsSUU1bGVIUWdiMkpxWldOMElIUnZJSE5sZENCaGN5QnpkR0YwWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0J1WlhoMFEyOXVkR1Y0ZENCT1pYaDBJSEIxWW14cFl5QnZZbXBsWTNRZ2RHOGdjMlYwSUdGeklHTnZiblJsZUhRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0IxYm0xaGMydGxaRU52Ym5SbGVIUmNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOXdaWEptYjNKdFEyOXRjRzl1Wlc1MFZYQmtZWFJsT2lCbWRXNWpkR2x2YmlBb2JtVjRkRVZzWlcxbGJuUXNJRzVsZUhSUWNtOXdjeXdnYm1WNGRGTjBZWFJsTENCdVpYaDBRMjl1ZEdWNGRDd2dkSEpoYm5OaFkzUnBiMjRzSUhWdWJXRnphMlZrUTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBJRDBnZEdocGN5NWZhVzV6ZEdGdVkyVTdYRzVjYmlBZ0lDQjJZWElnYUdGelEyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbElEMGdRbTl2YkdWaGJpaHBibk4wTG1OdmJYQnZibVZ1ZEVScFpGVndaR0YwWlNrN1hHNGdJQ0FnZG1GeUlIQnlaWFpRY205d2N6dGNiaUFnSUNCMllYSWdjSEpsZGxOMFlYUmxPMXh1SUNBZ0lIWmhjaUJ3Y21WMlEyOXVkR1Y0ZER0Y2JpQWdJQ0JwWmlBb2FHRnpRMjl0Y0c5dVpXNTBSR2xrVlhCa1lYUmxLU0I3WEc0Z0lDQWdJQ0J3Y21WMlVISnZjSE1nUFNCcGJuTjBMbkJ5YjNCek8xeHVJQ0FnSUNBZ2NISmxkbE4wWVhSbElEMGdhVzV6ZEM1emRHRjBaVHRjYmlBZ0lDQWdJSEJ5WlhaRGIyNTBaWGgwSUQwZ2FXNXpkQzVqYjI1MFpYaDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYm5OMExtTnZiWEJ2Ym1WdWRGZHBiR3hWY0dSaGRHVXBJSHRjYmlBZ0lDQWdJR2x1YzNRdVkyOXRjRzl1Wlc1MFYybHNiRlZ3WkdGMFpTaHVaWGgwVUhKdmNITXNJRzVsZUhSVGRHRjBaU3dnYm1WNGRFTnZiblJsZUhRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MElEMGdibVY0ZEVWc1pXMWxiblE3WEc0Z0lDQWdkR2hwY3k1ZlkyOXVkR1Y0ZENBOUlIVnViV0Z6YTJWa1EyOXVkR1Y0ZER0Y2JpQWdJQ0JwYm5OMExuQnliM0J6SUQwZ2JtVjRkRkJ5YjNCek8xeHVJQ0FnSUdsdWMzUXVjM1JoZEdVZ1BTQnVaWGgwVTNSaGRHVTdYRzRnSUNBZ2FXNXpkQzVqYjI1MFpYaDBJRDBnYm1WNGRFTnZiblJsZUhRN1hHNWNiaUFnSUNCMGFHbHpMbDkxY0dSaGRHVlNaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDaDBjbUZ1YzJGamRHbHZiaXdnZFc1dFlYTnJaV1JEYjI1MFpYaDBLVHRjYmx4dUlDQWdJR2xtSUNob1lYTkRiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVXBJSHRjYmlBZ0lDQWdJSFJ5WVc1ellXTjBhVzl1TG1kbGRGSmxZV04wVFc5MWJuUlNaV0ZrZVNncExtVnVjWFZsZFdVb2FXNXpkQzVqYjIxd2IyNWxiblJFYVdSVmNHUmhkR1V1WW1sdVpDaHBibk4wTENCd2NtVjJVSEp2Y0hNc0lIQnlaWFpUZEdGMFpTd2djSEpsZGtOdmJuUmxlSFFwTENCcGJuTjBLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOaGJHd2dkR2hsSUdOdmJYQnZibVZ1ZENkeklHQnlaVzVrWlhKZ0lHMWxkR2h2WkNCaGJtUWdkWEJrWVhSbElIUm9aU0JFVDAwZ1lXTmpiM0prYVc1bmJIa3VYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCZmRYQmtZWFJsVW1WdVpHVnlaV1JEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNoMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJ3Y21WMlEyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1BTQjBhR2x6TGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZER0Y2JpQWdJQ0IyWVhJZ2NISmxkbEpsYm1SbGNtVmtSV3hsYldWdWRDQTlJSEJ5WlhaRGIyMXdiMjVsYm5SSmJuTjBZVzVqWlM1ZlkzVnljbVZ1ZEVWc1pXMWxiblE3WEc0Z0lDQWdkbUZ5SUc1bGVIUlNaVzVrWlhKbFpFVnNaVzFsYm5RZ1BTQjBhR2x6TGw5eVpXNWtaWEpXWVd4cFpHRjBaV1JEYjIxd2IyNWxiblFvS1R0Y2JpQWdJQ0JwWmlBb2MyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5Rb2NISmxkbEpsYm1SbGNtVmtSV3hsYldWdWRDd2dibVY0ZEZKbGJtUmxjbVZrUld4bGJXVnVkQ2twSUh0Y2JpQWdJQ0FnSUZKbFlXTjBVbVZqYjI1amFXeGxjaTV5WldObGFYWmxRMjl0Y0c5dVpXNTBLSEJ5WlhaRGIyMXdiMjVsYm5SSmJuTjBZVzVqWlN3Z2JtVjRkRkpsYm1SbGNtVmtSV3hsYldWdWRDd2dkSEpoYm5OaFkzUnBiMjRzSUhSb2FYTXVYM0J5YjJObGMzTkRhR2xzWkVOdmJuUmxlSFFvWTI5dWRHVjRkQ2twTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQXZMeUJVYUdWelpTQjBkMjhnU1VSeklHRnlaU0JoWTNSMVlXeHNlU0IwYUdVZ2MyRnRaU0VnUW5WMElHNXZkR2hwYm1jZ2MyaHZkV3hrSUhKbGJIa2diMjRnZEdoaGRDNWNiaUFnSUNBZ0lIWmhjaUIwYUdselNVUWdQU0IwYUdsekxsOXliMjkwVG05a1pVbEVPMXh1SUNBZ0lDQWdkbUZ5SUhCeVpYWkRiMjF3YjI1bGJuUkpSQ0E5SUhCeVpYWkRiMjF3YjI1bGJuUkpibk4wWVc1alpTNWZjbTl2ZEU1dlpHVkpSRHRjYmlBZ0lDQWdJRkpsWVdOMFVtVmpiMjVqYVd4bGNpNTFibTF2ZFc1MFEyOXRjRzl1Wlc1MEtIQnlaWFpEYjIxd2IyNWxiblJKYm5OMFlXNWpaU2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDaHVaWGgwVW1WdVpHVnlaV1JGYkdWdFpXNTBLVHRjYmlBZ0lDQWdJSFpoY2lCdVpYaDBUV0Z5YTNWd0lEMGdVbVZoWTNSU1pXTnZibU5wYkdWeUxtMXZkVzUwUTI5dGNHOXVaVzUwS0hSb2FYTXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBMQ0IwYUdselNVUXNJSFJ5WVc1ellXTjBhVzl1TENCMGFHbHpMbDl3Y205alpYTnpRMmhwYkdSRGIyNTBaWGgwS0dOdmJuUmxlSFFwS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYM0psY0d4aFkyVk9iMlJsVjJsMGFFMWhjbXQxY0VKNVNVUW9jSEpsZGtOdmJYQnZibVZ1ZEVsRUxDQnVaWGgwVFdGeWEzVndLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd2NtOTBaV04wWldSY2JpQWdJQ292WEc0Z0lGOXlaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEJDZVVsRU9pQm1kVzVqZEdsdmJpQW9jSEpsZGtOdmJYQnZibVZ1ZEVsRUxDQnVaWGgwVFdGeWEzVndLU0I3WEc0Z0lDQWdVbVZoWTNSRGIyMXdiMjVsYm5SRmJuWnBjbTl1YldWdWRDNXlaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEJDZVVsRUtIQnlaWFpEYjIxd2IyNWxiblJKUkN3Z2JtVjRkRTFoY210MWNDazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd2NtOTBaV04wWldSY2JpQWdJQ292WEc0Z0lGOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5SWGFYUm9iM1YwVDNkdVpYSlBja052Ym5SbGVIUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkQ0E5SUhSb2FYTXVYMmx1YzNSaGJtTmxPMXh1SUNBZ0lIWmhjaUJ5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ0E5SUdsdWMzUXVjbVZ1WkdWeUtDazdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUM4dklGZGxJR0ZzYkc5M0lHRjFkRzh0Ylc5amEzTWdkRzhnY0hKdlkyVmxaQ0JoY3lCcFppQjBhR1Y1SjNKbElISmxkSFZ5Ym1sdVp5QnVkV3hzTGx4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCeVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NnSmlZZ2FXNXpkQzV5Wlc1a1pYSXVYMmx6VFc5amEwWjFibU4wYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQzh2SUZSb2FYTWdhWE1nY0hKdlltRmliSGtnWW1Ga0lIQnlZV04wYVdObExpQkRiMjV6YVdSbGNpQjNZWEp1YVc1bklHaGxjbVVnWVc1a1hHNGdJQ0FnSUNBZ0lDOHZJR1JsY0hKbFkyRjBhVzVuSUhSb2FYTWdZMjl1ZG1WdWFXVnVZMlV1WEc0Z0lDQWdJQ0FnSUhKbGJtUmxjbVZrUTI5dGNHOXVaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVnVaR1Z5WldSRGIyMXdiMjVsYm5RN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3Y21sMllYUmxYRzRnSUNBcUwxeHVJQ0JmY21WdVpHVnlWbUZzYVdSaGRHVmtRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZG1GeUlISmxibVJsY21Wa1EyOXRjRzl1Wlc1ME8xeHVJQ0FnSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnUFNCMGFHbHpPMXh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0J5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ0E5SUhSb2FYTXVYM0psYm1SbGNsWmhiR2xrWVhSbFpFTnZiWEJ2Ym1WdWRGZHBkR2h2ZFhSUGQyNWxjazl5UTI5dWRHVjRkQ2dwTzF4dUlDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0JTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnSVNoY2JpQWdJQ0F2THlCVVQwUlBPaUJCYmlCZ2FYTldZV3hwWkU1dlpHVmdJR1oxYm1OMGFXOXVJSGR2ZFd4a0lIQnliMkpoWW14NUlHSmxJRzF2Y21VZ1lYQndjbTl3Y21saGRHVmNiaUFnSUNCeVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOVBUMGdiblZzYkNCOGZDQnlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDQTlQVDBnWm1Gc2MyVWdmSHdnVW1WaFkzUkZiR1Z0Wlc1MExtbHpWbUZzYVdSRmJHVnRaVzUwS0hKbGJtUmxjbVZrUTI5dGNHOXVaVzUwS1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuSlhNdWNtVnVaR1Z5S0NrNklFRWdkbUZzYVdRZ1VtVmhZM1JEYjIxd2IyNWxiblFnYlhWemRDQmlaU0J5WlhSMWNtNWxaQzRnV1c5MUlHMWhlU0JvWVhabElDY2dLeUFuY21WMGRYSnVaV1FnZFc1a1pXWnBibVZrTENCaGJpQmhjbkpoZVNCdmNpQnpiMjFsSUc5MGFHVnlJR2x1ZG1Gc2FXUWdiMkpxWldOMExpY3NJSFJvYVhNdVoyVjBUbUZ0WlNncElIeDhJQ2RTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRDY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUV4aGVtbHNlU0JoYkd4dlkyRjBaWE1nZEdobElISmxabk1nYjJKcVpXTjBJR0Z1WkNCemRHOXlaWE1nWUdOdmJYQnZibVZ1ZEdBZ1lYTWdZSEpsWm1BdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnlaV1lnVW1WbVpYSmxibU5sSUc1aGJXVXVYRzRnSUNBcUlFQndZWEpoYlNCN1kyOXRjRzl1Wlc1MGZTQmpiMjF3YjI1bGJuUWdRMjl0Y0c5dVpXNTBJSFJ2SUhOMGIzSmxJR0Z6SUdCeVpXWmdMbHh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb3ZYRzRnSUdGMGRHRmphRkpsWmpvZ1puVnVZM1JwYjI0Z0tISmxaaXdnWTI5dGNHOXVaVzUwS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1FnUFNCMGFHbHpMbWRsZEZCMVlteHBZMGx1YzNSaGJtTmxLQ2s3WEc0Z0lDQWdJU2hwYm5OMElDRTlJRzUxYkd3cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFOMFlYUmxiR1Z6Y3lCbWRXNWpkR2x2YmlCamIyMXdiMjVsYm5SeklHTmhibTV2ZENCb1lYWmxJSEpsWm5NdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSFpoY2lCd2RXSnNhV05EYjIxd2IyNWxiblJKYm5OMFlXNWpaU0E5SUdOdmJYQnZibVZ1ZEM1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncE8xeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFRtRnRaU0E5SUdOdmJYQnZibVZ1ZENBbUppQmpiMjF3YjI1bGJuUXVaMlYwVG1GdFpTQS9JR052YlhCdmJtVnVkQzVuWlhST1lXMWxLQ2tnT2lBbllTQmpiMjF3YjI1bGJuUW5PMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvY0hWaWJHbGpRMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdJVDBnYm5Wc2JDd2dKMU4wWVhSbGJHVnpjeUJtZFc1amRHbHZiaUJqYjIxd2IyNWxiblJ6SUdOaGJtNXZkQ0JpWlNCbmFYWmxiaUJ5WldaeklDY2dLeUFuS0ZObFpTQnlaV1lnWENJbGMxd2lJR2x1SUNWeklHTnlaV0YwWldRZ1lua2dKWE1wTGlBbklDc2dKMEYwZEdWdGNIUnpJSFJ2SUdGalkyVnpjeUIwYUdseklISmxaaUIzYVd4c0lHWmhhV3d1Snl3Z2NtVm1MQ0JqYjIxd2IyNWxiblJPWVcxbExDQjBhR2x6TG1kbGRFNWhiV1VvS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnlaV1p6SUQwZ2FXNXpkQzV5WldaeklEMDlQU0JsYlhCMGVVOWlhbVZqZENBL0lHbHVjM1F1Y21WbWN5QTlJSHQ5SURvZ2FXNXpkQzV5Wldaek8xeHVJQ0FnSUhKbFpuTmJjbVZtWFNBOUlIQjFZbXhwWTBOdmJYQnZibVZ1ZEVsdWMzUmhibU5sTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVaWFJoWTJobGN5QmhJSEpsWm1WeVpXNWpaU0J1WVcxbExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjbVZtSUU1aGJXVWdkRzhnWkdWeVpXWmxjbVZ1WTJVdVhHNGdJQ0FxSUVCbWFXNWhiRnh1SUNBZ0tpQkFjSEpwZG1GMFpWeHVJQ0FnS2k5Y2JpQWdaR1YwWVdOb1VtVm1PaUJtZFc1amRHbHZiaUFvY21WbUtTQjdYRzRnSUNBZ2RtRnlJSEpsWm5NZ1BTQjBhR2x6TG1kbGRGQjFZbXhwWTBsdWMzUmhibU5sS0NrdWNtVm1jenRjYmlBZ0lDQmtaV3hsZEdVZ2NtVm1jMXR5WldaZE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhRZ1lTQjBaWGgwSUdSbGMyTnlhWEIwYVc5dUlHOW1JSFJvWlNCamIyMXdiMjVsYm5RZ2RHaGhkQ0JqWVc0Z1ltVWdkWE5sWkNCMGJ5QnBaR1Z1ZEdsbWVTQnBkRnh1SUNBZ0tpQnBiaUJsY25KdmNpQnRaWE56WVdkbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCVWFHVWdibUZ0WlNCdmNpQnVkV3hzTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdkbGRFNWhiV1U2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMllYSWdkSGx3WlNBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMblI1Y0dVN1hHNGdJQ0FnZG1GeUlHTnZibk4wY25WamRHOXlJRDBnZEdocGN5NWZhVzV6ZEdGdVkyVWdKaVlnZEdocGN5NWZhVzV6ZEdGdVkyVXVZMjl1YzNSeWRXTjBiM0k3WEc0Z0lDQWdjbVYwZFhKdUlIUjVjR1V1WkdsemNHeGhlVTVoYldVZ2ZId2dZMjl1YzNSeWRXTjBiM0lnSmlZZ1kyOXVjM1J5ZFdOMGIzSXVaR2x6Y0d4aGVVNWhiV1VnZkh3Z2RIbHdaUzV1WVcxbElIeDhJR052Ym5OMGNuVmpkRzl5SUNZbUlHTnZibk4wY25WamRHOXlMbTVoYldVZ2ZId2diblZzYkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUhSb1pTQndkV0pzYVdOc2VTQmhZMk5sYzNOcFlteGxJSEpsY0hKbGMyVnVkR0YwYVc5dUlHOW1JSFJvYVhNZ1kyOXRjRzl1Wlc1MElDMGdhUzVsTGlCM2FHRjBYRzRnSUNBcUlHbHpJR1Y0Y0c5elpXUWdZbmtnY21WbWN5QmhibVFnY21WMGRYSnVaV1FnWW5rZ2NtVnVaR1Z5TGlCRFlXNGdZbVVnYm5Wc2JDQm1iM0lnYzNSaGRHVnNaWE56WEc0Z0lDQXFJR052YlhCdmJtVnVkSE11WEc0Z0lDQXFYRzRnSUNBcUlFQnlaWFIxY200Z2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCMGFHVWdjSFZpYkdsaklHTnZiWEJ2Ym1WdWRDQnBibk4wWVc1alpTNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQm5aWFJRZFdKc2FXTkpibk4wWVc1alpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBJRDBnZEdocGN5NWZhVzV6ZEdGdVkyVTdYRzRnSUNBZ2FXWWdLR2x1YzNRZ2FXNXpkR0Z1WTJWdlppQlRkR0YwWld4bGMzTkRiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2FXNXpkRHRjYmlBZ2ZTeGNibHh1SUNBdkx5QlRkSFZpWEc0Z0lGOXBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1ME9pQnVkV3hzWEc1Y2JuMDdYRzVjYmxKbFlXTjBVR1Z5Wmk1dFpXRnpkWEpsVFdWMGFHOWtjeWhTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRFMXBlR2x1TENBblVtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFuTENCN1hHNGdJRzF2ZFc1MFEyOXRjRzl1Wlc1ME9pQW5iVzkxYm5SRGIyMXdiMjVsYm5RbkxGeHVJQ0IxY0dSaGRHVkRiMjF3YjI1bGJuUTZJQ2QxY0dSaGRHVkRiMjF3YjI1bGJuUW5MRnh1SUNCZmNtVnVaR1Z5Vm1Gc2FXUmhkR1ZrUTI5dGNHOXVaVzUwT2lBblgzSmxibVJsY2xaaGJHbGtZWFJsWkVOdmJYQnZibVZ1ZENkY2JuMHBPMXh1WEc1MllYSWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RZ1BTQjdYRzVjYmlBZ1RXbDRhVzQ2SUZKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBUV2w0YVc1Y2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkRHNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEN1cnJlbnRPd25lclxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cbiAqXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEB0eXBlIHtSZWFjdENvbXBvbmVudH1cbiAgICovXG4gIGN1cnJlbnQ6IG51bGxcblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEN1cnJlbnRPd25lcjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NXG4gKi9cblxuLyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18qL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJlYWN0RGVmYXVsdEluamVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0SW5qZWN0aW9uJyk7XG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VIYW5kbGVzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9uJyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUnKTtcbnZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciA9IHJlcXVpcmUoJy4vcmVuZGVyU3VidHJlZUludG9Db250YWluZXInKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5SZWFjdERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7XG5cbnZhciByZW5kZXIgPSBSZWFjdFBlcmYubWVhc3VyZSgnUmVhY3QnLCAncmVuZGVyJywgUmVhY3RNb3VudC5yZW5kZXIpO1xuXG52YXIgUmVhY3QgPSB7XG4gIGZpbmRET01Ob2RlOiBmaW5kRE9NTm9kZSxcbiAgcmVuZGVyOiByZW5kZXIsXG4gIHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZSxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczogUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzLFxuICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogcmVuZGVyU3VidHJlZUludG9Db250YWluZXJcbn07XG5cbi8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJkbGVzcyBvZiBicm93c2VyLlxuLy8gQWxsb3dzIGZvciBkZWJ1Z2dpbmcgd2hlbiB0aGUgaG9vayBpcyBpbmplY3RlZCBvbiB0aGUgcGFnZS5cbi8qIGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXG5pZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7XG4gICAgQ3VycmVudE93bmVyOiBSZWFjdEN1cnJlbnRPd25lcixcbiAgICBJbnN0YW5jZUhhbmRsZXM6IFJlYWN0SW5zdGFuY2VIYW5kbGVzLFxuICAgIE1vdW50OiBSZWFjdE1vdW50LFxuICAgIFJlY29uY2lsZXI6IFJlYWN0UmVjb25jaWxlcixcbiAgICBUZXh0Q29tcG9uZW50OiBSZWFjdERPTVRleHRDb21wb25lbnRcbiAgfSk7XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG4gIGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93LnNlbGYpIHtcblxuICAgIC8vIEZpcnN0IGNoZWNrIGlmIGRldnRvb2xzIGlzIG5vdCBpbnN0YWxsZWRcbiAgICBpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIHdlJ3JlIGluIENocm9tZSBvciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3QgaW5zdGFsbGVkLlxuICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2VG9vbHMgZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHdlJ3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUgYW5kIHByb3ZpZGVcbiAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50aW5nIGNvbXBhdGliaWxpdHkgbW9kZVxuICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaWVDb21wYXRpYmlsaXR5TW9kZSwgJ0ludGVybmV0IEV4cGxvcmVyIGlzIHJ1bm5pbmcgaW4gY29tcGF0aWJpbGl0eSBtb2RlOyBwbGVhc2UgYWRkIHRoZSAnICsgJ2ZvbGxvd2luZyB0YWcgdG8geW91ciBIVE1MIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZzogJyArICc8bWV0YSBodHRwLWVxdWl2PVwiWC1VQS1Db21wYXRpYmxlXCIgY29udGVudD1cIklFPWVkZ2VcIiAvPicpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGV4cGVjdGVkRmVhdHVyZXMgPSBbXG4gICAgLy8gc2hpbXNcbiAgICBBcnJheS5pc0FycmF5LCBBcnJheS5wcm90b3R5cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5ub3csIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCwgU3RyaW5nLnByb3RvdHlwZS50cmltLFxuXG4gICAgLy8gc2hhbXNcbiAgICBPYmplY3QuY3JlYXRlLCBPYmplY3QuZnJlZXplXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRGZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFleHBlY3RlZEZlYXR1cmVzW2ldKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ09uZSBvciBtb3JlIEVTNSBzaGltL3NoYW1zIGV4cGVjdGVkIGJ5IFJlYWN0IGFyZSBub3QgYXZhaWxhYmxlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1wb2x5ZmlsbHMnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUlBUUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBSRTlOWEc0Z0tpOWNibHh1THlvZ1oyeHZZbUZzY3lCZlgxSkZRVU5VWDBSRlZsUlBUMHhUWDBkTVQwSkJURjlJVDA5TFgxOHFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JuWmhjaUJTWldGamRFUlBUVlJsZUhSRGIyMXdiMjVsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJFOU5WR1Y0ZEVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSR1ZtWVhWc2RFbHVhbVZqZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVaV1poZFd4MFNXNXFaV04wYVc5dUp5azdYRzUyWVhJZ1VtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekp5azdYRzUyWVhJZ1VtVmhZM1JOYjNWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5iM1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBVR1Z5WmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUVpYSm1KeWs3WEc1MllYSWdVbVZoWTNSU1pXTnZibU5wYkdWeUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGSmxZMjl1WTJsc1pYSW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVlhCa1lYUmxjeWNwTzF4dWRtRnlJRkpsWVdOMFZtVnljMmx2YmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSV1pYSnphVzl1SnlrN1hHNWNiblpoY2lCbWFXNWtSRTlOVG05a1pTQTlJSEpsY1hWcGNtVW9KeTR2Wm1sdVpFUlBUVTV2WkdVbktUdGNiblpoY2lCeVpXNWtaWEpUZFdKMGNtVmxTVzUwYjBOdmJuUmhhVzVsY2lBOUlISmxjWFZwY21Vb0p5NHZjbVZ1WkdWeVUzVmlkSEpsWlVsdWRHOURiMjUwWVdsdVpYSW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1U1pXRmpkRVJsWm1GMWJIUkpibXBsWTNScGIyNHVhVzVxWldOMEtDazdYRzVjYm5aaGNpQnlaVzVrWlhJZ1BTQlNaV0ZqZEZCbGNtWXViV1ZoYzNWeVpTZ25VbVZoWTNRbkxDQW5jbVZ1WkdWeUp5d2dVbVZoWTNSTmIzVnVkQzV5Wlc1a1pYSXBPMXh1WEc1MllYSWdVbVZoWTNRZ1BTQjdYRzRnSUdacGJtUkVUMDFPYjJSbE9pQm1hVzVrUkU5TlRtOWtaU3hjYmlBZ2NtVnVaR1Z5T2lCeVpXNWtaWElzWEc0Z0lIVnViVzkxYm5SRGIyMXdiMjVsYm5SQmRFNXZaR1U2SUZKbFlXTjBUVzkxYm5RdWRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaU3hjYmlBZ2RtVnljMmx2YmpvZ1VtVmhZM1JXWlhKemFXOXVMRnh1WEc0Z0lDOHFJR1Z6YkdsdWRDMWthWE5oWW14bElHTmhiV1ZzWTJGelpTQXFMMXh1SUNCMWJuTjBZV0pzWlY5aVlYUmphR1ZrVlhCa1lYUmxjem9nVW1WaFkzUlZjR1JoZEdWekxtSmhkR05vWldSVmNHUmhkR1Z6TEZ4dUlDQjFibk4wWVdKc1pWOXlaVzVrWlhKVGRXSjBjbVZsU1c1MGIwTnZiblJoYVc1bGNqb2djbVZ1WkdWeVUzVmlkSEpsWlVsdWRHOURiMjUwWVdsdVpYSmNibjA3WEc1Y2JpOHZJRWx1YW1WamRDQjBhR1VnY25WdWRHbHRaU0JwYm5SdklHRWdaR1YyZEc5dmJITWdaMnh2WW1Gc0lHaHZiMnNnY21WbllYSmtiR1Z6Y3lCdlppQmljbTkzYzJWeUxseHVMeThnUVd4c2IzZHpJR1p2Y2lCa1pXSjFaMmRwYm1jZ2QyaGxiaUIwYUdVZ2FHOXZheUJwY3lCcGJtcGxZM1JsWkNCdmJpQjBhR1VnY0dGblpTNWNiaThxSUdWemJHbHVkQzFsYm1GaWJHVWdZMkZ0Wld4allYTmxJQ292WEc1cFppQW9kSGx3Wlc5bUlGOWZVa1ZCUTFSZlJFVldWRTlQVEZOZlIweFBRa0ZNWDBoUFQwdGZYeUFoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dKaVlnZEhsd1pXOW1JRjlmVWtWQlExUmZSRVZXVkU5UFRGTmZSMHhQUWtGTVgwaFBUMHRmWHk1cGJtcGxZM1FnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ1gxOVNSVUZEVkY5RVJWWlVUMDlNVTE5SFRFOUNRVXhmU0U5UFMxOWZMbWx1YW1WamRDaDdYRzRnSUNBZ1EzVnljbVZ1ZEU5M2JtVnlPaUJTWldGamRFTjFjbkpsYm5SUGQyNWxjaXhjYmlBZ0lDQkpibk4wWVc1alpVaGhibVJzWlhNNklGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMRnh1SUNBZ0lFMXZkVzUwT2lCU1pXRmpkRTF2ZFc1MExGeHVJQ0FnSUZKbFkyOXVZMmxzWlhJNklGSmxZV04wVW1WamIyNWphV3hsY2l4Y2JpQWdJQ0JVWlhoMFEyOXRjRzl1Wlc1ME9pQlNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblJjYmlBZ2ZTazdYRzU5WEc1Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJSFpoY2lCRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMFY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSnlrN1hHNGdJR2xtSUNoRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDNWpZVzVWYzJWRVQwMGdKaVlnZDJsdVpHOTNMblJ2Y0NBOVBUMGdkMmx1Wkc5M0xuTmxiR1lwSUh0Y2JseHVJQ0FnSUM4dklFWnBjbk4wSUdOb1pXTnJJR2xtSUdSbGRuUnZiMnh6SUdseklHNXZkQ0JwYm5OMFlXeHNaV1JjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JRjlmVWtWQlExUmZSRVZXVkU5UFRGTmZSMHhQUWtGTVgwaFBUMHRmWHlBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUM4dklFbG1JSGRsSjNKbElHbHVJRU5vY205dFpTQnZjaUJHYVhKbFptOTRMQ0J3Y205MmFXUmxJR0VnWkc5M2JteHZZV1FnYkdsdWF5QnBaaUJ1YjNRZ2FXNXpkR0ZzYkdWa0xseHVJQ0FnSUNBZ2FXWWdLRzVoZG1sbllYUnZjaTUxYzJWeVFXZGxiblF1YVc1a1pYaFBaaWduUTJoeWIyMWxKeWtnUGlBdE1TQW1KaUJ1WVhacFoyRjBiM0l1ZFhObGNrRm5aVzUwTG1sdVpHVjRUMllvSjBWa1oyVW5LU0E5UFQwZ0xURWdmSHdnYm1GMmFXZGhkRzl5TG5WelpYSkJaMlZ1ZEM1cGJtUmxlRTltS0NkR2FYSmxabTk0SnlrZ1BpQXRNU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpiMnhsTG1SbFluVm5LQ2RFYjNkdWJHOWhaQ0IwYUdVZ1VtVmhZM1FnUkdWMlZHOXZiSE1nWm05eUlHRWdZbVYwZEdWeUlHUmxkbVZzYjNCdFpXNTBJR1Y0Y0dWeWFXVnVZMlU2SUNjZ0t5QW5hSFIwY0hNNkx5OW1ZaTV0WlM5eVpXRmpkQzFrWlhaMGIyOXNjeWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUVsbUlIZGxKM0psSUdsdUlFbEZPQ3dnWTJobFkyc2dkRzhnYzJWbElHbG1JSGRsSUdGeVpTQnBiaUJqYjIxd1lYUnBZbWxzYVhSNUlHMXZaR1VnWVc1a0lIQnliM1pwWkdWY2JpQWdJQ0F2THlCcGJtWnZjbTFoZEdsdmJpQnZiaUJ3Y21WMlpXNTBhVzVuSUdOdmJYQmhkR2xpYVd4cGRIa2diVzlrWlZ4dUlDQWdJSFpoY2lCcFpVTnZiWEJoZEdsaWFXeHBkSGxOYjJSbElEMGdaRzlqZFcxbGJuUXVaRzlqZFcxbGJuUk5iMlJsSUNZbUlHUnZZM1Z0Wlc1MExtUnZZM1Z0Wlc1MFRXOWtaU0E4SURnN1hHNWNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5Z2hhV1ZEYjIxd1lYUnBZbWxzYVhSNVRXOWtaU3dnSjBsdWRHVnlibVYwSUVWNGNHeHZjbVZ5SUdseklISjFibTVwYm1jZ2FXNGdZMjl0Y0dGMGFXSnBiR2wwZVNCdGIyUmxPeUJ3YkdWaGMyVWdZV1JrSUhSb1pTQW5JQ3NnSjJadmJHeHZkMmx1WnlCMFlXY2dkRzhnZVc5MWNpQklWRTFNSUhSdklIQnlaWFpsYm5RZ2RHaHBjeUJtY205dElHaGhjSEJsYm1sdVp6b2dKeUFySUNjOGJXVjBZU0JvZEhSd0xXVnhkV2wyUFZ3aVdDMVZRUzFEYjIxd1lYUnBZbXhsWENJZ1kyOXVkR1Z1ZEQxY0lrbEZQV1ZrWjJWY0lpQXZQaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ2RtRnlJR1Y0Y0dWamRHVmtSbVZoZEhWeVpYTWdQU0JiWEc0Z0lDQWdMeThnYzJocGJYTmNiaUFnSUNCQmNuSmhlUzVwYzBGeWNtRjVMQ0JCY25KaGVTNXdjbTkwYjNSNWNHVXVaWFpsY25rc0lFRnljbUY1TG5CeWIzUnZkSGx3WlM1bWIzSkZZV05vTENCQmNuSmhlUzV3Y205MGIzUjVjR1V1YVc1a1pYaFBaaXdnUVhKeVlYa3VjSEp2ZEc5MGVYQmxMbTFoY0N3Z1JHRjBaUzV1YjNjc0lFWjFibU4wYVc5dUxuQnliM1J2ZEhsd1pTNWlhVzVrTENCUFltcGxZM1F1YTJWNWN5d2dVM1J5YVc1bkxuQnliM1J2ZEhsd1pTNXpjR3hwZEN3Z1UzUnlhVzVuTG5CeWIzUnZkSGx3WlM1MGNtbHRMRnh1WEc0Z0lDQWdMeThnYzJoaGJYTmNiaUFnSUNCUFltcGxZM1F1WTNKbFlYUmxMQ0JQWW1wbFkzUXVabkpsWlhwbFhUdGNibHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2daWGh3WldOMFpXUkdaV0YwZFhKbGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRmxlSEJsWTNSbFpFWmxZWFIxY21WelcybGRLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1V1WlhKeWIzSW9KMDl1WlNCdmNpQnRiM0psSUVWVE5TQnphR2x0TDNOb1lXMXpJR1Y0Y0dWamRHVmtJR0o1SUZKbFlXTjBJR0Z5WlNCdWIzUWdZWFpoYVd4aFlteGxPaUFuSUNzZ0oyaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRkMkZ5Ym1sdVp5MXdiMng1Wm1sc2JITW5LVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNRN0lsMTkiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01CdXR0b25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBtb3VzZUxpc3RlbmVyTmFtZXMgPSB7XG4gIG9uQ2xpY2s6IHRydWUsXG4gIG9uRG91YmxlQ2xpY2s6IHRydWUsXG4gIG9uTW91c2VEb3duOiB0cnVlLFxuICBvbk1vdXNlTW92ZTogdHJ1ZSxcbiAgb25Nb3VzZVVwOiB0cnVlLFxuXG4gIG9uQ2xpY2tDYXB0dXJlOiB0cnVlLFxuICBvbkRvdWJsZUNsaWNrQ2FwdHVyZTogdHJ1ZSxcbiAgb25Nb3VzZURvd25DYXB0dXJlOiB0cnVlLFxuICBvbk1vdXNlTW92ZUNhcHR1cmU6IHRydWUsXG4gIG9uTW91c2VVcENhcHR1cmU6IHRydWVcbn07XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDxidXR0b24+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCBkb2VzIG5vdCByZWNlaXZlIG1vdXNlIGV2ZW50c1xuICogd2hlbiBgZGlzYWJsZWRgIGlzIHNldC5cbiAqL1xudmFyIFJlYWN0RE9NQnV0dG9uID0ge1xuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cblxuICAgIC8vIENvcHkgdGhlIHByb3BzLCBleGNlcHQgdGhlIG1vdXNlIGxpc3RlbmVyc1xuICAgIHZhciBuYXRpdmVQcm9wcyA9IHt9O1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KGtleSkgJiYgIW1vdXNlTGlzdGVuZXJOYW1lc1trZXldKSB7XG4gICAgICAgIG5hdGl2ZVByb3BzW2tleV0gPSBwcm9wc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuYXRpdmVQcm9wcztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUJ1dHRvbjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NQ29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbi8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEF1dG9Gb2N1c1V0aWxzID0gcmVxdWlyZSgnLi9BdXRvRm9jdXNVdGlscycpO1xudmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RE9NQnV0dG9uID0gcmVxdWlyZSgnLi9SZWFjdERPTUJ1dHRvbicpO1xudmFyIFJlYWN0RE9NSW5wdXQgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW5wdXQnKTtcbnZhciBSZWFjdERPTU9wdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01PcHRpb24nKTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3QnKTtcbnZhciBSZWFjdERPTVRleHRhcmVhID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRhcmVhJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcbnZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkZWxldGVMaXN0ZW5lciA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5kZWxldGVMaXN0ZW5lcjtcbnZhciBsaXN0ZW5UbyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5saXN0ZW5UbztcbnZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblxuLy8gRm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4gYmUgdHJlYXRlZCBhcyBjb250ZW50LlxudmFyIENPTlRFTlRfVFlQRVMgPSB7ICdzdHJpbmcnOiB0cnVlLCAnbnVtYmVyJzogdHJ1ZSB9O1xuXG52YXIgQ0hJTERSRU4gPSBrZXlPZih7IGNoaWxkcmVuOiBudWxsIH0pO1xudmFyIFNUWUxFID0ga2V5T2YoeyBzdHlsZTogbnVsbCB9KTtcbnZhciBIVE1MID0ga2V5T2YoeyBfX2h0bWw6IG51bGwgfSk7XG5cbnZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShpbnRlcm5hbEluc3RhbmNlKSB7XG4gIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgdmFyIG93bmVyID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG4gICAgaWYgKG93bmVyKSB7XG4gICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHJldHVybiAnIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAnICsgbmFtZSArICdgLic7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxudmFyIGxlZ2FjeVByb3BzRGVzY3JpcHRvcjtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGxlZ2FjeVByb3BzRGVzY3JpcHRvciA9IHtcbiAgICBwcm9wczoge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RET01Db21wb25lbnQ6IERvIG5vdCBhY2Nlc3MgLnByb3BzIG9mIGEgRE9NIG5vZGU7IGluc3RlYWQsICcgKyAncmVjcmVhdGUgdGhlIHByb3BzIGFzIGByZW5kZXJgIGRpZCBvcmlnaW5hbGx5IG9yIHJlYWQgdGhlIERPTSAnICsgJ3Byb3BlcnRpZXMvYXR0cmlidXRlcyBkaXJlY3RseSBmcm9tIHRoaXMgbm9kZSAoZS5nLiwgJyArICd0aGlzLnJlZnMuYm94LmNsYXNzTmFtZSkuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbGVnYWN5R2V0RE9NTm9kZSgpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5nZXRET01Ob2RlKCkgb2YgYSBET00gbm9kZTsgJyArICdpbnN0ZWFkLCB1c2UgdGhlIG5vZGUgZGlyZWN0bHkuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeUlzTW91bnRlZCgpIHtcbiAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAuaXNNb3VudGVkKCkgb2YgYSBET00gbm9kZS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gISFjb21wb25lbnQ7XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeVNldFN0YXRlRXRjKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb21wb25lbnQgPSB0aGlzLl9yZWFjdEludGVybmFsQ29tcG9uZW50O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RET01Db21wb25lbnQ6IERvIG5vdCBhY2Nlc3MgLnNldFN0YXRlKCksIC5yZXBsYWNlU3RhdGUoKSwgb3IgJyArICcuZm9yY2VVcGRhdGUoKSBvZiBhIERPTSBub2RlLiBUaGlzIGlzIGEgbm8tb3AuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVnYWN5U2V0UHJvcHMocGFydGlhbFByb3BzLCBjYWxsYmFjaykge1xuICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5zZXRQcm9wcygpIG9mIGEgRE9NIG5vZGUuICcgKyAnSW5zdGVhZCwgY2FsbCBSZWFjdERPTS5yZW5kZXIgYWdhaW4gYXQgdGhlIHRvcCBsZXZlbC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoIWNvbXBvbmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRQcm9wc0ludGVybmFsKGNvbXBvbmVudCwgcGFydGlhbFByb3BzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChjb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWdhY3lSZXBsYWNlUHJvcHMocGFydGlhbFByb3BzLCBjYWxsYmFjaykge1xuICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5yZXBsYWNlUHJvcHMoKSBvZiBhIERPTSBub2RlLiAnICsgJ0luc3RlYWQsIGNhbGwgUmVhY3RET00ucmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKCFjb21wb25lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlUmVwbGFjZVByb3BzSW50ZXJuYWwoY29tcG9uZW50LCBwYXJ0aWFsUHJvcHMpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFja0ludGVybmFsKGNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZyaWVuZGx5U3RyaW5naWZ5KG9iaikge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gJ1snICsgb2JqLm1hcChmcmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhaXJzID0gW107XG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgdmFyIGtleUVzY2FwZWQgPSAvXlthLXokX11bXFx3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09OLnN0cmluZ2lmeShrZXkpO1xuICAgICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShvYmpba2V5XSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gJ3snICsgcGFpcnMuam9pbignLCAnKSArICd9JztcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICdbZnVuY3Rpb24gb2JqZWN0XSc7XG4gIH1cbiAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5IGluIHRoYXQgdW5kZWZpbmVkIGJlY2F1c2VzIHVuZGVmaW5lZCBhbmQgdGhhdFxuICAvLyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuICByZXR1cm4gU3RyaW5nKG9iaik7XG59XG5cbnZhciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkge1xuICBpZiAoc3R5bGUxID09IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHNoYWxsb3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgdmFyIG93bmVyTmFtZTtcbiAgaWYgKG93bmVyKSB7XG4gICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICB9XG5cbiAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lO1xuXG4gIGlmIChzdHlsZU11dGF0aW9uV2FybmluZy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0eWxlTXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IHByb3BzXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBwcm9wcykge1xuICBpZiAoIXByb3BzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIE5vdGUgdGhlIHVzZSBvZiBgPT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHZvaWRFbGVtZW50VGFnc1tjb21wb25lbnQuX3RhZ10pIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBub3QgaGF2ZSBgY2hpbGRyZW5gIG9yICcgKyAndXNlIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7XG4gICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgISh0eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Bwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBpbiB0aGUgZm9ybSBge19faHRtbDogLi4ufWAuICcgKyAnUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIubWUvcmVhY3QtaW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sICcgKyAnZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5nIHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5mb3JtYXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiB1bmRlZmluZWQ7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIXByb3BzLmNvbnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQgaXMgYGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAnICsgJ1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhhdCBub25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDogdW5kZWZpbmVkO1xuICB9XG4gICEocHJvcHMuc3R5bGUgPT0gbnVsbCB8fCB0eXBlb2YgcHJvcHMuc3R5bGUgPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBtYXBwaW5nIGZyb20gc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMsICcgKyAnbm90IGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3ttYXJnaW5SaWdodDogc3BhY2luZyArIFxcJ2VtXFwnfX0gd2hlbiAnICsgJ3VzaW5nIEpTWC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGVucXVldWVQdXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIsIHRyYW5zYWN0aW9uKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gSUU4IGhhcyBubyBBUEkgZm9yIGV2ZW50IGNhcHR1cmluZyBhbmQgdGhlIGBvblNjcm9sbGAgZXZlbnQgZG9lc24ndFxuICAgIC8vIGJ1YmJsZS5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhyZWdpc3RyYXRpb25OYW1lICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpLCAnVGhpcyBicm93c2VyIGRvZXNuXFwndCBzdXBwb3J0IHRoZSBgb25TY3JvbGxgIGV2ZW50JykgOiB1bmRlZmluZWQ7XG4gIH1cbiAgdmFyIGNvbnRhaW5lciA9IFJlYWN0TW91bnQuZmluZFJlYWN0Q29udGFpbmVyRm9ySUQoaWQpO1xuICBpZiAoY29udGFpbmVyKSB7XG4gICAgdmFyIGRvYyA9IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgPyBjb250YWluZXIub3duZXJEb2N1bWVudCA6IGNvbnRhaW5lcjtcbiAgICBsaXN0ZW5UbyhyZWdpc3RyYXRpb25OYW1lLCBkb2MpO1xuICB9XG4gIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocHV0TGlzdGVuZXIsIHtcbiAgICBpZDogaWQsXG4gICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9uTmFtZSxcbiAgICBsaXN0ZW5lcjogbGlzdGVuZXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHB1dExpc3RlbmVyKCkge1xuICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7XG4gIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5wdXRMaXN0ZW5lcihsaXN0ZW5lclRvUHV0LmlkLCBsaXN0ZW5lclRvUHV0LnJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyVG9QdXQubGlzdGVuZXIpO1xufVxuXG4vLyBUaGVyZSBhcmUgc28gbWFueSBtZWRpYSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGp1c3Rcbi8vIG1haW50YWluIGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJsZWRFdmVudGAgZm9yIGVhY2hcbnZhciBtZWRpYUV2ZW50cyA9IHtcbiAgdG9wQWJvcnQ6ICdhYm9ydCcsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG4gIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLFxuICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG4gIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsXG4gIHRvcEVuZGVkOiAnZW5kZWQnLFxuICB0b3BFcnJvcjogJ2Vycm9yJyxcbiAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJyxcbiAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0JyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5JyxcbiAgdG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcbiAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG4gIHRvcFdhaXRpbmc6ICd3YWl0aW5nJ1xufTtcblxuZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudHNMb2NhbCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICAvLyBJZiBhIGNvbXBvbmVudCByZW5kZXJzIHRvIG51bGwgb3IgaWYgYW5vdGhlciBjb21wb25lbnQgZmF0YWxzIGFuZCBjYXVzZXNcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUgY2FuIGJlIG51bGwuXG4gICFpbnN0Ll9yb290Tm9kZUlEID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2ZW50cycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUoaW5zdC5fcm9vdE5vZGVJRCk7XG4gICFub2RlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVkRXZlbnQoLi4uKTogUmVxdWlyZXMgbm9kZSB0byBiZSByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgc3dpdGNoIChpbnN0Ll90YWcpIHtcbiAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzLnRvcExvYWQsICdsb2FkJywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndmlkZW8nOlxuICAgIGNhc2UgJ2F1ZGlvJzpcblxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgLy8gY3JlYXRlIGxpc3RlbmVyIGZvciBlYWNoIG1lZGlhIGV2ZW50XG4gICAgICBmb3IgKHZhciBldmVudCBpbiBtZWRpYUV2ZW50cykge1xuICAgICAgICBpZiAobWVkaWFFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXNbZXZlbnRdLCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBjYXNlICdpbWcnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzLnRvcEVycm9yLCAnZXJyb3InLCBub2RlKSwgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BMb2FkLCAnbG9hZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzLnRvcFJlc2V0LCAncmVzZXQnLCBub2RlKSwgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BTdWJtaXQsICdzdWJtaXQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5mdW5jdGlvbiBtb3VudFJlYWR5SW5wdXRXcmFwcGVyKCkge1xuICBSZWFjdERPTUlucHV0Lm1vdW50UmVhZHlXcmFwcGVyKHRoaXMpO1xufVxuXG5mdW5jdGlvbiBwb3N0VXBkYXRlU2VsZWN0V3JhcHBlcigpIHtcbiAgUmVhY3RET01TZWxlY3QucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyk7XG59XG5cbi8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mgc2hvdWxkIG9taXQgdGhlaXIgY2xvc2UgdGFnLiBXZSBrZWVwIGEgd2hpdGVsaXN0IGZvclxuLy8gdGhvc2Ugc3BlY2lhbCBjYXNlZCB0YWdzLlxuXG52YXIgb21pdHRlZENsb3NlVGFncyA9IHtcbiAgJ2FyZWEnOiB0cnVlLFxuICAnYmFzZSc6IHRydWUsXG4gICdicic6IHRydWUsXG4gICdjb2wnOiB0cnVlLFxuICAnZW1iZWQnOiB0cnVlLFxuICAnaHInOiB0cnVlLFxuICAnaW1nJzogdHJ1ZSxcbiAgJ2lucHV0JzogdHJ1ZSxcbiAgJ2tleWdlbic6IHRydWUsXG4gICdsaW5rJzogdHJ1ZSxcbiAgJ21ldGEnOiB0cnVlLFxuICAncGFyYW0nOiB0cnVlLFxuICAnc291cmNlJzogdHJ1ZSxcbiAgJ3RyYWNrJzogdHJ1ZSxcbiAgJ3dicic6IHRydWVcbn07XG5cbi8vIE5PVEU6IG1lbnVpdGVtJ3MgY2xvc2UgdGFnIHNob3VsZCBiZSBvbWl0dGVkLCBidXQgdGhhdCBjYXVzZXMgcHJvYmxlbXMuXG52YXIgbmV3bGluZUVhdGluZ1RhZ3MgPSB7XG4gICdsaXN0aW5nJzogdHJ1ZSxcbiAgJ3ByZSc6IHRydWUsXG4gICd0ZXh0YXJlYSc6IHRydWVcbn07XG5cbi8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRyZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXNcbi8vIGBvbWl0dGVkQ2xvc2VUYWdzYCBleGNlcHQgdGhhdCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5nIHRhZy5cblxudmFyIHZvaWRFbGVtZW50VGFncyA9IGFzc2lnbih7XG4gICdtZW51aXRlbSc6IHRydWVcbn0sIG9taXR0ZWRDbG9zZVRhZ3MpO1xuXG4vLyBXZSBhY2NlcHQgYW55IHRhZyB0byBiZSByZW5kZXJlZCBidXQgc2luY2UgdGhpcyBnZXRzIGluamVjdGVkIGludG8gYXJiaXRyYXJ5XG4vLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0J3MgYSBzYWZlIHRhZy5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWVcblxudmFyIFZBTElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5cXC1cXGRdKiQvOyAvLyBTaW1wbGlmaWVkIHN1YnNldFxudmFyIHZhbGlkYXRlZFRhZ0NhY2hlID0ge307XG52YXIgaGFzT3duUHJvcGVydHkgPSAoe30pLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpIHtcbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbGlkYXRlZFRhZ0NhY2hlLCB0YWcpKSB7XG4gICAgIVZBTElEX1RBR19SRUdFWC50ZXN0KHRhZykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVzJywgdGFnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFsaWRhdGVkVGFnQ2FjaGVbdGFnXSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0NoaWxkQ29udGV4dERldihjb250ZXh0LCBpbnN0KSB7XG4gIC8vIFBhc3MgZG93biBvdXIgdGFnIG5hbWUgdG8gY2hpbGQgY29tcG9uZW50cyBmb3IgdmFsaWRhdGlvbiBwdXJwb3Nlc1xuICBjb250ZXh0ID0gYXNzaWduKHt9LCBjb250ZXh0KTtcbiAgdmFyIGluZm8gPSBjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XTtcbiAgY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0gPSB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhpbmZvLCBpbnN0Ll90YWcsIGluc3QpO1xuICByZXR1cm4gY29udGV4dDtcbn1cblxuZnVuY3Rpb24gaXNDdXN0b21Db21wb25lbnQodGFnTmFtZSwgcHJvcHMpIHtcbiAgcmV0dXJuIHRhZ05hbWUuaW5kZXhPZignLScpID49IDAgfHwgcHJvcHMuaXMgIT0gbnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFJlYWN0IGNsYXNzIHRoYXQgaXMgaWRlbXBvdGVudCBhbmQgY2FwYWJsZSBvZiBjb250YWluaW5nIG90aGVyXG4gKiBSZWFjdCBjb21wb25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHByb3BlcnRpZXMgdGhhdCBhcmVcbiAqIHZhbGlkIGFjY29yZGluZyB0byBgRE9NUHJvcGVydHlgLlxuICpcbiAqICAtIEV2ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25gLCBldGMuXG4gKiAgLSBET00gcHJvcGVydGllczogYGNsYXNzTmFtZWAsIGBuYW1lYCwgYHRpdGxlYCwgZXRjLlxuICpcbiAqIFRoZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJlbnRseSBmcm9tIHRoZSBET00gQVBJLiBJdCBhY2NlcHRzIGFuXG4gKiBvYmplY3QgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgUmVhY3RET01Db21wb25lbnRcbiAqIEBleHRlbmRzIFJlYWN0TXVsdGlDaGlsZFxuICovXG5mdW5jdGlvbiBSZWFjdERPTUNvbXBvbmVudCh0YWcpIHtcbiAgdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKTtcbiAgdGhpcy5fdGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7XG4gIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbnVsbDtcbiAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDtcbiAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcbiAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzID0gbnVsbDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB0aGlzLl91bnByb2Nlc3NlZENvbnRleHREZXYgPSBudWxsO1xuICAgIHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXYgPSBudWxsO1xuICB9XG59XG5cblJlYWN0RE9NQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9uZW50JztcblxuUmVhY3RET01Db21wb25lbnQuTWl4aW4gPSB7XG5cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgfSxcblxuICAvKipcbiAgICogR2VuZXJhdGVzIHJvb3QgdGFnIG1hcmt1cCB0aGVuIHJlY3Vyc2VzLiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGFuZFxuICAgKiBpcyBub3QgaWRlbXBvdGVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgVGhlIHJvb3QgRE9NIElEIGZvciB0aGlzIG5vZGUuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb21wdXRlZCBtYXJrdXAuXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gcm9vdElEO1xuXG4gICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGNhc2UgJ2ltZyc6XG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgdGhpcy5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgICAgIGxpc3RlbmVyczogbnVsbFxuICAgICAgICB9O1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIHByb3BzID0gUmVhY3RET01CdXR0b24uZ2V0TmF0aXZlUHJvcHModGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgUmVhY3RET01JbnB1dC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0TmF0aXZlUHJvcHModGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0TmF0aXZlUHJvcHModGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIFJlYWN0RE9NU2VsZWN0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0TmF0aXZlUHJvcHModGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBjb250ZXh0ID0gUmVhY3RET01TZWxlY3QucHJvY2Vzc0NoaWxkQ29udGV4dCh0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXROYXRpdmVQcm9wcyh0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgcHJvcHMpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0pIHtcbiAgICAgICAgdmFsaWRhdGVET01OZXN0aW5nKHRoaXMuX3RhZywgdGhpcywgY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aGlzLl91bnByb2Nlc3NlZENvbnRleHREZXYgPSBjb250ZXh0O1xuICAgICAgdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldiA9IHByb2Nlc3NDaGlsZENvbnRleHREZXYoY29udGV4dCwgdGhpcyk7XG4gICAgICBjb250ZXh0ID0gdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldjtcbiAgICB9XG5cbiAgICB2YXIgbW91bnRJbWFnZTtcbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBjb250ZXh0W1JlYWN0TW91bnQub3duZXJEb2N1bWVudENvbnRleHRLZXldO1xuICAgICAgdmFyIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvcklEKGVsLCB0aGlzLl9yb290Tm9kZUlEKTtcbiAgICAgIC8vIFBvcHVsYXRlIG5vZGUgY2FjaGVcbiAgICAgIFJlYWN0TW91bnQuZ2V0SUQoZWwpO1xuICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyh7fSwgcHJvcHMsIHRyYW5zYWN0aW9uLCBlbCk7XG4gICAgICB0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4odHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBlbCk7XG4gICAgICBtb3VudEltYWdlID0gZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB0YWdPcGVuID0gdGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyh0cmFuc2FjdGlvbiwgcHJvcHMpO1xuICAgICAgdmFyIHRhZ0NvbnRlbnQgPSB0aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCk7XG4gICAgICBpZiAoIXRhZ0NvbnRlbnQgJiYgb21pdHRlZENsb3NlVGFnc1t0aGlzLl90YWddKSB7XG4gICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJy8+JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJz4nICsgdGFnQ29udGVudCArICc8LycgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlICsgJz4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobW91bnRSZWFkeUlucHV0V3JhcHBlciwgdGhpcyk7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBtb3VudEltYWdlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIG9wZW4gdGFnIGFuZCBhbGwgYXR0cmlidXRlcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBiZWNhdXNlIGV2ZW50cyBnZXQgcmVnaXN0ZXJlZC5cbiAgICpcbiAgICogSXRlcmF0aW5nIG92ZXIgb2JqZWN0IHByb3BlcnRpZXMgaXMgZmFzdGVyIHRoYW4gaXRlcmF0aW5nIG92ZXIgYXJyYXlzLlxuICAgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL29iai12cy1hcnItaXRlcmF0aW9uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgb2Ygb3BlbmluZyB0YWcuXG4gICAqL1xuICBfY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcykge1xuICAgIHZhciByZXQgPSAnPCcgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXG4gICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMuX3Jvb3ROb2RlSUQsIHByb3BLZXksIHByb3BWYWx1ZSwgdHJhbnNhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxvY2tcbiAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gYXNzaWduKHt9LCBwcm9wcy5zdHlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByb3BWYWx1ZSA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JTdHlsZXMocHJvcFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWFya3VwID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuX3RhZyAhPSBudWxsICYmIGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgcHJvcHMpKSB7XG4gICAgICAgICAgaWYgKHByb3BLZXkgIT09IENISUxEUkVOKSB7XG4gICAgICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlKHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXJrdXApIHtcbiAgICAgICAgICByZXQgKz0gJyAnICsgbWFya3VwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIHN0YXRpYyBwYWdlcywgbm8gbmVlZCB0byBwdXQgUmVhY3QgSUQgYW5kIGNoZWNrc3VtLiBTYXZlcyBsb3RzIG9mXG4gICAgLy8gYnl0ZXMuXG4gICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHZhciBtYXJrdXBGb3JJRCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICByZXR1cm4gcmV0ICsgJyAnICsgbWFya3VwRm9ySUQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVudCBiZXR3ZWVuIHRoZSB0YWdzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4ge3N0cmluZ30gQ29udGVudCBtYXJrdXAuXG4gICAqL1xuICBfY3JlYXRlQ29udGVudE1hcmt1cDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCkge1xuICAgIHZhciByZXQgPSAnJztcblxuICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGluZyB6ZXJvL2ZhbHNlLlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcbiAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChpbm5lckhUTUwuX19odG1sICE9IG51bGwpIHtcbiAgICAgICAgcmV0ID0gaW5uZXJIVE1MLl9faHRtbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG4gICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgLy8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcbiAgICAgICAgcmV0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKGNvbnRlbnRUb1VzZSk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICByZXQgPSBtb3VudEltYWdlcy5qb2luKCcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdzW3RoaXMuX3RhZ10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xcbicpIHtcbiAgICAgIC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEgbmV3bGluZVxuICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9uL3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nXG4gICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNhbGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9yXG4gICAgICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyBcIl5cXG5cIiB3aXRoIFwiXFxyXFxuXCIgZG9lc24ndCBnZXQgZWF0ZW4sIGFuZCB0aGUgZmlyc3RcbiAgICAgIC8vIFxcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4dEFyZWFFbGVtZW50I3ZhbHVlLilcbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1wcmU+XG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNlbGVtZW50LXJlc3RyaWN0aW9ucz5cbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI25ld2xpbmVzPlxuICAgICAgLy8gU2VlOiBQYXJzaW5nIG9mIFwidGV4dGFyZWFcIiBcImxpc3RpbmdcIiBhbmQgXCJwcmVcIiBlbGVtZW50c1xuICAgICAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHk+XG4gICAgICByZXR1cm4gJ1xcbicgKyByZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LFxuXG4gIF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGVsKSB7XG4gICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuXG4gICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xuICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkge1xuICAgICAgICBzZXRJbm5lckhUTUwoZWwsIGlubmVySFRNTC5fX2h0bWwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtcbiAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAgICBzZXRUZXh0Q29udGVudChlbCwgY29udGVudFRvVXNlKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG4gICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBlbC5hcHBlbmRDaGlsZChtb3VudEltYWdlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIG5hdGl2ZSBET00gY29tcG9uZW50IGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkIGFuZFxuICAgKiBhdHRhY2hlZCB0byB0aGUgRE9NLiBSZWNvbmNpbGVzIHRoZSByb290IERPTSBub2RlLCB0aGVuIHJlY3Vyc2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCkge1xuICAgIHZhciBsYXN0UHJvcHMgPSBwcmV2RWxlbWVudC5wcm9wcztcbiAgICB2YXIgbmV4dFByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01CdXR0b24uZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01CdXR0b24uZ2V0TmF0aXZlUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01JbnB1dC5nZXROYXRpdmVQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTUlucHV0LmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0TmF0aXZlUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXROYXRpdmVQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXROYXRpdmVQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0TmF0aXZlUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzIHJlZmVyZW5jZS1lcXVhbCB0byB0aGUgb2xkIG9uZSwgcGFzcyBkb3duIHRoZSBzYW1lXG4gICAgICAvLyBwcm9jZXNzZWQgb2JqZWN0IHNvIHRoZSB1cGRhdGUgYmFpbG91dCBpbiBSZWFjdFJlY29uY2lsZXIgYmVoYXZlc1xuICAgICAgLy8gY29ycmVjdGx5IChhbmQgaWRlbnRpY2FsbHkgaW4gZGV2IGFuZCBwcm9kKS4gU2VlICM1MDA1LlxuICAgICAgaWYgKHRoaXMuX3VucHJvY2Vzc2VkQ29udGV4dERldiAhPT0gY29udGV4dCkge1xuICAgICAgICB0aGlzLl91bnByb2Nlc3NlZENvbnRleHREZXYgPSBjb250ZXh0O1xuICAgICAgICB0aGlzLl9wcm9jZXNzZWRDb250ZXh0RGV2ID0gcHJvY2Vzc0NoaWxkQ29udGV4dERldihjb250ZXh0LCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGNvbnRleHQgPSB0aGlzLl9wcm9jZXNzZWRDb250ZXh0RGV2O1xuICAgIH1cblxuICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgbnVsbCk7XG4gICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblxuICAgIGlmICghY2FuRGVmaW5lUHJvcGVydHkgJiYgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXMucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIC8vIDxzZWxlY3Q+IHZhbHVlIHVwZGF0ZSBuZWVkcyB0byBvY2N1ciBhZnRlciA8b3B0aW9uPiBjaGlsZHJlblxuICAgICAgLy8gcmVjb25jaWxpYXRpb25cbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIsIHRoaXMpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVjb25jaWxlcyB0aGUgcHJvcGVydGllcyBieSBkZXRlY3RpbmcgZGlmZmVyZW5jZXMgaW4gcHJvcGVydHkgdmFsdWVzIGFuZFxuICAgKiB1cGRhdGluZyB0aGUgRE9NIGFzIG5lY2Vzc2FyeS4gVGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgc2luZ2xlIG1vc3RcbiAgICogY3JpdGljYWwgcGF0aCBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgd2hldGhlciBjaGVja2luZyBmb3IgY2hhbmdlZCB2YWx1ZXMgaW4gbWVtb3J5IGFjdHVhbGx5XG4gICAqICAgICAgIGltcHJvdmVzIHBlcmZvcm1hbmNlIChlc3BlY2lhbGx5IHN0YXRpY2FsbHkgcG9zaXRpb25lZCBlbGVtZW50cykuXG4gICAqIFRPRE86IEJlbmNobWFyayB0aGUgZWZmZWN0cyBvZiBwdXR0aW5nIHRoaXMgYXQgdGhlIHRvcCBzaW5jZSA5OSUgb2YgcHJvcHNcbiAgICogICAgICAgZG8gbm90IGNoYW5nZSBmb3IgYSBnaXZlbiByZWNvbmNpbGlhdGlvbi5cbiAgICogVE9ETzogQmVuY2htYXJrIGFyZWFzIHRoYXQgY2FuIGJlIGltcHJvdmVkIHdpdGggY2FjaGluZy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZVxuICAgKi9cbiAgX3VwZGF0ZURPTVByb3BlcnRpZXM6IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIG5vZGUpIHtcbiAgICB2YXIgcHJvcEtleTtcbiAgICB2YXIgc3R5bGVOYW1lO1xuICAgIHZhciBzdHlsZVVwZGF0ZXM7XG4gICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykge1xuICAgICAgaWYgKG5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCAhbGFzdFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgIHZhciBsYXN0U3R5bGUgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weTtcbiAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFN0eWxlKSB7XG4gICAgICAgICAgaWYgKGxhc3RTdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG4gICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGlmIChsYXN0UHJvcHNbcHJvcEtleV0pIHtcbiAgICAgICAgICAvLyBPbmx5IGNhbGwgZGVsZXRlTGlzdGVuZXIgaWYgdGhlcmUgd2FzIGEgbGlzdGVuZXIgcHJldmlvdXNseSBvclxuICAgICAgICAgIC8vIGVsc2Ugd2lsbERlbGV0ZUxpc3RlbmVyIGdldHMgY2FsbGVkIHdoZW4gdGhlcmUgd2Fzbid0IGFjdHVhbGx5IGFcbiAgICAgICAgICAvLyBsaXN0ZW5lciAoZS5nLiwgb25DbGljaz17bnVsbH0pXG4gICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcy5fcm9vdE5vZGVJRCwgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgICB9XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHByb3BLZXkgaW4gbmV4dFByb3BzKSB7XG4gICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtleV07XG4gICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzW3Byb3BLZXldO1xuICAgICAgaWYgKCFuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbmV4dFByb3AgPT09IGxhc3RQcm9wKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUodGhpcy5fcHJldmlvdXNTdHlsZUNvcHksIHRoaXMuX3ByZXZpb3VzU3R5bGUsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG5leHRQcm9wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0UHJvcCA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gYXNzaWduKHt9LCBuZXh0UHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0UHJvcCkge1xuICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1dCBub3Qgb24gYG5leHRQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0UHJvcCkge1xuICAgICAgICAgICAgaWYgKGxhc3RQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgKCFuZXh0UHJvcCB8fCAhbmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkpIHtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdlZCBzaW5jZSBgbGFzdFByb3BgLlxuICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7XG4gICAgICAgICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiBsYXN0UHJvcFtzdHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSBuZXh0UHJvcFtzdHlsZU5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZWxpZXMgb24gYHVwZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5bGVVcGRhdGVzYC5cbiAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBuZXh0UHJvcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAobmV4dFByb3ApIHtcbiAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcy5fcm9vdE5vZGVJRCwgcHJvcEtleSwgbmV4dFByb3AsIHRyYW5zYWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkge1xuICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMuX3Jvb3ROb2RlSUQsIHByb3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wS2V5ID09PSBDSElMRFJFTikge1xuICAgICAgICAgIG5leHRQcm9wID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUobm9kZSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHByb3BlcnR5XG4gICAgICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGluc3RlYWQgb2YgaW5hZHZlcnRhbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzXG4gICAgICAgIC8vIGJyaW5ncyB1cyBpbiBsaW5lIHdpdGggdGhlIHNhbWUgYmVoYXZpb3Igd2UgaGF2ZSBvbiBpbml0aWFsIHJlbmRlci5cbiAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5LCBuZXh0UHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0eWxlVXBkYXRlcykge1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICB9XG4gICAgICBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JTdHlsZXMobm9kZSwgc3R5bGVVcGRhdGVzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFmZmVjdCB0aGVcbiAgICogY2hpbGRyZW4gY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICovXG4gIF91cGRhdGVET01DaGlsZHJlbjogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIGxhc3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgIHZhciBuZXh0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIG5leHRQcm9wcy5jaGlsZHJlbl0gPyBuZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXG4gICAgdmFyIGxhc3RIdG1sID0gbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG4gICAgdmFyIG5leHRIdG1sID0gbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG5cbiAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuICAgIHZhciBsYXN0Q2hpbGRyZW4gPSBsYXN0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IGxhc3RQcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgbmV4dENoaWxkcmVuID0gbmV4dENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBuZXh0UHJvcHMuY2hpbGRyZW47XG5cbiAgICAvLyBJZiB3ZSdyZSBzd2l0Y2hpbmcgZnJvbSBjaGlsZHJlbiB0byBjb250ZW50L2h0bWwgb3IgdmljZSB2ZXJzYSwgcmVtb3ZlXG4gICAgLy8gdGhlIG9sZCBjb250ZW50XG4gICAgdmFyIGxhc3RIYXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8fCBsYXN0SHRtbCAhPSBudWxsO1xuICAgIHZhciBuZXh0SGFzQ29udGVudE9ySHRtbCA9IG5leHRDb250ZW50ICE9IG51bGwgfHwgbmV4dEh0bWwgIT0gbnVsbDtcbiAgICBpZiAobGFzdENoaWxkcmVuICE9IG51bGwgJiYgbmV4dENoaWxkcmVuID09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAobGFzdEhhc0NvbnRlbnRPckh0bWwgJiYgIW5leHRIYXNDb250ZW50T3JIdG1sKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dENvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0Q29udGVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dEh0bWwgIT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RIdG1sICE9PSBuZXh0SHRtbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1hcmt1cCgnJyArIG5leHRIdG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRDaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIGV2ZW50IHJlZ2lzdHJhdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9tXG4gICAqIHRoZSBET00uIFRoYXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgY2FzZSAnaW1nJzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztcbiAgICAgICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnNbaV0ucmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBSZWFjdERPTUlucHV0LnVubW91bnRXcmFwcGVyKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbXBvbmVudHMgbGlrZSA8aHRtbD4gPGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZFxuICAgICAgICAgKiBlYXNpbHkgaW4gYSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZlciBpdCdzIHZhbHVhYmxlIHRvIGJlIGFibGUgdG9cbiAgICAgICAgICogdGFrZSBhZHZhbnRhZ2Ugb2YgUmVhY3QncyByZWNvbmNpbGlhdGlvbiBmb3Igc3R5bGluZyBhbmQgPHRpdGxlPlxuICAgICAgICAgKiBtYW5hZ2VtZW50LiBTbyB3ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMgY2FzZXMuXG4gICAgICAgICAqL1xuICAgICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50LiBCZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzICcgKyAnaW1wb3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxldmVsIGNvbXBvbmVudHMgKGVnIDxodG1sPiwgJyArICc8aGVhZD4sIGFuZCA8Ym9keT4pIHJlbGlhYmx5IGFuZCBlZmZpY2llbnRseS4gVG8gZml4IHRoaXMsIGhhdmUgYSAnICsgJ3NpbmdsZSB0b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlICcgKyAnZWxlbWVudHMuJywgdGhpcy5fdGFnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudW5tb3VudENoaWxkcmVuKCk7XG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDtcbiAgICBpZiAodGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgbm9kZSA9IHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcztcbiAgICAgIG5vZGUuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQgPSBudWxsO1xuICAgICAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzID0gbnVsbDtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcykge1xuICAgICAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG5cbiAgICAgIG5vZGUuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQgPSB0aGlzO1xuICAgICAgbm9kZS5nZXRET01Ob2RlID0gbGVnYWN5R2V0RE9NTm9kZTtcbiAgICAgIG5vZGUuaXNNb3VudGVkID0gbGVnYWN5SXNNb3VudGVkO1xuICAgICAgbm9kZS5zZXRTdGF0ZSA9IGxlZ2FjeVNldFN0YXRlRXRjO1xuICAgICAgbm9kZS5yZXBsYWNlU3RhdGUgPSBsZWdhY3lTZXRTdGF0ZUV0YztcbiAgICAgIG5vZGUuZm9yY2VVcGRhdGUgPSBsZWdhY3lTZXRTdGF0ZUV0YztcbiAgICAgIG5vZGUuc2V0UHJvcHMgPSBsZWdhY3lTZXRQcm9wcztcbiAgICAgIG5vZGUucmVwbGFjZVByb3BzID0gbGVnYWN5UmVwbGFjZVByb3BzO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhub2RlLCBsZWdhY3lQcm9wc0Rlc2NyaXB0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZUNvbXBvbmVudCB3aWxsIHVwZGF0ZSB0aGlzIHByb3BlcnR5IG9uIHN1YnNlcXVlbnQgcmVuZGVyc1xuICAgICAgICAgIG5vZGUucHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdXBkYXRlQ29tcG9uZW50IHdpbGwgdXBkYXRlIHRoaXMgcHJvcGVydHkgb24gc3Vic2VxdWVudCByZW5kZXJzXG4gICAgICAgIG5vZGUucHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzID0gbm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcztcbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoUmVhY3RET01Db21wb25lbnQsICdSZWFjdERPTUNvbXBvbmVudCcsIHtcbiAgbW91bnRDb21wb25lbnQ6ICdtb3VudENvbXBvbmVudCcsXG4gIHVwZGF0ZUNvbXBvbmVudDogJ3VwZGF0ZUNvbXBvbmVudCdcbn0pO1xuXG5hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJvdG90eXBlLCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmk4cUlHZHNiMkpoYkNCb1lYTlBkMjVRY205d1pYSjBlVHAwY25WbElDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFRjFkRzlHYjJOMWMxVjBhV3h6SUQwZ2NtVnhkV2x5WlNnbkxpOUJkWFJ2Um05amRYTlZkR2xzY3ljcE8xeHVkbUZ5SUVOVFUxQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5QTlJSEpsY1hWcGNtVW9KeTR2UTFOVFVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekp5azdYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIa2dQU0J5WlhGMWFYSmxLQ2N1TDBSUFRWQnliM0JsY25SNUp5azdYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpJRDBnY21WeGRXbHlaU2duTGk5RVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTW5LVHRjYm5aaGNpQkZkbVZ1ZEVOdmJuTjBZVzUwY3lBOUlISmxjWFZwY21Vb0p5NHZSWFpsYm5SRGIyNXpkR0Z1ZEhNbktUdGNiblpoY2lCU1pXRmpkRUp5YjNkelpYSkZkbVZ1ZEVWdGFYUjBaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2ljcE8xeHVkbUZ5SUZKbFlXTjBRMjl0Y0c5dVpXNTBRbkp2ZDNObGNrVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkRUp5YjNkelpYSkZiblpwY205dWJXVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFJFOU5RblYwZEc5dUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVUoxZEhSdmJpY3BPMXh1ZG1GeUlGSmxZV04wUkU5TlNXNXdkWFFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUkU5TlNXNXdkWFFuS1R0Y2JuWmhjaUJTWldGamRFUlBUVTl3ZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFQY0hScGIyNG5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRWTmxiR1ZqZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVQwMVRaV3hsWTNRbktUdGNiblpoY2lCU1pXRmpkRVJQVFZSbGVIUmhjbVZoSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSUFRWUmxlSFJoY21WaEp5azdYRzUyWVhJZ1VtVmhZM1JOYjNWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5iM1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBUWFZzZEdsRGFHbHNaQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOZFd4MGFVTm9hV3hrSnlrN1hHNTJZWElnVW1WaFkzUlFaWEptSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZCbGNtWW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlZGMVpYVmxKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmpZVzVFWldacGJtVlFjbTl3WlhKMGVTQTlJSEpsY1hWcGNtVW9KeTR2WTJGdVJHVm1hVzVsVUhKdmNHVnlkSGtuS1R0Y2JuWmhjaUJsYzJOaGNHVlVaWGgwUTI5dWRHVnVkRVp2Y2tKeWIzZHpaWElnUFNCeVpYRjFhWEpsS0NjdUwyVnpZMkZ3WlZSbGVIUkRiMjUwWlc1MFJtOXlRbkp2ZDNObGNpY3BPMXh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dWRtRnlJR2x6UlhabGJuUlRkWEJ3YjNKMFpXUWdQU0J5WlhGMWFYSmxLQ2N1TDJselJYWmxiblJUZFhCd2IzSjBaV1FuS1R0Y2JuWmhjaUJyWlhsUFppQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMnRsZVU5bUp5azdYRzUyWVhJZ2MyVjBTVzV1WlhKSVZFMU1JRDBnY21WeGRXbHlaU2duTGk5elpYUkpibTVsY2toVVRVd25LVHRjYm5aaGNpQnpaWFJVWlhoMFEyOXVkR1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZjMlYwVkdWNGRFTnZiblJsYm5RbktUdGNiblpoY2lCemFHRnNiRzkzUlhGMVlXd2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTl6YUdGc2JHOTNSWEYxWVd3bktUdGNiblpoY2lCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQnlaWEYxYVhKbEtDY3VMM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUJrWld4bGRHVk1hWE4wWlc1bGNpQTlJRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNWtaV3hsZEdWTWFYTjBaVzVsY2p0Y2JuWmhjaUJzYVhOMFpXNVVieUE5SUZKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaTVzYVhOMFpXNVVienRjYm5aaGNpQnlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsY3lBOUlGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjenRjYmx4dUx5OGdSbTl5SUhGMWFXTnJiSGtnYldGMFkyaHBibWNnWTJocGJHUnlaVzRnZEhsd1pTd2dkRzhnZEdWemRDQnBaaUJqWVc0Z1ltVWdkSEpsWVhSbFpDQmhjeUJqYjI1MFpXNTBMbHh1ZG1GeUlFTlBUbFJGVGxSZlZGbFFSVk1nUFNCN0lDZHpkSEpwYm1jbk9pQjBjblZsTENBbmJuVnRZbVZ5SnpvZ2RISjFaU0I5TzF4dVhHNTJZWElnUTBoSlRFUlNSVTRnUFNCclpYbFBaaWg3SUdOb2FXeGtjbVZ1T2lCdWRXeHNJSDBwTzF4dWRtRnlJRk5VV1V4RklEMGdhMlY1VDJZb2V5QnpkSGxzWlRvZ2JuVnNiQ0I5S1R0Y2JuWmhjaUJJVkUxTUlEMGdhMlY1VDJZb2V5QmZYMmgwYld3NklHNTFiR3dnZlNrN1hHNWNiblpoY2lCRlRFVk5SVTVVWDA1UFJFVmZWRmxRUlNBOUlERTdYRzVjYm1aMWJtTjBhVzl1SUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNocGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJR2xtSUNocGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJQ0FnZG1GeUlHOTNibVZ5SUQwZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1WDI5M2JtVnlJSHg4SUc1MWJHdzdYRzRnSUNBZ2FXWWdLRzkzYm1WeUtTQjdYRzRnSUNBZ0lDQjJZWElnYm1GdFpTQTlJRzkzYm1WeUxtZGxkRTVoYldVb0tUdGNiaUFnSUNBZ0lHbG1JQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQW5JRlJvYVhNZ1JFOU5JRzV2WkdVZ2QyRnpJSEpsYm1SbGNtVmtJR0o1SUdBbklDc2dibUZ0WlNBcklDZGdMaWM3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQW5KenRjYm4xY2JseHVkbUZ5SUd4bFoyRmplVkJ5YjNCelJHVnpZM0pwY0hSdmNqdGNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUd4bFoyRmplVkJ5YjNCelJHVnpZM0pwY0hSdmNpQTlJSHRjYmlBZ0lDQndjbTl3Y3pvZ2UxeHVJQ0FnSUNBZ1pXNTFiV1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNCblpYUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR052YlhCdmJtVnVkQ0E5SUhSb2FYTXVYM0psWVdOMFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5RN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5VbVZoWTNSRVQwMURiMjF3YjI1bGJuUTZJRVJ2SUc1dmRDQmhZMk5sYzNNZ0xuQnliM0J6SUc5bUlHRWdSRTlOSUc1dlpHVTdJR2x1YzNSbFlXUXNJQ2NnS3lBbmNtVmpjbVZoZEdVZ2RHaGxJSEJ5YjNCeklHRnpJR0J5Wlc1a1pYSmdJR1JwWkNCdmNtbG5hVzVoYkd4NUlHOXlJSEpsWVdRZ2RHaGxJRVJQVFNBbklDc2dKM0J5YjNCbGNuUnBaWE12WVhSMGNtbGlkWFJsY3lCa2FYSmxZM1JzZVNCbWNtOXRJSFJvYVhNZ2JtOWtaU0FvWlM1bkxpd2dKeUFySUNkMGFHbHpMbkpsWm5NdVltOTRMbU5zWVhOelRtRnRaU2t1SlhNbkxDQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9ZMjl0Y0c5dVpXNTBLU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamIyMXdiMjVsYm5RdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYkdWbllXTjVSMlYwUkU5TlRtOWtaU2dwSUh0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZjbVZoWTNSSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZER0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjFKbFlXTjBSRTlOUTI5dGNHOXVaVzUwT2lCRWJ5QnViM1FnWVdOalpYTnpJQzVuWlhSRVQwMU9iMlJsS0NrZ2IyWWdZU0JFVDAwZ2JtOWtaVHNnSnlBcklDZHBibk4wWldGa0xDQjFjMlVnZEdobElHNXZaR1VnWkdseVpXTjBiSGt1SlhNbkxDQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9ZMjl0Y0c5dVpXNTBLU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhSb2FYTTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHeGxaMkZqZVVselRXOTFiblJsWkNncElIdGNiaUFnZG1GeUlHTnZiWEJ2Ym1WdWRDQTlJSFJvYVhNdVgzSmxZV04wU1c1MFpYSnVZV3hEYjIxd2IyNWxiblE3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZERvZ1JHOGdibTkwSUdGalkyVnpjeUF1YVhOTmIzVnVkR1ZrS0NrZ2IyWWdZU0JFVDAwZ2JtOWtaUzRsY3ljc0lHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaGpiMjF3YjI1bGJuUXBLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnSVNGamIyMXdiMjVsYm5RN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUd4bFoyRmplVk5sZEZOMFlYUmxSWFJqS0NrZ2UxeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIWmhjaUJqYjIxd2IyNWxiblFnUFNCMGFHbHpMbDl5WldGamRFbHVkR1Z5Ym1Gc1EyOXRjRzl1Wlc1ME8xeHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblVtVmhZM1JFVDAxRGIyMXdiMjVsYm5RNklFUnZJRzV2ZENCaFkyTmxjM01nTG5ObGRGTjBZWFJsS0Nrc0lDNXlaWEJzWVdObFUzUmhkR1VvS1N3Z2IzSWdKeUFySUNjdVptOXlZMlZWY0dSaGRHVW9LU0J2WmlCaElFUlBUU0J1YjJSbExpQlVhR2x6SUdseklHRWdibTh0YjNBdUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnYkdWbllXTjVVMlYwVUhKdmNITW9jR0Z5ZEdsaGJGQnliM0J6TENCallXeHNZbUZqYXlrZ2UxeHVJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdkR2hwY3k1ZmNtVmhZM1JKYm5SbGNtNWhiRU52YlhCdmJtVnVkRHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjFKbFlXTjBSRTlOUTI5dGNHOXVaVzUwT2lCRWJ5QnViM1FnWVdOalpYTnpJQzV6WlhSUWNtOXdjeWdwSUc5bUlHRWdSRTlOSUc1dlpHVXVJQ2NnS3lBblNXNXpkR1ZoWkN3Z1kyRnNiQ0JTWldGamRFUlBUUzV5Wlc1a1pYSWdZV2RoYVc0Z1lYUWdkR2hsSUhSdmNDQnNaWFpsYkM0bGN5Y3NJR2RsZEVSbFkyeGhjbUYwYVc5dVJYSnliM0pCWkdSbGJtUjFiU2hqYjIxd2IyNWxiblFwS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dUlDQnBaaUFvSVdOdmJYQnZibVZ1ZENrZ2UxeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVJQ0JTWldGamRGVndaR0YwWlZGMVpYVmxMbVZ1Y1hWbGRXVlRaWFJRY205d2MwbHVkR1Z5Ym1Gc0tHTnZiWEJ2Ym1WdWRDd2djR0Z5ZEdsaGJGQnliM0J6S1R0Y2JpQWdhV1lnS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWUmRXVjFaUzVsYm5GMVpYVmxRMkZzYkdKaFkydEpiblJsY201aGJDaGpiMjF3YjI1bGJuUXNJR05oYkd4aVlXTnJLVHRjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCc1pXZGhZM2xTWlhCc1lXTmxVSEp2Y0hNb2NHRnlkR2xoYkZCeWIzQnpMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQjJZWElnWTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVmY21WaFkzUkpiblJsY201aGJFTnZiWEJ2Ym1WdWREdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMUpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBPaUJFYnlCdWIzUWdZV05qWlhOeklDNXlaWEJzWVdObFVISnZjSE1vS1NCdlppQmhJRVJQVFNCdWIyUmxMaUFuSUNzZ0owbHVjM1JsWVdRc0lHTmhiR3dnVW1WaFkzUkVUMDB1Y21WdVpHVnlJR0ZuWVdsdUlHRjBJSFJvWlNCMGIzQWdiR1YyWld3dUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdhV1lnS0NGamIyMXdiMjVsYm5RcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnVW1WaFkzUlZjR1JoZEdWUmRXVjFaUzVsYm5GMVpYVmxVbVZ3YkdGalpWQnliM0J6U1c1MFpYSnVZV3dvWTI5dGNHOXVaVzUwTENCd1lYSjBhV0ZzVUhKdmNITXBPMXh1SUNCcFppQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbExtVnVjWFZsZFdWRFlXeHNZbUZqYTBsdWRHVnlibUZzS0dOdmJYQnZibVZ1ZEN3Z1kyRnNiR0poWTJzcE8xeHVJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJR1p5YVdWdVpHeDVVM1J5YVc1bmFXWjVLRzlpYWlrZ2UxeHVJQ0JwWmlBb2RIbHdaVzltSUc5aWFpQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2h2WW1vcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0oxc25JQ3NnYjJKcUxtMWhjQ2htY21sbGJtUnNlVk4wY21sdVoybG1lU2t1YW05cGJpZ25MQ0FuS1NBcklDZGRKenRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJSEJoYVhKeklEMGdXMTA3WEc0Z0lDQWdJQ0JtYjNJZ0tIWmhjaUJyWlhrZ2FXNGdiMkpxS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYjJKcUxDQnJaWGtwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUd0bGVVVnpZMkZ3WldRZ1BTQXZYbHRoTFhva1gxMWJYRngzSkY5ZEtpUXZhUzUwWlhOMEtHdGxlU2tnUHlCclpYa2dPaUJLVTA5T0xuTjBjbWx1WjJsbWVTaHJaWGtwTzF4dUlDQWdJQ0FnSUNBZ0lIQmhhWEp6TG5CMWMyZ29hMlY1UlhOallYQmxaQ0FySUNjNklDY2dLeUJtY21sbGJtUnNlVk4wY21sdVoybG1lU2h2WW1wYmEyVjVYU2twTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnSjNzbklDc2djR0ZwY25NdWFtOXBiaWduTENBbktTQXJJQ2Q5Snp0Y2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHOWlhaUE5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNCeVpYUjFjbTRnU2xOUFRpNXpkSEpwYm1kcFpua29iMkpxS1R0Y2JpQWdmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdiMkpxSUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lDQWdjbVYwZFhKdUlDZGJablZ1WTNScGIyNGdiMkpxWldOMFhTYzdYRzRnSUgxY2JpQWdMeThnUkdsbVptVnljeUJtY205dElFcFRUMDR1YzNSeWFXNW5hV1o1SUdsdUlIUm9ZWFFnZFc1a1pXWnBibVZrSUdKbFkyRjFjMlZ6SUhWdVpHVm1hVzVsWkNCaGJtUWdkR2hoZEZ4dUlDQXZMeUJwYm1ZZ1lXNWtJRzVoYmlCa2IyNG5kQ0JpWldOdmJXVWdiblZzYkZ4dUlDQnlaWFIxY200Z1UzUnlhVzVuS0c5aWFpazdYRzU5WEc1Y2JuWmhjaUJ6ZEhsc1pVMTFkR0YwYVc5dVYyRnlibWx1WnlBOUlIdDlPMXh1WEc1bWRXNWpkR2x2YmlCamFHVmphMEZ1WkZkaGNtNUdiM0pOZFhSaGRHVmtVM1I1YkdVb2MzUjViR1V4TENCemRIbHNaVElzSUdOdmJYQnZibVZ1ZENrZ2UxeHVJQ0JwWmlBb2MzUjViR1V4SUQwOUlHNTFiR3dnZkh3Z2MzUjViR1V5SUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JpQWdhV1lnS0hOb1lXeHNiM2RGY1hWaGJDaHpkSGxzWlRFc0lITjBlV3hsTWlrcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNibHh1SUNCMllYSWdZMjl0Y0c5dVpXNTBUbUZ0WlNBOUlHTnZiWEJ2Ym1WdWRDNWZkR0ZuTzF4dUlDQjJZWElnYjNkdVpYSWdQU0JqYjIxd2IyNWxiblF1WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNqdGNiaUFnZG1GeUlHOTNibVZ5VG1GdFpUdGNiaUFnYVdZZ0tHOTNibVZ5S1NCN1hHNGdJQ0FnYjNkdVpYSk9ZVzFsSUQwZ2IzZHVaWEl1WjJWMFRtRnRaU2dwTzF4dUlDQjlYRzVjYmlBZ2RtRnlJR2hoYzJnZ1BTQnZkMjVsY2s1aGJXVWdLeUFuZkNjZ0t5QmpiMjF3YjI1bGJuUk9ZVzFsTzF4dVhHNGdJR2xtSUNoemRIbHNaVTExZEdGMGFXOXVWMkZ5Ym1sdVp5NW9ZWE5QZDI1UWNtOXdaWEowZVNob1lYTm9LU2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dVhHNGdJSE4wZVd4bFRYVjBZWFJwYjI1WFlYSnVhVzVuVzJoaGMyaGRJRDBnZEhKMVpUdGNibHh1SUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oyQWxjMkFnZDJGeklIQmhjM05sWkNCaElITjBlV3hsSUc5aWFtVmpkQ0IwYUdGMElHaGhjeUJ3Y21WMmFXOTFjMng1SUdKbFpXNGdiWFYwWVhSbFpDNGdKeUFySUNkTmRYUmhkR2x1WnlCZ2MzUjViR1ZnSUdseklHUmxjSEpsWTJGMFpXUXVJRU52Ym5OcFpHVnlJR05zYjI1cGJtY2dhWFFnWW1WbWIzSmxhR0Z1WkM0Z1EyaGxZMnNnSnlBcklDZDBhR1VnWUhKbGJtUmxjbUFnSlhNdUlGQnlaWFpwYjNWeklITjBlV3hsT2lBbGN5NGdUWFYwWVhSbFpDQnpkSGxzWlRvZ0pYTXVKeXdnWTI5dGNHOXVaVzUwVG1GdFpTd2diM2R1WlhJZ1B5QW5iMllnWUNjZ0t5QnZkMjVsY2s1aGJXVWdLeUFuWUNjZ09pQW5kWE5wYm1jZ1BDY2dLeUJqYjIxd2IyNWxiblJPWVcxbElDc2dKejRuTENCbWNtbGxibVJzZVZOMGNtbHVaMmxtZVNoemRIbHNaVEVwTENCbWNtbGxibVJzZVZOMGNtbHVaMmxtZVNoemRIbHNaVElwS1NBNklIVnVaR1ZtYVc1bFpEdGNibjFjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dGNHOXVaVzUwWEc0Z0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlIQnliM0J6WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0Z6YzJWeWRGWmhiR2xrVUhKdmNITW9ZMjl0Y0c5dVpXNTBMQ0J3Y205d2N5a2dlMXh1SUNCcFppQW9JWEJ5YjNCektTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzRnSUM4dklFNXZkR1VnZEdobElIVnpaU0J2WmlCZ1BUMWdJSGRvYVdOb0lHTm9aV05yY3lCbWIzSWdiblZzYkNCdmNpQjFibVJsWm1sdVpXUXVYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdhV1lnS0hadmFXUkZiR1Z0Wlc1MFZHRm5jMXRqYjIxd2IyNWxiblF1WDNSaFoxMHBJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hCeWIzQnpMbU5vYVd4a2NtVnVJRDA5SUc1MWJHd2dKaVlnY0hKdmNITXVaR0Z1WjJWeWIzVnpiSGxUWlhSSmJtNWxja2hVVFV3Z1BUMGdiblZzYkN3Z0p5VnpJR2x6SUdFZ2RtOXBaQ0JsYkdWdFpXNTBJSFJoWnlCaGJtUWdiWFZ6ZENCdWIzUWdhR0YyWlNCZ1kyaHBiR1J5Wlc1Z0lHOXlJQ2NnS3lBbmRYTmxJR0J3Y205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEdBdUpYTW5MQ0JqYjIxd2IyNWxiblF1WDNSaFp5d2dZMjl0Y0c5dVpXNTBMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJZ1B5QW5JRU5vWldOcklIUm9aU0J5Wlc1a1pYSWdiV1YwYUc5a0lHOW1JQ2NnS3lCamIyMXdiMjVsYm5RdVgyTjFjbkpsYm5SRmJHVnRaVzUwTGw5dmQyNWxjaTVuWlhST1lXMWxLQ2tnS3lBbkxpY2dPaUFuSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lHbG1JQ2h3Y205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVENBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSVNod2NtOXdjeTVqYUdsc1pISmxiaUE5UFNCdWRXeHNLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZERZVzRnYjI1c2VTQnpaWFFnYjI1bElHOW1JR0JqYUdsc1pISmxibUFnYjNJZ1lIQnliM0J6TG1SaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1ZQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lTaDBlWEJsYjJZZ2NISnZjSE11WkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVd2dQVDA5SUNkdlltcGxZM1FuSUNZbUlFaFVUVXdnYVc0Z2NISnZjSE11WkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVd3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyQndjbTl3Y3k1a1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UR0FnYlhWemRDQmlaU0JwYmlCMGFHVWdabTl5YlNCZ2UxOWZhSFJ0YkRvZ0xpNHVmV0F1SUNjZ0t5QW5VR3hsWVhObElIWnBjMmwwSUdoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGFXNTJZWEpwWVc1MExXUmhibWRsY205MWMyeDVMWE5sZEMxcGJtNWxjaTFvZEcxc0lDY2dLeUFuWm05eUlHMXZjbVVnYVc1bWIzSnRZWFJwYjI0dUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvY0hKdmNITXVhVzV1WlhKSVZFMU1JRDA5SUc1MWJHd3NJQ2RFYVhKbFkzUnNlU0J6WlhSMGFXNW5JSEJ5YjNCbGNuUjVJR0JwYm01bGNraFVUVXhnSUdseklHNXZkQ0J3WlhKdGFYUjBaV1F1SUNjZ0t5QW5SbTl5SUcxdmNtVWdhVzVtYjNKdFlYUnBiMjRzSUd4dmIydDFjQ0JrYjJOMWJXVnVkR0YwYVc5dUlHOXVJR0JrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRHQXVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lYQnliM0J6TG1OdmJuUmxiblJGWkdsMFlXSnNaU0I4ZkNCd2NtOXdjeTVqYUdsc1pISmxiaUE5UFNCdWRXeHNMQ0FuUVNCamIyMXdiMjVsYm5RZ2FYTWdZR052Ym5SbGJuUkZaR2wwWVdKc1pXQWdZVzVrSUdOdmJuUmhhVzV6SUdCamFHbHNaSEpsYm1BZ2JXRnVZV2RsWkNCaWVTQW5JQ3NnSjFKbFlXTjBMaUJKZENCcGN5QnViM2NnZVc5MWNpQnlaWE53YjI1emFXSnBiR2wwZVNCMGJ5Qm5kV0Z5WVc1MFpXVWdkR2hoZENCdWIyNWxJRzltSUNjZ0t5QW5kR2h2YzJVZ2JtOWtaWE1nWVhKbElIVnVaWGh3WldOMFpXUnNlU0J0YjJScFptbGxaQ0J2Y2lCa2RYQnNhV05oZEdWa0xpQlVhR2x6SUdseklDY2dLeUFuY0hKdlltRmliSGtnYm05MElHbHVkR1Z1ZEdsdmJtRnNMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc0Z0lDRW9jSEp2Y0hNdWMzUjViR1VnUFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnY0hKdmNITXVjM1I1YkdVZ1BUMDlJQ2R2WW1wbFkzUW5LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFVhR1VnWUhOMGVXeGxZQ0J3Y205d0lHVjRjR1ZqZEhNZ1lTQnRZWEJ3YVc1bklHWnliMjBnYzNSNWJHVWdjSEp2Y0dWeWRHbGxjeUIwYnlCMllXeDFaWE1zSUNjZ0t5QW5ibTkwSUdFZ2MzUnlhVzVuTGlCR2IzSWdaWGhoYlhCc1pTd2djM1I1YkdVOWUzdHRZWEpuYVc1U2FXZG9kRG9nYzNCaFkybHVaeUFySUZ4Y0oyVnRYRnduZlgwZ2QyaGxiaUFuSUNzZ0ozVnphVzVuSUVwVFdDNGxjeWNzSUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNoamIyMXdiMjVsYm5RcEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1OVhHNWNibVoxYm1OMGFXOXVJR1Z1Y1hWbGRXVlFkWFJNYVhOMFpXNWxjaWhwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z2JHbHpkR1Z1WlhJc0lIUnlZVzV6WVdOMGFXOXVLU0I3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnTHk4Z1NVVTRJR2hoY3lCdWJ5QkJVRWtnWm05eUlHVjJaVzUwSUdOaGNIUjFjbWx1WnlCaGJtUWdkR2hsSUdCdmJsTmpjbTlzYkdBZ1pYWmxiblFnWkc5bGMyNG5kRnh1SUNBZ0lDOHZJR0oxWW1Kc1pTNWNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aHlaV2RwYzNSeVlYUnBiMjVPWVcxbElDRTlQU0FuYjI1VFkzSnZiR3duSUh4OElHbHpSWFpsYm5SVGRYQndiM0owWldRb0ozTmpjbTlzYkNjc0lIUnlkV1VwTENBblZHaHBjeUJpY205M2MyVnlJR1J2WlhOdVhGd25kQ0J6ZFhCd2IzSjBJSFJvWlNCZ2IyNVRZM0p2Ykd4Z0lHVjJaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdkbUZ5SUdOdmJuUmhhVzVsY2lBOUlGSmxZV04wVFc5MWJuUXVabWx1WkZKbFlXTjBRMjl1ZEdGcGJtVnlSbTl5U1VRb2FXUXBPMXh1SUNCcFppQW9ZMjl1ZEdGcGJtVnlLU0I3WEc0Z0lDQWdkbUZ5SUdSdll5QTlJR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ1JVeEZUVVZPVkY5T1QwUkZYMVJaVUVVZ1B5QmpiMjUwWVdsdVpYSXViM2R1WlhKRWIyTjFiV1Z1ZENBNklHTnZiblJoYVc1bGNqdGNiaUFnSUNCc2FYTjBaVzVVYnloeVpXZHBjM1J5WVhScGIyNU9ZVzFsTENCa2IyTXBPMXh1SUNCOVhHNGdJSFJ5WVc1ellXTjBhVzl1TG1kbGRGSmxZV04wVFc5MWJuUlNaV0ZrZVNncExtVnVjWFZsZFdVb2NIVjBUR2x6ZEdWdVpYSXNJSHRjYmlBZ0lDQnBaRG9nYVdRc1hHNGdJQ0FnY21WbmFYTjBjbUYwYVc5dVRtRnRaVG9nY21WbmFYTjBjbUYwYVc5dVRtRnRaU3hjYmlBZ0lDQnNhWE4wWlc1bGNqb2diR2x6ZEdWdVpYSmNiaUFnZlNrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhCMWRFeHBjM1JsYm1WeUtDa2dlMXh1SUNCMllYSWdiR2x6ZEdWdVpYSlViMUIxZENBOUlIUm9hWE03WEc0Z0lGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1d2RYUk1hWE4wWlc1bGNpaHNhWE4wWlc1bGNsUnZVSFYwTG1sa0xDQnNhWE4wWlc1bGNsUnZVSFYwTG5KbFoybHpkSEpoZEdsdmJrNWhiV1VzSUd4cGMzUmxibVZ5Vkc5UWRYUXViR2x6ZEdWdVpYSXBPMXh1ZlZ4dVhHNHZMeUJVYUdWeVpTQmhjbVVnYzI4Z2JXRnVlU0J0WldScFlTQmxkbVZ1ZEhNc0lHbDBJRzFoYTJWeklITmxibk5sSUhSdklHcDFjM1JjYmk4dklHMWhhVzUwWVdsdUlHRWdiR2x6ZENCeVlYUm9aWElnZEdoaGJpQmpjbVZoZEdVZ1lTQmdkSEpoY0VKMVltSnNaV1JGZG1WdWRHQWdabTl5SUdWaFkyaGNiblpoY2lCdFpXUnBZVVYyWlc1MGN5QTlJSHRjYmlBZ2RHOXdRV0p2Y25RNklDZGhZbTl5ZENjc1hHNGdJSFJ2Y0VOaGJsQnNZWGs2SUNkallXNXdiR0Y1Snl4Y2JpQWdkRzl3UTJGdVVHeGhlVlJvY205MVoyZzZJQ2RqWVc1d2JHRjVkR2h5YjNWbmFDY3NYRzRnSUhSdmNFUjFjbUYwYVc5dVEyaGhibWRsT2lBblpIVnlZWFJwYjI1amFHRnVaMlVuTEZ4dUlDQjBiM0JGYlhCMGFXVmtPaUFuWlcxd2RHbGxaQ2NzWEc0Z0lIUnZjRVZ1WTNKNWNIUmxaRG9nSjJWdVkzSjVjSFJsWkNjc1hHNGdJSFJ2Y0VWdVpHVmtPaUFuWlc1a1pXUW5MRnh1SUNCMGIzQkZjbkp2Y2pvZ0oyVnljbTl5Snl4Y2JpQWdkRzl3VEc5aFpHVmtSR0YwWVRvZ0oyeHZZV1JsWkdSaGRHRW5MRnh1SUNCMGIzQk1iMkZrWldSTlpYUmhaR0YwWVRvZ0oyeHZZV1JsWkcxbGRHRmtZWFJoSnl4Y2JpQWdkRzl3VEc5aFpGTjBZWEowT2lBbmJHOWhaSE4wWVhKMEp5eGNiaUFnZEc5d1VHRjFjMlU2SUNkd1lYVnpaU2NzWEc0Z0lIUnZjRkJzWVhrNklDZHdiR0Y1Snl4Y2JpQWdkRzl3VUd4aGVXbHVaem9nSjNCc1lYbHBibWNuTEZ4dUlDQjBiM0JRY205bmNtVnpjem9nSjNCeWIyZHlaWE56Snl4Y2JpQWdkRzl3VW1GMFpVTm9ZVzVuWlRvZ0ozSmhkR1ZqYUdGdVoyVW5MRnh1SUNCMGIzQlRaV1ZyWldRNklDZHpaV1ZyWldRbkxGeHVJQ0IwYjNCVFpXVnJhVzVuT2lBbmMyVmxhMmx1Wnljc1hHNGdJSFJ2Y0ZOMFlXeHNaV1E2SUNkemRHRnNiR1ZrSnl4Y2JpQWdkRzl3VTNWemNHVnVaRG9nSjNOMWMzQmxibVFuTEZ4dUlDQjBiM0JVYVcxbFZYQmtZWFJsT2lBbmRHbHRaWFZ3WkdGMFpTY3NYRzRnSUhSdmNGWnZiSFZ0WlVOb1lXNW5aVG9nSjNadmJIVnRaV05vWVc1blpTY3NYRzRnSUhSdmNGZGhhWFJwYm1jNklDZDNZV2wwYVc1bkoxeHVmVHRjYmx4dVpuVnVZM1JwYjI0Z2RISmhjRUoxWW1Kc1pXUkZkbVZ1ZEhOTWIyTmhiQ2dwSUh0Y2JpQWdkbUZ5SUdsdWMzUWdQU0IwYUdsek8xeHVJQ0F2THlCSlppQmhJR052YlhCdmJtVnVkQ0J5Wlc1a1pYSnpJSFJ2SUc1MWJHd2diM0lnYVdZZ1lXNXZkR2hsY2lCamIyMXdiMjVsYm5RZ1ptRjBZV3h6SUdGdVpDQmpZWFZ6WlhOY2JpQWdMeThnZEdobElITjBZWFJsSUc5bUlIUm9aU0IwY21WbElIUnZJR0psSUdOdmNuSjFjSFJsWkN3Z1lHNXZaR1ZnSUdobGNtVWdZMkZ1SUdKbElHNTFiR3d1WEc0Z0lDRnBibk4wTGw5eWIyOTBUbTlrWlVsRUlEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjAxMWMzUWdZbVVnYlc5MWJuUmxaQ0IwYnlCMGNtRndJR1YyWlc1MGN5Y3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdkbUZ5SUc1dlpHVWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvYVc1emRDNWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDRnViMlJsSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKM1J5WVhCQ2RXSmliR1ZrUlhabGJuUW9MaTR1S1RvZ1VtVnhkV2x5WlhNZ2JtOWtaU0IwYnlCaVpTQnlaVzVrWlhKbFpDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnYzNkcGRHTm9JQ2hwYm5OMExsOTBZV2NwSUh0Y2JpQWdJQ0JqWVhObElDZHBabkpoYldVbk9seHVJQ0FnSUNBZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExteHBjM1JsYm1WeWN5QTlJRnRTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSXVkSEpoY0VKMVltSnNaV1JGZG1WdWRDaEZkbVZ1ZEVOdmJuTjBZVzUwY3k1MGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0V4dllXUXNJQ2RzYjJGa0p5d2dibTlrWlNsZE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmRtbGtaVzhuT2x4dUlDQWdJR05oYzJVZ0oyRjFaR2x2SnpwY2JseHVJQ0FnSUNBZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExteHBjM1JsYm1WeWN5QTlJRnRkTzF4dUlDQWdJQ0FnTHk4Z1kzSmxZWFJsSUd4cGMzUmxibVZ5SUdadmNpQmxZV05vSUcxbFpHbGhJR1YyWlc1MFhHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCbGRtVnVkQ0JwYmlCdFpXUnBZVVYyWlc1MGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXVmthV0ZGZG1WdWRITXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb1pYWmxiblFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbXhwYzNSbGJtVnljeTV3ZFhOb0tGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1MGNtRndRblZpWW14bFpFVjJaVzUwS0VWMlpXNTBRMjl1YzNSaGJuUnpMblJ2Y0V4bGRtVnNWSGx3WlhOYlpYWmxiblJkTENCdFpXUnBZVVYyWlc1MGMxdGxkbVZ1ZEYwc0lHNXZaR1VwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZHBiV2NuT2x4dUlDQWdJQ0FnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG14cGMzUmxibVZ5Y3lBOUlGdFNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJdWRISmhjRUoxWW1Kc1pXUkZkbVZ1ZENoRmRtVnVkRU52Ym5OMFlXNTBjeTUwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVZ5Y205eUxDQW5aWEp5YjNJbkxDQnViMlJsS1N3Z1VtVmhZM1JDY205M2MyVnlSWFpsYm5SRmJXbDBkR1Z5TG5SeVlYQkNkV0ppYkdWa1JYWmxiblFvUlhabGJuUkRiMjV6ZEdGdWRITXVkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQk1iMkZrTENBbmJHOWhaQ2NzSUc1dlpHVXBYVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMlp2Y20wbk9seHVJQ0FnSUNBZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExteHBjM1JsYm1WeWN5QTlJRnRTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSXVkSEpoY0VKMVltSnNaV1JGZG1WdWRDaEZkbVZ1ZEVOdmJuTjBZVzUwY3k1MGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZKbGMyVjBMQ0FuY21WelpYUW5MQ0J1YjJSbEtTd2dVbVZoWTNSQ2NtOTNjMlZ5UlhabGJuUkZiV2wwZEdWeUxuUnlZWEJDZFdKaWJHVmtSWFpsYm5Rb1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JUZFdKdGFYUXNJQ2R6ZFdKdGFYUW5MQ0J1YjJSbEtWMDdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnRiM1Z1ZEZKbFlXUjVTVzV3ZFhSWGNtRndjR1Z5S0NrZ2UxeHVJQ0JTWldGamRFUlBUVWx1Y0hWMExtMXZkVzUwVW1WaFpIbFhjbUZ3Y0dWeUtIUm9hWE1wTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJ3YjNOMFZYQmtZWFJsVTJWc1pXTjBWM0poY0hCbGNpZ3BJSHRjYmlBZ1VtVmhZM1JFVDAxVFpXeGxZM1F1Y0c5emRGVndaR0YwWlZkeVlYQndaWElvZEdocGN5azdYRzU5WEc1Y2JpOHZJRVp2Y2lCSVZFMU1MQ0JqWlhKMFlXbHVJSFJoWjNNZ2MyaHZkV3hrSUc5dGFYUWdkR2hsYVhJZ1kyeHZjMlVnZEdGbkxpQlhaU0JyWldWd0lHRWdkMmhwZEdWc2FYTjBJR1p2Y2x4dUx5OGdkR2h2YzJVZ2MzQmxZMmxoYkNCallYTmxaQ0IwWVdkekxseHVYRzUyWVhJZ2IyMXBkSFJsWkVOc2IzTmxWR0ZuY3lBOUlIdGNiaUFnSjJGeVpXRW5PaUIwY25WbExGeHVJQ0FuWW1GelpTYzZJSFJ5ZFdVc1hHNGdJQ2RpY2ljNklIUnlkV1VzWEc0Z0lDZGpiMnduT2lCMGNuVmxMRnh1SUNBblpXMWlaV1FuT2lCMGNuVmxMRnh1SUNBbmFISW5PaUIwY25WbExGeHVJQ0FuYVcxbkp6b2dkSEoxWlN4Y2JpQWdKMmx1Y0hWMEp6b2dkSEoxWlN4Y2JpQWdKMnRsZVdkbGJpYzZJSFJ5ZFdVc1hHNGdJQ2RzYVc1ckp6b2dkSEoxWlN4Y2JpQWdKMjFsZEdFbk9pQjBjblZsTEZ4dUlDQW5jR0Z5WVcwbk9pQjBjblZsTEZ4dUlDQW5jMjkxY21ObEp6b2dkSEoxWlN4Y2JpQWdKM1J5WVdOckp6b2dkSEoxWlN4Y2JpQWdKM2RpY2ljNklIUnlkV1ZjYm4wN1hHNWNiaTh2SUU1UFZFVTZJRzFsYm5WcGRHVnRKM01nWTJ4dmMyVWdkR0ZuSUhOb2IzVnNaQ0JpWlNCdmJXbDBkR1ZrTENCaWRYUWdkR2hoZENCallYVnpaWE1nY0hKdllteGxiWE11WEc1MllYSWdibVYzYkdsdVpVVmhkR2x1WjFSaFozTWdQU0I3WEc0Z0lDZHNhWE4wYVc1bkp6b2dkSEoxWlN4Y2JpQWdKM0J5WlNjNklIUnlkV1VzWEc0Z0lDZDBaWGgwWVhKbFlTYzZJSFJ5ZFdWY2JuMDdYRzVjYmk4dklFWnZjaUJJVkUxTUxDQmpaWEowWVdsdUlIUmhaM01nWTJGdWJtOTBJR2hoZG1VZ1kyaHBiR1J5Wlc0dUlGUm9hWE1nYUdGeklIUm9aU0J6WVcxbElIQjFjbkJ2YzJVZ1lYTmNiaTh2SUdCdmJXbDBkR1ZrUTJ4dmMyVlVZV2R6WUNCbGVHTmxjSFFnZEdoaGRDQmdiV1Z1ZFdsMFpXMWdJSE5vYjNWc1pDQnpkR2xzYkNCb1lYWmxJR2wwY3lCamJHOXphVzVuSUhSaFp5NWNibHh1ZG1GeUlIWnZhV1JGYkdWdFpXNTBWR0ZuY3lBOUlHRnpjMmxuYmloN1hHNGdJQ2R0Wlc1MWFYUmxiU2M2SUhSeWRXVmNibjBzSUc5dGFYUjBaV1JEYkc5elpWUmhaM01wTzF4dVhHNHZMeUJYWlNCaFkyTmxjSFFnWVc1NUlIUmhaeUIwYnlCaVpTQnlaVzVrWlhKbFpDQmlkWFFnYzJsdVkyVWdkR2hwY3lCblpYUnpJR2x1YW1WamRHVmtJR2x1ZEc4Z1lYSmlhWFJ5WVhKNVhHNHZMeUJJVkUxTUxDQjNaU0IzWVc1MElIUnZJRzFoYTJVZ2MzVnlaU0IwYUdGMElHbDBKM01nWVNCellXWmxJSFJoWnk1Y2JpOHZJR2gwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMVJTTDFKRlF5MTRiV3d2STA1VUxVNWhiV1ZjYmx4dWRtRnlJRlpCVEVsRVgxUkJSMTlTUlVkRldDQTlJQzllVzJFdGVrRXRXbDFiWVMxNlFTMWFPbDljWEM1Y1hDMWNYR1JkS2lRdk95QXZMeUJUYVcxd2JHbG1hV1ZrSUhOMVluTmxkRnh1ZG1GeUlIWmhiR2xrWVhSbFpGUmhaME5oWTJobElEMGdlMzA3WEc1MllYSWdhR0Z6VDNkdVVISnZjR1Z5ZEhrZ1BTQW9lMzBwTG1oaGMwOTNibEJ5YjNCbGNuUjVPMXh1WEc1bWRXNWpkR2x2YmlCMllXeHBaR0YwWlVSaGJtZGxjbTkxYzFSaFp5aDBZV2NwSUh0Y2JpQWdhV1lnS0NGb1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tIWmhiR2xrWVhSbFpGUmhaME5oWTJobExDQjBZV2NwS1NCN1hHNGdJQ0FnSVZaQlRFbEVYMVJCUjE5U1JVZEZXQzUwWlhOMEtIUmhaeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5TVzUyWVd4cFpDQjBZV2M2SUNWekp5d2dkR0ZuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RtRnNhV1JoZEdWa1ZHRm5RMkZqYUdWYmRHRm5YU0E5SUhSeWRXVTdYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnY0hKdlkyVnpjME5vYVd4a1EyOXVkR1Y0ZEVSbGRpaGpiMjUwWlhoMExDQnBibk4wS1NCN1hHNGdJQzh2SUZCaGMzTWdaRzkzYmlCdmRYSWdkR0ZuSUc1aGJXVWdkRzhnWTJocGJHUWdZMjl0Y0c5dVpXNTBjeUJtYjNJZ2RtRnNhV1JoZEdsdmJpQndkWEp3YjNObGMxeHVJQ0JqYjI1MFpYaDBJRDBnWVhOemFXZHVLSHQ5TENCamIyNTBaWGgwS1R0Y2JpQWdkbUZ5SUdsdVptOGdQU0JqYjI1MFpYaDBXM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeTVoYm1ObGMzUnZja2x1Wm05RGIyNTBaWGgwUzJWNVhUdGNiaUFnWTI5dWRHVjRkRnQyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1WVc1alpYTjBiM0pKYm1adlEyOXVkR1Y0ZEV0bGVWMGdQU0IyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1ZFhCa1lYUmxaRUZ1WTJWemRHOXlTVzVtYnlocGJtWnZMQ0JwYm5OMExsOTBZV2NzSUdsdWMzUXBPMXh1SUNCeVpYUjFjbTRnWTI5dWRHVjRkRHRjYm4xY2JseHVablZ1WTNScGIyNGdhWE5EZFhOMGIyMURiMjF3YjI1bGJuUW9kR0ZuVG1GdFpTd2djSEp2Y0hNcElIdGNiaUFnY21WMGRYSnVJSFJoWjA1aGJXVXVhVzVrWlhoUFppZ25MU2NwSUQ0OUlEQWdmSHdnY0hKdmNITXVhWE1nSVQwZ2JuVnNiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdibVYzSUZKbFlXTjBJR05zWVhOeklIUm9ZWFFnYVhNZ2FXUmxiWEJ2ZEdWdWRDQmhibVFnWTJGd1lXSnNaU0J2WmlCamIyNTBZV2x1YVc1bklHOTBhR1Z5WEc0Z0tpQlNaV0ZqZENCamIyMXdiMjVsYm5SekxpQkpkQ0JoWTJObGNIUnpJR1YyWlc1MElHeHBjM1JsYm1WeWN5QmhibVFnUkU5TklIQnliM0JsY25ScFpYTWdkR2hoZENCaGNtVmNiaUFxSUhaaGJHbGtJR0ZqWTI5eVpHbHVaeUIwYnlCZ1JFOU5VSEp2Y0dWeWRIbGdMbHh1SUNwY2JpQXFJQ0F0SUVWMlpXNTBJR3hwYzNSbGJtVnljem9nWUc5dVEyeHBZMnRnTENCZ2IyNU5iM1Z6WlVSdmQyNWdMQ0JsZEdNdVhHNGdLaUFnTFNCRVQwMGdjSEp2Y0dWeWRHbGxjem9nWUdOc1lYTnpUbUZ0WldBc0lHQnVZVzFsWUN3Z1lIUnBkR3hsWUN3Z1pYUmpMbHh1SUNwY2JpQXFJRlJvWlNCZ2MzUjViR1ZnSUhCeWIzQmxjblI1SUdaMWJtTjBhVzl1Y3lCa2FXWm1aWEpsYm5Sc2VTQm1jbTl0SUhSb1pTQkVUMDBnUVZCSkxpQkpkQ0JoWTJObGNIUnpJR0Z1WEc0Z0tpQnZZbXBsWTNRZ2JXRndjR2x1WnlCdlppQnpkSGxzWlNCd2NtOXdaWEowYVdWeklIUnZJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFZMjl1YzNSeWRXTjBiM0lnVW1WaFkzUkVUMDFEYjIxd2IyNWxiblJjYmlBcUlFQmxlSFJsYm1SeklGSmxZV04wVFhWc2RHbERhR2xzWkZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJTWldGamRFUlBUVU52YlhCdmJtVnVkQ2gwWVdjcElIdGNiaUFnZG1Gc2FXUmhkR1ZFWVc1blpYSnZkWE5VWVdjb2RHRm5LVHRjYmlBZ2RHaHBjeTVmZEdGbklEMGdkR0ZuTG5SdlRHOTNaWEpEWVhObEtDazdYRzRnSUhSb2FYTXVYM0psYm1SbGNtVmtRMmhwYkdSeVpXNGdQU0J1ZFd4c08xeHVJQ0IwYUdsekxsOXdjbVYyYVc5MWMxTjBlV3hsSUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pVTnZjSGtnUFNCdWRXeHNPMXh1SUNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFSUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbElEMGdiblZzYkR0Y2JpQWdkR2hwY3k1ZmRHOXdUR1YyWld4WGNtRndjR1Z5SUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpJRDBnYm5Wc2JEdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQjBhR2x6TGw5MWJuQnliMk5sYzNObFpFTnZiblJsZUhSRVpYWWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYM0J5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFlnUFNCdWRXeHNPMXh1SUNCOVhHNTlYRzVjYmxKbFlXTjBSRTlOUTI5dGNHOXVaVzUwTG1ScGMzQnNZWGxPWVcxbElEMGdKMUpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBKenRjYmx4dVVtVmhZM1JFVDAxRGIyMXdiMjVsYm5RdVRXbDRhVzRnUFNCN1hHNWNiaUFnWTI5dWMzUnlkV04wT2lCbWRXNWpkR2x2YmlBb1pXeGxiV1Z1ZENrZ2UxeHVJQ0FnSUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MElEMGdaV3hsYldWdWREdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWdVpYSmhkR1Z6SUhKdmIzUWdkR0ZuSUcxaGNtdDFjQ0IwYUdWdUlISmxZM1Z5YzJWekxpQlVhR2x6SUcxbGRHaHZaQ0JvWVhNZ2MybGtaU0JsWm1abFkzUnpJR0Z1WkZ4dUlDQWdLaUJwY3lCdWIzUWdhV1JsYlhCdmRHVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5YjI5MFNVUWdWR2hsSUhKdmIzUWdSRTlOSUVsRUlHWnZjaUIwYUdseklHNXZaR1V1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJueFNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dWRHVjRkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlGUm9aU0JqYjIxd2RYUmxaQ0J0WVhKcmRYQXVYRzRnSUNBcUwxeHVJQ0J0YjNWdWRFTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLSEp2YjNSSlJDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IwYUdsekxsOXliMjkwVG05a1pVbEVJRDBnY205dmRFbEVPMXh1WEc0Z0lDQWdkbUZ5SUhCeWIzQnpJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWNISnZjSE03WEc1Y2JpQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdVgzUmhaeWtnZTF4dUlDQWdJQ0FnWTJGelpTQW5hV1p5WVcxbEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJsdFp5YzZYRzRnSUNBZ0lDQmpZWE5sSUNkbWIzSnRKenBjYmlBZ0lDQWdJR05oYzJVZ0ozWnBaR1Z2SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMkYxWkdsdkp6cGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmQzSmhjSEJsY2xOMFlYUmxJRDBnZTF4dUlDQWdJQ0FnSUNBZ0lHeHBjM1JsYm1WeWN6b2diblZzYkZ4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQjBjbUZ1YzJGamRHbHZiaTVuWlhSU1pXRmpkRTF2ZFc1MFVtVmhaSGtvS1M1bGJuRjFaWFZsS0hSeVlYQkNkV0ppYkdWa1JYWmxiblJ6VEc5allXd3NJSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKMkoxZEhSdmJpYzZYRzRnSUNBZ0lDQWdJSEJ5YjNCeklEMGdVbVZoWTNSRVQwMUNkWFIwYjI0dVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKMmx1Y0hWMEp6cGNiaUFnSUNBZ0lDQWdVbVZoWTNSRVQwMUpibkIxZEM1dGIzVnVkRmR5WVhCd1pYSW9kR2hwY3l3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCd2NtOXdjeUE5SUZKbFlXTjBSRTlOU1c1d2RYUXVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjI5d2RHbHZiaWM2WEc0Z0lDQWdJQ0FnSUZKbFlXTjBSRTlOVDNCMGFXOXVMbTF2ZFc1MFYzSmhjSEJsY2loMGFHbHpMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJSEJ5YjNCeklEMGdVbVZoWTNSRVQwMVBjSFJwYjI0dVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKM05sYkdWamRDYzZYRzRnSUNBZ0lDQWdJRkpsWVdOMFJFOU5VMlZzWldOMExtMXZkVzUwVjNKaGNIQmxjaWgwYUdsekxDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lIQnliM0J6SUQwZ1VtVmhZM1JFVDAxVFpXeGxZM1F1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCamIyNTBaWGgwSUQwZ1VtVmhZM1JFVDAxVFpXeGxZM1F1Y0hKdlkyVnpjME5vYVd4a1EyOXVkR1Y0ZENoMGFHbHpMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0FuZEdWNGRHRnlaV0VuT2x4dUlDQWdJQ0FnSUNCU1pXRmpkRVJQVFZSbGVIUmhjbVZoTG0xdmRXNTBWM0poY0hCbGNpaDBhR2x6TENCd2NtOXdjeXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUhCeWIzQnpJRDBnVW1WaFkzUkVUMDFVWlhoMFlYSmxZUzVuWlhST1lYUnBkbVZRY205d2N5aDBhR2x6TENCd2NtOXdjeXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHRnpjMlZ5ZEZaaGJHbGtVSEp2Y0hNb2RHaHBjeXdnY0hKdmNITXBPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCcFppQW9ZMjl1ZEdWNGRGdDJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VZVzVqWlhOMGIzSkpibVp2UTI5dWRHVjRkRXRsZVYwcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5LSFJvYVhNdVgzUmhaeXdnZEdocGN5d2dZMjl1ZEdWNGRGdDJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VZVzVqWlhOMGIzSkpibVp2UTI5dWRHVjRkRXRsZVYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOTFibkJ5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFlnUFNCamIyNTBaWGgwTzF4dUlDQWdJQ0FnZEdocGN5NWZjSEp2WTJWemMyVmtRMjl1ZEdWNGRFUmxkaUE5SUhCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhSRVpYWW9ZMjl1ZEdWNGRDd2dkR2hwY3lrN1hHNGdJQ0FnSUNCamIyNTBaWGgwSUQwZ2RHaHBjeTVmY0hKdlkyVnpjMlZrUTI5dWRHVjRkRVJsZGp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2JXOTFiblJKYldGblpUdGNiaUFnSUNCcFppQW9kSEpoYm5OaFkzUnBiMjR1ZFhObFEzSmxZWFJsUld4bGJXVnVkQ2tnZTF4dUlDQWdJQ0FnZG1GeUlHOTNibVZ5Ukc5amRXMWxiblFnUFNCamIyNTBaWGgwVzFKbFlXTjBUVzkxYm5RdWIzZHVaWEpFYjJOMWJXVnVkRU52Ym5SbGVIUkxaWGxkTzF4dUlDQWdJQ0FnZG1GeUlHVnNJRDBnYjNkdVpYSkViMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0hSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuUjVjR1VwTzF4dUlDQWdJQ0FnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekxuTmxkRUYwZEhKcFluVjBaVVp2Y2tsRUtHVnNMQ0IwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ0lDQWdJQzh2SUZCdmNIVnNZWFJsSUc1dlpHVWdZMkZqYUdWY2JpQWdJQ0FnSUZKbFlXTjBUVzkxYm5RdVoyVjBTVVFvWld3cE8xeHVJQ0FnSUNBZ2RHaHBjeTVmZFhCa1lYUmxSRTlOVUhKdmNHVnlkR2xsY3loN2ZTd2djSEp2Y0hNc0lIUnlZVzV6WVdOMGFXOXVMQ0JsYkNrN1hHNGdJQ0FnSUNCMGFHbHpMbDlqY21WaGRHVkpibWwwYVdGc1EyaHBiR1J5Wlc0b2RISmhibk5oWTNScGIyNHNJSEJ5YjNCekxDQmpiMjUwWlhoMExDQmxiQ2s3WEc0Z0lDQWdJQ0J0YjNWdWRFbHRZV2RsSUQwZ1pXdzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhaaGNpQjBZV2RQY0dWdUlEMGdkR2hwY3k1ZlkzSmxZWFJsVDNCbGJsUmhaMDFoY210MWNFRnVaRkIxZEV4cGMzUmxibVZ5Y3loMGNtRnVjMkZqZEdsdmJpd2djSEp2Y0hNcE8xeHVJQ0FnSUNBZ2RtRnlJSFJoWjBOdmJuUmxiblFnUFNCMGFHbHpMbDlqY21WaGRHVkRiMjUwWlc1MFRXRnlhM1Z3S0hSeVlXNXpZV04wYVc5dUxDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNCcFppQW9JWFJoWjBOdmJuUmxiblFnSmlZZ2IyMXBkSFJsWkVOc2IzTmxWR0ZuYzF0MGFHbHpMbDkwWVdkZEtTQjdYRzRnSUNBZ0lDQWdJRzF2ZFc1MFNXMWhaMlVnUFNCMFlXZFBjR1Z1SUNzZ0p5OCtKenRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRzF2ZFc1MFNXMWhaMlVnUFNCMFlXZFBjR1Z1SUNzZ0p6NG5JQ3NnZEdGblEyOXVkR1Z1ZENBcklDYzhMeWNnS3lCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNTBlWEJsSUNzZ0p6NG5PMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lITjNhWFJqYUNBb2RHaHBjeTVmZEdGbktTQjdYRzRnSUNBZ0lDQmpZWE5sSUNkcGJuQjFkQ2M2WEc0Z0lDQWdJQ0FnSUhSeVlXNXpZV04wYVc5dUxtZGxkRkpsWVdOMFRXOTFiblJTWldGa2VTZ3BMbVZ1Y1hWbGRXVW9iVzkxYm5SU1pXRmtlVWx1Y0hWMFYzSmhjSEJsY2l3Z2RHaHBjeWs3WEc0Z0lDQWdJQ0F2THlCbVlXeHNjeUIwYUhKdmRXZG9YRzRnSUNBZ0lDQmpZWE5sSUNkaWRYUjBiMjRuT2x4dUlDQWdJQ0FnWTJGelpTQW5jMlZzWldOMEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjNSbGVIUmhjbVZoSnpwY2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YjNCekxtRjFkRzlHYjJOMWN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhSeVlXNXpZV04wYVc5dUxtZGxkRkpsWVdOMFRXOTFiblJTWldGa2VTZ3BMbVZ1Y1hWbGRXVW9RWFYwYjBadlkzVnpWWFJwYkhNdVptOWpkWE5FVDAxRGIyMXdiMjVsYm5Rc0lIUm9hWE1wTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnRiM1Z1ZEVsdFlXZGxPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUcxaGNtdDFjQ0JtYjNJZ2RHaGxJRzl3Wlc0Z2RHRm5JR0Z1WkNCaGJHd2dZWFIwY21saWRYUmxjeTVjYmlBZ0lDcGNiaUFnSUNvZ1ZHaHBjeUJ0WlhSb2IyUWdhR0Z6SUhOcFpHVWdaV1ptWldOMGN5QmlaV05oZFhObElHVjJaVzUwY3lCblpYUWdjbVZuYVhOMFpYSmxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1NYUmxjbUYwYVc1bklHOTJaWElnYjJKcVpXTjBJSEJ5YjNCbGNuUnBaWE1nYVhNZ1ptRnpkR1Z5SUhSb1lXNGdhWFJsY21GMGFXNW5JRzkyWlhJZ1lYSnlZWGx6TGx4dUlDQWdLaUJBYzJWbElHaDBkSEE2THk5cWMzQmxjbVl1WTI5dEwyOWlhaTEyY3kxaGNuSXRhWFJsY21GMGFXOXVYRzRnSUNBcVhHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJueFNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0hKdmNITmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCTllYSnJkWEFnYjJZZ2IzQmxibWx1WnlCMFlXY3VYRzRnSUNBcUwxeHVJQ0JmWTNKbFlYUmxUM0JsYmxSaFowMWhjbXQxY0VGdVpGQjFkRXhwYzNSbGJtVnljem9nWm5WdVkzUnBiMjRnS0hSeVlXNXpZV04wYVc5dUxDQndjbTl3Y3lrZ2UxeHVJQ0FnSUhaaGNpQnlaWFFnUFNBblBDY2dLeUIwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1MGVYQmxPMXh1WEc0Z0lDQWdabTl5SUNoMllYSWdjSEp2Y0V0bGVTQnBiaUJ3Y205d2N5a2dlMXh1SUNBZ0lDQWdhV1lnS0NGd2NtOXdjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3UzJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFpoY2lCd2NtOXdWbUZzZFdVZ1BTQndjbTl3YzF0d2NtOXdTMlY1WFR0Y2JpQWdJQ0FnSUdsbUlDaHdjbTl3Vm1Gc2RXVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoeVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3UzJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2NISnZjRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWlc1eGRXVjFaVkIxZEV4cGMzUmxibVZ5S0hSb2FYTXVYM0p2YjNST2IyUmxTVVFzSUhCeWIzQkxaWGtzSUhCeWIzQldZV3gxWlN3Z2RISmhibk5oWTNScGIyNHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JwWmlBb2NISnZjRXRsZVNBOVBUMGdVMVJaVEVVcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISnZjRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCVFpXVWdZRjkxY0dSaGRHVkVUMDFRY205d1pYSjBhV1Z6WUM0Z2MzUjViR1VnWW14dlkydGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pTQTlJSEJ5YjNCV1lXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhCeWIzQldZV3gxWlNBOUlIUm9hWE11WDNCeVpYWnBiM1Z6VTNSNWJHVkRiM0I1SUQwZ1lYTnphV2R1S0h0OUxDQndjbTl3Y3k1emRIbHNaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEJ5YjNCV1lXeDFaU0E5SUVOVFUxQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NWpjbVZoZEdWTllYSnJkWEJHYjNKVGRIbHNaWE1vY0hKdmNGWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjJZWElnYldGeWEzVndJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVYM1JoWnlBaFBTQnVkV3hzSUNZbUlHbHpRM1Z6ZEc5dFEyOXRjRzl1Wlc1MEtIUm9hWE11WDNSaFp5d2djSEp2Y0hNcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tIQnliM0JMWlhrZ0lUMDlJRU5JU1V4RVVrVk9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRZWEpyZFhBZ1BTQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11WTNKbFlYUmxUV0Z5YTNWd1JtOXlRM1Z6ZEc5dFFYUjBjbWxpZFhSbEtIQnliM0JMWlhrc0lIQnliM0JXWVd4MVpTazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHMWhjbXQxY0NBOUlFUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeTVqY21WaGRHVk5ZWEpyZFhCR2IzSlFjbTl3WlhKMGVTaHdjbTl3UzJWNUxDQndjbTl3Vm1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaHRZWEpyZFhBcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhRZ0t6MGdKeUFuSUNzZ2JXRnlhM1Z3TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1JtOXlJSE4wWVhScFl5QndZV2RsY3l3Z2JtOGdibVZsWkNCMGJ5QndkWFFnVW1WaFkzUWdTVVFnWVc1a0lHTm9aV05yYzNWdExpQlRZWFpsY3lCc2IzUnpJRzltWEc0Z0lDQWdMeThnWW5sMFpYTXVYRzRnSUNBZ2FXWWdLSFJ5WVc1ellXTjBhVzl1TG5KbGJtUmxjbFJ2VTNSaGRHbGpUV0Z5YTNWd0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ0WVhKcmRYQkdiM0pKUkNBOUlFUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeTVqY21WaGRHVk5ZWEpyZFhCR2IzSkpSQ2gwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ0lDQnlaWFIxY200Z2NtVjBJQ3NnSnlBbklDc2diV0Z5YTNWd1JtOXlTVVE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ2JXRnlhM1Z3SUdadmNpQjBhR1VnWTI5dWRHVnVkQ0JpWlhSM1pXVnVJSFJvWlNCMFlXZHpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNThVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWRVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCeWIzQnpYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCamIyNTBaWGgwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdRMjl1ZEdWdWRDQnRZWEpyZFhBdVhHNGdJQ0FxTDF4dUlDQmZZM0psWVhSbFEyOXVkR1Z1ZEUxaGNtdDFjRG9nWm5WdVkzUnBiMjRnS0hSeVlXNXpZV04wYVc5dUxDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQnlaWFFnUFNBbkp6dGNibHh1SUNBZ0lDOHZJRWx1ZEdWdWRHbHZibUZzSUhWelpTQnZaaUFoUFNCMGJ5QmhkbTlwWkNCallYUmphR2x1WnlCNlpYSnZMMlpoYkhObExseHVJQ0FnSUhaaGNpQnBibTVsY2toVVRVd2dQU0J3Y205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVER0Y2JpQWdJQ0JwWmlBb2FXNXVaWEpJVkUxTUlDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHbG1JQ2hwYm01bGNraFVUVXd1WDE5b2RHMXNJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnY21WMElEMGdhVzV1WlhKSVZFMU1MbDlmYUhSdGJEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZG1GeUlHTnZiblJsYm5SVWIxVnpaU0E5SUVOUFRsUkZUbFJmVkZsUVJWTmJkSGx3Wlc5bUlIQnliM0J6TG1Ob2FXeGtjbVZ1WFNBL0lIQnliM0J6TG1Ob2FXeGtjbVZ1SURvZ2JuVnNiRHRjYmlBZ0lDQWdJSFpoY2lCamFHbHNaSEpsYmxSdlZYTmxJRDBnWTI5dWRHVnVkRlJ2VlhObElDRTlJRzUxYkd3Z1B5QnVkV3hzSURvZ2NISnZjSE11WTJocGJHUnlaVzQ3WEc0Z0lDQWdJQ0JwWmlBb1kyOXVkR1Z1ZEZSdlZYTmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1ZFOUVUem9nVm1Gc2FXUmhkR1VnZEdoaGRDQjBaWGgwSUdseklHRnNiRzkzWldRZ1lYTWdZU0JqYUdsc1pDQnZaaUIwYUdseklHNXZaR1ZjYmlBZ0lDQWdJQ0FnY21WMElEMGdaWE5qWVhCbFZHVjRkRU52Ym5SbGJuUkdiM0pDY205M2MyVnlLR052Ym5SbGJuUlViMVZ6WlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHTm9hV3hrY21WdVZHOVZjMlVnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdiVzkxYm5SSmJXRm5aWE1nUFNCMGFHbHpMbTF2ZFc1MFEyaHBiR1J5Wlc0b1kyaHBiR1J5Wlc1VWIxVnpaU3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQnlaWFFnUFNCdGIzVnVkRWx0WVdkbGN5NXFiMmx1S0NjbktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHNWxkMnhwYm1WRllYUnBibWRVWVdkelczUm9hWE11WDNSaFoxMGdKaVlnY21WMExtTm9ZWEpCZENnd0tTQTlQVDBnSjF4Y2JpY3BJSHRjYmlBZ0lDQWdJQzh2SUhSbGVIUXZhSFJ0YkNCcFoyNXZjbVZ6SUhSb1pTQm1hWEp6ZENCamFHRnlZV04wWlhJZ2FXNGdkR2hsYzJVZ2RHRm5jeUJwWmlCcGRDZHpJR0VnYm1WM2JHbHVaVnh1SUNBZ0lDQWdMeThnVUhKbFptVnlJSFJ2SUdKeVpXRnJJR0Z3Y0d4cFkyRjBhVzl1TDNodGJDQnZkbVZ5SUhSbGVIUXZhSFJ0YkNBb1ptOXlJRzV2ZHlrZ1lua2dZV1JrYVc1blhHNGdJQ0FnSUNBdkx5QmhJRzVsZDJ4cGJtVWdjM0JsWTJsbWFXTmhiR3g1SUhSdklHZGxkQ0JsWVhSbGJpQmllU0IwYUdVZ2NHRnljMlZ5TGlBb1FXeDBaWEp1WVhSbGJIa2dabTl5WEc0Z0lDQWdJQ0F2THlCMFpYaDBZWEpsWVhNc0lISmxjR3hoWTJsdVp5QmNJbDVjWEc1Y0lpQjNhWFJvSUZ3aVhGeHlYRnh1WENJZ1pHOWxjMjRuZENCblpYUWdaV0YwWlc0c0lHRnVaQ0IwYUdVZ1ptbHljM1JjYmlBZ0lDQWdJQzh2SUZ4Y2NpQnBjeUJ1YjNKdFlXeHBlbVZrSUc5MWRDQmllU0JJVkUxTVZHVjRkRUZ5WldGRmJHVnRaVzUwSTNaaGJIVmxMaWxjYmlBZ0lDQWdJQzh2SUZObFpUb2dQR2gwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMVJTTDJoMGJXd3RjRzlzZVdkc2IzUXZJMjVsZDJ4cGJtVnpMV2x1TFhSbGVIUmhjbVZoTFdGdVpDMXdjbVUrWEc0Z0lDQWdJQ0F2THlCVFpXVTZJRHhvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5b2RHMXNOUzl6ZVc1MFlYZ3VhSFJ0YkNObGJHVnRaVzUwTFhKbGMzUnlhV04wYVc5dWN6NWNiaUFnSUNBZ0lDOHZJRk5sWlRvZ1BHaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMMmgwYld3MUwzTjViblJoZUM1b2RHMXNJMjVsZDJ4cGJtVnpQbHh1SUNBZ0lDQWdMeThnVTJWbE9pQlFZWEp6YVc1bklHOW1JRndpZEdWNGRHRnlaV0ZjSWlCY0lteHBjM1JwYm1kY0lpQmhibVFnWENKd2NtVmNJaUJsYkdWdFpXNTBjMXh1SUNBZ0lDQWdMeThnSUdaeWIyMGdQR2gwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMVJTTDJoMGJXdzFMM041Ym5SaGVDNW9kRzFzSTNCaGNuTnBibWN0YldGcGJpMXBibUp2WkhrK1hHNGdJQ0FnSUNCeVpYUjFjbTRnSjF4Y2JpY2dLeUJ5WlhRN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUY5amNtVmhkR1ZKYm1sMGFXRnNRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2gwY21GdWMyRmpkR2x2Yml3Z2NISnZjSE1zSUdOdmJuUmxlSFFzSUdWc0tTQjdYRzRnSUNBZ0x5OGdTVzUwWlc1MGFXOXVZV3dnZFhObElHOW1JQ0U5SUhSdklHRjJiMmxrSUdOaGRHTm9hVzVuSUhwbGNtOHZabUZzYzJVdVhHNGdJQ0FnZG1GeUlHbHVibVZ5U0ZSTlRDQTlJSEJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNTzF4dUlDQWdJR2xtSUNocGJtNWxja2hVVFV3Z0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2x1Ym1WeVNGUk5UQzVmWDJoMGJXd2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0J6WlhSSmJtNWxja2hVVFV3b1pXd3NJR2x1Ym1WeVNGUk5UQzVmWDJoMGJXd3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMllYSWdZMjl1ZEdWdWRGUnZWWE5sSUQwZ1EwOU9WRVZPVkY5VVdWQkZVMXQwZVhCbGIyWWdjSEp2Y0hNdVkyaHBiR1J5Wlc1ZElEOGdjSEp2Y0hNdVkyaHBiR1J5Wlc0Z09pQnVkV3hzTzF4dUlDQWdJQ0FnZG1GeUlHTm9hV3hrY21WdVZHOVZjMlVnUFNCamIyNTBaVzUwVkc5VmMyVWdJVDBnYm5Wc2JDQS9JRzUxYkd3Z09pQndjbTl3Y3k1amFHbHNaSEpsYmp0Y2JpQWdJQ0FnSUdsbUlDaGpiMjUwWlc1MFZHOVZjMlVnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBdkx5QlVUMFJQT2lCV1lXeHBaR0YwWlNCMGFHRjBJSFJsZUhRZ2FYTWdZV3hzYjNkbFpDQmhjeUJoSUdOb2FXeGtJRzltSUhSb2FYTWdibTlrWlZ4dUlDQWdJQ0FnSUNCelpYUlVaWGgwUTI5dWRHVnVkQ2hsYkN3Z1kyOXVkR1Z1ZEZSdlZYTmxLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJocGJHUnlaVzVVYjFWelpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCdGIzVnVkRWx0WVdkbGN5QTlJSFJvYVhNdWJXOTFiblJEYUdsc1pISmxiaWhqYUdsc1pISmxibFJ2VlhObExDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2JXOTFiblJKYldGblpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmxiQzVoY0hCbGJtUkRhR2xzWkNodGIzVnVkRWx0WVdkbGMxdHBYU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxZMlZwZG1WeklHRWdibVY0ZENCbGJHVnRaVzUwSUdGdVpDQjFjR1JoZEdWeklIUm9aU0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdibVY0ZEVWc1pXMWxiblJjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZGSmxZV04wVTJWeWRtVnlVbVZ1WkdWeWFXNW5WSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JqYjI1MFpYaDBYRzRnSUNBcUwxeHVJQ0J5WldObGFYWmxRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvYm1WNGRFVnNaVzFsYm5Rc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkbUZ5SUhCeVpYWkZiR1Z0Wlc1MElEMGdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblE3WEc0Z0lDQWdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblFnUFNCdVpYaDBSV3hsYldWdWREdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpVTnZiWEJ2Ym1WdWRDaDBjbUZ1YzJGamRHbHZiaXdnY0hKbGRrVnNaVzFsYm5Rc0lHNWxlSFJGYkdWdFpXNTBMQ0JqYjI1MFpYaDBLVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsY3lCaElHNWhkR2wyWlNCRVQwMGdZMjl0Y0c5dVpXNTBJR0ZtZEdWeUlHbDBJR2hoY3lCaGJISmxZV1I1SUdKbFpXNGdZV3hzYjJOaGRHVmtJR0Z1WkZ4dUlDQWdLaUJoZEhSaFkyaGxaQ0IwYnlCMGFHVWdSRTlOTGlCU1pXTnZibU5wYkdWeklIUm9aU0J5YjI5MElFUlBUU0J1YjJSbExDQjBhR1Z1SUhKbFkzVnljMlZ6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J3Y21WMlJXeGxiV1Z1ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ2JtVjRkRVZzWlcxbGJuUmNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxSUVCdmRtVnljbWxrWVdKc1pWeHVJQ0FnS2k5Y2JpQWdkWEJrWVhSbFEyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9kSEpoYm5OaFkzUnBiMjRzSUhCeVpYWkZiR1Z0Wlc1MExDQnVaWGgwUld4bGJXVnVkQ3dnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCc1lYTjBVSEp2Y0hNZ1BTQndjbVYyUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNCMllYSWdibVY0ZEZCeWIzQnpJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWNISnZjSE03WEc1Y2JpQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdVgzUmhaeWtnZTF4dUlDQWdJQ0FnWTJGelpTQW5ZblYwZEc5dUp6cGNiaUFnSUNBZ0lDQWdiR0Z6ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFDZFhSMGIyNHVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnYkdGemRGQnliM0J6S1R0Y2JpQWdJQ0FnSUNBZ2JtVjRkRkJ5YjNCeklEMGdVbVZoWTNSRVQwMUNkWFIwYjI0dVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2dibVY0ZEZCeWIzQnpLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkcGJuQjFkQ2M2WEc0Z0lDQWdJQ0FnSUZKbFlXTjBSRTlOU1c1d2RYUXVkWEJrWVhSbFYzSmhjSEJsY2loMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnYkdGemRGQnliM0J6SUQwZ1VtVmhZM1JFVDAxSmJuQjFkQzVuWlhST1lYUnBkbVZRY205d2N5aDBhR2x6TENCc1lYTjBVSEp2Y0hNcE8xeHVJQ0FnSUNBZ0lDQnVaWGgwVUhKdmNITWdQU0JTWldGamRFUlBUVWx1Y0hWMExtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJRzVsZUhSUWNtOXdjeWs3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBbmIzQjBhVzl1SnpwY2JpQWdJQ0FnSUNBZ2JHRnpkRkJ5YjNCeklEMGdVbVZoWTNSRVQwMVBjSFJwYjI0dVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2diR0Z6ZEZCeWIzQnpLVHRjYmlBZ0lDQWdJQ0FnYm1WNGRGQnliM0J6SUQwZ1VtVmhZM1JFVDAxUGNIUnBiMjR1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2JtVjRkRkJ5YjNCektUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2R6Wld4bFkzUW5PbHh1SUNBZ0lDQWdJQ0JzWVhOMFVISnZjSE1nUFNCU1pXRmpkRVJQVFZObGJHVmpkQzVuWlhST1lYUnBkbVZRY205d2N5aDBhR2x6TENCc1lYTjBVSEp2Y0hNcE8xeHVJQ0FnSUNBZ0lDQnVaWGgwVUhKdmNITWdQU0JTWldGamRFUlBUVk5sYkdWamRDNW5aWFJPWVhScGRtVlFjbTl3Y3loMGFHbHpMQ0J1WlhoMFVISnZjSE1wTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0ozUmxlSFJoY21WaEp6cGNiaUFnSUNBZ0lDQWdVbVZoWTNSRVQwMVVaWGgwWVhKbFlTNTFjR1JoZEdWWGNtRndjR1Z5S0hSb2FYTXBPMXh1SUNBZ0lDQWdJQ0JzWVhOMFVISnZjSE1nUFNCU1pXRmpkRVJQVFZSbGVIUmhjbVZoTG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lHeGhjM1JRY205d2N5azdYRzRnSUNBZ0lDQWdJRzVsZUhSUWNtOXdjeUE5SUZKbFlXTjBSRTlOVkdWNGRHRnlaV0V1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2JtVjRkRkJ5YjNCektUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQzh2SUVsbUlIUm9aU0JqYjI1MFpYaDBJR2x6SUhKbFptVnlaVzVqWlMxbGNYVmhiQ0IwYnlCMGFHVWdiMnhrSUc5dVpTd2djR0Z6Y3lCa2IzZHVJSFJvWlNCellXMWxYRzRnSUNBZ0lDQXZMeUJ3Y205alpYTnpaV1FnYjJKcVpXTjBJSE52SUhSb1pTQjFjR1JoZEdVZ1ltRnBiRzkxZENCcGJpQlNaV0ZqZEZKbFkyOXVZMmxzWlhJZ1ltVm9ZWFpsYzF4dUlDQWdJQ0FnTHk4Z1kyOXljbVZqZEd4NUlDaGhibVFnYVdSbGJuUnBZMkZzYkhrZ2FXNGdaR1YySUdGdVpDQndjbTlrS1M0Z1UyVmxJQ00xTURBMUxseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgzVnVjSEp2WTJWemMyVmtRMjl1ZEdWNGRFUmxkaUFoUFQwZ1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5MWJuQnliMk5sYzNObFpFTnZiblJsZUhSRVpYWWdQU0JqYjI1MFpYaDBPMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOXdjbTlqWlhOelpXUkRiMjUwWlhoMFJHVjJJRDBnY0hKdlkyVnpjME5vYVd4a1EyOXVkR1Y0ZEVSbGRpaGpiMjUwWlhoMExDQjBhR2x6S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdOdmJuUmxlSFFnUFNCMGFHbHpMbDl3Y205alpYTnpaV1JEYjI1MFpYaDBSR1YyTzF4dUlDQWdJSDFjYmx4dUlDQWdJR0Z6YzJWeWRGWmhiR2xrVUhKdmNITW9kR2hwY3l3Z2JtVjRkRkJ5YjNCektUdGNiaUFnSUNCMGFHbHpMbDkxY0dSaGRHVkVUMDFRY205d1pYSjBhV1Z6S0d4aGMzUlFjbTl3Y3l3Z2JtVjRkRkJ5YjNCekxDQjBjbUZ1YzJGamRHbHZiaXdnYm5Wc2JDazdYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxSRTlOUTJocGJHUnlaVzRvYkdGemRGQnliM0J6TENCdVpYaDBVSEp2Y0hNc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmx4dUlDQWdJR2xtSUNnaFkyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrZ0ppWWdkR2hwY3k1ZmJtOWtaVmRwZEdoTVpXZGhZM2xRY205d1pYSjBhV1Z6S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDl1YjJSbFYybDBhRXhsWjJGamVWQnliM0JsY25ScFpYTXVjSEp2Y0hNZ1BTQnVaWGgwVUhKdmNITTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVgzUmhaeUE5UFQwZ0ozTmxiR1ZqZENjcElIdGNiaUFnSUNBZ0lDOHZJRHh6Wld4bFkzUStJSFpoYkhWbElIVndaR0YwWlNCdVpXVmtjeUIwYnlCdlkyTjFjaUJoWm5SbGNpQThiM0IwYVc5dVBpQmphR2xzWkhKbGJseHVJQ0FnSUNBZ0x5OGdjbVZqYjI1amFXeHBZWFJwYjI1Y2JpQWdJQ0FnSUhSeVlXNXpZV04wYVc5dUxtZGxkRkpsWVdOMFRXOTFiblJTWldGa2VTZ3BMbVZ1Y1hWbGRXVW9jRzl6ZEZWd1pHRjBaVk5sYkdWamRGZHlZWEJ3WlhJc0lIUm9hWE1wTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVmpiMjVqYVd4bGN5QjBhR1VnY0hKdmNHVnlkR2xsY3lCaWVTQmtaWFJsWTNScGJtY2daR2xtWm1WeVpXNWpaWE1nYVc0Z2NISnZjR1Z5ZEhrZ2RtRnNkV1Z6SUdGdVpGeHVJQ0FnS2lCMWNHUmhkR2x1WnlCMGFHVWdSRTlOSUdGeklHNWxZMlZ6YzJGeWVTNGdWR2hwY3lCbWRXNWpkR2x2YmlCcGN5QndjbTlpWVdKc2VTQjBhR1VnYzJsdVoyeGxJRzF2YzNSY2JpQWdJQ29nWTNKcGRHbGpZV3dnY0dGMGFDQm1iM0lnY0dWeVptOXliV0Z1WTJVZ2IzQjBhVzFwZW1GMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCVVQwUlBPaUJDWlc1amFHMWhjbXNnZDJobGRHaGxjaUJqYUdWamEybHVaeUJtYjNJZ1kyaGhibWRsWkNCMllXeDFaWE1nYVc0Z2JXVnRiM0o1SUdGamRIVmhiR3g1WEc0Z0lDQXFJQ0FnSUNBZ0lHbHRjSEp2ZG1WeklIQmxjbVp2Y20xaGJtTmxJQ2hsYzNCbFkybGhiR3g1SUhOMFlYUnBZMkZzYkhrZ2NHOXphWFJwYjI1bFpDQmxiR1Z0Wlc1MGN5a3VYRzRnSUNBcUlGUlBSRTg2SUVKbGJtTm9iV0Z5YXlCMGFHVWdaV1ptWldOMGN5QnZaaUJ3ZFhSMGFXNW5JSFJvYVhNZ1lYUWdkR2hsSUhSdmNDQnphVzVqWlNBNU9TVWdiMllnY0hKdmNITmNiaUFnSUNvZ0lDQWdJQ0FnWkc4Z2JtOTBJR05vWVc1blpTQm1iM0lnWVNCbmFYWmxiaUJ5WldOdmJtTnBiR2xoZEdsdmJpNWNiaUFnSUNvZ1ZFOUVUem9nUW1WdVkyaHRZWEpySUdGeVpXRnpJSFJvWVhRZ1kyRnVJR0psSUdsdGNISnZkbVZrSUhkcGRHZ2dZMkZqYUdsdVp5NWNiaUFnSUNwY2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHeGhjM1JRY205d2MxeHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1WNGRGQnliM0J6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElIcy9SRTlOUld4bGJXVnVkSDBnYm05a1pWeHVJQ0FnS2k5Y2JpQWdYM1Z3WkdGMFpVUlBUVkJ5YjNCbGNuUnBaWE02SUdaMWJtTjBhVzl1SUNoc1lYTjBVSEp2Y0hNc0lHNWxlSFJRY205d2N5d2dkSEpoYm5OaFkzUnBiMjRzSUc1dlpHVXBJSHRjYmlBZ0lDQjJZWElnY0hKdmNFdGxlVHRjYmlBZ0lDQjJZWElnYzNSNWJHVk9ZVzFsTzF4dUlDQWdJSFpoY2lCemRIbHNaVlZ3WkdGMFpYTTdYRzRnSUNBZ1ptOXlJQ2h3Y205d1MyVjVJR2x1SUd4aGMzUlFjbTl3Y3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLRzVsZUhSUWNtOXdjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3UzJWNUtTQjhmQ0FoYkdGemRGQnliM0J6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCTFpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tIQnliM0JMWlhrZ1BUMDlJRk5VV1V4RktTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCc1lYTjBVM1I1YkdVZ1BTQjBhR2x6TGw5d2NtVjJhVzkxYzFOMGVXeGxRMjl3ZVR0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2h6ZEhsc1pVNWhiV1VnYVc0Z2JHRnpkRk4wZVd4bEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGhjM1JUZEhsc1pTNW9ZWE5QZDI1UWNtOXdaWEowZVNoemRIbHNaVTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVlZ3WkdGMFpYTWdQU0J6ZEhsc1pWVndaR0YwWlhNZ2ZId2dlMzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkSGxzWlZWd1pHRjBaWE5iYzNSNWJHVk9ZVzFsWFNBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5d2NtVjJhVzkxYzFOMGVXeGxRMjl3ZVNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hKbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JMWlhrcEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoc1lYTjBVSEp2Y0hOYmNISnZjRXRsZVYwcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCUGJteDVJR05oYkd3Z1pHVnNaWFJsVEdsemRHVnVaWElnYVdZZ2RHaGxjbVVnZDJGeklHRWdiR2x6ZEdWdVpYSWdjSEpsZG1sdmRYTnNlU0J2Y2x4dUlDQWdJQ0FnSUNBZ0lDOHZJR1ZzYzJVZ2QybHNiRVJsYkdWMFpVeHBjM1JsYm1WeUlHZGxkSE1nWTJGc2JHVmtJSGRvWlc0Z2RHaGxjbVVnZDJGemJpZDBJR0ZqZEhWaGJHeDVJR0ZjYmlBZ0lDQWdJQ0FnSUNBdkx5QnNhWE4wWlc1bGNpQW9aUzVuTGl3Z2IyNURiR2xqYXoxN2JuVnNiSDBwWEc0Z0lDQWdJQ0FnSUNBZ1pHVnNaWFJsVEdsemRHVnVaWElvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ3dnY0hKdmNFdGxlU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1JFOU5VSEp2Y0dWeWRIa3VjSEp2Y0dWeWRHbGxjMXR3Y205d1MyVjVYU0I4ZkNCRVQwMVFjbTl3WlhKMGVTNXBjME4xYzNSdmJVRjBkSEpwWW5WMFpTaHdjbTl3UzJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXNXZaR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJPYjJSbEtIUm9hWE11WDNKdmIzUk9iMlJsU1VRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1a1pXeGxkR1ZXWVd4MVpVWnZjbEJ5YjNCbGNuUjVLRzV2WkdVc0lIQnliM0JMWlhrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JtYjNJZ0tIQnliM0JMWlhrZ2FXNGdibVY0ZEZCeWIzQnpLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JtVjRkRkJ5YjNBZ1BTQnVaWGgwVUhKdmNITmJjSEp2Y0V0bGVWMDdYRzRnSUNBZ0lDQjJZWElnYkdGemRGQnliM0FnUFNCd2NtOXdTMlY1SUQwOVBTQlRWRmxNUlNBL0lIUm9hWE11WDNCeVpYWnBiM1Z6VTNSNWJHVkRiM0I1SURvZ2JHRnpkRkJ5YjNCelczQnliM0JMWlhsZE8xeHVJQ0FnSUNBZ2FXWWdLQ0Z1WlhoMFVISnZjSE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0V0bGVTa2dmSHdnYm1WNGRGQnliM0FnUFQwOUlHeGhjM1JRY205d0tTQjdYRzRnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hCeWIzQkxaWGtnUFQwOUlGTlVXVXhGS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h1WlhoMFVISnZjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYUdWamEwRnVaRmRoY201R2IzSk5kWFJoZEdWa1UzUjViR1VvZEdocGN5NWZjSEpsZG1sdmRYTlRkSGxzWlVOdmNIa3NJSFJvYVhNdVgzQnlaWFpwYjNWelUzUjViR1VzSUhSb2FYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pTQTlJRzVsZUhSUWNtOXdPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQnVaWGgwVUhKdmNDQTlJSFJvYVhNdVgzQnlaWFpwYjNWelUzUjViR1ZEYjNCNUlEMGdZWE56YVdkdUtIdDlMQ0J1WlhoMFVISnZjQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pVTnZjSGtnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaHNZWE4wVUhKdmNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklGVnVjMlYwSUhOMGVXeGxjeUJ2YmlCZ2JHRnpkRkJ5YjNCZ0lHSjFkQ0J1YjNRZ2IyNGdZRzVsZUhSUWNtOXdZQzVjYmlBZ0lDQWdJQ0FnSUNCbWIzSWdLSE4wZVd4bFRtRnRaU0JwYmlCc1lYTjBVSEp2Y0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGhjM1JRY205d0xtaGhjMDkzYmxCeWIzQmxjblI1S0hOMGVXeGxUbUZ0WlNrZ0ppWWdLQ0Z1WlhoMFVISnZjQ0I4ZkNBaGJtVjRkRkJ5YjNBdWFHRnpUM2R1VUhKdmNHVnlkSGtvYzNSNWJHVk9ZVzFsS1NrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2MzUjViR1ZWY0dSaGRHVnpJRDBnYzNSNWJHVlZjR1JoZEdWeklIeDhJSHQ5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEhsc1pWVndaR0YwWlhOYmMzUjViR1ZPWVcxbFhTQTlJQ2NuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQXZMeUJWY0dSaGRHVWdjM1I1YkdWeklIUm9ZWFFnWTJoaGJtZGxaQ0J6YVc1alpTQmdiR0Z6ZEZCeWIzQmdMbHh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9jM1I1YkdWT1lXMWxJR2x1SUc1bGVIUlFjbTl3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JtVjRkRkJ5YjNBdWFHRnpUM2R1VUhKdmNHVnlkSGtvYzNSNWJHVk9ZVzFsS1NBbUppQnNZWE4wVUhKdmNGdHpkSGxzWlU1aGJXVmRJQ0U5UFNCdVpYaDBVSEp2Y0Z0emRIbHNaVTVoYldWZEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsVlhCa1lYUmxjeUE5SUhOMGVXeGxWWEJrWVhSbGN5QjhmQ0I3ZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVlZjR1JoZEdWelczTjBlV3hsVG1GdFpWMGdQU0J1WlhoMFVISnZjRnR6ZEhsc1pVNWhiV1ZkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJTWld4cFpYTWdiMjRnWUhWd1pHRjBaVk4wZVd4bGMwSjVTVVJnSUc1dmRDQnRkWFJoZEdsdVp5QmdjM1I1YkdWVmNHUmhkR1Z6WUM1Y2JpQWdJQ0FnSUNBZ0lDQnpkSGxzWlZWd1pHRjBaWE1nUFNCdVpYaDBVSEp2Y0R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1MyVjVLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9ibVY0ZEZCeWIzQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbGJuRjFaWFZsVUhWMFRHbHpkR1Z1WlhJb2RHaHBjeTVmY205dmRFNXZaR1ZKUkN3Z2NISnZjRXRsZVN3Z2JtVjRkRkJ5YjNBc0lIUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoc1lYTjBVSEp2Y0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1JsYkdWMFpVeHBjM1JsYm1WeUtIUm9hWE11WDNKdmIzUk9iMlJsU1VRc0lIQnliM0JMWlhrcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR2x6UTNWemRHOXRRMjl0Y0c5dVpXNTBLSFJvYVhNdVgzUmhaeXdnYm1WNGRGQnliM0J6S1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVc1dlpHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdWIyUmxJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0hSb2FYTXVYM0p2YjNST2IyUmxTVVFwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205d1MyVjVJRDA5UFNCRFNFbE1SRkpGVGlrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzVsZUhSUWNtOXdJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWMyVjBWbUZzZFdWR2IzSkJkSFJ5YVdKMWRHVW9ibTlrWlN3Z2NISnZjRXRsZVN3Z2JtVjRkRkJ5YjNBcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaEVUMDFRY205d1pYSjBlUzV3Y205d1pYSjBhV1Z6VzNCeWIzQkxaWGxkSUh4OElFUlBUVkJ5YjNCbGNuUjVMbWx6UTNWemRHOXRRWFIwY21saWRYUmxLSEJ5YjNCTFpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hibTlrWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzV2WkdVZ1BTQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnTHk4Z1NXWWdkMlVuY21VZ2RYQmtZWFJwYm1jZ2RHOGdiblZzYkNCdmNpQjFibVJsWm1sdVpXUXNJSGRsSUhOb2IzVnNaQ0J5WlcxdmRtVWdkR2hsSUhCeWIzQmxjblI1WEc0Z0lDQWdJQ0FnSUM4dklHWnliMjBnZEdobElFUlBUU0J1YjJSbElHbHVjM1JsWVdRZ2IyWWdhVzVoWkhabGNuUmhiblJzZVNCelpYUjBhVzVuSUhSdklHRWdjM1J5YVc1bkxpQlVhR2x6WEc0Z0lDQWdJQ0FnSUM4dklHSnlhVzVuY3lCMWN5QnBiaUJzYVc1bElIZHBkR2dnZEdobElITmhiV1VnWW1Wb1lYWnBiM0lnZDJVZ2FHRjJaU0J2YmlCcGJtbDBhV0ZzSUhKbGJtUmxjaTVjYmlBZ0lDQWdJQ0FnYVdZZ0tHNWxlSFJRY205d0lDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdJQ0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWMyVjBWbUZzZFdWR2IzSlFjbTl3WlhKMGVTaHViMlJsTENCd2NtOXdTMlY1TENCdVpYaDBVSEp2Y0NrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6TG1SbGJHVjBaVlpoYkhWbFJtOXlVSEp2Y0dWeWRIa29ibTlrWlN3Z2NISnZjRXRsZVNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tITjBlV3hsVlhCa1lYUmxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRnViMlJsS1NCN1hHNGdJQ0FnSUNBZ0lHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCRFUxTlFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVjMlYwVm1Gc2RXVkdiM0pUZEhsc1pYTW9ibTlrWlN3Z2MzUjViR1ZWY0dSaGRHVnpLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbFkyOXVZMmxzWlhNZ2RHaGxJR05vYVd4a2NtVnVJSGRwZEdnZ2RHaGxJSFpoY21sdmRYTWdjSEp2Y0dWeWRHbGxjeUIwYUdGMElHRm1abVZqZENCMGFHVmNiaUFnSUNvZ1kyaHBiR1J5Wlc0Z1kyOXVkR1Z1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHeGhjM1JRY205d2MxeHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1WNGRGQnliM0J6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHTnZiblJsZUhSY2JpQWdJQ292WEc0Z0lGOTFjR1JoZEdWRVQwMURhR2xzWkhKbGJqb2dablZ1WTNScGIyNGdLR3hoYzNSUWNtOXdjeXdnYm1WNGRGQnliM0J6TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJzWVhOMFEyOXVkR1Z1ZENBOUlFTlBUbFJGVGxSZlZGbFFSVk5iZEhsd1pXOW1JR3hoYzNSUWNtOXdjeTVqYUdsc1pISmxibDBnUHlCc1lYTjBVSEp2Y0hNdVkyaHBiR1J5Wlc0Z09pQnVkV3hzTzF4dUlDQWdJSFpoY2lCdVpYaDBRMjl1ZEdWdWRDQTlJRU5QVGxSRlRsUmZWRmxRUlZOYmRIbHdaVzltSUc1bGVIUlFjbTl3Y3k1amFHbHNaSEpsYmwwZ1B5QnVaWGgwVUhKdmNITXVZMmhwYkdSeVpXNGdPaUJ1ZFd4c08xeHVYRzRnSUNBZ2RtRnlJR3hoYzNSSWRHMXNJRDBnYkdGemRGQnliM0J6TG1SaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1JQ1ltSUd4aGMzUlFjbTl3Y3k1a1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UQzVmWDJoMGJXdzdYRzRnSUNBZ2RtRnlJRzVsZUhSSWRHMXNJRDBnYm1WNGRGQnliM0J6TG1SaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1JQ1ltSUc1bGVIUlFjbTl3Y3k1a1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UQzVmWDJoMGJXdzdYRzVjYmlBZ0lDQXZMeUJPYjNSbElIUm9aU0IxYzJVZ2IyWWdZQ0U5WUNCM2FHbGphQ0JqYUdWamEzTWdabTl5SUc1MWJHd2diM0lnZFc1a1pXWnBibVZrTGx4dUlDQWdJSFpoY2lCc1lYTjBRMmhwYkdSeVpXNGdQU0JzWVhOMFEyOXVkR1Z1ZENBaFBTQnVkV3hzSUQ4Z2JuVnNiQ0E2SUd4aGMzUlFjbTl3Y3k1amFHbHNaSEpsYmp0Y2JpQWdJQ0IyWVhJZ2JtVjRkRU5vYVd4a2NtVnVJRDBnYm1WNGRFTnZiblJsYm5RZ0lUMGdiblZzYkNBL0lHNTFiR3dnT2lCdVpYaDBVSEp2Y0hNdVkyaHBiR1J5Wlc0N1hHNWNiaUFnSUNBdkx5QkpaaUIzWlNkeVpTQnpkMmwwWTJocGJtY2dabkp2YlNCamFHbHNaSEpsYmlCMGJ5QmpiMjUwWlc1MEwyaDBiV3dnYjNJZ2RtbGpaU0IyWlhKellTd2djbVZ0YjNabFhHNGdJQ0FnTHk4Z2RHaGxJRzlzWkNCamIyNTBaVzUwWEc0Z0lDQWdkbUZ5SUd4aGMzUklZWE5EYjI1MFpXNTBUM0pJZEcxc0lEMGdiR0Z6ZEVOdmJuUmxiblFnSVQwZ2JuVnNiQ0I4ZkNCc1lYTjBTSFJ0YkNBaFBTQnVkV3hzTzF4dUlDQWdJSFpoY2lCdVpYaDBTR0Z6UTI5dWRHVnVkRTl5U0hSdGJDQTlJRzVsZUhSRGIyNTBaVzUwSUNFOUlHNTFiR3dnZkh3Z2JtVjRkRWgwYld3Z0lUMGdiblZzYkR0Y2JpQWdJQ0JwWmlBb2JHRnpkRU5vYVd4a2NtVnVJQ0U5SUc1MWJHd2dKaVlnYm1WNGRFTm9hV3hrY21WdUlEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxRMmhwYkdSeVpXNG9iblZzYkN3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iR0Z6ZEVoaGMwTnZiblJsYm5SUGNraDBiV3dnSmlZZ0lXNWxlSFJJWVhORGIyNTBaVzUwVDNKSWRHMXNLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlZSbGVIUkRiMjUwWlc1MEtDY25LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYm1WNGRFTnZiblJsYm5RZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR3hoYzNSRGIyNTBaVzUwSUNFOVBTQnVaWGgwUTI5dWRHVnVkQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWUmxlSFJEYjI1MFpXNTBLQ2NuSUNzZ2JtVjRkRU52Ym5SbGJuUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9ibVY0ZEVoMGJXd2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0d4aGMzUklkRzFzSUNFOVBTQnVaWGgwU0hSdGJDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuVndaR0YwWlUxaGNtdDFjQ2duSnlBcklHNWxlSFJJZEcxc0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHNWxlSFJEYUdsc1pISmxiaUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlVOb2FXeGtjbVZ1S0c1bGVIUkRhR2xzWkhKbGJpd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1JHVnpkSEp2ZVhNZ1lXeHNJR1YyWlc1MElISmxaMmx6ZEhKaGRHbHZibk1nWm05eUlIUm9hWE1nYVc1emRHRnVZMlV1SUVSdlpYTWdibTkwSUhKbGJXOTJaU0JtY205dFhHNGdJQ0FxSUhSb1pTQkVUMDB1SUZSb1lYUWdiWFZ6ZENCaVpTQmtiMjVsSUdKNUlIUm9aU0J3WVhKbGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2RXNXRiM1Z1ZEVOdmJYQnZibVZ1ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lITjNhWFJqYUNBb2RHaHBjeTVmZEdGbktTQjdYRzRnSUNBZ0lDQmpZWE5sSUNkcFpuSmhiV1VuT2x4dUlDQWdJQ0FnWTJGelpTQW5hVzFuSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMlp2Y20wbk9seHVJQ0FnSUNBZ1kyRnpaU0FuZG1sa1pXOG5PbHh1SUNBZ0lDQWdZMkZ6WlNBbllYVmthVzhuT2x4dUlDQWdJQ0FnSUNCMllYSWdiR2x6ZEdWdVpYSnpJRDBnZEdocGN5NWZkM0poY0hCbGNsTjBZWFJsTG14cGMzUmxibVZ5Y3p0Y2JpQWdJQ0FnSUNBZ2FXWWdLR3hwYzNSbGJtVnljeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diR2x6ZEdWdVpYSnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYVhOMFpXNWxjbk5iYVYwdWNtVnRiM1psS0NrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBbmFXNXdkWFFuT2x4dUlDQWdJQ0FnSUNCU1pXRmpkRVJQVFVsdWNIVjBMblZ1Ylc5MWJuUlhjbUZ3Y0dWeUtIUm9hWE1wTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyaDBiV3duT2x4dUlDQWdJQ0FnWTJGelpTQW5hR1ZoWkNjNlhHNGdJQ0FnSUNCallYTmxJQ2RpYjJSNUp6cGNiaUFnSUNBZ0lDQWdMeW9xWEc0Z0lDQWdJQ0FnSUNBcUlFTnZiWEJ2Ym1WdWRITWdiR2xyWlNBOGFIUnRiRDRnUEdobFlXUStJR0Z1WkNBOFltOWtlVDRnWTJGdUozUWdZbVVnY21WdGIzWmxaQ0J2Y2lCaFpHUmxaRnh1SUNBZ0lDQWdJQ0FnS2lCbFlYTnBiSGtnYVc0Z1lTQmpjbTl6Y3kxaWNtOTNjMlZ5SUhkaGVTd2dhRzkzWlhabGNpQnBkQ2R6SUhaaGJIVmhZbXhsSUhSdklHSmxJR0ZpYkdVZ2RHOWNiaUFnSUNBZ0lDQWdJQ29nZEdGclpTQmhaSFpoYm5SaFoyVWdiMllnVW1WaFkzUW5jeUJ5WldOdmJtTnBiR2xoZEdsdmJpQm1iM0lnYzNSNWJHbHVaeUJoYm1RZ1BIUnBkR3hsUGx4dUlDQWdJQ0FnSUNBZ0tpQnRZVzVoWjJWdFpXNTBMaUJUYnlCM1pTQnFkWE4wSUdSdlkzVnRaVzUwSUdsMElHRnVaQ0IwYUhKdmR5QnBiaUJrWVc1blpYSnZkWE1nWTJGelpYTXVYRzRnSUNBZ0lDQWdJQ0FxTDF4dUlDQWdJQ0FnSUNBaFptRnNjMlVnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5QQ1Z6UGlCMGNtbGxaQ0IwYnlCMWJtMXZkVzUwTGlCQ1pXTmhkWE5sSUc5bUlHTnliM056TFdKeWIzZHpaWElnY1hWcGNtdHpJR2wwSUdseklDY2dLeUFuYVcxd2IzTnphV0pzWlNCMGJ5QjFibTF2ZFc1MElITnZiV1VnZEc5d0xXeGxkbVZzSUdOdmJYQnZibVZ1ZEhNZ0tHVm5JRHhvZEcxc1Bpd2dKeUFySUNjOGFHVmhaRDRzSUdGdVpDQThZbTlrZVQ0cElISmxiR2xoWW14NUlHRnVaQ0JsWm1acFkybGxiblJzZVM0Z1ZHOGdabWw0SUhSb2FYTXNJR2hoZG1VZ1lTQW5JQ3NnSjNOcGJtZHNaU0IwYjNBdGJHVjJaV3dnWTI5dGNHOXVaVzUwSUhSb1lYUWdibVYyWlhJZ2RXNXRiM1Z1ZEhNZ2NtVnVaR1Z5SUhSb1pYTmxJQ2NnS3lBblpXeGxiV1Z1ZEhNdUp5d2dkR2hwY3k1ZmRHRm5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWRXNXRiM1Z1ZEVOb2FXeGtjbVZ1S0NrN1hHNGdJQ0FnVW1WaFkzUkNjbTkzYzJWeVJYWmxiblJGYldsMGRHVnlMbVJsYkdWMFpVRnNiRXhwYzNSbGJtVnljeWgwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ0lDQlNaV0ZqZEVOdmJYQnZibVZ1ZEVKeWIzZHpaWEpGYm5acGNtOXViV1Z1ZEM1MWJtMXZkVzUwU1VSR2NtOXRSVzUyYVhKdmJtMWxiblFvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDQWdkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZkM0poY0hCbGNsTjBZWFJsSUQwZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZibTlrWlZkcGRHaE1aV2RoWTNsUWNtOXdaWEowYVdWektTQjdYRzRnSUNBZ0lDQjJZWElnYm05a1pTQTlJSFJvYVhNdVgyNXZaR1ZYYVhSb1RHVm5ZV041VUhKdmNHVnlkR2xsY3p0Y2JpQWdJQ0FnSUc1dlpHVXVYM0psWVdOMFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5RZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZEdocGN5NWZibTlrWlZkcGRHaE1aV2RoWTNsUWNtOXdaWEowYVdWeklEMGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ1oyVjBVSFZpYkdsalNXNXpkR0Z1WTJVNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVYMjV2WkdWWGFYUm9UR1ZuWVdONVVISnZjR1Z5ZEdsbGN5a2dlMXh1SUNBZ0lDQWdkbUZ5SUc1dlpHVWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc1Y2JpQWdJQ0FnSUc1dlpHVXVYM0psWVdOMFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5RZ1BTQjBhR2x6TzF4dUlDQWdJQ0FnYm05a1pTNW5aWFJFVDAxT2IyUmxJRDBnYkdWbllXTjVSMlYwUkU5TlRtOWtaVHRjYmlBZ0lDQWdJRzV2WkdVdWFYTk5iM1Z1ZEdWa0lEMGdiR1ZuWVdONVNYTk5iM1Z1ZEdWa08xeHVJQ0FnSUNBZ2JtOWtaUzV6WlhSVGRHRjBaU0E5SUd4bFoyRmplVk5sZEZOMFlYUmxSWFJqTzF4dUlDQWdJQ0FnYm05a1pTNXlaWEJzWVdObFUzUmhkR1VnUFNCc1pXZGhZM2xUWlhSVGRHRjBaVVYwWXp0Y2JpQWdJQ0FnSUc1dlpHVXVabTl5WTJWVmNHUmhkR1VnUFNCc1pXZGhZM2xUWlhSVGRHRjBaVVYwWXp0Y2JpQWdJQ0FnSUc1dlpHVXVjMlYwVUhKdmNITWdQU0JzWldkaFkzbFRaWFJRY205d2N6dGNiaUFnSUNBZ0lHNXZaR1V1Y21Wd2JHRmpaVkJ5YjNCeklEMGdiR1ZuWVdONVVtVndiR0ZqWlZCeWIzQnpPMXh1WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1kyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrcElIdGNiaUFnSUNBZ0lDQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aHViMlJsTENCc1pXZGhZM2xRY205d2MwUmxjMk55YVhCMGIzSXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUM4dklIVndaR0YwWlVOdmJYQnZibVZ1ZENCM2FXeHNJSFZ3WkdGMFpTQjBhR2x6SUhCeWIzQmxjblI1SUc5dUlITjFZbk5sY1hWbGJuUWdjbVZ1WkdWeWMxeHVJQ0FnSUNBZ0lDQWdJRzV2WkdVdWNISnZjSE1nUFNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNXdjbTl3Y3p0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdkWEJrWVhSbFEyOXRjRzl1Wlc1MElIZHBiR3dnZFhCa1lYUmxJSFJvYVhNZ2NISnZjR1Z5ZEhrZ2IyNGdjM1ZpYzJWeGRXVnVkQ0J5Wlc1a1pYSnpYRzRnSUNBZ0lDQWdJRzV2WkdVdWNISnZjSE1nUFNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNXdjbTl3Y3p0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpJRDBnYm05a1pUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyNXZaR1ZYYVhSb1RHVm5ZV041VUhKdmNHVnlkR2xsY3p0Y2JpQWdmVnh1WEc1OU8xeHVYRzVTWldGamRGQmxjbVl1YldWaGMzVnlaVTFsZEdodlpITW9VbVZoWTNSRVQwMURiMjF3YjI1bGJuUXNJQ2RTWldGamRFUlBUVU52YlhCdmJtVnVkQ2NzSUh0Y2JpQWdiVzkxYm5SRGIyMXdiMjVsYm5RNklDZHRiM1Z1ZEVOdmJYQnZibVZ1ZENjc1hHNGdJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWREb2dKM1Z3WkdGMFpVTnZiWEJ2Ym1WdWRDZGNibjBwTzF4dVhHNWhjM05wWjI0b1VtVmhZM1JFVDAxRGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbExDQlNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRDNU5hWGhwYml3Z1VtVmhZM1JOZFd4MGFVTm9hV3hrTGsxcGVHbHVLVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZERzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NRmFjdG9yaWVzXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRWYWxpZGF0b3InKTtcblxudmFyIG1hcE9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL21hcE9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZSBhIGZhY3RvcnkgdGhhdCBjcmVhdGVzIEhUTUwgdGFnIGVsZW1lbnRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGFnIG5hbWUgKGUuZy4gYGRpdmApLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRE9NRmFjdG9yeSh0YWcpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm4gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZhY3RvcnkodGFnKTtcbiAgfVxuICByZXR1cm4gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkodGFnKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJlYWN0RE9NQ29tcG9uZW50YCBjbGFzc2VzLlxuICogVGhpcyBpcyBhbHNvIGFjY2Vzc2libGUgdmlhIGBSZWFjdC5ET01gLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0gbWFwT2JqZWN0KHtcbiAgYTogJ2EnLFxuICBhYmJyOiAnYWJicicsXG4gIGFkZHJlc3M6ICdhZGRyZXNzJyxcbiAgYXJlYTogJ2FyZWEnLFxuICBhcnRpY2xlOiAnYXJ0aWNsZScsXG4gIGFzaWRlOiAnYXNpZGUnLFxuICBhdWRpbzogJ2F1ZGlvJyxcbiAgYjogJ2InLFxuICBiYXNlOiAnYmFzZScsXG4gIGJkaTogJ2JkaScsXG4gIGJkbzogJ2JkbycsXG4gIGJpZzogJ2JpZycsXG4gIGJsb2NrcXVvdGU6ICdibG9ja3F1b3RlJyxcbiAgYm9keTogJ2JvZHknLFxuICBicjogJ2JyJyxcbiAgYnV0dG9uOiAnYnV0dG9uJyxcbiAgY2FudmFzOiAnY2FudmFzJyxcbiAgY2FwdGlvbjogJ2NhcHRpb24nLFxuICBjaXRlOiAnY2l0ZScsXG4gIGNvZGU6ICdjb2RlJyxcbiAgY29sOiAnY29sJyxcbiAgY29sZ3JvdXA6ICdjb2xncm91cCcsXG4gIGRhdGE6ICdkYXRhJyxcbiAgZGF0YWxpc3Q6ICdkYXRhbGlzdCcsXG4gIGRkOiAnZGQnLFxuICBkZWw6ICdkZWwnLFxuICBkZXRhaWxzOiAnZGV0YWlscycsXG4gIGRmbjogJ2RmbicsXG4gIGRpYWxvZzogJ2RpYWxvZycsXG4gIGRpdjogJ2RpdicsXG4gIGRsOiAnZGwnLFxuICBkdDogJ2R0JyxcbiAgZW06ICdlbScsXG4gIGVtYmVkOiAnZW1iZWQnLFxuICBmaWVsZHNldDogJ2ZpZWxkc2V0JyxcbiAgZmlnY2FwdGlvbjogJ2ZpZ2NhcHRpb24nLFxuICBmaWd1cmU6ICdmaWd1cmUnLFxuICBmb290ZXI6ICdmb290ZXInLFxuICBmb3JtOiAnZm9ybScsXG4gIGgxOiAnaDEnLFxuICBoMjogJ2gyJyxcbiAgaDM6ICdoMycsXG4gIGg0OiAnaDQnLFxuICBoNTogJ2g1JyxcbiAgaDY6ICdoNicsXG4gIGhlYWQ6ICdoZWFkJyxcbiAgaGVhZGVyOiAnaGVhZGVyJyxcbiAgaGdyb3VwOiAnaGdyb3VwJyxcbiAgaHI6ICdocicsXG4gIGh0bWw6ICdodG1sJyxcbiAgaTogJ2knLFxuICBpZnJhbWU6ICdpZnJhbWUnLFxuICBpbWc6ICdpbWcnLFxuICBpbnB1dDogJ2lucHV0JyxcbiAgaW5zOiAnaW5zJyxcbiAga2JkOiAna2JkJyxcbiAga2V5Z2VuOiAna2V5Z2VuJyxcbiAgbGFiZWw6ICdsYWJlbCcsXG4gIGxlZ2VuZDogJ2xlZ2VuZCcsXG4gIGxpOiAnbGknLFxuICBsaW5rOiAnbGluaycsXG4gIG1haW46ICdtYWluJyxcbiAgbWFwOiAnbWFwJyxcbiAgbWFyazogJ21hcmsnLFxuICBtZW51OiAnbWVudScsXG4gIG1lbnVpdGVtOiAnbWVudWl0ZW0nLFxuICBtZXRhOiAnbWV0YScsXG4gIG1ldGVyOiAnbWV0ZXInLFxuICBuYXY6ICduYXYnLFxuICBub3NjcmlwdDogJ25vc2NyaXB0JyxcbiAgb2JqZWN0OiAnb2JqZWN0JyxcbiAgb2w6ICdvbCcsXG4gIG9wdGdyb3VwOiAnb3B0Z3JvdXAnLFxuICBvcHRpb246ICdvcHRpb24nLFxuICBvdXRwdXQ6ICdvdXRwdXQnLFxuICBwOiAncCcsXG4gIHBhcmFtOiAncGFyYW0nLFxuICBwaWN0dXJlOiAncGljdHVyZScsXG4gIHByZTogJ3ByZScsXG4gIHByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuICBxOiAncScsXG4gIHJwOiAncnAnLFxuICBydDogJ3J0JyxcbiAgcnVieTogJ3J1YnknLFxuICBzOiAncycsXG4gIHNhbXA6ICdzYW1wJyxcbiAgc2NyaXB0OiAnc2NyaXB0JyxcbiAgc2VjdGlvbjogJ3NlY3Rpb24nLFxuICBzZWxlY3Q6ICdzZWxlY3QnLFxuICBzbWFsbDogJ3NtYWxsJyxcbiAgc291cmNlOiAnc291cmNlJyxcbiAgc3BhbjogJ3NwYW4nLFxuICBzdHJvbmc6ICdzdHJvbmcnLFxuICBzdHlsZTogJ3N0eWxlJyxcbiAgc3ViOiAnc3ViJyxcbiAgc3VtbWFyeTogJ3N1bW1hcnknLFxuICBzdXA6ICdzdXAnLFxuICB0YWJsZTogJ3RhYmxlJyxcbiAgdGJvZHk6ICd0Ym9keScsXG4gIHRkOiAndGQnLFxuICB0ZXh0YXJlYTogJ3RleHRhcmVhJyxcbiAgdGZvb3Q6ICd0Zm9vdCcsXG4gIHRoOiAndGgnLFxuICB0aGVhZDogJ3RoZWFkJyxcbiAgdGltZTogJ3RpbWUnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgdHI6ICd0cicsXG4gIHRyYWNrOiAndHJhY2snLFxuICB1OiAndScsXG4gIHVsOiAndWwnLFxuICAndmFyJzogJ3ZhcicsXG4gIHZpZGVvOiAndmlkZW8nLFxuICB3YnI6ICd3YnInLFxuXG4gIC8vIFNWR1xuICBjaXJjbGU6ICdjaXJjbGUnLFxuICBjbGlwUGF0aDogJ2NsaXBQYXRoJyxcbiAgZGVmczogJ2RlZnMnLFxuICBlbGxpcHNlOiAnZWxsaXBzZScsXG4gIGc6ICdnJyxcbiAgaW1hZ2U6ICdpbWFnZScsXG4gIGxpbmU6ICdsaW5lJyxcbiAgbGluZWFyR3JhZGllbnQ6ICdsaW5lYXJHcmFkaWVudCcsXG4gIG1hc2s6ICdtYXNrJyxcbiAgcGF0aDogJ3BhdGgnLFxuICBwYXR0ZXJuOiAncGF0dGVybicsXG4gIHBvbHlnb246ICdwb2x5Z29uJyxcbiAgcG9seWxpbmU6ICdwb2x5bGluZScsXG4gIHJhZGlhbEdyYWRpZW50OiAncmFkaWFsR3JhZGllbnQnLFxuICByZWN0OiAncmVjdCcsXG4gIHN0b3A6ICdzdG9wJyxcbiAgc3ZnOiAnc3ZnJyxcbiAgdGV4dDogJ3RleHQnLFxuICB0c3BhbjogJ3RzcGFuJ1xuXG59LCBjcmVhdGVET01GYWN0b3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZhY3Rvcmllcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVSUFRVWmhZM1J2Y21sbGN5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkVUMDFHWVdOMGIzSnBaWE5jYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0lnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaWNwTzF4dVhHNTJZWElnYldGd1QySnFaV04wSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmJXRndUMkpxWldOMEp5azdYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxJR0VnWm1GamRHOXllU0IwYUdGMElHTnlaV0YwWlhNZ1NGUk5UQ0IwWVdjZ1pXeGxiV1Z1ZEhNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSaFp5QlVZV2NnYm1GdFpTQW9aUzVuTGlCZ1pHbDJZQ2t1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0hSaFp5a2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSEpsZEhWeWJpQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0l1WTNKbFlYUmxSbUZqZEc5eWVTaDBZV2NwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJTWldGamRFVnNaVzFsYm5RdVkzSmxZWFJsUm1GamRHOXllU2gwWVdjcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCdFlYQndhVzVuSUdaeWIyMGdjM1Z3Y0c5eWRHVmtJRWhVVFV3Z2RHRm5jeUIwYnlCZ1VtVmhZM1JFVDAxRGIyMXdiMjVsYm5SZ0lHTnNZWE56WlhNdVhHNGdLaUJVYUdseklHbHpJR0ZzYzI4Z1lXTmpaWE56YVdKc1pTQjJhV0VnWUZKbFlXTjBMa1JQVFdBdVhHNGdLbHh1SUNvZ1FIQjFZbXhwWTF4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JFVDAxR1lXTjBiM0pwWlhNZ1BTQnRZWEJQWW1wbFkzUW9lMXh1SUNCaE9pQW5ZU2NzWEc0Z0lHRmlZbkk2SUNkaFltSnlKeXhjYmlBZ1lXUmtjbVZ6Y3pvZ0oyRmtaSEpsYzNNbkxGeHVJQ0JoY21WaE9pQW5ZWEpsWVNjc1hHNGdJR0Z5ZEdsamJHVTZJQ2RoY25ScFkyeGxKeXhjYmlBZ1lYTnBaR1U2SUNkaGMybGtaU2NzWEc0Z0lHRjFaR2x2T2lBbllYVmthVzhuTEZ4dUlDQmlPaUFuWWljc1hHNGdJR0poYzJVNklDZGlZWE5sSnl4Y2JpQWdZbVJwT2lBblltUnBKeXhjYmlBZ1ltUnZPaUFuWW1Sdkp5eGNiaUFnWW1sbk9pQW5ZbWxuSnl4Y2JpQWdZbXh2WTJ0eGRXOTBaVG9nSjJKc2IyTnJjWFZ2ZEdVbkxGeHVJQ0JpYjJSNU9pQW5ZbTlrZVNjc1hHNGdJR0p5T2lBblluSW5MRnh1SUNCaWRYUjBiMjQ2SUNkaWRYUjBiMjRuTEZ4dUlDQmpZVzUyWVhNNklDZGpZVzUyWVhNbkxGeHVJQ0JqWVhCMGFXOXVPaUFuWTJGd2RHbHZiaWNzWEc0Z0lHTnBkR1U2SUNkamFYUmxKeXhjYmlBZ1kyOWtaVG9nSjJOdlpHVW5MRnh1SUNCamIydzZJQ2RqYjJ3bkxGeHVJQ0JqYjJ4bmNtOTFjRG9nSjJOdmJHZHliM1Z3Snl4Y2JpQWdaR0YwWVRvZ0oyUmhkR0VuTEZ4dUlDQmtZWFJoYkdsemREb2dKMlJoZEdGc2FYTjBKeXhjYmlBZ1pHUTZJQ2RrWkNjc1hHNGdJR1JsYkRvZ0oyUmxiQ2NzWEc0Z0lHUmxkR0ZwYkhNNklDZGtaWFJoYVd4ekp5eGNiaUFnWkdadU9pQW5aR1p1Snl4Y2JpQWdaR2xoYkc5bk9pQW5aR2xoYkc5bkp5eGNiaUFnWkdsMk9pQW5aR2wySnl4Y2JpQWdaR3c2SUNka2JDY3NYRzRnSUdSME9pQW5aSFFuTEZ4dUlDQmxiVG9nSjJWdEp5eGNiaUFnWlcxaVpXUTZJQ2RsYldKbFpDY3NYRzRnSUdacFpXeGtjMlYwT2lBblptbGxiR1J6WlhRbkxGeHVJQ0JtYVdkallYQjBhVzl1T2lBblptbG5ZMkZ3ZEdsdmJpY3NYRzRnSUdacFozVnlaVG9nSjJacFozVnlaU2NzWEc0Z0lHWnZiM1JsY2pvZ0oyWnZiM1JsY2ljc1hHNGdJR1p2Y20wNklDZG1iM0p0Snl4Y2JpQWdhREU2SUNkb01TY3NYRzRnSUdneU9pQW5hREluTEZ4dUlDQm9Nem9nSjJnekp5eGNiaUFnYURRNklDZG9OQ2NzWEc0Z0lHZzFPaUFuYURVbkxGeHVJQ0JvTmpvZ0oyZzJKeXhjYmlBZ2FHVmhaRG9nSjJobFlXUW5MRnh1SUNCb1pXRmtaWEk2SUNkb1pXRmtaWEluTEZ4dUlDQm9aM0p2ZFhBNklDZG9aM0p2ZFhBbkxGeHVJQ0JvY2pvZ0oyaHlKeXhjYmlBZ2FIUnRiRG9nSjJoMGJXd25MRnh1SUNCcE9pQW5hU2NzWEc0Z0lHbG1jbUZ0WlRvZ0oybG1jbUZ0WlNjc1hHNGdJR2x0WnpvZ0oybHRaeWNzWEc0Z0lHbHVjSFYwT2lBbmFXNXdkWFFuTEZ4dUlDQnBibk02SUNkcGJuTW5MRnh1SUNCclltUTZJQ2RyWW1RbkxGeHVJQ0JyWlhsblpXNDZJQ2RyWlhsblpXNG5MRnh1SUNCc1lXSmxiRG9nSjJ4aFltVnNKeXhjYmlBZ2JHVm5aVzVrT2lBbmJHVm5aVzVrSnl4Y2JpQWdiR2s2SUNkc2FTY3NYRzRnSUd4cGJtczZJQ2RzYVc1ckp5eGNiaUFnYldGcGJqb2dKMjFoYVc0bkxGeHVJQ0J0WVhBNklDZHRZWEFuTEZ4dUlDQnRZWEpyT2lBbmJXRnlheWNzWEc0Z0lHMWxiblU2SUNkdFpXNTFKeXhjYmlBZ2JXVnVkV2wwWlcwNklDZHRaVzUxYVhSbGJTY3NYRzRnSUcxbGRHRTZJQ2R0WlhSaEp5eGNiaUFnYldWMFpYSTZJQ2R0WlhSbGNpY3NYRzRnSUc1aGRqb2dKMjVoZGljc1hHNGdJRzV2YzJOeWFYQjBPaUFuYm05elkzSnBjSFFuTEZ4dUlDQnZZbXBsWTNRNklDZHZZbXBsWTNRbkxGeHVJQ0J2YkRvZ0oyOXNKeXhjYmlBZ2IzQjBaM0p2ZFhBNklDZHZjSFJuY205MWNDY3NYRzRnSUc5d2RHbHZiam9nSjI5d2RHbHZiaWNzWEc0Z0lHOTFkSEIxZERvZ0oyOTFkSEIxZENjc1hHNGdJSEE2SUNkd0p5eGNiaUFnY0dGeVlXMDZJQ2R3WVhKaGJTY3NYRzRnSUhCcFkzUjFjbVU2SUNkd2FXTjBkWEpsSnl4Y2JpQWdjSEpsT2lBbmNISmxKeXhjYmlBZ2NISnZaM0psYzNNNklDZHdjbTluY21WemN5Y3NYRzRnSUhFNklDZHhKeXhjYmlBZ2NuQTZJQ2R5Y0Njc1hHNGdJSEowT2lBbmNuUW5MRnh1SUNCeWRXSjVPaUFuY25WaWVTY3NYRzRnSUhNNklDZHpKeXhjYmlBZ2MyRnRjRG9nSjNOaGJYQW5MRnh1SUNCelkzSnBjSFE2SUNkelkzSnBjSFFuTEZ4dUlDQnpaV04wYVc5dU9pQW5jMlZqZEdsdmJpY3NYRzRnSUhObGJHVmpkRG9nSjNObGJHVmpkQ2NzWEc0Z0lITnRZV3hzT2lBbmMyMWhiR3duTEZ4dUlDQnpiM1Z5WTJVNklDZHpiM1Z5WTJVbkxGeHVJQ0J6Y0dGdU9pQW5jM0JoYmljc1hHNGdJSE4wY205dVp6b2dKM04wY205dVp5Y3NYRzRnSUhOMGVXeGxPaUFuYzNSNWJHVW5MRnh1SUNCemRXSTZJQ2R6ZFdJbkxGeHVJQ0J6ZFcxdFlYSjVPaUFuYzNWdGJXRnllU2NzWEc0Z0lITjFjRG9nSjNOMWNDY3NYRzRnSUhSaFlteGxPaUFuZEdGaWJHVW5MRnh1SUNCMFltOWtlVG9nSjNSaWIyUjVKeXhjYmlBZ2RHUTZJQ2QwWkNjc1hHNGdJSFJsZUhSaGNtVmhPaUFuZEdWNGRHRnlaV0VuTEZ4dUlDQjBabTl2ZERvZ0ozUm1iMjkwSnl4Y2JpQWdkR2c2SUNkMGFDY3NYRzRnSUhSb1pXRmtPaUFuZEdobFlXUW5MRnh1SUNCMGFXMWxPaUFuZEdsdFpTY3NYRzRnSUhScGRHeGxPaUFuZEdsMGJHVW5MRnh1SUNCMGNqb2dKM1J5Snl4Y2JpQWdkSEpoWTJzNklDZDBjbUZqYXljc1hHNGdJSFU2SUNkMUp5eGNiaUFnZFd3NklDZDFiQ2NzWEc0Z0lDZDJZWEluT2lBbmRtRnlKeXhjYmlBZ2RtbGtaVzg2SUNkMmFXUmxieWNzWEc0Z0lIZGljam9nSjNkaWNpY3NYRzVjYmlBZ0x5OGdVMVpIWEc0Z0lHTnBjbU5zWlRvZ0oyTnBjbU5zWlNjc1hHNGdJR05zYVhCUVlYUm9PaUFuWTJ4cGNGQmhkR2duTEZ4dUlDQmtaV1p6T2lBblpHVm1jeWNzWEc0Z0lHVnNiR2x3YzJVNklDZGxiR3hwY0hObEp5eGNiaUFnWnpvZ0oyY25MRnh1SUNCcGJXRm5aVG9nSjJsdFlXZGxKeXhjYmlBZ2JHbHVaVG9nSjJ4cGJtVW5MRnh1SUNCc2FXNWxZWEpIY21Ga2FXVnVkRG9nSjJ4cGJtVmhja2R5WVdScFpXNTBKeXhjYmlBZ2JXRnphem9nSjIxaGMyc25MRnh1SUNCd1lYUm9PaUFuY0dGMGFDY3NYRzRnSUhCaGRIUmxjbTQ2SUNkd1lYUjBaWEp1Snl4Y2JpQWdjRzlzZVdkdmJqb2dKM0J2YkhsbmIyNG5MRnh1SUNCd2IyeDViR2x1WlRvZ0ozQnZiSGxzYVc1bEp5eGNiaUFnY21Ga2FXRnNSM0poWkdsbGJuUTZJQ2R5WVdScFlXeEhjbUZrYVdWdWRDY3NYRzRnSUhKbFkzUTZJQ2R5WldOMEp5eGNiaUFnYzNSdmNEb2dKM04wYjNBbkxGeHVJQ0J6ZG1jNklDZHpkbWNuTEZ4dUlDQjBaWGgwT2lBbmRHVjRkQ2NzWEc0Z0lIUnpjR0Z1T2lBbmRITndZVzRuWEc1Y2JuMHNJR055WldGMFpVUlBUVVpoWTNSdmNua3BPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBSRTlOUm1GamRHOXlhV1Z6T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01GZWF0dXJlRmxhZ3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHtcbiAgdXNlQ3JlYXRlRWxlbWVudDogZmFsc2Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01GZWF0dXJlRmxhZ3M7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUlET3BlcmF0aW9uc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBFcnJvcnMgZm9yIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHVwZGF0ZWQgd2l0aCBgdXBkYXRlUHJvcGVydHlCeUlEKClgLlxuICpcbiAqIEB0eXBlIHtvYmplY3R9XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlMgPSB7XG4gIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIHNldCB1c2luZyBgdXBkYXRlSW5uZXJIVE1MQnlJRCgpYC4nLFxuICBzdHlsZTogJ2BzdHlsZWAgbXVzdCBiZSBzZXQgdXNpbmcgYHVwZGF0ZVN0eWxlc0J5SUQoKWAuJ1xufTtcblxuLyoqXG4gKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2VzcyB1cGRhdGVzIHRvIERPTSBub2Rlcy5cbiAqL1xudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0ge1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgRE9NIG5vZGUgd2l0aCBuZXcgcHJvcGVydHkgdmFsdWVzLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG9cbiAgICogdXBkYXRlIERPTSBwcm9wZXJ0aWVzIGluIGBET01Qcm9wZXJ0eWAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgbm9kZSB0byB1cGRhdGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEEgdmFsaWQgcHJvcGVydHkgbmFtZSwgc2VlIGBET01Qcm9wZXJ0eWAuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgTmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1cGRhdGVQcm9wZXJ0eUJ5SUQ6IGZ1bmN0aW9uIChpZCwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpZCk7XG4gICAgISFJTlZBTElEX1BST1BFUlRZX0VSUk9SUy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVQcm9wZXJ0eUJ5SUQoLi4uKTogJXMnLCBJTlZBTElEX1BST1BFUlRZX0VSUk9SU1tuYW1lXSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHByb3BlcnR5XG4gICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5zdGVhZCBvZiBpbmFkdmVydGFudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24gaW5pdGlhbCByZW5kZXIuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgbmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIERPTSBub2RlIHRoYXQgZXhpc3RzIGluIHRoZSBkb2N1bWVudCB3aXRoIG1hcmt1cC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIGNoaWxkIHRvIGJlIHJlcGxhY2VkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIERhbmdlcm91cyBtYXJrdXAgdG8gaW5qZWN0IGluIHBsYWNlIG9mIGNoaWxkLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7RGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwfVxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEOiBmdW5jdGlvbiAoaWQsIG1hcmt1cCkge1xuICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKGlkKTtcbiAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAobm9kZSwgbWFya3VwKTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge2FycmF5PHN0cmluZz59IG1hcmt1cCBMaXN0IG9mIG1hcmt1cCBzdHJpbmdzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogZnVuY3Rpb24gKHVwZGF0ZXMsIG1hcmt1cCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXBkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdXBkYXRlc1tpXS5wYXJlbnROb2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHVwZGF0ZXNbaV0ucGFyZW50SUQpO1xuICAgIH1cbiAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1VwZGF0ZXModXBkYXRlcywgbWFya3VwKTtcbiAgfVxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0RE9NSURPcGVyYXRpb25zLCAnUmVhY3RET01JRE9wZXJhdGlvbnMnLCB7XG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDogJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRCcsXG4gIGRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogJ2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcydcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFVsRVQzQmxjbUYwYVc5dWN5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFUlBUVWxFVDNCbGNtRjBhVzl1YzF4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk1nUFNCeVpYRjFhWEpsS0NjdUwwUlBUVU5vYVd4a2NtVnVUM0JsY21GMGFXOXVjeWNwTzF4dWRtRnlJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3lBOUlISmxjWFZwY21Vb0p5NHZSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6SnlrN1hHNTJZWElnVW1WaFkzUk5iM1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmIzVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFVHVnlaaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRWlhKbUp5azdYRzVjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVMeW9xWEc0Z0tpQkZjbkp2Y25NZ1ptOXlJSEJ5YjNCbGNuUnBaWE1nZEdoaGRDQnphRzkxYkdRZ2JtOTBJR0psSUhWd1pHRjBaV1FnZDJsMGFDQmdkWEJrWVhSbFVISnZjR1Z5ZEhsQ2VVbEVLQ2xnTGx4dUlDcGNiaUFxSUVCMGVYQmxJSHR2WW1wbFkzUjlYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzUyWVhJZ1NVNVdRVXhKUkY5UVVrOVFSVkpVV1Y5RlVsSlBVbE1nUFNCN1hHNGdJR1JoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTU9pQW5ZR1JoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTVlDQnRkWE4wSUdKbElITmxkQ0IxYzJsdVp5QmdkWEJrWVhSbFNXNXVaWEpJVkUxTVFubEpSQ2dwWUM0bkxGeHVJQ0J6ZEhsc1pUb2dKMkJ6ZEhsc1pXQWdiWFZ6ZENCaVpTQnpaWFFnZFhOcGJtY2dZSFZ3WkdGMFpWTjBlV3hsYzBKNVNVUW9LV0F1SjF4dWZUdGNibHh1THlvcVhHNGdLaUJQY0dWeVlYUnBiMjV6SUhWelpXUWdkRzhnY0hKdlkyVnpjeUIxY0dSaGRHVnpJSFJ2SUVSUFRTQnViMlJsY3k1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJWY0dSaGRHVnpJR0VnUkU5TklHNXZaR1VnZDJsMGFDQnVaWGNnY0hKdmNHVnlkSGtnZG1Gc2RXVnpMaUJVYUdseklITm9iM1ZzWkNCdmJteDVJR0psSUhWelpXUWdkRzljYmlBZ0lDb2dkWEJrWVhSbElFUlBUU0J3Y205d1pYSjBhV1Z6SUdsdUlHQkVUMDFRY205d1pYSjBlV0F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQkpSQ0J2WmlCMGFHVWdibTlrWlNCMGJ5QjFjR1JoZEdVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J1WVcxbElFRWdkbUZzYVdRZ2NISnZjR1Z5ZEhrZ2JtRnRaU3dnYzJWbElHQkVUMDFRY205d1pYSjBlV0F1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdLbjBnZG1Gc2RXVWdUbVYzSUhaaGJIVmxJRzltSUhSb1pTQndjbTl3WlhKMGVTNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQjFjR1JoZEdWUWNtOXdaWEowZVVKNVNVUTZJR1oxYm1OMGFXOXVJQ2hwWkN3Z2JtRnRaU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQjJZWElnYm05a1pTQTlJRkpsWVdOMFRXOTFiblF1WjJWMFRtOWtaU2hwWkNrN1hHNGdJQ0FnSVNGSlRsWkJURWxFWDFCU1QxQkZVbFJaWDBWU1VrOVNVeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2QxY0dSaGRHVlFjbTl3WlhKMGVVSjVTVVFvTGk0dUtUb2dKWE1uTENCSlRsWkJURWxFWDFCU1QxQkZVbFJaWDBWU1VrOVNVMXR1WVcxbFhTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnTHk4Z1NXWWdkMlVuY21VZ2RYQmtZWFJwYm1jZ2RHOGdiblZzYkNCdmNpQjFibVJsWm1sdVpXUXNJSGRsSUhOb2IzVnNaQ0J5WlcxdmRtVWdkR2hsSUhCeWIzQmxjblI1WEc0Z0lDQWdMeThnWm5KdmJTQjBhR1VnUkU5TklHNXZaR1VnYVc1emRHVmhaQ0J2WmlCcGJtRmtkbVZ5ZEdGdWRHeDVJSE5sZEhScGJtY2dkRzhnWVNCemRISnBibWN1SUZSb2FYTmNiaUFnSUNBdkx5QmljbWx1WjNNZ2RYTWdhVzRnYkdsdVpTQjNhWFJvSUhSb1pTQnpZVzFsSUdKbGFHRjJhVzl5SUhkbElHaGhkbVVnYjI0Z2FXNXBkR2xoYkNCeVpXNWtaWEl1WEc0Z0lDQWdhV1lnS0haaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1elpYUldZV3gxWlVadmNsQnliM0JsY25SNUtHNXZaR1VzSUc1aGJXVXNJSFpoYkhWbEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekxtUmxiR1YwWlZaaGJIVmxSbTl5VUhKdmNHVnlkSGtvYm05a1pTd2dibUZ0WlNrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWEJzWVdObGN5QmhJRVJQVFNCdWIyUmxJSFJvWVhRZ1pYaHBjM1J6SUdsdUlIUm9aU0JrYjJOMWJXVnVkQ0IzYVhSb0lHMWhjbXQxY0M1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRWxFSUc5bUlHTm9hV3hrSUhSdklHSmxJSEpsY0d4aFkyVmtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXRnlhM1Z3SUVSaGJtZGxjbTkxY3lCdFlYSnJkWEFnZEc4Z2FXNXFaV04wSUdsdUlIQnNZV05sSUc5bUlHTm9hV3hrTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb2dRSE5sWlNCN1JHRnVaMlZ5TG1SaGJtZGxjbTkxYzJ4NVVtVndiR0ZqWlU1dlpHVlhhWFJvVFdGeWEzVndmVnh1SUNBZ0tpOWNiaUFnWkdGdVoyVnliM1Z6YkhsU1pYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQkNlVWxFT2lCbWRXNWpkR2x2YmlBb2FXUXNJRzFoY210MWNDa2dlMXh1SUNBZ0lIWmhjaUJ1YjJSbElEMGdVbVZoWTNSTmIzVnVkQzVuWlhST2IyUmxLR2xrS1R0Y2JpQWdJQ0JFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5NdVpHRnVaMlZ5YjNWemJIbFNaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEFvYm05a1pTd2diV0Z5YTNWd0tUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVlhCa1lYUmxjeUJoSUdOdmJYQnZibVZ1ZENkeklHTm9hV3hrY21WdUlHSjVJSEJ5YjJObGMzTnBibWNnWVNCelpYSnBaWE1nYjJZZ2RYQmtZWFJsY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdGhjbkpoZVR4dlltcGxZM1ErZlNCMWNHUmhkR1Z6SUV4cGMzUWdiMllnZFhCa1lYUmxJR052Ym1acFozVnlZWFJwYjI1ekxseHVJQ0FnS2lCQWNHRnlZVzBnZTJGeWNtRjVQSE4wY21sdVp6NTlJRzFoY210MWNDQk1hWE4wSUc5bUlHMWhjbXQxY0NCemRISnBibWR6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdSaGJtZGxjbTkxYzJ4NVVISnZZMlZ6YzBOb2FXeGtjbVZ1VlhCa1lYUmxjem9nWm5WdVkzUnBiMjRnS0hWd1pHRjBaWE1zSUcxaGNtdDFjQ2tnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnZFhCa1lYUmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RYQmtZWFJsYzF0cFhTNXdZWEpsYm5ST2IyUmxJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0hWd1pHRjBaWE5iYVYwdWNHRnlaVzUwU1VRcE8xeHVJQ0FnSUgxY2JpQWdJQ0JFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5NdWNISnZZMlZ6YzFWd1pHRjBaWE1vZFhCa1lYUmxjeXdnYldGeWEzVndLVHRjYmlBZ2ZWeHVmVHRjYmx4dVVtVmhZM1JRWlhKbUxtMWxZWE4xY21WTlpYUm9iMlJ6S0ZKbFlXTjBSRTlOU1VSUGNHVnlZWFJwYjI1ekxDQW5VbVZoWTNSRVQwMUpSRTl3WlhKaGRHbHZibk1uTENCN1hHNGdJR1JoYm1kbGNtOTFjMng1VW1Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd1FubEpSRG9nSjJSaGJtZGxjbTkxYzJ4NVVtVndiR0ZqWlU1dlpHVlhhWFJvVFdGeWEzVndRbmxKUkNjc1hHNGdJR1JoYm1kbGNtOTFjMng1VUhKdlkyVnpjME5vYVd4a2NtVnVWWEJrWVhSbGN6b2dKMlJoYm1kbGNtOTFjMng1VUhKdlkyVnpjME5vYVd4a2NtVnVWWEJrWVhSbGN5ZGNibjBwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01JbnB1dFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdERPTUlET3BlcmF0aW9ucycpO1xudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgaW5zdGFuY2VzQnlSZWFjdElEID0ge307XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBvcHRpb25hbFxuICogcHJvcHM6IGBjaGVja2VkYCwgYHZhbHVlYCwgYGRlZmF1bHRDaGVja2VkYCwgYW5kIGBkZWZhdWx0VmFsdWVgLlxuICpcbiAqIElmIGBjaGVja2VkYCBvciBgdmFsdWVgIGFyZSBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zXG4gKiB0aGF0IGFmZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBvciB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC5cbiAqXG4gKiBJZiB0aGV5IGFyZSBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgbm90XG4gKiB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBwcm9wcyBtdXN0IGNoYW5nZSBpbiBvcmRlciBmb3JcbiAqIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG4gKlxuICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFsaXplZCBhcyB1bmNoZWNrZWQgKG9yIGBkZWZhdWx0Q2hlY2tlZGApXG4gKiB3aXRoIGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVsdFZhbHVlYCkuXG4gKlxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEyL1dELWh0bWw1LTIwMTIxMDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0bWxcbiAqL1xudmFyIFJlYWN0RE9NSW5wdXQgPSB7XG4gIGdldE5hdGl2ZVByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICB2YXIgY2hlY2tlZCA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZChwcm9wcyk7XG5cbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBkZWZhdWx0Q2hlY2tlZDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2YWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIGNoZWNrZWQ6IGNoZWNrZWQgIT0gbnVsbCA/IGNoZWNrZWQgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsXG4gICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmF0aXZlUHJvcHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgIGluaXRpYWxDaGVja2VkOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCB8fCBmYWxzZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogZGVmYXVsdFZhbHVlICE9IG51bGwgPyBkZWZhdWx0VmFsdWUgOiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuICAgIH07XG4gIH0sXG5cbiAgbW91bnRSZWFkeVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gQ2FuJ3QgYmUgaW4gbW91bnRXcmFwcGVyIG9yIGVsc2Ugc2VydmVyIHJlbmRlcmluZyBsZWFrcy5cbiAgICBpbnN0YW5jZXNCeVJlYWN0SURbaW5zdC5fcm9vdE5vZGVJRF0gPSBpbnN0O1xuICB9LFxuXG4gIHVubW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0SURbaW5zdC5fcm9vdE5vZGVJRF07XG4gIH0sXG5cbiAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIFRPRE86IFNob3VsZG4ndCB0aGlzIGJlIGdldENoZWNrZWQocHJvcHMpP1xuICAgIHZhciBjaGVja2VkID0gcHJvcHMuY2hlY2tlZDtcbiAgICBpZiAoY2hlY2tlZCAhPSBudWxsKSB7XG4gICAgICBSZWFjdERPTUlET3BlcmF0aW9ucy51cGRhdGVQcm9wZXJ0eUJ5SUQoaW5zdC5fcm9vdE5vZGVJRCwgJ2NoZWNrZWQnLCBjaGVja2VkIHx8IGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIFJlYWN0RE9NSURPcGVyYXRpb25zLnVwZGF0ZVByb3BlcnR5QnlJRChpbnN0Ll9yb290Tm9kZUlELCAndmFsdWUnLCAnJyArIHZhbHVlKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblxuICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0ZXMgaGF2ZSBwcm9wYWdhdGVkLCB3aGljaFxuICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBjb250cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTtcblxuICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmIChwcm9wcy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkge1xuICAgIHZhciByb290Tm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICB2YXIgcXVlcnlSb290ID0gcm9vdE5vZGU7XG5cbiAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHtcbiAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9vdC5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9uLW51bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCxcbiAgICAvLyBidXQgdGhhdCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNvIHRyeSB1c2luZ1xuICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3QgY2hpbGRyZW5cbiAgICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMgdGhhdCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZVxuICAgIC8vIHRoZSBpbnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3QgdXNlIHRoZSBnbG9iYWxcbiAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhpbmcuXG4gICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBlPVwicmFkaW9cIl0nKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBvdGhlck5vZGUgPSBncm91cFtpXTtcbiAgICAgIGlmIChvdGhlck5vZGUgPT09IHJvb3ROb2RlIHx8IG90aGVyTm9kZS5mb3JtICE9PSByb290Tm9kZS5mb3JtKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIHJhZGlvIGJ1dHRvbnMgcmVuZGVyZWQgYnkgZGlmZmVyZW50IGNvcGllcyBvZiBSZWFjdFxuICAgICAgLy8gYW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVkIGludG8gdGhlIHNhbWUgZm9ybSAoc2FtZSBhcyAjMTkzOSkuXG4gICAgICAvLyBUaGF0J3MgcHJvYmFibHkgb2theTsgd2UgZG9uJ3Qgc3VwcG9ydCBpdCBqdXN0IGFzIHdlIGRvbid0IHN1cHBvcnRcbiAgICAgIC8vIG1peGluZyBSZWFjdCB3aXRoIG5vbi1SZWFjdC5cbiAgICAgIHZhciBvdGhlcklEID0gUmVhY3RNb3VudC5nZXRJRChvdGhlck5vZGUpO1xuICAgICAgIW90aGVySUQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8gaW5wdXRzIHdpdGggdGhlICcgKyAnc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBvcnRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgb3RoZXJJbnN0YW5jZSA9IGluc3RhbmNlc0J5UmVhY3RJRFtvdGhlcklEXTtcbiAgICAgICFvdGhlckluc3RhbmNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6IFVua25vd24gcmFkaW8gYnV0dG9uIElEICVzLicsIG90aGVySUQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIC8vIElmIHRoaXMgaXMgYSBjb250cm9sbGVkIHJhZGlvIGJ1dHRvbiBncm91cCwgZm9yY2luZyB0aGUgaW5wdXQgdGhhdFxuICAgICAgLy8gd2FzIHByZXZpb3VzbHkgY2hlY2tlZCB0byB1cGRhdGUgd2lsbCBjYXVzZSBpdCB0byBiZSBjb21lIHJlLWNoZWNrZWRcbiAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLlxuICAgICAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIG90aGVySW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlucHV0O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFVsdWNIVjBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFUlBUVWx1Y0hWMFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRVQwMUpSRTl3WlhKaGRHbHZibk1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpKeWs3WEc1MllYSWdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5QTlJSEpsY1hWcGNtVW9KeTR2VEdsdWEyVmtWbUZzZFdWVmRHbHNjeWNwTzF4dWRtRnlJRkpsWVdOMFRXOTFiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVFc5MWJuUW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVlhCa1lYUmxjeWNwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiblpoY2lCcGJuTjBZVzVqWlhOQ2VWSmxZV04wU1VRZ1BTQjdmVHRjYmx4dVpuVnVZM1JwYjI0Z1ptOXlZMlZWY0dSaGRHVkpaazF2ZFc1MFpXUW9LU0I3WEc0Z0lHbG1JQ2gwYUdsekxsOXliMjkwVG05a1pVbEVLU0I3WEc0Z0lDQWdMeThnUkU5TklHTnZiWEJ2Ym1WdWRDQnBjeUJ6ZEdsc2JDQnRiM1Z1ZEdWa095QjFjR1JoZEdWY2JpQWdJQ0JTWldGamRFUlBUVWx1Y0hWMExuVndaR0YwWlZkeVlYQndaWElvZEdocGN5azdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUdGdUlEeHBibkIxZEQ0Z2JtRjBhWFpsSUdOdmJYQnZibVZ1ZENCMGFHRjBJR0ZzYkc5M2N5QnpaWFIwYVc1bklIUm9aWE5sSUc5d2RHbHZibUZzWEc0Z0tpQndjbTl3Y3pvZ1lHTm9aV05yWldSZ0xDQmdkbUZzZFdWZ0xDQmdaR1ZtWVhWc2RFTm9aV05yWldSZ0xDQmhibVFnWUdSbFptRjFiSFJXWVd4MVpXQXVYRzRnS2x4dUlDb2dTV1lnWUdOb1pXTnJaV1JnSUc5eUlHQjJZV3gxWldBZ1lYSmxJRzV2ZENCemRYQndiR2xsWkNBb2IzSWdiblZzYkM5MWJtUmxabWx1WldRcExDQjFjMlZ5SUdGamRHbHZibk5jYmlBcUlIUm9ZWFFnWVdabVpXTjBJSFJvWlNCamFHVmphMlZrSUhOMFlYUmxJRzl5SUhaaGJIVmxJSGRwYkd3Z2RISnBaMmRsY2lCMWNHUmhkR1Z6SUhSdklIUm9aU0JsYkdWdFpXNTBMbHh1SUNwY2JpQXFJRWxtSUhSb1pYa2dZWEpsSUhOMWNIQnNhV1ZrSUNoaGJtUWdibTkwSUc1MWJHd3ZkVzVrWldacGJtVmtLU3dnZEdobElISmxibVJsY21Wa0lHVnNaVzFsYm5RZ2QybHNiQ0J1YjNSY2JpQXFJSFJ5YVdkblpYSWdkWEJrWVhSbGN5QjBieUIwYUdVZ1pXeGxiV1Z1ZEM0Z1NXNXpkR1ZoWkN3Z2RHaGxJSEJ5YjNCeklHMTFjM1FnWTJoaGJtZGxJR2x1SUc5eVpHVnlJR1p2Y2x4dUlDb2dkR2hsSUhKbGJtUmxjbVZrSUdWc1pXMWxiblFnZEc4Z1ltVWdkWEJrWVhSbFpDNWNiaUFxWEc0Z0tpQlVhR1VnY21WdVpHVnlaV1FnWld4bGJXVnVkQ0IzYVd4c0lHSmxJR2x1YVhScFlXeHBlbVZrSUdGeklIVnVZMmhsWTJ0bFpDQW9iM0lnWUdSbFptRjFiSFJEYUdWamEyVmtZQ2xjYmlBcUlIZHBkR2dnWVc0Z1pXMXdkSGtnZG1Gc2RXVWdLRzl5SUdCa1pXWmhkV3gwVm1Gc2RXVmdLUzVjYmlBcVhHNGdLaUJBYzJWbElHaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMekl3TVRJdlYwUXRhSFJ0YkRVdE1qQXhNakV3TWpVdmRHaGxMV2x1Y0hWMExXVnNaVzFsYm5RdWFIUnRiRnh1SUNvdlhHNTJZWElnVW1WaFkzUkVUMDFKYm5CMWRDQTlJSHRjYmlBZ1oyVjBUbUYwYVhabFVISnZjSE02SUdaMWJtTjBhVzl1SUNocGJuTjBMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUIyWVd4MVpTQTlJRXhwYm10bFpGWmhiSFZsVlhScGJITXVaMlYwVm1Gc2RXVW9jSEp2Y0hNcE8xeHVJQ0FnSUhaaGNpQmphR1ZqYTJWa0lEMGdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5NW5aWFJEYUdWamEyVmtLSEJ5YjNCektUdGNibHh1SUNBZ0lIWmhjaUJ1WVhScGRtVlFjbTl3Y3lBOUlHRnpjMmxuYmloN2ZTd2djSEp2Y0hNc0lIdGNiaUFnSUNBZ0lHUmxabUYxYkhSRGFHVmphMlZrT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCa1pXWmhkV3gwVm1Gc2RXVTZJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJSFpoYkhWbE9pQjJZV3gxWlNBaFBTQnVkV3hzSUQ4Z2RtRnNkV1VnT2lCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVdWFXNXBkR2xoYkZaaGJIVmxMRnh1SUNBZ0lDQWdZMmhsWTJ0bFpEb2dZMmhsWTJ0bFpDQWhQU0J1ZFd4c0lEOGdZMmhsWTJ0bFpDQTZJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzVwYm1sMGFXRnNRMmhsWTJ0bFpDeGNiaUFnSUNBZ0lHOXVRMmhoYm1kbE9pQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXViMjVEYUdGdVoyVmNiaUFnSUNCOUtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVlYUnBkbVZRY205d2N6dGNiaUFnZlN4Y2JseHVJQ0J0YjNWdWRGZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeWtnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtTm9aV05yVUhKdmNGUjVjR1Z6S0NkcGJuQjFkQ2NzSUhCeWIzQnpMQ0JwYm5OMExsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1ZmIzZHVaWElwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCa1pXWmhkV3gwVm1Gc2RXVWdQU0J3Y205d2N5NWtaV1poZFd4MFZtRnNkV1U3WEc0Z0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxJRDBnZTF4dUlDQWdJQ0FnYVc1cGRHbGhiRU5vWldOclpXUTZJSEJ5YjNCekxtUmxabUYxYkhSRGFHVmphMlZrSUh4OElHWmhiSE5sTEZ4dUlDQWdJQ0FnYVc1cGRHbGhiRlpoYkhWbE9pQmtaV1poZFd4MFZtRnNkV1VnSVQwZ2JuVnNiQ0EvSUdSbFptRjFiSFJXWVd4MVpTQTZJRzUxYkd3c1hHNGdJQ0FnSUNCdmJrTm9ZVzVuWlRvZ1gyaGhibVJzWlVOb1lXNW5aUzVpYVc1a0tHbHVjM1FwWEc0Z0lDQWdmVHRjYmlBZ2ZTeGNibHh1SUNCdGIzVnVkRkpsWVdSNVYzSmhjSEJsY2pvZ1puVnVZM1JwYjI0Z0tHbHVjM1FwSUh0Y2JpQWdJQ0F2THlCRFlXNG5kQ0JpWlNCcGJpQnRiM1Z1ZEZkeVlYQndaWElnYjNJZ1pXeHpaU0J6WlhKMlpYSWdjbVZ1WkdWeWFXNW5JR3hsWVd0ekxseHVJQ0FnSUdsdWMzUmhibU5sYzBKNVVtVmhZM1JKUkZ0cGJuTjBMbDl5YjI5MFRtOWtaVWxFWFNBOUlHbHVjM1E3WEc0Z0lIMHNYRzVjYmlBZ2RXNXRiM1Z1ZEZkeVlYQndaWEk2SUdaMWJtTjBhVzl1SUNocGJuTjBLU0I3WEc0Z0lDQWdaR1ZzWlhSbElHbHVjM1JoYm1ObGMwSjVVbVZoWTNSSlJGdHBibk4wTGw5eWIyOTBUbTlrWlVsRVhUdGNiaUFnZlN4Y2JseHVJQ0IxY0dSaGRHVlhjbUZ3Y0dWeU9pQm1kVzVqZEdsdmJpQW9hVzV6ZENrZ2UxeHVJQ0FnSUhaaGNpQndjbTl3Y3lBOUlHbHVjM1F1WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCek8xeHVYRzRnSUNBZ0x5OGdWRTlFVHpvZ1UyaHZkV3hrYmlkMElIUm9hWE1nWW1VZ1oyVjBRMmhsWTJ0bFpDaHdjbTl3Y3lrL1hHNGdJQ0FnZG1GeUlHTm9aV05yWldRZ1BTQndjbTl3Y3k1amFHVmphMlZrTzF4dUlDQWdJR2xtSUNoamFHVmphMlZrSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUZKbFlXTjBSRTlOU1VSUGNHVnlZWFJwYjI1ekxuVndaR0YwWlZCeWIzQmxjblI1UW5sSlJDaHBibk4wTGw5eWIyOTBUbTlrWlVsRUxDQW5ZMmhsWTJ0bFpDY3NJR05vWldOclpXUWdmSHdnWm1Gc2MyVXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUIyWVd4MVpTQTlJRXhwYm10bFpGWmhiSFZsVlhScGJITXVaMlYwVm1Gc2RXVW9jSEp2Y0hNcE8xeHVJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBdkx5QkRZWE4wSUdCMllXeDFaV0FnZEc4Z1lTQnpkSEpwYm1jZ2RHOGdaVzV6ZFhKbElIUm9aU0IyWVd4MVpTQnBjeUJ6WlhRZ1kyOXljbVZqZEd4NUxpQlhhR2xzWlZ4dUlDQWdJQ0FnTHk4Z1luSnZkM05sY25NZ2RIbHdhV05oYkd4NUlHUnZJSFJvYVhNZ1lYTWdibVZqWlhOellYSjVMQ0JxYzJSdmJTQmtiMlZ6YmlkMExseHVJQ0FnSUNBZ1VtVmhZM1JFVDAxSlJFOXdaWEpoZEdsdmJuTXVkWEJrWVhSbFVISnZjR1Z5ZEhsQ2VVbEVLR2x1YzNRdVgzSnZiM1JPYjJSbFNVUXNJQ2QyWVd4MVpTY3NJQ2NuSUNzZ2RtRnNkV1VwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVHRjYmx4dVpuVnVZM1JwYjI0Z1gyaGhibVJzWlVOb1lXNW5aU2hsZG1WdWRDa2dlMXh1SUNCMllYSWdjSEp2Y0hNZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNibHh1SUNCMllYSWdjbVYwZFhKdVZtRnNkV1VnUFNCTWFXNXJaV1JXWVd4MVpWVjBhV3h6TG1WNFpXTjFkR1ZQYmtOb1lXNW5aU2h3Y205d2N5d2daWFpsYm5RcE8xeHVYRzRnSUM4dklFaGxjbVVnZDJVZ2RYTmxJR0Z6WVhBZ2RHOGdkMkZwZENCMWJuUnBiQ0JoYkd3Z2RYQmtZWFJsY3lCb1lYWmxJSEJ5YjNCaFoyRjBaV1FzSUhkb2FXTm9YRzRnSUM4dklHbHpJR2x0Y0c5eWRHRnVkQ0IzYUdWdUlIVnphVzVuSUdOdmJuUnliMnhzWldRZ1kyOXRjRzl1Wlc1MGN5QjNhWFJvYVc0Z2JHRjVaWEp6T2x4dUlDQXZMeUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2Wm1GalpXSnZiMnN2Y21WaFkzUXZhWE56ZFdWekx6RTJPVGhjYmlBZ1VtVmhZM1JWY0dSaGRHVnpMbUZ6WVhBb1ptOXlZMlZWY0dSaGRHVkpaazF2ZFc1MFpXUXNJSFJvYVhNcE8xeHVYRzRnSUhaaGNpQnVZVzFsSUQwZ2NISnZjSE11Ym1GdFpUdGNiaUFnYVdZZ0tIQnliM0J6TG5SNWNHVWdQVDA5SUNkeVlXUnBieWNnSmlZZ2JtRnRaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdkbUZ5SUhKdmIzUk9iMlJsSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJPYjJSbEtIUm9hWE11WDNKdmIzUk9iMlJsU1VRcE8xeHVJQ0FnSUhaaGNpQnhkV1Z5ZVZKdmIzUWdQU0J5YjI5MFRtOWtaVHRjYmx4dUlDQWdJSGRvYVd4bElDaHhkV1Z5ZVZKdmIzUXVjR0Z5Wlc1MFRtOWtaU2tnZTF4dUlDQWdJQ0FnY1hWbGNubFNiMjkwSUQwZ2NYVmxjbmxTYjI5MExuQmhjbVZ1ZEU1dlpHVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdTV1lnWUhKdmIzUk9iMlJsTG1admNtMWdJSGRoY3lCdWIyNHRiblZzYkN3Z2RHaGxiaUIzWlNCamIzVnNaQ0IwY25rZ1lHWnZjbTB1Wld4bGJXVnVkSE5nTEZ4dUlDQWdJQzh2SUdKMWRDQjBhR0YwSUhOdmJXVjBhVzFsY3lCaVpXaGhkbVZ6SUhOMGNtRnVaMlZzZVNCcGJpQkpSVGd1SUZkbElHTnZkV3hrSUdGc2MyOGdkSEo1SUhWemFXNW5YRzRnSUNBZ0x5OGdZR1p2Y20wdVoyVjBSV3hsYldWdWRITkNlVTVoYldWZ0xDQmlkWFFnZEdoaGRDQjNhV3hzSUc5dWJIa2djbVYwZFhKdUlHUnBjbVZqZENCamFHbHNaSEpsYmx4dUlDQWdJQzh2SUdGdVpDQjNiMjRuZENCcGJtTnNkV1JsSUdsdWNIVjBjeUIwYUdGMElIVnpaU0IwYUdVZ1NGUk5URFVnWUdadmNtMDlZQ0JoZEhSeWFXSjFkR1V1SUZOcGJtTmxYRzRnSUNBZ0x5OGdkR2hsSUdsdWNIVjBJRzFwWjJoMElHNXZkQ0JsZG1WdUlHSmxJR2x1SUdFZ1ptOXliU3dnYkdWMEozTWdhblZ6ZENCMWMyVWdkR2hsSUdkc2IySmhiRnh1SUNBZ0lDOHZJR0J4ZFdWeWVWTmxiR1ZqZEc5eVFXeHNZQ0IwYnlCbGJuTjFjbVVnZDJVZ1pHOXVKM1FnYldsemN5QmhibmwwYUdsdVp5NWNiaUFnSUNCMllYSWdaM0p2ZFhBZ1BTQnhkV1Z5ZVZKdmIzUXVjWFZsY25sVFpXeGxZM1J2Y2tGc2JDZ25hVzV3ZFhSYmJtRnRaVDBuSUNzZ1NsTlBUaTV6ZEhKcGJtZHBabmtvSnljZ0t5QnVZVzFsS1NBcklDZGRXM1I1Y0dVOVhDSnlZV1JwYjF3aVhTY3BPMXh1WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JuY205MWNDNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZG1GeUlHOTBhR1Z5VG05a1pTQTlJR2R5YjNWd1cybGRPMXh1SUNBZ0lDQWdhV1lnS0c5MGFHVnlUbTlrWlNBOVBUMGdjbTl2ZEU1dlpHVWdmSHdnYjNSb1pYSk9iMlJsTG1admNtMGdJVDA5SUhKdmIzUk9iMlJsTG1admNtMHBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2THlCVWFHbHpJSGRwYkd3Z2RHaHliM2NnYVdZZ2NtRmthVzhnWW5WMGRHOXVjeUJ5Wlc1a1pYSmxaQ0JpZVNCa2FXWm1aWEpsYm5RZ1kyOXdhV1Z6SUc5bUlGSmxZV04wWEc0Z0lDQWdJQ0F2THlCaGJtUWdkR2hsSUhOaGJXVWdibUZ0WlNCaGNtVWdjbVZ1WkdWeVpXUWdhVzUwYnlCMGFHVWdjMkZ0WlNCbWIzSnRJQ2h6WVcxbElHRnpJQ014T1RNNUtTNWNiaUFnSUNBZ0lDOHZJRlJvWVhRbmN5QndjbTlpWVdKc2VTQnZhMkY1T3lCM1pTQmtiMjRuZENCemRYQndiM0owSUdsMElHcDFjM1FnWVhNZ2QyVWdaRzl1SjNRZ2MzVndjRzl5ZEZ4dUlDQWdJQ0FnTHk4Z2JXbDRhVzVuSUZKbFlXTjBJSGRwZEdnZ2JtOXVMVkpsWVdOMExseHVJQ0FnSUNBZ2RtRnlJRzkwYUdWeVNVUWdQU0JTWldGamRFMXZkVzUwTG1kbGRFbEVLRzkwYUdWeVRtOWtaU2s3WEc0Z0lDQWdJQ0FoYjNSb1pYSkpSQ0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVSUFRVbHVjSFYwT2lCTmFYaHBibWNnVW1WaFkzUWdZVzVrSUc1dmJpMVNaV0ZqZENCeVlXUnBieUJwYm5CMWRITWdkMmwwYUNCMGFHVWdKeUFySUNkellXMWxJR0J1WVcxbFlDQnBjeUJ1YjNRZ2MzVndjRzl5ZEdWa0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUhaaGNpQnZkR2hsY2tsdWMzUmhibU5sSUQwZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEVsRVcyOTBhR1Z5U1VSZE8xeHVJQ0FnSUNBZ0lXOTBhR1Z5U1c1emRHRnVZMlVnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5VbVZoWTNSRVQwMUpibkIxZERvZ1ZXNXJibTkzYmlCeVlXUnBieUJpZFhSMGIyNGdTVVFnSlhNdUp5d2diM1JvWlhKSlJDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnTHk4Z1NXWWdkR2hwY3lCcGN5QmhJR052Ym5SeWIyeHNaV1FnY21Ga2FXOGdZblYwZEc5dUlHZHliM1Z3TENCbWIzSmphVzVuSUhSb1pTQnBibkIxZENCMGFHRjBYRzRnSUNBZ0lDQXZMeUIzWVhNZ2NISmxkbWx2ZFhOc2VTQmphR1ZqYTJWa0lIUnZJSFZ3WkdGMFpTQjNhV3hzSUdOaGRYTmxJR2wwSUhSdklHSmxJR052YldVZ2NtVXRZMmhsWTJ0bFpGeHVJQ0FnSUNBZ0x5OGdZWE1nWVhCd2NtOXdjbWxoZEdVdVhHNGdJQ0FnSUNCU1pXRmpkRlZ3WkdGMFpYTXVZWE5oY0NobWIzSmpaVlZ3WkdGMFpVbG1UVzkxYm5SbFpDd2diM1JvWlhKSmJuTjBZVzVqWlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhKbGRIVnlibFpoYkhWbE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBSRTlOU1c1d2RYUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTU9wdGlvblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q2hpbGRyZW4gPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRyZW4nKTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3QnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciB2YWx1ZUNvbnRleHRLZXkgPSBSZWFjdERPTVNlbGVjdC52YWx1ZUNvbnRleHRLZXk7XG5cbi8qKlxuICogSW1wbGVtZW50cyBhbiA8b3B0aW9uPiBuYXRpdmUgY29tcG9uZW50IHRoYXQgd2FybnMgd2hlbiBgc2VsZWN0ZWRgIGlzIHNldC5cbiAqL1xudmFyIFJlYWN0RE9NT3B0aW9uID0ge1xuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBgc2VsZWN0ZWRgIGluIDxvcHRpb24+LlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zZWxlY3RlZCA9PSBudWxsLCAnVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIG9uIDxzZWxlY3Q+IGluc3RlYWQgb2YgJyArICdzZXR0aW5nIGBzZWxlY3RlZGAgb24gPG9wdGlvbj4uJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gTG9vayB1cCB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzICdzZWxlY3RlZCcgdmlhIGNvbnRleHRcbiAgICB2YXIgc2VsZWN0VmFsdWUgPSBjb250ZXh0W3ZhbHVlQ29udGV4dEtleV07XG5cbiAgICAvLyBJZiBjb250ZXh0IGtleSBpcyBudWxsIChlLmcuLCBubyBzcGVjaWZpZWQgdmFsdWUgb3IgYWZ0ZXIgaW5pdGlhbCBtb3VudClcbiAgICAvLyBvciBtaXNzaW5nIChlLmcuLCBmb3IgPGRhdGFsaXN0PiksIHdlIGRvbid0IGNoYW5nZSBwcm9wcy5zZWxlY3RlZFxuICAgIHZhciBzZWxlY3RlZCA9IG51bGw7XG4gICAgaWYgKHNlbGVjdFZhbHVlICE9IG51bGwpIHtcbiAgICAgIHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgLy8gbXVsdGlwbGVcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICgnJyArIHNlbGVjdFZhbHVlW2ldID09PSAnJyArIHByb3BzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkID0gJycgKyBzZWxlY3RWYWx1ZSA9PT0gJycgKyBwcm9wcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZCB9O1xuICB9LFxuXG4gIGdldE5hdGl2ZVByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBhc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTtcblxuICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGluaXRpYWwgbW91bnQgYmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlXG4gICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmluZ1xuICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkge1xuICAgICAgbmF0aXZlUHJvcHMuc2VsZWN0ZWQgPSBpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRlbnQgPSAnJztcblxuICAgIC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qgc3RyaW5ncyBvciBudW1iZXJzO1xuICAgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuXG4gICAgUmVhY3RDaGlsZHJlbi5mb3JFYWNoKHByb3BzLmNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29udGVudCArPSBjaGlsZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBzdHJpbmdzIGFuZCBudW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBuYXRpdmVQcm9wcy5jaGlsZHJlbiA9IGNvbnRlbnQ7XG4gICAgcmV0dXJuIG5hdGl2ZVByb3BzO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUlBUVTl3ZEdsdmJpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlQzQjBhVzl1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JEYUdsc1pISmxiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEYUdsc1pISmxiaWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5VMlZzWldOMElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVk5sYkdWamRDY3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlIWmhiSFZsUTI5dWRHVjRkRXRsZVNBOUlGSmxZV04wUkU5TlUyVnNaV04wTG5aaGJIVmxRMjl1ZEdWNGRFdGxlVHRjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHRnVJRHh2Y0hScGIyNCtJRzVoZEdsMlpTQmpiMjF3YjI1bGJuUWdkR2hoZENCM1lYSnVjeUIzYUdWdUlHQnpaV3hsWTNSbFpHQWdhWE1nYzJWMExseHVJQ292WEc1MllYSWdVbVZoWTNSRVQwMVBjSFJwYjI0Z1BTQjdYRzRnSUcxdmRXNTBWM0poY0hCbGNqb2dablZ1WTNScGIyNGdLR2x1YzNRc0lIQnliM0J6TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnTHk4Z1ZFOUVUeUFvZVhWdVozTjBaWEp6S1RvZ1VtVnRiM1psSUhOMWNIQnZjblFnWm05eUlHQnpaV3hsWTNSbFpHQWdhVzRnUEc5d2RHbHZiajR1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSEJ5YjNCekxuTmxiR1ZqZEdWa0lEMDlJRzUxYkd3c0lDZFZjMlVnZEdobElHQmtaV1poZFd4MFZtRnNkV1ZnSUc5eUlHQjJZV3gxWldBZ2NISnZjSE1nYjI0Z1BITmxiR1ZqZEQ0Z2FXNXpkR1ZoWkNCdlppQW5JQ3NnSjNObGRIUnBibWNnWUhObGJHVmpkR1ZrWUNCdmJpQThiM0IwYVc5dVBpNG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCTWIyOXJJSFZ3SUhkb1pYUm9aWElnZEdocGN5QnZjSFJwYjI0Z2FYTWdKM05sYkdWamRHVmtKeUIyYVdFZ1kyOXVkR1Y0ZEZ4dUlDQWdJSFpoY2lCelpXeGxZM1JXWVd4MVpTQTlJR052Ym5SbGVIUmJkbUZzZFdWRGIyNTBaWGgwUzJWNVhUdGNibHh1SUNBZ0lDOHZJRWxtSUdOdmJuUmxlSFFnYTJWNUlHbHpJRzUxYkd3Z0tHVXVaeTRzSUc1dklITndaV05wWm1sbFpDQjJZV3gxWlNCdmNpQmhablJsY2lCcGJtbDBhV0ZzSUcxdmRXNTBLVnh1SUNBZ0lDOHZJRzl5SUcxcGMzTnBibWNnS0dVdVp5NHNJR1p2Y2lBOFpHRjBZV3hwYzNRK0tTd2dkMlVnWkc5dUozUWdZMmhoYm1kbElIQnliM0J6TG5ObGJHVmpkR1ZrWEc0Z0lDQWdkbUZ5SUhObGJHVmpkR1ZrSUQwZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvYzJWc1pXTjBWbUZzZFdVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2MyVnNaV04wWldRZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0hObGJHVmpkRlpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0F2THlCdGRXeDBhWEJzWlZ4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElITmxiR1ZqZEZaaGJIVmxMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NjbklDc2djMlZzWldOMFZtRnNkV1ZiYVYwZ1BUMDlJQ2NuSUNzZ2NISnZjSE11ZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxiR1ZqZEdWa0lEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYzJWc1pXTjBaV1FnUFNBbkp5QXJJSE5sYkdWamRGWmhiSFZsSUQwOVBTQW5KeUFySUhCeWIzQnpMblpoYkhWbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlNBOUlIc2djMlZzWldOMFpXUTZJSE5sYkdWamRHVmtJSDA3WEc0Z0lIMHNYRzVjYmlBZ1oyVjBUbUYwYVhabFVISnZjSE02SUdaMWJtTjBhVzl1SUNocGJuTjBMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJ1WVhScGRtVlFjbTl3Y3lBOUlHRnpjMmxuYmloN0lITmxiR1ZqZEdWa09pQjFibVJsWm1sdVpXUXNJR05vYVd4a2NtVnVPaUIxYm1SbFptbHVaV1FnZlN3Z2NISnZjSE1wTzF4dVhHNGdJQ0FnTHk4Z1VtVmhaQ0J6ZEdGMFpTQnZibXg1SUdaeWIyMGdhVzVwZEdsaGJDQnRiM1Z1ZENCaVpXTmhkWE5sSUR4elpXeGxZM1ErSUhWd1pHRjBaWE1nZG1Gc2RXVmNiaUFnSUNBdkx5QnRZVzUxWVd4c2VUc2dkMlVnYm1WbFpDQjBhR1VnYVc1cGRHbGhiQ0J6ZEdGMFpTQnZibXg1SUdadmNpQnpaWEoyWlhJZ2NtVnVaR1Z5YVc1blhHNGdJQ0FnYVdZZ0tHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXpaV3hsWTNSbFpDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnVZWFJwZG1WUWNtOXdjeTV6Wld4bFkzUmxaQ0E5SUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1elpXeGxZM1JsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ1kyOXVkR1Z1ZENBOUlDY25PMXh1WEc0Z0lDQWdMeThnUm14aGRIUmxiaUJqYUdsc1pISmxiaUJoYm1RZ2QyRnliaUJwWmlCMGFHVjVJR0Z5Wlc0bmRDQnpkSEpwYm1keklHOXlJRzUxYldKbGNuTTdYRzRnSUNBZ0x5OGdhVzUyWVd4cFpDQjBlWEJsY3lCaGNtVWdhV2R1YjNKbFpDNWNiaUFnSUNCU1pXRmpkRU5vYVd4a2NtVnVMbVp2Y2tWaFkyZ29jSEp2Y0hNdVkyaHBiR1J5Wlc0c0lHWjFibU4wYVc5dUlDaGphR2xzWkNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR05vYVd4a0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQmphR2xzWkNBOVBUMGdKM04wY21sdVp5Y2dmSHdnZEhsd1pXOW1JR05vYVd4a0lEMDlQU0FuYm5WdFltVnlKeWtnZTF4dUlDQWdJQ0FnSUNCamIyNTBaVzUwSUNzOUlHTm9hV3hrTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkUGJteDVJSE4wY21sdVozTWdZVzVrSUc1MWJXSmxjbk1nWVhKbElITjFjSEJ2Y25SbFpDQmhjeUE4YjNCMGFXOXVQaUJqYUdsc1pISmxiaTRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNibHh1SUNBZ0lHNWhkR2wyWlZCeWIzQnpMbU5vYVd4a2NtVnVJRDBnWTI5dWRHVnVkRHRjYmlBZ0lDQnlaWFIxY200Z2JtRjBhWFpsVUhKdmNITTdYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRVJQVFU5d2RHbHZianNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01TZWxlY3RcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVxdWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgdmFsdWVDb250ZXh0S2V5ID0gJ19fUmVhY3RET01TZWxlY3RfdmFsdWUkJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG5mdW5jdGlvbiB1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCgpIHtcbiAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQgJiYgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpIHtcbiAgICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdXBkYXRlT3B0aW9ucyh0aGlzLCBwcm9wcywgdmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxudmFyIHZhbHVlUHJvcE5hbWVzID0gWyd2YWx1ZScsICdkZWZhdWx0VmFsdWUnXTtcblxuLyoqXG4gKiBWYWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKSB7XG4gIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93bmVyKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlUHJvcE5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3BOYW1lID0gdmFsdWVQcm9wTmFtZXNbaV07XG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHByb3BzLm11bHRpcGxlKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhBcnJheS5pc0FycmF5KHByb3BzW3Byb3BOYW1lXSksICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFBcnJheS5pc0FycmF5KHByb3BzW3Byb3BOYW1lXSksICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlwbGVgIGlzIGZhbHNlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGluc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVsdGlwbGVcbiAqIEBwYXJhbSB7Kn0gcHJvcFZhbHVlIEEgc3RyaW5nYWJsZSAod2l0aCBgbXVsdGlwbGVgLCBhIGxpc3Qgb2Ygc3RyaW5nYWJsZXMpLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT3B0aW9ucyhpbnN0LCBtdWx0aXBsZSwgcHJvcFZhbHVlKSB7XG4gIHZhciBzZWxlY3RlZFZhbHVlLCBpO1xuICB2YXIgb3B0aW9ucyA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpbnN0Ll9yb290Tm9kZUlEKS5vcHRpb25zO1xuXG4gIGlmIChtdWx0aXBsZSkge1xuICAgIHNlbGVjdGVkVmFsdWUgPSB7fTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzZWxlY3RlZFZhbHVlWycnICsgcHJvcFZhbHVlW2ldXSA9IHRydWU7XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlLmhhc093blByb3BlcnR5KG9wdGlvbnNbaV0udmFsdWUpO1xuICAgICAgaWYgKG9wdGlvbnNbaV0uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IHNldCBgc2VsZWN0LnZhbHVlYCBhcyBleGFjdCBiZWhhdmlvciBpc24ndCBjb25zaXN0ZW50IGFjcm9zcyBhbGxcbiAgICAvLyBicm93c2VycyBmb3IgYWxsIGNhc2VzLlxuICAgIHNlbGVjdGVkVmFsdWUgPSAnJyArIHByb3BWYWx1ZTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9wdGlvbnNbaV0udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBvcHRpb25zWzBdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgPHNlbGVjdD4gbmF0aXZlIGNvbXBvbmVudCB0aGF0IGFsbG93cyBvcHRpb25hbGx5IHNldHRpbmcgdGhlXG4gKiBwcm9wcyBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC4gSWYgYG11bHRpcGxlYCBpcyBmYWxzZSwgdGhlIHByb3AgbXVzdCBiZSBhXG4gKiBzdHJpbmdhYmxlLiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRoZSBwcm9wIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMuXG4gKlxuICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgY2hhbmdlIHRoZVxuICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuICpcbiAqIElmIGl0IGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIG9wdGlvbnMgd2lsbCBub3RcbiAqIHVwZGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgb3B0aW9ucyB0byB1cGRhdGUuXG4gKlxuICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRpb25zIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3aWxsIGJlXG4gKiBzZWxlY3RlZC5cbiAqL1xudmFyIFJlYWN0RE9NU2VsZWN0ID0ge1xuICB2YWx1ZUNvbnRleHRLZXk6IHZhbHVlQ29udGV4dEtleSxcblxuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2UsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLFxuICAgICAgaW5pdGlhbFZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBwcm9wcy5kZWZhdWx0VmFsdWUsXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpLFxuICAgICAgd2FzTXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpXG4gICAgfTtcbiAgfSxcblxuICBwcm9jZXNzQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICAvLyBQYXNzIGRvd24gaW5pdGlhbCB2YWx1ZSBzbyBpbml0aWFsIGdlbmVyYXRlZCBtYXJrdXAgaGFzIGNvcnJlY3RcbiAgICAvLyBgc2VsZWN0ZWRgIGF0dHJpYnV0ZXNcbiAgICB2YXIgY2hpbGRDb250ZXh0ID0gYXNzaWduKHt9LCBjb250ZXh0KTtcbiAgICBjaGlsZENvbnRleHRbdmFsdWVDb250ZXh0S2V5XSA9IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7XG4gICAgcmV0dXJuIGNoaWxkQ29udGV4dDtcbiAgfSxcblxuICBwb3N0VXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIEFmdGVyIHRoZSBpbml0aWFsIG1vdW50LCB3ZSBjb250cm9sIHNlbGVjdGVkLW5lc3MgbWFudWFsbHkgc28gZG9uJ3QgcGFzc1xuICAgIC8vIHRoZSBjb250ZXh0IHZhbHVlIGRvd25cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkO1xuXG4gICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpO1xuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG4gICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtcbiAgICAgIC8vIEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMgdG9nZ2xlZC5cbiAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxlY3QgYmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLlxuICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDogJycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblxuICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IHRydWU7XG4gIFJlYWN0VXBkYXRlcy5hc2FwKHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkLCB0aGlzKTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFZObGJHVmpkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlUyVnNaV04wWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3lBOUlISmxjWFZwY21Vb0p5NHZUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5Y3BPMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUVzkxYm5RbktUdGNiblpoY2lCU1pXRmpkRlZ3WkdGMFpYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBWWEJrWVhSbGN5Y3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlIWmhiSFZsUTI5dWRHVjRkRXRsZVNBOUlDZGZYMUpsWVdOMFJFOU5VMlZzWldOMFgzWmhiSFZsSkNjZ0t5Qk5ZWFJvTG5KaGJtUnZiU2dwTG5SdlUzUnlhVzVuS0RNMktTNXpiR2xqWlNneUtUdGNibHh1Wm5WdVkzUnBiMjRnZFhCa1lYUmxUM0IwYVc5dWMwbG1VR1Z1WkdsdVoxVndaR0YwWlVGdVpFMXZkVzUwWldRb0tTQjdYRzRnSUdsbUlDaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUlDWW1JSFJvYVhNdVgzZHlZWEJ3WlhKVGRHRjBaUzV3Wlc1a2FXNW5WWEJrWVhSbEtTQjdYRzRnSUNBZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbExuQmxibVJwYm1kVmNHUmhkR1VnUFNCbVlXeHpaVHRjYmx4dUlDQWdJSFpoY2lCd2NtOXdjeUE5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuQnliM0J6TzF4dUlDQWdJSFpoY2lCMllXeDFaU0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WjJWMFZtRnNkV1VvY0hKdmNITXBPMXh1WEc0Z0lDQWdhV1lnS0haaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSFZ3WkdGMFpVOXdkR2x2Ym5Nb2RHaHBjeXdnY0hKdmNITXNJSFpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLRzkzYm1WeUtTQjdYRzRnSUdsbUlDaHZkMjVsY2lrZ2UxeHVJQ0FnSUhaaGNpQnVZVzFsSUQwZ2IzZHVaWEl1WjJWMFRtRnRaU2dwTzF4dUlDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeUJEYUdWamF5QjBhR1VnY21WdVpHVnlJRzFsZEdodlpDQnZaaUJnSnlBcklHNWhiV1VnS3lBbllDNG5PMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z0p5YzdYRzU5WEc1Y2JuWmhjaUIyWVd4MVpWQnliM0JPWVcxbGN5QTlJRnNuZG1Gc2RXVW5MQ0FuWkdWbVlYVnNkRlpoYkhWbEoxMDdYRzVjYmk4cUtseHVJQ29nVm1Gc2FXUmhkR2x2YmlCbWRXNWpkR2x2YmlCbWIzSWdZSFpoYkhWbFlDQmhibVFnWUdSbFptRjFiSFJXWVd4MVpXQXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJqYUdWamExTmxiR1ZqZEZCeWIzQlVlWEJsY3locGJuTjBMQ0J3Y205d2N5a2dlMXh1SUNCMllYSWdiM2R1WlhJZ1BTQnBibk4wTGw5amRYSnlaVzUwUld4bGJXVnVkQzVmYjNkdVpYSTdYRzRnSUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WTJobFkydFFjbTl3Vkhsd1pYTW9KM05sYkdWamRDY3NJSEJ5YjNCekxDQnZkMjVsY2lrN1hHNWNiaUFnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCMllXeDFaVkJ5YjNCT1lXMWxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUhaaGNpQndjbTl3VG1GdFpTQTlJSFpoYkhWbFVISnZjRTVoYldWelcybGRPMXh1SUNBZ0lHbG1JQ2h3Y205d2MxdHdjbTl3VG1GdFpWMGdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHdjbTl3Y3k1dGRXeDBhWEJzWlNrZ2UxeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29RWEp5WVhrdWFYTkJjbkpoZVNod2NtOXdjMXR3Y205d1RtRnRaVjBwTENBblZHaGxJR0FsYzJBZ2NISnZjQ0J6ZFhCd2JHbGxaQ0IwYnlBOGMyVnNaV04wUGlCdGRYTjBJR0psSUdGdUlHRnljbUY1SUdsbUlDY2dLeUFuWUcxMWJIUnBjR3hsWUNCcGN5QjBjblZsTGlWekp5d2djSEp2Y0U1aGJXVXNJR2RsZEVSbFkyeGhjbUYwYVc5dVJYSnliM0pCWkdSbGJtUjFiU2h2ZDI1bGNpa3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWdoUVhKeVlYa3VhWE5CY25KaGVTaHdjbTl3YzF0d2NtOXdUbUZ0WlYwcExDQW5WR2hsSUdBbGMyQWdjSEp2Y0NCemRYQndiR2xsWkNCMGJ5QThjMlZzWldOMFBpQnRkWE4wSUdKbElHRWdjMk5oYkdGeUlDY2dLeUFuZG1Gc2RXVWdhV1lnWUcxMWJIUnBjR3hsWUNCcGN5Qm1ZV3h6WlM0bGN5Y3NJSEJ5YjNCT1lXMWxMQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvYjNkdVpYSXBLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBSRTlOUTI5dGNHOXVaVzUwZlNCcGJuTjBYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUcxMWJIUnBjR3hsWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSEJ5YjNCV1lXeDFaU0JCSUhOMGNtbHVaMkZpYkdVZ0tIZHBkR2dnWUcxMWJIUnBjR3hsWUN3Z1lTQnNhWE4wSUc5bUlITjBjbWx1WjJGaWJHVnpLUzVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUhWd1pHRjBaVTl3ZEdsdmJuTW9hVzV6ZEN3Z2JYVnNkR2x3YkdVc0lIQnliM0JXWVd4MVpTa2dlMXh1SUNCMllYSWdjMlZzWldOMFpXUldZV3gxWlN3Z2FUdGNiaUFnZG1GeUlHOXdkR2x2Ym5NZ1BTQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVW9hVzV6ZEM1ZmNtOXZkRTV2WkdWSlJDa3ViM0IwYVc5dWN6dGNibHh1SUNCcFppQW9iWFZzZEdsd2JHVXBJSHRjYmlBZ0lDQnpaV3hsWTNSbFpGWmhiSFZsSUQwZ2UzMDdYRzRnSUNBZ1ptOXlJQ2hwSUQwZ01Ec2dhU0E4SUhCeWIzQldZV3gxWlM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdjMlZzWldOMFpXUldZV3gxWlZzbkp5QXJJSEJ5YjNCV1lXeDFaVnRwWFYwZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ0lDQm1iM0lnS0drZ1BTQXdPeUJwSUR3Z2IzQjBhVzl1Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdkbUZ5SUhObGJHVmpkR1ZrSUQwZ2MyVnNaV04wWldSV1lXeDFaUzVvWVhOUGQyNVFjbTl3WlhKMGVTaHZjSFJwYjI1elcybGRMblpoYkhWbEtUdGNiaUFnSUNBZ0lHbG1JQ2h2Y0hScGIyNXpXMmxkTG5ObGJHVmpkR1ZrSUNFOVBTQnpaV3hsWTNSbFpDa2dlMXh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpXMmxkTG5ObGJHVmpkR1ZrSUQwZ2MyVnNaV04wWldRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUM4dklFUnZJRzV2ZENCelpYUWdZSE5sYkdWamRDNTJZV3gxWldBZ1lYTWdaWGhoWTNRZ1ltVm9ZWFpwYjNJZ2FYTnVKM1FnWTI5dWMybHpkR1Z1ZENCaFkzSnZjM01nWVd4c1hHNGdJQ0FnTHk4Z1luSnZkM05sY25NZ1ptOXlJR0ZzYkNCallYTmxjeTVjYmlBZ0lDQnpaV3hsWTNSbFpGWmhiSFZsSUQwZ0p5Y2dLeUJ3Y205d1ZtRnNkV1U3WEc0Z0lDQWdabTl5SUNocElEMGdNRHNnYVNBOElHOXdkR2x2Ym5NdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR2xtSUNodmNIUnBiMjV6VzJsZExuWmhiSFZsSUQwOVBTQnpaV3hsWTNSbFpGWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5OYmFWMHVjMlZzWldOMFpXUWdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjMXN3WFM1elpXeGxZM1JsWkNBOUlIUnlkV1U3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCaElEeHpaV3hsWTNRK0lHNWhkR2wyWlNCamIyMXdiMjVsYm5RZ2RHaGhkQ0JoYkd4dmQzTWdiM0IwYVc5dVlXeHNlU0J6WlhSMGFXNW5JSFJvWlZ4dUlDb2djSEp2Y0hNZ1lIWmhiSFZsWUNCaGJtUWdZR1JsWm1GMWJIUldZV3gxWldBdUlFbG1JR0J0ZFd4MGFYQnNaV0FnYVhNZ1ptRnNjMlVzSUhSb1pTQndjbTl3SUcxMWMzUWdZbVVnWVZ4dUlDb2djM1J5YVc1bllXSnNaUzRnU1dZZ1lHMTFiSFJwY0d4bFlDQnBjeUIwY25WbExDQjBhR1VnY0hKdmNDQnRkWE4wSUdKbElHRnVJR0Z5Y21GNUlHOW1JSE4wY21sdVoyRmliR1Z6TGx4dUlDcGNiaUFxSUVsbUlHQjJZV3gxWldBZ2FYTWdibTkwSUhOMWNIQnNhV1ZrSUNodmNpQnVkV3hzTDNWdVpHVm1hVzVsWkNrc0lIVnpaWElnWVdOMGFXOXVjeUIwYUdGMElHTm9ZVzVuWlNCMGFHVmNiaUFxSUhObGJHVmpkR1ZrSUc5d2RHbHZiaUIzYVd4c0lIUnlhV2RuWlhJZ2RYQmtZWFJsY3lCMGJ5QjBhR1VnY21WdVpHVnlaV1FnYjNCMGFXOXVjeTVjYmlBcVhHNGdLaUJKWmlCcGRDQnBjeUJ6ZFhCd2JHbGxaQ0FvWVc1a0lHNXZkQ0J1ZFd4c0wzVnVaR1ZtYVc1bFpDa3NJSFJvWlNCeVpXNWtaWEpsWkNCdmNIUnBiMjV6SUhkcGJHd2dibTkwWEc0Z0tpQjFjR1JoZEdVZ2FXNGdjbVZ6Y0c5dWMyVWdkRzhnZFhObGNpQmhZM1JwYjI1ekxpQkpibk4wWldGa0xDQjBhR1VnWUhaaGJIVmxZQ0J3Y205d0lHMTFjM1FnWTJoaGJtZGxJR2x1WEc0Z0tpQnZjbVJsY2lCbWIzSWdkR2hsSUhKbGJtUmxjbVZrSUc5d2RHbHZibk1nZEc4Z2RYQmtZWFJsTGx4dUlDcGNiaUFxSUVsbUlHQmtaV1poZFd4MFZtRnNkV1ZnSUdseklIQnliM1pwWkdWa0xDQmhibmtnYjNCMGFXOXVjeUIzYVhSb0lIUm9aU0J6ZFhCd2JHbGxaQ0IyWVd4MVpYTWdkMmxzYkNCaVpWeHVJQ29nYzJWc1pXTjBaV1F1WEc0Z0tpOWNiblpoY2lCU1pXRmpkRVJQVFZObGJHVmpkQ0E5SUh0Y2JpQWdkbUZzZFdWRGIyNTBaWGgwUzJWNU9pQjJZV3gxWlVOdmJuUmxlSFJMWlhrc1hHNWNiaUFnWjJWMFRtRjBhWFpsVUhKdmNITTZJR1oxYm1OMGFXOXVJQ2hwYm5OMExDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUJoYzNOcFoyNG9lMzBzSUhCeWIzQnpMQ0I3WEc0Z0lDQWdJQ0J2YmtOb1lXNW5aVG9nYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG05dVEyaGhibWRsTEZ4dUlDQWdJQ0FnZG1Gc2RXVTZJSFZ1WkdWbWFXNWxaRnh1SUNBZ0lIMHBPMXh1SUNCOUxGeHVYRzRnSUcxdmRXNTBWM0poY0hCbGNqb2dablZ1WTNScGIyNGdLR2x1YzNRc0lIQnliM0J6S1NCN1hHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJR05vWldOclUyVnNaV04wVUhKdmNGUjVjR1Z6S0dsdWMzUXNJSEJ5YjNCektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdkbUZzZFdVZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtZGxkRlpoYkhWbEtIQnliM0J6S1R0Y2JpQWdJQ0JwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1VnUFNCN1hHNGdJQ0FnSUNCd1pXNWthVzVuVlhCa1lYUmxPaUJtWVd4elpTeGNiaUFnSUNBZ0lHbHVhWFJwWVd4V1lXeDFaVG9nZG1Gc2RXVWdJVDBnYm5Wc2JDQS9JSFpoYkhWbElEb2djSEp2Y0hNdVpHVm1ZWFZzZEZaaGJIVmxMRnh1SUNBZ0lDQWdiMjVEYUdGdVoyVTZJRjlvWVc1a2JHVkRhR0Z1WjJVdVltbHVaQ2hwYm5OMEtTeGNiaUFnSUNBZ0lIZGhjMDExYkhScGNHeGxPaUJDYjI5c1pXRnVLSEJ5YjNCekxtMTFiSFJwY0d4bEtWeHVJQ0FnSUgwN1hHNGdJSDBzWEc1Y2JpQWdjSEp2WTJWemMwTm9hV3hrUTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRnS0dsdWMzUXNJSEJ5YjNCekxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0x5OGdVR0Z6Y3lCa2IzZHVJR2x1YVhScFlXd2dkbUZzZFdVZ2MyOGdhVzVwZEdsaGJDQm5aVzVsY21GMFpXUWdiV0Z5YTNWd0lHaGhjeUJqYjNKeVpXTjBYRzRnSUNBZ0x5OGdZSE5sYkdWamRHVmtZQ0JoZEhSeWFXSjFkR1Z6WEc0Z0lDQWdkbUZ5SUdOb2FXeGtRMjl1ZEdWNGRDQTlJR0Z6YzJsbmJpaDdmU3dnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdZMmhwYkdSRGIyNTBaWGgwVzNaaGJIVmxRMjl1ZEdWNGRFdGxlVjBnUFNCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVdWFXNXBkR2xoYkZaaGJIVmxPMXh1SUNBZ0lISmxkSFZ5YmlCamFHbHNaRU52Ym5SbGVIUTdYRzRnSUgwc1hHNWNiaUFnY0c5emRGVndaR0YwWlZkeVlYQndaWEk2SUdaMWJtTjBhVzl1SUNocGJuTjBLU0I3WEc0Z0lDQWdkbUZ5SUhCeWIzQnpJRDBnYVc1emRDNWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWNISnZjSE03WEc1Y2JpQWdJQ0F2THlCQlpuUmxjaUIwYUdVZ2FXNXBkR2xoYkNCdGIzVnVkQ3dnZDJVZ1kyOXVkSEp2YkNCelpXeGxZM1JsWkMxdVpYTnpJRzFoYm5WaGJHeDVJSE52SUdSdmJpZDBJSEJoYzNOY2JpQWdJQ0F2THlCMGFHVWdZMjl1ZEdWNGRDQjJZV3gxWlNCa2IzZHVYRzRnSUNBZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExtbHVhWFJwWVd4V1lXeDFaU0E5SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhaaGNpQjNZWE5OZFd4MGFYQnNaU0E5SUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1M1lYTk5kV3gwYVhCc1pUdGNiaUFnSUNCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVdWQyRnpUWFZzZEdsd2JHVWdQU0JDYjI5c1pXRnVLSEJ5YjNCekxtMTFiSFJwY0d4bEtUdGNibHh1SUNBZ0lIWmhjaUIyWVd4MVpTQTlJRXhwYm10bFpGWmhiSFZsVlhScGJITXVaMlYwVm1Gc2RXVW9jSEp2Y0hNcE8xeHVJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVdWNHVnVaR2x1WjFWd1pHRjBaU0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdkWEJrWVhSbFQzQjBhVzl1Y3locGJuTjBMQ0JDYjI5c1pXRnVLSEJ5YjNCekxtMTFiSFJwY0d4bEtTd2dkbUZzZFdVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2QyRnpUWFZzZEdsd2JHVWdJVDA5SUVKdmIyeGxZVzRvY0hKdmNITXViWFZzZEdsd2JHVXBLU0I3WEc0Z0lDQWdJQ0F2THlCR2IzSWdjMmx0Y0d4cFkybDBlU3dnY21WaGNIQnNlU0JnWkdWbVlYVnNkRlpoYkhWbFlDQnBaaUJnYlhWc2RHbHdiR1ZnSUdseklIUnZaMmRzWldRdVhHNGdJQ0FnSUNCcFppQW9jSEp2Y0hNdVpHVm1ZWFZzZEZaaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnZFhCa1lYUmxUM0IwYVc5dWN5aHBibk4wTENCQ2IyOXNaV0Z1S0hCeWIzQnpMbTExYkhScGNHeGxLU3dnY0hKdmNITXVaR1ZtWVhWc2RGWmhiSFZsS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUM4dklGSmxkbVZ5ZENCMGFHVWdjMlZzWldOMElHSmhZMnNnZEc4Z2FYUnpJR1JsWm1GMWJIUWdkVzV6Wld4bFkzUmxaQ0J6ZEdGMFpTNWNiaUFnSUNBZ0lDQWdkWEJrWVhSbFQzQjBhVzl1Y3locGJuTjBMQ0JDYjI5c1pXRnVLSEJ5YjNCekxtMTFiSFJwY0d4bEtTd2djSEp2Y0hNdWJYVnNkR2x3YkdVZ1B5QmJYU0E2SUNjbktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibVoxYm1OMGFXOXVJRjlvWVc1a2JHVkRhR0Z1WjJVb1pYWmxiblFwSUh0Y2JpQWdkbUZ5SUhCeWIzQnpJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWNISnZjSE03WEc0Z0lIWmhjaUJ5WlhSMWNtNVdZV3gxWlNBOUlFeHBibXRsWkZaaGJIVmxWWFJwYkhNdVpYaGxZM1YwWlU5dVEyaGhibWRsS0hCeWIzQnpMQ0JsZG1WdWRDazdYRzVjYmlBZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbExuQmxibVJwYm1kVmNHUmhkR1VnUFNCMGNuVmxPMXh1SUNCU1pXRmpkRlZ3WkdGMFpYTXVZWE5oY0NoMWNHUmhkR1ZQY0hScGIyNXpTV1pRWlc1a2FXNW5WWEJrWVhSbFFXNWtUVzkxYm5SbFpDd2dkR2hwY3lrN1hHNGdJSEpsZEhWeWJpQnlaWFIxY201V1lXeDFaVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRWTmxiR1ZqZERzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01TZWxlY3Rpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0ID0gcmVxdWlyZSgnLi9nZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0Jyk7XG52YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IHJlcXVpcmUoJy4vZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcicpO1xuXG4vKipcbiAqIFdoaWxlIGBpc0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG9uIHRoZSBTZWxlY3Rpb24gb2JqZWN0IGFuZCBgY29sbGFwc2VkYFxuICogaXMgYXZhaWxhYmxlIG9uIHRoZSBSYW5nZSBvYmplY3QsIElFMTEgc29tZXRpbWVzIGdldHMgdGhlbSB3cm9uZy5cbiAqIElmIHRoZSBhbmNob3IvZm9jdXMgbm9kZXMgYW5kIG9mZnNldHMgYXJlIHRoZSBzYW1lLCB0aGUgcmFuZ2UgaXMgY29sbGFwc2VkLlxuICovXG5mdW5jdGlvbiBpc0NvbGxhcHNlZChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQsIGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpIHtcbiAgcmV0dXJuIGFuY2hvck5vZGUgPT09IGZvY3VzTm9kZSAmJiBhbmNob3JPZmZzZXQgPT09IGZvY3VzT2Zmc2V0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXBwcm9wcmlhdGUgYW5jaG9yIGFuZCBmb2N1cyBub2RlL29mZnNldCBwYWlycyBmb3IgSUUuXG4gKlxuICogVGhlIGNhdGNoIGhlcmUgaXMgdGhhdCBJRSdzIHNlbGVjdGlvbiBBUEkgZG9lc24ndCBwcm92aWRlIGluZm9ybWF0aW9uXG4gKiBhYm91dCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgZm9yd2FyZCBvciBiYWNrd2FyZCwgc28gd2UgaGF2ZSB0b1xuICogYmVoYXZlIGFzIHRob3VnaCBpdCdzIGFsd2F5cyBmb3J3YXJkLlxuICpcbiAqIElFIHRleHQgZGlmZmVycyBmcm9tIG1vZGVybiBzZWxlY3Rpb24gaW4gdGhhdCBpdCBiZWhhdmVzIGFzIHRob3VnaFxuICogYmxvY2sgZWxlbWVudHMgZW5kIHdpdGggYSBuZXcgbGluZS4gVGhpcyBtZWFucyBjaGFyYWN0ZXIgb2Zmc2V0cyB3aWxsXG4gKiBkaWZmZXIgYmV0d2VlbiB0aGUgdHdvIEFQSXMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldElFT2Zmc2V0cyhub2RlKSB7XG4gIHZhciBzZWxlY3Rpb24gPSBkb2N1bWVudC5zZWxlY3Rpb247XG4gIHZhciBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG4gIHZhciBzZWxlY3RlZExlbmd0aCA9IHNlbGVjdGVkUmFuZ2UudGV4dC5sZW5ndGg7XG5cbiAgLy8gRHVwbGljYXRlIHNlbGVjdGlvbiBzbyB3ZSBjYW4gbW92ZSByYW5nZSB3aXRob3V0IGJyZWFraW5nIHVzZXIgc2VsZWN0aW9uLlxuICB2YXIgZnJvbVN0YXJ0ID0gc2VsZWN0ZWRSYW5nZS5kdXBsaWNhdGUoKTtcbiAgZnJvbVN0YXJ0Lm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpO1xuICBmcm9tU3RhcnQuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBzZWxlY3RlZFJhbmdlKTtcblxuICB2YXIgc3RhcnRPZmZzZXQgPSBmcm9tU3RhcnQudGV4dC5sZW5ndGg7XG4gIHZhciBlbmRPZmZzZXQgPSBzdGFydE9mZnNldCArIHNlbGVjdGVkTGVuZ3RoO1xuXG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IHN0YXJ0T2Zmc2V0LFxuICAgIGVuZDogZW5kT2Zmc2V0XG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJuIHs/b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRNb2Rlcm5PZmZzZXRzKG5vZGUpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24gJiYgd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgYW5jaG9yTm9kZSA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICB2YXIgYW5jaG9yT2Zmc2V0ID0gc2VsZWN0aW9uLmFuY2hvck9mZnNldDtcbiAgdmFyIGZvY3VzTm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGU7XG4gIHZhciBmb2N1c09mZnNldCA9IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcblxuICB2YXIgY3VycmVudFJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG5cbiAgLy8gSW4gRmlyZWZveCwgcmFuZ2Uuc3RhcnRDb250YWluZXIgYW5kIHJhbmdlLmVuZENvbnRhaW5lciBjYW4gYmUgXCJhbm9ueW1vdXNcbiAgLy8gZGl2c1wiLCBlLmcuIHRoZSB1cC9kb3duIGJ1dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9XCJudW1iZXJcIj4uIEFub255bW91c1xuICAvLyBkaXZzIGRvIG5vdCBzZWVtIHRvIGV4cG9zZSBwcm9wZXJ0aWVzLCB0cmlnZ2VyaW5nIGEgXCJQZXJtaXNzaW9uIGRlbmllZFxuICAvLyBlcnJvclwiIGlmIGFueSBvZiBpdHMgcHJvcGVydGllcyBhcmUgYWNjZXNzZWQuIFRoZSBvbmx5IHNlZW1pbmdseSBwb3NzaWJsZVxuICAvLyB3YXkgdG8gYXZvaWQgZXJyb3JpbmcgaXMgdG8gYWNjZXNzIGEgcHJvcGVydHkgdGhhdCB0eXBpY2FsbHkgd29ya3MgZm9yXG4gIC8vIG5vbi1hbm9ueW1vdXMgZGl2cyBhbmQgY2F0Y2ggYW55IGVycm9yIHRoYXQgbWF5IG90aGVyd2lzZSBhcmlzZS4gU2VlXG4gIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQyN1xuICB0cnkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICAgIGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVHlwZTtcbiAgICBjdXJyZW50UmFuZ2UuZW5kQ29udGFpbmVyLm5vZGVUeXBlO1xuICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIElmIHRoZSBub2RlIGFuZCBvZmZzZXQgdmFsdWVzIGFyZSB0aGUgc2FtZSwgdGhlIHNlbGVjdGlvbiBpcyBjb2xsYXBzZWQuXG4gIC8vIGBTZWxlY3Rpb24uaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBuYXRpdmVseSwgYnV0IElFIHNvbWV0aW1lcyBnZXRzXG4gIC8vIHRoaXMgdmFsdWUgd3JvbmcuXG4gIHZhciBpc1NlbGVjdGlvbkNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkKHNlbGVjdGlvbi5hbmNob3JOb2RlLCBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LCBzZWxlY3Rpb24uZm9jdXNOb2RlLCBzZWxlY3Rpb24uZm9jdXNPZmZzZXQpO1xuXG4gIHZhciByYW5nZUxlbmd0aCA9IGlzU2VsZWN0aW9uQ29sbGFwc2VkID8gMCA6IGN1cnJlbnRSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblxuICB2YXIgdGVtcFJhbmdlID0gY3VycmVudFJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgdGVtcFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgdGVtcFJhbmdlLnNldEVuZChjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIsIGN1cnJlbnRSYW5nZS5zdGFydE9mZnNldCk7XG5cbiAgdmFyIGlzVGVtcFJhbmdlQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQodGVtcFJhbmdlLnN0YXJ0Q29udGFpbmVyLCB0ZW1wUmFuZ2Uuc3RhcnRPZmZzZXQsIHRlbXBSYW5nZS5lbmRDb250YWluZXIsIHRlbXBSYW5nZS5lbmRPZmZzZXQpO1xuXG4gIHZhciBzdGFydCA9IGlzVGVtcFJhbmdlQ29sbGFwc2VkID8gMCA6IHRlbXBSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcbiAgdmFyIGVuZCA9IHN0YXJ0ICsgcmFuZ2VMZW5ndGg7XG5cbiAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBiYWNrd2FyZC5cbiAgdmFyIGRldGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgZGV0ZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0KTtcbiAgZGV0ZWN0aW9uUmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICB2YXIgaXNCYWNrd2FyZCA9IGRldGVjdGlvblJhbmdlLmNvbGxhcHNlZDtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBpc0JhY2t3YXJkID8gZW5kIDogc3RhcnQsXG4gICAgZW5kOiBpc0JhY2t3YXJkID8gc3RhcnQgOiBlbmRcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG4gKi9cbmZ1bmN0aW9uIHNldElFT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG4gIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO1xuICB2YXIgc3RhcnQsIGVuZDtcblxuICBpZiAodHlwZW9mIG9mZnNldHMuZW5kID09PSAndW5kZWZpbmVkJykge1xuICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcbiAgICBlbmQgPSBzdGFydDtcbiAgfSBlbHNlIGlmIChvZmZzZXRzLnN0YXJ0ID4gb2Zmc2V0cy5lbmQpIHtcbiAgICBzdGFydCA9IG9mZnNldHMuZW5kO1xuICAgIGVuZCA9IG9mZnNldHMuc3RhcnQ7XG4gIH0gZWxzZSB7XG4gICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIGVuZCA9IG9mZnNldHMuZW5kO1xuICB9XG5cbiAgcmFuZ2UubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG4gIHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgc3RhcnQpO1xuICByYW5nZS5zZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHJhbmdlKTtcbiAgcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgZW5kIC0gc3RhcnQpO1xuICByYW5nZS5zZWxlY3QoKTtcbn1cblxuLyoqXG4gKiBJbiBtb2Rlcm4gbm9uLUlFIGJyb3dzZXJzLCB3ZSBjYW4gc3VwcG9ydCBib3RoIGZvcndhcmQgYW5kIGJhY2t3YXJkXG4gKiBzZWxlY3Rpb25zLlxuICpcbiAqIE5vdGU6IElFMTArIHN1cHBvcnRzIHRoZSBTZWxlY3Rpb24gb2JqZWN0LCBidXQgaXQgZG9lcyBub3Qgc3VwcG9ydFxuICogdGhlIGBleHRlbmRgIG1ldGhvZCwgd2hpY2ggbWVhbnMgdGhhdCBldmVuIGluIG1vZGVybiBJRSwgaXQncyBub3QgcG9zc2libGVcbiAqIHRvIHByb2dyYW1hdGljYWxseSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUVcbiAqIHZlcnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcbiAqL1xuZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgpO1xuICB2YXIgZW5kID0gdHlwZW9mIG9mZnNldHMuZW5kID09PSAndW5kZWZpbmVkJyA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7XG5cbiAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLlxuICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS5cbiAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7XG4gICAgdmFyIHRlbXAgPSBlbmQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAgc3RhcnQgPSB0ZW1wO1xuICB9XG5cbiAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBzdGFydCk7XG4gIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIGVuZCk7XG5cbiAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikge1xuICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciB1c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpO1xuXG52YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0c1xuICAgKi9cbiAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJuT2Zmc2V0c1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01TZXJ2ZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEluamVjdGlvbicpO1xudmFyIFJlYWN0U2VydmVyUmVuZGVyaW5nID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclJlbmRlcmluZycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9uJyk7XG5cblJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtcblxudmFyIFJlYWN0RE9NU2VydmVyID0ge1xuICByZW5kZXJUb1N0cmluZzogUmVhY3RTZXJ2ZXJSZW5kZXJpbmcucmVuZGVyVG9TdHJpbmcsXG4gIHJlbmRlclRvU3RhdGljTWFya3VwOiBSZWFjdFNlcnZlclJlbmRlcmluZy5yZW5kZXJUb1N0YXRpY01hcmt1cCxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VydmVyOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7XG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIHNldFRleHRDb250ZW50ID0gcmVxdWlyZSgnLi9zZXRUZXh0Q29udGVudCcpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUoJy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG5cbi8qKlxuICogVGV4dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czpcbiAqXG4gKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuXG4gKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgaW4gZWxlbWVudHMgc28gdGhhdCB0aGV5IGNhbiB1bmRlcmdvXG4gKiB0aGUgc2FtZSByZWNvbmNpbGlhdGlvbiB0aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuXG4gKlxuICogVE9ETzogSW52ZXN0aWdhdGUgcmVwcmVzZW50aW5nIFJlYWN0IGNvbXBvbmVudHMgaW4gdGhlIERPTSB3aXRoIHRleHQgbm9kZXMuXG4gKlxuICogQGNsYXNzIFJlYWN0RE9NVGV4dENvbXBvbmVudFxuICogQGV4dGVuZHMgUmVhY3RDb21wb25lbnRcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gIC8vIFRoaXMgY29uc3RydWN0b3IgYW5kIGl0cyBhcmd1bWVudCBpcyBjdXJyZW50bHkgdXNlZCBieSBtb2Nrcy5cbn07XG5cbmFzc2lnbihSZWFjdERPTVRleHRDb21wb25lbnQucHJvdG90eXBlLCB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVhY3RUZXh0fSB0ZXh0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAodGV4dCkge1xuICAgIC8vIFRPRE86IFRoaXMgaXMgcmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1lbnRcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IHRleHQ7XG4gICAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDtcblxuICAgIC8vIFByb3BlcnRpZXNcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl9tb3VudEluZGV4ID0gMDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBoYXZlXG4gICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIERPTSBJRCBvZiB0aGUgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0pIHtcbiAgICAgICAgdmFsaWRhdGVET01OZXN0aW5nKCdzcGFuJywgbnVsbCwgY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSByb290SUQ7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gY29udGV4dFtSZWFjdE1vdW50Lm93bmVyRG9jdW1lbnRDb250ZXh0S2V5XTtcbiAgICAgIHZhciBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvcklEKGVsLCByb290SUQpO1xuICAgICAgLy8gUG9wdWxhdGUgbm9kZSBjYWNoZVxuICAgICAgUmVhY3RNb3VudC5nZXRJRChlbCk7XG4gICAgICBzZXRUZXh0Q29udGVudChlbCwgdGhpcy5fc3RyaW5nVGV4dCk7XG4gICAgICByZXR1cm4gZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlc2NhcGVkVGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0aGlzLl9zdHJpbmdUZXh0KTtcblxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGluIGEgYHNwYW5gIGZvciB0aGUgcmVhc29ucyBzdGF0ZWQgYWJvdmUsIGJ1dFxuICAgICAgICAvLyBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0aW9uIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ugb3ZlciAoc3RhdGljIHBhZ2VzKSxcbiAgICAgICAgLy8gd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuXG4gICAgICAgIHJldHVybiBlc2NhcGVkVGV4dDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICc8c3BhbiAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHJvb3RJRCkgKyAnPicgKyBlc2NhcGVkVGV4dCArICc8L3NwYW4+JztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhpcyBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFRleHR9IG5leHRUZXh0IFRoZSBuZXh0IHRleHQgY29udGVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikge1xuICAgIGlmIChuZXh0VGV4dCAhPT0gdGhpcy5fY3VycmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFRleHQ7XG4gICAgICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5leHRUZXh0O1xuICAgICAgaWYgKG5leHRTdHJpbmdUZXh0ICE9PSB0aGlzLl9zdHJpbmdUZXh0KSB7XG4gICAgICAgIC8vIFRPRE86IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHByb3BzIGFuZCB1c2UgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5XG4gICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQgdG8gZG8gdGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGhcbiAgICAgICAgLy8gb3RoZXIgY29tcG9uZW50IHR5cGVzP1xuICAgICAgICB0aGlzLl9zdHJpbmdUZXh0ID0gbmV4dFN0cmluZ1RleHQ7XG4gICAgICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMudXBkYXRlVGV4dENvbnRlbnQobm9kZSwgbmV4dFN0cmluZ1RleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQudW5tb3VudElERnJvbUVudmlyb25tZW50KHRoaXMuX3Jvb3ROb2RlSUQpO1xuICB9XG5cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dENvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSRVQwMVVaWGgwUTI5dGNHOXVaVzUwWEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFUlBUVU5vYVd4a2NtVnVUM0JsY21GMGFXOXVjeUE5SUhKbGNYVnBjbVVvSnk0dlJFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpKeWs3WEc1MllYSWdSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6SUQwZ2NtVnhkV2x5WlNnbkxpOUVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk1uS1R0Y2JuWmhjaUJTWldGamRFTnZiWEJ2Ym1WdWRFSnliM2R6WlhKRmJuWnBjbTl1YldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRiMjF3YjI1bGJuUkNjbTkzYzJWeVJXNTJhWEp2Ym0xbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEUxdmRXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRTF2ZFc1MEp5azdYRzVjYm5aaGNpQmhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDY3VMMDlpYW1WamRDNWhjM05wWjI0bktUdGNiblpoY2lCbGMyTmhjR1ZVWlhoMFEyOXVkR1Z1ZEVadmNrSnliM2R6WlhJZ1BTQnlaWEYxYVhKbEtDY3VMMlZ6WTJGd1pWUmxlSFJEYjI1MFpXNTBSbTl5UW5KdmQzTmxjaWNwTzF4dWRtRnlJSE5sZEZSbGVIUkRiMjUwWlc1MElEMGdjbVZ4ZFdseVpTZ25MaTl6WlhSVVpYaDBRMjl1ZEdWdWRDY3BPMXh1ZG1GeUlIWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVp5QTlJSEpsY1hWcGNtVW9KeTR2ZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuSnlrN1hHNWNiaThxS2x4dUlDb2dWR1Y0ZENCdWIyUmxjeUIyYVc5c1lYUmxJR0VnWTI5MWNHeGxJR0Z6YzNWdGNIUnBiMjV6SUhSb1lYUWdVbVZoWTNRZ2JXRnJaWE1nWVdKdmRYUWdZMjl0Y0c5dVpXNTBjenBjYmlBcVhHNGdLaUFnTFNCWGFHVnVJRzF2ZFc1MGFXNW5JSFJsZUhRZ2FXNTBieUIwYUdVZ1JFOU5MQ0JoWkdwaFkyVnVkQ0IwWlhoMElHNXZaR1Z6SUdGeVpTQnRaWEpuWldRdVhHNGdLaUFnTFNCVVpYaDBJRzV2WkdWeklHTmhibTV2ZENCaVpTQmhjM05wWjI1bFpDQmhJRkpsWVdOMElISnZiM1FnU1VRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJqYjIxd2IyNWxiblFnYVhNZ2RYTmxaQ0IwYnlCM2NtRndJSE4wY21sdVozTWdhVzRnWld4bGJXVnVkSE1nYzI4Z2RHaGhkQ0IwYUdWNUlHTmhiaUIxYm1SbGNtZHZYRzRnS2lCMGFHVWdjMkZ0WlNCeVpXTnZibU5wYkdsaGRHbHZiaUIwYUdGMElHbHpJR0Z3Y0d4cFpXUWdkRzhnWld4bGJXVnVkSE11WEc0Z0tseHVJQ29nVkU5RVR6b2dTVzUyWlhOMGFXZGhkR1VnY21Wd2NtVnpaVzUwYVc1bklGSmxZV04wSUdOdmJYQnZibVZ1ZEhNZ2FXNGdkR2hsSUVSUFRTQjNhWFJvSUhSbGVIUWdibTlrWlhNdVhHNGdLbHh1SUNvZ1FHTnNZWE56SUZKbFlXTjBSRTlOVkdWNGRFTnZiWEJ2Ym1WdWRGeHVJQ29nUUdWNGRHVnVaSE1nVW1WaFkzUkRiMjF3YjI1bGJuUmNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JFVDAxVVpYaDBRMjl0Y0c5dVpXNTBJRDBnWm5WdVkzUnBiMjRnS0hCeWIzQnpLU0I3WEc0Z0lDOHZJRlJvYVhNZ1kyOXVjM1J5ZFdOMGIzSWdZVzVrSUdsMGN5QmhjbWQxYldWdWRDQnBjeUJqZFhKeVpXNTBiSGtnZFhObFpDQmllU0J0YjJOcmN5NWNibjA3WEc1Y2JtRnpjMmxuYmloU1pXRmpkRVJQVFZSbGVIUkRiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxMQ0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSVVpYaDBmU0IwWlhoMFhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOME9pQm1kVzVqZEdsdmJpQW9kR1Y0ZENrZ2UxeHVJQ0FnSUM4dklGUlBSRTg2SUZSb2FYTWdhWE1nY21WaGJHeDVJR0VnVW1WaFkzUlVaWGgwSUNoU1pXRmpkRTV2WkdVcExDQnViM1FnWVNCU1pXRmpkRVZzWlcxbGJuUmNiaUFnSUNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDQTlJSFJsZUhRN1hHNGdJQ0FnZEdocGN5NWZjM1J5YVc1blZHVjRkQ0E5SUNjbklDc2dkR1Y0ZER0Y2JseHVJQ0FnSUM4dklGQnliM0JsY25ScFpYTmNiaUFnSUNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFSUQwZ2JuVnNiRHRjYmlBZ0lDQjBhR2x6TGw5dGIzVnVkRWx1WkdWNElEMGdNRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCMGFHVWdiV0Z5YTNWd0lHWnZjaUIwYUdseklIUmxlSFFnYm05a1pTNGdWR2hwY3lCdWIyUmxJR2x6SUc1dmRDQnBiblJsYm1SbFpDQjBieUJvWVhabFhHNGdJQ0FxSUdGdWVTQm1aV0YwZFhKbGN5QmlaWE5wWkdWeklHTnZiblJoYVc1cGJtY2dkR1Y0ZENCamIyNTBaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NtOXZkRWxFSUVSUFRTQkpSQ0J2WmlCMGFHVWdjbTl2ZENCdWIyUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OFVtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JOWVhKcmRYQWdabTl5SUhSb2FYTWdkR1Y0ZENCdWIyUmxMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJRzF2ZFc1MFEyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9jbTl2ZEVsRUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQnBaaUFvWTI5dWRHVjRkRnQyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1WVc1alpYTjBiM0pKYm1adlEyOXVkR1Y0ZEV0bGVWMHBJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuS0NkemNHRnVKeXdnYm5Wc2JDd2dZMjl1ZEdWNGRGdDJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VZVzVqWlhOMGIzSkpibVp2UTI5dWRHVjRkRXRsZVYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVYM0p2YjNST2IyUmxTVVFnUFNCeWIyOTBTVVE3WEc0Z0lDQWdhV1lnS0hSeVlXNXpZV04wYVc5dUxuVnpaVU55WldGMFpVVnNaVzFsYm5RcElIdGNiaUFnSUNBZ0lIWmhjaUJ2ZDI1bGNrUnZZM1Z0Wlc1MElEMGdZMjl1ZEdWNGRGdFNaV0ZqZEUxdmRXNTBMbTkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNVhUdGNiaUFnSUNBZ0lIWmhjaUJsYkNBOUlHOTNibVZ5Ukc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ25jM0JoYmljcE8xeHVJQ0FnSUNBZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpMbk5sZEVGMGRISnBZblYwWlVadmNrbEVLR1ZzTENCeWIyOTBTVVFwTzF4dUlDQWdJQ0FnTHk4Z1VHOXdkV3hoZEdVZ2JtOWtaU0JqWVdOb1pWeHVJQ0FnSUNBZ1VtVmhZM1JOYjNWdWRDNW5aWFJKUkNobGJDazdYRzRnSUNBZ0lDQnpaWFJVWlhoMFEyOXVkR1Z1ZENobGJDd2dkR2hwY3k1ZmMzUnlhVzVuVkdWNGRDazdYRzRnSUNBZ0lDQnlaWFIxY200Z1pXdzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhaaGNpQmxjMk5oY0dWa1ZHVjRkQ0E5SUdWelkyRndaVlJsZUhSRGIyNTBaVzUwUm05eVFuSnZkM05sY2loMGFHbHpMbDl6ZEhKcGJtZFVaWGgwS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJ5WVc1ellXTjBhVzl1TG5KbGJtUmxjbFJ2VTNSaGRHbGpUV0Z5YTNWd0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUU1dmNtMWhiR3g1SUhkbEoyUWdkM0poY0NCMGFHbHpJR2x1SUdFZ1lITndZVzVnSUdadmNpQjBhR1VnY21WaGMyOXVjeUJ6ZEdGMFpXUWdZV0p2ZG1Vc0lHSjFkRnh1SUNBZ0lDQWdJQ0F2THlCemFXNWpaU0IwYUdseklHbHpJR0VnYzJsMGRXRjBhVzl1SUhkb1pYSmxJRkpsWVdOMElIZHZiaWQwSUhSaGEyVWdiM1psY2lBb2MzUmhkR2xqSUhCaFoyVnpLU3hjYmlBZ0lDQWdJQ0FnTHk4Z2QyVWdZMkZ1SUhOcGJYQnNlU0J5WlhSMWNtNGdkR2hsSUhSbGVIUWdZWE1nYVhRZ2FYTXVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmxjMk5oY0dWa1ZHVjRkRHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJQ2M4YzNCaGJpQW5JQ3NnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekxtTnlaV0YwWlUxaGNtdDFjRVp2Y2tsRUtISnZiM1JKUkNrZ0t5QW5QaWNnS3lCbGMyTmhjR1ZrVkdWNGRDQXJJQ2M4TDNOd1lXNCtKenRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaWE1nZEdocGN5QmpiMjF3YjI1bGJuUWdZbmtnZFhCa1lYUnBibWNnZEdobElIUmxlSFFnWTI5dWRHVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRlJsZUhSOUlHNWxlSFJVWlhoMElGUm9aU0J1WlhoMElIUmxlSFFnWTI5dWRHVnVkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdjbVZqWldsMlpVTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLRzVsZUhSVVpYaDBMQ0IwY21GdWMyRmpkR2x2YmlrZ2UxeHVJQ0FnSUdsbUlDaHVaWGgwVkdWNGRDQWhQVDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RcElIdGNiaUFnSUNBZ0lIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBJRDBnYm1WNGRGUmxlSFE3WEc0Z0lDQWdJQ0IyWVhJZ2JtVjRkRk4wY21sdVoxUmxlSFFnUFNBbkp5QXJJRzVsZUhSVVpYaDBPMXh1SUNBZ0lDQWdhV1lnS0c1bGVIUlRkSEpwYm1kVVpYaDBJQ0U5UFNCMGFHbHpMbDl6ZEhKcGJtZFVaWGgwS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRlJQUkU4NklGTmhkbVVnZEdocGN5QmhjeUJ3Wlc1a2FXNW5JSEJ5YjNCeklHRnVaQ0IxYzJVZ2NHVnlabTl5YlZWd1pHRjBaVWxtVG1WalpYTnpZWEo1WEc0Z0lDQWdJQ0FnSUM4dklHRnVaQzl2Y2lCMWNHUmhkR1ZEYjIxd2IyNWxiblFnZEc4Z1pHOGdkR2hsSUdGamRIVmhiQ0IxY0dSaGRHVWdabTl5SUdOdmJuTnBjM1JsYm1ONUlIZHBkR2hjYmlBZ0lDQWdJQ0FnTHk4Z2IzUm9aWElnWTI5dGNHOXVaVzUwSUhSNWNHVnpQMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOXpkSEpwYm1kVVpYaDBJRDBnYm1WNGRGTjBjbWx1WjFSbGVIUTdYRzRnSUNBZ0lDQWdJSFpoY2lCdWIyUmxJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0hSb2FYTXVYM0p2YjNST2IyUmxTVVFwTzF4dUlDQWdJQ0FnSUNCRVQwMURhR2xzWkhKbGJrOXdaWEpoZEdsdmJuTXVkWEJrWVhSbFZHVjRkRU52Ym5SbGJuUW9ibTlrWlN3Z2JtVjRkRk4wY21sdVoxUmxlSFFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCMWJtMXZkVzUwUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ1VtVmhZM1JEYjIxd2IyNWxiblJDY205M2MyVnlSVzUyYVhKdmJtMWxiblF1ZFc1dGIzVnVkRWxFUm5KdmJVVnVkbWx5YjI1dFpXNTBLSFJvYVhNdVgzSnZiM1JPYjJSbFNVUXBPMXh1SUNCOVhHNWNibjBwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUkU5TlZHVjRkRU52YlhCdmJtVnVkRHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01UZXh0YXJlYVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4gICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGVcbiAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgPHRleHRhcmVhPiBuYXRpdmUgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgYHZhbHVlYCwgYW5kXG4gKiBgZGVmYXVsdFZhbHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRyYWRpdGlvbmFsIERPTSBBUEkgYmVjYXVzZSB2YWx1ZSBpc1xuICogdXN1YWxseSBzZXQgYXMgUENEQVRBIGNoaWxkcmVuLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGFmZmVjdCB0aGVcbiAqIHZhbHVlIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsXG4gKiBub3QgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluXG4gKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQgdG8gYmUgdXBkYXRlZC5cbiAqXG4gKiBUaGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggYW4gZW1wdHkgdmFsdWUsIHRoZSBwcm9wXG4gKiBgZGVmYXVsdFZhbHVlYCBpZiBzcGVjaWZpZWQsIG9yIHRoZSBjaGlsZHJlbiBjb250ZW50IChkZXByZWNhdGVkKS5cbiAqL1xudmFyIFJlYWN0RE9NVGV4dGFyZWEgPSB7XG4gIGdldE5hdGl2ZVByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIEFsd2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhlIHNlbGVjdGlvbiByYW5nZSB3aWxsXG4gICAgLy8gZ2V0IHJlc2V0IGlmIGB0ZXh0Q29udGVudGAgaXMgbXV0YXRlZC5cbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBjaGlsZHJlbjogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBuYXRpdmVQcm9wcztcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCd0ZXh0YXJlYScsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgaW5zdGVhZCBvZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRleHRhcmVhPi4nKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgICEoZGVmYXVsdFZhbHVlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBzdXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPHRleHRhcmVhPiBjYW4gb25seSBoYXZlIGF0IG1vc3Qgb25lIGNoaWxkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlblswXTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdFZhbHVlID0gJycgKyBjaGlsZHJlbjtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSAnJztcbiAgICB9XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICAvLyBXZSBzYXZlIHRoZSBpbml0aWFsIHZhbHVlIHNvIHRoYXQgYFJlYWN0RE9NQ29tcG9uZW50YCBkb2Vzbid0IHVwZGF0ZVxuICAgICAgLy8gYHRleHRDb250ZW50YCAodW5uZWNlc3Nhcnkgc2luY2Ugd2UgdXBkYXRlIHZhbHVlKS5cbiAgICAgIC8vIFRoZSBpbml0aWFsIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0IHNvIHRoYXQncyB3aHkgaXQnc1xuICAgICAgLy8gZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuICAgICAgaW5pdGlhbFZhbHVlOiAnJyArICh2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBkZWZhdWx0VmFsdWUpLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIFJlYWN0RE9NSURPcGVyYXRpb25zLnVwZGF0ZVByb3BlcnR5QnlJRChpbnN0Ll9yb290Tm9kZUlELCAndmFsdWUnLCAnJyArIHZhbHVlKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dGFyZWE7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUlBUVlJsZUhSaGNtVmhMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSRVQwMVVaWGgwWVhKbFlWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRXhwYm10bFpGWmhiSFZsVlhScGJITWdQU0J5WlhGMWFYSmxLQ2N1TDB4cGJtdGxaRlpoYkhWbFZYUnBiSE1uS1R0Y2JuWmhjaUJTWldGamRFUlBUVWxFVDNCbGNtRjBhVzl1Y3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVQwMUpSRTl3WlhKaGRHbHZibk1uS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZYQmtZWFJsY3ljcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1Wm5WdVkzUnBiMjRnWm05eVkyVlZjR1JoZEdWSlprMXZkVzUwWldRb0tTQjdYRzRnSUdsbUlDaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUtTQjdYRzRnSUNBZ0x5OGdSRTlOSUdOdmJYQnZibVZ1ZENCcGN5QnpkR2xzYkNCdGIzVnVkR1ZrT3lCMWNHUmhkR1ZjYmlBZ0lDQlNaV0ZqZEVSUFRWUmxlSFJoY21WaExuVndaR0YwWlZkeVlYQndaWElvZEdocGN5azdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUdFZ1BIUmxlSFJoY21WaFBpQnVZWFJwZG1VZ1kyOXRjRzl1Wlc1MElIUm9ZWFFnWVd4c2IzZHpJSE5sZEhScGJtY2dZSFpoYkhWbFlDd2dZVzVrWEc0Z0tpQmdaR1ZtWVhWc2RGWmhiSFZsWUM0Z1ZHaHBjeUJrYVdabVpYSnpJR1p5YjIwZ2RHaGxJSFJ5WVdScGRHbHZibUZzSUVSUFRTQkJVRWtnWW1WallYVnpaU0IyWVd4MVpTQnBjMXh1SUNvZ2RYTjFZV3hzZVNCelpYUWdZWE1nVUVORVFWUkJJR05vYVd4a2NtVnVMbHh1SUNwY2JpQXFJRWxtSUdCMllXeDFaV0FnYVhNZ2JtOTBJSE4xY0hCc2FXVmtJQ2h2Y2lCdWRXeHNMM1Z1WkdWbWFXNWxaQ2tzSUhWelpYSWdZV04wYVc5dWN5QjBhR0YwSUdGbVptVmpkQ0IwYUdWY2JpQXFJSFpoYkhWbElIZHBiR3dnZEhKcFoyZGxjaUIxY0dSaGRHVnpJSFJ2SUhSb1pTQmxiR1Z0Wlc1MExseHVJQ3BjYmlBcUlFbG1JR0IyWVd4MVpXQWdhWE1nYzNWd2NHeHBaV1FnS0dGdVpDQnViM1FnYm5Wc2JDOTFibVJsWm1sdVpXUXBMQ0IwYUdVZ2NtVnVaR1Z5WldRZ1pXeGxiV1Z1ZENCM2FXeHNYRzRnS2lCdWIzUWdkSEpwWjJkbGNpQjFjR1JoZEdWeklIUnZJSFJvWlNCbGJHVnRaVzUwTGlCSmJuTjBaV0ZrTENCMGFHVWdZSFpoYkhWbFlDQndjbTl3SUcxMWMzUWdZMmhoYm1kbElHbHVYRzRnS2lCdmNtUmxjaUJtYjNJZ2RHaGxJSEpsYm1SbGNtVmtJR1ZzWlcxbGJuUWdkRzhnWW1VZ2RYQmtZWFJsWkM1Y2JpQXFYRzRnS2lCVWFHVWdjbVZ1WkdWeVpXUWdaV3hsYldWdWRDQjNhV3hzSUdKbElHbHVhWFJwWVd4cGVtVmtJSGRwZEdnZ1lXNGdaVzF3ZEhrZ2RtRnNkV1VzSUhSb1pTQndjbTl3WEc0Z0tpQmdaR1ZtWVhWc2RGWmhiSFZsWUNCcFppQnpjR1ZqYVdacFpXUXNJRzl5SUhSb1pTQmphR2xzWkhKbGJpQmpiMjUwWlc1MElDaGtaWEJ5WldOaGRHVmtLUzVjYmlBcUwxeHVkbUZ5SUZKbFlXTjBSRTlOVkdWNGRHRnlaV0VnUFNCN1hHNGdJR2RsZEU1aGRHbDJaVkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9hVzV6ZEN3Z2NISnZjSE1zSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FoS0hCeWIzQnpMbVJoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTUlEMDlJRzUxYkd3cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJCa1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UR0FnWkc5bGN5QnViM1FnYldGclpTQnpaVzV6WlNCdmJpQThkR1Y0ZEdGeVpXRStMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJRUZzZDJGNWN5QnpaWFFnWTJocGJHUnlaVzRnZEc4Z2RHaGxJSE5oYldVZ2RHaHBibWN1SUVsdUlFbEZPU3dnZEdobElITmxiR1ZqZEdsdmJpQnlZVzVuWlNCM2FXeHNYRzRnSUNBZ0x5OGdaMlYwSUhKbGMyVjBJR2xtSUdCMFpYaDBRMjl1ZEdWdWRHQWdhWE1nYlhWMFlYUmxaQzVjYmlBZ0lDQjJZWElnYm1GMGFYWmxVSEp2Y0hNZ1BTQmhjM05wWjI0b2UzMHNJSEJ5YjNCekxDQjdYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1U2SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0FnSUhaaGJIVmxPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0JqYUdsc1pISmxiam9nYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG1sdWFYUnBZV3hXWVd4MVpTeGNiaUFnSUNBZ0lHOXVRMmhoYm1kbE9pQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXViMjVEYUdGdVoyVmNiaUFnSUNCOUtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVlYUnBkbVZRY205d2N6dGNiaUFnZlN4Y2JseHVJQ0J0YjNWdWRGZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeWtnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtTm9aV05yVUhKdmNGUjVjR1Z6S0NkMFpYaDBZWEpsWVNjc0lIQnliM0J6TENCcGJuTjBMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQmtaV1poZFd4MFZtRnNkV1VnUFNCd2NtOXdjeTVrWldaaGRXeDBWbUZzZFdVN1hHNGdJQ0FnTHk4Z1ZFOUVUeUFvZVhWdVozTjBaWEp6S1RvZ1VtVnRiM1psSUhOMWNIQnZjblFnWm05eUlHTm9hV3hrY21WdUlHTnZiblJsYm5RZ2FXNGdQSFJsZUhSaGNtVmhQaTVjYmlBZ0lDQjJZWElnWTJocGJHUnlaVzRnUFNCd2NtOXdjeTVqYUdsc1pISmxianRjYmlBZ0lDQnBaaUFvWTJocGJHUnlaVzRnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkVmMyVWdkR2hsSUdCa1pXWmhkV3gwVm1Gc2RXVmdJRzl5SUdCMllXeDFaV0FnY0hKdmNITWdhVzV6ZEdWaFpDQnZaaUJ6WlhSMGFXNW5JQ2NnS3lBblkyaHBiR1J5Wlc0Z2IyNGdQSFJsZUhSaGNtVmhQaTRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDRW9aR1ZtWVhWc2RGWmhiSFZsSUQwOUlHNTFiR3dwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMGxtSUhsdmRTQnpkWEJ3YkhrZ1lHUmxabUYxYkhSV1lXeDFaV0FnYjI0Z1lTQThkR1Y0ZEdGeVpXRStMQ0JrYnlCdWIzUWdjR0Z6Y3lCamFHbHNaSEpsYmk0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hqYUdsc1pISmxiaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lTaGphR2xzWkhKbGJpNXNaVzVuZEdnZ1BEMGdNU2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5QSFJsZUhSaGNtVmhQaUJqWVc0Z2IyNXNlU0JvWVhabElHRjBJRzF2YzNRZ2IyNWxJR05vYVd4a0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ1kyaHBiR1J5Wlc0Z1BTQmphR2xzWkhKbGJsc3dYVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnWkdWbVlYVnNkRlpoYkhWbElEMGdKeWNnS3lCamFHbHNaSEpsYmp0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dSbFptRjFiSFJXWVd4MVpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1VnUFNBbkp6dGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlIWmhiSFZsSUQwZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3k1blpYUldZV3gxWlNod2NtOXdjeWs3WEc1Y2JpQWdJQ0JwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1VnUFNCN1hHNGdJQ0FnSUNBdkx5QlhaU0J6WVhabElIUm9aU0JwYm1sMGFXRnNJSFpoYkhWbElITnZJSFJvWVhRZ1lGSmxZV04wUkU5TlEyOXRjRzl1Wlc1MFlDQmtiMlZ6YmlkMElIVndaR0YwWlZ4dUlDQWdJQ0FnTHk4Z1lIUmxlSFJEYjI1MFpXNTBZQ0FvZFc1dVpXTmxjM05oY25rZ2MybHVZMlVnZDJVZ2RYQmtZWFJsSUhaaGJIVmxLUzVjYmlBZ0lDQWdJQzh2SUZSb1pTQnBibWwwYVdGc0lIWmhiSFZsSUdOaGJpQmlaU0JoSUdKdmIyeGxZVzRnYjNJZ2IySnFaV04wSUhOdklIUm9ZWFFuY3lCM2FIa2dhWFFuYzF4dUlDQWdJQ0FnTHk4Z1ptOXlZMlZrSUhSdklHSmxJR0VnYzNSeWFXNW5MbHh1SUNBZ0lDQWdhVzVwZEdsaGJGWmhiSFZsT2lBbkp5QXJJQ2gyWVd4MVpTQWhQU0J1ZFd4c0lEOGdkbUZzZFdVZ09pQmtaV1poZFd4MFZtRnNkV1VwTEZ4dUlDQWdJQ0FnYjI1RGFHRnVaMlU2SUY5b1lXNWtiR1ZEYUdGdVoyVXVZbWx1WkNocGJuTjBLVnh1SUNBZ0lIMDdYRzRnSUgwc1hHNWNiaUFnZFhCa1lYUmxWM0poY0hCbGNqb2dablZ1WTNScGIyNGdLR2x1YzNRcElIdGNiaUFnSUNCMllYSWdjSEp2Y0hNZ1BTQnBibk4wTGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNCMllYSWdkbUZzZFdVZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtZGxkRlpoYkhWbEtIQnliM0J6S1R0Y2JpQWdJQ0JwWmlBb2RtRnNkV1VnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnTHk4Z1EyRnpkQ0JnZG1Gc2RXVmdJSFJ2SUdFZ2MzUnlhVzVuSUhSdklHVnVjM1Z5WlNCMGFHVWdkbUZzZFdVZ2FYTWdjMlYwSUdOdmNuSmxZM1JzZVM0Z1YyaHBiR1ZjYmlBZ0lDQWdJQzh2SUdKeWIzZHpaWEp6SUhSNWNHbGpZV3hzZVNCa2J5QjBhR2x6SUdGeklHNWxZMlZ6YzJGeWVTd2dhbk5rYjIwZ1pHOWxjMjRuZEM1Y2JpQWdJQ0FnSUZKbFlXTjBSRTlOU1VSUGNHVnlZWFJwYjI1ekxuVndaR0YwWlZCeWIzQmxjblI1UW5sSlJDaHBibk4wTGw5eWIyOTBUbTlrWlVsRUxDQW5kbUZzZFdVbkxDQW5KeUFySUhaaGJIVmxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm1aMWJtTjBhVzl1SUY5b1lXNWtiR1ZEYUdGdVoyVW9aWFpsYm5RcElIdGNiaUFnZG1GeUlIQnliM0J6SUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNGdJSFpoY2lCeVpYUjFjbTVXWVd4MVpTQTlJRXhwYm10bFpGWmhiSFZsVlhScGJITXVaWGhsWTNWMFpVOXVRMmhoYm1kbEtIQnliM0J6TENCbGRtVnVkQ2s3WEc0Z0lGSmxZV04wVlhCa1lYUmxjeTVoYzJGd0tHWnZjbU5sVlhCa1lYUmxTV1pOYjNWdWRHVmtMQ0IwYUdsektUdGNiaUFnY21WMGRYSnVJSEpsZEhWeWJsWmhiSFZsTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFJFOU5WR1Y0ZEdGeVpXRTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcblxudmFyIFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHtcbiAgaW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbixcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBGTFVTSF9CQVRDSEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG4gIGNsb3NlOiBSZWFjdFVwZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBkYXRlcylcbn07XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQREFURVMsIFJFU0VUX0JBVENIRURfVVBEQVRFU107XG5cbmZ1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xufVxuXG5hc3NpZ24oUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24uTWl4aW4sIHtcbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfVxufSk7XG5cbnZhciB0cmFuc2FjdGlvbiA9IG5ldyBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKTtcblxudmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSB7XG4gIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSxcblxuICAvKipcbiAgICogQ2FsbCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaW4gYSBjb250ZXh0IHdpdGhpbiB3aGljaCBjYWxscyB0byBgc2V0U3RhdGVgXG4gICAqIGFuZCBmcmllbmRzIGFyZSBiYXRjaGVkIHN1Y2ggdGhhdCBjb21wb25lbnRzIGFyZW4ndCB1cGRhdGVkIHVubmVjZXNzYXJpbHkuXG4gICAqL1xuICBiYXRjaGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG4gICAgdmFyIGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMgPSBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzO1xuXG4gICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9IHRydWU7XG5cbiAgICAvLyBUaGUgY29kZSBpcyB3cml0dGVuIHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb25zXG4gICAgaWYgKGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMpIHtcbiAgICAgIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RGVmYXVsdEluamVjdGlvblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4nKTtcbnZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vQ2hhbmdlRXZlbnRQbHVnaW4nKTtcbnZhciBDbGllbnRSZWFjdFJvb3RJbmRleCA9IHJlcXVpcmUoJy4vQ2xpZW50UmVhY3RSb290SW5kZXgnKTtcbnZhciBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlciA9IHJlcXVpcmUoJy4vRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXInKTtcbnZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0VudGVyTGVhdmVFdmVudFBsdWdpbicpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBIVE1MRE9NUHJvcGVydHlDb25maWcgPSByZXF1aXJlKCcuL0hUTUxET01Qcm9wZXJ0eUNvbmZpZycpO1xudmFyIFJlYWN0QnJvd3NlckNvbXBvbmVudE1peGluID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbicpO1xudmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnQnKTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJy4vUmVhY3RFdmVudExpc3RlbmVyJyk7XG52YXIgUmVhY3RJbmplY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5qZWN0aW9uJyk7XG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VIYW5kbGVzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24nKTtcbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vU2VsZWN0RXZlbnRQbHVnaW4nKTtcbnZhciBTZXJ2ZXJSZWFjdFJvb3RJbmRleCA9IHJlcXVpcmUoJy4vU2VydmVyUmVhY3RSb290SW5kZXgnKTtcbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vU2ltcGxlRXZlbnRQbHVnaW4nKTtcbnZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vU1ZHRE9NUHJvcGVydHlDb25maWcnKTtcblxudmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBpbmplY3QoKSB7XG4gIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cbiAgICAvLyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0IGluZGVwZW5kZW50bHlcbiAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUuIFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLlxuICAgIHJldHVybjtcbiAgfVxuICBhbHJlYWR5SW5qZWN0ZWQgPSB0cnVlO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTtcblxuICAvKipcbiAgICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0SW5zdGFuY2VIYW5kbGUoUmVhY3RJbnN0YW5jZUhhbmRsZXMpO1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RNb3VudChSZWFjdE1vdW50KTtcblxuICAvKipcbiAgICogU29tZSBpbXBvcnRhbnQgZXZlbnQgcGx1Z2lucyBpbmNsdWRlZCBieSBkZWZhdWx0ICh3aXRob3V0IGhhdmluZyB0byByZXF1aXJlXG4gICAqIHRoZW0pLlxuICAgKi9cbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtcbiAgICBTaW1wbGVFdmVudFBsdWdpbjogU2ltcGxlRXZlbnRQbHVnaW4sXG4gICAgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOiBFbnRlckxlYXZlRXZlbnRQbHVnaW4sXG4gICAgQ2hhbmdlRXZlbnRQbHVnaW46IENoYW5nZUV2ZW50UGx1Z2luLFxuICAgIFNlbGVjdEV2ZW50UGx1Z2luOiBTZWxlY3RFdmVudFBsdWdpbixcbiAgICBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOiBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luXG4gIH0pO1xuXG4gIFJlYWN0SW5qZWN0aW9uLk5hdGl2ZUNvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21wb25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLk5hdGl2ZUNvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MoUmVhY3RET01UZXh0Q29tcG9uZW50KTtcblxuICBSZWFjdEluamVjdGlvbi5DbGFzcy5pbmplY3RNaXhpbihSZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbik7XG5cbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50KCdub3NjcmlwdCcpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7XG4gIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTtcblxuICBSZWFjdEluamVjdGlvbi5Sb290SW5kZXguaW5qZWN0Q3JlYXRlUmVhY3RSb290SW5kZXgoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gQ2xpZW50UmVhY3RSb290SW5kZXguY3JlYXRlUmVhY3RSb290SW5kZXggOiBTZXJ2ZXJSZWFjdFJvb3RJbmRleC5jcmVhdGVSZWFjdFJvb3RJbmRleCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciB1cmwgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJyc7XG4gICAgaWYgKC9bPyZdcmVhY3RfcGVyZlxcYi8udGVzdCh1cmwpKSB7XG4gICAgICB2YXIgUmVhY3REZWZhdWx0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0UGVyZicpO1xuICAgICAgUmVhY3REZWZhdWx0UGVyZi5zdGFydCgpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5qZWN0OiBpbmplY3Rcbn07XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUmxabUYxYkhSSmJtcGxZM1JwYjI0dWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JFWldaaGRXeDBTVzVxWldOMGFXOXVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnUW1WbWIzSmxTVzV3ZFhSRmRtVnVkRkJzZFdkcGJpQTlJSEpsY1hWcGNtVW9KeTR2UW1WbWIzSmxTVzV3ZFhSRmRtVnVkRkJzZFdkcGJpY3BPMXh1ZG1GeUlFTm9ZVzVuWlVWMlpXNTBVR3gxWjJsdUlEMGdjbVZ4ZFdseVpTZ25MaTlEYUdGdVoyVkZkbVZ1ZEZCc2RXZHBiaWNwTzF4dWRtRnlJRU5zYVdWdWRGSmxZV04wVW05dmRFbHVaR1Y0SUQwZ2NtVnhkV2x5WlNnbkxpOURiR2xsYm5SU1pXRmpkRkp2YjNSSmJtUmxlQ2NwTzF4dWRtRnlJRVJsWm1GMWJIUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeUlEMGdjbVZ4ZFdseVpTZ25MaTlFWldaaGRXeDBSWFpsYm5SUWJIVm5hVzVQY21SbGNpY3BPMXh1ZG1GeUlFVnVkR1Z5VEdWaGRtVkZkbVZ1ZEZCc2RXZHBiaUE5SUhKbGNYVnBjbVVvSnk0dlJXNTBaWEpNWldGMlpVVjJaVzUwVUd4MVoybHVKeWs3WEc1MllYSWdSWGhsWTNWMGFXOXVSVzUyYVhKdmJtMWxiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5RmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDY3BPMXh1ZG1GeUlFaFVUVXhFVDAxUWNtOXdaWEowZVVOdmJtWnBaeUE5SUhKbGNYVnBjbVVvSnk0dlNGUk5URVJQVFZCeWIzQmxjblI1UTI5dVptbG5KeWs3WEc1MllYSWdVbVZoWTNSQ2NtOTNjMlZ5UTI5dGNHOXVaVzUwVFdsNGFXNGdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRbkp2ZDNObGNrTnZiWEJ2Ym1WdWRFMXBlR2x1SnlrN1hHNTJZWElnVW1WaFkzUkRiMjF3YjI1bGJuUkNjbTkzYzJWeVJXNTJhWEp2Ym0xbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMjl0Y0c5dVpXNTBRbkp2ZDNObGNrVnVkbWx5YjI1dFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSRVpXWmhkV3gwUW1GMFkyaHBibWRUZEhKaGRHVm5lU0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFWldaaGRXeDBRbUYwWTJocGJtZFRkSEpoZEdWbmVTY3BPMXh1ZG1GeUlGSmxZV04wUkU5TlEyOXRjRzl1Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFJFOU5WR1Y0ZEVOdmJYQnZibVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVQwMVVaWGgwUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZkbVZ1ZEV4cGMzUmxibVZ5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWMlpXNTBUR2x6ZEdWdVpYSW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWFtVmpkR2x2YmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSSmJtcGxZM1JwYjI0bktUdGNiblpoY2lCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNbktUdGNiblpoY2lCU1pXRmpkRTF2ZFc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFMXZkVzUwSnlrN1hHNTJZWElnVW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2YmljcE8xeHVkbUZ5SUZObGJHVmpkRVYyWlc1MFVHeDFaMmx1SUQwZ2NtVnhkV2x5WlNnbkxpOVRaV3hsWTNSRmRtVnVkRkJzZFdkcGJpY3BPMXh1ZG1GeUlGTmxjblpsY2xKbFlXTjBVbTl2ZEVsdVpHVjRJRDBnY21WeGRXbHlaU2duTGk5VFpYSjJaWEpTWldGamRGSnZiM1JKYm1SbGVDY3BPMXh1ZG1GeUlGTnBiWEJzWlVWMlpXNTBVR3gxWjJsdUlEMGdjbVZ4ZFdseVpTZ25MaTlUYVcxd2JHVkZkbVZ1ZEZCc2RXZHBiaWNwTzF4dWRtRnlJRk5XUjBSUFRWQnliM0JsY25SNVEyOXVabWxuSUQwZ2NtVnhkV2x5WlNnbkxpOVRWa2RFVDAxUWNtOXdaWEowZVVOdmJtWnBaeWNwTzF4dVhHNTJZWElnWVd4eVpXRmtlVWx1YW1WamRHVmtJRDBnWm1Gc2MyVTdYRzVjYm1aMWJtTjBhVzl1SUdsdWFtVmpkQ2dwSUh0Y2JpQWdhV1lnS0dGc2NtVmhaSGxKYm1wbFkzUmxaQ2tnZTF4dUlDQWdJQzh2SUZSUFJFODZJRlJvYVhNZ2FYTWdZM1Z5Y21WdWRHeDVJSFJ5ZFdVZ1ltVmpZWFZ6WlNCMGFHVnpaU0JwYm1wbFkzUnBiMjV6SUdGeVpTQnphR0Z5WldRZ1ltVjBkMlZsYmx4dUlDQWdJQzh2SUhSb1pTQmpiR2xsYm5RZ1lXNWtJSFJvWlNCelpYSjJaWElnY0dGamEyRm5aUzRnVkdobGVTQnphRzkxYkdRZ1ltVWdZblZwYkhRZ2FXNWtaWEJsYm1SbGJuUnNlVnh1SUNBZ0lDOHZJR0Z1WkNCdWIzUWdjMmhoY21VZ1lXNTVJR2x1YW1WamRHbHZiaUJ6ZEdGMFpTNGdWR2hsYmlCMGFHbHpJSEJ5YjJKc1pXMGdkMmxzYkNCaVpTQnpiMngyWldRdVhHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNGdJR0ZzY21WaFpIbEpibXBsWTNSbFpDQTlJSFJ5ZFdVN1hHNWNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVSWFpsYm5SRmJXbDBkR1Z5TG1sdWFtVmpkRkpsWVdOMFJYWmxiblJNYVhOMFpXNWxjaWhTWldGamRFVjJaVzUwVEdsemRHVnVaWElwTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1wbFkzUWdiVzlrZFd4bGN5Qm1iM0lnY21WemIyeDJhVzVuSUVSUFRTQm9hV1Z5WVhKamFIa2dZVzVrSUhCc2RXZHBiaUJ2Y21SbGNtbHVaeTVjYmlBZ0lDb3ZYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMa1YyWlc1MFVHeDFaMmx1U0hWaUxtbHVhbVZqZEVWMlpXNTBVR3gxWjJsdVQzSmtaWElvUkdWbVlYVnNkRVYyWlc1MFVHeDFaMmx1VDNKa1pYSXBPMXh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVGZG1WdWRGQnNkV2RwYmtoMVlpNXBibXBsWTNSSmJuTjBZVzVqWlVoaGJtUnNaU2hTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3lrN1hHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxrVjJaVzUwVUd4MVoybHVTSFZpTG1sdWFtVmpkRTF2ZFc1MEtGSmxZV04wVFc5MWJuUXBPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRiMjFsSUdsdGNHOXlkR0Z1ZENCbGRtVnVkQ0J3YkhWbmFXNXpJR2x1WTJ4MVpHVmtJR0o1SUdSbFptRjFiSFFnS0hkcGRHaHZkWFFnYUdGMmFXNW5JSFJ2SUhKbGNYVnBjbVZjYmlBZ0lDb2dkR2hsYlNrdVhHNGdJQ0FxTDF4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RmRtVnVkRkJzZFdkcGJraDFZaTVwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBibk5DZVU1aGJXVW9lMXh1SUNBZ0lGTnBiWEJzWlVWMlpXNTBVR3gxWjJsdU9pQlRhVzF3YkdWRmRtVnVkRkJzZFdkcGJpeGNiaUFnSUNCRmJuUmxja3hsWVhabFJYWmxiblJRYkhWbmFXNDZJRVZ1ZEdWeVRHVmhkbVZGZG1WdWRGQnNkV2RwYml4Y2JpQWdJQ0JEYUdGdVoyVkZkbVZ1ZEZCc2RXZHBiam9nUTJoaGJtZGxSWFpsYm5SUWJIVm5hVzRzWEc0Z0lDQWdVMlZzWldOMFJYWmxiblJRYkhWbmFXNDZJRk5sYkdWamRFVjJaVzUwVUd4MVoybHVMRnh1SUNBZ0lFSmxabTl5WlVsdWNIVjBSWFpsYm5SUWJIVm5hVzQ2SUVKbFptOXlaVWx1Y0hWMFJYWmxiblJRYkhWbmFXNWNiaUFnZlNrN1hHNWNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVUbUYwYVhabFEyOXRjRzl1Wlc1MExtbHVhbVZqZEVkbGJtVnlhV05EYjIxd2IyNWxiblJEYkdGemN5aFNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRDazdYRzVjYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1VG1GMGFYWmxRMjl0Y0c5dVpXNTBMbWx1YW1WamRGUmxlSFJEYjIxd2IyNWxiblJEYkdGemN5aFNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblFwTzF4dVhHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxrTnNZWE56TG1sdWFtVmpkRTFwZUdsdUtGSmxZV04wUW5KdmQzTmxja052YlhCdmJtVnVkRTFwZUdsdUtUdGNibHh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVFVDAxUWNtOXdaWEowZVM1cGJtcGxZM1JFVDAxUWNtOXdaWEowZVVOdmJtWnBaeWhJVkUxTVJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjcE8xeHVJQ0JTWldGamRFbHVhbVZqZEdsdmJpNUVUMDFRY205d1pYSjBlUzVwYm1wbFkzUkVUMDFRY205d1pYSjBlVU52Ym1acFp5aFRWa2RFVDAxUWNtOXdaWEowZVVOdmJtWnBaeWs3WEc1Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVJXMXdkSGxEYjIxd2IyNWxiblF1YVc1cVpXTjBSVzF3ZEhsRGIyMXdiMjVsYm5Rb0oyNXZjMk55YVhCMEp5azdYRzVjYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1VlhCa1lYUmxjeTVwYm1wbFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiaWhTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1VlhCa1lYUmxjeTVwYm1wbFkzUkNZWFJqYUdsdVoxTjBjbUYwWldkNUtGSmxZV04wUkdWbVlYVnNkRUpoZEdOb2FXNW5VM1J5WVhSbFoza3BPMXh1WEc0Z0lGSmxZV04wU1c1cVpXTjBhVzl1TGxKdmIzUkpibVJsZUM1cGJtcGxZM1JEY21WaGRHVlNaV0ZqZEZKdmIzUkpibVJsZUNoRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDNWpZVzVWYzJWRVQwMGdQeUJEYkdsbGJuUlNaV0ZqZEZKdmIzUkpibVJsZUM1amNtVmhkR1ZTWldGamRGSnZiM1JKYm1SbGVDQTZJRk5sY25abGNsSmxZV04wVW05dmRFbHVaR1Y0TG1OeVpXRjBaVkpsWVdOMFVtOXZkRWx1WkdWNEtUdGNibHh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVEYjIxd2IyNWxiblF1YVc1cVpXTjBSVzUyYVhKdmJtMWxiblFvVW1WaFkzUkRiMjF3YjI1bGJuUkNjbTkzYzJWeVJXNTJhWEp2Ym0xbGJuUXBPMXh1WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnZG1GeUlIVnliQ0E5SUVWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MExtTmhibFZ6WlVSUFRTQW1KaUIzYVc1a2IzY3ViRzlqWVhScGIyNHVhSEpsWmlCOGZDQW5KenRjYmlBZ0lDQnBaaUFvTDFzL0psMXlaV0ZqZEY5d1pYSm1YRnhpTHk1MFpYTjBLSFZ5YkNrcElIdGNiaUFnSUNBZ0lIWmhjaUJTWldGamRFUmxabUYxYkhSUVpYSm1JRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJsWm1GMWJIUlFaWEptSnlrN1hHNGdJQ0FnSUNCU1pXRmpkRVJsWm1GMWJIUlFaWEptTG5OMFlYSjBLQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnZTF4dUlDQnBibXBsWTNRNklHbHVhbVZqZEZ4dWZUc2lYWDA9IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RGVmYXVsdFBlcmZcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcblxudmFyIHBlcmZvcm1hbmNlTm93ID0gcmVxdWlyZSgnZmJqcy9saWIvcGVyZm9ybWFuY2VOb3cnKTtcblxuZnVuY3Rpb24gcm91bmRGbG9hdCh2YWwpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IodmFsICogMTAwKSAvIDEwMDtcbn1cblxuZnVuY3Rpb24gYWRkVmFsdWUob2JqLCBrZXksIHZhbCkge1xuICBvYmpba2V5XSA9IChvYmpba2V5XSB8fCAwKSArIHZhbDtcbn1cblxudmFyIFJlYWN0RGVmYXVsdFBlcmYgPSB7XG4gIF9hbGxNZWFzdXJlbWVudHM6IFtdLCAvLyBsYXN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMgdGhlIGN1cnJlbnQgb25lXG4gIF9tb3VudFN0YWNrOiBbMF0sXG4gIF9pbmplY3RlZDogZmFsc2UsXG5cbiAgc3RhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIVJlYWN0RGVmYXVsdFBlcmYuX2luamVjdGVkKSB7XG4gICAgICBSZWFjdFBlcmYuaW5qZWN0aW9uLmluamVjdE1lYXN1cmUoUmVhY3REZWZhdWx0UGVyZi5tZWFzdXJlKTtcbiAgICB9XG5cbiAgICBSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHMubGVuZ3RoID0gMDtcbiAgICBSZWFjdFBlcmYuZW5hYmxlTWVhc3VyZSA9IHRydWU7XG4gIH0sXG5cbiAgc3RvcDogZnVuY3Rpb24gKCkge1xuICAgIFJlYWN0UGVyZi5lbmFibGVNZWFzdXJlID0gZmFsc2U7XG4gIH0sXG5cbiAgZ2V0TGFzdE1lYXN1cmVtZW50czogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHM7XG4gIH0sXG5cbiAgcHJpbnRFeGNsdXNpdmU6IGZ1bmN0aW9uIChtZWFzdXJlbWVudHMpIHtcbiAgICBtZWFzdXJlbWVudHMgPSBtZWFzdXJlbWVudHMgfHwgUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzO1xuICAgIHZhciBzdW1tYXJ5ID0gUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzLmdldEV4Y2x1c2l2ZVN1bW1hcnkobWVhc3VyZW1lbnRzKTtcbiAgICBjb25zb2xlLnRhYmxlKHN1bW1hcnkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnQ29tcG9uZW50IGNsYXNzIG5hbWUnOiBpdGVtLmNvbXBvbmVudE5hbWUsXG4gICAgICAgICdUb3RhbCBpbmNsdXNpdmUgdGltZSAobXMpJzogcm91bmRGbG9hdChpdGVtLmluY2x1c2l2ZSksXG4gICAgICAgICdFeGNsdXNpdmUgbW91bnQgdGltZSAobXMpJzogcm91bmRGbG9hdChpdGVtLmV4Y2x1c2l2ZSksXG4gICAgICAgICdFeGNsdXNpdmUgcmVuZGVyIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQoaXRlbS5yZW5kZXIpLFxuICAgICAgICAnTW91bnQgdGltZSBwZXIgaW5zdGFuY2UgKG1zKSc6IHJvdW5kRmxvYXQoaXRlbS5leGNsdXNpdmUgLyBpdGVtLmNvdW50KSxcbiAgICAgICAgJ1JlbmRlciB0aW1lIHBlciBpbnN0YW5jZSAobXMpJzogcm91bmRGbG9hdChpdGVtLnJlbmRlciAvIGl0ZW0uY291bnQpLFxuICAgICAgICAnSW5zdGFuY2VzJzogaXRlbS5jb3VudFxuICAgICAgfTtcbiAgICB9KSk7XG4gICAgLy8gVE9ETzogUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzLmdldFRvdGFsVGltZSgpIGRvZXMgbm90IHJldHVybiB0aGUgY29ycmVjdFxuICAgIC8vIG51bWJlci5cbiAgfSxcblxuICBwcmludEluY2x1c2l2ZTogZnVuY3Rpb24gKG1lYXN1cmVtZW50cykge1xuICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cyB8fCBSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHM7XG4gICAgdmFyIHN1bW1hcnkgPSBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMuZ2V0SW5jbHVzaXZlU3VtbWFyeShtZWFzdXJlbWVudHMpO1xuICAgIGNvbnNvbGUudGFibGUoc3VtbWFyeS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdPd25lciA+IGNvbXBvbmVudCc6IGl0ZW0uY29tcG9uZW50TmFtZSxcbiAgICAgICAgJ0luY2x1c2l2ZSB0aW1lIChtcyknOiByb3VuZEZsb2F0KGl0ZW0udGltZSksXG4gICAgICAgICdJbnN0YW5jZXMnOiBpdGVtLmNvdW50XG4gICAgICB9O1xuICAgIH0pKTtcbiAgICBjb25zb2xlLmxvZygnVG90YWwgdGltZTonLCBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMuZ2V0VG90YWxUaW1lKG1lYXN1cmVtZW50cykudG9GaXhlZCgyKSArICcgbXMnKTtcbiAgfSxcblxuICBnZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwOiBmdW5jdGlvbiAobWVhc3VyZW1lbnRzKSB7XG4gICAgdmFyIHN1bW1hcnkgPSBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMuZ2V0SW5jbHVzaXZlU3VtbWFyeShtZWFzdXJlbWVudHMsIHRydWUpO1xuICAgIHJldHVybiBzdW1tYXJ5Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ093bmVyID4gY29tcG9uZW50JzogaXRlbS5jb21wb25lbnROYW1lLFxuICAgICAgICAnV2FzdGVkIHRpbWUgKG1zKSc6IGl0ZW0udGltZSxcbiAgICAgICAgJ0luc3RhbmNlcyc6IGl0ZW0uY291bnRcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG5cbiAgcHJpbnRXYXN0ZWQ6IGZ1bmN0aW9uIChtZWFzdXJlbWVudHMpIHtcbiAgICBtZWFzdXJlbWVudHMgPSBtZWFzdXJlbWVudHMgfHwgUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzO1xuICAgIGNvbnNvbGUudGFibGUoUmVhY3REZWZhdWx0UGVyZi5nZXRNZWFzdXJlbWVudHNTdW1tYXJ5TWFwKG1lYXN1cmVtZW50cykpO1xuICAgIGNvbnNvbGUubG9nKCdUb3RhbCB0aW1lOicsIFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5nZXRUb3RhbFRpbWUobWVhc3VyZW1lbnRzKS50b0ZpeGVkKDIpICsgJyBtcycpO1xuICB9LFxuXG4gIHByaW50RE9NOiBmdW5jdGlvbiAobWVhc3VyZW1lbnRzKSB7XG4gICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzIHx8IFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50cztcbiAgICB2YXIgc3VtbWFyeSA9IFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5nZXRET01TdW1tYXJ5KG1lYXN1cmVtZW50cyk7XG4gICAgY29uc29sZS50YWJsZShzdW1tYXJ5Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgcmVzdWx0W0RPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FXSA9IGl0ZW0uaWQ7XG4gICAgICByZXN1bHQudHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgIHJlc3VsdC5hcmdzID0gSlNPTi5zdHJpbmdpZnkoaXRlbS5hcmdzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkpO1xuICAgIGNvbnNvbGUubG9nKCdUb3RhbCB0aW1lOicsIFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5nZXRUb3RhbFRpbWUobWVhc3VyZW1lbnRzKS50b0ZpeGVkKDIpICsgJyBtcycpO1xuICB9LFxuXG4gIF9yZWNvcmRXcml0ZTogZnVuY3Rpb24gKGlkLCBmbk5hbWUsIHRvdGFsVGltZSwgYXJncykge1xuICAgIC8vIFRPRE86IHRvdGFsVGltZSBpc24ndCB0aGF0IHVzZWZ1bCBzaW5jZSBpdCBkb2Vzbid0IGNvdW50IHBhaW50cy9yZWZsb3dzXG4gICAgdmFyIHdyaXRlcyA9IFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50c1tSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHMubGVuZ3RoIC0gMV0ud3JpdGVzO1xuICAgIHdyaXRlc1tpZF0gPSB3cml0ZXNbaWRdIHx8IFtdO1xuICAgIHdyaXRlc1tpZF0ucHVzaCh7XG4gICAgICB0eXBlOiBmbk5hbWUsXG4gICAgICB0aW1lOiB0b3RhbFRpbWUsXG4gICAgICBhcmdzOiBhcmdzXG4gICAgfSk7XG4gIH0sXG5cbiAgbWVhc3VyZTogZnVuY3Rpb24gKG1vZHVsZU5hbWUsIGZuTmFtZSwgZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG90YWxUaW1lO1xuICAgICAgdmFyIHJ2O1xuICAgICAgdmFyIHN0YXJ0O1xuXG4gICAgICBpZiAoZm5OYW1lID09PSAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQnIHx8IGZuTmFtZSA9PT0gJ2ZsdXNoQmF0Y2hlZFVwZGF0ZXMnKSB7XG4gICAgICAgIC8vIEEgXCJtZWFzdXJlbWVudFwiIGlzIGEgc2V0IG9mIG1ldHJpY3MgcmVjb3JkZWQgZm9yIGVhY2ggZmx1c2guIFdlIHdhbnRcbiAgICAgICAgLy8gdG8gZ3JvdXAgdGhlIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gZmx1c2ggdG9nZXRoZXIgc28gd2UgY2FuIGxvb2sgYXQgdGhlXG4gICAgICAgIC8vIGNvbXBvbmVudHMgdGhhdCByZW5kZXJlZCBhbmQgdGhlIERPTSBvcGVyYXRpb25zIHRoYXQgYWN0dWFsbHlcbiAgICAgICAgLy8gaGFwcGVuZWQgdG8gZGV0ZXJtaW5lIHRoZSBhbW91bnQgb2YgXCJ3YXN0ZWQgd29ya1wiIHBlcmZvcm1lZC5cbiAgICAgICAgUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzLnB1c2goe1xuICAgICAgICAgIGV4Y2x1c2l2ZToge30sXG4gICAgICAgICAgaW5jbHVzaXZlOiB7fSxcbiAgICAgICAgICByZW5kZXI6IHt9LFxuICAgICAgICAgIGNvdW50czoge30sXG4gICAgICAgICAgd3JpdGVzOiB7fSxcbiAgICAgICAgICBkaXNwbGF5TmFtZXM6IHt9LFxuICAgICAgICAgIHRvdGFsVGltZTogMCxcbiAgICAgICAgICBjcmVhdGVkOiB7fVxuICAgICAgICB9KTtcbiAgICAgICAgc3RhcnQgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICBydiA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50c1tSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHMubGVuZ3RoIC0gMV0udG90YWxUaW1lID0gcGVyZm9ybWFuY2VOb3coKSAtIHN0YXJ0O1xuICAgICAgICByZXR1cm4gcnY7XG4gICAgICB9IGVsc2UgaWYgKGZuTmFtZSA9PT0gJ19tb3VudEltYWdlSW50b05vZGUnIHx8IG1vZHVsZU5hbWUgPT09ICdSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInIHx8IG1vZHVsZU5hbWUgPT09ICdSZWFjdERPTUlET3BlcmF0aW9ucycgfHwgbW9kdWxlTmFtZSA9PT0gJ0NTU1Byb3BlcnR5T3BlcmF0aW9ucycgfHwgbW9kdWxlTmFtZSA9PT0gJ0RPTUNoaWxkcmVuT3BlcmF0aW9ucycgfHwgbW9kdWxlTmFtZSA9PT0gJ0RPTVByb3BlcnR5T3BlcmF0aW9ucycpIHtcbiAgICAgICAgc3RhcnQgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICBydiA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIHRvdGFsVGltZSA9IHBlcmZvcm1hbmNlTm93KCkgLSBzdGFydDtcblxuICAgICAgICBpZiAoZm5OYW1lID09PSAnX21vdW50SW1hZ2VJbnRvTm9kZScpIHtcbiAgICAgICAgICB2YXIgbW91bnRJRCA9IFJlYWN0TW91bnQuZ2V0SUQoYXJnc1sxXSk7XG4gICAgICAgICAgUmVhY3REZWZhdWx0UGVyZi5fcmVjb3JkV3JpdGUobW91bnRJRCwgZm5OYW1lLCB0b3RhbFRpbWUsIGFyZ3NbMF0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZuTmFtZSA9PT0gJ2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcycpIHtcbiAgICAgICAgICAvLyBzcGVjaWFsIGZvcm1hdFxuICAgICAgICAgIGFyZ3NbMF0uZm9yRWFjaChmdW5jdGlvbiAodXBkYXRlKSB7XG4gICAgICAgICAgICB2YXIgd3JpdGVBcmdzID0ge307XG4gICAgICAgICAgICBpZiAodXBkYXRlLmZyb21JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB3cml0ZUFyZ3MuZnJvbUluZGV4ID0gdXBkYXRlLmZyb21JbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1cGRhdGUudG9JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB3cml0ZUFyZ3MudG9JbmRleCA9IHVwZGF0ZS50b0luZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVwZGF0ZS50ZXh0Q29udGVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB3cml0ZUFyZ3MudGV4dENvbnRlbnQgPSB1cGRhdGUudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodXBkYXRlLm1hcmt1cEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHdyaXRlQXJncy5tYXJrdXAgPSBhcmdzWzFdW3VwZGF0ZS5tYXJrdXBJbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBSZWFjdERlZmF1bHRQZXJmLl9yZWNvcmRXcml0ZSh1cGRhdGUucGFyZW50SUQsIHVwZGF0ZS50eXBlLCB0b3RhbFRpbWUsIHdyaXRlQXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gYmFzaWMgZm9ybWF0XG4gICAgICAgICAgdmFyIGlkID0gYXJnc1swXTtcbiAgICAgICAgICBpZiAodHlwZW9mIGlkID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWQgPSBSZWFjdE1vdW50LmdldElEKGFyZ3NbMF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBSZWFjdERlZmF1bHRQZXJmLl9yZWNvcmRXcml0ZShpZCwgZm5OYW1lLCB0b3RhbFRpbWUsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MsIDEpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnY7XG4gICAgICB9IGVsc2UgaWYgKG1vZHVsZU5hbWUgPT09ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcgJiYgKGZuTmFtZSA9PT0gJ21vdW50Q29tcG9uZW50JyB8fCBmbk5hbWUgPT09ICd1cGRhdGVDb21wb25lbnQnIHx8IC8vIFRPRE86IHJlY2VpdmVDb21wb25lbnQoKT9cbiAgICAgIGZuTmFtZSA9PT0gJ19yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQnKSkge1xuXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlID09PSBSZWFjdE1vdW50LlRvcExldmVsV3JhcHBlcikge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJvb3ROb2RlSUQgPSBmbk5hbWUgPT09ICdtb3VudENvbXBvbmVudCcgPyBhcmdzWzBdIDogdGhpcy5fcm9vdE5vZGVJRDtcbiAgICAgICAgdmFyIGlzUmVuZGVyID0gZm5OYW1lID09PSAnX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCc7XG4gICAgICAgIHZhciBpc01vdW50ID0gZm5OYW1lID09PSAnbW91bnRDb21wb25lbnQnO1xuXG4gICAgICAgIHZhciBtb3VudFN0YWNrID0gUmVhY3REZWZhdWx0UGVyZi5fbW91bnRTdGFjaztcbiAgICAgICAgdmFyIGVudHJ5ID0gUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzW1JlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50cy5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAoaXNSZW5kZXIpIHtcbiAgICAgICAgICBhZGRWYWx1ZShlbnRyeS5jb3VudHMsIHJvb3ROb2RlSUQsIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTW91bnQpIHtcbiAgICAgICAgICBlbnRyeS5jcmVhdGVkW3Jvb3ROb2RlSURdID0gdHJ1ZTtcbiAgICAgICAgICBtb3VudFN0YWNrLnB1c2goMCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydCA9IHBlcmZvcm1hbmNlTm93KCk7XG4gICAgICAgIHJ2ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgdG90YWxUaW1lID0gcGVyZm9ybWFuY2VOb3coKSAtIHN0YXJ0O1xuXG4gICAgICAgIGlmIChpc1JlbmRlcikge1xuICAgICAgICAgIGFkZFZhbHVlKGVudHJ5LnJlbmRlciwgcm9vdE5vZGVJRCwgdG90YWxUaW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc01vdW50KSB7XG4gICAgICAgICAgdmFyIHN1Yk1vdW50VGltZSA9IG1vdW50U3RhY2sucG9wKCk7XG4gICAgICAgICAgbW91bnRTdGFja1ttb3VudFN0YWNrLmxlbmd0aCAtIDFdICs9IHRvdGFsVGltZTtcbiAgICAgICAgICBhZGRWYWx1ZShlbnRyeS5leGNsdXNpdmUsIHJvb3ROb2RlSUQsIHRvdGFsVGltZSAtIHN1Yk1vdW50VGltZSk7XG4gICAgICAgICAgYWRkVmFsdWUoZW50cnkuaW5jbHVzaXZlLCByb290Tm9kZUlELCB0b3RhbFRpbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFZhbHVlKGVudHJ5LmluY2x1c2l2ZSwgcm9vdE5vZGVJRCwgdG90YWxUaW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVudHJ5LmRpc3BsYXlOYW1lc1tyb290Tm9kZUlEXSA9IHtcbiAgICAgICAgICBjdXJyZW50OiB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBvd25lcjogdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyID8gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSA6ICc8cm9vdD4nXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHJ2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERlZmF1bHRQZXJmOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcblxuLy8gRG9uJ3QgdHJ5IHRvIHNhdmUgdXNlcnMgbGVzcyB0aGFuIDEuMm1zIChhIG51bWJlciBJIG1hZGUgdXApXG52YXIgRE9OVF9DQVJFX1RIUkVTSE9MRCA9IDEuMjtcbnZhciBET01fT1BFUkFUSU9OX1RZUEVTID0ge1xuICAnX21vdW50SW1hZ2VJbnRvTm9kZSc6ICdzZXQgaW5uZXJIVE1MJyxcbiAgSU5TRVJUX01BUktVUDogJ3NldCBpbm5lckhUTUwnLFxuICBNT1ZFX0VYSVNUSU5HOiAnbW92ZScsXG4gIFJFTU9WRV9OT0RFOiAncmVtb3ZlJyxcbiAgU0VUX01BUktVUDogJ3NldCBpbm5lckhUTUwnLFxuICBURVhUX0NPTlRFTlQ6ICdzZXQgdGV4dENvbnRlbnQnLFxuICAnc2V0VmFsdWVGb3JQcm9wZXJ0eSc6ICd1cGRhdGUgYXR0cmlidXRlJyxcbiAgJ3NldFZhbHVlRm9yQXR0cmlidXRlJzogJ3VwZGF0ZSBhdHRyaWJ1dGUnLFxuICAnZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eSc6ICdyZW1vdmUgYXR0cmlidXRlJyxcbiAgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRCc6ICdyZXBsYWNlJ1xufTtcblxuZnVuY3Rpb24gZ2V0VG90YWxUaW1lKG1lYXN1cmVtZW50cykge1xuICAvLyBUT0RPOiByZXR1cm4gbnVtYmVyIG9mIERPTSBvcHM/IGNvdWxkIGJlIG1pc2xlYWRpbmcuXG4gIC8vIFRPRE86IG1lYXN1cmUgZHJvcHBlZCBmcmFtZXMgYWZ0ZXIgcmVjb25jaWxlP1xuICAvLyBUT0RPOiBsb2cgdG90YWwgdGltZSBvZiBlYWNoIHJlY29uY2lsZSBhbmQgdGhlIHRvcC1sZXZlbCBjb21wb25lbnRcbiAgLy8gY2xhc3MgdGhhdCB0cmlnZ2VyZWQgaXQuXG4gIHZhciB0b3RhbFRpbWUgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1lYXN1cmVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtZWFzdXJlbWVudCA9IG1lYXN1cmVtZW50c1tpXTtcbiAgICB0b3RhbFRpbWUgKz0gbWVhc3VyZW1lbnQudG90YWxUaW1lO1xuICB9XG4gIHJldHVybiB0b3RhbFRpbWU7XG59XG5cbmZ1bmN0aW9uIGdldERPTVN1bW1hcnkobWVhc3VyZW1lbnRzKSB7XG4gIHZhciBpdGVtcyA9IFtdO1xuICBtZWFzdXJlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobWVhc3VyZW1lbnQpIHtcbiAgICBPYmplY3Qua2V5cyhtZWFzdXJlbWVudC53cml0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICBtZWFzdXJlbWVudC53cml0ZXNbaWRdLmZvckVhY2goZnVuY3Rpb24gKHdyaXRlKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICB0eXBlOiBET01fT1BFUkFUSU9OX1RZUEVTW3dyaXRlLnR5cGVdIHx8IHdyaXRlLnR5cGUsXG4gICAgICAgICAgYXJnczogd3JpdGUuYXJnc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGl0ZW1zO1xufVxuXG5mdW5jdGlvbiBnZXRFeGNsdXNpdmVTdW1tYXJ5KG1lYXN1cmVtZW50cykge1xuICB2YXIgY2FuZGlkYXRlcyA9IHt9O1xuICB2YXIgZGlzcGxheU5hbWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZWFzdXJlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbWVhc3VyZW1lbnQgPSBtZWFzdXJlbWVudHNbaV07XG4gICAgdmFyIGFsbElEcyA9IGFzc2lnbih7fSwgbWVhc3VyZW1lbnQuZXhjbHVzaXZlLCBtZWFzdXJlbWVudC5pbmNsdXNpdmUpO1xuXG4gICAgZm9yICh2YXIgaWQgaW4gYWxsSURzKSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IG1lYXN1cmVtZW50LmRpc3BsYXlOYW1lc1tpZF0uY3VycmVudDtcblxuICAgICAgY2FuZGlkYXRlc1tkaXNwbGF5TmFtZV0gPSBjYW5kaWRhdGVzW2Rpc3BsYXlOYW1lXSB8fCB7XG4gICAgICAgIGNvbXBvbmVudE5hbWU6IGRpc3BsYXlOYW1lLFxuICAgICAgICBpbmNsdXNpdmU6IDAsXG4gICAgICAgIGV4Y2x1c2l2ZTogMCxcbiAgICAgICAgcmVuZGVyOiAwLFxuICAgICAgICBjb3VudDogMFxuICAgICAgfTtcbiAgICAgIGlmIChtZWFzdXJlbWVudC5yZW5kZXJbaWRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZXNbZGlzcGxheU5hbWVdLnJlbmRlciArPSBtZWFzdXJlbWVudC5yZW5kZXJbaWRdO1xuICAgICAgfVxuICAgICAgaWYgKG1lYXN1cmVtZW50LmV4Y2x1c2l2ZVtpZF0pIHtcbiAgICAgICAgY2FuZGlkYXRlc1tkaXNwbGF5TmFtZV0uZXhjbHVzaXZlICs9IG1lYXN1cmVtZW50LmV4Y2x1c2l2ZVtpZF07XG4gICAgICB9XG4gICAgICBpZiAobWVhc3VyZW1lbnQuaW5jbHVzaXZlW2lkXSkge1xuICAgICAgICBjYW5kaWRhdGVzW2Rpc3BsYXlOYW1lXS5pbmNsdXNpdmUgKz0gbWVhc3VyZW1lbnQuaW5jbHVzaXZlW2lkXTtcbiAgICAgIH1cbiAgICAgIGlmIChtZWFzdXJlbWVudC5jb3VudHNbaWRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZXNbZGlzcGxheU5hbWVdLmNvdW50ICs9IG1lYXN1cmVtZW50LmNvdW50c1tpZF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTm93IG1ha2UgYSBzb3J0ZWQgYXJyYXkgd2l0aCB0aGUgcmVzdWx0cy5cbiAgdmFyIGFyciA9IFtdO1xuICBmb3IgKGRpc3BsYXlOYW1lIGluIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoY2FuZGlkYXRlc1tkaXNwbGF5TmFtZV0uZXhjbHVzaXZlID49IERPTlRfQ0FSRV9USFJFU0hPTEQpIHtcbiAgICAgIGFyci5wdXNoKGNhbmRpZGF0ZXNbZGlzcGxheU5hbWVdKTtcbiAgICB9XG4gIH1cblxuICBhcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBiLmV4Y2x1c2l2ZSAtIGEuZXhjbHVzaXZlO1xuICB9KTtcblxuICByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBnZXRJbmNsdXNpdmVTdW1tYXJ5KG1lYXN1cmVtZW50cywgb25seUNsZWFuKSB7XG4gIHZhciBjYW5kaWRhdGVzID0ge307XG4gIHZhciBpbmNsdXNpdmVLZXk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZWFzdXJlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbWVhc3VyZW1lbnQgPSBtZWFzdXJlbWVudHNbaV07XG4gICAgdmFyIGFsbElEcyA9IGFzc2lnbih7fSwgbWVhc3VyZW1lbnQuZXhjbHVzaXZlLCBtZWFzdXJlbWVudC5pbmNsdXNpdmUpO1xuICAgIHZhciBjbGVhbkNvbXBvbmVudHM7XG5cbiAgICBpZiAob25seUNsZWFuKSB7XG4gICAgICBjbGVhbkNvbXBvbmVudHMgPSBnZXRVbmNoYW5nZWRDb21wb25lbnRzKG1lYXN1cmVtZW50KTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpZCBpbiBhbGxJRHMpIHtcbiAgICAgIGlmIChvbmx5Q2xlYW4gJiYgIWNsZWFuQ29tcG9uZW50c1tpZF0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IG1lYXN1cmVtZW50LmRpc3BsYXlOYW1lc1tpZF07XG5cbiAgICAgIC8vIEluY2x1c2l2ZSB0aW1lIGlzIG5vdCB1c2VmdWwgZm9yIG1hbnkgY29tcG9uZW50cyB3aXRob3V0IGtub3dpbmcgd2hlcmVcbiAgICAgIC8vIHRoZXkgYXJlIGluc3RhbnRpYXRlZC4gU28gd2UgYWdncmVnYXRlIGluY2x1c2l2ZSB0aW1lIHdpdGggYm90aCB0aGVcbiAgICAgIC8vIG93bmVyIGFuZCBjdXJyZW50IGRpc3BsYXlOYW1lIGFzIHRoZSBrZXkuXG4gICAgICBpbmNsdXNpdmVLZXkgPSBkaXNwbGF5TmFtZS5vd25lciArICcgPiAnICsgZGlzcGxheU5hbWUuY3VycmVudDtcblxuICAgICAgY2FuZGlkYXRlc1tpbmNsdXNpdmVLZXldID0gY2FuZGlkYXRlc1tpbmNsdXNpdmVLZXldIHx8IHtcbiAgICAgICAgY29tcG9uZW50TmFtZTogaW5jbHVzaXZlS2V5LFxuICAgICAgICB0aW1lOiAwLFxuICAgICAgICBjb3VudDogMFxuICAgICAgfTtcblxuICAgICAgaWYgKG1lYXN1cmVtZW50LmluY2x1c2l2ZVtpZF0pIHtcbiAgICAgICAgY2FuZGlkYXRlc1tpbmNsdXNpdmVLZXldLnRpbWUgKz0gbWVhc3VyZW1lbnQuaW5jbHVzaXZlW2lkXTtcbiAgICAgIH1cbiAgICAgIGlmIChtZWFzdXJlbWVudC5jb3VudHNbaWRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZXNbaW5jbHVzaXZlS2V5XS5jb3VudCArPSBtZWFzdXJlbWVudC5jb3VudHNbaWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE5vdyBtYWtlIGEgc29ydGVkIGFycmF5IHdpdGggdGhlIHJlc3VsdHMuXG4gIHZhciBhcnIgPSBbXTtcbiAgZm9yIChpbmNsdXNpdmVLZXkgaW4gY2FuZGlkYXRlcykge1xuICAgIGlmIChjYW5kaWRhdGVzW2luY2x1c2l2ZUtleV0udGltZSA+PSBET05UX0NBUkVfVEhSRVNIT0xEKSB7XG4gICAgICBhcnIucHVzaChjYW5kaWRhdGVzW2luY2x1c2l2ZUtleV0pO1xuICAgIH1cbiAgfVxuXG4gIGFyci5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGIudGltZSAtIGEudGltZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gZ2V0VW5jaGFuZ2VkQ29tcG9uZW50cyhtZWFzdXJlbWVudCkge1xuICAvLyBGb3IgYSBnaXZlbiByZWNvbmNpbGUsIGxvb2sgYXQgd2hpY2ggY29tcG9uZW50cyBkaWQgbm90IGFjdHVhbGx5XG4gIC8vIHJlbmRlciBhbnl0aGluZyB0byB0aGUgRE9NIGFuZCByZXR1cm4gYSBtYXBwaW5nIG9mIHRoZWlyIElEIHRvXG4gIC8vIHRoZSBhbW91bnQgb2YgdGltZSBpdCB0b29rIHRvIHJlbmRlciB0aGUgZW50aXJlIHN1YnRyZWUuXG4gIHZhciBjbGVhbkNvbXBvbmVudHMgPSB7fTtcbiAgdmFyIGRpcnR5TGVhZklEcyA9IE9iamVjdC5rZXlzKG1lYXN1cmVtZW50LndyaXRlcyk7XG4gIHZhciBhbGxJRHMgPSBhc3NpZ24oe30sIG1lYXN1cmVtZW50LmV4Y2x1c2l2ZSwgbWVhc3VyZW1lbnQuaW5jbHVzaXZlKTtcblxuICBmb3IgKHZhciBpZCBpbiBhbGxJRHMpIHtcbiAgICB2YXIgaXNEaXJ0eSA9IGZhbHNlO1xuICAgIC8vIEZvciBlYWNoIGNvbXBvbmVudCB0aGF0IHJlbmRlcmVkLCBzZWUgaWYgYSBjb21wb25lbnQgdGhhdCB0cmlnZ2VyZWRcbiAgICAvLyBhIERPTSBvcCBpcyBpbiBpdHMgc3VidHJlZS5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnR5TGVhZklEcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGRpcnR5TGVhZklEc1tpXS5pbmRleE9mKGlkKSA9PT0gMCkge1xuICAgICAgICBpc0RpcnR5ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGNoZWNrIGlmIGNvbXBvbmVudCBuZXdseSBjcmVhdGVkXG4gICAgaWYgKG1lYXN1cmVtZW50LmNyZWF0ZWRbaWRdKSB7XG4gICAgICBpc0RpcnR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFpc0RpcnR5ICYmIG1lYXN1cmVtZW50LmNvdW50c1tpZF0gPiAwKSB7XG4gICAgICBjbGVhbkNvbXBvbmVudHNbaWRdID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNsZWFuQ29tcG9uZW50cztcbn1cblxudmFyIFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcyA9IHtcbiAgZ2V0RXhjbHVzaXZlU3VtbWFyeTogZ2V0RXhjbHVzaXZlU3VtbWFyeSxcbiAgZ2V0SW5jbHVzaXZlU3VtbWFyeTogZ2V0SW5jbHVzaXZlU3VtbWFyeSxcbiAgZ2V0RE9NU3VtbWFyeTogZ2V0RE9NU3VtbWFyeSxcbiAgZ2V0VG90YWxUaW1lOiBnZXRUb3RhbFRpbWVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFbGVtZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydmb3InXSgncmVhY3QuZWxlbWVudCcpIHx8IDB4ZWFjNztcblxudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcblxuLyoqXG4gKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgUmVhY3QgZWxlbWVudHMuIFRoaXMgaXMgb25seSB1c2VkIHRvIG1ha2UgdGhpc1xuICogd29yayB3aXRoIGEgZHluYW1pYyBpbnN0YW5jZW9mIGNoZWNrLiBOb3RoaW5nIHNob3VsZCBsaXZlIG9uIHRoaXMgcHJvdG90eXBlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdHlwZVxuICogQHBhcmFtIHsqfSBrZXlcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXG4gKiBAcGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXNcbiAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2VcbiAqIGNhbiB3YXJuLiBXZSB3YW50IHRvIGdldCByaWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93XG4gKiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJlIG5vXG4gKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG4gKiBAcGFyYW0geyp9IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90aGVyd2lzZSlcbiAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0geyp9IG93bmVyXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7XG4gICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuXG4gICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiByZWYsXG4gICAgcHJvcHM6IHByb3BzLFxuXG4gICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cbiAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXG4gICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9yZSBzbyB0aGF0IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC5cbiAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXG4gICAgLy8gY29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXG4gICAgZWxlbWVudC5fc3RvcmUgPSB7fTtcblxuICAgIC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cbiAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNlbGZcbiAgICAgIH0pO1xuICAgICAgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcbiAgICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogc291cmNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICBlbGVtZW50Ll9zZWxmID0gc2VsZjtcbiAgICAgIGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTtcbiAgICB9XG4gICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcbiAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5SZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTtcblxuICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG4gIHZhciBwcm9wcyA9IHt9O1xuXG4gIHZhciBrZXkgPSBudWxsO1xuICB2YXIgcmVmID0gbnVsbDtcbiAgdmFyIHNlbGYgPSBudWxsO1xuICB2YXIgc291cmNlID0gbnVsbDtcblxuICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICByZWYgPSBjb25maWcucmVmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLnJlZjtcbiAgICBrZXkgPSBjb25maWcua2V5ID09PSB1bmRlZmluZWQgPyBudWxsIDogJycgKyBjb25maWcua2V5O1xuICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjtcbiAgICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zb3VyY2U7XG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzW3Byb3BOYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbn07XG5cblJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgdmFyIGZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5cGUpO1xuICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5kIHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmVcbiAgLy8gZWFzaWx5IGFjY2Vzc2VkIG9uIGVsZW1lbnRzLiBFLmcuIGA8Rm9vIC8+LnR5cGUgPT09IEZvb2AuXG4gIC8vIFRoaXMgc2hvdWxkIG5vdCBiZSBuYW1lZCBgY29uc3RydWN0b3JgIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgZnVuY3Rpb25cbiAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVuIGJlIGEgY29uc3RydWN0b3IuXG4gIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3NlZFxuICBmYWN0b3J5LnR5cGUgPSB0eXBlO1xuICByZXR1cm4gZmFjdG9yeTtcbn07XG5cblJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwgbmV3S2V5KSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVudC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7XG5cbiAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59O1xuXG5SZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlUHJvcHMgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwgbmV3UHJvcHMpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBvbGRFbGVtZW50LmtleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG5ld1Byb3BzKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIElmIHRoZSBrZXkgb24gdGhlIG9yaWdpbmFsIGlzIHZhbGlkLCB0aGVuIHRoZSBjbG9uZSBpcyB2YWxpZFxuICAgIG5ld0VsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IG9sZEVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZDtcbiAgfVxuXG4gIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTtcblxuICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29waWVkXG4gIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgZWxlbWVudC5wcm9wcyk7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIga2V5ID0gZWxlbWVudC5rZXk7XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAgLy8gU2VsZiBpcyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHByZXNlcnZlZC5cbiAgdmFyIHNlbGYgPSBlbGVtZW50Ll9zZWxmO1xuICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXG4gIC8vIHRyYW5zcGlsZXIsIGFuZCB0aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGVcbiAgLy8gdHJ1ZSBvd25lci5cbiAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtcblxuICAvLyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuXG4gIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIGlmIChjb25maWcucmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5rZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAgIH1cbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuICogQGZpbmFsXG4gKi9cblJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVZzWlcxbGJuUXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREUwTFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkZiR1Z0Wlc1MFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJqWVc1RVpXWnBibVZRY205d1pYSjBlU0E5SUhKbGNYVnBjbVVvSnk0dlkyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrbktUdGNibHh1THk4Z1ZHaGxJRk41YldKdmJDQjFjMlZrSUhSdklIUmhaeUIwYUdVZ1VtVmhZM1JGYkdWdFpXNTBJSFI1Y0dVdUlFbG1JSFJvWlhKbElHbHpJRzV2SUc1aGRHbDJaU0JUZVcxaWIyeGNiaTh2SUc1dmNpQndiMng1Wm1sc2JDd2dkR2hsYmlCaElIQnNZV2x1SUc1MWJXSmxjaUJwY3lCMWMyVmtJR1p2Y2lCd1pYSm1iM0p0WVc1alpTNWNiblpoY2lCU1JVRkRWRjlGVEVWTlJVNVVYMVJaVUVVZ1BTQjBlWEJsYjJZZ1UzbHRZbTlzSUQwOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUZONWJXSnZiRnNuWm05eUoxMGdKaVlnVTNsdFltOXNXeWRtYjNJblhTZ25jbVZoWTNRdVpXeGxiV1Z1ZENjcElIeDhJREI0WldGak56dGNibHh1ZG1GeUlGSkZVMFZTVmtWRVgxQlNUMUJUSUQwZ2UxeHVJQ0JyWlhrNklIUnlkV1VzWEc0Z0lISmxaam9nZEhKMVpTeGNiaUFnWDE5elpXeG1PaUIwY25WbExGeHVJQ0JmWDNOdmRYSmpaVG9nZEhKMVpWeHVmVHRjYmx4dUx5b3FYRzRnS2lCQ1lYTmxJR052Ym5OMGNuVmpkRzl5SUdadmNpQmhiR3dnVW1WaFkzUWdaV3hsYldWdWRITXVJRlJvYVhNZ2FYTWdiMjVzZVNCMWMyVmtJSFJ2SUcxaGEyVWdkR2hwYzF4dUlDb2dkMjl5YXlCM2FYUm9JR0VnWkhsdVlXMXBZeUJwYm5OMFlXNWpaVzltSUdOb1pXTnJMaUJPYjNSb2FXNW5JSE5vYjNWc1pDQnNhWFpsSUc5dUlIUm9hWE1nY0hKdmRHOTBlWEJsTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3S24wZ2RIbHdaVnh1SUNvZ1FIQmhjbUZ0SUhzcWZTQnJaWGxjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZkc5aWFtVmpkSDBnY21WbVhHNGdLaUJBY0dGeVlXMGdleXA5SUhObGJHWWdRU0FxZEdWdGNHOXlZWEo1S2lCb1pXeHdaWElnZEc4Z1pHVjBaV04wSUhCc1lXTmxjeUIzYUdWeVpTQmdkR2hwYzJBZ2FYTmNiaUFxSUdScFptWmxjbVZ1ZENCbWNtOXRJSFJvWlNCZ2IzZHVaWEpnSUhkb1pXNGdVbVZoWTNRdVkzSmxZWFJsUld4bGJXVnVkQ0JwY3lCallXeHNaV1FzSUhOdklIUm9ZWFFnZDJWY2JpQXFJR05oYmlCM1lYSnVMaUJYWlNCM1lXNTBJSFJ2SUdkbGRDQnlhV1FnYjJZZ2IzZHVaWElnWVc1a0lISmxjR3hoWTJVZ2MzUnlhVzVuSUdCeVpXWmdjeUIzYVhSb0lHRnljbTkzWEc0Z0tpQm1kVzVqZEdsdmJuTXNJR0Z1WkNCaGN5QnNiMjVuSUdGeklHQjBhR2x6WUNCaGJtUWdiM2R1WlhJZ1lYSmxJSFJvWlNCellXMWxMQ0IwYUdWeVpTQjNhV3hzSUdKbElHNXZYRzRnS2lCamFHRnVaMlVnYVc0Z1ltVm9ZWFpwYjNJdVhHNGdLaUJBY0dGeVlXMGdleXA5SUhOdmRYSmpaU0JCYmlCaGJtNXZkR0YwYVc5dUlHOWlhbVZqZENBb1lXUmtaV1FnWW5rZ1lTQjBjbUZ1YzNCcGJHVnlJRzl5SUc5MGFHVnlkMmx6WlNsY2JpQXFJR2x1WkdsallYUnBibWNnWm1sc1pXNWhiV1VzSUd4cGJtVWdiblZ0WW1WeUxDQmhibVF2YjNJZ2IzUm9aWElnYVc1bWIzSnRZWFJwYjI0dVhHNGdLaUJBY0dGeVlXMGdleXA5SUc5M2JtVnlYRzRnS2lCQWNHRnlZVzBnZXlwOUlIQnliM0J6WEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxTDF4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlHWjFibU4wYVc5dUlDaDBlWEJsTENCclpYa3NJSEpsWml3Z2MyVnNaaXdnYzI5MWNtTmxMQ0J2ZDI1bGNpd2djSEp2Y0hNcElIdGNiaUFnZG1GeUlHVnNaVzFsYm5RZ1BTQjdYRzRnSUNBZ0x5OGdWR2hwY3lCMFlXY2dZV3hzYjNjZ2RYTWdkRzhnZFc1cGNYVmxiSGtnYVdSbGJuUnBabmtnZEdocGN5QmhjeUJoSUZKbFlXTjBJRVZzWlcxbGJuUmNiaUFnSUNBa0pIUjVjR1Z2WmpvZ1VrVkJRMVJmUlV4RlRVVk9WRjlVV1ZCRkxGeHVYRzRnSUNBZ0x5OGdRblZwYkhRdGFXNGdjSEp2Y0dWeWRHbGxjeUIwYUdGMElHSmxiRzl1WnlCdmJpQjBhR1VnWld4bGJXVnVkRnh1SUNBZ0lIUjVjR1U2SUhSNWNHVXNYRzRnSUNBZ2EyVjVPaUJyWlhrc1hHNGdJQ0FnY21WbU9pQnlaV1lzWEc0Z0lDQWdjSEp2Y0hNNklIQnliM0J6TEZ4dVhHNGdJQ0FnTHk4Z1VtVmpiM0prSUhSb1pTQmpiMjF3YjI1bGJuUWdjbVZ6Y0c5dWMybGliR1VnWm05eUlHTnlaV0YwYVc1bklIUm9hWE1nWld4bGJXVnVkQzVjYmlBZ0lDQmZiM2R1WlhJNklHOTNibVZ5WEc0Z0lIMDdYRzVjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0F2THlCVWFHVWdkbUZzYVdSaGRHbHZiaUJtYkdGbklHbHpJR04xY25KbGJuUnNlU0J0ZFhSaGRHbDJaUzRnVjJVZ2NIVjBJR2wwSUc5dVhHNGdJQ0FnTHk4Z1lXNGdaWGgwWlhKdVlXd2dZbUZqYTJsdVp5QnpkRzl5WlNCemJ5QjBhR0YwSUhkbElHTmhiaUJtY21WbGVtVWdkR2hsSUhkb2IyeGxJRzlpYW1WamRDNWNiaUFnSUNBdkx5QlVhR2x6SUdOaGJpQmlaU0J5WlhCc1lXTmxaQ0IzYVhSb0lHRWdWMlZoYTAxaGNDQnZibU5sSUhSb1pYa2dZWEpsSUdsdGNHeGxiV1Z1ZEdWa0lHbHVYRzRnSUNBZ0x5OGdZMjl0Ylc5dWJIa2dkWE5sWkNCa1pYWmxiRzl3YldWdWRDQmxiblpwY205dWJXVnVkSE11WEc0Z0lDQWdaV3hsYldWdWRDNWZjM1J2Y21VZ1BTQjdmVHRjYmx4dUlDQWdJQzh2SUZSdklHMWhhMlVnWTI5dGNHRnlhVzVuSUZKbFlXTjBSV3hsYldWdWRITWdaV0Z6YVdWeUlHWnZjaUIwWlhOMGFXNW5JSEIxY25CdmMyVnpMQ0IzWlNCdFlXdGxYRzRnSUNBZ0x5OGdkR2hsSUhaaGJHbGtZWFJwYjI0Z1pteGhaeUJ1YjI0dFpXNTFiV1Z5WVdKc1pTQW9kMmhsY21VZ2NHOXpjMmxpYkdVc0lIZG9hV05vSUhOb2IzVnNaRnh1SUNBZ0lDOHZJR2x1WTJ4MVpHVWdaWFpsY25rZ1pXNTJhWEp2Ym0xbGJuUWdkMlVnY25WdUlIUmxjM1J6SUdsdUtTd2djMjhnZEdobElIUmxjM1FnWm5KaGJXVjNiM0pyWEc0Z0lDQWdMeThnYVdkdWIzSmxjeUJwZEM1Y2JpQWdJQ0JwWmlBb1kyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrcElIdGNiaUFnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hsYkdWdFpXNTBMbDl6ZEc5eVpTd2dKM1poYkdsa1lYUmxaQ2NzSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVabWxuZFhKaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJSGR5YVhSaFlteGxPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQjJZV3gxWlRvZ1ptRnNjMlZjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnTHk4Z2MyVnNaaUJoYm1RZ2MyOTFjbU5sSUdGeVpTQkVSVllnYjI1c2VTQndjbTl3WlhKMGFXVnpMbHh1SUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0dWc1pXMWxiblFzSUNkZmMyVnNaaWNzSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVabWxuZFhKaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJSGR5YVhSaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdkbUZzZFdVNklITmxiR1pjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnTHk4Z1ZIZHZJR1ZzWlcxbGJuUnpJR055WldGMFpXUWdhVzRnZEhkdklHUnBabVpsY21WdWRDQndiR0ZqWlhNZ2MyaHZkV3hrSUdKbElHTnZibk5wWkdWeVpXUmNiaUFnSUNBZ0lDOHZJR1Z4ZFdGc0lHWnZjaUIwWlhOMGFXNW5JSEIxY25CdmMyVnpJR0Z1WkNCMGFHVnlaV1p2Y21VZ2QyVWdhR2xrWlNCcGRDQm1jbTl0SUdWdWRXMWxjbUYwYVc5dUxseHVJQ0FnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLR1ZzWlcxbGJuUXNJQ2RmYzI5MWNtTmxKeXdnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2QxY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQmxiblZ0WlhKaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdkM0pwZEdGaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQjJZV3gxWlRvZ2MyOTFjbU5sWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdaV3hsYldWdWRDNWZjM1J2Y21VdWRtRnNhV1JoZEdWa0lEMGdabUZzYzJVN1hHNGdJQ0FnSUNCbGJHVnRaVzUwTGw5elpXeG1JRDBnYzJWc1pqdGNiaUFnSUNBZ0lHVnNaVzFsYm5RdVgzTnZkWEpqWlNBOUlITnZkWEpqWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdUMkpxWldOMExtWnlaV1Y2WlNobGJHVnRaVzUwTG5CeWIzQnpLVHRjYmlBZ0lDQlBZbXBsWTNRdVpuSmxaWHBsS0dWc1pXMWxiblFwTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUdWc1pXMWxiblE3WEc1OU8xeHVYRzVTWldGamRFVnNaVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ0E5SUdaMWJtTjBhVzl1SUNoMGVYQmxMQ0JqYjI1bWFXY3NJR05vYVd4a2NtVnVLU0I3WEc0Z0lIWmhjaUJ3Y205d1RtRnRaVHRjYmx4dUlDQXZMeUJTWlhObGNuWmxaQ0J1WVcxbGN5QmhjbVVnWlhoMGNtRmpkR1ZrWEc0Z0lIWmhjaUJ3Y205d2N5QTlJSHQ5TzF4dVhHNGdJSFpoY2lCclpYa2dQU0J1ZFd4c08xeHVJQ0IyWVhJZ2NtVm1JRDBnYm5Wc2JEdGNiaUFnZG1GeUlITmxiR1lnUFNCdWRXeHNPMXh1SUNCMllYSWdjMjkxY21ObElEMGdiblZzYkR0Y2JseHVJQ0JwWmlBb1kyOXVabWxuSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0J5WldZZ1BTQmpiMjVtYVdjdWNtVm1JRDA5UFNCMWJtUmxabWx1WldRZ1B5QnVkV3hzSURvZ1kyOXVabWxuTG5KbFpqdGNiaUFnSUNCclpYa2dQU0JqYjI1bWFXY3VhMlY1SUQwOVBTQjFibVJsWm1sdVpXUWdQeUJ1ZFd4c0lEb2dKeWNnS3lCamIyNW1hV2N1YTJWNU8xeHVJQ0FnSUhObGJHWWdQU0JqYjI1bWFXY3VYMTl6Wld4bUlEMDlQU0IxYm1SbFptbHVaV1FnUHlCdWRXeHNJRG9nWTI5dVptbG5MbDlmYzJWc1pqdGNiaUFnSUNCemIzVnlZMlVnUFNCamIyNW1hV2N1WDE5emIzVnlZMlVnUFQwOUlIVnVaR1ZtYVc1bFpDQS9JRzUxYkd3Z09pQmpiMjVtYVdjdVgxOXpiM1Z5WTJVN1hHNGdJQ0FnTHk4Z1VtVnRZV2x1YVc1bklIQnliM0JsY25ScFpYTWdZWEpsSUdGa1pHVmtJSFJ2SUdFZ2JtVjNJSEJ5YjNCeklHOWlhbVZqZEZ4dUlDQWdJR1p2Y2lBb2NISnZjRTVoYldVZ2FXNGdZMjl1Wm1sbktTQjdYRzRnSUNBZ0lDQnBaaUFvWTI5dVptbG5MbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTQW1KaUFoVWtWVFJWSldSVVJmVUZKUFVGTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSEJ5YjNCelczQnliM0JPWVcxbFhTQTlJR052Ym1acFoxdHdjbTl3VG1GdFpWMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeThnUTJocGJHUnlaVzRnWTJGdUlHSmxJRzF2Y21VZ2RHaGhiaUJ2Ym1VZ1lYSm5kVzFsYm5Rc0lHRnVaQ0IwYUc5elpTQmhjbVVnZEhKaGJuTm1aWEp5WldRZ2IyNTBiMXh1SUNBdkx5QjBhR1VnYm1WM2JIa2dZV3hzYjJOaGRHVmtJSEJ5YjNCeklHOWlhbVZqZEM1Y2JpQWdkbUZ5SUdOb2FXeGtjbVZ1VEdWdVozUm9JRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0F0SURJN1hHNGdJR2xtSUNoamFHbHNaSEpsYmt4bGJtZDBhQ0E5UFQwZ01Ta2dlMXh1SUNBZ0lIQnliM0J6TG1Ob2FXeGtjbVZ1SUQwZ1kyaHBiR1J5Wlc0N1hHNGdJSDBnWld4elpTQnBaaUFvWTJocGJHUnlaVzVNWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnZG1GeUlHTm9hV3hrUVhKeVlYa2dQU0JCY25KaGVTaGphR2xzWkhKbGJreGxibWQwYUNrN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCamFHbHNaSEpsYmt4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQmphR2xzWkVGeWNtRjVXMmxkSUQwZ1lYSm5kVzFsYm5Selcya2dLeUF5WFR0Y2JpQWdJQ0I5WEc0Z0lDQWdjSEp2Y0hNdVkyaHBiR1J5Wlc0Z1BTQmphR2xzWkVGeWNtRjVPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVnpiMngyWlNCa1pXWmhkV3gwSUhCeWIzQnpYRzRnSUdsbUlDaDBlWEJsSUNZbUlIUjVjR1V1WkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ2RtRnlJR1JsWm1GMWJIUlFjbTl3Y3lBOUlIUjVjR1V1WkdWbVlYVnNkRkJ5YjNCek8xeHVJQ0FnSUdadmNpQW9jSEp2Y0U1aGJXVWdhVzRnWkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSEJ5YjNCelczQnliM0JPWVcxbFhTQTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lDQWdjSEp2Y0hOYmNISnZjRTVoYldWZElEMGdaR1ZtWVhWc2RGQnliM0J6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnVW1WaFkzUkZiR1Z0Wlc1MEtIUjVjR1VzSUd0bGVTd2djbVZtTENCelpXeG1MQ0J6YjNWeVkyVXNJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUXNJSEJ5YjNCektUdGNibjA3WEc1Y2JsSmxZV04wUld4bGJXVnVkQzVqY21WaGRHVkdZV04wYjNKNUlEMGdablZ1WTNScGIyNGdLSFI1Y0dVcElIdGNiaUFnZG1GeUlHWmhZM1J2Y25rZ1BTQlNaV0ZqZEVWc1pXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDNWlhVzVrS0c1MWJHd3NJSFI1Y0dVcE8xeHVJQ0F2THlCRmVIQnZjMlVnZEdobElIUjVjR1VnYjI0Z2RHaGxJR1poWTNSdmNua2dZVzVrSUhSb1pTQndjbTkwYjNSNWNHVWdjMjhnZEdoaGRDQnBkQ0JqWVc0Z1ltVmNiaUFnTHk4Z1pXRnphV3g1SUdGalkyVnpjMlZrSUc5dUlHVnNaVzFsYm5SekxpQkZMbWN1SUdBOFJtOXZJQzgrTG5SNWNHVWdQVDA5SUVadmIyQXVYRzRnSUM4dklGUm9hWE1nYzJodmRXeGtJRzV2ZENCaVpTQnVZVzFsWkNCZ1kyOXVjM1J5ZFdOMGIzSmdJSE5wYm1ObElIUm9hWE1nYldGNUlHNXZkQ0JpWlNCMGFHVWdablZ1WTNScGIyNWNiaUFnTHk4Z2RHaGhkQ0JqY21WaGRHVmtJSFJvWlNCbGJHVnRaVzUwTENCaGJtUWdhWFFnYldGNUlHNXZkQ0JsZG1WdUlHSmxJR0VnWTI5dWMzUnlkV04wYjNJdVhHNGdJQzh2SUV4bFoyRmplU0JvYjI5cklGUlBSRTg2SUZkaGNtNGdhV1lnZEdocGN5QnBjeUJoWTJObGMzTmxaRnh1SUNCbVlXTjBiM0o1TG5SNWNHVWdQU0IwZVhCbE8xeHVJQ0J5WlhSMWNtNGdabUZqZEc5eWVUdGNibjA3WEc1Y2JsSmxZV04wUld4bGJXVnVkQzVqYkc5dVpVRnVaRkpsY0d4aFkyVkxaWGtnUFNCbWRXNWpkR2x2YmlBb2IyeGtSV3hsYldWdWRDd2dibVYzUzJWNUtTQjdYRzRnSUhaaGNpQnVaWGRGYkdWdFpXNTBJRDBnVW1WaFkzUkZiR1Z0Wlc1MEtHOXNaRVZzWlcxbGJuUXVkSGx3WlN3Z2JtVjNTMlY1TENCdmJHUkZiR1Z0Wlc1MExuSmxaaXdnYjJ4a1JXeGxiV1Z1ZEM1ZmMyVnNaaXdnYjJ4a1JXeGxiV1Z1ZEM1ZmMyOTFjbU5sTENCdmJHUkZiR1Z0Wlc1MExsOXZkMjVsY2l3Z2IyeGtSV3hsYldWdWRDNXdjbTl3Y3lrN1hHNWNiaUFnY21WMGRYSnVJRzVsZDBWc1pXMWxiblE3WEc1OU8xeHVYRzVTWldGamRFVnNaVzFsYm5RdVkyeHZibVZCYm1SU1pYQnNZV05sVUhKdmNITWdQU0JtZFc1amRHbHZiaUFvYjJ4a1JXeGxiV1Z1ZEN3Z2JtVjNVSEp2Y0hNcElIdGNiaUFnZG1GeUlHNWxkMFZzWlcxbGJuUWdQU0JTWldGamRFVnNaVzFsYm5Rb2IyeGtSV3hsYldWdWRDNTBlWEJsTENCdmJHUkZiR1Z0Wlc1MExtdGxlU3dnYjJ4a1JXeGxiV1Z1ZEM1eVpXWXNJRzlzWkVWc1pXMWxiblF1WDNObGJHWXNJRzlzWkVWc1pXMWxiblF1WDNOdmRYSmpaU3dnYjJ4a1JXeGxiV1Z1ZEM1ZmIzZHVaWElzSUc1bGQxQnliM0J6S1R0Y2JseHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDOHZJRWxtSUhSb1pTQnJaWGtnYjI0Z2RHaGxJRzl5YVdkcGJtRnNJR2x6SUhaaGJHbGtMQ0IwYUdWdUlIUm9aU0JqYkc5dVpTQnBjeUIyWVd4cFpGeHVJQ0FnSUc1bGQwVnNaVzFsYm5RdVgzTjBiM0psTG5aaGJHbGtZWFJsWkNBOUlHOXNaRVZzWlcxbGJuUXVYM04wYjNKbExuWmhiR2xrWVhSbFpEdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnVaWGRGYkdWdFpXNTBPMXh1ZlR0Y2JseHVVbVZoWTNSRmJHVnRaVzUwTG1Oc2IyNWxSV3hsYldWdWRDQTlJR1oxYm1OMGFXOXVJQ2hsYkdWdFpXNTBMQ0JqYjI1bWFXY3NJR05vYVd4a2NtVnVLU0I3WEc0Z0lIWmhjaUJ3Y205d1RtRnRaVHRjYmx4dUlDQXZMeUJQY21sbmFXNWhiQ0J3Y205d2N5QmhjbVVnWTI5d2FXVmtYRzRnSUhaaGNpQndjbTl3Y3lBOUlHRnpjMmxuYmloN2ZTd2daV3hsYldWdWRDNXdjbTl3Y3lrN1hHNWNiaUFnTHk4Z1VtVnpaWEoyWldRZ2JtRnRaWE1nWVhKbElHVjRkSEpoWTNSbFpGeHVJQ0IyWVhJZ2EyVjVJRDBnWld4bGJXVnVkQzVyWlhrN1hHNGdJSFpoY2lCeVpXWWdQU0JsYkdWdFpXNTBMbkpsWmp0Y2JpQWdMeThnVTJWc1ppQnBjeUJ3Y21WelpYSjJaV1FnYzJsdVkyVWdkR2hsSUc5M2JtVnlJR2x6SUhCeVpYTmxjblpsWkM1Y2JpQWdkbUZ5SUhObGJHWWdQU0JsYkdWdFpXNTBMbDl6Wld4bU8xeHVJQ0F2THlCVGIzVnlZMlVnYVhNZ2NISmxjMlZ5ZG1Wa0lITnBibU5sSUdOc2IyNWxSV3hsYldWdWRDQnBjeUIxYm14cGEyVnNlU0IwYnlCaVpTQjBZWEpuWlhSbFpDQmllU0JoWEc0Z0lDOHZJSFJ5WVc1emNHbHNaWElzSUdGdVpDQjBhR1VnYjNKcFoybHVZV3dnYzI5MWNtTmxJR2x6SUhCeWIySmhZbXg1SUdFZ1ltVjBkR1Z5SUdsdVpHbGpZWFJ2Y2lCdlppQjBhR1ZjYmlBZ0x5OGdkSEoxWlNCdmQyNWxjaTVjYmlBZ2RtRnlJSE52ZFhKalpTQTlJR1ZzWlcxbGJuUXVYM052ZFhKalpUdGNibHh1SUNBdkx5QlBkMjVsY2lCM2FXeHNJR0psSUhCeVpYTmxjblpsWkN3Z2RXNXNaWE56SUhKbFppQnBjeUJ2ZG1WeWNtbGtaR1Z1WEc0Z0lIWmhjaUJ2ZDI1bGNpQTlJR1ZzWlcxbGJuUXVYMjkzYm1WeU8xeHVYRzRnSUdsbUlDaGpiMjVtYVdjZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUdsbUlDaGpiMjVtYVdjdWNtVm1JQ0U5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lDOHZJRk5wYkdWdWRHeDVJSE4wWldGc0lIUm9aU0J5WldZZ1puSnZiU0IwYUdVZ2NHRnlaVzUwTGx4dUlDQWdJQ0FnY21WbUlEMGdZMjl1Wm1sbkxuSmxaanRjYmlBZ0lDQWdJRzkzYm1WeUlEMGdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWREdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHTnZibVpwWnk1clpYa2dJVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2EyVjVJRDBnSnljZ0t5QmpiMjVtYVdjdWEyVjVPMXh1SUNBZ0lIMWNiaUFnSUNBdkx5QlNaVzFoYVc1cGJtY2djSEp2Y0dWeWRHbGxjeUJ2ZG1WeWNtbGtaU0JsZUdsemRHbHVaeUJ3Y205d2MxeHVJQ0FnSUdadmNpQW9jSEp2Y0U1aGJXVWdhVzRnWTI5dVptbG5LU0I3WEc0Z0lDQWdJQ0JwWmlBb1kyOXVabWxuTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU0FtSmlBaFVrVlRSVkpXUlVSZlVGSlBVRk11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhCeWIzQnpXM0J5YjNCT1lXMWxYU0E5SUdOdmJtWnBaMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHk4Z1EyaHBiR1J5Wlc0Z1kyRnVJR0psSUcxdmNtVWdkR2hoYmlCdmJtVWdZWEpuZFcxbGJuUXNJR0Z1WkNCMGFHOXpaU0JoY21VZ2RISmhibk5tWlhKeVpXUWdiMjUwYjF4dUlDQXZMeUIwYUdVZ2JtVjNiSGtnWVd4c2IyTmhkR1ZrSUhCeWIzQnpJRzlpYW1WamRDNWNiaUFnZG1GeUlHTm9hV3hrY21WdVRHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUNBdElESTdYRzRnSUdsbUlDaGphR2xzWkhKbGJreGxibWQwYUNBOVBUMGdNU2tnZTF4dUlDQWdJSEJ5YjNCekxtTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNDdYRzRnSUgwZ1pXeHpaU0JwWmlBb1kyaHBiR1J5Wlc1TVpXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ2RtRnlJR05vYVd4a1FYSnlZWGtnUFNCQmNuSmhlU2hqYUdsc1pISmxia3hsYm1kMGFDazdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQmphR2xzWkhKbGJreGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYUdsc1pFRnljbUY1VzJsZElEMGdZWEpuZFcxbGJuUnpXMmtnS3lBeVhUdGNiaUFnSUNCOVhHNGdJQ0FnY0hKdmNITXVZMmhwYkdSeVpXNGdQU0JqYUdsc1pFRnljbUY1TzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUZKbFlXTjBSV3hsYldWdWRDaGxiR1Z0Wlc1MExuUjVjR1VzSUd0bGVTd2djbVZtTENCelpXeG1MQ0J6YjNWeVkyVXNJRzkzYm1WeUxDQndjbTl3Y3lrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYjJKcVpXTjBYRzRnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCVWNuVmxJR2xtSUdCdlltcGxZM1JnSUdseklHRWdkbUZzYVdRZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUdacGJtRnNYRzRnS2k5Y2JsSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDQTlJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXBJSHRjYmlBZ2NtVjBkWEp1SUhSNWNHVnZaaUJ2WW1wbFkzUWdQVDA5SUNkdlltcGxZM1FuSUNZbUlHOWlhbVZqZENBaFBUMGdiblZzYkNBbUppQnZZbXBsWTNRdUpDUjBlWEJsYjJZZ1BUMDlJRkpGUVVOVVgwVk1SVTFGVGxSZlZGbFFSVHRjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRmJHVnRaVzUwT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RWxlbWVudFZhbGlkYXRvclxuICovXG5cbi8qKlxuICogUmVhY3RFbGVtZW50VmFsaWRhdG9yIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgYSBlbGVtZW50IGZhY3RvcnlcbiAqIHdoaWNoIHZhbGlkYXRlcyB0aGUgcHJvcHMgcGFzc2VkIHRvIHRoZSBlbGVtZW50LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlXG4gKiB1c2VkIG9ubHkgaW4gREVWIGFuZCBjb3VsZCBiZSByZXBsYWNlZCBieSBhIHN0YXRpYyB0eXBlIGNoZWNrZXIgZm9yIGxhbmd1YWdlc1xuICogdGhhdCBzdXBwb3J0IGl0LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9ucycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcycpO1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpIHtcbiAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogV2FybiBpZiB0aGVyZSdzIG5vIGtleSBleHBsaWNpdGx5IHNldCBvbiBkeW5hbWljIGFycmF5cyBvZiBjaGlsZHJlbiBvclxuICogb2JqZWN0IGtleXMgYXJlIG5vdCB2YWxpZC4gVGhpcyBhbGxvd3MgdXMgdG8ga2VlcCB0cmFjayBvZiBjaGlsZHJlbiBiZXR3ZWVuXG4gKiB1cGRhdGVzLlxuICovXG52YXIgb3duZXJIYXNLZXlVc2VXYXJuaW5nID0ge307XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBFbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG5cbiAgdmFyIGFkZGVuZGEgPSBnZXRBZGRlbmRhRm9yS2V5VXNlKCd1bmlxdWVLZXknLCBlbGVtZW50LCBwYXJlbnRUeXBlKTtcbiAgaWYgKGFkZGVuZGEgPT09IG51bGwpIHtcbiAgICAvLyB3ZSBhbHJlYWR5IHNob3dlZCB0aGUgd2FybmluZ1xuICAgIHJldHVybjtcbiAgfVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0VhY2ggY2hpbGQgaW4gYW4gYXJyYXkgb3IgaXRlcmF0b3Igc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyVzJywgYWRkZW5kYS5wYXJlbnRPck93bmVyIHx8ICcnLCBhZGRlbmRhLmNoaWxkT3duZXIgfHwgJycsIGFkZGVuZGEudXJsIHx8ICcnKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTaGFyZWQgd2FybmluZyBhbmQgbW9uaXRvcmluZyBjb2RlIGZvciB0aGUga2V5IHdhcm5pbmdzLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VUeXBlIEEga2V5IHVzZWQgZm9yIGRlLWR1cGluZyB3YXJuaW5ncy5cbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IENvbXBvbmVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICogQHJldHVybnMgez9vYmplY3R9IEEgc2V0IG9mIGFkZGVuZGEgdG8gdXNlIGluIHRoZSB3YXJuaW5nIG1lc3NhZ2UsIG9yIG51bGxcbiAqIGlmIHRoZSB3YXJuaW5nIGhhcyBhbHJlYWR5IGJlZW4gc2hvd24gYmVmb3JlIChhbmQgc2hvdWxkbid0IGJlIHNob3duIGFnYWluKS5cbiAqL1xuZnVuY3Rpb24gZ2V0QWRkZW5kYUZvcktleVVzZShtZXNzYWdlVHlwZSwgZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcbiAgaWYgKCFhZGRlbmR1bSkge1xuICAgIHZhciBwYXJlbnROYW1lID0gdHlwZW9mIHBhcmVudFR5cGUgPT09ICdzdHJpbmcnID8gcGFyZW50VHlwZSA6IHBhcmVudFR5cGUuZGlzcGxheU5hbWUgfHwgcGFyZW50VHlwZS5uYW1lO1xuICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICBhZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8JyArIHBhcmVudE5hbWUgKyAnPi4nO1xuICAgIH1cbiAgfVxuXG4gIHZhciBtZW1vaXplciA9IG93bmVySGFzS2V5VXNlV2FybmluZ1ttZXNzYWdlVHlwZV0gfHwgKG93bmVySGFzS2V5VXNlV2FybmluZ1ttZXNzYWdlVHlwZV0gPSB7fSk7XG4gIGlmIChtZW1vaXplclthZGRlbmR1bV0pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBtZW1vaXplclthZGRlbmR1bV0gPSB0cnVlO1xuXG4gIHZhciBhZGRlbmRhID0ge1xuICAgIHBhcmVudE9yT3duZXI6IGFkZGVuZHVtLFxuICAgIHVybDogJyBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyxcbiAgICBjaGlsZE93bmVyOiBudWxsXG4gIH07XG5cbiAgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGFcbiAgLy8gcHJvcGVydHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvclxuICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuXG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgYWRkZW5kYS5jaGlsZE93bmVyID0gJyBJdCB3YXMgcGFzc2VkIGEgY2hpbGQgZnJvbSAnICsgZWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nO1xuICB9XG5cbiAgcmV0dXJuIGFkZGVuZGE7XG59XG5cbi8qKlxuICogRW5zdXJlIHRoYXQgZXZlcnkgZWxlbWVudCBlaXRoZXIgaXMgcGFzc2VkIGluIGEgc3RhdGljIGxvY2F0aW9uLCBpbiBhblxuICogYXJyYXkgd2l0aCBhbiBleHBsaWNpdCBrZXlzIHByb3BlcnR5IGRlZmluZWQsIG9yIGluIGFuIG9iamVjdCBsaXRlcmFsXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIG5vZGUncyBwYXJlbnQncyB0eXBlLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XG4gICAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgLy8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi5cbiAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUpIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XG4gICAgLy8gRW50cnkgaXRlcmF0b3JzIHByb3ZpZGUgaW1wbGljaXQga2V5cy5cbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IG5vZGUuZW50cmllcykge1xuICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7XG4gICAgICAgIHZhciBzdGVwO1xuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgcHJvcHMgYXJlIHZhbGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wVHlwZXMgTWFwIG9mIHByb3AgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXMoY29tcG9uZW50TmFtZSwgcHJvcFR5cGVzLCBwcm9wcywgbG9jYXRpb24pIHtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7XG4gICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgIHZhciBlcnJvcjtcbiAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAhKHR5cGVvZiBwcm9wVHlwZXNbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbik7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUsIHR5cGVvZiBlcnJvcikgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpIHtcbiAgdmFyIGNvbXBvbmVudENsYXNzID0gZWxlbWVudC50eXBlO1xuICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuYW1lID0gY29tcG9uZW50Q2xhc3MuZGlzcGxheU5hbWUgfHwgY29tcG9uZW50Q2xhc3MubmFtZTtcbiAgaWYgKGNvbXBvbmVudENsYXNzLnByb3BUeXBlcykge1xuICAgIGNoZWNrUHJvcFR5cGVzKG5hbWUsIGNvbXBvbmVudENsYXNzLnByb3BUeXBlcywgZWxlbWVudC5wcm9wcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKTtcbiAgfVxuICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFjdC5jcmVhdGVDbGFzcyAnICsgJ2RlZmluaXRpb25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgYGRlZmF1bHRQcm9wc2AgaW5zdGVhZC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG52YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0ge1xuXG4gIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uICh0eXBlLCBwcm9wcywgY2hpbGRyZW4pIHtcbiAgICB2YXIgdmFsaWRUeXBlID0gdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gICAgLy8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh2YWxpZFR5cGUsICdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIHNob3VsZCBub3QgYmUgbnVsbCwgdW5kZWZpbmVkLCBib29sZWFuLCBvciAnICsgJ251bWJlci4gSXQgc2hvdWxkIGJlIGEgc3RyaW5nIChmb3IgRE9NIGVsZW1lbnRzKSBvciBhIFJlYWN0Q2xhc3MgJyArICcoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBlbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIC8vIFNraXAga2V5IHdhcm5pbmcgaWYgdGhlIHR5cGUgaXNuJ3QgdmFsaWQgc2luY2Ugb3VyIGtleSB2YWxpZGF0aW9uIGxvZ2ljXG4gICAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxuICAgIC8vIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9uIGJlaGF2aW9yIHRvIGRpZmZlciBiZXR3ZWVuIGRldiBhbmQgcHJvZC5cbiAgICAvLyAoUmVuZGVyaW5nIHdpbGwgdGhyb3cgd2l0aCBhIGhlbHBmdWwgbWVzc2FnZSBhbmQgYXMgc29vbiBhcyB0aGUgdHlwZSBpc1xuICAgIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcbiAgICBpZiAodmFsaWRUeXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0sXG5cbiAgY3JlYXRlRmFjdG9yeTogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgdmFsaWRhdGVkRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG4gICAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gICAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbGlkYXRlZEZhY3RvcnksICd0eXBlJywge1xuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWN0b3J5LnR5cGUgaXMgZGVwcmVjYXRlZC4gQWNjZXNzIHRoZSBjbGFzcyBkaXJlY3RseSAnICsgJ2JlZm9yZSBwYXNzaW5nIGl0IHRvIGNyZWF0ZUZhY3RvcnkuJykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3R5cGUnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiB0eXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlZEZhY3Rvcnk7XG4gIH0sXG5cbiAgY2xvbmVFbGVtZW50OiBmdW5jdGlvbiAoZWxlbWVudCwgcHJvcHMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGFyZ3VtZW50c1tpXSwgbmV3RWxlbWVudC50eXBlKTtcbiAgICB9XG4gICAgdmFsaWRhdGVQcm9wVHlwZXMobmV3RWxlbWVudCk7XG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3I7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UUXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0pjYmlBcUwxeHVYRzR2S2lwY2JpQXFJRkpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2lCd2NtOTJhV1JsY3lCaElIZHlZWEJ3WlhJZ1lYSnZkVzVrSUdFZ1pXeGxiV1Z1ZENCbVlXTjBiM0o1WEc0Z0tpQjNhR2xqYUNCMllXeHBaR0YwWlhNZ2RHaGxJSEJ5YjNCeklIQmhjM05sWkNCMGJ5QjBhR1VnWld4bGJXVnVkQzRnVkdocGN5QnBjeUJwYm5SbGJtUmxaQ0IwYnlCaVpWeHVJQ29nZFhObFpDQnZibXg1SUdsdUlFUkZWaUJoYm1RZ1kyOTFiR1FnWW1VZ2NtVndiR0ZqWldRZ1lua2dZU0J6ZEdGMGFXTWdkSGx3WlNCamFHVmphMlZ5SUdadmNpQnNZVzVuZFdGblpYTmNiaUFxSUhSb1lYUWdjM1Z3Y0c5eWRDQnBkQzVjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRVZzWlcxbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSV3hsYldWdWRDY3BPMXh1ZG1GeUlGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk1uS1R0Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhNbktUdGNiblpoY2lCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSW5LVHRjYmx4dWRtRnlJR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVJRDBnY21WeGRXbHlaU2duTGk5allXNUVaV1pwYm1WUWNtOXdaWEowZVNjcE8xeHVkbUZ5SUdkbGRFbDBaWEpoZEc5eVJtNGdQU0J5WlhGMWFYSmxLQ2N1TDJkbGRFbDBaWEpoZEc5eVJtNG5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNW1kVzVqZEdsdmJpQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9LU0I3WEc0Z0lHbG1JQ2hTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBLU0I3WEc0Z0lDQWdkbUZ5SUc1aGJXVWdQU0JTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQnBaaUFvYm1GdFpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY2dRMmhsWTJzZ2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRZ2IyWWdZQ2NnS3lCdVlXMWxJQ3NnSjJBdUp6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUNjbk8xeHVmVnh1WEc0dktpcGNiaUFxSUZkaGNtNGdhV1lnZEdobGNtVW5jeUJ1YnlCclpYa2daWGh3YkdsamFYUnNlU0J6WlhRZ2IyNGdaSGx1WVcxcFl5QmhjbkpoZVhNZ2IyWWdZMmhwYkdSeVpXNGdiM0pjYmlBcUlHOWlhbVZqZENCclpYbHpJR0Z5WlNCdWIzUWdkbUZzYVdRdUlGUm9hWE1nWVd4c2IzZHpJSFZ6SUhSdklHdGxaWEFnZEhKaFkyc2diMllnWTJocGJHUnlaVzRnWW1WMGQyVmxibHh1SUNvZ2RYQmtZWFJsY3k1Y2JpQXFMMXh1ZG1GeUlHOTNibVZ5U0dGelMyVjVWWE5sVjJGeWJtbHVaeUE5SUh0OU8xeHVYRzUyWVhJZ2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WeklEMGdlMzA3WEc1Y2JpOHFLbHh1SUNvZ1YyRnliaUJwWmlCMGFHVWdaV3hsYldWdWRDQmtiMlZ6YmlkMElHaGhkbVVnWVc0Z1pYaHdiR2xqYVhRZ2EyVjVJR0Z6YzJsbmJtVmtJSFJ2SUdsMExseHVJQ29nVkdocGN5QmxiR1Z0Wlc1MElHbHpJR2x1SUdGdUlHRnljbUY1TGlCVWFHVWdZWEp5WVhrZ1kyOTFiR1FnWjNKdmR5QmhibVFnYzJoeWFXNXJJRzl5SUdKbFhHNGdLaUJ5Wlc5eVpHVnlaV1F1SUVGc2JDQmphR2xzWkhKbGJpQjBhR0YwSUdoaGRtVnVKM1FnWVd4eVpXRmtlU0JpWldWdUlIWmhiR2xrWVhSbFpDQmhjbVVnY21WeGRXbHlaV1FnZEc5Y2JpQXFJR2hoZG1VZ1lTQmNJbXRsZVZ3aUlIQnliM0JsY25SNUlHRnpjMmxuYm1Wa0lIUnZJR2wwTGx4dUlDcGNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVWc1pXMWxiblI5SUdWc1pXMWxiblFnUld4bGJXVnVkQ0IwYUdGMElISmxjWFZwY21WeklHRWdhMlY1TGx4dUlDb2dRSEJoY21GdElIc3FmU0J3WVhKbGJuUlVlWEJsSUdWc1pXMWxiblFuY3lCd1lYSmxiblFuY3lCMGVYQmxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJZV3hwWkdGMFpVVjRjR3hwWTJsMFMyVjVLR1ZzWlcxbGJuUXNJSEJoY21WdWRGUjVjR1VwSUh0Y2JpQWdhV1lnS0NGbGJHVnRaVzUwTGw5emRHOXlaU0I4ZkNCbGJHVnRaVzUwTGw5emRHOXlaUzUyWVd4cFpHRjBaV1FnZkh3Z1pXeGxiV1Z1ZEM1clpYa2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCbGJHVnRaVzUwTGw5emRHOXlaUzUyWVd4cFpHRjBaV1FnUFNCMGNuVmxPMXh1WEc0Z0lIWmhjaUJoWkdSbGJtUmhJRDBnWjJWMFFXUmtaVzVrWVVadmNrdGxlVlZ6WlNnbmRXNXBjWFZsUzJWNUp5d2daV3hsYldWdWRDd2djR0Z5Wlc1MFZIbHdaU2s3WEc0Z0lHbG1JQ2hoWkdSbGJtUmhJRDA5UFNCdWRXeHNLU0I3WEc0Z0lDQWdMeThnZDJVZ1lXeHlaV0ZrZVNCemFHOTNaV1FnZEdobElIZGhjbTVwYm1kY2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JpQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RGWVdOb0lHTm9hV3hrSUdsdUlHRnVJR0Z5Y21GNUlHOXlJR2wwWlhKaGRHOXlJSE5vYjNWc1pDQm9ZWFpsSUdFZ2RXNXBjWFZsSUZ3aWEyVjVYQ0lnY0hKdmNDNG5JQ3NnSnlWekpYTWxjeWNzSUdGa1pHVnVaR0V1Y0dGeVpXNTBUM0pQZDI1bGNpQjhmQ0FuSnl3Z1lXUmtaVzVrWVM1amFHbHNaRTkzYm1WeUlIeDhJQ2NuTENCaFpHUmxibVJoTG5WeWJDQjhmQ0FuSnlrZ09pQjFibVJsWm1sdVpXUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UyaGhjbVZrSUhkaGNtNXBibWNnWVc1a0lHMXZibWwwYjNKcGJtY2dZMjlrWlNCbWIzSWdkR2hsSUd0bGVTQjNZWEp1YVc1bmN5NWNiaUFxWEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhOellXZGxWSGx3WlNCQklHdGxlU0IxYzJWa0lHWnZjaUJrWlMxa2RYQnBibWNnZDJGeWJtbHVaM011WEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnWld4bGJXVnVkQ0JEYjIxd2IyNWxiblFnZEdoaGRDQnlaWEYxYVhKbGN5QmhJR3RsZVM1Y2JpQXFJRUJ3WVhKaGJTQjdLbjBnY0dGeVpXNTBWSGx3WlNCbGJHVnRaVzUwSjNNZ2NHRnlaVzUwSjNNZ2RIbHdaUzVjYmlBcUlFQnlaWFIxY201eklIcy9iMkpxWldOMGZTQkJJSE5sZENCdlppQmhaR1JsYm1SaElIUnZJSFZ6WlNCcGJpQjBhR1VnZDJGeWJtbHVaeUJ0WlhOellXZGxMQ0J2Y2lCdWRXeHNYRzRnS2lCcFppQjBhR1VnZDJGeWJtbHVaeUJvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJSE5vYjNkdUlHSmxabTl5WlNBb1lXNWtJSE5vYjNWc1pHNG5kQ0JpWlNCemFHOTNiaUJoWjJGcGJpa3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRUZrWkdWdVpHRkdiM0pMWlhsVmMyVW9iV1Z6YzJGblpWUjVjR1VzSUdWc1pXMWxiblFzSUhCaGNtVnVkRlI1Y0dVcElIdGNiaUFnZG1GeUlHRmtaR1Z1WkhWdElEMGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLQ2s3WEc0Z0lHbG1JQ2doWVdSa1pXNWtkVzBwSUh0Y2JpQWdJQ0IyWVhJZ2NHRnlaVzUwVG1GdFpTQTlJSFI1Y0dWdlppQndZWEpsYm5SVWVYQmxJRDA5UFNBbmMzUnlhVzVuSnlBL0lIQmhjbVZ1ZEZSNWNHVWdPaUJ3WVhKbGJuUlVlWEJsTG1ScGMzQnNZWGxPWVcxbElIeDhJSEJoY21WdWRGUjVjR1V1Ym1GdFpUdGNiaUFnSUNCcFppQW9jR0Z5Wlc1MFRtRnRaU2tnZTF4dUlDQWdJQ0FnWVdSa1pXNWtkVzBnUFNBbklFTm9aV05ySUhSb1pTQjBiM0F0YkdWMlpXd2djbVZ1WkdWeUlHTmhiR3dnZFhOcGJtY2dQQ2NnS3lCd1lYSmxiblJPWVcxbElDc2dKejR1Snp0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCMllYSWdiV1Z0YjJsNlpYSWdQU0J2ZDI1bGNraGhjMHRsZVZWelpWZGhjbTVwYm1kYmJXVnpjMkZuWlZSNWNHVmRJSHg4SUNodmQyNWxja2hoYzB0bGVWVnpaVmRoY201cGJtZGJiV1Z6YzJGblpWUjVjR1ZkSUQwZ2UzMHBPMXh1SUNCcFppQW9iV1Z0YjJsNlpYSmJZV1JrWlc1a2RXMWRLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNiaUFnYldWdGIybDZaWEpiWVdSa1pXNWtkVzFkSUQwZ2RISjFaVHRjYmx4dUlDQjJZWElnWVdSa1pXNWtZU0E5SUh0Y2JpQWdJQ0J3WVhKbGJuUlBjazkzYm1WeU9pQmhaR1JsYm1SMWJTeGNiaUFnSUNCMWNtdzZJQ2NnVTJWbElHaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRkMkZ5Ym1sdVp5MXJaWGx6SUdadmNpQnRiM0psSUdsdVptOXliV0YwYVc5dUxpY3NYRzRnSUNBZ1kyaHBiR1JQZDI1bGNqb2diblZzYkZ4dUlDQjlPMXh1WEc0Z0lDOHZJRlZ6ZFdGc2JIa2dkR2hsSUdOMWNuSmxiblFnYjNkdVpYSWdhWE1nZEdobElHOW1abVZ1WkdWeUxDQmlkWFFnYVdZZ2FYUWdZV05qWlhCMGN5QmphR2xzWkhKbGJpQmhjeUJoWEc0Z0lDOHZJSEJ5YjNCbGNuUjVMQ0JwZENCdFlYa2dZbVVnZEdobElHTnlaV0YwYjNJZ2IyWWdkR2hsSUdOb2FXeGtJSFJvWVhRbmN5QnlaWE53YjI1emFXSnNaU0JtYjNKY2JpQWdMeThnWVhOemFXZHVhVzVuSUdsMElHRWdhMlY1TGx4dUlDQnBaaUFvWld4bGJXVnVkQ0FtSmlCbGJHVnRaVzUwTGw5dmQyNWxjaUFtSmlCbGJHVnRaVzUwTGw5dmQyNWxjaUFoUFQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENrZ2UxeHVJQ0FnSUM4dklFZHBkbVVnZEdobElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUc5eWFXZHBibUZzYkhrZ1kzSmxZWFJsWkNCMGFHbHpJR05vYVd4a0xseHVJQ0FnSUdGa1pHVnVaR0V1WTJocGJHUlBkMjVsY2lBOUlDY2dTWFFnZDJGeklIQmhjM05sWkNCaElHTm9hV3hrSUdaeWIyMGdKeUFySUdWc1pXMWxiblF1WDI5M2JtVnlMbWRsZEU1aGJXVW9LU0FySUNjdUp6dGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQmhaR1JsYm1SaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWMzVnlaU0IwYUdGMElHVjJaWEo1SUdWc1pXMWxiblFnWldsMGFHVnlJR2x6SUhCaGMzTmxaQ0JwYmlCaElITjBZWFJwWXlCc2IyTmhkR2x2Yml3Z2FXNGdZVzVjYmlBcUlHRnljbUY1SUhkcGRHZ2dZVzRnWlhod2JHbGphWFFnYTJWNWN5QndjbTl3WlhKMGVTQmtaV1pwYm1Wa0xDQnZjaUJwYmlCaGJpQnZZbXBsWTNRZ2JHbDBaWEpoYkZ4dUlDb2dkMmwwYUNCMllXeHBaQ0JyWlhrZ2NISnZjR1Z5ZEhrdVhHNGdLbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFRtOWtaWDBnYm05a1pTQlRkR0YwYVdOaGJHeDVJSEJoYzNObFpDQmphR2xzWkNCdlppQmhibmtnZEhsd1pTNWNiaUFxSUVCd1lYSmhiU0I3S24wZ2NHRnlaVzUwVkhsd1pTQnViMlJsSjNNZ2NHRnlaVzUwSjNNZ2RIbHdaUzVjYmlBcUwxeHVablZ1WTNScGIyNGdkbUZzYVdSaGRHVkRhR2xzWkV0bGVYTW9ibTlrWlN3Z2NHRnlaVzUwVkhsd1pTa2dlMXh1SUNCcFppQW9kSGx3Wlc5bUlHNXZaR1VnSVQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzRnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0c1dlpHVXBLU0I3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J1YjJSbExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyaHBiR1FnUFNCdWIyUmxXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaGphR2xzWkNrcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkZlSEJzYVdOcGRFdGxlU2hqYUdsc1pDd2djR0Z5Wlc1MFZIbHdaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaHViMlJsS1NrZ2UxeHVJQ0FnSUM4dklGUm9hWE1nWld4bGJXVnVkQ0IzWVhNZ2NHRnpjMlZrSUdsdUlHRWdkbUZzYVdRZ2JHOWpZWFJwYjI0dVhHNGdJQ0FnYVdZZ0tHNXZaR1V1WDNOMGIzSmxLU0I3WEc0Z0lDQWdJQ0J1YjJSbExsOXpkRzl5WlM1MllXeHBaR0YwWldRZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUdsbUlDaHViMlJsS1NCN1hHNGdJQ0FnZG1GeUlHbDBaWEpoZEc5eVJtNGdQU0JuWlhSSmRHVnlZWFJ2Y2tadUtHNXZaR1VwTzF4dUlDQWdJQzh2SUVWdWRISjVJR2wwWlhKaGRHOXljeUJ3Y205MmFXUmxJR2x0Y0d4cFkybDBJR3RsZVhNdVhHNGdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBZ0lDQWdJR2xtSUNocGRHVnlZWFJ2Y2tadUlDRTlQU0J1YjJSbExtVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdsMFpYSmhkRzl5SUQwZ2FYUmxjbUYwYjNKR2JpNWpZV3hzS0c1dlpHVXBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2MzUmxjRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ0VvYzNSbGNDQTlJR2wwWlhKaGRHOXlMbTVsZUhRb0tTa3VaRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoU1pXRmpkRVZzWlcxbGJuUXVhWE5XWVd4cFpFVnNaVzFsYm5Rb2MzUmxjQzUyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhiR2xrWVhSbFJYaHdiR2xqYVhSTFpYa29jM1JsY0M1MllXeDFaU3dnY0dGeVpXNTBWSGx3WlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUVhOelpYSjBJSFJvWVhRZ2RHaGxJSEJ5YjNCeklHRnlaU0IyWVd4cFpGeHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCamIyMXdiMjVsYm5ST1lXMWxJRTVoYldVZ2IyWWdkR2hsSUdOdmJYQnZibVZ1ZENCbWIzSWdaWEp5YjNJZ2JXVnpjMkZuWlhNdVhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjSEp2Y0ZSNWNHVnpJRTFoY0NCdlppQndjbTl3SUc1aGJXVWdkRzhnWVNCU1pXRmpkRkJ5YjNCVWVYQmxYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0hKdmNITmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JzYjJOaGRHbHZiaUJsTG1jdUlGd2ljSEp2Y0Z3aUxDQmNJbU52Ym5SbGVIUmNJaXdnWENKamFHbHNaQ0JqYjI1MFpYaDBYQ0pjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOb1pXTnJVSEp2Y0ZSNWNHVnpLR052YlhCdmJtVnVkRTVoYldVc0lIQnliM0JVZVhCbGN5d2djSEp2Y0hNc0lHeHZZMkYwYVc5dUtTQjdYRzRnSUdadmNpQW9kbUZ5SUhCeWIzQk9ZVzFsSUdsdUlIQnliM0JVZVhCbGN5a2dlMXh1SUNBZ0lHbG1JQ2h3Y205d1ZIbHdaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1pYSnliM0k3WEc0Z0lDQWdJQ0F2THlCUWNtOXdJSFI1Y0dVZ2RtRnNhV1JoZEdsdmJpQnRZWGtnZEdoeWIzY3VJRWx1SUdOaGMyVWdkR2hsZVNCa2J5d2dkMlVnWkc5dUozUWdkMkZ1ZENCMGIxeHVJQ0FnSUNBZ0x5OGdabUZwYkNCMGFHVWdjbVZ1WkdWeUlIQm9ZWE5sSUhkb1pYSmxJR2wwSUdScFpHNG5kQ0JtWVdsc0lHSmxabTl5WlM0Z1UyOGdkMlVnYkc5bklHbDBMbHh1SUNBZ0lDQWdMeThnUVdaMFpYSWdkR2hsYzJVZ2FHRjJaU0JpWldWdUlHTnNaV0Z1WldRZ2RYQXNJSGRsSjJ4c0lHeGxkQ0IwYUdWdElIUm9jbTkzTGx4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdMeThnVkdocGN5QnBjeUJwYm5SbGJuUnBiMjVoYkd4NUlHRnVJR2x1ZG1GeWFXRnVkQ0IwYUdGMElHZGxkSE1nWTJGMVoyaDBMaUJKZENkeklIUm9aU0J6WVcxbFhHNGdJQ0FnSUNBZ0lDOHZJR0psYUdGMmFXOXlJR0Z6SUhkcGRHaHZkWFFnZEdocGN5QnpkR0YwWlcxbGJuUWdaWGhqWlhCMElIZHBkR2dnWVNCaVpYUjBaWElnYldWemMyRm5aUzVjYmlBZ0lDQWdJQ0FnSVNoMGVYQmxiMllnY0hKdmNGUjVjR1Z6VzNCeWIzQk9ZVzFsWFNBOVBUMGdKMloxYm1OMGFXOXVKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE02SUNWeklIUjVjR1VnWUNWellDQnBjeUJwYm5aaGJHbGtPeUJwZENCdGRYTjBJR0psSUdFZ1puVnVZM1JwYjI0c0lIVnpkV0ZzYkhrZ1puSnZiU0FuSUNzZ0oxSmxZV04wTGxCeWIzQlVlWEJsY3k0bkxDQmpiMjF3YjI1bGJuUk9ZVzFsSUh4OElDZFNaV0ZqZENCamJHRnpjeWNzSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6VzJ4dlkyRjBhVzl1WFN3Z2NISnZjRTVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnWlhKeWIzSWdQU0J3Y205d1ZIbHdaWE5iY0hKdmNFNWhiV1ZkS0hCeWIzQnpMQ0J3Y205d1RtRnRaU3dnWTI5dGNHOXVaVzUwVG1GdFpTd2diRzlqWVhScGIyNHBPMXh1SUNBZ0lDQWdmU0JqWVhSamFDQW9aWGdwSUh0Y2JpQWdJQ0FnSUNBZ1pYSnliM0lnUFNCbGVEdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LQ0ZsY25KdmNpQjhmQ0JsY25KdmNpQnBibk4wWVc1alpXOW1JRVZ5Y205eUxDQW5KWE02SUhSNWNHVWdjM0JsWTJsbWFXTmhkR2x2YmlCdlppQWxjeUJnSlhOZ0lHbHpJR2x1ZG1Gc2FXUTdJSFJvWlNCMGVYQmxJR05vWldOclpYSWdKeUFySUNkbWRXNWpkR2x2YmlCdGRYTjBJSEpsZEhWeWJpQmdiblZzYkdBZ2IzSWdZVzRnWUVWeWNtOXlZQ0JpZFhRZ2NtVjBkWEp1WldRZ1lTQWxjeTRnSnlBcklDZFpiM1VnYldGNUlHaGhkbVVnWm05eVoyOTBkR1Z1SUhSdklIQmhjM01nWVc0Z1lYSm5kVzFsYm5RZ2RHOGdkR2hsSUhSNWNHVWdZMmhsWTJ0bGNpQW5JQ3NnSjJOeVpXRjBiM0lnS0dGeWNtRjVUMllzSUdsdWMzUmhibU5sVDJZc0lHOWlhbVZqZEU5bUxDQnZibVZQWml3Z2IyNWxUMlpVZVhCbExDQmhibVFnSnlBcklDZHphR0Z3WlNCaGJHd2djbVZ4ZFdseVpTQmhiaUJoY21kMWJXVnVkQ2t1Snl3Z1kyOXRjRzl1Wlc1MFRtRnRaU0I4ZkNBblVtVmhZM1FnWTJ4aGMzTW5MQ0JTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjMXRzYjJOaGRHbHZibDBzSUhCeWIzQk9ZVzFsTENCMGVYQmxiMllnWlhKeWIzSXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnYVdZZ0tHVnljbTl5SUdsdWMzUmhibU5sYjJZZ1JYSnliM0lnSmlZZ0lTaGxjbkp2Y2k1dFpYTnpZV2RsSUdsdUlHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGN5a3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1QyNXNlU0J0YjI1cGRHOXlJSFJvYVhNZ1ptRnBiSFZ5WlNCdmJtTmxJR0psWTJGMWMyVWdkR2hsY21VZ2RHVnVaSE1nZEc4Z1ltVWdZU0JzYjNRZ2IyWWdkR2hsWEc0Z0lDQWdJQ0FnSUM4dklITmhiV1VnWlhKeWIzSXVYRzRnSUNBZ0lDQWdJR3h2WjJkbFpGUjVjR1ZHWVdsc2RYSmxjMXRsY25KdmNpNXRaWE56WVdkbFhTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUdGa1pHVnVaSFZ0SUQwZ1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtDazdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuUm1GcGJHVmtJSEJ5YjNCVWVYQmxPaUFsY3lWekp5d2daWEp5YjNJdWJXVnpjMkZuWlN3Z1lXUmtaVzVrZFcwcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRWRwZG1WdUlHRnVJR1ZzWlcxbGJuUXNJSFpoYkdsa1lYUmxJSFJvWVhRZ2FYUnpJSEJ5YjNCeklHWnZiR3h2ZHlCMGFHVWdjSEp2Y0ZSNWNHVnpJR1JsWm1sdWFYUnBiMjRzWEc0Z0tpQndjbTkyYVdSbFpDQmllU0IwYUdVZ2RIbHdaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ1pXeGxiV1Z1ZEZ4dUlDb3ZYRzVtZFc1amRHbHZiaUIyWVd4cFpHRjBaVkJ5YjNCVWVYQmxjeWhsYkdWdFpXNTBLU0I3WEc0Z0lIWmhjaUJqYjIxd2IyNWxiblJEYkdGemN5QTlJR1ZzWlcxbGJuUXVkSGx3WlR0Y2JpQWdhV1lnS0hSNWNHVnZaaUJqYjIxd2IyNWxiblJEYkdGemN5QWhQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVJQ0IyWVhJZ2JtRnRaU0E5SUdOdmJYQnZibVZ1ZEVOc1lYTnpMbVJwYzNCc1lYbE9ZVzFsSUh4OElHTnZiWEJ2Ym1WdWRFTnNZWE56TG01aGJXVTdYRzRnSUdsbUlDaGpiMjF3YjI1bGJuUkRiR0Z6Y3k1d2NtOXdWSGx3WlhNcElIdGNiaUFnSUNCamFHVmphMUJ5YjNCVWVYQmxjeWh1WVcxbExDQmpiMjF3YjI1bGJuUkRiR0Z6Y3k1d2NtOXdWSGx3WlhNc0lHVnNaVzFsYm5RdWNISnZjSE1zSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJuTXVjSEp2Y0NrN1hHNGdJSDFjYmlBZ2FXWWdLSFI1Y0dWdlppQmpiMjF3YjI1bGJuUkRiR0Z6Y3k1blpYUkVaV1poZFd4MFVISnZjSE1nUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhqYjIxd2IyNWxiblJEYkdGemN5NW5aWFJFWldaaGRXeDBVSEp2Y0hNdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUXNJQ2RuWlhSRVpXWmhkV3gwVUhKdmNITWdhWE1nYjI1c2VTQjFjMlZrSUc5dUlHTnNZWE56YVdNZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNZ0p5QXJJQ2RrWldacGJtbDBhVzl1Y3k0Z1ZYTmxJR0VnYzNSaGRHbGpJSEJ5YjNCbGNuUjVJRzVoYldWa0lHQmtaV1poZFd4MFVISnZjSE5nSUdsdWMzUmxZV1F1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JuMWNibHh1ZG1GeUlGSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaUE5SUh0Y2JseHVJQ0JqY21WaGRHVkZiR1Z0Wlc1ME9pQm1kVzVqZEdsdmJpQW9kSGx3WlN3Z2NISnZjSE1zSUdOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnZG1GeUlIWmhiR2xrVkhsd1pTQTlJSFI1Y0dWdlppQjBlWEJsSUQwOVBTQW5jM1J5YVc1bkp5QjhmQ0IwZVhCbGIyWWdkSGx3WlNBOVBUMGdKMloxYm1OMGFXOXVKenRjYmlBZ0lDQXZMeUJYWlNCM1lYSnVJR2x1SUhSb2FYTWdZMkZ6WlNCaWRYUWdaRzl1SjNRZ2RHaHliM2N1SUZkbElHVjRjR1ZqZENCMGFHVWdaV3hsYldWdWRDQmpjbVZoZEdsdmJpQjBiMXh1SUNBZ0lDOHZJSE4xWTJObFpXUWdZVzVrSUhSb1pYSmxJSGRwYkd3Z2JHbHJaV3g1SUdKbElHVnljbTl5Y3lCcGJpQnlaVzVrWlhJdVhHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2RtRnNhV1JVZVhCbExDQW5VbVZoWTNRdVkzSmxZWFJsUld4bGJXVnVkRG9nZEhsd1pTQnphRzkxYkdRZ2JtOTBJR0psSUc1MWJHd3NJSFZ1WkdWbWFXNWxaQ3dnWW05dmJHVmhiaXdnYjNJZ0p5QXJJQ2R1ZFcxaVpYSXVJRWwwSUhOb2IzVnNaQ0JpWlNCaElITjBjbWx1WnlBb1ptOXlJRVJQVFNCbGJHVnRaVzUwY3lrZ2IzSWdZU0JTWldGamRFTnNZWE56SUNjZ0t5QW5LR1p2Y2lCamIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MGN5a3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb0tTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ1pXeGxiV1Z1ZENBOUlGSmxZV04wUld4bGJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MExtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEc1Y2JpQWdJQ0F2THlCVWFHVWdjbVZ6ZFd4MElHTmhiaUJpWlNCdWRXeHNhWE5vSUdsbUlHRWdiVzlqYXlCdmNpQmhJR04xYzNSdmJTQm1kVzVqZEdsdmJpQnBjeUIxYzJWa0xseHVJQ0FnSUM4dklGUlBSRTg2SUVSeWIzQWdkR2hwY3lCM2FHVnVJSFJvWlhObElHRnlaU0J1YnlCc2IyNW5aWElnWVd4c2IzZGxaQ0JoY3lCMGFHVWdkSGx3WlNCaGNtZDFiV1Z1ZEM1Y2JpQWdJQ0JwWmlBb1pXeGxiV1Z1ZENBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWld4bGJXVnVkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJUYTJsd0lHdGxlU0IzWVhKdWFXNW5JR2xtSUhSb1pTQjBlWEJsSUdsemJpZDBJSFpoYkdsa0lITnBibU5sSUc5MWNpQnJaWGtnZG1Gc2FXUmhkR2x2YmlCc2IyZHBZMXh1SUNBZ0lDOHZJR1J2WlhOdUozUWdaWGh3WldOMElHRWdibTl1TFhOMGNtbHVaeTltZFc1amRHbHZiaUIwZVhCbElHRnVaQ0JqWVc0Z2RHaHliM2NnWTI5dVpuVnphVzVuSUdWeWNtOXljeTVjYmlBZ0lDQXZMeUJYWlNCa2IyNG5kQ0IzWVc1MElHVjRZMlZ3ZEdsdmJpQmlaV2hoZG1sdmNpQjBieUJrYVdabVpYSWdZbVYwZDJWbGJpQmtaWFlnWVc1a0lIQnliMlF1WEc0Z0lDQWdMeThnS0ZKbGJtUmxjbWx1WnlCM2FXeHNJSFJvY205M0lIZHBkR2dnWVNCb1pXeHdablZzSUcxbGMzTmhaMlVnWVc1a0lHRnpJSE52YjI0Z1lYTWdkR2hsSUhSNWNHVWdhWE5jYmlBZ0lDQXZMeUJtYVhobFpDd2dkR2hsSUd0bGVTQjNZWEp1YVc1bmN5QjNhV3hzSUdGd2NHVmhjaTRwWEc0Z0lDQWdhV1lnS0haaGJHbGtWSGx3WlNrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREk3SUdrZ1BDQmhjbWQxYldWdWRITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdWRGFHbHNaRXRsZVhNb1lYSm5kVzFsYm5SelcybGRMQ0IwZVhCbEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCMllXeHBaR0YwWlZCeWIzQlVlWEJsY3lobGJHVnRaVzUwS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJsYkdWdFpXNTBPMXh1SUNCOUxGeHVYRzRnSUdOeVpXRjBaVVpoWTNSdmNuazZJR1oxYm1OMGFXOXVJQ2gwZVhCbEtTQjdYRzRnSUNBZ2RtRnlJSFpoYkdsa1lYUmxaRVpoWTNSdmNua2dQU0JTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJdVkzSmxZWFJsUld4bGJXVnVkQzVpYVc1a0tHNTFiR3dzSUhSNWNHVXBPMXh1SUNBZ0lDOHZJRXhsWjJGamVTQm9iMjlySUZSUFJFODZJRmRoY200Z2FXWWdkR2hwY3lCcGN5QmhZMk5sYzNObFpGeHVJQ0FnSUhaaGJHbGtZWFJsWkVaaFkzUnZjbmt1ZEhsd1pTQTlJSFI1Y0dVN1hHNWNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHTmhia1JsWm1sdVpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMllXeHBaR0YwWldSR1lXTjBiM0o1TENBbmRIbHdaU2NzSUh0Y2JpQWdJQ0FnSUNBZ0lDQmxiblZ0WlhKaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdJQ0JuWlhRNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5SbUZqZEc5eWVTNTBlWEJsSUdseklHUmxjSEpsWTJGMFpXUXVJRUZqWTJWemN5QjBhR1VnWTJ4aGMzTWdaR2x5WldOMGJIa2dKeUFySUNkaVpXWnZjbVVnY0dGemMybHVaeUJwZENCMGJ5QmpjbVZoZEdWR1lXTjBiM0o1TGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSFJvYVhNc0lDZDBlWEJsSnl3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaVG9nZEhsd1pWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSGx3WlR0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjJZV3hwWkdGMFpXUkdZV04wYjNKNU8xeHVJQ0I5TEZ4dVhHNGdJR05zYjI1bFJXeGxiV1Z1ZERvZ1puVnVZM1JwYjI0Z0tHVnNaVzFsYm5Rc0lIQnliM0J6TENCamFHbHNaSEpsYmlrZ2UxeHVJQ0FnSUhaaGNpQnVaWGRGYkdWdFpXNTBJRDBnVW1WaFkzUkZiR1Z0Wlc1MExtTnNiMjVsUld4bGJXVnVkQzVoY0hCc2VTaDBhR2x6TENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXlPeUJwSUR3Z1lYSm5kVzFsYm5SekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IyWVd4cFpHRjBaVU5vYVd4a1MyVjVjeWhoY21kMWJXVnVkSE5iYVYwc0lHNWxkMFZzWlcxbGJuUXVkSGx3WlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoYkdsa1lYUmxVSEp2Y0ZSNWNHVnpLRzVsZDBWc1pXMWxiblFwTzF4dUlDQWdJSEpsZEhWeWJpQnVaWGRGYkdWdFpXNTBPMXh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEVtcHR5Q29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnkgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeScpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcblxudmFyIHBsYWNlaG9sZGVyRWxlbWVudDtcblxudmFyIFJlYWN0RW1wdHlDb21wb25lbnRJbmplY3Rpb24gPSB7XG4gIGluamVjdEVtcHR5Q29tcG9uZW50OiBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgcGxhY2Vob2xkZXJFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQoY29tcG9uZW50KTtcbiAgfVxufTtcblxudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcbiAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBudWxsO1xuICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBpbnN0YW50aWF0ZShwbGFjZWhvbGRlckVsZW1lbnQpO1xufTtcbmFzc2lnbihSZWFjdEVtcHR5Q29tcG9uZW50LnByb3RvdHlwZSwge1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7fSxcbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChyb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5LnJlZ2lzdGVyTnVsbENvbXBvbmVudElEKHJvb3RJRCk7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IHJvb3RJRDtcbiAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LCByb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgfSxcbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKCkge30sXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChyb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpO1xuICAgIFJlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeS5kZXJlZ2lzdGVyTnVsbENvbXBvbmVudElEKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxufSk7XG5cblJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIFRoaXMgcmVnaXN0cnkga2VlcHMgdHJhY2sgb2YgdGhlIFJlYWN0IElEcyBvZiB0aGUgY29tcG9uZW50cyB0aGF0IHJlbmRlcmVkIHRvXG4vLyBgbnVsbGAgKGluIHJlYWxpdHkgYSBwbGFjZWhvbGRlciBzdWNoIGFzIGBub3NjcmlwdGApXG52YXIgbnVsbENvbXBvbmVudElEc1JlZ2lzdHJ5ID0ge307XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIENvbXBvbmVudCdzIGBfcm9vdE5vZGVJRGAuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgaXMgcmVuZGVyZWQgdG8gbnVsbC5cbiAqL1xuZnVuY3Rpb24gaXNOdWxsQ29tcG9uZW50SUQoaWQpIHtcbiAgcmV0dXJuICEhbnVsbENvbXBvbmVudElEc1JlZ2lzdHJ5W2lkXTtcbn1cblxuLyoqXG4gKiBNYXJrIHRoZSBjb21wb25lbnQgYXMgaGF2aW5nIHJlbmRlcmVkIHRvIG51bGwuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQ29tcG9uZW50J3MgYF9yb290Tm9kZUlEYC5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJOdWxsQ29tcG9uZW50SUQoaWQpIHtcbiAgbnVsbENvbXBvbmVudElEc1JlZ2lzdHJ5W2lkXSA9IHRydWU7XG59XG5cbi8qKlxuICogVW5tYXJrIHRoZSBjb21wb25lbnQgYXMgaGF2aW5nIHJlbmRlcmVkIHRvIG51bGw6IGl0IHJlbmRlcnMgdG8gc29tZXRoaW5nIG5vdy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBDb21wb25lbnQncyBgX3Jvb3ROb2RlSURgLlxuICovXG5mdW5jdGlvbiBkZXJlZ2lzdGVyTnVsbENvbXBvbmVudElEKGlkKSB7XG4gIGRlbGV0ZSBudWxsQ29tcG9uZW50SURzUmVnaXN0cnlbaWRdO1xufVxuXG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5ID0ge1xuICBpc051bGxDb21wb25lbnRJRDogaXNOdWxsQ29tcG9uZW50SUQsXG4gIHJlZ2lzdGVyTnVsbENvbXBvbmVudElEOiByZWdpc3Rlck51bGxDb21wb25lbnRJRCxcbiAgZGVyZWdpc3Rlck51bGxDb21wb25lbnRJRDogZGVyZWdpc3Rlck51bGxDb21wb25lbnRJRFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnk7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEVycm9yVXRpbHNcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2F1Z2h0RXJyb3IgPSBudWxsO1xuXG4vKipcbiAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGVycm9ycyB0aGF0IGhhcHBlbnMgd2l0aGluIGl0LlxuICpcbiAqIEBwYXJhbSB7P1N0cmluZ30gbmFtZSBvZiB0aGUgZ3VhcmQgdG8gdXNlIGZvciBsb2dnaW5nIG9yIGRlYnVnZ2luZ1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlXG4gKiBAcGFyYW0geyp9IGEgRmlyc3QgYXJndW1lbnRcbiAqIEBwYXJhbSB7Kn0gYiBTZWNvbmQgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gaW52b2tlR3VhcmRlZENhbGxiYWNrKG5hbWUsIGZ1bmMsIGEsIGIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnVuYyhhLCBiKTtcbiAgfSBjYXRjaCAoeCkge1xuICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuICAgICAgY2F1Z2h0RXJyb3IgPSB4O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbnZhciBSZWFjdEVycm9yVXRpbHMgPSB7XG4gIGludm9rZUd1YXJkZWRDYWxsYmFjazogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIGJ5IFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhlIGV2ZW50XG4gICAqIGhhbmRsZXIgYXJlIHN1cmUgdG8gYmUgcmV0aHJvd24gYnkgcmV0aHJvd0NhdWdodEVycm9yLlxuICAgKi9cbiAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssXG5cbiAgLyoqXG4gICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3VhcmRlZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3aGljaFxuICAgKiB3ZSB3aWxsIHJldGhyb3cgdG8gYmUgaGFuZGxlZCBieSB0aGUgdG9wIGxldmVsIGVycm9yIGhhbmRsZXIuXG4gICAqL1xuICByZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2F1Z2h0RXJyb3IpIHtcbiAgICAgIHZhciBlcnJvciA9IGNhdWdodEVycm9yO1xuICAgICAgY2F1Z2h0RXJyb3IgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvKipcbiAgICogVG8gaGVscCBkZXZlbG9wbWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3JhdGlvbiBieSBzaW11bGF0aW5nIGFcbiAgICogcmVhbCBicm93c2VyIGV2ZW50LlxuICAgKi9cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBmYWtlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3JlYWN0Jyk7XG4gICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jLCBhLCBiKSB7XG4gICAgICB2YXIgYm91bmRGdW5jID0gZnVuYy5iaW5kKG51bGwsIGEsIGIpO1xuICAgICAgdmFyIGV2dFR5cGUgPSAncmVhY3QtJyArIG5hbWU7XG4gICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpO1xuICAgICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgICAgZXZ0LmluaXRFdmVudChldnRUeXBlLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgICAgZmFrZU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVZ5Y205eVZYUnBiSE11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFVnljbTl5VlhScGJITmNiaUFxSUVCMGVYQmxZMmhsWTJ0elhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdZMkYxWjJoMFJYSnliM0lnUFNCdWRXeHNPMXh1WEc0dktpcGNiaUFxSUVOaGJHd2dZU0JtZFc1amRHbHZiaUIzYUdsc1pTQm5kV0Z5WkdsdVp5QmhaMkZwYm5OMElHVnljbTl5Y3lCMGFHRjBJR2hoY0hCbGJuTWdkMmwwYUdsdUlHbDBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdQMU4wY21sdVozMGdibUZ0WlNCdlppQjBhR1VnWjNWaGNtUWdkRzhnZFhObElHWnZjaUJzYjJkbmFXNW5JRzl5SUdSbFluVm5aMmx1WjF4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdablZ1WXlCVWFHVWdablZ1WTNScGIyNGdkRzhnYVc1MmIydGxYRzRnS2lCQWNHRnlZVzBnZXlwOUlHRWdSbWx5YzNRZ1lYSm5kVzFsYm5SY2JpQXFJRUJ3WVhKaGJTQjdLbjBnWWlCVFpXTnZibVFnWVhKbmRXMWxiblJjYmlBcUwxeHVablZ1WTNScGIyNGdhVzUyYjJ0bFIzVmhjbVJsWkVOaGJHeGlZV05yS0c1aGJXVXNJR1oxYm1Nc0lHRXNJR0lwSUh0Y2JpQWdkSEo1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdablZ1WXloaExDQmlLVHRjYmlBZ2ZTQmpZWFJqYUNBb2VDa2dlMXh1SUNBZ0lHbG1JQ2hqWVhWbmFIUkZjbkp2Y2lBOVBUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ1kyRjFaMmgwUlhKeWIzSWdQU0I0TzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc1OVhHNWNiblpoY2lCU1pXRmpkRVZ5Y205eVZYUnBiSE1nUFNCN1hHNGdJR2x1ZG05clpVZDFZWEprWldSRFlXeHNZbUZqYXpvZ2FXNTJiMnRsUjNWaGNtUmxaRU5oYkd4aVlXTnJMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWa0lHSjVJRkpsWVdOMFZHVnpkRlYwYVd4ekxsTnBiWFZzWVhSbElITnZJSFJvWVhRZ1lXNTVJR1Z5Y205eWN5QjBhSEp2ZDI0Z1lua2dkR2hsSUdWMlpXNTBYRzRnSUNBcUlHaGhibVJzWlhJZ1lYSmxJSE4xY21VZ2RHOGdZbVVnY21WMGFISnZkMjRnWW5rZ2NtVjBhSEp2ZDBOaGRXZG9kRVZ5Y205eUxseHVJQ0FnS2k5Y2JpQWdhVzUyYjJ0bFIzVmhjbVJsWkVOaGJHeGlZV05yVjJsMGFFTmhkR05vT2lCcGJuWnZhMlZIZFdGeVpHVmtRMkZzYkdKaFkyc3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUjFjbWx1WnlCbGVHVmpkWFJwYjI0Z2IyWWdaM1ZoY21SbFpDQm1kVzVqZEdsdmJuTWdkMlVnZDJsc2JDQmpZWEIwZFhKbElIUm9aU0JtYVhKemRDQmxjbkp2Y2lCM2FHbGphRnh1SUNBZ0tpQjNaU0IzYVd4c0lISmxkR2h5YjNjZ2RHOGdZbVVnYUdGdVpHeGxaQ0JpZVNCMGFHVWdkRzl3SUd4bGRtVnNJR1Z5Y205eUlHaGhibVJzWlhJdVhHNGdJQ0FxTDF4dUlDQnlaWFJvY205M1EyRjFaMmgwUlhKeWIzSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0JwWmlBb1kyRjFaMmgwUlhKeWIzSXBJSHRjYmlBZ0lDQWdJSFpoY2lCbGNuSnZjaUE5SUdOaGRXZG9kRVZ5Y205eU8xeHVJQ0FnSUNBZ1kyRjFaMmgwUlhKeWIzSWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2RHaHliM2NnWlhKeWIzSTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBdktpcGNiaUFnSUNvZ1ZHOGdhR1ZzY0NCa1pYWmxiRzl3YldWdWRDQjNaU0JqWVc0Z1oyVjBJR0psZEhSbGNpQmtaWFowYjI5c2N5QnBiblJsWjNKaGRHbHZiaUJpZVNCemFXMTFiR0YwYVc1bklHRmNiaUFnSUNvZ2NtVmhiQ0JpY205M2MyVnlJR1YyWlc1MExseHVJQ0FnS2k5Y2JpQWdhV1lnS0hSNWNHVnZaaUIzYVc1a2IzY2dJVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSFI1Y0dWdlppQjNhVzVrYjNjdVpHbHpjR0YwWTJoRmRtVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUIwZVhCbGIyWWdaRzlqZFcxbGJuUWdJVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSFI1Y0dWdlppQmtiMk4xYldWdWRDNWpjbVZoZEdWRmRtVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lIWmhjaUJtWVd0bFRtOWtaU0E5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9KM0psWVdOMEp5azdYRzRnSUNBZ1VtVmhZM1JGY25KdmNsVjBhV3h6TG1sdWRtOXJaVWQxWVhKa1pXUkRZV3hzWW1GamF5QTlJR1oxYm1OMGFXOXVJQ2h1WVcxbExDQm1kVzVqTENCaExDQmlLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1ltOTFibVJHZFc1aklEMGdablZ1WXk1aWFXNWtLRzUxYkd3c0lHRXNJR0lwTzF4dUlDQWdJQ0FnZG1GeUlHVjJkRlI1Y0dVZ1BTQW5jbVZoWTNRdEp5QXJJRzVoYldVN1hHNGdJQ0FnSUNCbVlXdGxUbTlrWlM1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0dWMmRGUjVjR1VzSUdKdmRXNWtSblZ1WXl3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnZG1GeUlHVjJkQ0E5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVYyWlc1MEtDZEZkbVZ1ZENjcE8xeHVJQ0FnSUNBZ1pYWjBMbWx1YVhSRmRtVnVkQ2hsZG5SVWVYQmxMQ0JtWVd4elpTd2dabUZzYzJVcE8xeHVJQ0FnSUNBZ1ptRnJaVTV2WkdVdVpHbHpjR0YwWTJoRmRtVnVkQ2hsZG5RcE8xeHVJQ0FnSUNBZ1ptRnJaVTV2WkdVdWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpaGxkblJVZVhCbExDQmliM1Z1WkVaMWJtTXNJR1poYkhObEtUdGNiaUFnSUNCOU8xeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRmNuSnZjbFYwYVd4ek95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTtcblxuZnVuY3Rpb24gcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKSB7XG4gIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnRzKTtcbiAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xufVxuXG52YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHtcblxuICAvKipcbiAgICogU3RyZWFtcyBhIGZpcmVkIHRvcC1sZXZlbCBldmVudCB0byBgRXZlbnRQbHVnaW5IdWJgIHdoZXJlIHBsdWdpbnMgaGF2ZSB0aGVcbiAgICogb3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlzcGF0Y2hlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGVudmlyb25tZW50IGV2ZW50LlxuICAgKi9cbiAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZXZlbnRzID0gRXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cyk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudEVtaXR0ZXJNaXhpbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFdmVudExpc3RlbmVyXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50VGFyZ2V0Jyk7XG52YXIgZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbicpO1xuXG52YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7XG5cbi8qKlxuICogRmluZHMgdGhlIHBhcmVudCBSZWFjdCBjb21wb25lbnQgb2YgYG5vZGVgLlxuICpcbiAqIEBwYXJhbSB7Kn0gbm9kZVxuICogQHJldHVybiB7P0RPTUV2ZW50VGFyZ2V0fSBQYXJlbnQgY29udGFpbmVyLCBvciBgbnVsbGAgaWYgdGhlIHNwZWNpZmllZCBub2RlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBuZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQYXJlbnQobm9kZSkge1xuICAvLyBUT0RPOiBJdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8gY2FjaGUgdGhpcyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IERPTVxuICAvLyB0cmF2ZXJzYWwsIGJ1dCBjYWNoaW5nIGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgd2l0aG91dCB1c2luZyBhXG4gIC8vIG11dGF0aW9uIG9ic2VydmVyIHRvIGxpc3RlbiBmb3IgYWxsIERPTSBjaGFuZ2VzLlxuICB2YXIgbm9kZUlEID0gUmVhY3RNb3VudC5nZXRJRChub2RlKTtcbiAgdmFyIHJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChub2RlSUQpO1xuICB2YXIgY29udGFpbmVyID0gUmVhY3RNb3VudC5maW5kUmVhY3RDb250YWluZXJGb3JJRChyb290SUQpO1xuICB2YXIgcGFyZW50ID0gUmVhY3RNb3VudC5nZXRGaXJzdFJlYWN0RE9NKGNvbnRhaW5lcik7XG4gIHJldHVybiBwYXJlbnQ7XG59XG5cbi8vIFVzZWQgdG8gc3RvcmUgYW5jZXN0b3IgaGllcmFyY2h5IGluIHRvcCBsZXZlbCBjYWxsYmFja1xuZnVuY3Rpb24gVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgdGhpcy50b3BMZXZlbFR5cGUgPSB0b3BMZXZlbFR5cGU7XG4gIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcbiAgdGhpcy5hbmNlc3RvcnMgPSBbXTtcbn1cbmFzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRvcExldmVsVHlwZSA9IG51bGw7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7XG4gICAgdGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDtcbiAgfVxufSk7XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGluZykge1xuICAvLyBUT0RPOiBSZS1lbmFibGUgZXZlbnQucGF0aCBoYW5kbGluZ1xuICAvL1xuICAvLyBpZiAoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQucGF0aCAmJiBib29rS2VlcGluZy5uYXRpdmVFdmVudC5wYXRoLmxlbmd0aCA+IDEpIHtcbiAgLy8gICAvLyBOZXcgYnJvd3NlcnMgaGF2ZSBhIHBhdGggYXR0cmlidXRlIG9uIG5hdGl2ZSBldmVudHNcbiAgLy8gICBoYW5kbGVUb3BMZXZlbFdpdGhQYXRoKGJvb2tLZWVwaW5nKTtcbiAgLy8gfSBlbHNlIHtcbiAgLy8gICAvLyBMZWdhY3kgYnJvd3NlcnMgZG9uJ3QgaGF2ZSBhIHBhdGggYXR0cmlidXRlIG9uIG5hdGl2ZSBldmVudHNcbiAgLy8gICBoYW5kbGVUb3BMZXZlbFdpdGhvdXRQYXRoKGJvb2tLZWVwaW5nKTtcbiAgLy8gfVxuXG4gIHZvaWQgaGFuZGxlVG9wTGV2ZWxXaXRoUGF0aDsgLy8gdGVtcG9yYXJpbHkgdW51c2VkXG4gIGhhbmRsZVRvcExldmVsV2l0aG91dFBhdGgoYm9va0tlZXBpbmcpO1xufVxuXG4vLyBMZWdhY3kgYnJvd3NlcnMgZG9uJ3QgaGF2ZSBhIHBhdGggYXR0cmlidXRlIG9uIG5hdGl2ZSBldmVudHNcbmZ1bmN0aW9uIGhhbmRsZVRvcExldmVsV2l0aG91dFBhdGgoYm9va0tlZXBpbmcpIHtcbiAgdmFyIHRvcExldmVsVGFyZ2V0ID0gUmVhY3RNb3VudC5nZXRGaXJzdFJlYWN0RE9NKGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KSkgfHwgd2luZG93O1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgaGllcmFyY2h5LCBpbiBjYXNlIHRoZXJlJ3MgYW55IG5lc3RlZCBjb21wb25lbnRzLlxuICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBvZiBhbmNlc3RvcnMgYmVmb3JlIGNhbGxpbmcgYW55XG4gIC8vIGV2ZW50IGhhbmRsZXJzLCBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNhbiBtb2RpZnkgdGhlIERPTSwgbGVhZGluZyB0b1xuICAvLyBpbmNvbnNpc3RlbmNpZXMgd2l0aCBSZWFjdE1vdW50J3Mgbm9kZSBjYWNoZS4gU2VlICMxMTA1LlxuICB2YXIgYW5jZXN0b3IgPSB0b3BMZXZlbFRhcmdldDtcbiAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgYm9va0tlZXBpbmcuYW5jZXN0b3JzLnB1c2goYW5jZXN0b3IpO1xuICAgIGFuY2VzdG9yID0gZmluZFBhcmVudChhbmNlc3Rvcik7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5sZW5ndGg7IGkrKykge1xuICAgIHRvcExldmVsVGFyZ2V0ID0gYm9va0tlZXBpbmcuYW5jZXN0b3JzW2ldO1xuICAgIHZhciB0b3BMZXZlbFRhcmdldElEID0gUmVhY3RNb3VudC5nZXRJRCh0b3BMZXZlbFRhcmdldCkgfHwgJyc7XG4gICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbChib29rS2VlcGluZy50b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTtcbiAgfVxufVxuXG4vLyBOZXcgYnJvd3NlcnMgaGF2ZSBhIHBhdGggYXR0cmlidXRlIG9uIG5hdGl2ZSBldmVudHNcbmZ1bmN0aW9uIGhhbmRsZVRvcExldmVsV2l0aFBhdGgoYm9va0tlZXBpbmcpIHtcbiAgdmFyIHBhdGggPSBib29rS2VlcGluZy5uYXRpdmVFdmVudC5wYXRoO1xuICB2YXIgY3VycmVudE5hdGl2ZVRhcmdldCA9IHBhdGhbMF07XG4gIHZhciBldmVudHNGaXJlZCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjdXJyZW50UGF0aEVsZW1lbnQgPSBwYXRoW2ldO1xuICAgIGlmIChjdXJyZW50UGF0aEVsZW1lbnQubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkge1xuICAgICAgY3VycmVudE5hdGl2ZVRhcmdldCA9IHBhdGhbaSArIDFdO1xuICAgIH1cbiAgICAvLyBUT0RPOiBzbG93XG4gICAgdmFyIHJlYWN0UGFyZW50ID0gUmVhY3RNb3VudC5nZXRGaXJzdFJlYWN0RE9NKGN1cnJlbnRQYXRoRWxlbWVudCk7XG4gICAgaWYgKHJlYWN0UGFyZW50ID09PSBjdXJyZW50UGF0aEVsZW1lbnQpIHtcbiAgICAgIHZhciBjdXJyZW50UGF0aEVsZW1lbnRJRCA9IFJlYWN0TW91bnQuZ2V0SUQoY3VycmVudFBhdGhFbGVtZW50KTtcbiAgICAgIHZhciBuZXdSb290SUQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQoY3VycmVudFBhdGhFbGVtZW50SUQpO1xuICAgICAgYm9va0tlZXBpbmcuYW5jZXN0b3JzLnB1c2goY3VycmVudFBhdGhFbGVtZW50KTtcblxuICAgICAgdmFyIHRvcExldmVsVGFyZ2V0SUQgPSBSZWFjdE1vdW50LmdldElEKGN1cnJlbnRQYXRoRWxlbWVudCkgfHwgJyc7XG4gICAgICBldmVudHNGaXJlZCsrO1xuICAgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbChib29rS2VlcGluZy50b3BMZXZlbFR5cGUsIGN1cnJlbnRQYXRoRWxlbWVudCwgdG9wTGV2ZWxUYXJnZXRJRCwgYm9va0tlZXBpbmcubmF0aXZlRXZlbnQsIGN1cnJlbnROYXRpdmVUYXJnZXQpO1xuXG4gICAgICAvLyBKdW1wIHRvIHRoZSByb290IG9mIHRoaXMgUmVhY3QgcmVuZGVyIHRyZWVcbiAgICAgIHdoaWxlIChjdXJyZW50UGF0aEVsZW1lbnRJRCAhPT0gbmV3Um9vdElEKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgY3VycmVudFBhdGhFbGVtZW50ID0gcGF0aFtpXTtcbiAgICAgICAgY3VycmVudFBhdGhFbGVtZW50SUQgPSBSZWFjdE1vdW50LmdldElEKGN1cnJlbnRQYXRoRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChldmVudHNGaXJlZCA9PT0gMCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB3aW5kb3csICcnLCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3IoY2IpIHtcbiAgdmFyIHNjcm9sbFBvc2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTtcbiAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xufVxuXG52YXIgUmVhY3RFdmVudExpc3RlbmVyID0ge1xuICBfZW5hYmxlZDogdHJ1ZSxcbiAgX2hhbmRsZVRvcExldmVsOiBudWxsLFxuXG4gIFdJTkRPV19IQU5ETEU6IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGwsXG5cbiAgc2V0SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDtcbiAgfSxcblxuICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCA9ICEhZW5hYmxlZDtcbiAgfSxcblxuICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxuICAgKiBAcGFyYW0ge29iamVjdH0gaGFuZGxlIEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNlZnVsbHlcbiAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBoYW5kbGU7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcbiAgfSxcblxuICAvKipcbiAgICogVHJhcHMgYSB0b3AtbGV2ZWwgZXZlbnQgYnkgdXNpbmcgZXZlbnQgY2FwdHVyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxuICAgKiBAcGFyYW0ge29iamVjdH0gaGFuZGxlIEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNlZnVsbHlcbiAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXBDYXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuICAgIHZhciBlbGVtZW50ID0gaGFuZGxlO1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpO1xuICB9LFxuXG4gIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBzY3JvbGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZyZXNoKTtcbiAgICBFdmVudExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgICBpZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5nZXRQb29sZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEV2ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3NcbiAgICAgIC8vIGBwcmV2ZW50RGVmYXVsdGAuXG4gICAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoaGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGluZyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJvb2tLZWVwaW5nKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudExpc3RlbmVyOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEluamVjdGlvblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdENsYXNzID0gcmVxdWlyZSgnLi9SZWFjdENsYXNzJyk7XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudCcpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3ROYXRpdmVDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0TmF0aXZlQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFJvb3RJbmRleCA9IHJlcXVpcmUoJy4vUmVhY3RSb290SW5kZXgnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgUmVhY3RJbmplY3Rpb24gPSB7XG4gIENvbXBvbmVudDogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24sXG4gIENsYXNzOiBSZWFjdENsYXNzLmluamVjdGlvbixcbiAgRE9NUHJvcGVydHk6IERPTVByb3BlcnR5LmluamVjdGlvbixcbiAgRW1wdHlDb21wb25lbnQ6IFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uLFxuICBFdmVudFBsdWdpbkh1YjogRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLFxuICBFdmVudEVtaXR0ZXI6IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pbmplY3Rpb24sXG4gIE5hdGl2ZUNvbXBvbmVudDogUmVhY3ROYXRpdmVDb21wb25lbnQuaW5qZWN0aW9uLFxuICBQZXJmOiBSZWFjdFBlcmYuaW5qZWN0aW9uLFxuICBSb290SW5kZXg6IFJlYWN0Um9vdEluZGV4LmluamVjdGlvbixcbiAgVXBkYXRlczogUmVhY3RVcGRhdGVzLmluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RJbnB1dFNlbGVjdGlvblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NU2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdGlvbicpO1xuXG52YXIgY29udGFpbnNOb2RlID0gcmVxdWlyZSgnZmJqcy9saWIvY29udGFpbnNOb2RlJyk7XG52YXIgZm9jdXNOb2RlID0gcmVxdWlyZSgnZmJqcy9saWIvZm9jdXNOb2RlJyk7XG52YXIgZ2V0QWN0aXZlRWxlbWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL2dldEFjdGl2ZUVsZW1lbnQnKTtcblxuZnVuY3Rpb24gaXNJbkRvY3VtZW50KG5vZGUpIHtcbiAgcmV0dXJuIGNvbnRhaW5zTm9kZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG5vZGUpO1xufVxuXG4vKipcbiAqIEBSZWFjdElucHV0U2VsZWN0aW9uOiBSZWFjdCBpbnB1dCBzZWxlY3Rpb24gbW9kdWxlLiBCYXNlZCBvbiBTZWxlY3Rpb24uanMsXG4gKiBidXQgbW9kaWZpZWQgdG8gYmUgc3VpdGFibGUgZm9yIHJlYWN0IGFuZCBoYXMgYSBjb3VwbGUgb2YgYnVnIGZpeGVzIChkb2Vzbid0XG4gKiBhc3N1bWUgYnV0dG9ucyBoYXZlIHJhbmdlIHNlbGVjdGlvbnMgYWxsb3dlZCkuXG4gKiBJbnB1dCBzZWxlY3Rpb24gbW9kdWxlIGZvciBSZWFjdC5cbiAqL1xudmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSB7XG5cbiAgaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOiBmdW5jdGlvbiAoZWxlbSkge1xuICAgIHZhciBub2RlTmFtZSA9IGVsZW0gJiYgZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIG5vZGVOYW1lICYmIChub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBlbGVtLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKTtcbiAgfSxcblxuICBnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBmb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZm9jdXNlZEVsZW06IGZvY3VzZWRFbGVtLFxuICAgICAgc2VsZWN0aW9uUmFuZ2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGZvY3VzZWRFbGVtKSA/IFJlYWN0SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKGZvY3VzZWRFbGVtKSA6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcmVzdG9yZVNlbGVjdGlvbjogSWYgYW55IHNlbGVjdGlvbiBpbmZvcm1hdGlvbiB3YXMgcG90ZW50aWFsbHkgbG9zdCxcbiAgICogcmVzdG9yZSBpdC4gVGhpcyBpcyB1c2VmdWwgd2hlbiBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCByZW1vdmUgZG9tXG4gICAqIG5vZGVzIGFuZCBwbGFjZSB0aGVtIGJhY2sgaW4sIHJlc3VsdGluZyBpbiBmb2N1cyBiZWluZyBsb3N0LlxuICAgKi9cbiAgcmVzdG9yZVNlbGVjdGlvbjogZnVuY3Rpb24gKHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24pIHtcbiAgICB2YXIgY3VyRm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgdmFyIHByaW9yRm9jdXNlZEVsZW0gPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLmZvY3VzZWRFbGVtO1xuICAgIHZhciBwcmlvclNlbGVjdGlvblJhbmdlID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5zZWxlY3Rpb25SYW5nZTtcbiAgICBpZiAoY3VyRm9jdXNlZEVsZW0gIT09IHByaW9yRm9jdXNlZEVsZW0gJiYgaXNJbkRvY3VtZW50KHByaW9yRm9jdXNlZEVsZW0pKSB7XG4gICAgICBpZiAoUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMocHJpb3JGb2N1c2VkRWxlbSkpIHtcbiAgICAgICAgUmVhY3RJbnB1dFNlbGVjdGlvbi5zZXRTZWxlY3Rpb24ocHJpb3JGb2N1c2VkRWxlbSwgcHJpb3JTZWxlY3Rpb25SYW5nZSk7XG4gICAgICB9XG4gICAgICBmb2N1c05vZGUocHJpb3JGb2N1c2VkRWxlbSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAZ2V0U2VsZWN0aW9uOiBHZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgZm9jdXNlZCB0ZXh0YXJlYSwgaW5wdXQgb3JcbiAgICogY29udGVudEVkaXRhYmxlIG5vZGUuXG4gICAqIC1AaW5wdXQ6IExvb2sgdXAgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0XG4gICAqIC1AcmV0dXJuIHtzdGFydDogc2VsZWN0aW9uU3RhcnQsIGVuZDogc2VsZWN0aW9uRW5kfVxuICAgKi9cbiAgZ2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICB2YXIgc2VsZWN0aW9uO1xuXG4gICAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQpIHtcbiAgICAgIC8vIE1vZGVybiBicm93c2VyIHdpdGggaW5wdXQgb3IgdGV4dGFyZWEuXG4gICAgICBzZWxlY3Rpb24gPSB7XG4gICAgICAgIHN0YXJ0OiBpbnB1dC5zZWxlY3Rpb25TdGFydCxcbiAgICAgICAgZW5kOiBpbnB1dC5zZWxlY3Rpb25FbmRcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgKGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpKSB7XG4gICAgICAvLyBJRTggaW5wdXQuXG4gICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50IGluIElFLCBzbyBpdCBtdXN0XG4gICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC5cbiAgICAgIGlmIChyYW5nZS5wYXJlbnRFbGVtZW50KCkgPT09IGlucHV0KSB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgICAgICBzdGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aCksXG4gICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29udGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuXG4gICAgICBzZWxlY3Rpb24gPSBSZWFjdERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAc2V0U2VsZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgdGV4dGFyZWEgb3IgaW5wdXQgYW5kIGZvY3VzZXNcbiAgICogdGhlIGlucHV0LlxuICAgKiAtQGlucHV0ICAgICBTZXQgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhXG4gICAqIC1Ab2Zmc2V0cyAgIE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdldCpcbiAgICovXG4gIHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7XG4gICAgdmFyIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcbiAgICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQ7XG4gICAgaWYgKHR5cGVvZiBlbmQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDtcbiAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgubWluKGVuZCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiAoaW5wdXQubm9kZU5hbWUgJiYgaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JykpIHtcbiAgICAgIHZhciByYW5nZSA9IGlucHV0LmNyZWF0ZVRleHRSYW5nZSgpO1xuICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcbiAgICAgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTtcbiAgICAgIHJhbmdlLnNlbGVjdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERPTVNlbGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0LCBvZmZzZXRzKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0SW5zdGFuY2VIYW5kbGVzXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Um9vdEluZGV4ID0gcmVxdWlyZSgnLi9SZWFjdFJvb3RJbmRleCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU0VQQVJBVE9SX0xFTkdUSCA9IFNFUEFSQVRPUi5sZW5ndGg7XG5cbi8qKlxuICogTWF4aW11bSBkZXB0aCBvZiB0cmF2ZXJzYWxzIGJlZm9yZSB3ZSBjb25zaWRlciB0aGUgcG9zc2liaWxpdHkgb2YgYSBiYWQgSUQuXG4gKi9cbnZhciBNQVhfVFJFRV9ERVBUSCA9IDEwMDAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBET00gSUQgcHJlZml4IHRvIHVzZSB3aGVuIG1vdW50aW5nIFJlYWN0IGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEEgdW5pcXVlIGludGVnZXJcbiAqIEByZXR1cm4ge3N0cmluZ30gUmVhY3Qgcm9vdCBJRC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXRSZWFjdFJvb3RJRFN0cmluZyhpbmRleCkge1xuICByZXR1cm4gU0VQQVJBVE9SICsgaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGNoYXJhY3RlciBpbiB0aGUgc3VwcGxpZWQgSUQgaXMgYSBzZXBhcmF0b3Igb3IgdGhlIGVuZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQSBSZWFjdCBET00gSUQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggb2YgdGhlIGNoYXJhY3RlciB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBhIHNlcGFyYXRvciBvciBlbmQgb2YgdGhlIElELlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gaXNCb3VuZGFyeShpZCwgaW5kZXgpIHtcbiAgcmV0dXJuIGlkLmNoYXJBdChpbmRleCkgPT09IFNFUEFSQVRPUiB8fCBpbmRleCA9PT0gaWQubGVuZ3RoO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc3VwcGxpZWQgc3RyaW5nIGlzIGEgdmFsaWQgUmVhY3QgRE9NIElELlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBBIFJlYWN0IERPTSBJRCwgbWF5YmUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBSZWFjdCBET00gSUQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkSUQoaWQpIHtcbiAgcmV0dXJuIGlkID09PSAnJyB8fCBpZC5jaGFyQXQoMCkgPT09IFNFUEFSQVRPUiAmJiBpZC5jaGFyQXQoaWQubGVuZ3RoIC0gMSkgIT09IFNFUEFSQVRPUjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGZpcnN0IElEIGlzIGFuIGFuY2VzdG9yIG9mIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgSUQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFuY2VzdG9ySURcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjZW5kYW50SURcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYGFuY2VzdG9ySURgIGlzIGFuIGFuY2VzdG9yIG9mIGBkZXNjZW5kYW50SURgLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGlzQW5jZXN0b3JJRE9mKGFuY2VzdG9ySUQsIGRlc2NlbmRhbnRJRCkge1xuICByZXR1cm4gZGVzY2VuZGFudElELmluZGV4T2YoYW5jZXN0b3JJRCkgPT09IDAgJiYgaXNCb3VuZGFyeShkZXNjZW5kYW50SUQsIGFuY2VzdG9ySUQubGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwYXJlbnQgSUQgb2YgdGhlIHN1cHBsaWVkIFJlYWN0IERPTSBJRCwgYGlkYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgYSBjb21wb25lbnQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IElEIG9mIHRoZSBwYXJlbnQsIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudElEKGlkKSB7XG4gIHJldHVybiBpZCA/IGlkLnN1YnN0cigwLCBpZC5sYXN0SW5kZXhPZihTRVBBUkFUT1IpKSA6ICcnO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgRE9NIElEIG9uIHRoZSB0cmVlIHBhdGggZnJvbSB0aGUgc3VwcGxpZWQgYGFuY2VzdG9ySURgIHRvIHRoZVxuICogc3VwcGxpZWQgYGRlc3RpbmF0aW9uSURgLiBJZiB0aGV5IGFyZSBlcXVhbCwgdGhlIElEIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbmNlc3RvcklEIElEIG9mIGFuIGFuY2VzdG9yIG5vZGUgb2YgYGRlc3RpbmF0aW9uSURgLlxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3RpbmF0aW9uSUQgSUQgb2YgdGhlIGRlc3RpbmF0aW9uIG5vZGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5leHQgSUQgb24gdGhlIHBhdGggZnJvbSBgYW5jZXN0b3JJRGAgdG8gYGRlc3RpbmF0aW9uSURgLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZ2V0TmV4dERlc2NlbmRhbnRJRChhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSB7XG4gICEoaXNWYWxpZElEKGFuY2VzdG9ySUQpICYmIGlzVmFsaWRJRChkZXN0aW5hdGlvbklEKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0TmV4dERlc2NlbmRhbnRJRCglcywgJXMpOiBSZWNlaXZlZCBhbiBpbnZhbGlkIFJlYWN0IERPTSBJRC4nLCBhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICFpc0FuY2VzdG9ySURPZihhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROZXh0RGVzY2VuZGFudElEKC4uLik6IFJlYWN0IGhhcyBtYWRlIGFuIGludmFsaWQgYXNzdW1wdGlvbiBhYm91dCAnICsgJ3RoZSBET00gaGllcmFyY2h5LiBFeHBlY3RlZCBgJXNgIHRvIGJlIGFuIGFuY2VzdG9yIG9mIGAlc2AuJywgYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAoYW5jZXN0b3JJRCA9PT0gZGVzdGluYXRpb25JRCkge1xuICAgIHJldHVybiBhbmNlc3RvcklEO1xuICB9XG4gIC8vIFNraXAgb3ZlciB0aGUgYW5jZXN0b3IgYW5kIHRoZSBpbW1lZGlhdGUgc2VwYXJhdG9yLiBUcmF2ZXJzZSB1bnRpbCB3ZSBoaXRcbiAgLy8gYW5vdGhlciBzZXBhcmF0b3Igb3Igd2UgcmVhY2ggdGhlIGVuZCBvZiBgZGVzdGluYXRpb25JRGAuXG4gIHZhciBzdGFydCA9IGFuY2VzdG9ySUQubGVuZ3RoICsgU0VQQVJBVE9SX0xFTkdUSDtcbiAgdmFyIGk7XG4gIGZvciAoaSA9IHN0YXJ0OyBpIDwgZGVzdGluYXRpb25JRC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0JvdW5kYXJ5KGRlc3RpbmF0aW9uSUQsIGkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlc3RpbmF0aW9uSUQuc3Vic3RyKDAsIGkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIElEIG9mIHR3byBJRHMuXG4gKlxuICogVXNpbmcgdGhpcyBJRCBzY2hlbWUsIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBJRCBpcyB0aGUgbG9uZ2VzdCBjb21tb25cbiAqIHByZWZpeCBvZiB0aGUgdHdvIElEcyB0aGF0IGltbWVkaWF0ZWx5IHByZWNlZGVkIGEgXCJtYXJrZXJcIiBpbiBib3RoIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG9uZUlEXG4gKiBAcGFyYW0ge3N0cmluZ30gdHdvSURcbiAqIEByZXR1cm4ge3N0cmluZ30gTmVhcmVzdCBjb21tb24gYW5jZXN0b3IgSUQsIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm9uZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRChvbmVJRCwgdHdvSUQpIHtcbiAgdmFyIG1pbkxlbmd0aCA9IE1hdGgubWluKG9uZUlELmxlbmd0aCwgdHdvSUQubGVuZ3RoKTtcbiAgaWYgKG1pbkxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICB2YXIgbGFzdENvbW1vbk1hcmtlckluZGV4ID0gMDtcbiAgLy8gVXNlIGA8PWAgdG8gdHJhdmVyc2UgdW50aWwgdGhlIFwiRU9MXCIgb2YgdGhlIHNob3J0ZXIgc3RyaW5nLlxuICBmb3IgKHZhciBpID0gMDsgaSA8PSBtaW5MZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0JvdW5kYXJ5KG9uZUlELCBpKSAmJiBpc0JvdW5kYXJ5KHR3b0lELCBpKSkge1xuICAgICAgbGFzdENvbW1vbk1hcmtlckluZGV4ID0gaTtcbiAgICB9IGVsc2UgaWYgKG9uZUlELmNoYXJBdChpKSAhPT0gdHdvSUQuY2hhckF0KGkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdmFyIGxvbmdlc3RDb21tb25JRCA9IG9uZUlELnN1YnN0cigwLCBsYXN0Q29tbW9uTWFya2VySW5kZXgpO1xuICAhaXNWYWxpZElEKGxvbmdlc3RDb21tb25JRCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklEKCVzLCAlcyk6IEV4cGVjdGVkIGEgdmFsaWQgUmVhY3QgRE9NIElEOiAlcycsIG9uZUlELCB0d29JRCwgbG9uZ2VzdENvbW1vbklEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBsb25nZXN0Q29tbW9uSUQ7XG59XG5cbi8qKlxuICogVHJhdmVyc2VzIHRoZSBwYXJlbnQgcGF0aCBiZXR3ZWVuIHR3byBJRHMgKGVpdGhlciB1cCBvciBkb3duKS4gVGhlIElEcyBtdXN0XG4gKiBub3QgYmUgdGhlIHNhbWUsIGFuZCB0aGVyZSBtdXN0IGV4aXN0IGEgcGFyZW50IHBhdGggYmV0d2VlbiB0aGVtLiBJZiB0aGVcbiAqIGNhbGxiYWNrIHJldHVybnMgYGZhbHNlYCwgdHJhdmVyc2FsIGlzIHN0b3BwZWQuXG4gKlxuICogQHBhcmFtIHs/c3RyaW5nfSBzdGFydCBJRCBhdCB3aGljaCB0byBzdGFydCB0cmF2ZXJzYWwuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHN0b3AgSUQgYXQgd2hpY2ggdG8gZW5kIHRyYXZlcnNhbC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZSBlYWNoIElEIHdpdGguXG4gKiBAcGFyYW0geyp9IGFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGguXG4gKiBAcGFyYW0gez9ib29sZWFufSBza2lwRmlyc3QgV2hldGhlciBvciBub3QgdG8gc2tpcCB0aGUgZmlyc3Qgbm9kZS5cbiAqIEBwYXJhbSB7P2Jvb2xlYW59IHNraXBMYXN0IFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdGhlIGxhc3Qgbm9kZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlUGFyZW50UGF0aChzdGFydCwgc3RvcCwgY2IsIGFyZywgc2tpcEZpcnN0LCBza2lwTGFzdCkge1xuICBzdGFydCA9IHN0YXJ0IHx8ICcnO1xuICBzdG9wID0gc3RvcCB8fCAnJztcbiAgIShzdGFydCAhPT0gc3RvcCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndHJhdmVyc2VQYXJlbnRQYXRoKC4uLik6IENhbm5vdCB0cmF2ZXJzZSBmcm9tIGFuZCB0byB0aGUgc2FtZSBJRCwgYCVzYC4nLCBzdGFydCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB2YXIgdHJhdmVyc2VVcCA9IGlzQW5jZXN0b3JJRE9mKHN0b3AsIHN0YXJ0KTtcbiAgISh0cmF2ZXJzZVVwIHx8IGlzQW5jZXN0b3JJRE9mKHN0YXJ0LCBzdG9wKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndHJhdmVyc2VQYXJlbnRQYXRoKCVzLCAlcywgLi4uKTogQ2Fubm90IHRyYXZlcnNlIGZyb20gdHdvIElEcyB0aGF0IGRvICcgKyAnbm90IGhhdmUgYSBwYXJlbnQgcGF0aC4nLCBzdGFydCwgc3RvcCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAvLyBUcmF2ZXJzZSBmcm9tIGBzdGFydGAgdG8gYHN0b3BgIG9uZSBkZXB0aCBhdCBhIHRpbWUuXG4gIHZhciBkZXB0aCA9IDA7XG4gIHZhciB0cmF2ZXJzZSA9IHRyYXZlcnNlVXAgPyBnZXRQYXJlbnRJRCA6IGdldE5leHREZXNjZW5kYW50SUQ7XG4gIGZvciAodmFyIGlkID0gc3RhcnQ7OyAvKiB1bnRpbCBicmVhayAqL2lkID0gdHJhdmVyc2UoaWQsIHN0b3ApKSB7XG4gICAgdmFyIHJldDtcbiAgICBpZiAoKCFza2lwRmlyc3QgfHwgaWQgIT09IHN0YXJ0KSAmJiAoIXNraXBMYXN0IHx8IGlkICE9PSBzdG9wKSkge1xuICAgICAgcmV0ID0gY2IoaWQsIHRyYXZlcnNlVXAsIGFyZyk7XG4gICAgfVxuICAgIGlmIChyZXQgPT09IGZhbHNlIHx8IGlkID09PSBzdG9wKSB7XG4gICAgICAvLyBPbmx5IGJyZWFrIC8vYWZ0ZXIvLyB2aXNpdGluZyBgc3RvcGAuXG4gICAgICBicmVhaztcbiAgICB9XG4gICAgIShkZXB0aCsrIDwgTUFYX1RSRUVfREVQVEgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXZlcnNlUGFyZW50UGF0aCglcywgJXMsIC4uLik6IERldGVjdGVkIGFuIGluZmluaXRlIGxvb3Agd2hpbGUgJyArICd0cmF2ZXJzaW5nIHRoZSBSZWFjdCBET00gSUQgdHJlZS4gVGhpcyBtYXkgYmUgZHVlIHRvIG1hbGZvcm1lZCBJRHM6ICVzJywgc3RhcnQsIHN0b3AsIGlkKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNYW5hZ2VzIHRoZSBJRHMgYXNzaWduZWQgdG8gRE9NIHJlcHJlc2VudGF0aW9ucyBvZiBSZWFjdCBjb21wb25lbnRzLiBUaGlzXG4gKiB1c2VzIGEgc3BlY2lmaWMgc2NoZW1lIGluIG9yZGVyIHRvIHRyYXZlcnNlIHRoZSBET00gZWZmaWNpZW50bHkgKGUuZy4gaW5cbiAqIG9yZGVyIHRvIHNpbXVsYXRlIGV2ZW50cykuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJlYWN0IHJvb3QgSURcbiAgICogQHJldHVybiB7c3RyaW5nfSBBIFJlYWN0IHJvb3QgSUQuXG4gICAqL1xuICBjcmVhdGVSZWFjdFJvb3RJRDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRSZWFjdFJvb3RJRFN0cmluZyhSZWFjdFJvb3RJbmRleC5jcmVhdGVSZWFjdFJvb3RJbmRleCgpKTtcbiAgfSxcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJlYWN0IElEIGJ5IGpvaW5pbmcgYSByb290IElEIHdpdGggYSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIFJvb3QgSUQgb2YgYSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBBIGNvbXBvbmVudCdzIG5hbWUgKGFzIGZsYXR0ZW5lZCBjaGlsZHJlbikuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQSBSZWFjdCBJRC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjcmVhdGVSZWFjdElEOiBmdW5jdGlvbiAocm9vdElELCBuYW1lKSB7XG4gICAgcmV0dXJuIHJvb3RJRCArIG5hbWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIERPTSBJRCBvZiB0aGUgUmVhY3QgY29tcG9uZW50IHRoYXQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgdGhhdFxuICAgKiBjb250YWlucyB0aGUgUmVhY3QgY29tcG9uZW50IHdpdGggdGhlIHN1cHBsaWVkIERPTSBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIERPTSBJRCBvZiBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7P3N0cmluZ30gRE9NIElEIG9mIHRoZSBSZWFjdCBjb21wb25lbnQgdGhhdCBpcyB0aGUgcm9vdC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIGlmIChpZCAmJiBpZC5jaGFyQXQoMCkgPT09IFNFUEFSQVRPUiAmJiBpZC5sZW5ndGggPiAxKSB7XG4gICAgICB2YXIgaW5kZXggPSBpZC5pbmRleE9mKFNFUEFSQVRPUiwgMSk7XG4gICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGlkLnN1YnN0cigwLCBpbmRleCkgOiBpZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgSUQgaGllcmFyY2h5IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJRHMgdGhhdFxuICAgKiBzaG91bGQgd291bGQgcmVjZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91c2VMZWF2ZWAgZXZlbnQuXG4gICAqXG4gICAqIE5PVEU6IERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgb24gdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGJlY2F1c2VcbiAgICogbm90aGluZyBcImVudGVyZWRcIiBvciBcImxlZnRcIiB0aGF0IGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZWF2ZUlEIElEIGJlaW5nIGxlZnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRlcklEIElEIGJlaW5nIGVudGVyZWQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZSBvbiBlYWNoIGVudGVyZWQvbGVmdCBJRC5cbiAgICogQHBhcmFtIHsqfSB1cEFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGggb24gbGVmdCBJRHMuXG4gICAqIEBwYXJhbSB7Kn0gZG93bkFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGggb24gZW50ZXJlZCBJRHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAobGVhdmVJRCwgZW50ZXJJRCwgY2IsIHVwQXJnLCBkb3duQXJnKSB7XG4gICAgdmFyIGFuY2VzdG9ySUQgPSBnZXRGaXJzdENvbW1vbkFuY2VzdG9ySUQobGVhdmVJRCwgZW50ZXJJRCk7XG4gICAgaWYgKGFuY2VzdG9ySUQgIT09IGxlYXZlSUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aChsZWF2ZUlELCBhbmNlc3RvcklELCBjYiwgdXBBcmcsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKGFuY2VzdG9ySUQgIT09IGVudGVySUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aChhbmNlc3RvcklELCBlbnRlcklELCBjYiwgZG93bkFyZywgdHJ1ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIHRyYXZlcnNhbCBoYXBwZW5zIG9uIElEcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBET00uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRJRCBJRCBvZiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZS5cbiAgICogQHBhcmFtIHsqfSBhcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXZlcnNlVHdvUGhhc2U6IGZ1bmN0aW9uICh0YXJnZXRJRCwgY2IsIGFyZykge1xuICAgIGlmICh0YXJnZXRJRCkge1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKCcnLCB0YXJnZXRJRCwgY2IsIGFyZywgdHJ1ZSwgZmFsc2UpO1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKHRhcmdldElELCAnJywgY2IsIGFyZywgZmFsc2UsIHRydWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2FtZSBhcyBgdHJhdmVyc2VUd29QaGFzZWAgYnV0IHNraXBzIHRoZSBgdGFyZ2V0SURgLlxuICAgKi9cbiAgdHJhdmVyc2VUd29QaGFzZVNraXBUYXJnZXQ6IGZ1bmN0aW9uICh0YXJnZXRJRCwgY2IsIGFyZykge1xuICAgIGlmICh0YXJnZXRJRCkge1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKCcnLCB0YXJnZXRJRCwgY2IsIGFyZywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICB0cmF2ZXJzZVBhcmVudFBhdGgodGFyZ2V0SUQsICcnLCBjYiwgYXJnLCB0cnVlLCB0cnVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlIGEgbm9kZSBJRCwgY2FsbGluZyB0aGUgc3VwcGxpZWQgYGNiYCBmb3IgZWFjaCBhbmNlc3RvciBJRC4gRm9yXG4gICAqIGV4YW1wbGUsIHBhc3NpbmcgYC4wLiRyb3ctMC4xYCB3b3VsZCByZXN1bHQgaW4gYGNiYCBnZXR0aW5nIGNhbGxlZFxuICAgKiB3aXRoIGAuMGAsIGAuMC4kcm93LTBgLCBhbmQgYC4wLiRyb3ctMC4xYC5cbiAgICpcbiAgICogTk9URTogVGhpcyB0cmF2ZXJzYWwgaGFwcGVucyBvbiBJRHMgd2l0aG91dCB0b3VjaGluZyB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0SUQgSUQgb2YgdGhlIHRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gYXJnIEFyZ3VtZW50IHRvIGludm9rZSB0aGUgY2FsbGJhY2sgd2l0aC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmF2ZXJzZUFuY2VzdG9yczogZnVuY3Rpb24gKHRhcmdldElELCBjYiwgYXJnKSB7XG4gICAgdHJhdmVyc2VQYXJlbnRQYXRoKCcnLCB0YXJnZXRJRCwgY2IsIGFyZywgdHJ1ZSwgZmFsc2UpO1xuICB9LFxuXG4gIGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRDogZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklELFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZ2V0TmV4dERlc2NlbmRhbnRJRDogZ2V0TmV4dERlc2NlbmRhbnRJRCxcblxuICBpc0FuY2VzdG9ySURPZjogaXNBbmNlc3RvcklET2YsXG5cbiAgU0VQQVJBVE9SOiBTRVBBUkFUT1JcblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3RhbmNlSGFuZGxlcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6WEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGSmxZV04wVW05dmRFbHVaR1Y0SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZKdmIzUkpibVJsZUNjcE8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JuWmhjaUJUUlZCQlVrRlVUMUlnUFNBbkxpYzdYRzUyWVhJZ1UwVlFRVkpCVkU5U1gweEZUa2RVU0NBOUlGTkZVRUZTUVZSUFVpNXNaVzVuZEdnN1hHNWNiaThxS2x4dUlDb2dUV0Y0YVcxMWJTQmtaWEIwYUNCdlppQjBjbUYyWlhKellXeHpJR0psWm05eVpTQjNaU0JqYjI1emFXUmxjaUIwYUdVZ2NHOXpjMmxpYVd4cGRIa2diMllnWVNCaVlXUWdTVVF1WEc0Z0tpOWNiblpoY2lCTlFWaGZWRkpGUlY5RVJWQlVTQ0E5SURFd01EQXdPMXh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCRVQwMGdTVVFnY0hKbFptbDRJSFJ2SUhWelpTQjNhR1Z1SUcxdmRXNTBhVzVuSUZKbFlXTjBJR052YlhCdmJtVnVkSE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR2x1WkdWNElFRWdkVzVwY1hWbElHbHVkR1ZuWlhKY2JpQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZoWTNRZ2NtOXZkQ0JKUkM1Y2JpQXFJRUJwYm5SbGNtNWhiRnh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJTWldGamRGSnZiM1JKUkZOMGNtbHVaeWhwYm1SbGVDa2dlMXh1SUNCeVpYUjFjbTRnVTBWUVFWSkJWRTlTSUNzZ2FXNWtaWGd1ZEc5VGRISnBibWNvTXpZcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOb1pXTnJjeUJwWmlCaElHTm9ZWEpoWTNSbGNpQnBiaUIwYUdVZ2MzVndjR3hwWldRZ1NVUWdhWE1nWVNCelpYQmhjbUYwYjNJZ2IzSWdkR2hsSUdWdVpDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdRU0JTWldGamRDQkVUMDBnU1VRdVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdhVzVrWlhnZ1NXNWtaWGdnYjJZZ2RHaGxJR05vWVhKaFkzUmxjaUIwYnlCamFHVmpheTVjYmlBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ2RHaGxJR05vWVhKaFkzUmxjaUJwY3lCaElITmxjR0Z5WVhSdmNpQnZjaUJsYm1RZ2IyWWdkR2hsSUVsRUxseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdhWE5DYjNWdVpHRnllU2hwWkN3Z2FXNWtaWGdwSUh0Y2JpQWdjbVYwZFhKdUlHbGtMbU5vWVhKQmRDaHBibVJsZUNrZ1BUMDlJRk5GVUVGU1FWUlBVaUI4ZkNCcGJtUmxlQ0E5UFQwZ2FXUXViR1Z1WjNSb08xeHVmVnh1WEc0dktpcGNiaUFxSUVOb1pXTnJjeUJwWmlCMGFHVWdjM1Z3Y0d4cFpXUWdjM1J5YVc1bklHbHpJR0VnZG1Gc2FXUWdVbVZoWTNRZ1JFOU5JRWxFTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCQklGSmxZV04wSUVSUFRTQkpSQ3dnYldGNVltVXVYRzRnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCVWNuVmxJR2xtSUhSb1pTQnpkSEpwYm1jZ2FYTWdZU0IyWVd4cFpDQlNaV0ZqZENCRVQwMGdTVVF1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCcGMxWmhiR2xrU1VRb2FXUXBJSHRjYmlBZ2NtVjBkWEp1SUdsa0lEMDlQU0FuSnlCOGZDQnBaQzVqYUdGeVFYUW9NQ2tnUFQwOUlGTkZVRUZTUVZSUFVpQW1KaUJwWkM1amFHRnlRWFFvYVdRdWJHVnVaM1JvSUMwZ01Ta2dJVDA5SUZORlVFRlNRVlJQVWp0Y2JuMWNibHh1THlvcVhHNGdLaUJEYUdWamEzTWdhV1lnZEdobElHWnBjbk4wSUVsRUlHbHpJR0Z1SUdGdVkyVnpkRzl5SUc5bUlHOXlJR1Z4ZFdGc0lIUnZJSFJvWlNCelpXTnZibVFnU1VRdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdGdVkyVnpkRzl5U1VSY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmtaWE5qWlc1a1lXNTBTVVJjYmlBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ1lHRnVZMlZ6ZEc5eVNVUmdJR2x6SUdGdUlHRnVZMlZ6ZEc5eUlHOW1JR0JrWlhOalpXNWtZVzUwU1VSZ0xseHVJQ29nUUdsdWRHVnlibUZzWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x6UVc1alpYTjBiM0pKUkU5bUtHRnVZMlZ6ZEc5eVNVUXNJR1JsYzJObGJtUmhiblJKUkNrZ2UxeHVJQ0J5WlhSMWNtNGdaR1Z6WTJWdVpHRnVkRWxFTG1sdVpHVjRUMllvWVc1alpYTjBiM0pKUkNrZ1BUMDlJREFnSmlZZ2FYTkNiM1Z1WkdGeWVTaGtaWE5qWlc1a1lXNTBTVVFzSUdGdVkyVnpkRzl5U1VRdWJHVnVaM1JvS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJIWlhSeklIUm9aU0J3WVhKbGJuUWdTVVFnYjJZZ2RHaGxJSE4xY0hCc2FXVmtJRkpsWVdOMElFUlBUU0JKUkN3Z1lHbGtZQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnU1VRZ2IyWWdZU0JqYjIxd2IyNWxiblF1WEc0Z0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFbEVJRzltSUhSb1pTQndZWEpsYm5Rc0lHOXlJR0Z1SUdWdGNIUjVJSE4wY21sdVp5NWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEZCaGNtVnVkRWxFS0dsa0tTQjdYRzRnSUhKbGRIVnliaUJwWkNBL0lHbGtMbk4xWW5OMGNpZ3dMQ0JwWkM1c1lYTjBTVzVrWlhoUFppaFRSVkJCVWtGVVQxSXBLU0E2SUNjbk8xeHVmVnh1WEc0dktpcGNiaUFxSUVkbGRITWdkR2hsSUc1bGVIUWdSRTlOSUVsRUlHOXVJSFJvWlNCMGNtVmxJSEJoZEdnZ1puSnZiU0IwYUdVZ2MzVndjR3hwWldRZ1lHRnVZMlZ6ZEc5eVNVUmdJSFJ2SUhSb1pWeHVJQ29nYzNWd2NHeHBaV1FnWUdSbGMzUnBibUYwYVc5dVNVUmdMaUJKWmlCMGFHVjVJR0Z5WlNCbGNYVmhiQ3dnZEdobElFbEVJR2x6SUhKbGRIVnlibVZrTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JoYm1ObGMzUnZja2xFSUVsRUlHOW1JR0Z1SUdGdVkyVnpkRzl5SUc1dlpHVWdiMllnWUdSbGMzUnBibUYwYVc5dVNVUmdMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdSbGMzUnBibUYwYVc5dVNVUWdTVVFnYjJZZ2RHaGxJR1JsYzNScGJtRjBhVzl1SUc1dlpHVXVYRzRnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUU1bGVIUWdTVVFnYjI0Z2RHaGxJSEJoZEdnZ1puSnZiU0JnWVc1alpYTjBiM0pKUkdBZ2RHOGdZR1JsYzNScGJtRjBhVzl1U1VSZ0xseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwVG1WNGRFUmxjMk5sYm1SaGJuUkpSQ2hoYm1ObGMzUnZja2xFTENCa1pYTjBhVzVoZEdsdmJrbEVLU0I3WEc0Z0lDRW9hWE5XWVd4cFpFbEVLR0Z1WTJWemRHOXlTVVFwSUNZbUlHbHpWbUZzYVdSSlJDaGtaWE4wYVc1aGRHbHZia2xFS1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWjJWMFRtVjRkRVJsYzJObGJtUmhiblJKUkNnbGN5d2dKWE1wT2lCU1pXTmxhWFpsWkNCaGJpQnBiblpoYkdsa0lGSmxZV04wSUVSUFRTQkpSQzRuTENCaGJtTmxjM1J2Y2tsRUxDQmtaWE4wYVc1aGRHbHZia2xFS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNGcGMwRnVZMlZ6ZEc5eVNVUlBaaWhoYm1ObGMzUnZja2xFTENCa1pYTjBhVzVoZEdsdmJrbEVLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZG5aWFJPWlhoMFJHVnpZMlZ1WkdGdWRFbEVLQzR1TGlrNklGSmxZV04wSUdoaGN5QnRZV1JsSUdGdUlHbHVkbUZzYVdRZ1lYTnpkVzF3ZEdsdmJpQmhZbTkxZENBbklDc2dKM1JvWlNCRVQwMGdhR2xsY21GeVkyaDVMaUJGZUhCbFkzUmxaQ0JnSlhOZ0lIUnZJR0psSUdGdUlHRnVZMlZ6ZEc5eUlHOW1JR0FsYzJBdUp5d2dZVzVqWlhOMGIzSkpSQ3dnWkdWemRHbHVZWFJwYjI1SlJDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQnBaaUFvWVc1alpYTjBiM0pKUkNBOVBUMGdaR1Z6ZEdsdVlYUnBiMjVKUkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJoYm1ObGMzUnZja2xFTzF4dUlDQjlYRzRnSUM4dklGTnJhWEFnYjNabGNpQjBhR1VnWVc1alpYTjBiM0lnWVc1a0lIUm9aU0JwYlcxbFpHbGhkR1VnYzJWd1lYSmhkRzl5TGlCVWNtRjJaWEp6WlNCMWJuUnBiQ0IzWlNCb2FYUmNiaUFnTHk4Z1lXNXZkR2hsY2lCelpYQmhjbUYwYjNJZ2IzSWdkMlVnY21WaFkyZ2dkR2hsSUdWdVpDQnZaaUJnWkdWemRHbHVZWFJwYjI1SlJHQXVYRzRnSUhaaGNpQnpkR0Z5ZENBOUlHRnVZMlZ6ZEc5eVNVUXViR1Z1WjNSb0lDc2dVMFZRUVZKQlZFOVNYMHhGVGtkVVNEdGNiaUFnZG1GeUlHazdYRzRnSUdadmNpQW9hU0E5SUhOMFlYSjBPeUJwSUR3Z1pHVnpkR2x1WVhScGIyNUpSQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUdsbUlDaHBjMEp2ZFc1a1lYSjVLR1JsYzNScGJtRjBhVzl1U1VRc0lHa3BLU0I3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUdSbGMzUnBibUYwYVc5dVNVUXVjM1ZpYzNSeUtEQXNJR2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRWRsZEhNZ2RHaGxJRzVsWVhKbGMzUWdZMjl0Ylc5dUlHRnVZMlZ6ZEc5eUlFbEVJRzltSUhSM2J5QkpSSE11WEc0Z0tseHVJQ29nVlhOcGJtY2dkR2hwY3lCSlJDQnpZMmhsYldVc0lIUm9aU0J1WldGeVpYTjBJR052YlcxdmJpQmhibU5sYzNSdmNpQkpSQ0JwY3lCMGFHVWdiRzl1WjJWemRDQmpiMjF0YjI1Y2JpQXFJSEJ5WldacGVDQnZaaUIwYUdVZ2RIZHZJRWxFY3lCMGFHRjBJR2x0YldWa2FXRjBaV3g1SUhCeVpXTmxaR1ZrSUdFZ1hDSnRZWEpyWlhKY0lpQnBiaUJpYjNSb0lITjBjbWx1WjNNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc5dVpVbEVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEhkdlNVUmNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnVG1WaGNtVnpkQ0JqYjIxdGIyNGdZVzVqWlhOMGIzSWdTVVFzSUc5eUlIUm9aU0JsYlhCMGVTQnpkSEpwYm1jZ2FXWWdibTl1WlM1Y2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRVpwY25OMFEyOXRiVzl1UVc1alpYTjBiM0pKUkNodmJtVkpSQ3dnZEhkdlNVUXBJSHRjYmlBZ2RtRnlJRzFwYmt4bGJtZDBhQ0E5SUUxaGRHZ3ViV2x1S0c5dVpVbEVMbXhsYm1kMGFDd2dkSGR2U1VRdWJHVnVaM1JvS1R0Y2JpQWdhV1lnS0cxcGJreGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQW5KenRjYmlBZ2ZWeHVJQ0IyWVhJZ2JHRnpkRU52YlcxdmJrMWhjbXRsY2tsdVpHVjRJRDBnTUR0Y2JpQWdMeThnVlhObElHQThQV0FnZEc4Z2RISmhkbVZ5YzJVZ2RXNTBhV3dnZEdobElGd2lSVTlNWENJZ2IyWWdkR2hsSUhOb2IzSjBaWElnYzNSeWFXNW5MbHh1SUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOFBTQnRhVzVNWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUdsbUlDaHBjMEp2ZFc1a1lYSjVLRzl1WlVsRUxDQnBLU0FtSmlCcGMwSnZkVzVrWVhKNUtIUjNiMGxFTENCcEtTa2dlMXh1SUNBZ0lDQWdiR0Z6ZEVOdmJXMXZiazFoY210bGNrbHVaR1Y0SUQwZ2FUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHOXVaVWxFTG1Ob1lYSkJkQ2hwS1NBaFBUMGdkSGR2U1VRdVkyaGhja0YwS0drcEtTQjdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnZG1GeUlHeHZibWRsYzNSRGIyMXRiMjVKUkNBOUlHOXVaVWxFTG5OMVluTjBjaWd3TENCc1lYTjBRMjl0Ylc5dVRXRnlhMlZ5U1c1a1pYZ3BPMXh1SUNBaGFYTldZV3hwWkVsRUtHeHZibWRsYzNSRGIyMXRiMjVKUkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWjJWMFJtbHljM1JEYjIxdGIyNUJibU5sYzNSdmNrbEVLQ1Z6TENBbGN5azZJRVY0Y0dWamRHVmtJR0VnZG1Gc2FXUWdVbVZoWTNRZ1JFOU5JRWxFT2lBbGN5Y3NJRzl1WlVsRUxDQjBkMjlKUkN3Z2JHOXVaMlZ6ZEVOdmJXMXZia2xFS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUhKbGRIVnliaUJzYjI1blpYTjBRMjl0Ylc5dVNVUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZISmhkbVZ5YzJWeklIUm9aU0J3WVhKbGJuUWdjR0YwYUNCaVpYUjNaV1Z1SUhSM2J5QkpSSE1nS0dWcGRHaGxjaUIxY0NCdmNpQmtiM2R1S1M0Z1ZHaGxJRWxFY3lCdGRYTjBYRzRnS2lCdWIzUWdZbVVnZEdobElITmhiV1VzSUdGdVpDQjBhR1Z5WlNCdGRYTjBJR1Y0YVhOMElHRWdjR0Z5Wlc1MElIQmhkR2dnWW1WMGQyVmxiaUIwYUdWdExpQkpaaUIwYUdWY2JpQXFJR05oYkd4aVlXTnJJSEpsZEhWeWJuTWdZR1poYkhObFlDd2dkSEpoZG1WeWMyRnNJR2x6SUhOMGIzQndaV1F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHMvYzNSeWFXNW5mU0J6ZEdGeWRDQkpSQ0JoZENCM2FHbGphQ0IwYnlCemRHRnlkQ0IwY21GMlpYSnpZV3d1WEc0Z0tpQkFjR0Z5WVcwZ2V6OXpkSEpwYm1kOUlITjBiM0FnU1VRZ1lYUWdkMmhwWTJnZ2RHOGdaVzVrSUhSeVlYWmxjbk5oYkM1Y2JpQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJR05pSUVOaGJHeGlZV05ySUhSdklHbHVkbTlyWlNCbFlXTm9JRWxFSUhkcGRHZ3VYRzRnS2lCQWNHRnlZVzBnZXlwOUlHRnlaeUJCY21kMWJXVnVkQ0IwYnlCcGJuWnZhMlVnZEdobElHTmhiR3hpWVdOcklIZHBkR2d1WEc0Z0tpQkFjR0Z5WVcwZ2V6OWliMjlzWldGdWZTQnphMmx3Um1seWMzUWdWMmhsZEdobGNpQnZjaUJ1YjNRZ2RHOGdjMnRwY0NCMGFHVWdabWx5YzNRZ2JtOWtaUzVjYmlBcUlFQndZWEpoYlNCN1AySnZiMnhsWVc1OUlITnJhWEJNWVhOMElGZG9aWFJvWlhJZ2IzSWdibTkwSUhSdklITnJhWEFnZEdobElHeGhjM1FnYm05a1pTNWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJSFJ5WVhabGNuTmxVR0Z5Wlc1MFVHRjBhQ2h6ZEdGeWRDd2djM1J2Y0N3Z1kySXNJR0Z5Wnl3Z2MydHBjRVpwY25OMExDQnphMmx3VEdGemRDa2dlMXh1SUNCemRHRnlkQ0E5SUhOMFlYSjBJSHg4SUNjbk8xeHVJQ0J6ZEc5d0lEMGdjM1J2Y0NCOGZDQW5KenRjYmlBZ0lTaHpkR0Z5ZENBaFBUMGdjM1J2Y0NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuZEhKaGRtVnljMlZRWVhKbGJuUlFZWFJvS0M0dUxpazZJRU5oYm01dmRDQjBjbUYyWlhKelpTQm1jbTl0SUdGdVpDQjBieUIwYUdVZ2MyRnRaU0JKUkN3Z1lDVnpZQzRuTENCemRHRnlkQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0IyWVhJZ2RISmhkbVZ5YzJWVmNDQTlJR2x6UVc1alpYTjBiM0pKUkU5bUtITjBiM0FzSUhOMFlYSjBLVHRjYmlBZ0lTaDBjbUYyWlhKelpWVndJSHg4SUdselFXNWpaWE4wYjNKSlJFOW1LSE4wWVhKMExDQnpkRzl3S1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuZEhKaGRtVnljMlZRWVhKbGJuUlFZWFJvS0NWekxDQWxjeXdnTGk0dUtUb2dRMkZ1Ym05MElIUnlZWFpsY25ObElHWnliMjBnZEhkdklFbEVjeUIwYUdGMElHUnZJQ2NnS3lBbmJtOTBJR2hoZG1VZ1lTQndZWEpsYm5RZ2NHRjBhQzRuTENCemRHRnlkQ3dnYzNSdmNDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQXZMeUJVY21GMlpYSnpaU0JtY205dElHQnpkR0Z5ZEdBZ2RHOGdZSE4wYjNCZ0lHOXVaU0JrWlhCMGFDQmhkQ0JoSUhScGJXVXVYRzRnSUhaaGNpQmtaWEIwYUNBOUlEQTdYRzRnSUhaaGNpQjBjbUYyWlhKelpTQTlJSFJ5WVhabGNuTmxWWEFnUHlCblpYUlFZWEpsYm5SSlJDQTZJR2RsZEU1bGVIUkVaWE5qWlc1a1lXNTBTVVE3WEc0Z0lHWnZjaUFvZG1GeUlHbGtJRDBnYzNSaGNuUTdPeUF2S2lCMWJuUnBiQ0JpY21WaGF5QXFMMmxrSUQwZ2RISmhkbVZ5YzJVb2FXUXNJSE4wYjNBcEtTQjdYRzRnSUNBZ2RtRnlJSEpsZER0Y2JpQWdJQ0JwWmlBb0tDRnphMmx3Um1seWMzUWdmSHdnYVdRZ0lUMDlJSE4wWVhKMEtTQW1KaUFvSVhOcmFYQk1ZWE4wSUh4OElHbGtJQ0U5UFNCemRHOXdLU2tnZTF4dUlDQWdJQ0FnY21WMElEMGdZMklvYVdRc0lIUnlZWFpsY25ObFZYQXNJR0Z5WnlrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoeVpYUWdQVDA5SUdaaGJITmxJSHg4SUdsa0lEMDlQU0J6ZEc5d0tTQjdYRzRnSUNBZ0lDQXZMeUJQYm14NUlHSnlaV0ZySUM4dllXWjBaWEl2THlCMmFYTnBkR2x1WnlCZ2MzUnZjR0F1WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnSVNoa1pYQjBhQ3NySUR3Z1RVRllYMVJTUlVWZlJFVlFWRWdwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKM1J5WVhabGNuTmxVR0Z5Wlc1MFVHRjBhQ2dsY3l3Z0pYTXNJQzR1TGlrNklFUmxkR1ZqZEdWa0lHRnVJR2x1Wm1sdWFYUmxJR3h2YjNBZ2QyaHBiR1VnSnlBcklDZDBjbUYyWlhKemFXNW5JSFJvWlNCU1pXRmpkQ0JFVDAwZ1NVUWdkSEpsWlM0Z1ZHaHBjeUJ0WVhrZ1ltVWdaSFZsSUhSdklHMWhiR1p2Y20xbFpDQkpSSE02SUNWekp5d2djM1JoY25Rc0lITjBiM0FzSUdsa0tTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCTllXNWhaMlZ6SUhSb1pTQkpSSE1nWVhOemFXZHVaV1FnZEc4Z1JFOU5JSEpsY0hKbGMyVnVkR0YwYVc5dWN5QnZaaUJTWldGamRDQmpiMjF3YjI1bGJuUnpMaUJVYUdselhHNGdLaUIxYzJWeklHRWdjM0JsWTJsbWFXTWdjMk5vWlcxbElHbHVJRzl5WkdWeUlIUnZJSFJ5WVhabGNuTmxJSFJvWlNCRVQwMGdaV1ptYVdOcFpXNTBiSGtnS0dVdVp5NGdhVzVjYmlBcUlHOXlaR1Z5SUhSdklITnBiWFZzWVhSbElHVjJaVzUwY3lrdVhHNGdLbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeUE5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5dWMzUnlkV04wY3lCaElGSmxZV04wSUhKdmIzUWdTVVJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkJJRkpsWVdOMElISnZiM1FnU1VRdVhHNGdJQ0FxTDF4dUlDQmpjbVZoZEdWU1pXRmpkRkp2YjNSSlJEb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQm5aWFJTWldGamRGSnZiM1JKUkZOMGNtbHVaeWhTWldGamRGSnZiM1JKYm1SbGVDNWpjbVZoZEdWU1pXRmpkRkp2YjNSSmJtUmxlQ2dwS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1YzNSeWRXTjBjeUJoSUZKbFlXTjBJRWxFSUdKNUlHcHZhVzVwYm1jZ1lTQnliMjkwSUVsRUlIZHBkR2dnWVNCdVlXMWxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY205dmRFbEVJRkp2YjNRZ1NVUWdiMllnWVNCd1lYSmxiblFnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibUZ0WlNCQklHTnZiWEJ2Ym1WdWRDZHpJRzVoYldVZ0tHRnpJR1pzWVhSMFpXNWxaQ0JqYUdsc1pISmxiaWt1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdRU0JTWldGamRDQkpSQzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JqY21WaGRHVlNaV0ZqZEVsRU9pQm1kVzVqZEdsdmJpQW9jbTl2ZEVsRUxDQnVZVzFsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSEp2YjNSSlJDQXJJRzVoYldVN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZEhNZ2RHaGxJRVJQVFNCSlJDQnZaaUIwYUdVZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUhSb1lYUWdhWE1nZEdobElISnZiM1FnYjJZZ2RHaGxJSFJ5WldVZ2RHaGhkRnh1SUNBZ0tpQmpiMjUwWVdsdWN5QjBhR1VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJSGRwZEdnZ2RHaGxJSE4xY0hCc2FXVmtJRVJQVFNCSlJDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR2xrSUVSUFRTQkpSQ0J2WmlCaElGSmxZV04wSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UDNOMGNtbHVaMzBnUkU5TklFbEVJRzltSUhSb1pTQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2RHaGhkQ0JwY3lCMGFHVWdjbTl2ZEM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCblpYUlNaV0ZqZEZKdmIzUkpSRVp5YjIxT2IyUmxTVVE2SUdaMWJtTjBhVzl1SUNocFpDa2dlMXh1SUNBZ0lHbG1JQ2hwWkNBbUppQnBaQzVqYUdGeVFYUW9NQ2tnUFQwOUlGTkZVRUZTUVZSUFVpQW1KaUJwWkM1c1pXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ0lDQjJZWElnYVc1a1pYZ2dQU0JwWkM1cGJtUmxlRTltS0ZORlVFRlNRVlJQVWl3Z01TazdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNWtaWGdnUGlBdE1TQS9JR2xrTG5OMVluTjBjaWd3TENCcGJtUmxlQ2tnT2lCcFpEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJ5WVhabGNuTmxjeUIwYUdVZ1NVUWdhR2xsY21GeVkyaDVJR0Z1WkNCcGJuWnZhMlZ6SUhSb1pTQnpkWEJ3YkdsbFpDQmdZMkpnSUc5dUlHRnVlU0JKUkhNZ2RHaGhkRnh1SUNBZ0tpQnphRzkxYkdRZ2QyOTFiR1FnY21WalpXbDJaU0JoSUdCdGIzVnpaVVZ1ZEdWeVlDQnZjaUJnYlc5MWMyVk1aV0YyWldBZ1pYWmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFNVBWRVU2SUVSdlpYTWdibTkwSUdsdWRtOXJaU0IwYUdVZ1kyRnNiR0poWTJzZ2IyNGdkR2hsSUc1bFlYSmxjM1FnWTI5dGJXOXVJR0Z1WTJWemRHOXlJR0psWTJGMWMyVmNiaUFnSUNvZ2JtOTBhR2x1WnlCY0ltVnVkR1Z5WldSY0lpQnZjaUJjSW14bFpuUmNJaUIwYUdGMElHVnNaVzFsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnNaV0YyWlVsRUlFbEVJR0psYVc1bklHeGxablF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmxiblJsY2tsRUlFbEVJR0psYVc1bklHVnVkR1Z5WldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUdOaUlFTmhiR3hpWVdOcklIUnZJR2x1ZG05clpTQnZiaUJsWVdOb0lHVnVkR1Z5WldRdmJHVm1kQ0JKUkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHNxZlNCMWNFRnlaeUJCY21kMWJXVnVkQ0IwYnlCcGJuWnZhMlVnZEdobElHTmhiR3hpWVdOcklIZHBkR2dnYjI0Z2JHVm1kQ0JKUkhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ1pHOTNia0Z5WnlCQmNtZDFiV1Z1ZENCMGJ5QnBiblp2YTJVZ2RHaGxJR05oYkd4aVlXTnJJSGRwZEdnZ2IyNGdaVzUwWlhKbFpDQkpSSE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnZEhKaGRtVnljMlZGYm5SbGNreGxZWFpsT2lCbWRXNWpkR2x2YmlBb2JHVmhkbVZKUkN3Z1pXNTBaWEpKUkN3Z1kySXNJSFZ3UVhKbkxDQmtiM2R1UVhKbktTQjdYRzRnSUNBZ2RtRnlJR0Z1WTJWemRHOXlTVVFnUFNCblpYUkdhWEp6ZEVOdmJXMXZia0Z1WTJWemRHOXlTVVFvYkdWaGRtVkpSQ3dnWlc1MFpYSkpSQ2s3WEc0Z0lDQWdhV1lnS0dGdVkyVnpkRzl5U1VRZ0lUMDlJR3hsWVhabFNVUXBJSHRjYmlBZ0lDQWdJSFJ5WVhabGNuTmxVR0Z5Wlc1MFVHRjBhQ2hzWldGMlpVbEVMQ0JoYm1ObGMzUnZja2xFTENCallpd2dkWEJCY21jc0lHWmhiSE5sTENCMGNuVmxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLR0Z1WTJWemRHOXlTVVFnSVQwOUlHVnVkR1Z5U1VRcElIdGNiaUFnSUNBZ0lIUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDaGhibU5sYzNSdmNrbEVMQ0JsYm5SbGNrbEVMQ0JqWWl3Z1pHOTNia0Z5Wnl3Z2RISjFaU3dnWm1Gc2MyVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVTJsdGRXeGhkR1Z6SUhSb1pTQjBjbUYyWlhKellXd2diMllnWVNCMGQyOHRjR2hoYzJVc0lHTmhjSFIxY21VdlluVmlZbXhsSUdWMlpXNTBJR1JwYzNCaGRHTm9MbHh1SUNBZ0tseHVJQ0FnS2lCT1QxUkZPaUJVYUdseklIUnlZWFpsY25OaGJDQm9ZWEJ3Wlc1eklHOXVJRWxFY3lCM2FYUm9iM1YwSUhSdmRXTm9hVzVuSUhSb1pTQkVUMDB1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFlYSm5aWFJKUkNCSlJDQnZaaUIwYUdVZ2RHRnlaMlYwSUc1dlpHVXVYRzRnSUNBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlHTmlJRU5oYkd4aVlXTnJJSFJ2SUdsdWRtOXJaUzVjYmlBZ0lDb2dRSEJoY21GdElIc3FmU0JoY21jZ1FYSm5kVzFsYm5RZ2RHOGdhVzUyYjJ0bElIUm9aU0JqWVd4c1ltRmpheUIzYVhSb0xseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lIUnlZWFpsY25ObFZIZHZVR2hoYzJVNklHWjFibU4wYVc5dUlDaDBZWEpuWlhSSlJDd2dZMklzSUdGeVp5a2dlMXh1SUNBZ0lHbG1JQ2gwWVhKblpYUkpSQ2tnZTF4dUlDQWdJQ0FnZEhKaGRtVnljMlZRWVhKbGJuUlFZWFJvS0NjbkxDQjBZWEpuWlhSSlJDd2dZMklzSUdGeVp5d2dkSEoxWlN3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnZEhKaGRtVnljMlZRWVhKbGJuUlFZWFJvS0hSaGNtZGxkRWxFTENBbkp5d2dZMklzSUdGeVp5d2dabUZzYzJVc0lIUnlkV1VwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyRnRaU0JoY3lCZ2RISmhkbVZ5YzJWVWQyOVFhR0Z6WldBZ1luVjBJSE5yYVhCeklIUm9aU0JnZEdGeVoyVjBTVVJnTGx4dUlDQWdLaTljYmlBZ2RISmhkbVZ5YzJWVWQyOVFhR0Z6WlZOcmFYQlVZWEpuWlhRNklHWjFibU4wYVc5dUlDaDBZWEpuWlhSSlJDd2dZMklzSUdGeVp5a2dlMXh1SUNBZ0lHbG1JQ2gwWVhKblpYUkpSQ2tnZTF4dUlDQWdJQ0FnZEhKaGRtVnljMlZRWVhKbGJuUlFZWFJvS0NjbkxDQjBZWEpuWlhSSlJDd2dZMklzSUdGeVp5d2dkSEoxWlN3Z2RISjFaU2s3WEc0Z0lDQWdJQ0IwY21GMlpYSnpaVkJoY21WdWRGQmhkR2dvZEdGeVoyVjBTVVFzSUNjbkxDQmpZaXdnWVhKbkxDQjBjblZsTENCMGNuVmxLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSeVlYWmxjbk5sSUdFZ2JtOWtaU0JKUkN3Z1kyRnNiR2x1WnlCMGFHVWdjM1Z3Y0d4cFpXUWdZR05pWUNCbWIzSWdaV0ZqYUNCaGJtTmxjM1J2Y2lCSlJDNGdSbTl5WEc0Z0lDQXFJR1Y0WVcxd2JHVXNJSEJoYzNOcGJtY2dZQzR3TGlSeWIzY3RNQzR4WUNCM2IzVnNaQ0J5WlhOMWJIUWdhVzRnWUdOaVlDQm5aWFIwYVc1bklHTmhiR3hsWkZ4dUlDQWdLaUIzYVhSb0lHQXVNR0FzSUdBdU1DNGtjbTkzTFRCZ0xDQmhibVFnWUM0d0xpUnliM2N0TUM0eFlDNWNiaUFnSUNwY2JpQWdJQ29nVGs5VVJUb2dWR2hwY3lCMGNtRjJaWEp6WVd3Z2FHRndjR1Z1Y3lCdmJpQkpSSE1nZDJsMGFHOTFkQ0IwYjNWamFHbHVaeUIwYUdVZ1JFOU5MbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEdGeVoyVjBTVVFnU1VRZ2IyWWdkR2hsSUhSaGNtZGxkQ0J1YjJSbExseHVJQ0FnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCallpQkRZV3hzWW1GamF5QjBieUJwYm5admEyVXVYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdZWEpuSUVGeVozVnRaVzUwSUhSdklHbHVkbTlyWlNCMGFHVWdZMkZzYkdKaFkyc2dkMmwwYUM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCMGNtRjJaWEp6WlVGdVkyVnpkRzl5Y3pvZ1puVnVZM1JwYjI0Z0tIUmhjbWRsZEVsRUxDQmpZaXdnWVhKbktTQjdYRzRnSUNBZ2RISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tDY25MQ0IwWVhKblpYUkpSQ3dnWTJJc0lHRnlaeXdnZEhKMVpTd2dabUZzYzJVcE8xeHVJQ0I5TEZ4dVhHNGdJR2RsZEVacGNuTjBRMjl0Ylc5dVFXNWpaWE4wYjNKSlJEb2daMlYwUm1seWMzUkRiMjF0YjI1QmJtTmxjM1J2Y2tsRUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmVIQnZjMlZrSUdadmNpQjFibWwwSUhSbGMzUnBibWN1WEc0Z0lDQXFJRUJ3Y21sMllYUmxYRzRnSUNBcUwxeHVJQ0JmWjJWMFRtVjRkRVJsYzJObGJtUmhiblJKUkRvZ1oyVjBUbVY0ZEVSbGMyTmxibVJoYm5SSlJDeGNibHh1SUNCcGMwRnVZMlZ6ZEc5eVNVUlBaam9nYVhOQmJtTmxjM1J2Y2tsRVQyWXNYRzVjYmlBZ1UwVlFRVkpCVkU5U09pQlRSVkJCVWtGVVQxSmNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjenNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEluc3RhbmNlTWFwXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIGBSZWFjdEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsXG4gKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpY1xuICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrXG4gKiB0byBpbnRlcm5hbCBtZXRob2RzLlxuICovXG5cbi8vIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIEVTNjogdmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHtcblxuICAvKipcbiAgICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBgZGVsZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXNcbiAgICogdHJhbnNmb3JtIHRoZXNlIHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhpcyB0cmFuc2Zvcm0gaXMgZnVsbHlcbiAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQuXG4gICAqL1xuICByZW1vdmU6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgfSxcblxuICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2U7XG4gIH0sXG5cbiAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9PSB1bmRlZmluZWQ7XG4gIH0sXG5cbiAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdmFsdWU7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3RhbmNlTWFwOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RJc29tb3JwaGljXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZHJlbicpO1xudmFyIFJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudCcpO1xudmFyIFJlYWN0Q2xhc3MgPSByZXF1aXJlKCcuL1JlYWN0Q2xhc3MnKTtcbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IHJlcXVpcmUoJy4vUmVhY3RET01GYWN0b3JpZXMnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG52YXIgUmVhY3RQcm9wVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzJyk7XG52YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIG9ubHlDaGlsZCA9IHJlcXVpcmUoJy4vb25seUNoaWxkJyk7XG5cbnZhciBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG52YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xudmFyIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudDtcbiAgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5O1xuICBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY2xvbmVFbGVtZW50O1xufVxuXG52YXIgUmVhY3QgPSB7XG5cbiAgLy8gTW9kZXJuXG5cbiAgQ2hpbGRyZW46IHtcbiAgICBtYXA6IFJlYWN0Q2hpbGRyZW4ubWFwLFxuICAgIGZvckVhY2g6IFJlYWN0Q2hpbGRyZW4uZm9yRWFjaCxcbiAgICBjb3VudDogUmVhY3RDaGlsZHJlbi5jb3VudCxcbiAgICB0b0FycmF5OiBSZWFjdENoaWxkcmVuLnRvQXJyYXksXG4gICAgb25seTogb25seUNoaWxkXG4gIH0sXG5cbiAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LFxuICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcyxcbiAgY3JlYXRlQ2xhc3M6IFJlYWN0Q2xhc3MuY3JlYXRlQ2xhc3MsXG4gIGNyZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICAvLyBDdXJyZW50bHkgYSBub29wLiBXaWxsIGJlIHVzZWQgdG8gdmFsaWRhdGUgYW5kIHRyYWNlIG1peGlucy5cbiAgICByZXR1cm4gbWl4aW47XG4gIH0sXG5cbiAgLy8gVGhpcyBsb29rcyBET00gc3BlY2lmaWMgYnV0IHRoZXNlIGFyZSBhY3R1YWxseSBpc29tb3JwaGljIGhlbHBlcnNcbiAgLy8gc2luY2UgdGhleSBhcmUganVzdCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLlxuICBET006IFJlYWN0RE9NRmFjdG9yaWVzLFxuXG4gIHZlcnNpb246IFJlYWN0VmVyc2lvbixcblxuICAvLyBIb29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcgZWxzZS5cbiAgX19zcHJlYWQ6IGFzc2lnblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVsemIyMXZjbkJvYVdNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVsemIyMXZjbkJvYVdOY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVOb2FXeGtjbVZ1SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOb2FXeGtjbVZ1SnlrN1hHNTJZWElnVW1WaFkzUkRiMjF3YjI1bGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMjl0Y0c5dVpXNTBKeWs3WEc1MllYSWdVbVZoWTNSRGJHRnpjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEYkdGemN5Y3BPMXh1ZG1GeUlGSmxZV04wUkU5TlJtRmpkRzl5YVdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVVpoWTNSdmNtbGxjeWNwTzF4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MFZtRnNhV1JoZEc5eUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRY205d1ZIbHdaWE1uS1R0Y2JuWmhjaUJTWldGamRGWmxjbk5wYjI0Z1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZtVnljMmx2YmljcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnYjI1c2VVTm9hV3hrSUQwZ2NtVnhkV2x5WlNnbkxpOXZibXg1UTJocGJHUW5LVHRjYmx4dWRtRnlJR055WldGMFpVVnNaVzFsYm5RZ1BTQlNaV0ZqZEVWc1pXMWxiblF1WTNKbFlYUmxSV3hsYldWdWREdGNiblpoY2lCamNtVmhkR1ZHWVdOMGIzSjVJRDBnVW1WaFkzUkZiR1Z0Wlc1MExtTnlaV0YwWlVaaFkzUnZjbms3WEc1MllYSWdZMnh2Ym1WRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU5zYjI1bFJXeGxiV1Z1ZER0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnWTNKbFlYUmxSV3hsYldWdWRDQTlJRkpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2k1amNtVmhkR1ZGYkdWdFpXNTBPMXh1SUNCamNtVmhkR1ZHWVdOMGIzSjVJRDBnVW1WaFkzUkZiR1Z0Wlc1MFZtRnNhV1JoZEc5eUxtTnlaV0YwWlVaaFkzUnZjbms3WEc0Z0lHTnNiMjVsUld4bGJXVnVkQ0E5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpNWpiRzl1WlVWc1pXMWxiblE3WEc1OVhHNWNiblpoY2lCU1pXRmpkQ0E5SUh0Y2JseHVJQ0F2THlCTmIyUmxjbTVjYmx4dUlDQkRhR2xzWkhKbGJqb2dlMXh1SUNBZ0lHMWhjRG9nVW1WaFkzUkRhR2xzWkhKbGJpNXRZWEFzWEc0Z0lDQWdabTl5UldGamFEb2dVbVZoWTNSRGFHbHNaSEpsYmk1bWIzSkZZV05vTEZ4dUlDQWdJR052ZFc1ME9pQlNaV0ZqZEVOb2FXeGtjbVZ1TG1OdmRXNTBMRnh1SUNBZ0lIUnZRWEp5WVhrNklGSmxZV04wUTJocGJHUnlaVzR1ZEc5QmNuSmhlU3hjYmlBZ0lDQnZibXg1T2lCdmJteDVRMmhwYkdSY2JpQWdmU3hjYmx4dUlDQkRiMjF3YjI1bGJuUTZJRkpsWVdOMFEyOXRjRzl1Wlc1MExGeHVYRzRnSUdOeVpXRjBaVVZzWlcxbGJuUTZJR055WldGMFpVVnNaVzFsYm5Rc1hHNGdJR05zYjI1bFJXeGxiV1Z1ZERvZ1kyeHZibVZGYkdWdFpXNTBMRnh1SUNCcGMxWmhiR2xrUld4bGJXVnVkRG9nVW1WaFkzUkZiR1Z0Wlc1MExtbHpWbUZzYVdSRmJHVnRaVzUwTEZ4dVhHNGdJQzh2SUVOc1lYTnphV05jYmx4dUlDQlFjbTl3Vkhsd1pYTTZJRkpsWVdOMFVISnZjRlI1Y0dWekxGeHVJQ0JqY21WaGRHVkRiR0Z6Y3pvZ1VtVmhZM1JEYkdGemN5NWpjbVZoZEdWRGJHRnpjeXhjYmlBZ1kzSmxZWFJsUm1GamRHOXllVG9nWTNKbFlYUmxSbUZqZEc5eWVTeGNiaUFnWTNKbFlYUmxUV2w0YVc0NklHWjFibU4wYVc5dUlDaHRhWGhwYmlrZ2UxeHVJQ0FnSUM4dklFTjFjbkpsYm5Sc2VTQmhJRzV2YjNBdUlGZHBiR3dnWW1VZ2RYTmxaQ0IwYnlCMllXeHBaR0YwWlNCaGJtUWdkSEpoWTJVZ2JXbDRhVzV6TGx4dUlDQWdJSEpsZEhWeWJpQnRhWGhwYmp0Y2JpQWdmU3hjYmx4dUlDQXZMeUJVYUdseklHeHZiMnR6SUVSUFRTQnpjR1ZqYVdacFl5QmlkWFFnZEdobGMyVWdZWEpsSUdGamRIVmhiR3g1SUdsemIyMXZjbkJvYVdNZ2FHVnNjR1Z5YzF4dUlDQXZMeUJ6YVc1alpTQjBhR1Y1SUdGeVpTQnFkWE4wSUdkbGJtVnlZWFJwYm1jZ1JFOU5JSE4wY21sdVozTXVYRzRnSUVSUFRUb2dVbVZoWTNSRVQwMUdZV04wYjNKcFpYTXNYRzVjYmlBZ2RtVnljMmx2YmpvZ1VtVmhZM1JXWlhKemFXOXVMRnh1WEc0Z0lDOHZJRWh2YjJzZ1ptOXlJRXBUV0NCemNISmxZV1FzSUdSdmJpZDBJSFZ6WlNCMGFHbHpJR1p2Y2lCaGJubDBhR2x1WnlCbGJITmxMbHh1SUNCZlgzTndjbVZoWkRvZ1lYTnphV2R1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOME95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0TWFya3VwQ2hlY2tzdW1cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhZGxlcjMyID0gcmVxdWlyZSgnLi9hZGxlcjMyJyk7XG5cbnZhciBUQUdfRU5EID0gL1xcLz8+LztcblxudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSB7XG4gIENIRUNLU1VNX0FUVFJfTkFNRTogJ2RhdGEtcmVhY3QtY2hlY2tzdW0nLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCBzdHJpbmdcbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nIHdpdGggY2hlY2tzdW0gYXR0cmlidXRlIGF0dGFjaGVkXG4gICAqL1xuICBhZGRDaGVja3N1bVRvTWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgdmFyIGNoZWNrc3VtID0gYWRsZXIzMihtYXJrdXApO1xuXG4gICAgLy8gQWRkIGNoZWNrc3VtIChoYW5kbGUgYm90aCBwYXJlbnQgdGFncyBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MpXG4gICAgcmV0dXJuIG1hcmt1cC5yZXBsYWNlKFRBR19FTkQsICcgJyArIFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FICsgJz1cIicgKyBjaGVja3N1bSArICdcIiQmJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgdG8gdXNlXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJrdXAgaXMgdGhlIHNhbWVcbiAgICovXG4gIGNhblJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG4gICAgZXhpc3RpbmdDaGVja3N1bSA9IGV4aXN0aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1bSwgMTApO1xuICAgIHZhciBtYXJrdXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcbiAgICByZXR1cm4gbWFya3VwQ2hlY2tzdW0gPT09IGV4aXN0aW5nQ2hlY2tzdW07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNYXJrdXBDaGVja3N1bTsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0TW91bnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gcmVxdWlyZSgnLi9SZWFjdERPTUZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9SZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnknKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IHJlcXVpcmUoJy4vUmVhY3RNYXJrdXBDaGVja3N1bScpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBjb250YWluc05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9jb250YWluc05vZGUnKTtcbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZhciBub2RlQ2FjaGUgPSB7fTtcblxudmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcbnZhciBET0NfTk9ERV9UWVBFID0gOTtcbnZhciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblxudmFyIG93bmVyRG9jdW1lbnRDb250ZXh0S2V5ID0gJ19fUmVhY3RNb3VudF9vd25lckRvY3VtZW50JCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblxuLyoqIE1hcHBpbmcgZnJvbSByZWFjdFJvb3RJRCB0byBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UuICovXG52YXIgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCA9IHt9O1xuXG4vKiogTWFwcGluZyBmcm9tIHJlYWN0Um9vdElEIHRvIGBjb250YWluZXJgIG5vZGVzLiAqL1xudmFyIGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8qKiBfX0RFVl9fLW9ubHkgbWFwcGluZyBmcm9tIHJlYWN0Um9vdElEIHRvIHJvb3QgZWxlbWVudHMuICovXG4gIHZhciByb290RWxlbWVudHNCeVJlYWN0Um9vdElEID0ge307XG59XG5cbi8vIFVzZWQgdG8gc3RvcmUgYnJlYWR0aC1maXJzdCBzZWFyY2ggc3RhdGUgaW4gZmluZENvbXBvbmVudFJvb3QuXG52YXIgZmluZENvbXBvbmVudFJvb3RSZXVzYWJsZUFycmF5ID0gW107XG5cbi8qKlxuICogRmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAqIHRoYXQncyBub3QgY29tbW9uIGJldHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLlxuICpcbiAqIEByZXR1cm4ge251bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2ZXJnZVxuICovXG5mdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcxLCBzdHJpbmcyKSB7XG4gIHZhciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5nMi5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7XG4gICAgaWYgKHN0cmluZzEuY2hhckF0KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5ndGggPyAtMSA6IG1pbkxlbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NRG9jdW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluXG4gKiBhIFJlYWN0IGNvbXBvbmVudFxuICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0Um9vdCBJRCwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICBpZiAoIWNvbnRhaW5lcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAgIHJldHVybiBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgbWF5IGNvbnRhaW4gYSBSZWFjdCBjb21wb25lbnQuXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBBIFwicmVhY3RSb290XCIgSUQsIGlmIGEgUmVhY3QgY29tcG9uZW50IGlzIHJlbmRlcmVkLlxuICovXG5mdW5jdGlvbiBnZXRSZWFjdFJvb3RJRChjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHJldHVybiByb290RWxlbWVudCAmJiBSZWFjdE1vdW50LmdldElEKHJvb3RFbGVtZW50KTtcbn1cblxuLyoqXG4gKiBBY2Nlc3Npbmcgbm9kZVtBVFRSX05BTUVdIG9yIGNhbGxpbmcgZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgb24gYSBmb3JtXG4gKiBlbGVtZW50IGNhbiByZXR1cm4gaXRzIGNvbnRyb2wgd2hvc2UgbmFtZSBvciBJRCBlcXVhbHMgQVRUUl9OQU1FLiBBbGxcbiAqIERPTSBub2RlcyBzdXBwb3J0IGBnZXRBdHRyaWJ1dGVOb2RlYCBidXQgdGhpcyBjYW4gYWxzbyBnZXQgY2FsbGVkIG9uXG4gKiBvdGhlciBvYmplY3RzIHNvIGp1c3QgcmV0dXJuICcnIGlmIHdlJ3JlIGdpdmVuIHNvbWV0aGluZyBvdGhlciB0aGFuIGFcbiAqIERPTSBub2RlIChzdWNoIGFzIHdpbmRvdykuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudHxET01XaW5kb3d8RE9NRG9jdW1lbnR8RE9NVGV4dE5vZGV9IG5vZGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IElEIG9mIHRoZSBzdXBwbGllZCBgZG9tTm9kZWAuXG4gKi9cbmZ1bmN0aW9uIGdldElEKG5vZGUpIHtcbiAgdmFyIGlkID0gaW50ZXJuYWxHZXRJRChub2RlKTtcbiAgaWYgKGlkKSB7XG4gICAgaWYgKG5vZGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgIHZhciBjYWNoZWQgPSBub2RlQ2FjaGVbaWRdO1xuICAgICAgaWYgKGNhY2hlZCAhPT0gbm9kZSkge1xuICAgICAgICAhIWlzVmFsaWQoY2FjaGVkLCBpZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RNb3VudDogVHdvIHZhbGlkIGJ1dCB1bmVxdWFsIG5vZGVzIHdpdGggdGhlIHNhbWUgYCVzYDogJXMnLCBBVFRSX05BTUUsIGlkKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgbm9kZUNhY2hlW2lkXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVDYWNoZVtpZF0gPSBub2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpZDtcbn1cblxuZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7XG4gIC8vIElmIG5vZGUgaXMgc29tZXRoaW5nIGxpa2UgYSB3aW5kb3csIGRvY3VtZW50LCBvciB0ZXh0IG5vZGUsIG5vbmUgb2ZcbiAgLy8gd2hpY2ggc3VwcG9ydCBhdHRyaWJ1dGVzIG9yIGEgLmdldEF0dHJpYnV0ZSBtZXRob2QsIGdyYWNlZnVsbHkgcmV0dXJuXG4gIC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSBhdHRyaWJ1dGUgd2VyZSBtaXNzaW5nLlxuICByZXR1cm4gbm9kZSAmJiBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpIHx8ICcnO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIFJlYWN0LXNwZWNpZmljIElEIG9mIHRoZSBnaXZlbiBub2RlLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZSBUaGUgRE9NIG5vZGUgd2hvc2UgSUQgd2lsbCBiZSBzZXQuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIHZhbHVlIG9mIHRoZSBJRCBhdHRyaWJ1dGUuXG4gKi9cbmZ1bmN0aW9uIHNldElEKG5vZGUsIGlkKSB7XG4gIHZhciBvbGRJRCA9IGludGVybmFsR2V0SUQobm9kZSk7XG4gIGlmIChvbGRJRCAhPT0gaWQpIHtcbiAgICBkZWxldGUgbm9kZUNhY2hlW29sZElEXTtcbiAgfVxuICBub2RlLnNldEF0dHJpYnV0ZShBVFRSX05BTUUsIGlkKTtcbiAgbm9kZUNhY2hlW2lkXSA9IG5vZGU7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIG5vZGUgd2l0aCB0aGUgc3VwcGxpZWQgUmVhY3QtZ2VuZXJhdGVkIERPTSBJRC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQSBSZWFjdC1nZW5lcmF0ZWQgRE9NIElELlxuICogQHJldHVybiB7RE9NRWxlbWVudH0gRE9NIG5vZGUgd2l0aCB0aGUgc3VwcGxlZCBgaWRgLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldE5vZGUoaWQpIHtcbiAgaWYgKCFub2RlQ2FjaGUuaGFzT3duUHJvcGVydHkoaWQpIHx8ICFpc1ZhbGlkKG5vZGVDYWNoZVtpZF0sIGlkKSkge1xuICAgIG5vZGVDYWNoZVtpZF0gPSBSZWFjdE1vdW50LmZpbmRSZWFjdE5vZGVCeUlEKGlkKTtcbiAgfVxuICByZXR1cm4gbm9kZUNhY2hlW2lkXTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB3aXRoIHRoZSBzdXBwbGllZCBwdWJsaWMgUmVhY3QgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHsqfSBpbnN0YW5jZSBBIHB1YmxpYyBSZWFjdCBpbnN0YW5jZS5cbiAqIEByZXR1cm4gez9ET01FbGVtZW50fSBET00gbm9kZSB3aXRoIHRoZSBzdXBwbGVkIGBpZGAuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0YW5jZSkge1xuICB2YXIgaWQgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0YW5jZSkuX3Jvb3ROb2RlSUQ7XG4gIGlmIChSZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnkuaXNOdWxsQ29tcG9uZW50SUQoaWQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFub2RlQ2FjaGUuaGFzT3duUHJvcGVydHkoaWQpIHx8ICFpc1ZhbGlkKG5vZGVDYWNoZVtpZF0sIGlkKSkge1xuICAgIG5vZGVDYWNoZVtpZF0gPSBSZWFjdE1vdW50LmZpbmRSZWFjdE5vZGVCeUlEKGlkKTtcbiAgfVxuICByZXR1cm4gbm9kZUNhY2hlW2lkXTtcbn1cblxuLyoqXG4gKiBBIG5vZGUgaXMgXCJ2YWxpZFwiIGlmIGl0IGlzIGNvbnRhaW5lZCBieSBhIGN1cnJlbnRseSBtb3VudGVkIGNvbnRhaW5lci5cbiAqXG4gKiBUaGlzIG1lYW5zIHRoYXQgdGhlIG5vZGUgZG9lcyBub3QgaGF2ZSB0byBiZSBjb250YWluZWQgYnkgYSBkb2N1bWVudCBpblxuICogb3JkZXIgdG8gYmUgY29uc2lkZXJlZCB2YWxpZC5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIGV4cGVjdGVkIElEIG9mIHRoZSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgbm9kZSBpcyBjb250YWluZWQgYnkgYSBtb3VudGVkIGNvbnRhaW5lci5cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZChub2RlLCBpZCkge1xuICBpZiAobm9kZSkge1xuICAgICEoaW50ZXJuYWxHZXRJRChub2RlKSA9PT0gaWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0TW91bnQ6IFVuZXhwZWN0ZWQgbW9kaWZpY2F0aW9uIG9mIGAlc2AnLCBBVFRSX05BTUUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBjb250YWluZXIgPSBSZWFjdE1vdW50LmZpbmRSZWFjdENvbnRhaW5lckZvcklEKGlkKTtcbiAgICBpZiAoY29udGFpbmVyICYmIGNvbnRhaW5zTm9kZShjb250YWluZXIsIG5vZGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2F1c2VzIHRoZSBjYWNoZSB0byBmb3JnZXQgYWJvdXQgb25lIFJlYWN0LXNwZWNpZmljIElELlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgSUQgdG8gZm9yZ2V0LlxuICovXG5mdW5jdGlvbiBwdXJnZUlEKGlkKSB7XG4gIGRlbGV0ZSBub2RlQ2FjaGVbaWRdO1xufVxuXG52YXIgZGVlcGVzdE5vZGVTb0ZhciA9IG51bGw7XG5mdW5jdGlvbiBmaW5kRGVlcGVzdENhY2hlZEFuY2VzdG9ySW1wbChhbmNlc3RvcklEKSB7XG4gIHZhciBhbmNlc3RvciA9IG5vZGVDYWNoZVthbmNlc3RvcklEXTtcbiAgaWYgKGFuY2VzdG9yICYmIGlzVmFsaWQoYW5jZXN0b3IsIGFuY2VzdG9ySUQpKSB7XG4gICAgZGVlcGVzdE5vZGVTb0ZhciA9IGFuY2VzdG9yO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgbm9kZSBpc24ndCBwb3B1bGF0ZWQgaW4gdGhlIGNhY2hlLCBzbyBwcmVzdW1hYmx5IG5vbmUgb2YgaXRzXG4gICAgLy8gZGVzY2VuZGFudHMgYXJlLiBCcmVhayBvdXQgb2YgdGhlIGxvb3AuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkZWVwZXN0IGNhY2hlZCBub2RlIHdob3NlIElEIGlzIGEgcHJlZml4IG9mIGB0YXJnZXRJRGAuXG4gKi9cbmZ1bmN0aW9uIGZpbmREZWVwZXN0Q2FjaGVkQW5jZXN0b3IodGFyZ2V0SUQpIHtcbiAgZGVlcGVzdE5vZGVTb0ZhciA9IG51bGw7XG4gIFJlYWN0SW5zdGFuY2VIYW5kbGVzLnRyYXZlcnNlQW5jZXN0b3JzKHRhcmdldElELCBmaW5kRGVlcGVzdENhY2hlZEFuY2VzdG9ySW1wbCk7XG5cbiAgdmFyIGZvdW5kTm9kZSA9IGRlZXBlc3ROb2RlU29GYXI7XG4gIGRlZXBlc3ROb2RlU29GYXIgPSBudWxsO1xuICByZXR1cm4gZm91bmROb2RlO1xufVxuXG4vKipcbiAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIHJvb3RJRCwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgaWYgKFJlYWN0RE9NRmVhdHVyZUZsYWdzLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICBjb250ZXh0ID0gYXNzaWduKHt9LCBjb250ZXh0KTtcbiAgICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG4gICAgICBjb250ZXh0W293bmVyRG9jdW1lbnRDb250ZXh0S2V5XSA9IGNvbnRhaW5lcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dFtvd25lckRvY3VtZW50Q29udGV4dEtleV0gPSBjb250YWluZXIub3duZXJEb2N1bWVudDtcbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoY29udGV4dCA9PT0gZW1wdHlPYmplY3QpIHtcbiAgICAgIGNvbnRleHQgPSB7fTtcbiAgICB9XG4gICAgdmFyIHRhZyA9IGNvbnRhaW5lci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8obnVsbCwgdGFnLCBudWxsKTtcbiAgfVxuICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCByb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgY29tcG9uZW50SW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXIgPSBjb21wb25lbnRJbnN0YW5jZTtcbiAgUmVhY3RNb3VudC5fbW91bnRJbWFnZUludG9Ob2RlKG1hcmt1cCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIEJhdGNoZWQgbW91bnQuXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIGJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCByb290SUQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuICAvKiBmb3JjZUhUTUwgKi9zaG91bGRSZXVzZU1hcmt1cCk7XG4gIHRyYW5zYWN0aW9uLnBlcmZvcm0obW91bnRDb21wb25lbnRJbnRvTm9kZSwgbnVsbCwgY29tcG9uZW50SW5zdGFuY2UsIHJvb3RJRCwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBVbm1vdW50cyBhIGNvbXBvbmVudCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW5zdGFuY2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLlxuICogQGZpbmFsXG4gKiBAaW50ZXJuYWxcbiAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGluc3RhbmNlLCBjb250YWluZXIpIHtcbiAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQoaW5zdGFuY2UpO1xuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50O1xuICB9XG5cbiAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlpbmctYS1ub2RlXG4gIHdoaWxlIChjb250YWluZXIubGFzdENoaWxkKSB7XG4gICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuICB9XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXNcbiAqIG5vdCBhIFJlYWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLFxuICogYHVubW91bnRDb21wb25lbnRBdE5vZGVgLCBldGMuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3YXNcbiAqIHJlbmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hpbGQobm9kZSkge1xuICB2YXIgcmVhY3RSb290SUQgPSBnZXRSZWFjdFJvb3RJRChub2RlKTtcbiAgcmV0dXJuIHJlYWN0Um9vdElEID8gcmVhY3RSb290SUQgIT09IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChyZWFjdFJvb3RJRCkgOiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCAoZGVlcGVzdCkgYW5jZXN0b3Igb2YgYSBub2RlIHdoaWNoIGlzIHJlbmRlcmVkIGJ5IHRoaXMgY29weVxuICogb2YgUmVhY3QuXG4gKi9cbmZ1bmN0aW9uIGZpbmRGaXJzdFJlYWN0RE9NSW1wbChub2RlKSB7XG4gIC8vIFRoaXMgbm9kZSBtaWdodCBiZSBmcm9tIGFub3RoZXIgUmVhY3QgaW5zdGFuY2UsIHNvIHdlIG1ha2Ugc3VyZSBub3QgdG9cbiAgLy8gZXhhbWluZSB0aGUgbm9kZSBjYWNoZSBoZXJlXG4gIGZvciAoOyBub2RlICYmIG5vZGUucGFyZW50Tm9kZSAhPT0gbm9kZTsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkge1xuICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAvLyBOb3QgYSBET01FbGVtZW50LCB0aGVyZWZvcmUgbm90IGEgUmVhY3QgY29tcG9uZW50XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIG5vZGVJRCA9IGludGVybmFsR2V0SUQobm9kZSk7XG4gICAgaWYgKCFub2RlSUQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YXIgcmVhY3RSb290SUQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQobm9kZUlEKTtcblxuICAgIC8vIElmIGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEIGNvbnRhaW5zIHRoZSBjb250YWluZXIgd2UgZmluZCBieSBjcmF3bGluZyB1cFxuICAgIC8vIHRoZSB0cmVlLCB3ZSBrbm93IHRoYXQgdGhpcyBpbnN0YW5jZSBvZiBSZWFjdCByZW5kZXJlZCB0aGUgbm9kZS5cbiAgICAvLyBuYi4gaXNWYWxpZCdzIHN0cmF0ZWd5ICh3aXRoIGNvbnRhaW5zTm9kZSkgZG9lcyBub3Qgd29yayBiZWNhdXNlIHJlbmRlclxuICAgIC8vIHRyZWVzIG1heSBiZSBuZXN0ZWQgYW5kIHdlIGRvbid0IHdhbnQgYSBmYWxzZSBwb3NpdGl2ZSBpbiB0aGF0IGNhc2UuXG4gICAgdmFyIGN1cnJlbnQgPSBub2RlO1xuICAgIHZhciBsYXN0SUQ7XG4gICAgZG8ge1xuICAgICAgbGFzdElEID0gaW50ZXJuYWxHZXRJRChjdXJyZW50KTtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudE5vZGU7XG4gICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgIC8vIFRoZSBwYXNzZWQtaW4gbm9kZSBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSBjb250YWluZXIgaXQgd2FzXG4gICAgICAgIC8vIG9yaWdpbmFsbHkgcmVuZGVyZWQgaW50by5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSB3aGlsZSAobGFzdElEICE9PSByZWFjdFJvb3RJRCk7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gY29udGFpbmVyc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogVGVtcG9yYXJ5ICg/KSBoYWNrIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2ZWwgcGVuZGluZyB1cGRhdGVzIG9uXG4gKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG4gKiBoZXJlLlxuICovXG52YXIgVG9wTGV2ZWxXcmFwcGVyID0gZnVuY3Rpb24gKCkge307XG5Ub3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRvcExldmVsV3JhcHBlci5kaXNwbGF5TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXInO1xufVxuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMucHJvcHMgaXMgYWN0dWFsbHkgYSBSZWFjdEVsZW1lbnRcbiAgcmV0dXJuIHRoaXMucHJvcHM7XG59O1xuXG4vKipcbiAqIE1vdW50aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBhIFJlYWN0IGNvbXBvbmVudCBieSBjcmVhdGluZyBpdHNcbiAqIHJlcHJlc2VudGF0aXZlIERPTSBlbGVtZW50cyBhbmQgaW5zZXJ0aW5nIHRoZW0gaW50byBhIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICogQW55IHByaW9yIGNvbnRlbnQgaW5zaWRlIGBjb250YWluZXJgIGlzIGRlc3Ryb3llZCBpbiB0aGUgcHJvY2Vzcy5cbiAqXG4gKiAgIFJlYWN0TW91bnQucmVuZGVyKFxuICogICAgIGNvbXBvbmVudCxcbiAqICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJylcbiAqICAgKTtcbiAqXG4gKiAgIDxkaXYgaWQ9XCJjb250YWluZXJcIj4gICAgICAgICAgICAgICAgICAgPC0tIFN1cHBsaWVkIGBjb250YWluZXJgLlxuICogICAgIDxkaXYgZGF0YS1yZWFjdGlkPVwiLjNcIj4gICAgICAgICAgICAgIDwtLSBSZW5kZXJlZCByZWFjdFJvb3Qgb2YgUmVhY3RcbiAqICAgICAgIC8vIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5cbiAqICAgICA8L2Rpdj5cbiAqICAgPC9kaXY+XG4gKlxuICogSW5zaWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmlyc3QgZWxlbWVudCByZW5kZXJlZCBpcyB0aGUgXCJyZWFjdFJvb3RcIi5cbiAqL1xudmFyIFJlYWN0TW91bnQgPSB7XG5cbiAgVG9wTGV2ZWxXcmFwcGVyOiBUb3BMZXZlbFdyYXBwZXIsXG5cbiAgLyoqIEV4cG9zZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyAqKi9cbiAgX2luc3RhbmNlc0J5UmVhY3RSb290SUQ6IGluc3RhbmNlc0J5UmVhY3RSb290SUQsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBob29rIHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVuZGVyaW5nIFJlYWN0IGNvbXBvbmVudHMgd2hpbGVcbiAgICogZW5zdXJpbmcgdGhhdCB0aGUgYXBwYXJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIGl0cyBgY29udGFpbmVyYCBkb2VzIG5vdFxuICAgKiBjaGFuZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIFRoZSBgY29udGFpbmVyYCBiZWluZyByZW5kZXJlZCBpbnRvLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJDYWxsYmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgdG8gZG8gdGhlIHJlbmRlci5cbiAgICovXG4gIHNjcm9sbE1vbml0b3I6IGZ1bmN0aW9uIChjb250YWluZXIsIHJlbmRlckNhbGxiYWNrKSB7XG4gICAgcmVuZGVyQ2FsbGJhY2soKTtcbiAgfSxcblxuICAvKipcbiAgICogVGFrZSBhIGNvbXBvbmVudCB0aGF0J3MgYWxyZWFkeSBtb3VudGVkIGludG8gdGhlIERPTSBhbmQgcmVwbGFjZSBpdHMgcHJvcHNcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gcHJldkNvbXBvbmVudCBjb21wb25lbnQgaW5zdGFuY2UgYWxyZWFkeSBpbiB0aGUgRE9NXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICovXG4gIF91cGRhdGVSb290Q29tcG9uZW50OiBmdW5jdGlvbiAocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICBSZWFjdE1vdW50LnNjcm9sbE1vbml0b3IoY29udGFpbmVyLCBmdW5jdGlvbiAoKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVFbGVtZW50SW50ZXJuYWwocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQpO1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFJlY29yZCB0aGUgcm9vdCBlbGVtZW50IGluIGNhc2UgaXQgbGF0ZXIgZ2V0cyB0cmFuc3BsYW50ZWQuXG4gICAgICByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW2dldFJlYWN0Um9vdElEKGNvbnRhaW5lcildID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXZDb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgY29tcG9uZW50IGludG8gdGhlIGluc3RhbmNlIG1hcCBhbmQgc3RhcnRzIHNjcm9sbCB2YWx1ZVxuICAgKiBtb25pdG9yaW5nXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IG5leHRDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRlclxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9cbiAgICogQHJldHVybiB7c3RyaW5nfSByZWFjdFJvb3QgSUQgcHJlZml4XG4gICAqL1xuICBfcmVnaXN0ZXJDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0Q29tcG9uZW50LCBjb250YWluZXIpIHtcbiAgICAhKGNvbnRhaW5lciAmJiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJDb21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7XG5cbiAgICB2YXIgcmVhY3RSb290SUQgPSBSZWFjdE1vdW50LnJlZ2lzdGVyQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF0gPSBuZXh0Q29tcG9uZW50O1xuICAgIHJldHVybiByZWFjdFJvb3RJRDtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVyIGEgbmV3IGNvbXBvbmVudCBpbnRvIHRoZSBET00uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBlbGVtZW50IHRvIHJlbmRlclxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9cbiAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBpZiB3ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlvblxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gbmV4dENvbXBvbmVudFxuICAgKi9cbiAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICdfcmVuZGVyTmV3Um9vdENvbXBvbmVudCgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQgdXBkYXRlcyBmcm9tICcgKyAncmVuZGVyIGlzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRyaWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50LCBudWxsKTtcbiAgICB2YXIgcmVhY3RSb290SUQgPSBSZWFjdE1vdW50Ll9yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyKTtcblxuICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBidXQgYW55IHVwZGF0ZXMgdGhhdCBoYXBwZW4gZHVyaW5nXG4gICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRXaWxsTW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZFxuICAgIC8vIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS5cblxuICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50SW5zdGFuY2UsIHJlYWN0Um9vdElELCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBSZWNvcmQgdGhlIHJvb3QgZWxlbWVudCBpbiBjYXNlIGl0IGxhdGVyIGdldHMgdHJhbnNwbGFudGVkLlxuICAgICAgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF0gPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAgICpcbiAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG4gICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhpcyByZW5kZXIgdHJlZS5cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJgLlxuICAgKi9cbiAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgIShwYXJlbnRDb21wb25lbnQgIT0gbnVsbCAmJiBwYXJlbnRDb21wb25lbnQuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwYXJlbnRDb21wb25lbnQgbXVzdCBiZSBhIHZhbGlkIFJlYWN0IENvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobmV4dEVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGFuIGVsZW1lbnQgc3RyaW5nLCBtYWtlIHN1cmUgdG8gaW5zdGFudGlhdGUgJyArICdpdCBieSBwYXNzaW5nIGl0IHRvIFJlYWN0LmNyZWF0ZUVsZW1lbnQuJyA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY29tcG9uZW50IGNsYXNzLCBtYWtlIHN1cmUgdG8gaW5zdGFudGlhdGUgJyArICdpdCBieSBwYXNzaW5nIGl0IHRvIFJlYWN0LmNyZWF0ZUVsZW1lbnQuJyA6XG4gICAgLy8gQ2hlY2sgaWYgaXQgcXVhY2tzIGxpa2UgYW4gZWxlbWVudFxuICAgIG5leHRFbGVtZW50ICE9IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2NvcGllcyBvZiBSZWFjdC4nIDogJycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXIgfHwgIWNvbnRhaW5lci50YWdOYW1lIHx8IGNvbnRhaW5lci50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdCT0RZJywgJ3JlbmRlcigpOiBSZW5kZXJpbmcgY29tcG9uZW50cyBkaXJlY3RseSBpbnRvIGRvY3VtZW50LmJvZHkgaXMgJyArICdkaXNjb3VyYWdlZCwgc2luY2UgaXRzIGNoaWxkcmVuIGFyZSBvZnRlbiBtYW5pcHVsYXRlZCBieSB0aGlyZC1wYXJ0eSAnICsgJ3NjcmlwdHMgYW5kIGJyb3dzZXIgZXh0ZW5zaW9ucy4gVGhpcyBtYXkgbGVhZCB0byBzdWJ0bGUgJyArICdyZWNvbmNpbGlhdGlvbiBpc3N1ZXMuIFRyeSByZW5kZXJpbmcgaW50byBhIGNvbnRhaW5lciBlbGVtZW50IGNyZWF0ZWQgJyArICdmb3IgeW91ciBhcHAuJykgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgbmV4dFdyYXBwZWRFbGVtZW50ID0gbmV3IFJlYWN0RWxlbWVudChUb3BMZXZlbFdyYXBwZXIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG5leHRFbGVtZW50KTtcblxuICAgIHZhciBwcmV2Q29tcG9uZW50ID0gaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFtnZXRSZWFjdFJvb3RJRChjb250YWluZXIpXTtcblxuICAgIGlmIChwcmV2Q29tcG9uZW50KSB7XG4gICAgICB2YXIgcHJldldyYXBwZWRFbGVtZW50ID0gcHJldkNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQ7XG4gICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2V3JhcHBlZEVsZW1lbnQucHJvcHM7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuICAgICAgICB2YXIgcHVibGljSW5zdCA9IHByZXZDb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgICAgIHZhciB1cGRhdGVkQ2FsbGJhY2sgPSBjYWxsYmFjayAmJiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY2FsbGJhY2suY2FsbChwdWJsaWNJbnN0KTtcbiAgICAgICAgfTtcbiAgICAgICAgUmVhY3RNb3VudC5fdXBkYXRlUm9vdENvbXBvbmVudChwcmV2Q29tcG9uZW50LCBuZXh0V3JhcHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgdXBkYXRlZENhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHB1YmxpY0luc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1lbnQgJiYgISFpbnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpO1xuICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkLCAncmVuZGVyKC4uLik6IFJlcGxhY2luZyBSZWFjdC1yZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbmV3IHJvb3QgJyArICdjb21wb25lbnQuIElmIHlvdSBpbnRlbmRlZCB0byB1cGRhdGUgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgJyArICd5b3Ugc2hvdWxkIGluc3RlYWQgaGF2ZSB0aGUgZXhpc3RpbmcgY2hpbGRyZW4gdXBkYXRlIHRoZWlyIHN0YXRlICcgKyAnYW5kIHJlbmRlciB0aGUgbmV3IGNvbXBvbmVudHMgaW5zdGVhZCBvZiBjYWxsaW5nIFJlYWN0RE9NLnJlbmRlci4nKSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCFjb250YWluZXJIYXNSZWFjdE1hcmt1cCB8fCByZWFjdFJvb3RFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgIHZhciByb290RWxlbWVudFNpYmxpbmcgPSByZWFjdFJvb3RFbGVtZW50O1xuICAgICAgICB3aGlsZSAocm9vdEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgaWYgKGludGVybmFsR2V0SUQocm9vdEVsZW1lbnRTaWJsaW5nKSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5vZGUgaGFzIG1hcmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVsYXRlZCBub2RlcyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAnd2hpdGUtc3BhY2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcm9vdEVsZW1lbnRTaWJsaW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZFJldXNlTWFya3VwID0gY29udGFpbmVySGFzUmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkO1xuICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29tcG9uZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgcGFyZW50Q29tcG9uZW50ICE9IG51bGwgPyBwYXJlbnRDb21wb25lbnQuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZS5fcHJvY2Vzc0NoaWxkQ29udGV4dChwYXJlbnRDb21wb25lbnQuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZS5fY29udGV4dCkgOiBlbXB0eU9iamVjdCkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAgICpcbiAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG4gICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY29udGFpbmVyIG5vZGUgaW50byB3aGljaCBSZWFjdCBjb21wb25lbnRzIHdpbGwgYmUgcmVuZGVyZWQuXG4gICAqIFRoaXMgYWxzbyBjcmVhdGVzIHRoZSBcInJlYWN0Um9vdFwiIElEIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgZWxlbWVudFxuICAgKiByZW5kZXJlZCB3aXRoaW4uXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGFzIGEgY29udGFpbmVyLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBcInJlYWN0Um9vdFwiIElEIG9mIGVsZW1lbnRzIHJlbmRlcmVkIHdpdGhpbi5cbiAgICovXG4gIHJlZ2lzdGVyQ29udGFpbmVyOiBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKTtcbiAgICBpZiAocmVhY3RSb290SUQpIHtcbiAgICAgIC8vIElmIG9uZSBleGlzdHMsIG1ha2Ugc3VyZSBpdCBpcyBhIHZhbGlkIFwicmVhY3RSb290XCIgSUQuXG4gICAgICByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChyZWFjdFJvb3RJRCk7XG4gICAgfVxuICAgIGlmICghcmVhY3RSb290SUQpIHtcbiAgICAgIC8vIE5vIHZhbGlkIFwicmVhY3RSb290XCIgSUQgZm91bmQsIGNyZWF0ZSBvbmUuXG4gICAgICByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0Um9vdElEKCk7XG4gICAgfVxuICAgIGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSA9IGNvbnRhaW5lcjtcbiAgICByZXR1cm4gcmVhY3RSb290SUQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVubW91bnRzIGFuZCBkZXN0cm95cyB0aGUgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGluIHRoZSBgY29udGFpbmVyYC5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgY29udGFpbmluZyBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhIGNvbXBvbmVudCB3YXMgZm91bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG4gICAqICAgICAgICAgICAgICAgICAgIGBjb250YWluZXJgXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3BlYWtpbmcsIHVubW91bnRpbmcgd29uJ3QgY2F1c2UgYVxuICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3QgZXhwZWN0IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQgdXBkYXRlcyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRyaWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG5cbiAgICAhKGNvbnRhaW5lciAmJiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKTtcbiAgICB2YXIgY29tcG9uZW50ID0gaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhXG4gICAgICAvLyByb290IG5vZGUuXG4gICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY29udGFpbmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS5cbiAgICAgIHZhciBjb250YWluZXJJRCA9IGludGVybmFsR2V0SUQoY29udGFpbmVyKTtcbiAgICAgIHZhciBpc0NvbnRhaW5lclJlYWN0Um9vdCA9IGNvbnRhaW5lcklEICYmIGNvbnRhaW5lcklEID09PSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQoY29udGFpbmVySUQpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFRoZSBub2RlIHlvdVxcJ3JlIGF0dGVtcHRpbmcgdG8gdW5tb3VudCAnICsgJ3dhcyByZW5kZXJlZCBieSBSZWFjdCBhbmQgaXMgbm90IGEgdG9wLWxldmVsIGNvbnRhaW5lci4gJXMnLCBpc0NvbnRhaW5lclJlYWN0Um9vdCA/ICdZb3UgbWF5IGhhdmUgYWNjaWRlbnRhbGx5IHBhc3NlZCBpbiBhIFJlYWN0IHJvb3Qgbm9kZSBpbnN0ZWFkICcgKyAnb2YgaXRzIGNvbnRhaW5lci4nIDogJ0luc3RlYWQsIGhhdmUgdGhlIHBhcmVudCBjb21wb25lbnQgdXBkYXRlIGl0cyBzdGF0ZSBhbmQgJyArICdyZXJlbmRlciBpbiBvcmRlciB0byByZW1vdmUgdGhpcyBjb21wb25lbnQuJykgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwgY29tcG9uZW50LCBjb250YWluZXIpO1xuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICBkZWxldGUgY29udGFpbmVyc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBkZWxldGUgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgY29udGFpbnMgUmVhY3QgY29tcG9uZW50IHRvIHdoaWNoIHRoZVxuICAgKiBzdXBwbGllZCBET00gYGlkYCBiZWxvbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIElEIG9mIGFuIGVsZW1lbnQgcmVuZGVyZWQgYnkgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4gez9ET01FbGVtZW50fSBET00gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBgaWRgLlxuICAgKi9cbiAgZmluZFJlYWN0Q29udGFpbmVyRm9ySUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChpZCk7XG4gICAgdmFyIGNvbnRhaW5lciA9IGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcm9vdEVsZW1lbnQgPSByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICAgIGlmIChyb290RWxlbWVudCAmJiByb290RWxlbWVudC5wYXJlbnROb2RlICE9PSBjb250YWluZXIpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoXG4gICAgICAgIC8vIENhbGwgaW50ZXJuYWxHZXRJRCBoZXJlIGJlY2F1c2UgZ2V0SUQgY2FsbHMgaXNWYWxpZCB3aGljaCBjYWxsc1xuICAgICAgICAvLyBmaW5kUmVhY3RDb250YWluZXJGb3JJRCAodGhpcyBmdW5jdGlvbikuXG4gICAgICAgIGludGVybmFsR2V0SUQocm9vdEVsZW1lbnQpID09PSByZWFjdFJvb3RJRCwgJ1JlYWN0TW91bnQ6IFJvb3QgZWxlbWVudCBJRCBkaWZmZXJlZCBmcm9tIHJlYWN0Um9vdElELicpIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIgY29udGFpbmVyQ2hpbGQgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgICAgaWYgKGNvbnRhaW5lckNoaWxkICYmIHJlYWN0Um9vdElEID09PSBpbnRlcm5hbEdldElEKGNvbnRhaW5lckNoaWxkKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBjb250YWluZXIgaGFzIGEgbmV3IGNoaWxkIHdpdGggdGhlIHNhbWUgSUQgYXMgdGhlIG9sZFxuICAgICAgICAgIC8vIHJvb3QgZWxlbWVudCwgdGhlbiByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSBpc1xuICAgICAgICAgIC8vIGp1c3Qgc3RhbGUgYW5kIG5lZWRzIHRvIGJlIHVwZGF0ZWQuIFRoZSBjYXNlIHRoYXQgZGVzZXJ2ZXMgYVxuICAgICAgICAgIC8vIHdhcm5pbmcgaXMgd2hlbiB0aGUgY29udGFpbmVyIGlzIGVtcHR5LlxuICAgICAgICAgIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gY29udGFpbmVyQ2hpbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdE1vdW50OiBSb290IGVsZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGl0cyBvcmlnaW5hbCAnICsgJ2NvbnRhaW5lci4gTmV3IGNvbnRhaW5lcjogJXMnLCByb290RWxlbWVudC5wYXJlbnROb2RlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZXI7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGVsZW1lbnQgcmVuZGVyZWQgYnkgUmVhY3Qgd2l0aCB0aGUgc3VwcGxpZWQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiBhIERPTSBub2RlIGluIHRoZSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IFJvb3QgRE9NIG5vZGUgb2YgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICovXG4gIGZpbmRSZWFjdE5vZGVCeUlEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgcmVhY3RSb290ID0gUmVhY3RNb3VudC5maW5kUmVhY3RDb250YWluZXJGb3JJRChpZCk7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuZmluZENvbXBvbmVudFJvb3QocmVhY3RSb290LCBpZCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB1cCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBzdXBwbGllZCBub2RlIHRvIGZpbmQgYSBub2RlIHRoYXQgaXMgYVxuICAgKiBET00gcmVwcmVzZW50YXRpb24gb2YgYSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgYnkgdGhpcyBjb3B5IG9mIFJlYWN0LlxuICAgKlxuICAgKiBAcGFyYW0geyp9IG5vZGVcbiAgICogQHJldHVybiB7P0RPTUV2ZW50VGFyZ2V0fVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldEZpcnN0UmVhY3RET006IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGZpbmRGaXJzdFJlYWN0RE9NSW1wbChub2RlKTtcbiAgfSxcblxuICAvKipcbiAgICogRmluZHMgYSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIGB0YXJnZXRJRGAgaW5zaWRlIG9mIHRoZSBzdXBwbGllZFxuICAgKiBgYW5jZXN0b3JOb2RlYC4gIEV4cGxvaXRzIHRoZSBJRCBuYW1pbmcgc2NoZW1lIHRvIHBlcmZvcm0gdGhlIHNlYXJjaFxuICAgKiBxdWlja2x5LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBhbmNlc3Rvck5vZGUgU2VhcmNoIGZyb20gdGhpcyByb290LlxuICAgKiBAcGFyYXJtIHtzdHJpbmd9IHRhcmdldElEIElEIG9mIHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7RE9NRXZlbnRUYXJnZXR9IERPTSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIGB0YXJnZXRJRGAuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZmluZENvbXBvbmVudFJvb3Q6IGZ1bmN0aW9uIChhbmNlc3Rvck5vZGUsIHRhcmdldElEKSB7XG4gICAgdmFyIGZpcnN0Q2hpbGRyZW4gPSBmaW5kQ29tcG9uZW50Um9vdFJldXNhYmxlQXJyYXk7XG4gICAgdmFyIGNoaWxkSW5kZXggPSAwO1xuXG4gICAgdmFyIGRlZXBlc3RBbmNlc3RvciA9IGZpbmREZWVwZXN0Q2FjaGVkQW5jZXN0b3IodGFyZ2V0SUQpIHx8IGFuY2VzdG9yTm9kZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgb24gdGhlIG5leHQgbGluZTsgZ2l2ZSBhbiBlYXJseSB3YXJuaW5nXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkZWVwZXN0QW5jZXN0b3IgIT0gbnVsbCwgJ1JlYWN0IGNhblxcJ3QgZmluZCB0aGUgcm9vdCBjb21wb25lbnQgbm9kZSBmb3IgZGF0YS1yZWFjdGlkIHZhbHVlICcgKyAnYCVzYC4gSWYgeW91XFwncmUgc2VlaW5nIHRoaXMgbWVzc2FnZSwgaXQgcHJvYmFibHkgbWVhbnMgdGhhdCAnICsgJ3lvdVxcJ3ZlIGxvYWRlZCB0d28gY29waWVzIG9mIFJlYWN0IG9uIHRoZSBwYWdlLiBBdCB0aGlzIHRpbWUsIG9ubHkgJyArICdhIHNpbmdsZSBjb3B5IG9mIFJlYWN0IGNhbiBiZSBsb2FkZWQgYXQgYSB0aW1lLicsIHRhcmdldElEKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmaXJzdENoaWxkcmVuWzBdID0gZGVlcGVzdEFuY2VzdG9yLmZpcnN0Q2hpbGQ7XG4gICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSAxO1xuXG4gICAgd2hpbGUgKGNoaWxkSW5kZXggPCBmaXJzdENoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdmFyIGNoaWxkID0gZmlyc3RDaGlsZHJlbltjaGlsZEluZGV4KytdO1xuICAgICAgdmFyIHRhcmdldENoaWxkO1xuXG4gICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkSUQgPSBSZWFjdE1vdW50LmdldElEKGNoaWxkKTtcbiAgICAgICAgaWYgKGNoaWxkSUQpIHtcbiAgICAgICAgICAvLyBFdmVuIGlmIHdlIGZpbmQgdGhlIG5vZGUgd2UncmUgbG9va2luZyBmb3IsIHdlIGZpbmlzaCBsb29waW5nXG4gICAgICAgICAgLy8gdGhyb3VnaCBpdHMgc2libGluZ3MgdG8gZW5zdXJlIHRoZXkncmUgY2FjaGVkIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIC8vIHRvIHJldmlzaXQgdGhpcyBub2RlIGFnYWluLiBPdGhlcndpc2UsIHdlIG1ha2Ugbl4yIGNhbGxzIHRvIGdldElEXG4gICAgICAgICAgLy8gd2hlbiB2aXNpdGluZyB0aGUgbWFueSBjaGlsZHJlbiBvZiBhIHNpbmdsZSBub2RlIGluIG9yZGVyLlxuXG4gICAgICAgICAgaWYgKHRhcmdldElEID09PSBjaGlsZElEKSB7XG4gICAgICAgICAgICB0YXJnZXRDaGlsZCA9IGNoaWxkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoUmVhY3RJbnN0YW5jZUhhbmRsZXMuaXNBbmNlc3RvcklET2YoY2hpbGRJRCwgdGFyZ2V0SUQpKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgY2hpbGQgd2hvc2UgSUQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGdpdmVuIElELFxuICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4gYmUgc3VyZSB0aGF0IHdlIG9ubHkgd2FudCB0byBzZWFyY2ggdGhlIHN1YnRyZWVcbiAgICAgICAgICAgIC8vIHJvb3RlZCBhdCB0aGlzIGNoaWxkLCBzbyB3ZSBjYW4gdGhyb3cgb3V0IHRoZSByZXN0IG9mIHRoZVxuICAgICAgICAgICAgLy8gc2VhcmNoIHN0YXRlLlxuICAgICAgICAgICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSBjaGlsZEluZGV4ID0gMDtcbiAgICAgICAgICAgIGZpcnN0Q2hpbGRyZW4ucHVzaChjaGlsZC5maXJzdENoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBjaGlsZCBoYWQgbm8gSUQsIHRoZW4gdGhlcmUncyBhIGNoYW5jZSB0aGF0IGl0IHdhc1xuICAgICAgICAgIC8vIGluamVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGJyb3dzZXIsIGFzIHdoZW4gYSBgPHRhYmxlPmBcbiAgICAgICAgICAvLyBlbGVtZW50IHNwcm91dHMgYW4gZXh0cmEgYDx0Ym9keT5gIGNoaWxkIGFzIGEgc2lkZSBlZmZlY3Qgb2ZcbiAgICAgICAgICAvLyBgLmlubmVySFRNTGAgcGFyc2luZy4gT3B0aW1pc3RpY2FsbHkgY29udGludWUgZG93biB0aGlzXG4gICAgICAgICAgLy8gYnJhbmNoLCBidXQgbm90IGJlZm9yZSBleGFtaW5pbmcgdGhlIG90aGVyIHNpYmxpbmdzLlxuICAgICAgICAgIGZpcnN0Q2hpbGRyZW4ucHVzaChjaGlsZC5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXRDaGlsZCkge1xuICAgICAgICAvLyBFbXB0eWluZyBmaXJzdENoaWxkcmVuL2ZpbmRDb21wb25lbnRSb290UmV1c2FibGVBcnJheSBpc1xuICAgICAgICAvLyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgYnV0IGl0IGhlbHBzIHRoZSBHQyByZWNsYWltXG4gICAgICAgIC8vIGFueSBub2RlcyB0aGF0IHdlcmUgbGVmdCBhdCB0aGUgZW5kIG9mIHRoZSBzZWFyY2guXG4gICAgICAgIGZpcnN0Q2hpbGRyZW4ubGVuZ3RoID0gMDtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0Q2hpbGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSAwO1xuXG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRDb21wb25lbnRSb290KC4uLiwgJXMpOiBVbmFibGUgdG8gZmluZCBlbGVtZW50LiBUaGlzIHByb2JhYmx5ICcgKyAnbWVhbnMgdGhlIERPTSB3YXMgdW5leHBlY3RlZGx5IG11dGF0ZWQgKGUuZy4sIGJ5IHRoZSBicm93c2VyKSwgJyArICd1c3VhbGx5IGR1ZSB0byBmb3JnZXR0aW5nIGEgPHRib2R5PiB3aGVuIHVzaW5nIHRhYmxlcywgbmVzdGluZyB0YWdzICcgKyAnbGlrZSA8Zm9ybT4sIDxwPiwgb3IgPGE+LCBvciB1c2luZyBub24tU1ZHIGVsZW1lbnRzIGluIGFuIDxzdmc+ICcgKyAncGFyZW50LiAnICsgJ1RyeSBpbnNwZWN0aW5nIHRoZSBjaGlsZCBub2RlcyBvZiB0aGUgZWxlbWVudCB3aXRoIFJlYWN0IElEIGAlc2AuJywgdGFyZ2V0SUQsIFJlYWN0TW91bnQuZ2V0SUQoYW5jZXN0b3JOb2RlKSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9LFxuXG4gIF9tb3VudEltYWdlSW50b05vZGU6IGZ1bmN0aW9uIChtYXJrdXAsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKSB7XG4gICAgIShjb250YWluZXIgJiYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbW91bnRDb21wb25lbnRJbnRvTm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCB2YWxpZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHtcbiAgICAgIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VNYXJrdXAobWFya3VwLCByb290RWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNoZWNrc3VtID0gcm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTtcbiAgICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTtcblxuICAgICAgICB2YXIgcm9vdE1hcmt1cCA9IHJvb3RFbGVtZW50Lm91dGVySFRNTDtcbiAgICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FLCBjaGVja3N1bSk7XG5cbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRNYXJrdXAgPSBtYXJrdXA7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgLy8gYmVjYXVzZSByb290TWFya3VwIGlzIHJldHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlvbnNcbiAgICAgICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBgbWFya3VwYC4gSGVyZSxcbiAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8gYSA8ZGl2PiBvciA8aWZyYW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lclxuICAgICAgICAgIC8vIHR5cGUgdG8gcGVyZm9ybSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFyaW5nLlxuICAgICAgICAgIHZhciBub3JtYWxpemVyO1xuICAgICAgICAgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9IG1hcmt1cDtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmlubmVySFRNTDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuY29udGVudERvY3VtZW50LndyaXRlKG1hcmt1cCk7XG4gICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0RGlmZmVyZW5jZUluZGV4KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApO1xuICAgICAgICB2YXIgZGlmZmVyZW5jZSA9ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290TWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApO1xuXG4gICAgICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyAnICsgJ3NlcnZlciByZW5kZXJpbmcgYnV0IHRoZSBjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyB1c3VhbGx5ICcgKyAnbWVhbnMgeW91IHJlbmRlcmVkIGEgZGlmZmVyZW50IGNvbXBvbmVudCB0eXBlIG9yIHByb3BzIG9uICcgKyAndGhlIGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSAnICsgJ21ldGhvZHMgYXJlIGltcHVyZS4gUmVhY3QgY2Fubm90IGhhbmRsZSB0aGlzIGNhc2UgZHVlIHRvICcgKyAnY3Jvc3MtYnJvd3NlciBxdWlya3MgYnkgcmVuZGVyaW5nIGF0IHRoZSBkb2N1bWVudCByb290LiBZb3UgJyArICdzaG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzICcgKyAnYW5kIGVuc3VyZSB0aGUgcHJvcHMgYXJlIHRoZSBzYW1lIGNsaWVudCBhbmQgc2VydmVyIHNpZGU6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0IGF0dGVtcHRlZCB0byByZXVzZSBtYXJrdXAgaW4gYSBjb250YWluZXIgYnV0IHRoZSAnICsgJ2NoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIGdlbmVyYWxseSBtZWFucyB0aGF0IHlvdSBhcmUgJyArICd1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGFuZCB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgJyArICdzZXJ2ZXIgd2FzIG5vdCB3aGF0IHRoZSBjbGllbnQgd2FzIGV4cGVjdGluZy4gUmVhY3QgaW5qZWN0ZWQgJyArICduZXcgbWFya3VwIHRvIGNvbXBlbnNhdGUgd2hpY2ggd29ya3MgYnV0IHlvdSBoYXZlIGxvc3QgbWFueSAnICsgJ29mIHRoZSBiZW5lZml0cyBvZiBzZXJ2ZXIgcmVuZGVyaW5nLiBJbnN0ZWFkLCBmaWd1cmUgb3V0ICcgKyAnd2h5IHRoZSBtYXJrdXAgYmVpbmcgZ2VuZXJhdGVkIGlzIGRpZmZlcmVudCBvbiB0aGUgY2xpZW50ICcgKyAnb3Igc2VydmVyOlxcbiVzJywgZGlmZmVyZW5jZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgYnV0ICcgKyAneW91IGRpZG5cXCd0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBXZSBjYW5cXCd0IGRvIHRoaXMgJyArICd3aXRob3V0IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzLiAnICsgJ1NlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gICAgICB9XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobWFya3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW5uZXJIVE1MKGNvbnRhaW5lciwgbWFya3VwKTtcbiAgICB9XG4gIH0sXG5cbiAgb3duZXJEb2N1bWVudENvbnRleHRLZXk6IG93bmVyRG9jdW1lbnRDb250ZXh0S2V5LFxuXG4gIC8qKlxuICAgKiBSZWFjdCBJRCB1dGlsaXRpZXMuXG4gICAqL1xuXG4gIGdldFJlYWN0Um9vdElEOiBnZXRSZWFjdFJvb3RJRCxcblxuICBnZXRJRDogZ2V0SUQsXG5cbiAgc2V0SUQ6IHNldElELFxuXG4gIGdldE5vZGU6IGdldE5vZGUsXG5cbiAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0Tm9kZUZyb21JbnN0YW5jZSxcblxuICBpc1ZhbGlkOiBpc1ZhbGlkLFxuXG4gIHB1cmdlSUQ6IHB1cmdlSURcbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhSZWFjdE1vdW50LCAnUmVhY3RNb3VudCcsIHtcbiAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6ICdfcmVuZGVyTmV3Um9vdENvbXBvbmVudCcsXG4gIF9tb3VudEltYWdlSW50b05vZGU6ICdfbW91bnRJbWFnZUludG9Ob2RlJ1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEUxdmRXNTBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBUVzkxYm5SY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkVUMDFRY205d1pYSjBlU0E5SUhKbGNYVnBjbVVvSnk0dlJFOU5VSEp2Y0dWeWRIa25LVHRjYm5aaGNpQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpY3BPMXh1ZG1GeUlGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTjFjbkpsYm5SUGQyNWxjaWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5SbVZoZEhWeVpVWnNZV2R6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSUFRVWmxZWFIxY21WR2JHRm5jeWNwTzF4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZiWEIwZVVOdmJYQnZibVZ1ZEZKbFoybHpkSEo1SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWdGNIUjVRMjl0Y0c5dVpXNTBVbVZuYVhOMGNua25LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFbHVjM1JoYm1ObFRXRndKeWs3WEc1MllYSWdVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiU0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOWVhKcmRYQkRhR1ZqYTNOMWJTY3BPMXh1ZG1GeUlGSmxZV04wVUdWeVppQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFaWEptSnlrN1hHNTJZWElnVW1WaFkzUlNaV052Ym1OcGJHVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkpsWTI5dVkybHNaWEluS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlZGMVpYVmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdWdGNIUjVUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZaVzF3ZEhsUFltcGxZM1FuS1R0Y2JuWmhjaUJqYjI1MFlXbHVjMDV2WkdVZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOWpiMjUwWVdsdWMwNXZaR1VuS1R0Y2JuWmhjaUJwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5cGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2MyVjBTVzV1WlhKSVZFMU1JRDBnY21WeGRXbHlaU2duTGk5elpYUkpibTVsY2toVVRVd25LVHRjYm5aaGNpQnphRzkxYkdSVmNHUmhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2YzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFuS1R0Y2JuWmhjaUIyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWNnUFNCeVpYRjFhWEpsS0NjdUwzWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVp5Y3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm5aaGNpQkJWRlJTWDA1QlRVVWdQU0JFVDAxUWNtOXdaWEowZVM1SlJGOUJWRlJTU1VKVlZFVmZUa0ZOUlR0Y2JuWmhjaUJ1YjJSbFEyRmphR1VnUFNCN2ZUdGNibHh1ZG1GeUlFVk1SVTFGVGxSZlRrOUVSVjlVV1ZCRklEMGdNVHRjYm5aaGNpQkVUME5mVGs5RVJWOVVXVkJGSUQwZ09UdGNiblpoY2lCRVQwTlZUVVZPVkY5R1VrRkhUVVZPVkY5T1QwUkZYMVJaVUVVZ1BTQXhNVHRjYmx4dWRtRnlJRzkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNUlEMGdKMTlmVW1WaFkzUk5iM1Z1ZEY5dmQyNWxja1J2WTNWdFpXNTBKQ2NnS3lCTllYUm9MbkpoYm1SdmJTZ3BMblJ2VTNSeWFXNW5LRE0yS1M1emJHbGpaU2d5S1R0Y2JseHVMeW9xSUUxaGNIQnBibWNnWm5KdmJTQnlaV0ZqZEZKdmIzUkpSQ0IwYnlCU1pXRmpkQ0JqYjIxd2IyNWxiblFnYVc1emRHRnVZMlV1SUNvdlhHNTJZWElnYVc1emRHRnVZMlZ6UW5sU1pXRmpkRkp2YjNSSlJDQTlJSHQ5TzF4dVhHNHZLaW9nVFdGd2NHbHVaeUJtY205dElISmxZV04wVW05dmRFbEVJSFJ2SUdCamIyNTBZV2x1WlhKZ0lHNXZaR1Z6TGlBcUwxeHVkbUZ5SUdOdmJuUmhhVzVsY25OQ2VWSmxZV04wVW05dmRFbEVJRDBnZTMwN1hHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUM4cUtpQmZYMFJGVmw5ZkxXOXViSGtnYldGd2NHbHVaeUJtY205dElISmxZV04wVW05dmRFbEVJSFJ2SUhKdmIzUWdaV3hsYldWdWRITXVJQ292WEc0Z0lIWmhjaUJ5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVJRDBnZTMwN1hHNTlYRzVjYmk4dklGVnpaV1FnZEc4Z2MzUnZjbVVnWW5KbFlXUjBhQzFtYVhKemRDQnpaV0Z5WTJnZ2MzUmhkR1VnYVc0Z1ptbHVaRU52YlhCdmJtVnVkRkp2YjNRdVhHNTJZWElnWm1sdVpFTnZiWEJ2Ym1WdWRGSnZiM1JTWlhWellXSnNaVUZ5Y21GNUlEMGdXMTA3WEc1Y2JpOHFLbHh1SUNvZ1JtbHVaSE1nZEdobElHbHVaR1Y0SUc5bUlIUm9aU0JtYVhKemRDQmphR0Z5WVdOMFpYSmNiaUFxSUhSb1lYUW5jeUJ1YjNRZ1kyOXRiVzl1SUdKbGRIZGxaVzRnZEdobElIUjNieUJuYVhabGJpQnpkSEpwYm1kekxseHVJQ3BjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ2RHaGxJR2x1WkdWNElHOW1JSFJvWlNCamFHRnlZV04wWlhJZ2QyaGxjbVVnZEdobElITjBjbWx1WjNNZ1pHbDJaWEpuWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJtYVhKemRFUnBabVpsY21WdVkyVkpibVJsZUNoemRISnBibWN4TENCemRISnBibWN5S1NCN1hHNGdJSFpoY2lCdGFXNU1aVzRnUFNCTllYUm9MbTFwYmloemRISnBibWN4TG14bGJtZDBhQ3dnYzNSeWFXNW5NaTVzWlc1bmRHZ3BPMXh1SUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHMXBia3hsYmpzZ2FTc3JLU0I3WEc0Z0lDQWdhV1lnS0hOMGNtbHVaekV1WTJoaGNrRjBLR2twSUNFOVBTQnpkSEpwYm1jeUxtTm9ZWEpCZENocEtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemRISnBibWN4TG14bGJtZDBhQ0E5UFQwZ2MzUnlhVzVuTWk1c1pXNW5kR2dnUHlBdE1TQTZJRzFwYmt4bGJqdGNibjFjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOFJFOU5SRzlqZFcxbGJuUjlJR052Ym5SaGFXNWxjaUJFVDAwZ1pXeGxiV1Z1ZENCMGFHRjBJRzFoZVNCamIyNTBZV2x1WEc0Z0tpQmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRGeHVJQ29nUUhKbGRIVnliaUI3UHlwOUlFUlBUU0JsYkdWdFpXNTBJSFJvWVhRZ2JXRjVJR2hoZG1VZ2RHaGxJSEpsWVdOMFVtOXZkQ0JKUkN3Z2IzSWdiblZzYkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWjJWMFVtVmhZM1JTYjI5MFJXeGxiV1Z1ZEVsdVEyOXVkR0ZwYm1WeUtHTnZiblJoYVc1bGNpa2dlMXh1SUNCcFppQW9JV052Ym5SaGFXNWxjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ1JFOURYMDVQUkVWZlZGbFFSU2tnZTF4dUlDQWdJSEpsZEhWeWJpQmpiMjUwWVdsdVpYSXVaRzlqZFcxbGJuUkZiR1Z0Wlc1ME8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCamIyNTBZV2x1WlhJdVptbHljM1JEYUdsc1pEdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUVSUFRTQmxiR1Z0Wlc1MElIUm9ZWFFnYldGNUlHTnZiblJoYVc0Z1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RdVhHNGdLaUJBY21WMGRYSnVJSHMvYzNSeWFXNW5mU0JCSUZ3aWNtVmhZM1JTYjI5MFhDSWdTVVFzSUdsbUlHRWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElHbHpJSEpsYm1SbGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJTWldGamRGSnZiM1JKUkNoamIyNTBZV2x1WlhJcElIdGNiaUFnZG1GeUlISnZiM1JGYkdWdFpXNTBJRDBnWjJWMFVtVmhZM1JTYjI5MFJXeGxiV1Z1ZEVsdVEyOXVkR0ZwYm1WeUtHTnZiblJoYVc1bGNpazdYRzRnSUhKbGRIVnliaUJ5YjI5MFJXeGxiV1Z1ZENBbUppQlNaV0ZqZEUxdmRXNTBMbWRsZEVsRUtISnZiM1JGYkdWdFpXNTBLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkJZMk5sYzNOcGJtY2dibTlrWlZ0QlZGUlNYMDVCVFVWZElHOXlJR05oYkd4cGJtY2daMlYwUVhSMGNtbGlkWFJsS0VGVVZGSmZUa0ZOUlNrZ2IyNGdZU0JtYjNKdFhHNGdLaUJsYkdWdFpXNTBJR05oYmlCeVpYUjFjbTRnYVhSeklHTnZiblJ5YjJ3Z2QyaHZjMlVnYm1GdFpTQnZjaUJKUkNCbGNYVmhiSE1nUVZSVVVsOU9RVTFGTGlCQmJHeGNiaUFxSUVSUFRTQnViMlJsY3lCemRYQndiM0owSUdCblpYUkJkSFJ5YVdKMWRHVk9iMlJsWUNCaWRYUWdkR2hwY3lCallXNGdZV3h6YnlCblpYUWdZMkZzYkdWa0lHOXVYRzRnS2lCdmRHaGxjaUJ2WW1wbFkzUnpJSE52SUdwMWMzUWdjbVYwZFhKdUlDY25JR2xtSUhkbEozSmxJR2RwZG1WdUlITnZiV1YwYUdsdVp5QnZkR2hsY2lCMGFHRnVJR0ZjYmlBcUlFUlBUU0J1YjJSbElDaHpkV05vSUdGeklIZHBibVJ2ZHlrdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhzL1JFOU5SV3hsYldWdWRIeEVUMDFYYVc1a2IzZDhSRTlOUkc5amRXMWxiblI4UkU5TlZHVjRkRTV2WkdWOUlHNXZaR1VnUkU5TklHNXZaR1V1WEc0Z0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFbEVJRzltSUhSb1pTQnpkWEJ3YkdsbFpDQmdaRzl0VG05a1pXQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRWxFS0c1dlpHVXBJSHRjYmlBZ2RtRnlJR2xrSUQwZ2FXNTBaWEp1WVd4SFpYUkpSQ2h1YjJSbEtUdGNiaUFnYVdZZ0tHbGtLU0I3WEc0Z0lDQWdhV1lnS0c1dlpHVkRZV05vWlM1b1lYTlBkMjVRY205d1pYSjBlU2hwWkNrcElIdGNiaUFnSUNBZ0lIWmhjaUJqWVdOb1pXUWdQU0J1YjJSbFEyRmphR1ZiYVdSZE8xeHVJQ0FnSUNBZ2FXWWdLR05oWTJobFpDQWhQVDBnYm05a1pTa2dlMXh1SUNBZ0lDQWdJQ0FoSVdselZtRnNhV1FvWTJGamFHVmtMQ0JwWkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUk5iM1Z1ZERvZ1ZIZHZJSFpoYkdsa0lHSjFkQ0IxYm1WeGRXRnNJRzV2WkdWeklIZHBkR2dnZEdobElITmhiV1VnWUNWellEb2dKWE1uTENCQlZGUlNYMDVCVFVVc0lHbGtLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lDQWdibTlrWlVOaFkyaGxXMmxrWFNBOUlHNXZaR1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHNXZaR1ZEWVdOb1pWdHBaRjBnUFNCdWIyUmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnBaRHRjYm4xY2JseHVablZ1WTNScGIyNGdhVzUwWlhKdVlXeEhaWFJKUkNodWIyUmxLU0I3WEc0Z0lDOHZJRWxtSUc1dlpHVWdhWE1nYzI5dFpYUm9hVzVuSUd4cGEyVWdZU0IzYVc1a2IzY3NJR1J2WTNWdFpXNTBMQ0J2Y2lCMFpYaDBJRzV2WkdVc0lHNXZibVVnYjJaY2JpQWdMeThnZDJocFkyZ2djM1Z3Y0c5eWRDQmhkSFJ5YVdKMWRHVnpJRzl5SUdFZ0xtZGxkRUYwZEhKcFluVjBaU0J0WlhSb2IyUXNJR2R5WVdObFpuVnNiSGtnY21WMGRYSnVYRzRnSUM4dklIUm9aU0JsYlhCMGVTQnpkSEpwYm1jc0lHRnpJR2xtSUhSb1pTQmhkSFJ5YVdKMWRHVWdkMlZ5WlNCdGFYTnphVzVuTGx4dUlDQnlaWFIxY200Z2JtOWtaU0FtSmlCdWIyUmxMbWRsZEVGMGRISnBZblYwWlNBbUppQnViMlJsTG1kbGRFRjBkSEpwWW5WMFpTaEJWRlJTWDA1QlRVVXBJSHg4SUNjbk8xeHVmVnh1WEc0dktpcGNiaUFxSUZObGRITWdkR2hsSUZKbFlXTjBMWE53WldOcFptbGpJRWxFSUc5bUlIUm9aU0JuYVhabGJpQnViMlJsTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaU0JVYUdVZ1JFOU5JRzV2WkdVZ2QyaHZjMlVnU1VRZ2QybHNiQ0JpWlNCelpYUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1ZHaGxJSFpoYkhWbElHOW1JSFJvWlNCSlJDQmhkSFJ5YVdKMWRHVXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlITmxkRWxFS0c1dlpHVXNJR2xrS1NCN1hHNGdJSFpoY2lCdmJHUkpSQ0E5SUdsdWRHVnlibUZzUjJWMFNVUW9ibTlrWlNrN1hHNGdJR2xtSUNodmJHUkpSQ0FoUFQwZ2FXUXBJSHRjYmlBZ0lDQmtaV3hsZEdVZ2JtOWtaVU5oWTJobFcyOXNaRWxFWFR0Y2JpQWdmVnh1SUNCdWIyUmxMbk5sZEVGMGRISnBZblYwWlNoQlZGUlNYMDVCVFVVc0lHbGtLVHRjYmlBZ2JtOWtaVU5oWTJobFcybGtYU0E5SUc1dlpHVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1JtbHVaSE1nZEdobElHNXZaR1VnZDJsMGFDQjBhR1VnYzNWd2NHeHBaV1FnVW1WaFkzUXRaMlZ1WlhKaGRHVmtJRVJQVFNCSlJDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdRU0JTWldGamRDMW5aVzVsY21GMFpXUWdSRTlOSUVsRUxseHVJQ29nUUhKbGRIVnliaUI3UkU5TlJXeGxiV1Z1ZEgwZ1JFOU5JRzV2WkdVZ2QybDBhQ0IwYUdVZ2MzVndjR3hsWkNCZ2FXUmdMbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm1aMWJtTjBhVzl1SUdkbGRFNXZaR1VvYVdRcElIdGNiaUFnYVdZZ0tDRnViMlJsUTJGamFHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2FXUXBJSHg4SUNGcGMxWmhiR2xrS0c1dlpHVkRZV05vWlZ0cFpGMHNJR2xrS1NrZ2UxeHVJQ0FnSUc1dlpHVkRZV05vWlZ0cFpGMGdQU0JTWldGamRFMXZkVzUwTG1acGJtUlNaV0ZqZEU1dlpHVkNlVWxFS0dsa0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JtOWtaVU5oWTJobFcybGtYVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkdhVzVrY3lCMGFHVWdibTlrWlNCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCd2RXSnNhV01nVW1WaFkzUWdhVzV6ZEdGdVkyVXVYRzRnS2x4dUlDb2dRSEJoY21GdElIc3FmU0JwYm5OMFlXNWpaU0JCSUhCMVlteHBZeUJTWldGamRDQnBibk4wWVc1alpTNWNiaUFxSUVCeVpYUjFjbTRnZXo5RVQwMUZiR1Z0Wlc1MGZTQkVUMDBnYm05a1pTQjNhWFJvSUhSb1pTQnpkWEJ3YkdWa0lHQnBaR0F1WEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBUbTlrWlVaeWIyMUpibk4wWVc1alpTaHBibk4wWVc1alpTa2dlMXh1SUNCMllYSWdhV1FnUFNCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3TG1kbGRDaHBibk4wWVc1alpTa3VYM0p2YjNST2IyUmxTVVE3WEc0Z0lHbG1JQ2hTWldGamRFVnRjSFI1UTI5dGNHOXVaVzUwVW1WbmFYTjBjbmt1YVhOT2RXeHNRMjl0Y0c5dVpXNTBTVVFvYVdRcEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JpQWdhV1lnS0NGdWIyUmxRMkZqYUdVdWFHRnpUM2R1VUhKdmNHVnlkSGtvYVdRcElIeDhJQ0ZwYzFaaGJHbGtLRzV2WkdWRFlXTm9aVnRwWkYwc0lHbGtLU2tnZTF4dUlDQWdJRzV2WkdWRFlXTm9aVnRwWkYwZ1BTQlNaV0ZqZEUxdmRXNTBMbVpwYm1SU1pXRmpkRTV2WkdWQ2VVbEVLR2xrS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYm05a1pVTmhZMmhsVzJsa1hUdGNibjFjYmx4dUx5b3FYRzRnS2lCQklHNXZaR1VnYVhNZ1hDSjJZV3hwWkZ3aUlHbG1JR2wwSUdseklHTnZiblJoYVc1bFpDQmllU0JoSUdOMWNuSmxiblJzZVNCdGIzVnVkR1ZrSUdOdmJuUmhhVzVsY2k1Y2JpQXFYRzRnS2lCVWFHbHpJRzFsWVc1eklIUm9ZWFFnZEdobElHNXZaR1VnWkc5bGN5QnViM1FnYUdGMlpTQjBieUJpWlNCamIyNTBZV2x1WldRZ1lua2dZU0JrYjJOMWJXVnVkQ0JwYmx4dUlDb2diM0prWlhJZ2RHOGdZbVVnWTI5dWMybGtaWEpsWkNCMllXeHBaQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlejlFVDAxRmJHVnRaVzUwZlNCdWIyUmxJRlJvWlNCallXNWthV1JoZEdVZ1JFOU5JRzV2WkdVdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnVkdobElHVjRjR1ZqZEdWa0lFbEVJRzltSUhSb1pTQnViMlJsTGx4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWMmhsZEdobGNpQjBhR1VnYm05a1pTQnBjeUJqYjI1MFlXbHVaV1FnWW5rZ1lTQnRiM1Z1ZEdWa0lHTnZiblJoYVc1bGNpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FYTldZV3hwWkNodWIyUmxMQ0JwWkNrZ2UxeHVJQ0JwWmlBb2JtOWtaU2tnZTF4dUlDQWdJQ0VvYVc1MFpYSnVZV3hIWlhSSlJDaHViMlJsS1NBOVBUMGdhV1FwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFRXOTFiblE2SUZWdVpYaHdaV04wWldRZ2JXOWthV1pwWTJGMGFXOXVJRzltSUdBbGMyQW5MQ0JCVkZSU1gwNUJUVVVwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUJqYjI1MFlXbHVaWElnUFNCU1pXRmpkRTF2ZFc1MExtWnBibVJTWldGamRFTnZiblJoYVc1bGNrWnZja2xFS0dsa0tUdGNiaUFnSUNCcFppQW9ZMjl1ZEdGcGJtVnlJQ1ltSUdOdmJuUmhhVzV6VG05a1pTaGpiMjUwWVdsdVpYSXNJRzV2WkdVcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGMWMyVnpJSFJvWlNCallXTm9aU0IwYnlCbWIzSm5aWFFnWVdKdmRYUWdiMjVsSUZKbFlXTjBMWE53WldOcFptbGpJRWxFTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCVWFHVWdTVVFnZEc4Z1ptOXlaMlYwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJ3ZFhKblpVbEVLR2xrS1NCN1hHNGdJR1JsYkdWMFpTQnViMlJsUTJGamFHVmJhV1JkTzF4dWZWeHVYRzUyWVhJZ1pHVmxjR1Z6ZEU1dlpHVlRiMFpoY2lBOUlHNTFiR3c3WEc1bWRXNWpkR2x2YmlCbWFXNWtSR1ZsY0dWemRFTmhZMmhsWkVGdVkyVnpkRzl5U1cxd2JDaGhibU5sYzNSdmNrbEVLU0I3WEc0Z0lIWmhjaUJoYm1ObGMzUnZjaUE5SUc1dlpHVkRZV05vWlZ0aGJtTmxjM1J2Y2tsRVhUdGNiaUFnYVdZZ0tHRnVZMlZ6ZEc5eUlDWW1JR2x6Vm1Gc2FXUW9ZVzVqWlhOMGIzSXNJR0Z1WTJWemRHOXlTVVFwS1NCN1hHNGdJQ0FnWkdWbGNHVnpkRTV2WkdWVGIwWmhjaUE5SUdGdVkyVnpkRzl5TzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUM4dklGUm9hWE1nYm05a1pTQnBjMjRuZENCd2IzQjFiR0YwWldRZ2FXNGdkR2hsSUdOaFkyaGxMQ0J6YnlCd2NtVnpkVzFoWW14NUlHNXZibVVnYjJZZ2FYUnpYRzRnSUNBZ0x5OGdaR1Z6WTJWdVpHRnVkSE1nWVhKbExpQkNjbVZoYXlCdmRYUWdiMllnZEdobElHeHZiM0F1WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1SUhSb1pTQmtaV1Z3WlhOMElHTmhZMmhsWkNCdWIyUmxJSGRvYjNObElFbEVJR2x6SUdFZ2NISmxabWw0SUc5bUlHQjBZWEpuWlhSSlJHQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHWnBibVJFWldWd1pYTjBRMkZqYUdWa1FXNWpaWE4wYjNJb2RHRnlaMlYwU1VRcElIdGNiaUFnWkdWbGNHVnpkRTV2WkdWVGIwWmhjaUE5SUc1MWJHdzdYRzRnSUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxuUnlZWFpsY25ObFFXNWpaWE4wYjNKektIUmhjbWRsZEVsRUxDQm1hVzVrUkdWbGNHVnpkRU5oWTJobFpFRnVZMlZ6ZEc5eVNXMXdiQ2s3WEc1Y2JpQWdkbUZ5SUdadmRXNWtUbTlrWlNBOUlHUmxaWEJsYzNST2IyUmxVMjlHWVhJN1hHNGdJR1JsWlhCbGMzUk9iMlJsVTI5R1lYSWdQU0J1ZFd4c08xeHVJQ0J5WlhSMWNtNGdabTkxYm1ST2IyUmxPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFMXZkVzUwY3lCMGFHbHpJR052YlhCdmJtVnVkQ0JoYm1RZ2FXNXpaWEowY3lCcGRDQnBiblJ2SUhSb1pTQkVUMDB1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklHMXZkVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISnZiM1JKUkNCRVQwMGdTVVFnYjJZZ2RHaGxJSEp2YjNRZ2JtOWtaUzVjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSdklHMXZkVzUwSUdsdWRHOHVYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndJRWxtSUhSeWRXVXNJR1J2SUc1dmRDQnBibk5sY25RZ2JXRnlhM1Z3WEc0Z0tpOWNibVoxYm1OMGFXOXVJRzF2ZFc1MFEyOXRjRzl1Wlc1MFNXNTBiMDV2WkdVb1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVc0lISnZiM1JKUkN3Z1kyOXVkR0ZwYm1WeUxDQjBjbUZ1YzJGamRHbHZiaXdnYzJodmRXeGtVbVYxYzJWTllYSnJkWEFzSUdOdmJuUmxlSFFwSUh0Y2JpQWdhV1lnS0ZKbFlXTjBSRTlOUm1WaGRIVnlaVVpzWVdkekxuVnpaVU55WldGMFpVVnNaVzFsYm5RcElIdGNiaUFnSUNCamIyNTBaWGgwSUQwZ1lYTnphV2R1S0h0OUxDQmpiMjUwWlhoMEtUdGNiaUFnSUNCcFppQW9ZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJRDA5UFNCRVQwTmZUazlFUlY5VVdWQkZLU0I3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBXMjkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNVhTQTlJR052Ym5SaGFXNWxjanRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEZ0dmQyNWxja1J2WTNWdFpXNTBRMjl1ZEdWNGRFdGxlVjBnUFNCamIyNTBZV2x1WlhJdWIzZHVaWEpFYjJOMWJXVnVkRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCcFppQW9ZMjl1ZEdWNGRDQTlQVDBnWlcxd2RIbFBZbXBsWTNRcElIdGNiaUFnSUNBZ0lHTnZiblJsZUhRZ1BTQjdmVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJSFJoWnlBOUlHTnZiblJoYVc1bGNpNXViMlJsVG1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dUlDQWdJR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZElEMGdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MblZ3WkdGMFpXUkJibU5sYzNSdmNrbHVabThvYm5Wc2JDd2dkR0ZuTENCdWRXeHNLVHRjYmlBZ2ZWeHVJQ0IyWVhJZ2JXRnlhM1Z3SUQwZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG0xdmRXNTBRMjl0Y0c5dVpXNTBLR052YlhCdmJtVnVkRWx1YzNSaGJtTmxMQ0J5YjI5MFNVUXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBMbDkwYjNCTVpYWmxiRmR5WVhCd1pYSWdQU0JqYjIxd2IyNWxiblJKYm5OMFlXNWpaVHRjYmlBZ1VtVmhZM1JOYjNWdWRDNWZiVzkxYm5SSmJXRm5aVWx1ZEc5T2IyUmxLRzFoY210MWNDd2dZMjl1ZEdGcGJtVnlMQ0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ3dnZEhKaGJuTmhZM1JwYjI0cE8xeHVmVnh1WEc0dktpcGNiaUFxSUVKaGRHTm9aV1FnYlc5MWJuUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJ2SUcxdmRXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKdmIzUkpSQ0JFVDAwZ1NVUWdiMllnZEdobElISnZiM1FnYm05a1pTNWNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJSFJ2SUcxdmRXNTBJR2x1ZEc4dVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndJRWxtSUhSeWRXVXNJR1J2SUc1dmRDQnBibk5sY25RZ2JXRnlhM1Z3WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0poZEdOb1pXUk5iM1Z1ZEVOdmJYQnZibVZ1ZEVsdWRHOU9iMlJsS0dOdmJYQnZibVZ1ZEVsdWMzUmhibU5sTENCeWIyOTBTVVFzSUdOdmJuUmhhVzVsY2l3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lHTnZiblJsZUhRcElIdGNiaUFnZG1GeUlIUnlZVzV6WVdOMGFXOXVJRDBnVW1WaFkzUlZjR1JoZEdWekxsSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0dVoyVjBVRzl2YkdWa0tGeHVJQ0F2S2lCbWIzSmpaVWhVVFV3Z0tpOXphRzkxYkdSU1pYVnpaVTFoY210MWNDazdYRzRnSUhSeVlXNXpZV04wYVc5dUxuQmxjbVp2Y20wb2JXOTFiblJEYjIxd2IyNWxiblJKYm5SdlRtOWtaU3dnYm5Wc2JDd2dZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJSEp2YjNSSlJDd2dZMjl1ZEdGcGJtVnlMQ0IwY21GdWMyRmpkR2x2Yml3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lHTnZiblJsZUhRcE8xeHVJQ0JTWldGamRGVndaR0YwWlhNdVVtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ymk1eVpXeGxZWE5sS0hSeVlXNXpZV04wYVc5dUtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVmJtMXZkVzUwY3lCaElHTnZiWEJ2Ym1WdWRDQmhibVFnY21WdGIzWmxjeUJwZENCbWNtOXRJSFJvWlNCRVQwMHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2FXNXpkR0Z1WTJVZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUdsdWMzUmhibU5sTGx4dUlDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0JqYjI1MFlXbHVaWElnUkU5TklHVnNaVzFsYm5RZ2RHOGdkVzV0YjNWdWRDQm1jbTl0TGx4dUlDb2dRR1pwYm1Gc1hHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUlFQnpaV1VnZTFKbFlXTjBUVzkxYm5RdWRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaWDFjYmlBcUwxeHVablZ1WTNScGIyNGdkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFWnliMjFPYjJSbEtHbHVjM1JoYm1ObExDQmpiMjUwWVdsdVpYSXBJSHRjYmlBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5WdWJXOTFiblJEYjIxd2IyNWxiblFvYVc1emRHRnVZMlVwTzF4dVhHNGdJR2xtSUNoamIyNTBZV2x1WlhJdWJtOWtaVlI1Y0dVZ1BUMDlJRVJQUTE5T1QwUkZYMVJaVUVVcElIdGNiaUFnSUNCamIyNTBZV2x1WlhJZ1BTQmpiMjUwWVdsdVpYSXVaRzlqZFcxbGJuUkZiR1Z0Wlc1ME8xeHVJQ0I5WEc1Y2JpQWdMeThnYUhSMGNEb3ZMMnB6Y0dWeVppNWpiMjB2Wlcxd2RIbHBibWN0WVMxdWIyUmxYRzRnSUhkb2FXeGxJQ2hqYjI1MFlXbHVaWEl1YkdGemRFTm9hV3hrS1NCN1hHNGdJQ0FnWTI5dWRHRnBibVZ5TG5KbGJXOTJaVU5vYVd4a0tHTnZiblJoYVc1bGNpNXNZWE4wUTJocGJHUXBPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nVkhKMVpTQnBaaUIwYUdVZ2MzVndjR3hwWldRZ1JFOU5JRzV2WkdVZ2FHRnpJR0VnWkdseVpXTjBJRkpsWVdOMExYSmxibVJsY21Wa0lHTm9hV3hrSUhSb1lYUWdhWE5jYmlBcUlHNXZkQ0JoSUZKbFlXTjBJSEp2YjNRZ1pXeGxiV1Z1ZEM0Z1ZYTmxablZzSUdadmNpQjNZWEp1YVc1bklHbHVJR0J5Wlc1a1pYSmdMRnh1SUNvZ1lIVnViVzkxYm5SRGIyMXdiMjVsYm5SQmRFNXZaR1ZnTENCbGRHTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9SRTlOUld4bGJXVnVkSDBnYm05a1pTQlVhR1VnWTJGdVpHbGtZWFJsSUVSUFRTQnViMlJsTGx4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWSEoxWlNCcFppQjBhR1VnUkU5TklHVnNaVzFsYm5RZ1kyOXVkR0ZwYm5NZ1lTQmthWEpsWTNRZ1kyaHBiR1FnZEdoaGRDQjNZWE5jYmlBcUlISmxibVJsY21Wa0lHSjVJRkpsWVdOMElHSjFkQ0JwY3lCdWIzUWdZU0J5YjI5MElHVnNaVzFsYm5RdVhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVablZ1WTNScGIyNGdhR0Z6VG05dVVtOXZkRkpsWVdOMFEyaHBiR1FvYm05a1pTa2dlMXh1SUNCMllYSWdjbVZoWTNSU2IyOTBTVVFnUFNCblpYUlNaV0ZqZEZKdmIzUkpSQ2h1YjJSbEtUdGNiaUFnY21WMGRYSnVJSEpsWVdOMFVtOXZkRWxFSUQ4Z2NtVmhZM1JTYjI5MFNVUWdJVDA5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtZGxkRkpsWVdOMFVtOXZkRWxFUm5KdmJVNXZaR1ZKUkNoeVpXRmpkRkp2YjNSSlJDa2dPaUJtWVd4elpUdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUhSb1pTQm1hWEp6ZENBb1pHVmxjR1Z6ZENrZ1lXNWpaWE4wYjNJZ2IyWWdZU0J1YjJSbElIZG9hV05vSUdseklISmxibVJsY21Wa0lHSjVJSFJvYVhNZ1kyOXdlVnh1SUNvZ2IyWWdVbVZoWTNRdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdacGJtUkdhWEp6ZEZKbFlXTjBSRTlOU1cxd2JDaHViMlJsS1NCN1hHNGdJQzh2SUZSb2FYTWdibTlrWlNCdGFXZG9kQ0JpWlNCbWNtOXRJR0Z1YjNSb1pYSWdVbVZoWTNRZ2FXNXpkR0Z1WTJVc0lITnZJSGRsSUcxaGEyVWdjM1Z5WlNCdWIzUWdkRzljYmlBZ0x5OGdaWGhoYldsdVpTQjBhR1VnYm05a1pTQmpZV05vWlNCb1pYSmxYRzRnSUdadmNpQW9PeUJ1YjJSbElDWW1JRzV2WkdVdWNHRnlaVzUwVG05a1pTQWhQVDBnYm05a1pUc2dibTlrWlNBOUlHNXZaR1V1Y0dGeVpXNTBUbTlrWlNrZ2UxeHVJQ0FnSUdsbUlDaHViMlJsTG01dlpHVlVlWEJsSUNFOVBTQXhLU0I3WEc0Z0lDQWdJQ0F2THlCT2IzUWdZU0JFVDAxRmJHVnRaVzUwTENCMGFHVnlaV1p2Y21VZ2JtOTBJR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBYRzRnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlHNXZaR1ZKUkNBOUlHbHVkR1Z5Ym1Gc1IyVjBTVVFvYm05a1pTazdYRzRnSUNBZ2FXWWdLQ0Z1YjJSbFNVUXBJSHRjYmlBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdjbVZoWTNSU2IyOTBTVVFnUFNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NW5aWFJTWldGamRGSnZiM1JKUkVaeWIyMU9iMlJsU1VRb2JtOWtaVWxFS1R0Y2JseHVJQ0FnSUM4dklFbG1JR052Ym5SaGFXNWxjbk5DZVZKbFlXTjBVbTl2ZEVsRUlHTnZiblJoYVc1eklIUm9aU0JqYjI1MFlXbHVaWElnZDJVZ1ptbHVaQ0JpZVNCamNtRjNiR2x1WnlCMWNGeHVJQ0FnSUM4dklIUm9aU0IwY21WbExDQjNaU0JyYm05M0lIUm9ZWFFnZEdocGN5QnBibk4wWVc1alpTQnZaaUJTWldGamRDQnlaVzVrWlhKbFpDQjBhR1VnYm05a1pTNWNiaUFnSUNBdkx5QnVZaTRnYVhOV1lXeHBaQ2R6SUhOMGNtRjBaV2Q1SUNoM2FYUm9JR052Ym5SaGFXNXpUbTlrWlNrZ1pHOWxjeUJ1YjNRZ2QyOXlheUJpWldOaGRYTmxJSEpsYm1SbGNseHVJQ0FnSUM4dklIUnlaV1Z6SUcxaGVTQmlaU0J1WlhOMFpXUWdZVzVrSUhkbElHUnZiaWQwSUhkaGJuUWdZU0JtWVd4elpTQndiM05wZEdsMlpTQnBiaUIwYUdGMElHTmhjMlV1WEc0Z0lDQWdkbUZ5SUdOMWNuSmxiblFnUFNCdWIyUmxPMXh1SUNBZ0lIWmhjaUJzWVhOMFNVUTdYRzRnSUNBZ1pHOGdlMXh1SUNBZ0lDQWdiR0Z6ZEVsRUlEMGdhVzUwWlhKdVlXeEhaWFJKUkNoamRYSnlaVzUwS1R0Y2JpQWdJQ0FnSUdOMWNuSmxiblFnUFNCamRYSnlaVzUwTG5CaGNtVnVkRTV2WkdVN1hHNGdJQ0FnSUNCcFppQW9ZM1Z5Y21WdWRDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUZSb1pTQndZWE56WldRdGFXNGdibTlrWlNCb1lYTWdZbVZsYmlCa1pYUmhZMmhsWkNCbWNtOXRJSFJvWlNCamIyNTBZV2x1WlhJZ2FYUWdkMkZ6WEc0Z0lDQWdJQ0FnSUM4dklHOXlhV2RwYm1Gc2JIa2djbVZ1WkdWeVpXUWdhVzUwYnk1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQjNhR2xzWlNBb2JHRnpkRWxFSUNFOVBTQnlaV0ZqZEZKdmIzUkpSQ2s3WEc1Y2JpQWdJQ0JwWmlBb1kzVnljbVZ1ZENBOVBUMGdZMjl1ZEdGcGJtVnljMEo1VW1WaFkzUlNiMjkwU1VSYmNtVmhZM1JTYjI5MFNVUmRLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdibTlrWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzUxYkd3N1hHNTlYRzVjYmk4cUtseHVJQ29nVkdWdGNHOXlZWEo1SUNnL0tTQm9ZV05ySUhOdklIUm9ZWFFnZDJVZ1kyRnVJSE4wYjNKbElHRnNiQ0IwYjNBdGJHVjJaV3dnY0dWdVpHbHVaeUIxY0dSaGRHVnpJRzl1WEc0Z0tpQmpiMjF3YjNOcGRHVnpJR2x1YzNSbFlXUWdiMllnYUdGMmFXNW5JSFJ2SUhkdmNuSjVJR0ZpYjNWMElHUnBabVpsY21WdWRDQjBlWEJsY3lCdlppQmpiMjF3YjI1bGJuUnpYRzRnS2lCb1pYSmxMbHh1SUNvdlhHNTJZWElnVkc5d1RHVjJaV3hYY21Gd2NHVnlJRDBnWm5WdVkzUnBiMjRnS0NrZ2UzMDdYRzVVYjNCTVpYWmxiRmR5WVhCd1pYSXVjSEp2ZEc5MGVYQmxMbWx6VW1WaFkzUkRiMjF3YjI1bGJuUWdQU0I3ZlR0Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJRlJ2Y0V4bGRtVnNWM0poY0hCbGNpNWthWE53YkdGNVRtRnRaU0E5SUNkVWIzQk1aWFpsYkZkeVlYQndaWEluTzF4dWZWeHVWRzl3VEdWMlpXeFhjbUZ3Y0dWeUxuQnliM1J2ZEhsd1pTNXlaVzVrWlhJZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDOHZJSFJvYVhNdWNISnZjSE1nYVhNZ1lXTjBkV0ZzYkhrZ1lTQlNaV0ZqZEVWc1pXMWxiblJjYmlBZ2NtVjBkWEp1SUhSb2FYTXVjSEp2Y0hNN1hHNTlPMXh1WEc0dktpcGNiaUFxSUUxdmRXNTBhVzVuSUdseklIUm9aU0J3Y205alpYTnpJRzltSUdsdWFYUnBZV3hwZW1sdVp5QmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQmllU0JqY21WaGRHbHVaeUJwZEhOY2JpQXFJSEpsY0hKbGMyVnVkR0YwYVhabElFUlBUU0JsYkdWdFpXNTBjeUJoYm1RZ2FXNXpaWEowYVc1bklIUm9aVzBnYVc1MGJ5QmhJSE4xY0hCc2FXVmtJR0JqYjI1MFlXbHVaWEpnTGx4dUlDb2dRVzU1SUhCeWFXOXlJR052Ym5SbGJuUWdhVzV6YVdSbElHQmpiMjUwWVdsdVpYSmdJR2x6SUdSbGMzUnliM2xsWkNCcGJpQjBhR1VnY0hKdlkyVnpjeTVjYmlBcVhHNGdLaUFnSUZKbFlXTjBUVzkxYm5RdWNtVnVaR1Z5S0Z4dUlDb2dJQ0FnSUdOdmJYQnZibVZ1ZEN4Y2JpQXFJQ0FnSUNCa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2duWTI5dWRHRnBibVZ5SnlsY2JpQXFJQ0FnS1R0Y2JpQXFYRzRnS2lBZ0lEeGthWFlnYVdROVhDSmpiMjUwWVdsdVpYSmNJajRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEMwdElGTjFjSEJzYVdWa0lHQmpiMjUwWVdsdVpYSmdMbHh1SUNvZ0lDQWdJRHhrYVhZZ1pHRjBZUzF5WldGamRHbGtQVndpTGpOY0lqNGdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dExTQlNaVzVrWlhKbFpDQnlaV0ZqZEZKdmIzUWdiMllnVW1WaFkzUmNiaUFxSUNBZ0lDQWdJQzh2SUM0dUxpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJYQnZibVZ1ZEM1Y2JpQXFJQ0FnSUNBOEwyUnBkajVjYmlBcUlDQWdQQzlrYVhZK1hHNGdLbHh1SUNvZ1NXNXphV1JsSUc5bUlHQmpiMjUwWVdsdVpYSmdMQ0IwYUdVZ1ptbHljM1FnWld4bGJXVnVkQ0J5Wlc1a1pYSmxaQ0JwY3lCMGFHVWdYQ0p5WldGamRGSnZiM1JjSWk1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0I3WEc1Y2JpQWdWRzl3VEdWMlpXeFhjbUZ3Y0dWeU9pQlViM0JNWlhabGJGZHlZWEJ3WlhJc1hHNWNiaUFnTHlvcUlFVjRjRzl6WldRZ1ptOXlJR1JsWW5WbloybHVaeUJ3ZFhKd2IzTmxjeUFxS2k5Y2JpQWdYMmx1YzNSaGJtTmxjMEo1VW1WaFkzUlNiMjkwU1VRNklHbHVjM1JoYm1ObGMwSjVVbVZoWTNSU2IyOTBTVVFzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvYVhNZ2FYTWdZU0JvYjI5cklIQnliM1pwWkdWa0lIUnZJSE4xY0hCdmNuUWdjbVZ1WkdWeWFXNW5JRkpsWVdOMElHTnZiWEJ2Ym1WdWRITWdkMmhwYkdWY2JpQWdJQ29nWlc1emRYSnBibWNnZEdoaGRDQjBhR1VnWVhCd1lYSmxiblFnYzJOeWIyeHNJSEJ2YzJsMGFXOXVJRzltSUdsMGN5QmdZMjl1ZEdGcGJtVnlZQ0JrYjJWeklHNXZkRnh1SUNBZ0tpQmphR0Z1WjJVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUZSb1pTQmdZMjl1ZEdGcGJtVnlZQ0JpWldsdVp5QnlaVzVrWlhKbFpDQnBiblJ2TGx4dUlDQWdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0J5Wlc1a1pYSkRZV3hzWW1GamF5QlVhR2x6SUcxMWMzUWdZbVVnWTJGc2JHVmtJRzl1WTJVZ2RHOGdaRzhnZEdobElISmxibVJsY2k1Y2JpQWdJQ292WEc0Z0lITmpjbTlzYkUxdmJtbDBiM0k2SUdaMWJtTjBhVzl1SUNoamIyNTBZV2x1WlhJc0lISmxibVJsY2tOaGJHeGlZV05yS1NCN1hHNGdJQ0FnY21WdVpHVnlRMkZzYkdKaFkyc29LVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHRnJaU0JoSUdOdmJYQnZibVZ1ZENCMGFHRjBKM01nWVd4eVpXRmtlU0J0YjNWdWRHVmtJR2x1ZEc4Z2RHaGxJRVJQVFNCaGJtUWdjbVZ3YkdGalpTQnBkSE1nY0hKdmNITmNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnY0hKbGRrTnZiWEJ2Ym1WdWRDQmpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVWdZV3h5WldGa2VTQnBiaUIwYUdVZ1JFOU5YRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J1WlhoMFJXeGxiV1Z1ZENCamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVZ2RHOGdjbVZ1WkdWeVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlHTnZiblJoYVc1bGNpQjBieUJ5Wlc1a1pYSWdhVzUwYjF4dUlDQWdLaUJBY0dGeVlXMGdlejltZFc1amRHbHZibjBnWTJGc2JHSmhZMnNnWm5WdVkzUnBiMjRnZEhKcFoyZGxjbVZrSUc5dUlHTnZiWEJzWlhScGIyNWNiaUFnSUNvdlhHNGdJRjkxY0dSaGRHVlNiMjkwUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb2NISmxka052YlhCdmJtVnVkQ3dnYm1WNGRFVnNaVzFsYm5Rc0lHTnZiblJoYVc1bGNpd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQlNaV0ZqZEUxdmRXNTBMbk5qY205c2JFMXZibWwwYjNJb1kyOXVkR0ZwYm1WeUxDQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0JTWldGamRGVndaR0YwWlZGMVpYVmxMbVZ1Y1hWbGRXVkZiR1Z0Wlc1MFNXNTBaWEp1WVd3b2NISmxka052YlhCdmJtVnVkQ3dnYm1WNGRFVnNaVzFsYm5RcE8xeHVJQ0FnSUNBZ2FXWWdLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJQ0FnSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1V1Wlc1eGRXVjFaVU5oYkd4aVlXTnJTVzUwWlhKdVlXd29jSEpsZGtOdmJYQnZibVZ1ZEN3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUM4dklGSmxZMjl5WkNCMGFHVWdjbTl2ZENCbGJHVnRaVzUwSUdsdUlHTmhjMlVnYVhRZ2JHRjBaWElnWjJWMGN5QjBjbUZ1YzNCc1lXNTBaV1F1WEc0Z0lDQWdJQ0J5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVXMmRsZEZKbFlXTjBVbTl2ZEVsRUtHTnZiblJoYVc1bGNpbGRJRDBnWjJWMFVtVmhZM1JTYjI5MFJXeGxiV1Z1ZEVsdVEyOXVkR0ZwYm1WeUtHTnZiblJoYVc1bGNpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhCeVpYWkRiMjF3YjI1bGJuUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbFoybHpkR1Z5SUdFZ1kyOXRjRzl1Wlc1MElHbHVkRzhnZEdobElHbHVjM1JoYm1ObElHMWhjQ0JoYm1RZ2MzUmhjblJ6SUhOamNtOXNiQ0IyWVd4MVpWeHVJQ0FnS2lCdGIyNXBkRzl5YVc1blhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJRzVsZUhSRGIyMXdiMjVsYm5RZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObElIUnZJSEpsYm1SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlHTnZiblJoYVc1bGNpQmpiMjUwWVdsdVpYSWdkRzhnY21WdVpHVnlJR2x1ZEc5Y2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0J5WldGamRGSnZiM1FnU1VRZ2NISmxabWw0WEc0Z0lDQXFMMXh1SUNCZmNtVm5hWE4wWlhKRGIyMXdiMjVsYm5RNklHWjFibU4wYVc5dUlDaHVaWGgwUTI5dGNHOXVaVzUwTENCamIyNTBZV2x1WlhJcElIdGNiaUFnSUNBaEtHTnZiblJoYVc1bGNpQW1KaUFvWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkZURVZOUlU1VVgwNVBSRVZmVkZsUVJTQjhmQ0JqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFUlBRMTlPVDBSRlgxUlpVRVVnZkh3Z1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JFVDBOVlRVVk9WRjlHVWtGSFRVVk9WRjlPVDBSRlgxUlpVRVVwS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RmY21WbmFYTjBaWEpEYjIxd2IyNWxiblFvTGk0dUtUb2dWR0Z5WjJWMElHTnZiblJoYVc1bGNpQnBjeUJ1YjNRZ1lTQkVUMDBnWld4bGJXVnVkQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJdVpXNXpkWEpsVTJOeWIyeHNWbUZzZFdWTmIyNXBkRzl5YVc1bktDazdYRzVjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEUxdmRXNTBMbkpsWjJsemRHVnlRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdhVzV6ZEdGdVkyVnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMGdQU0J1WlhoMFEyOXRjRzl1Wlc1ME8xeHVJQ0FnSUhKbGRIVnliaUJ5WldGamRGSnZiM1JKUkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ1WkdWeUlHRWdibVYzSUdOdmJYQnZibVZ1ZENCcGJuUnZJSFJvWlNCRVQwMHVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J1WlhoMFJXeGxiV1Z1ZENCbGJHVnRaVzUwSUhSdklISmxibVJsY2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUdOdmJuUmhhVzVsY2lCamIyNTBZV2x1WlhJZ2RHOGdjbVZ1WkdWeUlHbHVkRzljYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQnphRzkxYkdSU1pYVnpaVTFoY210MWNDQnBaaUIzWlNCemFHOTFiR1FnYzJ0cGNDQjBhR1VnYldGeWEzVndJR2x1YzJWeWRHbHZibHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2JtVjRkRU52YlhCdmJtVnVkRnh1SUNBZ0tpOWNiaUFnWDNKbGJtUmxjazVsZDFKdmIzUkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQnphRzkxYkdSU1pYVnpaVTFoY210MWNDd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDOHZJRlpoY21sdmRYTWdjR0Z5ZEhNZ2IyWWdiM1Z5SUdOdlpHVWdLSE4xWTJnZ1lYTWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RbmMxeHVJQ0FnSUM4dklGOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5RcElHRnpjM1Z0WlNCMGFHRjBJR05oYkd4eklIUnZJSEpsYm1SbGNpQmhjbVZ1SjNRZ2JtVnpkR1ZrTzF4dUlDQWdJQzh2SUhabGNtbG1lU0IwYUdGMElIUm9ZWFFuY3lCMGFHVWdZMkZ6WlM1Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwOUlHNTFiR3dzSUNkZmNtVnVaR1Z5VG1WM1VtOXZkRU52YlhCdmJtVnVkQ2dwT2lCU1pXNWtaWElnYldWMGFHOWtjeUJ6YUc5MWJHUWdZbVVnWVNCd2RYSmxJR1oxYm1OMGFXOXVJQ2NnS3lBbmIyWWdjSEp2Y0hNZ1lXNWtJSE4wWVhSbE95QjBjbWxuWjJWeWFXNW5JRzVsYzNSbFpDQmpiMjF3YjI1bGJuUWdkWEJrWVhSbGN5Qm1jbTl0SUNjZ0t5QW5jbVZ1WkdWeUlHbHpJRzV2ZENCaGJHeHZkMlZrTGlCSlppQnVaV05sYzNOaGNua3NJSFJ5YVdkblpYSWdibVZ6ZEdWa0lIVndaR0YwWlhNZ2FXNGdKeUFySUNkamIyMXdiMjVsYm5SRWFXUlZjR1JoZEdVdUlFTm9aV05ySUhSb1pTQnlaVzVrWlhJZ2JXVjBhRzlrSUc5bUlDVnpMaWNzSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnSmlZZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZEM1blpYUk9ZVzFsS0NrZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1BTQnBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEtHNWxlSFJGYkdWdFpXNTBMQ0J1ZFd4c0tUdGNiaUFnSUNCMllYSWdjbVZoWTNSU2IyOTBTVVFnUFNCU1pXRmpkRTF2ZFc1MExsOXlaV2RwYzNSbGNrTnZiWEJ2Ym1WdWRDaGpiMjF3YjI1bGJuUkpibk4wWVc1alpTd2dZMjl1ZEdGcGJtVnlLVHRjYmx4dUlDQWdJQzh2SUZSb1pTQnBibWwwYVdGc0lISmxibVJsY2lCcGN5QnplVzVqYUhKdmJtOTFjeUJpZFhRZ1lXNTVJSFZ3WkdGMFpYTWdkR2hoZENCb1lYQndaVzRnWkhWeWFXNW5YRzRnSUNBZ0x5OGdjbVZ1WkdWeWFXNW5MQ0JwYmlCamIyMXdiMjVsYm5SWGFXeHNUVzkxYm5RZ2IzSWdZMjl0Y0c5dVpXNTBSR2xrVFc5MWJuUXNJSGRwYkd3Z1ltVWdZbUYwWTJobFpGeHVJQ0FnSUM4dklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1kzVnljbVZ1ZENCaVlYUmphR2x1WnlCemRISmhkR1ZuZVM1Y2JseHVJQ0FnSUZKbFlXTjBWWEJrWVhSbGN5NWlZWFJqYUdWa1ZYQmtZWFJsY3loaVlYUmphR1ZrVFc5MWJuUkRiMjF3YjI1bGJuUkpiblJ2VG05a1pTd2dZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJSEpsWVdOMFVtOXZkRWxFTENCamIyNTBZV2x1WlhJc0lITm9iM1ZzWkZKbGRYTmxUV0Z5YTNWd0xDQmpiMjUwWlhoMEtUdGNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBdkx5QlNaV052Y21RZ2RHaGxJSEp2YjNRZ1pXeGxiV1Z1ZENCcGJpQmpZWE5sSUdsMElHeGhkR1Z5SUdkbGRITWdkSEpoYm5Od2JHRnVkR1ZrTGx4dUlDQWdJQ0FnY205dmRFVnNaVzFsYm5SelFubFNaV0ZqZEZKdmIzUkpSRnR5WldGamRGSnZiM1JKUkYwZ1BTQm5aWFJTWldGamRGSnZiM1JGYkdWdFpXNTBTVzVEYjI1MFlXbHVaWElvWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGJtUmxjbk1nWVNCU1pXRmpkQ0JqYjIxd2IyNWxiblFnYVc1MGJ5QjBhR1VnUkU5TklHbHVJSFJvWlNCemRYQndiR2xsWkNCZ1kyOXVkR0ZwYm1WeVlDNWNiaUFnSUNwY2JpQWdJQ29nU1dZZ2RHaGxJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQjNZWE1nY0hKbGRtbHZkWE5zZVNCeVpXNWtaWEpsWkNCcGJuUnZJR0JqYjI1MFlXbHVaWEpnTENCMGFHbHpJSGRwYkd4Y2JpQWdJQ29nY0dWeVptOXliU0JoYmlCMWNHUmhkR1VnYjI0Z2FYUWdZVzVrSUc5dWJIa2diWFYwWVhSbElIUm9aU0JFVDAwZ1lYTWdibVZqWlhOellYSjVJSFJ2SUhKbFpteGxZM1FnZEdobFhHNGdJQ0FxSUd4aGRHVnpkQ0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJSEJoY21WdWRFTnZiWEJ2Ym1WdWRDQlVhR1VnWTI5dVkyVndkSFZoYkNCd1lYSmxiblFnYjJZZ2RHaHBjeUJ5Wlc1a1pYSWdkSEpsWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHNWxlSFJGYkdWdFpXNTBJRU52YlhCdmJtVnVkQ0JsYkdWdFpXNTBJSFJ2SUhKbGJtUmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0JqYjI1MFlXbHVaWElnUkU5TklHVnNaVzFsYm5RZ2RHOGdjbVZ1WkdWeUlHbHVkRzh1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJtZFc1amRHbHZiaUIwY21sbloyVnlaV1FnYjI0Z1kyOXRjR3hsZEdsdmJseHVJQ0FnS2lCQWNtVjBkWEp1SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnUTI5dGNHOXVaVzUwSUdsdWMzUmhibU5sSUhKbGJtUmxjbVZrSUdsdUlHQmpiMjUwWVdsdVpYSmdMbHh1SUNBZ0tpOWNiaUFnY21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWEk2SUdaMWJtTjBhVzl1SUNod1lYSmxiblJEYjIxd2IyNWxiblFzSUc1bGVIUkZiR1Z0Wlc1MExDQmpiMjUwWVdsdVpYSXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJU2h3WVhKbGJuUkRiMjF3YjI1bGJuUWdJVDBnYm5Wc2JDQW1KaUJ3WVhKbGJuUkRiMjF3YjI1bGJuUXVYM0psWVdOMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlNBaFBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R3WVhKbGJuUkRiMjF3YjI1bGJuUWdiWFZ6ZENCaVpTQmhJSFpoYkdsa0lGSmxZV04wSUVOdmJYQnZibVZ1ZENjcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnlaWFIxY200Z1VtVmhZM1JOYjNWdWRDNWZjbVZ1WkdWeVUzVmlkSEpsWlVsdWRHOURiMjUwWVdsdVpYSW9jR0Z5Wlc1MFEyOXRjRzl1Wlc1MExDQnVaWGgwUld4bGJXVnVkQ3dnWTI5dWRHRnBibVZ5TENCallXeHNZbUZqYXlrN1hHNGdJSDBzWEc1Y2JpQWdYM0psYm1SbGNsTjFZblJ5WldWSmJuUnZRMjl1ZEdGcGJtVnlPaUJtZFc1amRHbHZiaUFvY0dGeVpXNTBRMjl0Y0c5dVpXNTBMQ0J1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDRlNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUW9ibVY0ZEVWc1pXMWxiblFwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFJFOU5MbkpsYm1SbGNpZ3BPaUJKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JsYkdWdFpXNTBMaVZ6Snl3Z2RIbHdaVzltSUc1bGVIUkZiR1Z0Wlc1MElEMDlQU0FuYzNSeWFXNW5KeUEvSUNjZ1NXNXpkR1ZoWkNCdlppQndZWE56YVc1bklHRnVJR1ZzWlcxbGJuUWdjM1J5YVc1bkxDQnRZV3RsSUhOMWNtVWdkRzhnYVc1emRHRnVkR2xoZEdVZ0p5QXJJQ2RwZENCaWVTQndZWE56YVc1bklHbDBJSFJ2SUZKbFlXTjBMbU55WldGMFpVVnNaVzFsYm5RdUp5QTZJSFI1Y0dWdlppQnVaWGgwUld4bGJXVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5QS9JQ2NnU1c1emRHVmhaQ0J2WmlCd1lYTnphVzVuSUdFZ1kyOXRjRzl1Wlc1MElHTnNZWE56TENCdFlXdGxJSE4xY21VZ2RHOGdhVzV6ZEdGdWRHbGhkR1VnSnlBcklDZHBkQ0JpZVNCd1lYTnphVzVuSUdsMElIUnZJRkpsWVdOMExtTnlaV0YwWlVWc1pXMWxiblF1SnlBNlhHNGdJQ0FnTHk4Z1EyaGxZMnNnYVdZZ2FYUWdjWFZoWTJ0eklHeHBhMlVnWVc0Z1pXeGxiV1Z1ZEZ4dUlDQWdJRzVsZUhSRmJHVnRaVzUwSUNFOUlHNTFiR3dnSmlZZ2JtVjRkRVZzWlcxbGJuUXVjSEp2Y0hNZ0lUMDlJSFZ1WkdWbWFXNWxaQ0EvSUNjZ1ZHaHBjeUJ0WVhrZ1ltVWdZMkYxYzJWa0lHSjVJSFZ1YVc1MFpXNTBhVzl1WVd4c2VTQnNiMkZrYVc1bklIUjNieUJwYm1SbGNHVnVaR1Z1ZENBbklDc2dKMk52Y0dsbGN5QnZaaUJTWldGamRDNG5JRG9nSnljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGamIyNTBZV2x1WlhJZ2ZId2dJV052Ym5SaGFXNWxjaTUwWVdkT1lXMWxJSHg4SUdOdmJuUmhhVzVsY2k1MFlXZE9ZVzFsTG5SdlZYQndaWEpEWVhObEtDa2dJVDA5SUNkQ1QwUlpKeXdnSjNKbGJtUmxjaWdwT2lCU1pXNWtaWEpwYm1jZ1kyOXRjRzl1Wlc1MGN5QmthWEpsWTNSc2VTQnBiblJ2SUdSdlkzVnRaVzUwTG1KdlpIa2dhWE1nSnlBcklDZGthWE5qYjNWeVlXZGxaQ3dnYzJsdVkyVWdhWFJ6SUdOb2FXeGtjbVZ1SUdGeVpTQnZablJsYmlCdFlXNXBjSFZzWVhSbFpDQmllU0IwYUdseVpDMXdZWEowZVNBbklDc2dKM05qY21sd2RITWdZVzVrSUdKeWIzZHpaWElnWlhoMFpXNXphVzl1Y3k0Z1ZHaHBjeUJ0WVhrZ2JHVmhaQ0IwYnlCemRXSjBiR1VnSnlBcklDZHlaV052Ym1OcGJHbGhkR2x2YmlCcGMzTjFaWE11SUZSeWVTQnlaVzVrWlhKcGJtY2dhVzUwYnlCaElHTnZiblJoYVc1bGNpQmxiR1Z0Wlc1MElHTnlaV0YwWldRZ0p5QXJJQ2RtYjNJZ2VXOTFjaUJoY0hBdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ2JtVjRkRmR5WVhCd1pXUkZiR1Z0Wlc1MElEMGdibVYzSUZKbFlXTjBSV3hsYldWdWRDaFViM0JNWlhabGJGZHlZWEJ3WlhJc0lHNTFiR3dzSUc1MWJHd3NJRzUxYkd3c0lHNTFiR3dzSUc1MWJHd3NJRzVsZUhSRmJHVnRaVzUwS1R0Y2JseHVJQ0FnSUhaaGNpQndjbVYyUTI5dGNHOXVaVzUwSUQwZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEZKdmIzUkpSRnRuWlhSU1pXRmpkRkp2YjNSSlJDaGpiMjUwWVdsdVpYSXBYVHRjYmx4dUlDQWdJR2xtSUNod2NtVjJRMjl0Y0c5dVpXNTBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2NISmxkbGR5WVhCd1pXUkZiR1Z0Wlc1MElEMGdjSEpsZGtOdmJYQnZibVZ1ZEM1ZlkzVnljbVZ1ZEVWc1pXMWxiblE3WEc0Z0lDQWdJQ0IyWVhJZ2NISmxka1ZzWlcxbGJuUWdQU0J3Y21WMlYzSmhjSEJsWkVWc1pXMWxiblF1Y0hKdmNITTdYRzRnSUNBZ0lDQnBaaUFvYzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvY0hKbGRrVnNaVzFsYm5Rc0lHNWxlSFJGYkdWdFpXNTBLU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjSFZpYkdsalNXNXpkQ0E5SUhCeVpYWkRiMjF3YjI1bGJuUXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBMbWRsZEZCMVlteHBZMGx1YzNSaGJtTmxLQ2s3WEc0Z0lDQWdJQ0FnSUhaaGNpQjFjR1JoZEdWa1EyRnNiR0poWTJzZ1BTQmpZV3hzWW1GamF5QW1KaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMkZzYkdKaFkyc3VZMkZzYkNod2RXSnNhV05KYm5OMEtUdGNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnVW1WaFkzUk5iM1Z1ZEM1ZmRYQmtZWFJsVW05dmRFTnZiWEJ2Ym1WdWRDaHdjbVYyUTI5dGNHOXVaVzUwTENCdVpYaDBWM0poY0hCbFpFVnNaVzFsYm5Rc0lHTnZiblJoYVc1bGNpd2dkWEJrWVhSbFpFTmhiR3hpWVdOcktUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIQjFZbXhwWTBsdWMzUTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQlNaV0ZqZEUxdmRXNTBMblZ1Ylc5MWJuUkRiMjF3YjI1bGJuUkJkRTV2WkdVb1kyOXVkR0ZwYm1WeUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdjbVZoWTNSU2IyOTBSV3hsYldWdWRDQTlJR2RsZEZKbFlXTjBVbTl2ZEVWc1pXMWxiblJKYmtOdmJuUmhhVzVsY2loamIyNTBZV2x1WlhJcE8xeHVJQ0FnSUhaaGNpQmpiMjUwWVdsdVpYSklZWE5TWldGamRFMWhjbXQxY0NBOUlISmxZV04wVW05dmRFVnNaVzFsYm5RZ0ppWWdJU0ZwYm5SbGNtNWhiRWRsZEVsRUtISmxZV04wVW05dmRFVnNaVzFsYm5RcE8xeHVJQ0FnSUhaaGNpQmpiMjUwWVdsdVpYSklZWE5PYjI1U2IyOTBVbVZoWTNSRGFHbHNaQ0E5SUdoaGMwNXZibEp2YjNSU1pXRmpkRU5vYVd4a0tHTnZiblJoYVc1bGNpazdYRzVjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JV052Ym5SaGFXNWxja2hoYzA1dmJsSnZiM1JTWldGamRFTm9hV3hrTENBbmNtVnVaR1Z5S0M0dUxpazZJRkpsY0d4aFkybHVaeUJTWldGamRDMXlaVzVrWlhKbFpDQmphR2xzWkhKbGJpQjNhWFJvSUdFZ2JtVjNJSEp2YjNRZ0p5QXJJQ2RqYjIxd2IyNWxiblF1SUVsbUlIbHZkU0JwYm5SbGJtUmxaQ0IwYnlCMWNHUmhkR1VnZEdobElHTm9hV3hrY21WdUlHOW1JSFJvYVhNZ2JtOWtaU3dnSnlBcklDZDViM1VnYzJodmRXeGtJR2x1YzNSbFlXUWdhR0YyWlNCMGFHVWdaWGhwYzNScGJtY2dZMmhwYkdSeVpXNGdkWEJrWVhSbElIUm9aV2x5SUhOMFlYUmxJQ2NnS3lBbllXNWtJSEpsYm1SbGNpQjBhR1VnYm1WM0lHTnZiWEJ2Ym1WdWRITWdhVzV6ZEdWaFpDQnZaaUJqWVd4c2FXNW5JRkpsWVdOMFJFOU5MbkpsYm1SbGNpNG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ2FXWWdLQ0ZqYjI1MFlXbHVaWEpJWVhOU1pXRmpkRTFoY210MWNDQjhmQ0J5WldGamRGSnZiM1JGYkdWdFpXNTBMbTVsZUhSVGFXSnNhVzVuS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ5YjI5MFJXeGxiV1Z1ZEZOcFlteHBibWNnUFNCeVpXRmpkRkp2YjNSRmJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvY205dmRFVnNaVzFsYm5SVGFXSnNhVzVuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dsdWRHVnlibUZzUjJWMFNVUW9jbTl2ZEVWc1pXMWxiblJUYVdKc2FXNW5LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2R5Wlc1a1pYSW9LVG9nVkdGeVoyVjBJRzV2WkdVZ2FHRnpJRzFoY210MWNDQnlaVzVrWlhKbFpDQmllU0JTWldGamRDd2dZblYwSUhSb1pYSmxJQ2NnS3lBbllYSmxJSFZ1Y21Wc1lYUmxaQ0J1YjJSbGN5QmhjeUIzWld4c0xpQlVhR2x6SUdseklHMXZjM1FnWTI5dGJXOXViSGtnWTJGMWMyVmtJR0o1SUNjZ0t5QW5kMmhwZEdVdGMzQmhZMlVnYVc1elpYSjBaV1FnWVhKdmRXNWtJSE5sY25abGNpMXlaVzVrWlhKbFpDQnRZWEpyZFhBdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnY205dmRFVnNaVzFsYm5SVGFXSnNhVzVuSUQwZ2NtOXZkRVZzWlcxbGJuUlRhV0pzYVc1bkxtNWxlSFJUYVdKc2FXNW5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhOb2IzVnNaRkpsZFhObFRXRnlhM1Z3SUQwZ1kyOXVkR0ZwYm1WeVNHRnpVbVZoWTNSTllYSnJkWEFnSmlZZ0lYQnlaWFpEYjIxd2IyNWxiblFnSmlZZ0lXTnZiblJoYVc1bGNraGhjMDV2YmxKdmIzUlNaV0ZqZEVOb2FXeGtPMXh1SUNBZ0lIWmhjaUJqYjIxd2IyNWxiblFnUFNCU1pXRmpkRTF2ZFc1MExsOXlaVzVrWlhKT1pYZFNiMjkwUTI5dGNHOXVaVzUwS0c1bGVIUlhjbUZ3Y0dWa1JXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQnphRzkxYkdSU1pYVnpaVTFoY210MWNDd2djR0Z5Wlc1MFEyOXRjRzl1Wlc1MElDRTlJRzUxYkd3Z1B5QndZWEpsYm5SRGIyMXdiMjVsYm5RdVgzSmxZV04wU1c1MFpYSnVZV3hKYm5OMFlXNWpaUzVmY0hKdlkyVnpjME5vYVd4a1EyOXVkR1Y0ZENod1lYSmxiblJEYjIxd2IyNWxiblF1WDNKbFlXTjBTVzUwWlhKdVlXeEpibk4wWVc1alpTNWZZMjl1ZEdWNGRDa2dPaUJsYlhCMGVVOWlhbVZqZENrdVgzSmxibVJsY21Wa1EyOXRjRzl1Wlc1MExtZGxkRkIxWW14cFkwbHVjM1JoYm1ObEtDazdYRzRnSUNBZ2FXWWdLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJQ0JqWVd4c1ltRmpheTVqWVd4c0tHTnZiWEJ2Ym1WdWRDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYjIxd2IyNWxiblE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxibVJsY25NZ1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2FXNTBieUIwYUdVZ1JFOU5JR2x1SUhSb1pTQnpkWEJ3YkdsbFpDQmdZMjl1ZEdGcGJtVnlZQzVjYmlBZ0lDcGNiaUFnSUNvZ1NXWWdkR2hsSUZKbFlXTjBJR052YlhCdmJtVnVkQ0IzWVhNZ2NISmxkbWx2ZFhOc2VTQnlaVzVrWlhKbFpDQnBiblJ2SUdCamIyNTBZV2x1WlhKZ0xDQjBhR2x6SUhkcGJHeGNiaUFnSUNvZ2NHVnlabTl5YlNCaGJpQjFjR1JoZEdVZ2IyNGdhWFFnWVc1a0lHOXViSGtnYlhWMFlYUmxJSFJvWlNCRVQwMGdZWE1nYm1WalpYTnpZWEo1SUhSdklISmxabXhsWTNRZ2RHaGxYRzRnSUNBcUlHeGhkR1Z6ZENCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J1WlhoMFJXeGxiV1Z1ZENCRGIyMXdiMjVsYm5RZ1pXeGxiV1Z1ZENCMGJ5QnlaVzVrWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJSFJ2SUhKbGJtUmxjaUJwYm5SdkxseHVJQ0FnS2lCQWNHRnlZVzBnZXo5bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1puVnVZM1JwYjI0Z2RISnBaMmRsY21Wa0lHOXVJR052YlhCc1pYUnBiMjVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVbVZoWTNSRGIyMXdiMjVsYm5SOUlFTnZiWEJ2Ym1WdWRDQnBibk4wWVc1alpTQnlaVzVrWlhKbFpDQnBiaUJnWTI5dWRHRnBibVZ5WUM1Y2JpQWdJQ292WEc0Z0lISmxibVJsY2pvZ1puVnVZM1JwYjI0Z0tHNWxlSFJGYkdWdFpXNTBMQ0JqYjI1MFlXbHVaWElzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnY21WMGRYSnVJRkpsWVdOMFRXOTFiblF1WDNKbGJtUmxjbE4xWW5SeVpXVkpiblJ2UTI5dWRHRnBibVZ5S0c1MWJHd3NJRzVsZUhSRmJHVnRaVzUwTENCamIyNTBZV2x1WlhJc0lHTmhiR3hpWVdOcktUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WbmFYTjBaWEp6SUdFZ1kyOXVkR0ZwYm1WeUlHNXZaR1VnYVc1MGJ5QjNhR2xqYUNCU1pXRmpkQ0JqYjIxd2IyNWxiblJ6SUhkcGJHd2dZbVVnY21WdVpHVnlaV1F1WEc0Z0lDQXFJRlJvYVhNZ1lXeHpieUJqY21WaGRHVnpJSFJvWlNCY0luSmxZV04wVW05dmRGd2lJRWxFSUhSb1lYUWdkMmxzYkNCaVpTQmhjM05wWjI1bFpDQjBieUIwYUdVZ1pXeGxiV1Z1ZEZ4dUlDQWdLaUJ5Wlc1a1pYSmxaQ0IzYVhSb2FXNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJSFJ2SUhKbFoybHpkR1Z5SUdGeklHRWdZMjl1ZEdGcGJtVnlMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlGUm9aU0JjSW5KbFlXTjBVbTl2ZEZ3aUlFbEVJRzltSUdWc1pXMWxiblJ6SUhKbGJtUmxjbVZrSUhkcGRHaHBiaTVjYmlBZ0lDb3ZYRzRnSUhKbFoybHpkR1Z5UTI5dWRHRnBibVZ5T2lCbWRXNWpkR2x2YmlBb1kyOXVkR0ZwYm1WeUtTQjdYRzRnSUNBZ2RtRnlJSEpsWVdOMFVtOXZkRWxFSUQwZ1oyVjBVbVZoWTNSU2IyOTBTVVFvWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0JwWmlBb2NtVmhZM1JTYjI5MFNVUXBJSHRjYmlBZ0lDQWdJQzh2SUVsbUlHOXVaU0JsZUdsemRITXNJRzFoYTJVZ2MzVnlaU0JwZENCcGN5QmhJSFpoYkdsa0lGd2ljbVZoWTNSU2IyOTBYQ0lnU1VRdVhHNGdJQ0FnSUNCeVpXRmpkRkp2YjNSSlJDQTlJRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TG1kbGRGSmxZV04wVW05dmRFbEVSbkp2YlU1dlpHVkpSQ2h5WldGamRGSnZiM1JKUkNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNnaGNtVmhZM1JTYjI5MFNVUXBJSHRjYmlBZ0lDQWdJQzh2SUU1dklIWmhiR2xrSUZ3aWNtVmhZM1JTYjI5MFhDSWdTVVFnWm05MWJtUXNJR055WldGMFpTQnZibVV1WEc0Z0lDQWdJQ0J5WldGamRGSnZiM1JKUkNBOUlGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMbU55WldGMFpWSmxZV04wVW05dmRFbEVLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZiblJoYVc1bGNuTkNlVkpsWVdOMFVtOXZkRWxFVzNKbFlXTjBVbTl2ZEVsRVhTQTlJR052Ym5SaGFXNWxjanRjYmlBZ0lDQnlaWFIxY200Z2NtVmhZM1JTYjI5MFNVUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWdWJXOTFiblJ6SUdGdVpDQmtaWE4wY205NWN5QjBhR1VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJSEpsYm1SbGNtVmtJR2x1SUhSb1pTQmdZMjl1ZEdGcGJtVnlZQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZiR1Z0Wlc1MGZTQmpiMjUwWVdsdVpYSWdSRTlOSUdWc1pXMWxiblFnWTI5dWRHRnBibWx1WnlCaElGSmxZV04wSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUJoSUdOdmJYQnZibVZ1ZENCM1lYTWdabTkxYm1RZ2FXNGdZVzVrSUhWdWJXOTFiblJsWkNCbWNtOXRYRzRnSUNBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQmpiMjUwWVdsdVpYSmdYRzRnSUNBcUwxeHVJQ0IxYm0xdmRXNTBRMjl0Y0c5dVpXNTBRWFJPYjJSbE9pQm1kVzVqZEdsdmJpQW9ZMjl1ZEdGcGJtVnlLU0I3WEc0Z0lDQWdMeThnVm1GeWFXOTFjeUJ3WVhKMGN5QnZaaUJ2ZFhJZ1kyOWtaU0FvYzNWamFDQmhjeUJTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRDZHpYRzRnSUNBZ0x5OGdYM0psYm1SbGNsWmhiR2xrWVhSbFpFTnZiWEJ2Ym1WdWRDa2dZWE56ZFcxbElIUm9ZWFFnWTJGc2JITWdkRzhnY21WdVpHVnlJR0Z5Wlc0bmRDQnVaWE4wWldRN1hHNGdJQ0FnTHk4Z2RtVnlhV1o1SUhSb1lYUWdkR2hoZENkeklIUm9aU0JqWVhObExpQW9VM1J5YVdOMGJIa2djM0JsWVd0cGJtY3NJSFZ1Ylc5MWJuUnBibWNnZDI5dUozUWdZMkYxYzJVZ1lWeHVJQ0FnSUM4dklISmxibVJsY2lCaWRYUWdkMlVnYzNScGJHd2daRzl1SjNRZ1pYaHdaV04wSUhSdklHSmxJR2x1SUdFZ2NtVnVaR1Z5SUdOaGJHd2dhR1Z5WlM0cFhHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENBOVBTQnVkV3hzTENBbmRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaU2dwT2lCU1pXNWtaWElnYldWMGFHOWtjeUJ6YUc5MWJHUWdZbVVnWVNCd2RYSmxJR1oxYm1OMGFXOXVJQ2NnS3lBbmIyWWdjSEp2Y0hNZ1lXNWtJSE4wWVhSbE95QjBjbWxuWjJWeWFXNW5JRzVsYzNSbFpDQmpiMjF3YjI1bGJuUWdkWEJrWVhSbGN5Qm1jbTl0SUhKbGJtUmxjaUFuSUNzZ0oybHpJRzV2ZENCaGJHeHZkMlZrTGlCSlppQnVaV05sYzNOaGNua3NJSFJ5YVdkblpYSWdibVZ6ZEdWa0lIVndaR0YwWlhNZ2FXNGdKeUFySUNkamIyMXdiMjVsYm5SRWFXUlZjR1JoZEdVdUlFTm9aV05ySUhSb1pTQnlaVzVrWlhJZ2JXVjBhRzlrSUc5bUlDVnpMaWNzSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnSmlZZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZEM1blpYUk9ZVzFsS0NrZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0FoS0dOdmJuUmhhVzVsY2lBbUppQW9ZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJRDA5UFNCRlRFVk5SVTVVWDA1UFJFVmZWRmxRUlNCOGZDQmpiMjUwWVdsdVpYSXVibTlrWlZSNWNHVWdQVDA5SUVSUFExOU9UMFJGWDFSWlVFVWdmSHdnWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkVUME5WVFVWT1ZGOUdVa0ZIVFVWT1ZGOU9UMFJGWDFSWlVFVXBLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZDFibTF2ZFc1MFEyOXRjRzl1Wlc1MFFYUk9iMlJsS0M0dUxpazZJRlJoY21kbGRDQmpiMjUwWVdsdVpYSWdhWE1nYm05MElHRWdSRTlOSUdWc1pXMWxiblF1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdkbUZ5SUhKbFlXTjBVbTl2ZEVsRUlEMGdaMlYwVW1WaFkzUlNiMjkwU1VRb1kyOXVkR0ZwYm1WeUtUdGNiaUFnSUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnYVc1emRHRnVZMlZ6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjA3WEc0Z0lDQWdhV1lnS0NGamIyMXdiMjVsYm5RcElIdGNiaUFnSUNBZ0lDOHZJRU5vWldOcklHbG1JSFJvWlNCdWIyUmxJR0psYVc1bklIVnViVzkxYm5SbFpDQjNZWE1nY21WdVpHVnlaV1FnWW5rZ1VtVmhZM1FzSUdKMWRDQnBjMjRuZENCaFhHNGdJQ0FnSUNBdkx5QnliMjkwSUc1dlpHVXVYRzRnSUNBZ0lDQjJZWElnWTI5dWRHRnBibVZ5U0dGelRtOXVVbTl2ZEZKbFlXTjBRMmhwYkdRZ1BTQm9ZWE5PYjI1U2IyOTBVbVZoWTNSRGFHbHNaQ2hqYjI1MFlXbHVaWElwTzF4dVhHNGdJQ0FnSUNBdkx5QkRhR1ZqYXlCcFppQjBhR1VnWTI5dWRHRnBibVZ5SUdsMGMyVnNaaUJwY3lCaElGSmxZV04wSUhKdmIzUWdibTlrWlM1Y2JpQWdJQ0FnSUhaaGNpQmpiMjUwWVdsdVpYSkpSQ0E5SUdsdWRHVnlibUZzUjJWMFNVUW9ZMjl1ZEdGcGJtVnlLVHRjYmlBZ0lDQWdJSFpoY2lCcGMwTnZiblJoYVc1bGNsSmxZV04wVW05dmRDQTlJR052Ym5SaGFXNWxja2xFSUNZbUlHTnZiblJoYVc1bGNrbEVJRDA5UFNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NW5aWFJTWldGamRGSnZiM1JKUkVaeWIyMU9iMlJsU1VRb1kyOXVkR0ZwYm1WeVNVUXBPMXh1WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaFkyOXVkR0ZwYm1WeVNHRnpUbTl1VW05dmRGSmxZV04wUTJocGJHUXNJQ2QxYm0xdmRXNTBRMjl0Y0c5dVpXNTBRWFJPYjJSbEtDazZJRlJvWlNCdWIyUmxJSGx2ZFZ4Y0ozSmxJR0YwZEdWdGNIUnBibWNnZEc4Z2RXNXRiM1Z1ZENBbklDc2dKM2RoY3lCeVpXNWtaWEpsWkNCaWVTQlNaV0ZqZENCaGJtUWdhWE1nYm05MElHRWdkRzl3TFd4bGRtVnNJR052Ym5SaGFXNWxjaTRnSlhNbkxDQnBjME52Ym5SaGFXNWxjbEpsWVdOMFVtOXZkQ0EvSUNkWmIzVWdiV0Y1SUdoaGRtVWdZV05qYVdSbGJuUmhiR3g1SUhCaGMzTmxaQ0JwYmlCaElGSmxZV04wSUhKdmIzUWdibTlrWlNCcGJuTjBaV0ZrSUNjZ0t5QW5iMllnYVhSeklHTnZiblJoYVc1bGNpNG5JRG9nSjBsdWMzUmxZV1FzSUdoaGRtVWdkR2hsSUhCaGNtVnVkQ0JqYjIxd2IyNWxiblFnZFhCa1lYUmxJR2wwY3lCemRHRjBaU0JoYm1RZ0p5QXJJQ2R5WlhKbGJtUmxjaUJwYmlCdmNtUmxjaUIwYnlCeVpXMXZkbVVnZEdocGN5QmpiMjF3YjI1bGJuUXVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQjlYRzRnSUNBZ1VtVmhZM1JWY0dSaGRHVnpMbUpoZEdOb1pXUlZjR1JoZEdWektIVnViVzkxYm5SRGIyMXdiMjVsYm5SR2NtOXRUbTlrWlN3Z1kyOXRjRzl1Wlc1MExDQmpiMjUwWVdsdVpYSXBPMXh1SUNBZ0lHUmxiR1YwWlNCcGJuTjBZVzVqWlhOQ2VWSmxZV04wVW05dmRFbEVXM0psWVdOMFVtOXZkRWxFWFR0Y2JpQWdJQ0JrWld4bGRHVWdZMjl1ZEdGcGJtVnljMEo1VW1WaFkzUlNiMjkwU1VSYmNtVmhZM1JTYjI5MFNVUmRPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCa1pXeGxkR1VnY205dmRFVnNaVzFsYm5SelFubFNaV0ZqZEZKdmIzUkpSRnR5WldGamRGSnZiM1JKUkYwN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdhVzVrY3lCMGFHVWdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSb1lYUWdZMjl1ZEdGcGJuTWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElIUnZJSGRvYVdOb0lIUm9aVnh1SUNBZ0tpQnpkWEJ3YkdsbFpDQkVUMDBnWUdsa1lDQmlaV3h2Ym1kekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnVkdobElFbEVJRzltSUdGdUlHVnNaVzFsYm5RZ2NtVnVaR1Z5WldRZ1lua2dZU0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQnlaWFIxY200Z2V6OUVUMDFGYkdWdFpXNTBmU0JFVDAwZ1pXeGxiV1Z1ZENCMGFHRjBJR052Ym5SaGFXNXpJSFJvWlNCZ2FXUmdMbHh1SUNBZ0tpOWNiaUFnWm1sdVpGSmxZV04wUTI5dWRHRnBibVZ5Um05eVNVUTZJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUhaaGNpQnlaV0ZqZEZKdmIzUkpSQ0E5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtZGxkRkpsWVdOMFVtOXZkRWxFUm5KdmJVNXZaR1ZKUkNocFpDazdYRzRnSUNBZ2RtRnlJR052Ym5SaGFXNWxjaUE5SUdOdmJuUmhhVzVsY25OQ2VWSmxZV04wVW05dmRFbEVXM0psWVdOMFVtOXZkRWxFWFR0Y2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVhJZ2NtOXZkRVZzWlcxbGJuUWdQU0J5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVXM0psWVdOMFVtOXZkRWxFWFR0Y2JpQWdJQ0FnSUdsbUlDaHliMjkwUld4bGJXVnVkQ0FtSmlCeWIyOTBSV3hsYldWdWRDNXdZWEpsYm5ST2IyUmxJQ0U5UFNCamIyNTBZV2x1WlhJcElIdGNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWEc0Z0lDQWdJQ0FnSUM4dklFTmhiR3dnYVc1MFpYSnVZV3hIWlhSSlJDQm9aWEpsSUdKbFkyRjFjMlVnWjJWMFNVUWdZMkZzYkhNZ2FYTldZV3hwWkNCM2FHbGphQ0JqWVd4c2MxeHVJQ0FnSUNBZ0lDQXZMeUJtYVc1a1VtVmhZM1JEYjI1MFlXbHVaWEpHYjNKSlJDQW9kR2hwY3lCbWRXNWpkR2x2YmlrdVhHNGdJQ0FnSUNBZ0lHbHVkR1Z5Ym1Gc1IyVjBTVVFvY205dmRFVnNaVzFsYm5RcElEMDlQU0J5WldGamRGSnZiM1JKUkN3Z0oxSmxZV04wVFc5MWJuUTZJRkp2YjNRZ1pXeGxiV1Z1ZENCSlJDQmthV1ptWlhKbFpDQm1jbTl0SUhKbFlXTjBVbTl2ZEVsRUxpY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNCMllYSWdZMjl1ZEdGcGJtVnlRMmhwYkdRZ1BTQmpiMjUwWVdsdVpYSXVabWx5YzNSRGFHbHNaRHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZiblJoYVc1bGNrTm9hV3hrSUNZbUlISmxZV04wVW05dmRFbEVJRDA5UFNCcGJuUmxjbTVoYkVkbGRFbEVLR052Ym5SaGFXNWxja05vYVd4a0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFbG1JSFJvWlNCamIyNTBZV2x1WlhJZ2FHRnpJR0VnYm1WM0lHTm9hV3hrSUhkcGRHZ2dkR2hsSUhOaGJXVWdTVVFnWVhNZ2RHaGxJRzlzWkZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSEp2YjNRZ1pXeGxiV1Z1ZEN3Z2RHaGxiaUJ5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVXM0psWVdOMFVtOXZkRWxFWFNCcGMxeHVJQ0FnSUNBZ0lDQWdJQzh2SUdwMWMzUWdjM1JoYkdVZ1lXNWtJRzVsWldSeklIUnZJR0psSUhWd1pHRjBaV1F1SUZSb1pTQmpZWE5sSUhSb1lYUWdaR1Z6WlhKMlpYTWdZVnh1SUNBZ0lDQWdJQ0FnSUM4dklIZGhjbTVwYm1jZ2FYTWdkMmhsYmlCMGFHVWdZMjl1ZEdGcGJtVnlJR2x6SUdWdGNIUjVMbHh1SUNBZ0lDQWdJQ0FnSUhKdmIzUkZiR1Z0Wlc1MGMwSjVVbVZoWTNSU2IyOTBTVVJiY21WaFkzUlNiMjkwU1VSZElEMGdZMjl1ZEdGcGJtVnlRMmhwYkdRN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RTWldGamRFMXZkVzUwT2lCU2IyOTBJR1ZzWlcxbGJuUWdhR0Z6SUdKbFpXNGdjbVZ0YjNabFpDQm1jbTl0SUdsMGN5QnZjbWxuYVc1aGJDQW5JQ3NnSjJOdmJuUmhhVzVsY2k0Z1RtVjNJR052Ym5SaGFXNWxjam9nSlhNbkxDQnliMjkwUld4bGJXVnVkQzV3WVhKbGJuUk9iMlJsS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCamIyNTBZV2x1WlhJN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVpwYm1SeklHRnVJR1ZzWlcxbGJuUWdjbVZ1WkdWeVpXUWdZbmtnVW1WaFkzUWdkMmwwYUNCMGFHVWdjM1Z3Y0d4cFpXUWdTVVF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQkpSQ0J2WmlCaElFUlBUU0J1YjJSbElHbHVJSFJvWlNCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJQVFVWc1pXMWxiblI5SUZKdmIzUWdSRTlOSUc1dlpHVWdiMllnZEdobElGSmxZV04wSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ292WEc0Z0lHWnBibVJTWldGamRFNXZaR1ZDZVVsRU9pQm1kVzVqZEdsdmJpQW9hV1FwSUh0Y2JpQWdJQ0IyWVhJZ2NtVmhZM1JTYjI5MElEMGdVbVZoWTNSTmIzVnVkQzVtYVc1a1VtVmhZM1JEYjI1MFlXbHVaWEpHYjNKSlJDaHBaQ2s3WEc0Z0lDQWdjbVYwZFhKdUlGSmxZV04wVFc5MWJuUXVabWx1WkVOdmJYQnZibVZ1ZEZKdmIzUW9jbVZoWTNSU2IyOTBMQ0JwWkNrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJ5WVhabGNuTmxjeUIxY0NCMGFHVWdZVzVqWlhOMGIzSnpJRzltSUhSb1pTQnpkWEJ3YkdsbFpDQnViMlJsSUhSdklHWnBibVFnWVNCdWIyUmxJSFJvWVhRZ2FYTWdZVnh1SUNBZ0tpQkVUMDBnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnWVNCU1pXRmpkQ0JqYjIxd2IyNWxiblFnY21WdVpHVnlaV1FnWW5rZ2RHaHBjeUJqYjNCNUlHOW1JRkpsWVdOMExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdleXA5SUc1dlpHVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AwUlBUVVYyWlc1MFZHRnlaMlYwZlZ4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdkbGRFWnBjbk4wVW1WaFkzUkVUMDA2SUdaMWJtTjBhVzl1SUNodWIyUmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWnBibVJHYVhKemRGSmxZV04wUkU5TlNXMXdiQ2h1YjJSbEtUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUm1sdVpITWdZU0J1YjJSbElIZHBkR2dnZEdobElITjFjSEJzYVdWa0lHQjBZWEpuWlhSSlJHQWdhVzV6YVdSbElHOW1JSFJvWlNCemRYQndiR2xsWkZ4dUlDQWdLaUJnWVc1alpYTjBiM0pPYjJSbFlDNGdJRVY0Y0d4dmFYUnpJSFJvWlNCSlJDQnVZVzFwYm1jZ2MyTm9aVzFsSUhSdklIQmxjbVp2Y20wZ2RHaGxJSE5sWVhKamFGeHVJQ0FnS2lCeGRXbGphMng1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVYyWlc1MFZHRnlaMlYwZlNCaGJtTmxjM1J2Y2s1dlpHVWdVMlZoY21Ob0lHWnliMjBnZEdocGN5QnliMjkwTGx4dUlDQWdLaUJBY0dGeVlYSnRJSHR6ZEhKcGJtZDlJSFJoY21kbGRFbEVJRWxFSUc5bUlIUm9aU0JFVDAwZ2NtVndjbVZ6Wlc1MFlYUnBiMjRnYjJZZ2RHaGxJR052YlhCdmJtVnVkQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSRTlOUlhabGJuUlVZWEpuWlhSOUlFUlBUU0J1YjJSbElIZHBkR2dnZEdobElITjFjSEJzYVdWa0lHQjBZWEpuWlhSSlJHQXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdabWx1WkVOdmJYQnZibVZ1ZEZKdmIzUTZJR1oxYm1OMGFXOXVJQ2hoYm1ObGMzUnZjazV2WkdVc0lIUmhjbWRsZEVsRUtTQjdYRzRnSUNBZ2RtRnlJR1pwY25OMFEyaHBiR1J5Wlc0Z1BTQm1hVzVrUTI5dGNHOXVaVzUwVW05dmRGSmxkWE5oWW14bFFYSnlZWGs3WEc0Z0lDQWdkbUZ5SUdOb2FXeGtTVzVrWlhnZ1BTQXdPMXh1WEc0Z0lDQWdkbUZ5SUdSbFpYQmxjM1JCYm1ObGMzUnZjaUE5SUdacGJtUkVaV1Z3WlhOMFEyRmphR1ZrUVc1alpYTjBiM0lvZEdGeVoyVjBTVVFwSUh4OElHRnVZMlZ6ZEc5eVRtOWtaVHRjYmx4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJVYUdseklIZHBiR3dnZEdoeWIzY2diMjRnZEdobElHNWxlSFFnYkdsdVpUc2daMmwyWlNCaGJpQmxZWEpzZVNCM1lYSnVhVzVuWEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1Wnloa1pXVndaWE4wUVc1alpYTjBiM0lnSVQwZ2JuVnNiQ3dnSjFKbFlXTjBJR05oYmx4Y0ozUWdabWx1WkNCMGFHVWdjbTl2ZENCamIyMXdiMjVsYm5RZ2JtOWtaU0JtYjNJZ1pHRjBZUzF5WldGamRHbGtJSFpoYkhWbElDY2dLeUFuWUNWellDNGdTV1lnZVc5MVhGd25jbVVnYzJWbGFXNW5JSFJvYVhNZ2JXVnpjMkZuWlN3Z2FYUWdjSEp2WW1GaWJIa2diV1ZoYm5NZ2RHaGhkQ0FuSUNzZ0ozbHZkVnhjSjNabElHeHZZV1JsWkNCMGQyOGdZMjl3YVdWeklHOW1JRkpsWVdOMElHOXVJSFJvWlNCd1lXZGxMaUJCZENCMGFHbHpJSFJwYldVc0lHOXViSGtnSnlBcklDZGhJSE5wYm1kc1pTQmpiM0I1SUc5bUlGSmxZV04wSUdOaGJpQmlaU0JzYjJGa1pXUWdZWFFnWVNCMGFXMWxMaWNzSUhSaGNtZGxkRWxFS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNCbWFYSnpkRU5vYVd4a2NtVnVXekJkSUQwZ1pHVmxjR1Z6ZEVGdVkyVnpkRzl5TG1acGNuTjBRMmhwYkdRN1hHNGdJQ0FnWm1seWMzUkRhR2xzWkhKbGJpNXNaVzVuZEdnZ1BTQXhPMXh1WEc0Z0lDQWdkMmhwYkdVZ0tHTm9hV3hrU1c1a1pYZ2dQQ0JtYVhKemRFTm9hV3hrY21WdUxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2RtRnlJR05vYVd4a0lEMGdabWx5YzNSRGFHbHNaSEpsYmx0amFHbHNaRWx1WkdWNEt5dGRPMXh1SUNBZ0lDQWdkbUZ5SUhSaGNtZGxkRU5vYVd4a08xeHVYRzRnSUNBZ0lDQjNhR2xzWlNBb1kyaHBiR1FwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR05vYVd4a1NVUWdQU0JTWldGamRFMXZkVzUwTG1kbGRFbEVLR05vYVd4a0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOb2FXeGtTVVFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJGZG1WdUlHbG1JSGRsSUdacGJtUWdkR2hsSUc1dlpHVWdkMlVuY21VZ2JHOXZhMmx1WnlCbWIzSXNJSGRsSUdacGJtbHphQ0JzYjI5d2FXNW5YRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RHaHliM1ZuYUNCcGRITWdjMmxpYkdsdVozTWdkRzhnWlc1emRYSmxJSFJvWlhrbmNtVWdZMkZqYUdWa0lITnZJSFJvWVhRZ2QyVWdaRzl1SjNRZ2FHRjJaVnh1SUNBZ0lDQWdJQ0FnSUM4dklIUnZJSEpsZG1semFYUWdkR2hwY3lCdWIyUmxJR0ZuWVdsdUxpQlBkR2hsY25kcGMyVXNJSGRsSUcxaGEyVWdibDR5SUdOaGJHeHpJSFJ2SUdkbGRFbEVYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2QyaGxiaUIyYVhOcGRHbHVaeUIwYUdVZ2JXRnVlU0JqYUdsc1pISmxiaUJ2WmlCaElITnBibWRzWlNCdWIyUmxJR2x1SUc5eVpHVnlMbHh1WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSFJoY21kbGRFbEVJRDA5UFNCamFHbHNaRWxFS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwWVhKblpYUkRhR2xzWkNBOUlHTm9hV3hrTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9VbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE11YVhOQmJtTmxjM1J2Y2tsRVQyWW9ZMmhwYkdSSlJDd2dkR0Z5WjJWMFNVUXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJKWmlCM1pTQm1hVzVrSUdFZ1kyaHBiR1FnZDJodmMyVWdTVVFnYVhNZ1lXNGdZVzVqWlhOMGIzSWdiMllnZEdobElHZHBkbVZ1SUVsRUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2RHaGxiaUIzWlNCallXNGdZbVVnYzNWeVpTQjBhR0YwSUhkbElHOXViSGtnZDJGdWRDQjBieUJ6WldGeVkyZ2dkR2hsSUhOMVluUnlaV1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJSEp2YjNSbFpDQmhkQ0IwYUdseklHTm9hV3hrTENCemJ5QjNaU0JqWVc0Z2RHaHliM2NnYjNWMElIUm9aU0J5WlhOMElHOW1JSFJvWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYzJWaGNtTm9JSE4wWVhSbExseHVJQ0FnSUNBZ0lDQWdJQ0FnWm1seWMzUkRhR2xzWkhKbGJpNXNaVzVuZEdnZ1BTQmphR2xzWkVsdVpHVjRJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1pwY25OMFEyaHBiR1J5Wlc0dWNIVnphQ2hqYUdsc1pDNW1hWEp6ZEVOb2FXeGtLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnU1dZZ2RHaHBjeUJqYUdsc1pDQm9ZV1FnYm04Z1NVUXNJSFJvWlc0Z2RHaGxjbVVuY3lCaElHTm9ZVzVqWlNCMGFHRjBJR2wwSUhkaGMxeHVJQ0FnSUNBZ0lDQWdJQzh2SUdsdWFtVmpkR1ZrSUdGMWRHOXRZWFJwWTJGc2JIa2dZbmtnZEdobElHSnliM2R6WlhJc0lHRnpJSGRvWlc0Z1lTQmdQSFJoWW14bFBtQmNiaUFnSUNBZ0lDQWdJQ0F2THlCbGJHVnRaVzUwSUhOd2NtOTFkSE1nWVc0Z1pYaDBjbUVnWUR4MFltOWtlVDVnSUdOb2FXeGtJR0Z6SUdFZ2MybGtaU0JsWm1abFkzUWdiMlpjYmlBZ0lDQWdJQ0FnSUNBdkx5QmdMbWx1Ym1WeVNGUk5UR0FnY0dGeWMybHVaeTRnVDNCMGFXMXBjM1JwWTJGc2JIa2dZMjl1ZEdsdWRXVWdaRzkzYmlCMGFHbHpYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1luSmhibU5vTENCaWRYUWdibTkwSUdKbFptOXlaU0JsZUdGdGFXNXBibWNnZEdobElHOTBhR1Z5SUhOcFlteHBibWR6TGx4dUlDQWdJQ0FnSUNBZ0lHWnBjbk4wUTJocGJHUnlaVzR1Y0hWemFDaGphR2xzWkM1bWFYSnpkRU5vYVd4a0tUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdOb2FXeGtJRDBnWTJocGJHUXVibVY0ZEZOcFlteHBibWM3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaDBZWEpuWlhSRGFHbHNaQ2tnZTF4dUlDQWdJQ0FnSUNBdkx5QkZiWEIwZVdsdVp5Qm1hWEp6ZEVOb2FXeGtjbVZ1TDJacGJtUkRiMjF3YjI1bGJuUlNiMjkwVW1WMWMyRmliR1ZCY25KaGVTQnBjMXh1SUNBZ0lDQWdJQ0F2THlCdWIzUWdibVZqWlhOellYSjVJR1p2Y2lCamIzSnlaV04wYm1WemN5d2dZblYwSUdsMElHaGxiSEJ6SUhSb1pTQkhReUJ5WldOc1lXbHRYRzRnSUNBZ0lDQWdJQzh2SUdGdWVTQnViMlJsY3lCMGFHRjBJSGRsY21VZ2JHVm1kQ0JoZENCMGFHVWdaVzVrSUc5bUlIUm9aU0J6WldGeVkyZ3VYRzRnSUNBZ0lDQWdJR1pwY25OMFEyaHBiR1J5Wlc0dWJHVnVaM1JvSUQwZ01EdGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0Z5WjJWMFEyaHBiR1E3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdabWx5YzNSRGFHbHNaSEpsYmk1c1pXNW5kR2dnUFNBd08xeHVYRzRnSUNBZ0lXWmhiSE5sSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMlpwYm1SRGIyMXdiMjVsYm5SU2IyOTBLQzR1TGl3Z0pYTXBPaUJWYm1GaWJHVWdkRzhnWm1sdVpDQmxiR1Z0Wlc1MExpQlVhR2x6SUhCeWIySmhZbXg1SUNjZ0t5QW5iV1ZoYm5NZ2RHaGxJRVJQVFNCM1lYTWdkVzVsZUhCbFkzUmxaR3g1SUcxMWRHRjBaV1FnS0dVdVp5NHNJR0o1SUhSb1pTQmljbTkzYzJWeUtTd2dKeUFySUNkMWMzVmhiR3g1SUdSMVpTQjBieUJtYjNKblpYUjBhVzVuSUdFZ1BIUmliMlI1UGlCM2FHVnVJSFZ6YVc1bklIUmhZbXhsY3l3Z2JtVnpkR2x1WnlCMFlXZHpJQ2NnS3lBbmJHbHJaU0E4Wm05eWJUNHNJRHh3UGl3Z2IzSWdQR0UrTENCdmNpQjFjMmx1WnlCdWIyNHRVMVpISUdWc1pXMWxiblJ6SUdsdUlHRnVJRHh6ZG1jK0lDY2dLeUFuY0dGeVpXNTBMaUFuSUNzZ0oxUnllU0JwYm5Od1pXTjBhVzVuSUhSb1pTQmphR2xzWkNCdWIyUmxjeUJ2WmlCMGFHVWdaV3hsYldWdWRDQjNhWFJvSUZKbFlXTjBJRWxFSUdBbGMyQXVKeXdnZEdGeVoyVjBTVVFzSUZKbFlXTjBUVzkxYm5RdVoyVjBTVVFvWVc1alpYTjBiM0pPYjJSbEtTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlMRnh1WEc0Z0lGOXRiM1Z1ZEVsdFlXZGxTVzUwYjA1dlpHVTZJR1oxYm1OMGFXOXVJQ2h0WVhKcmRYQXNJR052Ym5SaGFXNWxjaXdnYzJodmRXeGtVbVYxYzJWTllYSnJkWEFzSUhSeVlXNXpZV04wYVc5dUtTQjdYRzRnSUNBZ0lTaGpiMjUwWVdsdVpYSWdKaVlnS0dOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBOVBUMGdSVXhGVFVWT1ZGOU9UMFJGWDFSWlVFVWdmSHdnWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkVUME5mVGs5RVJWOVVXVkJGSUh4OElHTnZiblJoYVc1bGNpNXViMlJsVkhsd1pTQTlQVDBnUkU5RFZVMUZUbFJmUmxKQlIwMUZUbFJmVGs5RVJWOVVXVkJGS1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuYlc5MWJuUkRiMjF3YjI1bGJuUkpiblJ2VG05a1pTZ3VMaTRwT2lCVVlYSm5aWFFnWTI5dWRHRnBibVZ5SUdseklHNXZkQ0IyWVd4cFpDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCcFppQW9jMmh2ZFd4a1VtVjFjMlZOWVhKcmRYQXBJSHRjYmlBZ0lDQWdJSFpoY2lCeWIyOTBSV3hsYldWdWRDQTlJR2RsZEZKbFlXTjBVbTl2ZEVWc1pXMWxiblJKYmtOdmJuUmhhVzVsY2loamIyNTBZV2x1WlhJcE8xeHVJQ0FnSUNBZ2FXWWdLRkpsWVdOMFRXRnlhM1Z3UTJobFkydHpkVzB1WTJGdVVtVjFjMlZOWVhKcmRYQW9iV0Z5YTNWd0xDQnliMjkwUld4bGJXVnVkQ2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHTm9aV05yYzNWdElEMGdjbTl2ZEVWc1pXMWxiblF1WjJWMFFYUjBjbWxpZFhSbEtGSmxZV04wVFdGeWEzVndRMmhsWTJ0emRXMHVRMGhGUTB0VFZVMWZRVlJVVWw5T1FVMUZLVHRjYmlBZ0lDQWdJQ0FnY205dmRFVnNaVzFsYm5RdWNtVnRiM1psUVhSMGNtbGlkWFJsS0ZKbFlXTjBUV0Z5YTNWd1EyaGxZMnR6ZFcwdVEwaEZRMHRUVlUxZlFWUlVVbDlPUVUxRktUdGNibHh1SUNBZ0lDQWdJQ0IyWVhJZ2NtOXZkRTFoY210MWNDQTlJSEp2YjNSRmJHVnRaVzUwTG05MWRHVnlTRlJOVER0Y2JpQWdJQ0FnSUNBZ2NtOXZkRVZzWlcxbGJuUXVjMlYwUVhSMGNtbGlkWFJsS0ZKbFlXTjBUV0Z5YTNWd1EyaGxZMnR6ZFcwdVEwaEZRMHRUVlUxZlFWUlVVbDlPUVUxRkxDQmphR1ZqYTNOMWJTazdYRzVjYmlBZ0lDQWdJQ0FnZG1GeUlHNXZjbTFoYkdsNlpXUk5ZWEpyZFhBZ1BTQnRZWEpyZFhBN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnWW1WallYVnpaU0J5YjI5MFRXRnlhM1Z3SUdseklISmxkSEpwWlhabFpDQm1jbTl0SUhSb1pTQkVUMDBzSUhaaGNtbHZkWE1nYm05eWJXRnNhWHBoZEdsdmJuTmNiaUFnSUNBZ0lDQWdJQ0F2THlCM2FXeHNJR2hoZG1VZ2IyTmpkWEp5WldRZ2QyaHBZMmdnZDJsc2JDQnViM1FnWW1VZ2NISmxjMlZ1ZENCcGJpQmdiV0Z5YTNWd1lDNGdTR1Z5WlN4Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJwYm5ObGNuUWdiV0Z5YTNWd0lHbHVkRzhnWVNBOFpHbDJQaUJ2Y2lBOGFXWnlZVzFsUGlCa1pYQmxibVJwYm1jZ2IyNGdkR2hsSUdOdmJuUmhhVzVsY2x4dUlDQWdJQ0FnSUNBZ0lDOHZJSFI1Y0dVZ2RHOGdjR1Z5Wm05eWJTQjBhR1VnYzJGdFpTQnViM0p0WVd4cGVtRjBhVzl1Y3lCaVpXWnZjbVVnWTI5dGNHRnlhVzVuTGx4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJ1YjNKdFlXeHBlbVZ5TzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFVk1SVTFGVGxSZlRrOUVSVjlVV1ZCRktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIzSnRZV3hwZW1WeUlEMGdaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnblpHbDJKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnViM0p0WVd4cGVtVnlMbWx1Ym1WeVNGUk5UQ0E5SUcxaGNtdDFjRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHNXZjbTFoYkdsNlpXUk5ZWEpyZFhBZ1BTQnViM0p0WVd4cGVtVnlMbWx1Ym1WeVNGUk5URHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdibTl5YldGc2FYcGxjaUE5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9KMmxtY21GdFpTY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHOWpkVzFsYm5RdVltOWtlUzVoY0hCbGJtUkRhR2xzWkNodWIzSnRZV3hwZW1WeUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUc1dmNtMWhiR2w2WlhJdVkyOXVkR1Z1ZEVSdlkzVnRaVzUwTG5keWFYUmxLRzFoY210MWNDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIzSnRZV3hwZW1Wa1RXRnlhM1Z3SUQwZ2JtOXliV0ZzYVhwbGNpNWpiMjUwWlc1MFJHOWpkVzFsYm5RdVpHOWpkVzFsYm5SRmJHVnRaVzUwTG05MWRHVnlTRlJOVER0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1J2WTNWdFpXNTBMbUp2WkhrdWNtVnRiM1psUTJocGJHUW9ibTl5YldGc2FYcGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnZG1GeUlHUnBabVpKYm1SbGVDQTlJR1pwY25OMFJHbG1abVZ5Wlc1alpVbHVaR1Y0S0c1dmNtMWhiR2w2WldSTllYSnJkWEFzSUhKdmIzUk5ZWEpyZFhBcE8xeHVJQ0FnSUNBZ0lDQjJZWElnWkdsbVptVnlaVzVqWlNBOUlDY2dLR05zYVdWdWRDa2dKeUFySUc1dmNtMWhiR2w2WldSTllYSnJkWEF1YzNWaWMzUnlhVzVuS0dScFptWkpibVJsZUNBdElESXdMQ0JrYVdabVNXNWtaWGdnS3lBeU1Da2dLeUFuWEZ4dUlDaHpaWEoyWlhJcElDY2dLeUJ5YjI5MFRXRnlhM1Z3TG5OMVluTjBjbWx1Wnloa2FXWm1TVzVrWlhnZ0xTQXlNQ3dnWkdsbVprbHVaR1Y0SUNzZ01qQXBPMXh1WEc0Z0lDQWdJQ0FnSUNFb1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElDRTlQU0JFVDBOZlRrOUVSVjlVV1ZCRktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkWmIzVmNYQ2R5WlNCMGNubHBibWNnZEc4Z2NtVnVaR1Z5SUdFZ1kyOXRjRzl1Wlc1MElIUnZJSFJvWlNCa2IyTjFiV1Z1ZENCMWMybHVaeUFuSUNzZ0ozTmxjblpsY2lCeVpXNWtaWEpwYm1jZ1luVjBJSFJvWlNCamFHVmphM04xYlNCM1lYTWdhVzUyWVd4cFpDNGdWR2hwY3lCMWMzVmhiR3g1SUNjZ0t5QW5iV1ZoYm5NZ2VXOTFJSEpsYm1SbGNtVmtJR0VnWkdsbVptVnlaVzUwSUdOdmJYQnZibVZ1ZENCMGVYQmxJRzl5SUhCeWIzQnpJRzl1SUNjZ0t5QW5kR2hsSUdOc2FXVnVkQ0JtY205dElIUm9aU0J2Ym1VZ2IyNGdkR2hsSUhObGNuWmxjaXdnYjNJZ2VXOTFjaUJ5Wlc1a1pYSW9LU0FuSUNzZ0oyMWxkR2h2WkhNZ1lYSmxJR2x0Y0hWeVpTNGdVbVZoWTNRZ1kyRnVibTkwSUdoaGJtUnNaU0IwYUdseklHTmhjMlVnWkhWbElIUnZJQ2NnS3lBblkzSnZjM010WW5KdmQzTmxjaUJ4ZFdseWEzTWdZbmtnY21WdVpHVnlhVzVuSUdGMElIUm9aU0JrYjJOMWJXVnVkQ0J5YjI5MExpQlpiM1VnSnlBcklDZHphRzkxYkdRZ2JHOXZheUJtYjNJZ1pXNTJhWEp2Ym0xbGJuUWdaR1Z3Wlc1a1pXNTBJR052WkdVZ2FXNGdlVzkxY2lCamIyMXdiMjVsYm5SeklDY2dLeUFuWVc1a0lHVnVjM1Z5WlNCMGFHVWdjSEp2Y0hNZ1lYSmxJSFJvWlNCellXMWxJR05zYVdWdWRDQmhibVFnYzJWeWRtVnlJSE5wWkdVNlhGeHVKWE1uTENCa2FXWm1aWEpsYm1ObEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMUpsWVdOMElHRjBkR1Z0Y0hSbFpDQjBieUJ5WlhWelpTQnRZWEpyZFhBZ2FXNGdZU0JqYjI1MFlXbHVaWElnWW5WMElIUm9aU0FuSUNzZ0oyTm9aV05yYzNWdElIZGhjeUJwYm5aaGJHbGtMaUJVYUdseklHZGxibVZ5WVd4c2VTQnRaV0Z1Y3lCMGFHRjBJSGx2ZFNCaGNtVWdKeUFySUNkMWMybHVaeUJ6WlhKMlpYSWdjbVZ1WkdWeWFXNW5JR0Z1WkNCMGFHVWdiV0Z5YTNWd0lHZGxibVZ5WVhSbFpDQnZiaUIwYUdVZ0p5QXJJQ2R6WlhKMlpYSWdkMkZ6SUc1dmRDQjNhR0YwSUhSb1pTQmpiR2xsYm5RZ2QyRnpJR1Y0Y0dWamRHbHVaeTRnVW1WaFkzUWdhVzVxWldOMFpXUWdKeUFySUNkdVpYY2diV0Z5YTNWd0lIUnZJR052YlhCbGJuTmhkR1VnZDJocFkyZ2dkMjl5YTNNZ1luVjBJSGx2ZFNCb1lYWmxJR3h2YzNRZ2JXRnVlU0FuSUNzZ0oyOW1JSFJvWlNCaVpXNWxabWwwY3lCdlppQnpaWEoyWlhJZ2NtVnVaR1Z5YVc1bkxpQkpibk4wWldGa0xDQm1hV2QxY21VZ2IzVjBJQ2NnS3lBbmQyaDVJSFJvWlNCdFlYSnJkWEFnWW1WcGJtY2daMlZ1WlhKaGRHVmtJR2x6SUdScFptWmxjbVZ1ZENCdmJpQjBhR1VnWTJ4cFpXNTBJQ2NnS3lBbmIzSWdjMlZ5ZG1WeU9seGNiaVZ6Snl3Z1pHbG1abVZ5Wlc1alpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0FoS0dOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBaFBUMGdSRTlEWDA1UFJFVmZWRmxRUlNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuV1c5MVhGd25jbVVnZEhKNWFXNW5JSFJ2SUhKbGJtUmxjaUJoSUdOdmJYQnZibVZ1ZENCMGJ5QjBhR1VnWkc5amRXMWxiblFnWW5WMElDY2dLeUFuZVc5MUlHUnBaRzVjWENkMElIVnpaU0J6WlhKMlpYSWdjbVZ1WkdWeWFXNW5MaUJYWlNCallXNWNYQ2QwSUdSdklIUm9hWE1nSnlBcklDZDNhWFJvYjNWMElIVnphVzVuSUhObGNuWmxjaUJ5Wlc1a1pYSnBibWNnWkhWbElIUnZJR055YjNOekxXSnliM2R6WlhJZ2NYVnBjbXR6TGlBbklDc2dKMU5sWlNCU1pXRmpkRVJQVFZObGNuWmxjaTV5Wlc1a1pYSlViMU4wY21sdVp5Z3BJR1p2Y2lCelpYSjJaWElnY21WdVpHVnlhVzVuTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR2xtSUNoMGNtRnVjMkZqZEdsdmJpNTFjMlZEY21WaGRHVkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQjNhR2xzWlNBb1kyOXVkR0ZwYm1WeUxteGhjM1JEYUdsc1pDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MFlXbHVaWEl1Y21WdGIzWmxRMmhwYkdRb1kyOXVkR0ZwYm1WeUxteGhjM1JEYUdsc1pDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVZWEJ3Wlc1a1EyaHBiR1FvYldGeWEzVndLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MyVjBTVzV1WlhKSVZFMU1LR052Ym5SaGFXNWxjaXdnYldGeWEzVndLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnYjNkdVpYSkViMk4xYldWdWRFTnZiblJsZUhSTFpYazZJRzkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pXRmpkQ0JKUkNCMWRHbHNhWFJwWlhNdVhHNGdJQ0FxTDF4dVhHNGdJR2RsZEZKbFlXTjBVbTl2ZEVsRU9pQm5aWFJTWldGamRGSnZiM1JKUkN4Y2JseHVJQ0JuWlhSSlJEb2daMlYwU1VRc1hHNWNiaUFnYzJWMFNVUTZJSE5sZEVsRUxGeHVYRzRnSUdkbGRFNXZaR1U2SUdkbGRFNXZaR1VzWEc1Y2JpQWdaMlYwVG05a1pVWnliMjFKYm5OMFlXNWpaVG9nWjJWMFRtOWtaVVp5YjIxSmJuTjBZVzVqWlN4Y2JseHVJQ0JwYzFaaGJHbGtPaUJwYzFaaGJHbGtMRnh1WEc0Z0lIQjFjbWRsU1VRNklIQjFjbWRsU1VSY2JuMDdYRzVjYmxKbFlXTjBVR1Z5Wmk1dFpXRnpkWEpsVFdWMGFHOWtjeWhTWldGamRFMXZkVzUwTENBblVtVmhZM1JOYjNWdWRDY3NJSHRjYmlBZ1gzSmxibVJsY2s1bGQxSnZiM1JEYjIxd2IyNWxiblE2SUNkZmNtVnVaR1Z5VG1WM1VtOXZkRU52YlhCdmJtVnVkQ2NzWEc0Z0lGOXRiM1Z1ZEVsdFlXZGxTVzUwYjA1dlpHVTZJQ2RmYlc5MWJuUkpiV0ZuWlVsdWRHOU9iMlJsSjF4dWZTazdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUk5iM1Z1ZERzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0TXVsdGlDaGlsZFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzJyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdENoaWxkUmVjb25jaWxlcicpO1xuXG52YXIgZmxhdHRlbkNoaWxkcmVuID0gcmVxdWlyZSgnLi9mbGF0dGVuQ2hpbGRyZW4nKTtcblxuLyoqXG4gKiBVcGRhdGluZyBjaGlsZHJlbiBvZiBhIGNvbXBvbmVudCBtYXkgdHJpZ2dlciByZWN1cnNpdmUgdXBkYXRlcy4gVGhlIGRlcHRoIGlzXG4gKiB1c2VkIHRvIGJhdGNoIHJlY3Vyc2l2ZSB1cGRhdGVzIHRvIHJlbmRlciBtYXJrdXAgbW9yZSBlZmZpY2llbnRseS5cbiAqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQHByaXZhdGVcbiAqL1xudmFyIHVwZGF0ZURlcHRoID0gMDtcblxuLyoqXG4gKiBRdWV1ZSBvZiB1cGRhdGUgY29uZmlndXJhdGlvbiBvYmplY3RzLlxuICpcbiAqIEVhY2ggb2JqZWN0IGhhcyBhIGB0eXBlYCBwcm9wZXJ0eSB0aGF0IGlzIGluIGBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlc2AuXG4gKlxuICogQHR5cGUge2FycmF5PG9iamVjdD59XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgdXBkYXRlUXVldWUgPSBbXTtcblxuLyoqXG4gKiBRdWV1ZSBvZiBtYXJrdXAgdG8gYmUgcmVuZGVyZWQuXG4gKlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgbWFya3VwUXVldWUgPSBbXTtcblxuLyoqXG4gKiBFbnF1ZXVlcyBtYXJrdXAgdG8gYmUgcmVuZGVyZWQgYW5kIGluc2VydGVkIGF0IGEgc3VwcGxpZWQgaW5kZXguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudElEIElEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxlbWVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZUluc2VydE1hcmt1cChwYXJlbnRJRCwgbWFya3VwLCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuSU5TRVJUX01BUktVUCxcbiAgICBtYXJrdXBJbmRleDogbWFya3VwUXVldWUucHVzaChtYXJrdXApIC0gMSxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICB0b0luZGV4OiB0b0luZGV4XG4gIH0pO1xufVxuXG4vKipcbiAqIEVucXVldWVzIG1vdmluZyBhbiBleGlzdGluZyBlbGVtZW50IHRvIGFub3RoZXIgaW5kZXguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudElEIElEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVNb3ZlKHBhcmVudElELCBmcm9tSW5kZXgsIHRvSW5kZXgpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICB1cGRhdGVRdWV1ZS5wdXNoKHtcbiAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB0eXBlOiBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5NT1ZFX0VYSVNUSU5HLFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgdG9JbmRleDogdG9JbmRleFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyByZW1vdmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZVJlbW92ZShwYXJlbnRJRCwgZnJvbUluZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuUkVNT1ZFX05PREUsXG4gICAgbWFya3VwSW5kZXg6IG51bGwsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBmcm9tSW5kZXg6IGZyb21JbmRleCxcbiAgICB0b0luZGV4OiBudWxsXG4gIH0pO1xufVxuXG4vKipcbiAqIEVucXVldWVzIHNldHRpbmcgdGhlIG1hcmt1cCBvZiBhIG5vZGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudElEIElEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxlbWVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVTZXRNYXJrdXAocGFyZW50SUQsIG1hcmt1cCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlNFVF9NQVJLVVAsXG4gICAgbWFya3VwSW5kZXg6IG51bGwsXG4gICAgY29udGVudDogbWFya3VwLFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICB0b0luZGV4OiBudWxsXG4gIH0pO1xufVxuXG4vKipcbiAqIEVucXVldWVzIHNldHRpbmcgdGhlIHRleHQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50SUQgSUQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVUZXh0Q29udGVudChwYXJlbnRJRCwgdGV4dENvbnRlbnQpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICB1cGRhdGVRdWV1ZS5wdXNoKHtcbiAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB0eXBlOiBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5URVhUX0NPTlRFTlQsXG4gICAgbWFya3VwSW5kZXg6IG51bGwsXG4gICAgY29udGVudDogdGV4dENvbnRlbnQsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAgIHRvSW5kZXg6IG51bGxcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGFueSBlbnF1ZXVlZCB1cGRhdGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NRdWV1ZSgpIHtcbiAgaWYgKHVwZGF0ZVF1ZXVlLmxlbmd0aCkge1xuICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyh1cGRhdGVRdWV1ZSwgbWFya3VwUXVldWUpO1xuICAgIGNsZWFyUXVldWUoKTtcbiAgfVxufVxuXG4vKipcbiAqIENsZWFycyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjbGVhclF1ZXVlKCkge1xuICB1cGRhdGVRdWV1ZS5sZW5ndGggPSAwO1xuICBtYXJrdXBRdWV1ZS5sZW5ndGggPSAwO1xufVxuXG4vKipcbiAqIFJlYWN0TXVsdGlDaGlsZCBhcmUgY2FwYWJsZSBvZiByZWNvbmNpbGluZyBtdWx0aXBsZSBjaGlsZHJlbi5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNdWx0aUNoaWxkXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHtcblxuICAvKipcbiAgICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIGNvbXBvbmVudHMgdGhhdCBtdXN0IHJlY29uY2lsZSBtdWx0aXBsZVxuICAgKiBjaGlsZHJlbi4gVGhpcyBpcyB1c2VkIGJ5IGBSZWFjdERPTUNvbXBvbmVudGAgdG8gbW91bnQsIHVwZGF0ZSwgYW5kXG4gICAqIHVubW91bnQgY2hpbGQgY29tcG9uZW50cy5cbiAgICpcbiAgICogQGxlbmRzIHtSZWFjdE11bHRpQ2hpbGQucHJvdG90eXBlfVxuICAgKi9cbiAgTWl4aW46IHtcblxuICAgIF9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSxcblxuICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIG5leHRDaGlsZHJlbjtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMpO1xuICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIFwibW91bnQgaW1hZ2VcIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlXG4gICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkcmVuIE5lc3RlZCBjaGlsZCBtYXBzLlxuICAgICAqIEByZXR1cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9ucy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBtb3VudENoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZHJlbikge1xuICAgICAgICBpZiAoY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltuYW1lXTtcbiAgICAgICAgICAvLyBJbmxpbmVkIGZvciBwZXJmb3JtYW5jZSwgc2VlIGBSZWFjdEluc3RhbmNlSGFuZGxlcy5jcmVhdGVSZWFjdElEYC5cbiAgICAgICAgICB2YXIgcm9vdElEID0gdGhpcy5fcm9vdE5vZGVJRCArIG5hbWU7XG4gICAgICAgICAgdmFyIG1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgICBtb3VudEltYWdlcy5wdXNoKG1vdW50SW1hZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbW91bnRJbWFnZXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgdGV4dCBjb250ZW50IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0Q29udGVudCBTdHJpbmcgb2YgY29udGVudC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1cGRhdGVUZXh0Q29udGVudDogZnVuY3Rpb24gKG5leHRDb250ZW50KSB7XG4gICAgICB1cGRhdGVEZXB0aCsrO1xuICAgICAgdmFyIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLlxuICAgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuKTtcbiAgICAgICAgLy8gVE9ETzogVGhlIHNldFRleHRDb250ZW50IG9wZXJhdGlvbiBzaG91bGQgYmUgZW5vdWdoXG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFNldCBuZXcgdGV4dCBjb250ZW50LlxuICAgICAgICB0aGlzLnNldFRleHRDb250ZW50KG5leHRDb250ZW50KTtcbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHVwZGF0ZURlcHRoLS07XG4gICAgICAgIGlmICghdXBkYXRlRGVwdGgpIHtcbiAgICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgIGNsZWFyUXVldWUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbWFya3VwIHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1cCkge1xuICAgICAgdXBkYXRlRGVwdGgrKztcbiAgICAgIHZhciBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cbiAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbik7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5fdW5tb3VudENoaWxkQnlOYW1lKHByZXZDaGlsZHJlbltuYW1lXSwgbmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0TWFya3VwKG5leHRNYXJrdXApO1xuICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdXBkYXRlRGVwdGgtLTtcbiAgICAgICAgaWYgKCF1cGRhdGVEZXB0aCkge1xuICAgICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgICAgY2xlYXJRdWV1ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzUXVldWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBuZXcgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICB1cGRhdGVEZXB0aCsrO1xuICAgICAgdmFyIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB1cGRhdGVEZXB0aC0tO1xuICAgICAgICBpZiAoIXVwZGF0ZURlcHRoKSB7XG4gICAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICBjbGVhclF1ZXVlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJbXByb3ZlIHBlcmZvcm1hbmNlIGJ5IGlzb2xhdGluZyB0aGlzIGhvdCBjb2RlIHBhdGggZnJvbSB0aGUgdHJ5L2NhdGNoXG4gICAgICogYmxvY2sgaW4gYHVwZGF0ZUNoaWxkcmVuYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGZpbmFsXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIF91cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICB2YXIgbmV4dENoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBuZXh0Q2hpbGRyZW47XG4gICAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuYW1lO1xuICAgICAgLy8gYG5leHRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggY2hpbGQgaW4gYG5leHRDaGlsZHJlbmAsIGJ1dFxuICAgICAgLy8gYGxhc3RJbmRleGAgd2lsbCBiZSB0aGUgbGFzdCBpbmRleCB2aXNpdGVkIGluIGBwcmV2Q2hpbGRyZW5gLlxuICAgICAgdmFyIGxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgbmV4dEluZGV4ID0gMDtcbiAgICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgdmFyIG5leHRDaGlsZCA9IG5leHRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgaWYgKHByZXZDaGlsZCA9PT0gbmV4dENoaWxkKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlQ2hpbGQocHJldkNoaWxkLCBuZXh0SW5kZXgsIGxhc3RJbmRleCk7XG4gICAgICAgICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgIHByZXZDaGlsZC5fbW91bnRJbmRleCA9IG5leHRJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgYGxhc3RJbmRleGAgYmVmb3JlIGBfbW91bnRJbmRleGAgZ2V0cyB1bnNldCBieSB1bm1vdW50aW5nLlxuICAgICAgICAgICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5fdW5tb3VudENoaWxkKHByZXZDaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuICAgICAgICAgIHRoaXMuX21vdW50Q2hpbGRCeU5hbWVBdEluZGV4KG5leHRDaGlsZCwgbmFtZSwgbmV4dEluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dEluZGV4Kys7XG4gICAgICB9XG4gICAgICAvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQuXG4gICAgICBmb3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkge1xuICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlblxuICAgICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbik7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogTW92ZXMgYSBjaGlsZCBjb21wb25lbnQgdG8gdGhlIHN1cHBsaWVkIGluZGV4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxhc3RJbmRleCBMYXN0IGluZGV4IHZpc2l0ZWQgb2YgdGhlIHNpYmxpbmdzIG9mIGBjaGlsZGAuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIG1vdmVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCB0b0luZGV4LCBsYXN0SW5kZXgpIHtcbiAgICAgIC8vIElmIHRoZSBpbmRleCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwgdGhlbiBpdCBuZWVkcyB0b1xuICAgICAgLy8gYmUgbW92ZWQuIE90aGVyd2lzZSwgd2UgZG8gbm90IG5lZWQgdG8gbW92ZSBpdCBiZWNhdXNlIGEgY2hpbGQgd2lsbCBiZVxuICAgICAgLy8gaW5zZXJ0ZWQgb3IgbW92ZWQgYmVmb3JlIGBjaGlsZGAuXG4gICAgICBpZiAoY2hpbGQuX21vdW50SW5kZXggPCBsYXN0SW5kZXgpIHtcbiAgICAgICAgZW5xdWV1ZU1vdmUodGhpcy5fcm9vdE5vZGVJRCwgY2hpbGQuX21vdW50SW5kZXgsIHRvSW5kZXgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2hpbGQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIGNyZWF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW91bnRJbWFnZSBNYXJrdXAgdG8gaW5zZXJ0LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBjcmVhdGVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlKSB7XG4gICAgICBlbnF1ZXVlSW5zZXJ0TWFya3VwKHRoaXMuX3Jvb3ROb2RlSUQsIG1vdW50SW1hZ2UsIGNoaWxkLl9tb3VudEluZGV4KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENoaWxkIHRvIHJlbW92ZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgZW5xdWV1ZVJlbW92ZSh0aGlzLl9yb290Tm9kZUlELCBjaGlsZC5fbW91bnRJbmRleCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhpcyB0ZXh0IGNvbnRlbnQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250ZW50IFRleHQgY29udGVudCB0byBzZXQuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHNldFRleHRDb250ZW50OiBmdW5jdGlvbiAodGV4dENvbnRlbnQpIHtcbiAgICAgIGVucXVldWVUZXh0Q29udGVudCh0aGlzLl9yb290Tm9kZUlELCB0ZXh0Q29udGVudCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhpcyBtYXJrdXAgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdG8gc2V0LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBzZXRNYXJrdXA6IGZ1bmN0aW9uIChtYXJrdXApIHtcbiAgICAgIGVucXVldWVTZXRNYXJrdXAodGhpcy5fcm9vdE5vZGVJRCwgbWFya3VwKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogTW91bnRzIGEgY2hpbGQgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZS5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgaXMgcGFydCBvZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZvciByZWFkYWJpbGl0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3VudC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjaGlsZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBfbW91bnRDaGlsZEJ5TmFtZUF0SW5kZXg6IGZ1bmN0aW9uIChjaGlsZCwgbmFtZSwgaW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICAvLyBJbmxpbmVkIGZvciBwZXJmb3JtYW5jZSwgc2VlIGBSZWFjdEluc3RhbmNlSGFuZGxlcy5jcmVhdGVSZWFjdElEYC5cbiAgICAgIHZhciByb290SUQgPSB0aGlzLl9yb290Tm9kZUlEICsgbmFtZTtcbiAgICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCByb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBtb3VudEltYWdlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVW5tb3VudHMgYSByZW5kZXJlZCBjaGlsZC5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgaXMgcGFydCBvZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZvciByZWFkYWJpbGl0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byB1bm1vdW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX3VubW91bnRDaGlsZDogZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gbnVsbDtcbiAgICB9XG5cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEUxMWJIUnBRMmhwYkdRdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUk5kV3gwYVVOb2FXeGtYRzRnS2lCQWRIbHdaV05vWldOcmN5QnpkR0YwYVdNdGIyNXNlVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBRMjl0Y0c5dVpXNTBSVzUyYVhKdmJtMWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTI5dGNHOXVaVzUwUlc1MmFYSnZibTFsYm5RbktUdGNiblpoY2lCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTW5LVHRjYmx4dWRtRnlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU4xY25KbGJuUlBkMjVsY2ljcE8xeHVkbUZ5SUZKbFlXTjBVbVZqYjI1amFXeGxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JTWldOdmJtTnBiR1Z5SnlrN1hHNTJZWElnVW1WaFkzUkRhR2xzWkZKbFkyOXVZMmxzWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5SnlrN1hHNWNiblpoY2lCbWJHRjBkR1Z1UTJocGJHUnlaVzRnUFNCeVpYRjFhWEpsS0NjdUwyWnNZWFIwWlc1RGFHbHNaSEpsYmljcE8xeHVYRzR2S2lwY2JpQXFJRlZ3WkdGMGFXNW5JR05vYVd4a2NtVnVJRzltSUdFZ1kyOXRjRzl1Wlc1MElHMWhlU0IwY21sbloyVnlJSEpsWTNWeWMybDJaU0IxY0dSaGRHVnpMaUJVYUdVZ1pHVndkR2dnYVhOY2JpQXFJSFZ6WldRZ2RHOGdZbUYwWTJnZ2NtVmpkWEp6YVhabElIVndaR0YwWlhNZ2RHOGdjbVZ1WkdWeUlHMWhjbXQxY0NCdGIzSmxJR1ZtWm1samFXVnVkR3g1TGx4dUlDcGNiaUFxSUVCMGVYQmxJSHR1ZFcxaVpYSjlYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzUyWVhJZ2RYQmtZWFJsUkdWd2RHZ2dQU0F3TzF4dVhHNHZLaXBjYmlBcUlGRjFaWFZsSUc5bUlIVndaR0YwWlNCamIyNW1hV2QxY21GMGFXOXVJRzlpYW1WamRITXVYRzRnS2x4dUlDb2dSV0ZqYUNCdlltcGxZM1FnYUdGeklHRWdZSFI1Y0dWZ0lIQnliM0JsY25SNUlIUm9ZWFFnYVhNZ2FXNGdZRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpZQzVjYmlBcVhHNGdLaUJBZEhsd1pTQjdZWEp5WVhrOGIySnFaV04wUG4xY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JuWmhjaUIxY0dSaGRHVlJkV1YxWlNBOUlGdGRPMXh1WEc0dktpcGNiaUFxSUZGMVpYVmxJRzltSUcxaGNtdDFjQ0IwYnlCaVpTQnlaVzVrWlhKbFpDNWNiaUFxWEc0Z0tpQkFkSGx3WlNCN1lYSnlZWGs4YzNSeWFXNW5QbjFjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm5aaGNpQnRZWEpyZFhCUmRXVjFaU0E5SUZ0ZE8xeHVYRzR2S2lwY2JpQXFJRVZ1Y1hWbGRXVnpJRzFoY210MWNDQjBieUJpWlNCeVpXNWtaWEpsWkNCaGJtUWdhVzV6WlhKMFpXUWdZWFFnWVNCemRYQndiR2xsWkNCcGJtUmxlQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjR0Z5Wlc1MFNVUWdTVVFnYjJZZ2RHaGxJSEJoY21WdWRDQmpiMjF3YjI1bGJuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYldGeWEzVndJRTFoY210MWNDQjBhR0YwSUhKbGJtUmxjbk1nYVc1MGJ5QmhiaUJsYkdWdFpXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhSdlNXNWtaWGdnUkdWemRHbHVZWFJwYjI0Z2FXNWtaWGd1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCbGJuRjFaWFZsU1c1elpYSjBUV0Z5YTNWd0tIQmhjbVZ1ZEVsRUxDQnRZWEpyZFhBc0lIUnZTVzVrWlhncElIdGNiaUFnTHk4Z1RrOVVSVG9nVG5Wc2JDQjJZV3gxWlhNZ2NtVmtkV05sSUdocFpHUmxiaUJqYkdGemMyVnpMbHh1SUNCMWNHUmhkR1ZSZFdWMVpTNXdkWE5vS0h0Y2JpQWdJQ0J3WVhKbGJuUkpSRG9nY0dGeVpXNTBTVVFzWEc0Z0lDQWdjR0Z5Wlc1MFRtOWtaVG9nYm5Wc2JDeGNiaUFnSUNCMGVYQmxPaUJTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVKVGxORlVsUmZUVUZTUzFWUUxGeHVJQ0FnSUcxaGNtdDFjRWx1WkdWNE9pQnRZWEpyZFhCUmRXVjFaUzV3ZFhOb0tHMWhjbXQxY0NrZ0xTQXhMRnh1SUNBZ0lHTnZiblJsYm5RNklHNTFiR3dzWEc0Z0lDQWdabkp2YlVsdVpHVjRPaUJ1ZFd4c0xGeHVJQ0FnSUhSdlNXNWtaWGc2SUhSdlNXNWtaWGhjYmlBZ2ZTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1JXNXhkV1YxWlhNZ2JXOTJhVzVuSUdGdUlHVjRhWE4wYVc1bklHVnNaVzFsYm5RZ2RHOGdZVzV2ZEdobGNpQnBibVJsZUM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0dGeVpXNTBTVVFnU1VRZ2IyWWdkR2hsSUhCaGNtVnVkQ0JqYjIxd2IyNWxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1puSnZiVWx1WkdWNElGTnZkWEpqWlNCcGJtUmxlQ0J2WmlCMGFHVWdaWGhwYzNScGJtY2daV3hsYldWdWRDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0IwYjBsdVpHVjRJRVJsYzNScGJtRjBhVzl1SUdsdVpHVjRJRzltSUhSb1pTQmxiR1Z0Wlc1MExseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdaVzV4ZFdWMVpVMXZkbVVvY0dGeVpXNTBTVVFzSUdaeWIyMUpibVJsZUN3Z2RHOUpibVJsZUNrZ2UxeHVJQ0F2THlCT1QxUkZPaUJPZFd4c0lIWmhiSFZsY3lCeVpXUjFZMlVnYUdsa1pHVnVJR05zWVhOelpYTXVYRzRnSUhWd1pHRjBaVkYxWlhWbExuQjFjMmdvZTF4dUlDQWdJSEJoY21WdWRFbEVPaUJ3WVhKbGJuUkpSQ3hjYmlBZ0lDQndZWEpsYm5ST2IyUmxPaUJ1ZFd4c0xGeHVJQ0FnSUhSNWNHVTZJRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpMazFQVmtWZlJWaEpVMVJKVGtjc1hHNGdJQ0FnYldGeWEzVndTVzVrWlhnNklHNTFiR3dzWEc0Z0lDQWdZMjl1ZEdWdWREb2diblZzYkN4Y2JpQWdJQ0JtY205dFNXNWtaWGc2SUdaeWIyMUpibVJsZUN4Y2JpQWdJQ0IwYjBsdVpHVjRPaUIwYjBsdVpHVjRYRzRnSUgwcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWNYVmxkV1Z6SUhKbGJXOTJhVzVuSUdGdUlHVnNaVzFsYm5RZ1lYUWdZVzRnYVc1a1pYZ3VYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIQmhjbVZ1ZEVsRUlFbEVJRzltSUhSb1pTQndZWEpsYm5RZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1p5YjIxSmJtUmxlQ0JKYm1SbGVDQnZaaUIwYUdVZ1pXeGxiV1Z1ZENCMGJ5QnlaVzF2ZG1VdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQmxibkYxWlhWbFVtVnRiM1psS0hCaGNtVnVkRWxFTENCbWNtOXRTVzVrWlhncElIdGNiaUFnTHk4Z1RrOVVSVG9nVG5Wc2JDQjJZV3gxWlhNZ2NtVmtkV05sSUdocFpHUmxiaUJqYkdGemMyVnpMbHh1SUNCMWNHUmhkR1ZSZFdWMVpTNXdkWE5vS0h0Y2JpQWdJQ0J3WVhKbGJuUkpSRG9nY0dGeVpXNTBTVVFzWEc0Z0lDQWdjR0Z5Wlc1MFRtOWtaVG9nYm5Wc2JDeGNiaUFnSUNCMGVYQmxPaUJTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVTUlUxUFZrVmZUazlFUlN4Y2JpQWdJQ0J0WVhKcmRYQkpibVJsZURvZ2JuVnNiQ3hjYmlBZ0lDQmpiMjUwWlc1ME9pQnVkV3hzTEZ4dUlDQWdJR1p5YjIxSmJtUmxlRG9nWm5KdmJVbHVaR1Y0TEZ4dUlDQWdJSFJ2U1c1a1pYZzZJRzUxYkd4Y2JpQWdmU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dSVzV4ZFdWMVpYTWdjMlYwZEdsdVp5QjBhR1VnYldGeWEzVndJRzltSUdFZ2JtOWtaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjR0Z5Wlc1MFNVUWdTVVFnYjJZZ2RHaGxJSEJoY21WdWRDQmpiMjF3YjI1bGJuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYldGeWEzVndJRTFoY210MWNDQjBhR0YwSUhKbGJtUmxjbk1nYVc1MGJ5QmhiaUJsYkdWdFpXNTBMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlc1eGRXVjFaVk5sZEUxaGNtdDFjQ2h3WVhKbGJuUkpSQ3dnYldGeWEzVndLU0I3WEc0Z0lDOHZJRTVQVkVVNklFNTFiR3dnZG1Gc2RXVnpJSEpsWkhWalpTQm9hV1JrWlc0Z1kyeGhjM05sY3k1Y2JpQWdkWEJrWVhSbFVYVmxkV1V1Y0hWemFDaDdYRzRnSUNBZ2NHRnlaVzUwU1VRNklIQmhjbVZ1ZEVsRUxGeHVJQ0FnSUhCaGNtVnVkRTV2WkdVNklHNTFiR3dzWEc0Z0lDQWdkSGx3WlRvZ1VtVmhZM1JOZFd4MGFVTm9hV3hrVlhCa1lYUmxWSGx3WlhNdVUwVlVYMDFCVWt0VlVDeGNiaUFnSUNCdFlYSnJkWEJKYm1SbGVEb2diblZzYkN4Y2JpQWdJQ0JqYjI1MFpXNTBPaUJ0WVhKcmRYQXNYRzRnSUNBZ1puSnZiVWx1WkdWNE9pQnVkV3hzTEZ4dUlDQWdJSFJ2U1c1a1pYZzZJRzUxYkd4Y2JpQWdmU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dSVzV4ZFdWMVpYTWdjMlYwZEdsdVp5QjBhR1VnZEdWNGRDQmpiMjUwWlc1MExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCd1lYSmxiblJKUkNCSlJDQnZaaUIwYUdVZ2NHRnlaVzUwSUdOdmJYQnZibVZ1ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBaWGgwUTI5dWRHVnVkQ0JVWlhoMElHTnZiblJsYm5RZ2RHOGdjMlYwTGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pXNXhkV1YxWlZSbGVIUkRiMjUwWlc1MEtIQmhjbVZ1ZEVsRUxDQjBaWGgwUTI5dWRHVnVkQ2tnZTF4dUlDQXZMeUJPVDFSRk9pQk9kV3hzSUhaaGJIVmxjeUJ5WldSMVkyVWdhR2xrWkdWdUlHTnNZWE56WlhNdVhHNGdJSFZ3WkdGMFpWRjFaWFZsTG5CMWMyZ29lMXh1SUNBZ0lIQmhjbVZ1ZEVsRU9pQndZWEpsYm5SSlJDeGNiaUFnSUNCd1lYSmxiblJPYjJSbE9pQnVkV3hzTEZ4dUlDQWdJSFI1Y0dVNklGSmxZV04wVFhWc2RHbERhR2xzWkZWd1pHRjBaVlI1Y0dWekxsUkZXRlJmUTA5T1ZFVk9WQ3hjYmlBZ0lDQnRZWEpyZFhCSmJtUmxlRG9nYm5Wc2JDeGNiaUFnSUNCamIyNTBaVzUwT2lCMFpYaDBRMjl1ZEdWdWRDeGNiaUFnSUNCbWNtOXRTVzVrWlhnNklHNTFiR3dzWEc0Z0lDQWdkRzlKYm1SbGVEb2diblZzYkZ4dUlDQjlLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlFjbTlqWlhOelpYTWdZVzU1SUdWdWNYVmxkV1ZrSUhWd1pHRjBaWE11WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdjSEp2WTJWemMxRjFaWFZsS0NrZ2UxeHVJQ0JwWmlBb2RYQmtZWFJsVVhWbGRXVXViR1Z1WjNSb0tTQjdYRzRnSUNBZ1VtVmhZM1JEYjIxd2IyNWxiblJGYm5acGNtOXViV1Z1ZEM1d2NtOWpaWE56UTJocGJHUnlaVzVWY0dSaGRHVnpLSFZ3WkdGMFpWRjFaWFZsTENCdFlYSnJkWEJSZFdWMVpTazdYRzRnSUNBZ1kyeGxZWEpSZFdWMVpTZ3BPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUTJ4bFlYSnpJR0Z1ZVNCbGJuRjFaWFZsWkNCMWNHUmhkR1Z6TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR05zWldGeVVYVmxkV1VvS1NCN1hHNGdJSFZ3WkdGMFpWRjFaWFZsTG14bGJtZDBhQ0E5SURBN1hHNGdJRzFoY210MWNGRjFaWFZsTG14bGJtZDBhQ0E5SURBN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WaFkzUk5kV3gwYVVOb2FXeGtJR0Z5WlNCallYQmhZbXhsSUc5bUlISmxZMjl1WTJsc2FXNW5JRzExYkhScGNHeGxJR05vYVd4a2NtVnVMbHh1SUNwY2JpQXFJRUJqYkdGemN5QlNaV0ZqZEUxMWJIUnBRMmhwYkdSY2JpQXFJRUJwYm5SbGNtNWhiRnh1SUNvdlhHNTJZWElnVW1WaFkzUk5kV3gwYVVOb2FXeGtJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJRY205MmFXUmxjeUJqYjIxdGIyNGdablZ1WTNScGIyNWhiR2wwZVNCbWIzSWdZMjl0Y0c5dVpXNTBjeUIwYUdGMElHMTFjM1FnY21WamIyNWphV3hsSUcxMWJIUnBjR3hsWEc0Z0lDQXFJR05vYVd4a2NtVnVMaUJVYUdseklHbHpJSFZ6WldRZ1lua2dZRkpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBZQ0IwYnlCdGIzVnVkQ3dnZFhCa1lYUmxMQ0JoYm1SY2JpQWdJQ29nZFc1dGIzVnVkQ0JqYUdsc1pDQmpiMjF3YjI1bGJuUnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWJHVnVaSE1nZTFKbFlXTjBUWFZzZEdsRGFHbHNaQzV3Y205MGIzUjVjR1Y5WEc0Z0lDQXFMMXh1SUNCTmFYaHBiam9nZTF4dVhHNGdJQ0FnWDNKbFkyOXVZMmxzWlhKSmJuTjBZVzUwYVdGMFpVTm9hV3hrY21WdU9pQm1kVzVqZEdsdmJpQW9ibVZ6ZEdWa1EyaHBiR1J5Wlc0c0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNqdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJTWldGamRFTm9hV3hrVW1WamIyNWphV3hsY2k1cGJuTjBZVzUwYVdGMFpVTm9hV3hrY21WdUtHNWxjM1JsWkVOb2FXeGtjbVZ1TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJQ0FnZlNCbWFXNWhiR3g1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5TG1sdWMzUmhiblJwWVhSbFEyaHBiR1J5Wlc0b2JtVnpkR1ZrUTJocGJHUnlaVzRzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtUdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ1gzSmxZMjl1WTJsc1pYSlZjR1JoZEdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tIQnlaWFpEYUdsc1pISmxiaXdnYm1WNGRFNWxjM1JsWkVOb2FXeGtjbVZ1Uld4bGJXVnVkSE1zSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQjJZWElnYm1WNGRFTm9hV3hrY21WdU8xeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1ZmIzZHVaWEk3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnVaWGgwUTJocGJHUnlaVzRnUFNCbWJHRjBkR1Z1UTJocGJHUnlaVzRvYm1WNGRFNWxjM1JsWkVOb2FXeGtjbVZ1Uld4bGJXVnVkSE1wTzF4dUlDQWdJQ0FnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGSmxZV04wUTJocGJHUlNaV052Ym1OcGJHVnlMblZ3WkdGMFpVTm9hV3hrY21WdUtIQnlaWFpEYUdsc1pISmxiaXdnYm1WNGRFTm9hV3hrY21WdUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUc1bGVIUkRhR2xzWkhKbGJpQTlJR1pzWVhSMFpXNURhR2xzWkhKbGJpaHVaWGgwVG1WemRHVmtRMmhwYkdSeVpXNUZiR1Z0Wlc1MGN5azdYRzRnSUNBZ0lDQnlaWFIxY200Z1VtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSXVkWEJrWVhSbFEyaHBiR1J5Wlc0b2NISmxka05vYVd4a2NtVnVMQ0J1WlhoMFEyaHBiR1J5Wlc0c0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUjJWdVpYSmhkR1Z6SUdFZ1hDSnRiM1Z1ZENCcGJXRm5aVndpSUdadmNpQmxZV05vSUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0JqYUdsc1pISmxiaTRnU1c0Z2RHaGxJR05oYzJWY2JpQWdJQ0FnS2lCdlppQmdVbVZoWTNSRVQwMURiMjF3YjI1bGJuUmdMQ0JoSUcxdmRXNTBJR2x0WVdkbElHbHpJR0VnYzNSeWFXNW5JRzltSUcxaGNtdDFjQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVZ6ZEdWa1EyaHBiR1J5Wlc0Z1RtVnpkR1ZrSUdOb2FXeGtJRzFoY0hNdVhHNGdJQ0FnSUNvZ1FISmxkSFZ5YmlCN1lYSnlZWGw5SUVGdUlHRnljbUY1SUc5bUlHMXZkVzUwWldRZ2NtVndjbVZ6Wlc1MFlYUnBiMjV6TGx4dUlDQWdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJRzF2ZFc1MFEyaHBiR1J5Wlc0NklHWjFibU4wYVc5dUlDaHVaWE4wWldSRGFHbHNaSEpsYml3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSFpoY2lCamFHbHNaSEpsYmlBOUlIUm9hWE11WDNKbFkyOXVZMmxzWlhKSmJuTjBZVzUwYVdGMFpVTm9hV3hrY21WdUtHNWxjM1JsWkVOb2FXeGtjbVZ1TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQjBhR2x6TGw5eVpXNWtaWEpsWkVOb2FXeGtjbVZ1SUQwZ1kyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNCMllYSWdiVzkxYm5SSmJXRm5aWE1nUFNCYlhUdGNiaUFnSUNBZ0lIWmhjaUJwYm1SbGVDQTlJREE3WEc0Z0lDQWdJQ0JtYjNJZ0tIWmhjaUJ1WVcxbElHbHVJR05vYVd4a2NtVnVLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJqYUdsc1pDQTlJR05vYVd4a2NtVnVXMjVoYldWZE8xeHVJQ0FnSUNBZ0lDQWdJQzh2SUVsdWJHbHVaV1FnWm05eUlIQmxjbVp2Y20xaGJtTmxMQ0J6WldVZ1lGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMbU55WldGMFpWSmxZV04wU1VSZ0xseHVJQ0FnSUNBZ0lDQWdJSFpoY2lCeWIyOTBTVVFnUFNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFSUNzZ2JtRnRaVHRjYmlBZ0lDQWdJQ0FnSUNCMllYSWdiVzkxYm5SSmJXRm5aU0E5SUZKbFlXTjBVbVZqYjI1amFXeGxjaTV0YjNWdWRFTnZiWEJ2Ym1WdWRDaGphR2xzWkN3Z2NtOXZkRWxFTENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJQ0FnWTJocGJHUXVYMjF2ZFc1MFNXNWtaWGdnUFNCcGJtUmxlQ3NyTzF4dUlDQWdJQ0FnSUNBZ0lHMXZkVzUwU1cxaFoyVnpMbkIxYzJnb2JXOTFiblJKYldGblpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnRiM1Z1ZEVsdFlXZGxjenRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVW1Wd2JHRmpaWE1nWVc1NUlISmxibVJsY21Wa0lHTm9hV3hrY21WdUlIZHBkR2dnWVNCMFpYaDBJR052Ym5SbGJuUWdjM1J5YVc1bkxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1bGVIUkRiMjUwWlc1MElGTjBjbWx1WnlCdlppQmpiMjUwWlc1MExseHVJQ0FnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnSUNBcUwxeHVJQ0FnSUhWd1pHRjBaVlJsZUhSRGIyNTBaVzUwT2lCbWRXNWpkR2x2YmlBb2JtVjRkRU52Ym5SbGJuUXBJSHRjYmlBZ0lDQWdJSFZ3WkdGMFpVUmxjSFJvS3lzN1hHNGdJQ0FnSUNCMllYSWdaWEp5YjNKVWFISnZkMjRnUFNCMGNuVmxPMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJ5WlhaRGFHbHNaSEpsYmlBOUlIUm9hWE11WDNKbGJtUmxjbVZrUTJocGJHUnlaVzQ3WEc0Z0lDQWdJQ0FnSUM4dklGSmxiVzkyWlNCaGJua2djbVZ1WkdWeVpXUWdZMmhwYkdSeVpXNHVYRzRnSUNBZ0lDQWdJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5TG5WdWJXOTFiblJEYUdsc1pISmxiaWh3Y21WMlEyaHBiR1J5Wlc0cE8xeHVJQ0FnSUNBZ0lDQXZMeUJVVDBSUE9pQlVhR1VnYzJWMFZHVjRkRU52Ym5SbGJuUWdiM0JsY21GMGFXOXVJSE5vYjNWc1pDQmlaU0JsYm05MVoyaGNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdibUZ0WlNCcGJpQndjbVYyUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvY0hKbGRrTm9hV3hrY21WdUxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5MWJtMXZkVzUwUTJocGJHUW9jSEpsZGtOb2FXeGtjbVZ1VzI1aGJXVmRLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdMeThnVTJWMElHNWxkeUIwWlhoMElHTnZiblJsYm5RdVhHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFZHVjRkRU52Ym5SbGJuUW9ibVY0ZEVOdmJuUmxiblFwTzF4dUlDQWdJQ0FnSUNCbGNuSnZjbFJvY205M2JpQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZTQm1hVzVoYkd4NUlIdGNiaUFnSUNBZ0lDQWdkWEJrWVhSbFJHVndkR2d0TFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YxY0dSaGRHVkVaWEIwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNobGNuSnZjbFJvY205M2Jpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyeGxZWEpSZFdWMVpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQndjbTlqWlhOelVYVmxkV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVW1Wd2JHRmpaWE1nWVc1NUlISmxibVJsY21Wa0lHTm9hV3hrY21WdUlIZHBkR2dnWVNCdFlYSnJkWEFnYzNSeWFXNW5MbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNWxlSFJOWVhKcmRYQWdVM1J5YVc1bklHOW1JRzFoY210MWNDNWNiaUFnSUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNBZ0tpOWNiaUFnSUNCMWNHUmhkR1ZOWVhKcmRYQTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFRXRnlhM1Z3S1NCN1hHNGdJQ0FnSUNCMWNHUmhkR1ZFWlhCMGFDc3JPMXh1SUNBZ0lDQWdkbUZ5SUdWeWNtOXlWR2h5YjNkdUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCd2NtVjJRMmhwYkdSeVpXNGdQU0IwYUdsekxsOXlaVzVrWlhKbFpFTm9hV3hrY21WdU8xeHVJQ0FnSUNBZ0lDQXZMeUJTWlcxdmRtVWdZVzU1SUhKbGJtUmxjbVZrSUdOb2FXeGtjbVZ1TGx4dUlDQWdJQ0FnSUNCU1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNTFibTF2ZFc1MFEyaHBiR1J5Wlc0b2NISmxka05vYVd4a2NtVnVLVHRjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYm1GdFpTQnBiaUJ3Y21WMlEyaHBiR1J5Wlc0cElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISmxka05vYVd4a2NtVnVMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxsOTFibTF2ZFc1MFEyaHBiR1JDZVU1aGJXVW9jSEpsZGtOb2FXeGtjbVZ1VzI1aGJXVmRMQ0J1WVcxbEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSTllYSnJkWEFvYm1WNGRFMWhjbXQxY0NrN1hHNGdJQ0FnSUNBZ0lHVnljbTl5VkdoeWIzZHVJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lDQWdJQ0IxY0dSaGRHVkVaWEIwYUMwdE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVhWd1pHRjBaVVJsY0hSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHVnljbTl5VkdoeWIzZHVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiR1ZoY2xGMVpYVmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTlJkV1YxWlNncE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCVmNHUmhkR1Z6SUhSb1pTQnlaVzVrWlhKbFpDQmphR2xzWkhKbGJpQjNhWFJvSUc1bGR5QmphR2xzWkhKbGJpNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNZ1RtVnpkR1ZrSUdOb2FXeGtJR1ZzWlcxbGJuUWdiV0Z3Y3k1Y2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FnSUNvdlhHNGdJQ0FnZFhCa1lYUmxRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2h1WlhoMFRtVnpkR1ZrUTJocGJHUnlaVzVGYkdWdFpXNTBjeXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcElIdGNiaUFnSUNBZ0lIVndaR0YwWlVSbGNIUm9LeXM3WEc0Z0lDQWdJQ0IyWVhJZ1pYSnliM0pVYUhKdmQyNGdQU0IwY25WbE8xeHVJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZkWEJrWVhSbFEyaHBiR1J5Wlc0b2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnWlhKeWIzSlVhSEp2ZDI0Z1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnSUNBZ0lIVndaR0YwWlVSbGNIUm9MUzA3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkWEJrWVhSbFJHVndkR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSlVhSEp2ZDI0cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOc1pXRnlVWFZsZFdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZZMlZ6YzFGMVpYVmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRWx0Y0hKdmRtVWdjR1Z5Wm05eWJXRnVZMlVnWW5rZ2FYTnZiR0YwYVc1bklIUm9hWE1nYUc5MElHTnZaR1VnY0dGMGFDQm1jbTl0SUhSb1pTQjBjbmt2WTJGMFkyaGNiaUFnSUNBZ0tpQmliRzlqYXlCcGJpQmdkWEJrWVhSbFEyaHBiR1J5Wlc1Z0xseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCdVpYaDBUbVZ6ZEdWa1EyaHBiR1J5Wlc1RmJHVnRaVzUwY3lCT1pYTjBaV1FnWTJocGJHUWdaV3hsYldWdWRDQnRZWEJ6TGx4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQWdJQ292WEc0Z0lDQWdYM1Z3WkdGMFpVTm9hV3hrY21WdU9pQm1kVzVqZEdsdmJpQW9ibVY0ZEU1bGMzUmxaRU5vYVd4a2NtVnVSV3hsYldWdWRITXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCMllYSWdjSEpsZGtOb2FXeGtjbVZ1SUQwZ2RHaHBjeTVmY21WdVpHVnlaV1JEYUdsc1pISmxianRjYmlBZ0lDQWdJSFpoY2lCdVpYaDBRMmhwYkdSeVpXNGdQU0IwYUdsekxsOXlaV052Ym1OcGJHVnlWWEJrWVhSbFEyaHBiR1J5Wlc0b2NISmxka05vYVd4a2NtVnVMQ0J1WlhoMFRtVnpkR1ZrUTJocGJHUnlaVzVGYkdWdFpXNTBjeXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmY21WdVpHVnlaV1JEYUdsc1pISmxiaUE5SUc1bGVIUkRhR2xzWkhKbGJqdGNiaUFnSUNBZ0lHbG1JQ2doYm1WNGRFTm9hV3hrY21WdUlDWW1JQ0Z3Y21WMlEyaHBiR1J5Wlc0cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RtRnlJRzVoYldVN1hHNGdJQ0FnSUNBdkx5QmdibVY0ZEVsdVpHVjRZQ0IzYVd4c0lHbHVZM0psYldWdWRDQm1iM0lnWldGamFDQmphR2xzWkNCcGJpQmdibVY0ZEVOb2FXeGtjbVZ1WUN3Z1luVjBYRzRnSUNBZ0lDQXZMeUJnYkdGemRFbHVaR1Y0WUNCM2FXeHNJR0psSUhSb1pTQnNZWE4wSUdsdVpHVjRJSFpwYzJsMFpXUWdhVzRnWUhCeVpYWkRhR2xzWkhKbGJtQXVYRzRnSUNBZ0lDQjJZWElnYkdGemRFbHVaR1Y0SUQwZ01EdGNiaUFnSUNBZ0lIWmhjaUJ1WlhoMFNXNWtaWGdnUFNBd08xeHVJQ0FnSUNBZ1ptOXlJQ2h1WVcxbElHbHVJRzVsZUhSRGFHbHNaSEpsYmlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVc1bGVIUkRhR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFpoY2lCd2NtVjJRMmhwYkdRZ1BTQndjbVYyUTJocGJHUnlaVzRnSmlZZ2NISmxka05vYVd4a2NtVnVXMjVoYldWZE8xeHVJQ0FnSUNBZ0lDQjJZWElnYm1WNGRFTm9hV3hrSUQwZ2JtVjRkRU5vYVd4a2NtVnVXMjVoYldWZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKbGRrTm9hV3hrSUQwOVBTQnVaWGgwUTJocGJHUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbTF2ZG1WRGFHbHNaQ2h3Y21WMlEyaHBiR1FzSUc1bGVIUkpibVJsZUN3Z2JHRnpkRWx1WkdWNEtUdGNiaUFnSUNBZ0lDQWdJQ0JzWVhOMFNXNWtaWGdnUFNCTllYUm9MbTFoZUNod2NtVjJRMmhwYkdRdVgyMXZkVzUwU1c1a1pYZ3NJR3hoYzNSSmJtUmxlQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2NISmxka05vYVd4a0xsOXRiM1Z1ZEVsdVpHVjRJRDBnYm1WNGRFbHVaR1Y0TzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h3Y21WMlEyaHBiR1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUZWd1pHRjBaU0JnYkdGemRFbHVaR1Y0WUNCaVpXWnZjbVVnWUY5dGIzVnVkRWx1WkdWNFlDQm5aWFJ6SUhWdWMyVjBJR0o1SUhWdWJXOTFiblJwYm1jdVhHNGdJQ0FnSUNBZ0lDQWdJQ0JzWVhOMFNXNWtaWGdnUFNCTllYUm9MbTFoZUNod2NtVjJRMmhwYkdRdVgyMXZkVzUwU1c1a1pYZ3NJR3hoYzNSSmJtUmxlQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5MWJtMXZkVzUwUTJocGJHUW9jSEpsZGtOb2FXeGtLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdMeThnVkdobElHTm9hV3hrSUcxMWMzUWdZbVVnYVc1emRHRnVkR2xoZEdWa0lHSmxabTl5WlNCcGRDZHpJRzF2ZFc1MFpXUXVYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWZiVzkxYm5SRGFHbHNaRUo1VG1GdFpVRjBTVzVrWlhnb2JtVjRkRU5vYVd4a0xDQnVZVzFsTENCdVpYaDBTVzVrWlhnc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCdVpYaDBTVzVrWlhnckt6dGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDOHZJRkpsYlc5MlpTQmphR2xzWkhKbGJpQjBhR0YwSUdGeVpTQnVieUJzYjI1blpYSWdjSEpsYzJWdWRDNWNiaUFnSUNBZ0lHWnZjaUFvYm1GdFpTQnBiaUJ3Y21WMlEyaHBiR1J5Wlc0cElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hCeVpYWkRhR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU0FtSmlBaEtHNWxlSFJEYUdsc1pISmxiaUFtSmlCdVpYaDBRMmhwYkdSeVpXNHVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2twS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmRXNXRiM1Z1ZEVOb2FXeGtLSEJ5WlhaRGFHbHNaSEpsYmx0dVlXMWxYU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1ZXNXRiM1Z1ZEhNZ1lXeHNJSEpsYm1SbGNtVmtJR05vYVd4a2NtVnVMaUJVYUdseklITm9iM1ZzWkNCaVpTQjFjMlZrSUhSdklHTnNaV0Z1SUhWd0lHTm9hV3hrY21WdVhHNGdJQ0FnSUNvZ2QyaGxiaUIwYUdseklHTnZiWEJ2Ym1WdWRDQnBjeUIxYm0xdmRXNTBaV1F1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDQWdLaTljYmlBZ0lDQjFibTF2ZFc1MFEyaHBiR1J5Wlc0NklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJSFpoY2lCeVpXNWtaWEpsWkVOb2FXeGtjbVZ1SUQwZ2RHaHBjeTVmY21WdVpHVnlaV1JEYUdsc1pISmxianRjYmlBZ0lDQWdJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5TG5WdWJXOTFiblJEYUdsc1pISmxiaWh5Wlc1a1pYSmxaRU5vYVd4a2NtVnVLVHRjYmlBZ0lDQWdJSFJvYVhNdVgzSmxibVJsY21Wa1EyaHBiR1J5Wlc0Z1BTQnVkV3hzTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCTmIzWmxjeUJoSUdOb2FXeGtJR052YlhCdmJtVnVkQ0IwYnlCMGFHVWdjM1Z3Y0d4cFpXUWdhVzVrWlhndVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMjl0Y0c5dVpXNTBmU0JqYUdsc1pDQkRiMjF3YjI1bGJuUWdkRzhnYlc5MlpTNWNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2RHOUpibVJsZUNCRVpYTjBhVzVoZEdsdmJpQnBibVJsZUNCdlppQjBhR1VnWld4bGJXVnVkQzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiR0Z6ZEVsdVpHVjRJRXhoYzNRZ2FXNWtaWGdnZG1semFYUmxaQ0J2WmlCMGFHVWdjMmxpYkdsdVozTWdiMllnWUdOb2FXeGtZQzVjYmlBZ0lDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQWdJQ292WEc0Z0lDQWdiVzkyWlVOb2FXeGtPaUJtZFc1amRHbHZiaUFvWTJocGJHUXNJSFJ2U1c1a1pYZ3NJR3hoYzNSSmJtUmxlQ2tnZTF4dUlDQWdJQ0FnTHk4Z1NXWWdkR2hsSUdsdVpHVjRJRzltSUdCamFHbHNaR0FnYVhNZ2JHVnpjeUIwYUdGdUlHQnNZWE4wU1c1a1pYaGdMQ0IwYUdWdUlHbDBJRzVsWldSeklIUnZYRzRnSUNBZ0lDQXZMeUJpWlNCdGIzWmxaQzRnVDNSb1pYSjNhWE5sTENCM1pTQmtieUJ1YjNRZ2JtVmxaQ0IwYnlCdGIzWmxJR2wwSUdKbFkyRjFjMlVnWVNCamFHbHNaQ0IzYVd4c0lHSmxYRzRnSUNBZ0lDQXZMeUJwYm5ObGNuUmxaQ0J2Y2lCdGIzWmxaQ0JpWldadmNtVWdZR05vYVd4a1lDNWNiaUFnSUNBZ0lHbG1JQ2hqYUdsc1pDNWZiVzkxYm5SSmJtUmxlQ0E4SUd4aGMzUkpibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQmxibkYxWlhWbFRXOTJaU2gwYUdsekxsOXliMjkwVG05a1pVbEVMQ0JqYUdsc1pDNWZiVzkxYm5SSmJtUmxlQ3dnZEc5SmJtUmxlQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVOeVpXRjBaWE1nWVNCamFHbHNaQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyOXRjRzl1Wlc1MGZTQmphR2xzWkNCRGIyMXdiMjVsYm5RZ2RHOGdZM0psWVhSbExseHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdGIzVnVkRWx0WVdkbElFMWhjbXQxY0NCMGJ5QnBibk5sY25RdVhHNGdJQ0FnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnSUNBcUwxeHVJQ0FnSUdOeVpXRjBaVU5vYVd4a09pQm1kVzVqZEdsdmJpQW9ZMmhwYkdRc0lHMXZkVzUwU1cxaFoyVXBJSHRjYmlBZ0lDQWdJR1Z1Y1hWbGRXVkpibk5sY25STllYSnJkWEFvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ3dnYlc5MWJuUkpiV0ZuWlN3Z1kyaHBiR1F1WDIxdmRXNTBTVzVrWlhncE8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlNaVzF2ZG1WeklHRWdZMmhwYkdRZ1kyOXRjRzl1Wlc1MExseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTJocGJHUWdRMmhwYkdRZ2RHOGdjbVZ0YjNabExseHVJQ0FnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNBZ0tpOWNiaUFnSUNCeVpXMXZkbVZEYUdsc1pEb2dablZ1WTNScGIyNGdLR05vYVd4a0tTQjdYRzRnSUNBZ0lDQmxibkYxWlhWbFVtVnRiM1psS0hSb2FYTXVYM0p2YjNST2IyUmxTVVFzSUdOb2FXeGtMbDl0YjNWdWRFbHVaR1Y0S1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1UyVjBjeUIwYUdseklIUmxlSFFnWTI5dWRHVnVkQ0J6ZEhKcGJtY3VYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHVjRkRU52Ym5SbGJuUWdWR1Y0ZENCamIyNTBaVzUwSUhSdklITmxkQzVjYmlBZ0lDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQWdJQ292WEc0Z0lDQWdjMlYwVkdWNGRFTnZiblJsYm5RNklHWjFibU4wYVc5dUlDaDBaWGgwUTI5dWRHVnVkQ2tnZTF4dUlDQWdJQ0FnWlc1eGRXVjFaVlJsZUhSRGIyNTBaVzUwS0hSb2FYTXVYM0p2YjNST2IyUmxTVVFzSUhSbGVIUkRiMjUwWlc1MEtUdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dVMlYwY3lCMGFHbHpJRzFoY210MWNDQnpkSEpwYm1jdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYldGeWEzVndJRTFoY210MWNDQjBieUJ6WlhRdVhHNGdJQ0FnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnSUNBcUwxeHVJQ0FnSUhObGRFMWhjbXQxY0RvZ1puVnVZM1JwYjI0Z0tHMWhjbXQxY0NrZ2UxeHVJQ0FnSUNBZ1pXNXhkV1YxWlZObGRFMWhjbXQxY0NoMGFHbHpMbDl5YjI5MFRtOWtaVWxFTENCdFlYSnJkWEFwTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCTmIzVnVkSE1nWVNCamFHbHNaQ0IzYVhSb0lIUm9aU0J6ZFhCd2JHbGxaQ0J1WVcxbExseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1RrOVVSVG9nVkdocGN5QnBjeUJ3WVhKMElHOW1JR0IxY0dSaGRHVkRhR2xzWkhKbGJtQWdZVzVrSUdseklHaGxjbVVnWm05eUlISmxZV1JoWW1sc2FYUjVMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyaHBiR1FnUTI5dGNHOXVaVzUwSUhSdklHMXZkVzUwTGx4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J1WVcxbElFNWhiV1VnYjJZZ2RHaGxJR05vYVd4a0xseHVJQ0FnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCcGJtUmxlQ0JKYm1SbGVDQmhkQ0IzYUdsamFDQjBieUJwYm5ObGNuUWdkR2hsSUdOb2FXeGtMbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDQWdLaUJBY0hKcGRtRjBaVnh1SUNBZ0lDQXFMMXh1SUNBZ0lGOXRiM1Z1ZEVOb2FXeGtRbmxPWVcxbFFYUkpibVJsZURvZ1puVnVZM1JwYjI0Z0tHTm9hV3hrTENCdVlXMWxMQ0JwYm1SbGVDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUM4dklFbHViR2x1WldRZ1ptOXlJSEJsY21admNtMWhibU5sTENCelpXVWdZRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TG1OeVpXRjBaVkpsWVdOMFNVUmdMbHh1SUNBZ0lDQWdkbUZ5SUhKdmIzUkpSQ0E5SUhSb2FYTXVYM0p2YjNST2IyUmxTVVFnS3lCdVlXMWxPMXh1SUNBZ0lDQWdkbUZ5SUcxdmRXNTBTVzFoWjJVZ1BTQlNaV0ZqZEZKbFkyOXVZMmxzWlhJdWJXOTFiblJEYjIxd2IyNWxiblFvWTJocGJHUXNJSEp2YjNSSlJDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnWTJocGJHUXVYMjF2ZFc1MFNXNWtaWGdnUFNCcGJtUmxlRHRjYmlBZ0lDQWdJSFJvYVhNdVkzSmxZWFJsUTJocGJHUW9ZMmhwYkdRc0lHMXZkVzUwU1cxaFoyVXBPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJWYm0xdmRXNTBjeUJoSUhKbGJtUmxjbVZrSUdOb2FXeGtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dUazlVUlRvZ1ZHaHBjeUJwY3lCd1lYSjBJRzltSUdCMWNHUmhkR1ZEYUdsc1pISmxibUFnWVc1a0lHbHpJR2hsY21VZ1ptOXlJSEpsWVdSaFltbHNhWFI1TGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMmhwYkdRZ1EyOXRjRzl1Wlc1MElIUnZJSFZ1Ylc5MWJuUXVYRzRnSUNBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNBZ0tpOWNiaUFnSUNCZmRXNXRiM1Z1ZEVOb2FXeGtPaUJtZFc1amRHbHZiaUFvWTJocGJHUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWNtVnRiM1psUTJocGJHUW9ZMmhwYkdRcE8xeHVJQ0FnSUNBZ1kyaHBiR1F1WDIxdmRXNTBTVzVrWlhnZ1BTQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSTmRXeDBhVU5vYVd4a095SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5TWlycm9yID0gcmVxdWlyZSgnZmJqcy9saWIva2V5TWlycm9yJyk7XG5cbi8qKlxuICogV2hlbiBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGFyZSB1cGRhdGVkLCBhIHNlcmllcyBvZiB1cGRhdGUgY29uZmlndXJhdGlvblxuICogb2JqZWN0cyBhcmUgY3JlYXRlZCBpbiBvcmRlciB0byBiYXRjaCBhbmQgc2VyaWFsaXplIHRoZSByZXF1aXJlZCBjaGFuZ2VzLlxuICpcbiAqIEVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSB0eXBlcyBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcyA9IGtleU1pcnJvcih7XG4gIElOU0VSVF9NQVJLVVA6IG51bGwsXG4gIE1PVkVfRVhJU1RJTkc6IG51bGwsXG4gIFJFTU9WRV9OT0RFOiBudWxsLFxuICBTRVRfTUFSS1VQOiBudWxsLFxuICBURVhUX0NPTlRFTlQ6IG51bGxcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3ROYXRpdmVDb21wb25lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGF1dG9HZW5lcmF0ZVdyYXBwZXJDbGFzcyA9IG51bGw7XG52YXIgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gbnVsbDtcbi8vIFRoaXMgcmVnaXN0cnkga2VlcHMgdHJhY2sgb2Ygd3JhcHBlciBjbGFzc2VzIGFyb3VuZCBuYXRpdmUgdGFncy5cbnZhciB0YWdUb0NvbXBvbmVudENsYXNzID0ge307XG52YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVsbDtcblxudmFyIFJlYWN0TmF0aXZlQ29tcG9uZW50SW5qZWN0aW9uID0ge1xuICAvLyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3RyaW5nLiBUaGlzIGlzIGEgY2F0Y2ggYWxsXG4gIC8vIHRoYXQgY2FuIHJlbmRlciBhbnkga2luZCBvZiB0YWcuXG4gIGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7XG4gICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XG4gIH0sXG4gIC8vIFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50IGNsYXNzIHRoYXQgdGFrZXMgdGhlIHRleHQgc3RyaW5nIHRvIGJlXG4gIC8vIHJlbmRlcmVkIGFzIHByb3BzLlxuICBpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuICAgIHRleHRDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9LFxuICAvLyBUaGlzIGFjY2VwdHMgYSBrZXllZCBvYmplY3Qgd2l0aCBjbGFzc2VzIGFzIHZhbHVlcy4gRWFjaCBrZXkgcmVwcmVzZW50cyBhXG4gIC8vIHRhZy4gVGhhdCBwYXJ0aWN1bGFyIHRhZyB3aWxsIHVzZSB0aGlzIGNsYXNzIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgb25lLlxuICBpbmplY3RDb21wb25lbnRDbGFzc2VzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3Nlcykge1xuICAgIGFzc2lnbih0YWdUb0NvbXBvbmVudENsYXNzLCBjb21wb25lbnRDbGFzc2VzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgYSBjb21wb3NpdGUgY29tcG9uZW50IHdyYXBwZXIgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IFRoZSB0YWcgZm9yIHdoaWNoIHRvIGdldCB0aGUgY2xhc3MuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIFJlYWN0IGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRDbGFzc0ZvckVsZW1lbnQoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbGVtZW50LnR5cGU7XG4gIH1cbiAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTtcbiAgdmFyIGNvbXBvbmVudENsYXNzID0gdGFnVG9Db21wb25lbnRDbGFzc1t0YWddO1xuICBpZiAoY29tcG9uZW50Q2xhc3MgPT0gbnVsbCkge1xuICAgIHRhZ1RvQ29tcG9uZW50Q2xhc3NbdGFnXSA9IGNvbXBvbmVudENsYXNzID0gYXV0b0dlbmVyYXRlV3JhcHBlckNsYXNzKHRhZyk7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudENsYXNzO1xufVxuXG4vKipcbiAqIEdldCBhIG5hdGl2ZSBpbnRlcm5hbCBjb21wb25lbnQgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNyZWF0ZS5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgaW50ZXJuYWwgY2xhc3MgY29uc3RydWN0b3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpIHtcbiAgIWdlbmVyaWNDb21wb25lbnRDbGFzcyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyByZWdpc3RlcmVkIGNvbXBvbmVudCBmb3IgdGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVtZW50LnR5cGUsIGVsZW1lbnQucHJvcHMpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RUZXh0fSB0ZXh0XG4gKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VGb3JUZXh0KHRleHQpIHtcbiAgcmV0dXJuIG5ldyB0ZXh0Q29tcG9uZW50Q2xhc3ModGV4dCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1RleHRDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIHJldHVybiBjb21wb25lbnQgaW5zdGFuY2VvZiB0ZXh0Q29tcG9uZW50Q2xhc3M7XG59XG5cbnZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudCA9IHtcbiAgZ2V0Q29tcG9uZW50Q2xhc3NGb3JFbGVtZW50OiBnZXRDb21wb25lbnRDbGFzc0ZvckVsZW1lbnQsXG4gIGNyZWF0ZUludGVybmFsQ29tcG9uZW50OiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudCxcbiAgY3JlYXRlSW5zdGFuY2VGb3JUZXh0OiBjcmVhdGVJbnN0YW5jZUZvclRleHQsXG4gIGlzVGV4dENvbXBvbmVudDogaXNUZXh0Q29tcG9uZW50LFxuICBpbmplY3Rpb246IFJlYWN0TmF0aXZlQ29tcG9uZW50SW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TmF0aXZlQ29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRTVoZEdsMlpVTnZiWEJ2Ym1WdWRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFNWhkR2wyWlVOdmJYQnZibVZ1ZEZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc1MllYSWdZWFYwYjBkbGJtVnlZWFJsVjNKaGNIQmxja05zWVhOeklEMGdiblZzYkR0Y2JuWmhjaUJuWlc1bGNtbGpRMjl0Y0c5dVpXNTBRMnhoYzNNZ1BTQnVkV3hzTzF4dUx5OGdWR2hwY3lCeVpXZHBjM1J5ZVNCclpXVndjeUIwY21GamF5QnZaaUIzY21Gd2NHVnlJR05zWVhOelpYTWdZWEp2ZFc1a0lHNWhkR2wyWlNCMFlXZHpMbHh1ZG1GeUlIUmhaMVJ2UTI5dGNHOXVaVzUwUTJ4aGMzTWdQU0I3ZlR0Y2JuWmhjaUIwWlhoMFEyOXRjRzl1Wlc1MFEyeGhjM01nUFNCdWRXeHNPMXh1WEc1MllYSWdVbVZoWTNST1lYUnBkbVZEYjIxd2IyNWxiblJKYm1wbFkzUnBiMjRnUFNCN1hHNGdJQzh2SUZSb2FYTWdZV05qWlhCMGN5QmhJR05zWVhOeklIUm9ZWFFnY21WalpXbDJaWE1nZEdobElIUmhaeUJ6ZEhKcGJtY3VJRlJvYVhNZ2FYTWdZU0JqWVhSamFDQmhiR3hjYmlBZ0x5OGdkR2hoZENCallXNGdjbVZ1WkdWeUlHRnVlU0JyYVc1a0lHOW1JSFJoWnk1Y2JpQWdhVzVxWldOMFIyVnVaWEpwWTBOdmJYQnZibVZ1ZEVOc1lYTnpPaUJtZFc1amRHbHZiaUFvWTI5dGNHOXVaVzUwUTJ4aGMzTXBJSHRjYmlBZ0lDQm5aVzVsY21salEyOXRjRzl1Wlc1MFEyeGhjM01nUFNCamIyMXdiMjVsYm5SRGJHRnpjenRjYmlBZ2ZTeGNiaUFnTHk4Z1ZHaHBjeUJoWTJObGNIUnpJR0VnZEdWNGRDQmpiMjF3YjI1bGJuUWdZMnhoYzNNZ2RHaGhkQ0IwWVd0bGN5QjBhR1VnZEdWNGRDQnpkSEpwYm1jZ2RHOGdZbVZjYmlBZ0x5OGdjbVZ1WkdWeVpXUWdZWE1nY0hKdmNITXVYRzRnSUdsdWFtVmpkRlJsZUhSRGIyMXdiMjVsYm5SRGJHRnpjem9nWm5WdVkzUnBiMjRnS0dOdmJYQnZibVZ1ZEVOc1lYTnpLU0I3WEc0Z0lDQWdkR1Y0ZEVOdmJYQnZibVZ1ZEVOc1lYTnpJRDBnWTI5dGNHOXVaVzUwUTJ4aGMzTTdYRzRnSUgwc1hHNGdJQzh2SUZSb2FYTWdZV05qWlhCMGN5QmhJR3RsZVdWa0lHOWlhbVZqZENCM2FYUm9JR05zWVhOelpYTWdZWE1nZG1Gc2RXVnpMaUJGWVdOb0lHdGxlU0J5WlhCeVpYTmxiblJ6SUdGY2JpQWdMeThnZEdGbkxpQlVhR0YwSUhCaGNuUnBZM1ZzWVhJZ2RHRm5JSGRwYkd3Z2RYTmxJSFJvYVhNZ1kyeGhjM01nYVc1emRHVmhaQ0J2WmlCMGFHVWdaMlZ1WlhKcFl5QnZibVV1WEc0Z0lHbHVhbVZqZEVOdmJYQnZibVZ1ZEVOc1lYTnpaWE02SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5SRGJHRnpjMlZ6S1NCN1hHNGdJQ0FnWVhOemFXZHVLSFJoWjFSdlEyOXRjRzl1Wlc1MFEyeGhjM01zSUdOdmJYQnZibVZ1ZEVOc1lYTnpaWE1wTzF4dUlDQjlYRzU5TzF4dVhHNHZLaXBjYmlBcUlFZGxkQ0JoSUdOdmJYQnZjMmwwWlNCamIyMXdiMjVsYm5RZ2QzSmhjSEJsY2lCamJHRnpjeUJtYjNJZ1lTQnpjR1ZqYVdacFl5QjBZV2N1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHVnNaVzFsYm5RZ1ZHaGxJSFJoWnlCbWIzSWdkMmhwWTJnZ2RHOGdaMlYwSUhSb1pTQmpiR0Z6Y3k1Y2JpQXFJRUJ5WlhSMWNtNGdlMloxYm1OMGFXOXVmU0JVYUdVZ1VtVmhZM1FnWTJ4aGMzTWdZMjl1YzNSeWRXTjBiM0lnWm5WdVkzUnBiMjR1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEVOdmJYQnZibVZ1ZEVOc1lYTnpSbTl5Uld4bGJXVnVkQ2hsYkdWdFpXNTBLU0I3WEc0Z0lHbG1JQ2gwZVhCbGIyWWdaV3hsYldWdWRDNTBlWEJsSUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHVnNaVzFsYm5RdWRIbHdaVHRjYmlBZ2ZWeHVJQ0IyWVhJZ2RHRm5JRDBnWld4bGJXVnVkQzUwZVhCbE8xeHVJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFEyeGhjM01nUFNCMFlXZFViME52YlhCdmJtVnVkRU5zWVhOelczUmhaMTA3WEc0Z0lHbG1JQ2hqYjIxd2IyNWxiblJEYkdGemN5QTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ2RHRm5WRzlEYjIxd2IyNWxiblJEYkdGemMxdDBZV2RkSUQwZ1kyOXRjRzl1Wlc1MFEyeGhjM01nUFNCaGRYUnZSMlZ1WlhKaGRHVlhjbUZ3Y0dWeVEyeGhjM01vZEdGbktUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z1kyOXRjRzl1Wlc1MFEyeGhjM003WEc1OVhHNWNiaThxS2x4dUlDb2dSMlYwSUdFZ2JtRjBhWFpsSUdsdWRHVnlibUZzSUdOdmJYQnZibVZ1ZENCamJHRnpjeUJtYjNJZ1lTQnpjR1ZqYVdacFl5QjBZV2N1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHVnNaVzFsYm5RZ1ZHaGxJR1ZzWlcxbGJuUWdkRzhnWTNKbFlYUmxMbHh1SUNvZ1FISmxkSFZ5YmlCN1puVnVZM1JwYjI1OUlGUm9aU0JwYm5SbGNtNWhiQ0JqYkdGemN5QmpiMjV6ZEhKMVkzUnZjaUJtZFc1amRHbHZiaTVjYmlBcUwxeHVablZ1WTNScGIyNGdZM0psWVhSbFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5Rb1pXeGxiV1Z1ZENrZ2UxeHVJQ0FoWjJWdVpYSnBZME52YlhCdmJtVnVkRU5zWVhOeklEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFSb1pYSmxJR2x6SUc1dklISmxaMmx6ZEdWeVpXUWdZMjl0Y0c5dVpXNTBJR1p2Y2lCMGFHVWdkR0ZuSUNWekp5d2daV3hsYldWdWRDNTBlWEJsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUhKbGRIVnliaUJ1WlhjZ1oyVnVaWEpwWTBOdmJYQnZibVZ1ZEVOc1lYTnpLR1ZzWlcxbGJuUXVkSGx3WlN3Z1pXeGxiV1Z1ZEM1d2NtOXdjeWs3WEc1OVhHNWNiaThxS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEZSbGVIUjlJSFJsZUhSY2JpQXFJRUJ5WlhSMWNtNGdlMUpsWVdOMFEyOXRjRzl1Wlc1MGZWeHVJQ292WEc1bWRXNWpkR2x2YmlCamNtVmhkR1ZKYm5OMFlXNWpaVVp2Y2xSbGVIUW9kR1Y0ZENrZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUhSbGVIUkRiMjF3YjI1bGJuUkRiR0Z6Y3loMFpYaDBLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCamIyMXdiMjVsYm5SY2JpQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHpWR1Y0ZEVOdmJYQnZibVZ1ZENoamIyMXdiMjVsYm5RcElIdGNiaUFnY21WMGRYSnVJR052YlhCdmJtVnVkQ0JwYm5OMFlXNWpaVzltSUhSbGVIUkRiMjF3YjI1bGJuUkRiR0Z6Y3p0Y2JuMWNibHh1ZG1GeUlGSmxZV04wVG1GMGFYWmxRMjl0Y0c5dVpXNTBJRDBnZTF4dUlDQm5aWFJEYjIxd2IyNWxiblJEYkdGemMwWnZja1ZzWlcxbGJuUTZJR2RsZEVOdmJYQnZibVZ1ZEVOc1lYTnpSbTl5Uld4bGJXVnVkQ3hjYmlBZ1kzSmxZWFJsU1c1MFpYSnVZV3hEYjIxd2IyNWxiblE2SUdOeVpXRjBaVWx1ZEdWeWJtRnNRMjl0Y0c5dVpXNTBMRnh1SUNCamNtVmhkR1ZKYm5OMFlXNWpaVVp2Y2xSbGVIUTZJR055WldGMFpVbHVjM1JoYm1ObFJtOXlWR1Y0ZEN4Y2JpQWdhWE5VWlhoMFEyOXRjRzl1Wlc1ME9pQnBjMVJsZUhSRGIyMXdiMjVsYm5Rc1hHNGdJR2x1YW1WamRHbHZiam9nVW1WaFkzUk9ZWFJwZG1WRGIyMXdiMjVsYm5SSmJtcGxZM1JwYjI1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUk9ZWFJwZG1WRGIyMXdiMjVsYm5RN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE5vb3BVcGRhdGVRdWV1ZVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIHdhcm5URFoocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvciAmJiBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnJykgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1ZS5cbiAqL1xudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0ge1xuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHdhcm5URFoocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7XG4gICAgd2FyblREWihwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIHdhcm5URFoocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsUHJvcHMgU3Vic2V0IG9mIHRoZSBuZXh0IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRQcm9wczogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsUHJvcHMpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAnc2V0UHJvcHMnKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBOZXcgcHJvcHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VQcm9wczogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwcm9wcykge1xuICAgIHdhcm5URFoocHVibGljSW5zdGFuY2UsICdyZXBsYWNlUHJvcHMnKTtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRTV2YjNCVmNHUmhkR1ZSZFdWMVpTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1ZjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzVtZFc1amRHbHZiaUIzWVhKdVZFUmFLSEIxWW14cFkwbHVjM1JoYm1ObExDQmpZV3hzWlhKT1lXMWxLU0I3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNjbGN5Z3VMaTRwT2lCRFlXNGdiMjVzZVNCMWNHUmhkR1VnWVNCdGIzVnVkR1ZrSUc5eUlHMXZkVzUwYVc1bklHTnZiWEJ2Ym1WdWRDNGdKeUFySUNkVWFHbHpJSFZ6ZFdGc2JIa2diV1ZoYm5NZ2VXOTFJR05oYkd4bFpDQWxjeWdwSUc5dUlHRnVJSFZ1Ylc5MWJuUmxaQ0JqYjIxd2IyNWxiblF1SUNjZ0t5QW5WR2hwY3lCcGN5QmhJRzV2TFc5d0xpQlFiR1ZoYzJVZ1kyaGxZMnNnZEdobElHTnZaR1VnWm05eUlIUm9aU0FsY3lCamIyMXdiMjVsYm5RdUp5d2dZMkZzYkdWeVRtRnRaU3dnWTJGc2JHVnlUbUZ0WlN3Z2NIVmliR2xqU1c1emRHRnVZMlV1WTI5dWMzUnlkV04wYjNJZ0ppWWdjSFZpYkdsalNXNXpkR0Z1WTJVdVkyOXVjM1J5ZFdOMGIzSXVaR2x6Y0d4aGVVNWhiV1VnZkh3Z0p5Y3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZHaHBjeUJwY3lCMGFHVWdZV0p6ZEhKaFkzUWdRVkJKSUdadmNpQmhiaUIxY0dSaGRHVWdjWFZsZFdVdVhHNGdLaTljYm5aaGNpQlNaV0ZqZEU1dmIzQlZjR1JoZEdWUmRXVjFaU0E5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJobFkydHpJSGRvWlhSb1pYSWdiM0lnYm05MElIUm9hWE1nWTI5dGNHOXphWFJsSUdOdmJYQnZibVZ1ZENCcGN5QnRiM1Z1ZEdWa0xseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjNaU0IzWVc1MElIUnZJSFJsYzNRdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5SUZSeWRXVWdhV1lnYlc5MWJuUmxaQ3dnWm1Gc2MyVWdiM1JvWlhKM2FYTmxMbHh1SUNBZ0tpQkFjSEp2ZEdWamRHVmtYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaTljYmlBZ2FYTk5iM1Z1ZEdWa09pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVcElIdGNiaUFnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVWdWNYVmxkV1VnWVNCallXeHNZbUZqYXlCMGFHRjBJSGRwYkd3Z1ltVWdaWGhsWTNWMFpXUWdZV1owWlhJZ1lXeHNJSFJvWlNCd1pXNWthVzVuSUhWd1pHRjBaWE5jYmlBZ0lDb2dhR0YyWlNCd2NtOWpaWE56WldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklIVnpaU0JoY3lCZ2RHaHBjMkFnWTI5dWRHVjRkQzVjYmlBZ0lDb2dRSEJoY21GdElIcy9ablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJRU5oYkd4bFpDQmhablJsY2lCemRHRjBaU0JwY3lCMWNHUmhkR1ZrTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZEWVd4c1ltRmphem9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0JqWVd4c1ltRmpheWtnZTMwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVadmNtTmxjeUJoYmlCMWNHUmhkR1V1SUZSb2FYTWdjMmh2ZFd4a0lHOXViSGtnWW1VZ2FXNTJiMnRsWkNCM2FHVnVJR2wwSUdseklHdHViM2R1SUhkcGRHaGNiaUFnSUNvZ1kyVnlkR0ZwYm5SNUlIUm9ZWFFnZDJVZ1lYSmxJQ29xYm05MEtpb2dhVzRnWVNCRVQwMGdkSEpoYm5OaFkzUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlGbHZkU0J0WVhrZ2QyRnVkQ0IwYnlCallXeHNJSFJvYVhNZ2QyaGxiaUI1YjNVZ2EyNXZkeUIwYUdGMElITnZiV1VnWkdWbGNHVnlJR0Z6Y0dWamRDQnZaaUIwYUdWY2JpQWdJQ29nWTI5dGNHOXVaVzUwSjNNZ2MzUmhkR1VnYUdGeklHTm9ZVzVuWldRZ1luVjBJR0J6WlhSVGRHRjBaV0FnZDJGeklHNXZkQ0JqWVd4c1pXUXVYRzRnSUNBcVhHNGdJQ0FxSUZSb2FYTWdkMmxzYkNCdWIzUWdhVzUyYjJ0bElHQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1ZnTENCaWRYUWdhWFFnZDJsc2JDQnBiblp2YTJWY2JpQWdJQ29nWUdOdmJYQnZibVZ1ZEZkcGJHeFZjR1JoZEdWZ0lHRnVaQ0JnWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOc1lYTnpmU0J3ZFdKc2FXTkpibk4wWVc1alpTQlVhR1VnYVc1emRHRnVZMlVnZEdoaGRDQnphRzkxYkdRZ2NtVnlaVzVrWlhJdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pXNXhkV1YxWlVadmNtTmxWWEJrWVhSbE9pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVcElIdGNiaUFnSUNCM1lYSnVWRVJhS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0FuWm05eVkyVlZjR1JoZEdVbktUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1Wd2JHRmpaWE1nWVd4c0lHOW1JSFJvWlNCemRHRjBaUzRnUVd4M1lYbHpJSFZ6WlNCMGFHbHpJRzl5SUdCelpYUlRkR0YwWldBZ2RHOGdiWFYwWVhSbElITjBZWFJsTGx4dUlDQWdLaUJaYjNVZ2MyaHZkV3hrSUhSeVpXRjBJR0IwYUdsekxuTjBZWFJsWUNCaGN5QnBiVzExZEdGaWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUZSb1pYSmxJR2x6SUc1dklHZDFZWEpoYm5SbFpTQjBhR0YwSUdCMGFHbHpMbk4wWVhSbFlDQjNhV3hzSUdKbElHbHRiV1ZrYVdGMFpXeDVJSFZ3WkdGMFpXUXNJSE52WEc0Z0lDQXFJR0ZqWTJWemMybHVaeUJnZEdocGN5NXpkR0YwWldBZ1lXWjBaWElnWTJGc2JHbHVaeUIwYUdseklHMWxkR2h2WkNCdFlYa2djbVYwZFhKdUlIUm9aU0J2YkdRZ2RtRnNkV1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJvWVhRZ2MyaHZkV3hrSUhKbGNtVnVaR1Z5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdZMjl0Y0d4bGRHVlRkR0YwWlNCT1pYaDBJSE4wWVhSbExseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWU1pYQnNZV05sVTNSaGRHVTZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2dZMjl0Y0d4bGRHVlRkR0YwWlNrZ2UxeHVJQ0FnSUhkaGNtNVVSRm9vY0hWaWJHbGpTVzV6ZEdGdVkyVXNJQ2R5WlhCc1lXTmxVM1JoZEdVbktUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVTJWMGN5QmhJSE4xWW5ObGRDQnZaaUIwYUdVZ2MzUmhkR1V1SUZSb2FYTWdiMjVzZVNCbGVHbHpkSE1nWW1WallYVnpaU0JmY0dWdVpHbHVaMU4wWVhSbElHbHpYRzRnSUNBcUlHbHVkR1Z5Ym1Gc0xpQlVhR2x6SUhCeWIzWnBaR1Z6SUdFZ2JXVnlaMmx1WnlCemRISmhkR1ZuZVNCMGFHRjBJR2x6SUc1dmRDQmhkbUZwYkdGaWJHVWdkRzhnWkdWbGNGeHVJQ0FnS2lCd2NtOXdaWEowYVdWeklIZG9hV05vSUdseklHTnZibVoxYzJsdVp5NGdWRTlFVHpvZ1JYaHdiM05sSUhCbGJtUnBibWRUZEdGMFpTQnZjaUJrYjI0bmRDQjFjMlVnYVhSY2JpQWdJQ29nWkhWeWFXNW5JSFJvWlNCdFpYSm5aUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU5zWVhOemZTQndkV0pzYVdOSmJuTjBZVzVqWlNCVWFHVWdhVzV6ZEdGdVkyVWdkR2hoZENCemFHOTFiR1FnY21WeVpXNWtaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQndZWEowYVdGc1UzUmhkR1VnVG1WNGRDQndZWEowYVdGc0lITjBZWFJsSUhSdklHSmxJRzFsY21kbFpDQjNhWFJvSUhOMFlYUmxMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Z1Y1hWbGRXVlRaWFJUZEdGMFpUb2dablZ1WTNScGIyNGdLSEIxWW14cFkwbHVjM1JoYm1ObExDQndZWEowYVdGc1UzUmhkR1VwSUh0Y2JpQWdJQ0IzWVhKdVZFUmFLSEIxWW14cFkwbHVjM1JoYm1ObExDQW5jMlYwVTNSaGRHVW5LVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyVjBjeUJoSUhOMVluTmxkQ0J2WmlCMGFHVWdjSEp2Y0hNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSb1lYUWdjMmh2ZFd4a0lISmxjbVZ1WkdWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0dGeWRHbGhiRkJ5YjNCeklGTjFZbk5sZENCdlppQjBhR1VnYm1WNGRDQndjbTl3Y3k1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsVTJWMFVISnZjSE02SUdaMWJtTjBhVzl1SUNod2RXSnNhV05KYm5OMFlXNWpaU3dnY0dGeWRHbGhiRkJ5YjNCektTQjdYRzRnSUNBZ2QyRnlibFJFV2lod2RXSnNhV05KYm5OMFlXNWpaU3dnSjNObGRGQnliM0J6SnlrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsY0d4aFkyVnpJR0ZzYkNCdlppQjBhR1VnY0hKdmNITXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NISnZjSE1nVG1WM0lIQnliM0J6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZTWlhCc1lXTmxVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z2NISnZjSE1wSUh0Y2JpQWdJQ0IzWVhKdVZFUmFLSEIxWW14cFkwbHVjM1JoYm1ObExDQW5jbVZ3YkdGalpWQnliM0J6SnlrN1hHNGdJSDFjYmx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFNXZiM0JWY0dSaGRHVlJkV1YxWlRzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0T3duZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBSZWFjdE93bmVycyBhcmUgY2FwYWJsZSBvZiBzdG9yaW5nIHJlZmVyZW5jZXMgdG8gb3duZWQgY29tcG9uZW50cy5cbiAqXG4gKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL2JlaW5nLy8gcmVmZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXRcbiAqIG9ubHkgUmVhY3RPd25lciBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vcmVmZXJlbmNpbmcvLyBvd25lZCBjb21wb25lbnRzLlxuICogVGhlIG5hbWVkIHJlZmVyZW5jZSBpcyBrbm93biBhcyBhIFwicmVmXCIuXG4gKlxuICogUmVmcyBhcmUgYXZhaWxhYmxlIHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25jaWxpYXRpb24uXG4gKlxuICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHJldHVybiAoXG4gKiAgICAgICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVDbGlja30+XG4gKiAgICAgICAgICAgPEN1c3RvbUNvbXBvbmVudCByZWY9XCJjdXN0b21cIiAvPlxuICogICAgICAgICA8L2Rpdj5cbiAqICAgICAgICk7XG4gKiAgICAgfSxcbiAqICAgICBoYW5kbGVDbGljazogZnVuY3Rpb24oKSB7XG4gKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7XG4gKiAgICAgfSxcbiAqICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUoKTtcbiAqICAgICB9XG4gKiAgIH0pO1xuICpcbiAqIFJlZnMgc2hvdWxkIHJhcmVseSBiZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRoZXkgc2hvdWxkIG9ubHkgYmUgZG9uZSB0b1xuICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhhbmRsZWQgYnkgUmVhY3QncyBkYXRhIGZsb3cuXG4gKlxuICogQGNsYXNzIFJlYWN0T3duZXJcbiAqL1xudmFyIFJlYWN0T3duZXIgPSB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25lci5cbiAgICogQGZpbmFsXG4gICAqL1xuICBpc1ZhbGlkT3duZXI6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICByZXR1cm4gISEob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QuYXR0YWNoUmVmID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmplY3QuZGV0YWNoUmVmID09PSAnZnVuY3Rpb24nKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkcyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRvIHJlZmVyIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNoIHRvIHJlY29yZCB0aGUgcmVmLlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBhZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIVJlYWN0T3duZXIuaXNWYWxpZE93bmVyKG93bmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRBc1JlZlRvKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCAnICsgJ2JlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzICcgKyAnYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgbG9hZGVkICcgKyAnKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBvd25lci5hdHRhY2hSZWYocmVmLCBjb21wb25lbnQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byBkZXJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIG9mIHRoZSByZWYgdG8gcmVtb3ZlLlxuICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGljaCB0aGUgcmVmIGlzIHJlY29yZGVkLlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZW1vdmVDb21wb25lbnRBc1JlZkZyb206IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHtcbiAgICAhUmVhY3RPd25lci5pc1ZhbGlkT3duZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgJyArICdiZSByZW1vdmluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzICcgKyAnYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgbG9hZGVkICcgKyAnKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAvLyBDaGVjayB0aGF0IGBjb21wb25lbnRgIGlzIHN0aWxsIHRoZSBjdXJyZW50IHJlZiBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvXG4gICAgLy8gZGV0YWNoIHRoZSByZWYgaWYgYW5vdGhlciBjb21wb25lbnQgc3RvbGUgaXQuXG4gICAgaWYgKG93bmVyLmdldFB1YmxpY0luc3RhbmNlKCkucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkge1xuICAgICAgb3duZXIuZGV0YWNoUmVmKHJlZik7XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RPd25lcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEU5M2JtVnlMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVDNkdVpYSmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNibHh1THlvcVhHNGdLaUJTWldGamRFOTNibVZ5Y3lCaGNtVWdZMkZ3WVdKc1pTQnZaaUJ6ZEc5eWFXNW5JSEpsWm1WeVpXNWpaWE1nZEc4Z2IzZHVaV1FnWTI5dGNHOXVaVzUwY3k1Y2JpQXFYRzRnS2lCQmJHd2dZMjl0Y0c5dVpXNTBjeUJoY21VZ1kyRndZV0pzWlNCdlppQXZMMkpsYVc1bkx5OGdjbVZtWlhKbGJtTmxaQ0JpZVNCdmQyNWxjaUJqYjIxd2IyNWxiblJ6TENCaWRYUmNiaUFxSUc5dWJIa2dVbVZoWTNSUGQyNWxjaUJqYjIxd2IyNWxiblJ6SUdGeVpTQmpZWEJoWW14bElHOW1JQzh2Y21WbVpYSmxibU5wYm1jdkx5QnZkMjVsWkNCamIyMXdiMjVsYm5SekxseHVJQ29nVkdobElHNWhiV1ZrSUhKbFptVnlaVzVqWlNCcGN5QnJibTkzYmlCaGN5QmhJRndpY21WbVhDSXVYRzRnS2x4dUlDb2dVbVZtY3lCaGNtVWdZWFpoYVd4aFlteGxJSGRvWlc0Z2JXOTFiblJsWkNCaGJtUWdkWEJrWVhSbFpDQmtkWEpwYm1jZ2NtVmpiMjVqYVd4cFlYUnBiMjR1WEc0Z0tseHVJQ29nSUNCMllYSWdUWGxEYjIxd2IyNWxiblFnUFNCU1pXRmpkQzVqY21WaGRHVkRiR0Z6Y3loN1hHNGdLaUFnSUNBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlncElIdGNiaUFxSUNBZ0lDQWdJSEpsZEhWeWJpQW9YRzRnS2lBZ0lDQWdJQ0FnSUR4a2FYWWdiMjVEYkdsamF6MTdkR2hwY3k1b1lXNWtiR1ZEYkdsamEzMCtYRzRnS2lBZ0lDQWdJQ0FnSUNBZ1BFTjFjM1J2YlVOdmJYQnZibVZ1ZENCeVpXWTlYQ0pqZFhOMGIyMWNJaUF2UGx4dUlDb2dJQ0FnSUNBZ0lDQThMMlJwZGo1Y2JpQXFJQ0FnSUNBZ0lDazdYRzRnS2lBZ0lDQWdmU3hjYmlBcUlDQWdJQ0JvWVc1a2JHVkRiR2xqYXpvZ1puVnVZM1JwYjI0b0tTQjdYRzRnS2lBZ0lDQWdJQ0IwYUdsekxuSmxabk11WTNWemRHOXRMbWhoYm1Sc1pVTnNhV05yS0NrN1hHNGdLaUFnSUNBZ2ZTeGNiaUFxSUNBZ0lDQmpiMjF3YjI1bGJuUkVhV1JOYjNWdWREb2dablZ1WTNScGIyNG9LU0I3WEc0Z0tpQWdJQ0FnSUNCMGFHbHpMbkpsWm5NdVkzVnpkRzl0TG1sdWFYUnBZV3hwZW1Vb0tUdGNiaUFxSUNBZ0lDQjlYRzRnS2lBZ0lIMHBPMXh1SUNwY2JpQXFJRkpsWm5NZ2MyaHZkV3hrSUhKaGNtVnNlU0JpWlNCMWMyVmtMaUJYYUdWdUlISmxabk1nWVhKbElIVnpaV1FzSUhSb1pYa2djMmh2ZFd4a0lHOXViSGtnWW1VZ1pHOXVaU0IwYjF4dUlDb2dZMjl1ZEhKdmJDQmtZWFJoSUhSb1lYUWdhWE1nYm05MElHaGhibVJzWldRZ1lua2dVbVZoWTNRbmN5QmtZWFJoSUdac2IzY3VYRzRnS2x4dUlDb2dRR05zWVhOeklGSmxZV04wVDNkdVpYSmNiaUFxTDF4dWRtRnlJRkpsWVdOMFQzZHVaWElnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYjJKcVpXTjBYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ1lHOWlhbVZqZEdBZ2FYTWdZU0IyWVd4cFpDQnZkMjVsY2k1Y2JpQWdJQ29nUUdacGJtRnNYRzRnSUNBcUwxeHVJQ0JwYzFaaGJHbGtUM2R1WlhJNklHWjFibU4wYVc5dUlDaHZZbXBsWTNRcElIdGNiaUFnSUNCeVpYUjFjbTRnSVNFb2IySnFaV04wSUNZbUlIUjVjR1Z2WmlCdlltcGxZM1F1WVhSMFlXTm9VbVZtSUQwOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUhSNWNHVnZaaUJ2WW1wbFkzUXVaR1YwWVdOb1VtVm1JRDA5UFNBblpuVnVZM1JwYjI0bktUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVdSa2N5QmhJR052YlhCdmJtVnVkQ0JpZVNCeVpXWWdkRzhnWVc0Z2IzZHVaWElnWTI5dGNHOXVaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCamIyMXdiMjVsYm5RZ1EyOXRjRzl1Wlc1MElIUnZJSEpsWm1WeVpXNWpaUzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISmxaaUJPWVcxbElHSjVJSGRvYVdOb0lIUnZJSEpsWm1WeUlIUnZJSFJvWlNCamIyMXdiMjVsYm5RdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlBkMjVsY24wZ2IzZHVaWElnUTI5dGNHOXVaVzUwSUc5dUlIZG9hV05vSUhSdklISmxZMjl5WkNCMGFHVWdjbVZtTGx4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmhaR1JEYjIxd2IyNWxiblJCYzFKbFpsUnZPaUJtZFc1amRHbHZiaUFvWTI5dGNHOXVaVzUwTENCeVpXWXNJRzkzYm1WeUtTQjdYRzRnSUNBZ0lWSmxZV04wVDNkdVpYSXVhWE5XWVd4cFpFOTNibVZ5S0c5M2JtVnlLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZGhaR1JEYjIxd2IyNWxiblJCYzFKbFpsUnZLQzR1TGlrNklFOXViSGtnWVNCU1pXRmpkRTkzYm1WeUlHTmhiaUJvWVhabElISmxabk11SUZsdmRTQnRhV2RvZENBbklDc2dKMkpsSUdGa1pHbHVaeUJoSUhKbFppQjBieUJoSUdOdmJYQnZibVZ1ZENCMGFHRjBJSGRoY3lCdWIzUWdZM0psWVhSbFpDQnBibk5wWkdVZ1lTQmpiMjF3YjI1bGJuUmNYQ2R6SUNjZ0t5QW5ZSEpsYm1SbGNtQWdiV1YwYUc5a0xDQnZjaUI1YjNVZ2FHRjJaU0J0ZFd4MGFYQnNaU0JqYjNCcFpYTWdiMllnVW1WaFkzUWdiRzloWkdWa0lDY2dLeUFuS0dSbGRHRnBiSE02SUdoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGNtVm1jeTF0ZFhOMExXaGhkbVV0YjNkdVpYSXBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCdmQyNWxjaTVoZEhSaFkyaFNaV1lvY21WbUxDQmpiMjF3YjI1bGJuUXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pXMXZkbVZ6SUdFZ1kyOXRjRzl1Wlc1MElHSjVJSEpsWmlCbWNtOXRJR0Z1SUc5M2JtVnlJR052YlhCdmJtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTI5dGNHOXVaVzUwSUVOdmJYQnZibVZ1ZENCMGJ5QmtaWEpsWm1WeVpXNWpaUzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISmxaaUJPWVcxbElHOW1JSFJvWlNCeVpXWWdkRzhnY21WdGIzWmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVDNkdVpYSjlJRzkzYm1WeUlFTnZiWEJ2Ym1WdWRDQnZiaUIzYUdsamFDQjBhR1VnY21WbUlHbHpJSEpsWTI5eVpHVmtMbHh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCeVpXMXZkbVZEYjIxd2IyNWxiblJCYzFKbFprWnliMjA2SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5Rc0lISmxaaXdnYjNkdVpYSXBJSHRjYmlBZ0lDQWhVbVZoWTNSUGQyNWxjaTVwYzFaaGJHbGtUM2R1WlhJb2IzZHVaWElwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKM0psYlc5MlpVTnZiWEJ2Ym1WdWRFRnpVbVZtUm5KdmJTZ3VMaTRwT2lCUGJteDVJR0VnVW1WaFkzUlBkMjVsY2lCallXNGdhR0YyWlNCeVpXWnpMaUJaYjNVZ2JXbG5hSFFnSnlBcklDZGlaU0J5WlcxdmRtbHVaeUJoSUhKbFppQjBieUJoSUdOdmJYQnZibVZ1ZENCMGFHRjBJSGRoY3lCdWIzUWdZM0psWVhSbFpDQnBibk5wWkdVZ1lTQmpiMjF3YjI1bGJuUmNYQ2R6SUNjZ0t5QW5ZSEpsYm1SbGNtQWdiV1YwYUc5a0xDQnZjaUI1YjNVZ2FHRjJaU0J0ZFd4MGFYQnNaU0JqYjNCcFpYTWdiMllnVW1WaFkzUWdiRzloWkdWa0lDY2dLeUFuS0dSbGRHRnBiSE02SUdoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGNtVm1jeTF0ZFhOMExXaGhkbVV0YjNkdVpYSXBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBdkx5QkRhR1ZqYXlCMGFHRjBJR0JqYjIxd2IyNWxiblJnSUdseklITjBhV3hzSUhSb1pTQmpkWEp5Wlc1MElISmxaaUJpWldOaGRYTmxJSGRsSUdSdklHNXZkQ0IzWVc1MElIUnZYRzRnSUNBZ0x5OGdaR1YwWVdOb0lIUm9aU0J5WldZZ2FXWWdZVzV2ZEdobGNpQmpiMjF3YjI1bGJuUWdjM1J2YkdVZ2FYUXVYRzRnSUNBZ2FXWWdLRzkzYm1WeUxtZGxkRkIxWW14cFkwbHVjM1JoYm1ObEtDa3VjbVZtYzF0eVpXWmRJRDA5UFNCamIyMXdiMjVsYm5RdVoyVjBVSFZpYkdsalNXNXpkR0Z1WTJVb0tTa2dlMXh1SUNBZ0lDQWdiM2R1WlhJdVpHVjBZV05vVW1WbUtISmxaaWs3WEc0Z0lDQWdmVnh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JQZDI1bGNqc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFBlcmZcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFJlYWN0UGVyZiBpcyBhIGdlbmVyYWwgQU9QIHN5c3RlbSBkZXNpZ25lZCB0byBtZWFzdXJlIHBlcmZvcm1hbmNlLiBUaGlzXG4gKiBtb2R1bGUgb25seSBoYXMgdGhlIGhvb2tzOiBzZWUgUmVhY3REZWZhdWx0UGVyZiBmb3IgdGhlIGFuYWx5c2lzIHRvb2wuXG4gKi9cbnZhciBSZWFjdFBlcmYgPSB7XG4gIC8qKlxuICAgKiBCb29sZWFuIHRvIGVuYWJsZS9kaXNhYmxlIG1lYXN1cmVtZW50LiBTZXQgdG8gZmFsc2UgYnkgZGVmYXVsdCB0byBwcmV2ZW50XG4gICAqIGFjY2lkZW50YWwgbG9nZ2luZyBhbmQgcGVyZiBsb3NzLlxuICAgKi9cbiAgZW5hYmxlTWVhc3VyZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEhvbGRzIG9udG8gdGhlIG1lYXN1cmUgZnVuY3Rpb24gaW4gdXNlLiBCeSBkZWZhdWx0LCBkb24ndCBtZWFzdXJlXG4gICAqIGFueXRoaW5nLCBidXQgd2UnbGwgb3ZlcnJpZGUgdGhpcyBpZiB3ZSBpbmplY3QgYSBtZWFzdXJlIGZ1bmN0aW9uLlxuICAgKi9cbiAgc3RvcmVkTWVhc3VyZTogX25vTWVhc3VyZSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0TmFtZVxuICAgKiBAcGFyYW0ge29iamVjdDxzdHJpbmc+fSBtZXRob2ROYW1lc1xuICAgKi9cbiAgbWVhc3VyZU1ldGhvZHM6IGZ1bmN0aW9uIChvYmplY3QsIG9iamVjdE5hbWUsIG1ldGhvZE5hbWVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGZvciAodmFyIGtleSBpbiBtZXRob2ROYW1lcykge1xuICAgICAgICBpZiAoIW1ldGhvZE5hbWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3Rba2V5XSA9IFJlYWN0UGVyZi5tZWFzdXJlKG9iamVjdE5hbWUsIG1ldGhvZE5hbWVzW2tleV0sIG9iamVjdFtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHdyYXAgbWV0aG9kcyB5b3Ugd2FudCB0byBtZWFzdXJlLiBaZXJvIG92ZXJoZWFkIGluIHByb2R1Y3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvYmpOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbk5hbWVcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY1xuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAgICovXG4gIG1lYXN1cmU6IGZ1bmN0aW9uIChvYmpOYW1lLCBmbk5hbWUsIGZ1bmMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG1lYXN1cmVkRnVuYyA9IG51bGw7XG4gICAgICB2YXIgd3JhcHBlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKFJlYWN0UGVyZi5lbmFibGVNZWFzdXJlKSB7XG4gICAgICAgICAgaWYgKCFtZWFzdXJlZEZ1bmMpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkRnVuYyA9IFJlYWN0UGVyZi5zdG9yZWRNZWFzdXJlKG9iak5hbWUsIGZuTmFtZSwgZnVuYyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtZWFzdXJlZEZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIHdyYXBwZXIuZGlzcGxheU5hbWUgPSBvYmpOYW1lICsgJ18nICsgZm5OYW1lO1xuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuICAgIHJldHVybiBmdW5jO1xuICB9LFxuXG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1lYXN1cmVcbiAgICAgKi9cbiAgICBpbmplY3RNZWFzdXJlOiBmdW5jdGlvbiAobWVhc3VyZSkge1xuICAgICAgUmVhY3RQZXJmLnN0b3JlZE1lYXN1cmUgPSBtZWFzdXJlO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBTaW1wbHkgcGFzc2VzIHRocm91Z2ggdGhlIG1lYXN1cmVkIGZ1bmN0aW9uLCB3aXRob3V0IG1lYXN1cmluZyBpdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gb2JqTmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGZuTmFtZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIF9ub01lYXN1cmUob2JqTmFtZSwgZm5OYW1lLCBmdW5jKSB7XG4gIHJldHVybiBmdW5jO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UGVyZjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEZCbGNtWXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBVR1Z5Wmx4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYmk4cUtseHVJQ29nVW1WaFkzUlFaWEptSUdseklHRWdaMlZ1WlhKaGJDQkJUMUFnYzNsemRHVnRJR1JsYzJsbmJtVmtJSFJ2SUcxbFlYTjFjbVVnY0dWeVptOXliV0Z1WTJVdUlGUm9hWE5jYmlBcUlHMXZaSFZzWlNCdmJteDVJR2hoY3lCMGFHVWdhRzl2YTNNNklITmxaU0JTWldGamRFUmxabUYxYkhSUVpYSm1JR1p2Y2lCMGFHVWdZVzVoYkhsemFYTWdkRzl2YkM1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wVUdWeVppQTlJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFSnZiMnhsWVc0Z2RHOGdaVzVoWW14bEwyUnBjMkZpYkdVZ2JXVmhjM1Z5WlcxbGJuUXVJRk5sZENCMGJ5Qm1ZV3h6WlNCaWVTQmtaV1poZFd4MElIUnZJSEJ5WlhabGJuUmNiaUFnSUNvZ1lXTmphV1JsYm5SaGJDQnNiMmRuYVc1bklHRnVaQ0J3WlhKbUlHeHZjM011WEc0Z0lDQXFMMXh1SUNCbGJtRmliR1ZOWldGemRYSmxPaUJtWVd4elpTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1NHOXNaSE1nYjI1MGJ5QjBhR1VnYldWaGMzVnlaU0JtZFc1amRHbHZiaUJwYmlCMWMyVXVJRUo1SUdSbFptRjFiSFFzSUdSdmJpZDBJRzFsWVhOMWNtVmNiaUFnSUNvZ1lXNTVkR2hwYm1jc0lHSjFkQ0IzWlNkc2JDQnZkbVZ5Y21sa1pTQjBhR2x6SUdsbUlIZGxJR2x1YW1WamRDQmhJRzFsWVhOMWNtVWdablZ1WTNScGIyNHVYRzRnSUNBcUwxeHVJQ0J6ZEc5eVpXUk5aV0Z6ZFhKbE9pQmZibTlOWldGemRYSmxMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2IySnFaV04wWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZZbXBsWTNST1lXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wUEhOMGNtbHVaejU5SUcxbGRHaHZaRTVoYldWelhHNGdJQ0FxTDF4dUlDQnRaV0Z6ZFhKbFRXVjBhRzlrY3pvZ1puVnVZM1JwYjI0Z0tHOWlhbVZqZEN3Z2IySnFaV04wVG1GdFpTd2diV1YwYUc5a1RtRnRaWE1wSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdabTl5SUNoMllYSWdhMlY1SUdsdUlHMWxkR2h2WkU1aGJXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hiV1YwYUc5a1RtRnRaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29hMlY1S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUc5aWFtVmpkRnRyWlhsZElEMGdVbVZoWTNSUVpYSm1MbTFsWVhOMWNtVW9iMkpxWldOMFRtRnRaU3dnYldWMGFHOWtUbUZ0WlhOYmEyVjVYU3dnYjJKcVpXTjBXMnRsZVYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWE5sSUhSb2FYTWdkRzhnZDNKaGNDQnRaWFJvYjJSeklIbHZkU0IzWVc1MElIUnZJRzFsWVhOMWNtVXVJRnBsY204Z2IzWmxjbWhsWVdRZ2FXNGdjSEp2WkhWamRHbHZiaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc5aWFrNWhiV1ZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHWnVUbUZ0WlZ4dUlDQWdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0JtZFc1alhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJaMWJtTjBhVzl1ZlZ4dUlDQWdLaTljYmlBZ2JXVmhjM1Z5WlRvZ1puVnVZM1JwYjI0Z0tHOWlhazVoYldVc0lHWnVUbUZ0WlN3Z1puVnVZeWtnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQjJZWElnYldWaGMzVnlaV1JHZFc1aklEMGdiblZzYkR0Y2JpQWdJQ0FnSUhaaGNpQjNjbUZ3Y0dWeUlEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9VbVZoWTNSUVpYSm1MbVZ1WVdKc1pVMWxZWE4xY21VcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lXMWxZWE4xY21Wa1JuVnVZeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiV1ZoYzNWeVpXUkdkVzVqSUQwZ1VtVmhZM1JRWlhKbUxuTjBiM0psWkUxbFlYTjFjbVVvYjJKcVRtRnRaU3dnWm01T1lXMWxMQ0JtZFc1aktUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxbFlYTjFjbVZrUm5WdVl5NWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWRXNWpMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ2QzSmhjSEJsY2k1a2FYTndiR0Y1VG1GdFpTQTlJRzlpYWs1aGJXVWdLeUFuWHljZ0t5Qm1iazVoYldVN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZDNKaGNIQmxjanRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTTdYRzRnSUgwc1hHNWNiaUFnYVc1cVpXTjBhVzl1T2lCN1hHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ2JXVmhjM1Z5WlZ4dUlDQWdJQ0FxTDF4dUlDQWdJR2x1YW1WamRFMWxZWE4xY21VNklHWjFibU4wYVc5dUlDaHRaV0Z6ZFhKbEtTQjdYRzRnSUNBZ0lDQlNaV0ZqZEZCbGNtWXVjM1J2Y21Wa1RXVmhjM1Z5WlNBOUlHMWxZWE4xY21VN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNHZLaXBjYmlBcUlGTnBiWEJzZVNCd1lYTnpaWE1nZEdoeWIzVm5hQ0IwYUdVZ2JXVmhjM1Z5WldRZ1puVnVZM1JwYjI0c0lIZHBkR2h2ZFhRZ2JXVmhjM1Z5YVc1bklHbDBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZZbXBPWVcxbFhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdabTVPWVcxbFhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0JtZFc1alhHNGdLaUJBY21WMGRYSnVJSHRtZFc1amRHbHZibjFjYmlBcUwxeHVablZ1WTNScGIyNGdYMjV2VFdWaGMzVnlaU2h2WW1wT1lXMWxMQ0JtYms1aGJXVXNJR1oxYm1NcElIdGNiaUFnY21WMGRYSnVJR1oxYm1NN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUlFaWEptT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XG4gICAgcHJvcDogJ3Byb3AnLFxuICAgIGNvbnRleHQ6ICdjb250ZXh0JyxcbiAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjeUE5SUh0OU8xeHVYRzVwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3lBOUlIdGNiaUFnSUNCd2NtOXdPaUFuY0hKdmNDY3NYRzRnSUNBZ1kyOXVkR1Y0ZERvZ0oyTnZiblJsZUhRbkxGeHVJQ0FnSUdOb2FXeGtRMjl1ZEdWNGREb2dKMk5vYVd4a0lHTnZiblJsZUhRblhHNGdJSDA3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBrZXlNaXJyb3IgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlNaXJyb3InKTtcblxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSBrZXlNaXJyb3Ioe1xuICBwcm9wOiBudWxsLFxuICBjb250ZXh0OiBudWxsLFxuICBjaGlsZENvbnRleHQ6IG51bGxcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbnM7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0UHJvcFR5cGVzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMnKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG4gKiBzdXBwbGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOlxuICpcbiAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcbiAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgICBwcm9wVHlwZXM6IHtcbiAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cbiAqICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5zdHJpbmcsXG4gKlxuICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuICogICAgICAgY2F0ZWdvcnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLFxuICpcbiAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZFxuICogICAgIH0sXG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cbiAqICAgfSk7XG4gKlxuICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOlxuICpcbiAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG4gKlxuICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuICpcbiAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICogICAgcHJvcFR5cGVzOiB7XG4gKiAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCBcImhyZWZcIi5cbiAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuICogICAgICAgICAgICAnRXhwZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAnICsgcHJvcE5hbWUgKyAnIGluICcgK1xuICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gKiAgICAgICAgICApO1xuICogICAgICAgIH1cbiAqICAgICAgfVxuICogICAgfSxcbiAqICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Li4ufVxuICogIH0pO1xuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbnZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7XG5cbnZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgYXJyYXk6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdhcnJheScpLFxuICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICBmdW5jOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignZnVuY3Rpb24nKSxcbiAgbnVtYmVyOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignbnVtYmVyJyksXG4gIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICBzdHJpbmc6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzdHJpbmcnKSxcblxuICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG4gIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksXG4gIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksXG4gIG9iamVjdE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLFxuICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIsXG4gIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTO1xuICAgIHByb3BGdWxsTmFtZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKCdSZXF1aXJlZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHdhcyBub3Qgc3BlY2lmaWVkIGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKTtcbiAgICB9XG4gIH1cblxuICB2YXIgY2hhaW5lZENoZWNrVHlwZSA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIGZhbHNlKTtcbiAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgaWYgKHByb3BUeXBlICE9PSBleHBlY3RlZFR5cGUpIHtcbiAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgIC8vIGNoZWNrLCBidXQgd2UgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UgaGVyZSByYXRoZXIgdGhhblxuICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyhudWxsKSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJ1snICsgaSArICddJyk7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHtcbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgaWYgKCFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3RlZENsYXNzKSB7XG4gIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIGlmICghKHByb3BzW3Byb3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG4gICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dO1xuICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVmFsdWVzKSkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gZXhwZWN0ZWRWYWx1ZXNbaV0pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICB2YXIgdmFsdWVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1ZXMpO1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB2YWx1ZSBgJyArIHByb3BWYWx1ZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBvbmUgb2YgJyArIHZhbHVlc1N0cmluZyArICcuJykpO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIG9iamVjdC4nKSk7XG4gICAgfVxuICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgIGlmIChwcm9wVmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSk7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHtcbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG4gICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dO1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBlcykge1xuICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgIH1cbiAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICBpZiAoIWNoZWNrZXIpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5KTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUpIHtcbiAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7XG4gICAgICAgIHZhciBzdGVwO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMpIHtcbiAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gRXF1aXZhbGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLlxuZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICByZXR1cm4gJ2FycmF5JztcbiAgfVxuICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xuICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2JqZWN0LlxuICAgIHJldHVybiAnb2JqZWN0JztcbiAgfVxuICByZXR1cm4gcHJvcFR5cGU7XG59XG5cbi8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbi8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLlxuZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7XG4gIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlJztcbiAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcHJvcFR5cGU7XG59XG5cbi8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG5mdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkge1xuICAgIHJldHVybiAnPDxhbm9ueW1vdXM+Pic7XG4gIH1cbiAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gcmVxdWlyZSgnLi9SZWFjdERPTUZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5wdXRTZWxlY3Rpb24nKTtcbnZhciBUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAoY3VycmVudGx5IHNlbGVjdGVkIHRleHRcbiAqIGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9OID0ge1xuICAvKipcbiAgICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICBpbml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLFxuICAvKipcbiAgICogQHBhcmFtIHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6ZWAuXG4gICAqL1xuICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uXG59O1xuXG4vKipcbiAqIFN1cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUgdG9cbiAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxpa2UgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlXG4gKiBET00pLlxuICovXG52YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlXG4gICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cbiAgICovXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChmYWxzZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJsZWQgRW5hYmxlZCBzdGF0dXMgb2ZcbiAgICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xvc2VgXG4gICAqICAgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHZhbHVlLlxuICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZpb3VzbHlFbmFibGVkKTtcbiAgfVxufTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kXG4gKiBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgZHVyaW5nIHRoZSB0aGUgdHJhbnNhY3Rpb24uXG4gKi9cbnZhciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLlxuICAgKi9cbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2UgYWxsIHJlZ2lzdGVyZWQgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcy5cbiAgICovXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7XG4gIH1cbn07XG5cbi8qKlxuICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcbiAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb21cbiAqIGVhY2ggb3RoZXIuXG4gKi9cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05fUkVTVE9SQVRJT04sIEVWRU5UX1NVUFBSRVNTSU9OLCBPTl9ET01fUkVBRFlfUVVFVUVJTkddO1xuXG4vKipcbiAqIEN1cnJlbnRseTpcbiAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6XG4gKiAtIFN1cHByZXNzZXMgZXZlbnRzLlxuICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuXG4gKlxuICogRnV0dXJlOlxuICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseVxuICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS5cbiAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwXG4gKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuICpcbiAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uXG4gKi9cbmZ1bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oZm9yY2VIVE1MKSB7XG4gIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbiAgLy8gT25seSBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgcmVhbGx5IG5lZWRzIHRoaXMgb3B0aW9uIChzZWVcbiAgLy8gYFJlYWN0U2VydmVyUmVuZGVyaW5nYCksIGJ1dCBzZXJ2ZXItc2lkZSB1c2VzXG4gIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uYCBpbnN0ZWFkLiBUaGlzIG9wdGlvbiBpcyBoZXJlIHNvIHRoYXQgaXQnc1xuICAvLyBhY2Nlc3NpYmxlIGFuZCBkZWZhdWx0cyB0byBmYWxzZSB3aGVuIGBSZWFjdERPTUNvbXBvbmVudGAgYW5kXG4gIC8vIGBSZWFjdFRleHRDb21wb25lbnRgIGNoZWNrcyBpdCBpbiBgbW91bnRDb21wb25lbnRgLmBcbiAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IGZhbHNlO1xuICB0aGlzLnJlYWN0TW91bnRSZWFkeSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKG51bGwpO1xuICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSAhZm9yY2VIVE1MICYmIFJlYWN0RE9NRmVhdHVyZUZsYWdzLnVzZUNyZWF0ZUVsZW1lbnQ7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25cbiAgICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheTxvYmplY3Q+fSBMaXN0IG9mIG9wZXJhdGlvbiB3cmFwIHByb2NlZHVyZXMuXG4gICAqICAgVE9ETzogY29udmVydCB0byBhcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+XG4gICAqL1xuICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFja3Mgd2l0aC5cbiAgICovXG4gIGdldFJlYWN0TW91bnRSZWFkeTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnJlYWN0TW91bnRSZWFkeTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBudWxsO1xuICB9XG59O1xuXG5hc3NpZ24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLk1peGluLCBNaXhpbik7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFJlY29uY2lsZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJlZiA9IHJlcXVpcmUoJy4vUmVhY3RSZWYnKTtcblxuLyoqXG4gKiBIZWxwZXIgdG8gY2FsbCBSZWFjdFJlZi5hdHRhY2hSZWZzIHdpdGggdGhpcyBjb21wb3NpdGUgY29tcG9uZW50LCBzcGxpdCBvdXRcbiAqIHRvIGF2b2lkIGFsbG9jYXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiBtb3VudC1yZWFkeSBxdWV1ZS5cbiAqL1xuZnVuY3Rpb24gYXR0YWNoUmVmcygpIHtcbiAgUmVhY3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJyZW50RWxlbWVudCk7XG59XG5cbnZhciBSZWFjdFJlY29uY2lsZXIgPSB7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIERPTSBJRCBvZiB0aGUgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCByb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIG1hcmt1cCA9IGludGVybmFsSW5zdGFuY2UubW91bnRDb21wb25lbnQocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuICAgIH1cbiAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLlxuICAgKlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpO1xuICAgIGludGVybmFsSW5zdGFuY2UudW5tb3VudENvbXBvbmVudCgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBjb21wb25lbnQgdXNpbmcgYSBuZXcgZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcblxuICAgIGlmIChuZXh0RWxlbWVudCA9PT0gcHJldkVsZW1lbnQgJiYgY29udGV4dCA9PT0gaW50ZXJuYWxJbnN0YW5jZS5fY29udGV4dCkge1xuICAgICAgLy8gU2luY2UgZWxlbWVudHMgYXJlIGltbXV0YWJsZSBhZnRlciB0aGUgb3duZXIgaXMgcmVuZGVyZWQsXG4gICAgICAvLyB3ZSBjYW4gZG8gYSBjaGVhcCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYVxuICAgICAgLy8gc3VwZXJmbHVvdXMgcmVjb25jaWxlLiBJdCdzIHBvc3NpYmxlIGZvciBzdGF0ZSB0byBiZSBtdXRhYmxlIGJ1dCBzdWNoXG4gICAgICAvLyBjaGFuZ2Ugc2hvdWxkIHRyaWdnZXIgYW4gdXBkYXRlIG9mIHRoZSBvd25lciB3aGljaCB3b3VsZCByZWNyZWF0ZVxuICAgICAgLy8gdGhlIGVsZW1lbnQuIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gb3duZXIgc2luY2VcbiAgICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIGFuIGVsZW1lbnQgY3JlYXRlZCBvdXRzaWRlIGEgY29tcG9zaXRlIHRvIGJlXG4gICAgICAvLyBkZWVwbHkgbXV0YXRlZCBhbmQgcmV1c2VkLlxuXG4gICAgICAvLyBUT0RPOiBCYWlsaW5nIG91dCBlYXJseSBpcyBqdXN0IGEgcGVyZiBvcHRpbWl6YXRpb24gcmlnaHQ/XG4gICAgICAvLyBUT0RPOiBSZW1vdmluZyB0aGUgcmV0dXJuIHN0YXRlbWVudCBzaG91bGQgYWZmZWN0IGNvcnJlY3RuZXNzP1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByZWZzQ2hhbmdlZCA9IFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KTtcblxuICAgIGlmIChyZWZzQ2hhbmdlZCkge1xuICAgICAgUmVhY3RSZWYuZGV0YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNlLCBwcmV2RWxlbWVudCk7XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50KG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cbiAgICBpZiAocmVmc0NoYW5nZWQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9IG51bGwpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBGbHVzaCBhbnkgZGlydHkgY2hhbmdlcyBpbiBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgdHJhbnNhY3Rpb24pIHtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0cmFuc2FjdGlvbik7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlY29uY2lsZXI7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0UmVmXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RPd25lcicpO1xuXG52YXIgUmVhY3RSZWYgPSB7fTtcblxuZnVuY3Rpb24gYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTGVnYWN5IHJlZlxuICAgIFJlYWN0T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyhjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRldGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYobnVsbCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTGVnYWN5IHJlZlxuICAgIFJlYWN0T3duZXIucmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG4gIH1cbn1cblxuUmVhY3RSZWYuYXR0YWNoUmVmcyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkge1xuICBpZiAoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSBmYWxzZSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYgIT0gbnVsbCkge1xuICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG4gIH1cbn07XG5cblJlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG4gIC8vIElmIGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRoZSBuZXdlc3Qgb3duZXJcbiAgLy8gaGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudClcbiAgLy8gaGFzIGZvcmdvdHRlbiB0aGUgcmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBlbGVtZW50IGluc3RlYWRcbiAgLy8gb2YgdGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhlIHBvc3QgcHJvY2Vzc2luZyBjYW5ub3QgZGV0ZXJtaW5lXG4gIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBvbiB0aGUgZWxlbWVudC5cblxuICAvLyBUT0RPOiBTaG91bGQgdGhpcyBldmVuIGJlIHBvc3NpYmxlPyBUaGUgb3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNlXG4gIC8vIGl0J3MgZm9yYmlkZGVuIGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2VcbiAgLy8gaWYgeW91IHN3YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4gUmVjb25zaWRlciB3aGVyZSB0aGlzIGNoZWNrXG4gIC8vIGlzIG1hZGUuIEl0IHByb2JhYmx5IGJlbG9uZ3Mgd2hlcmUgdGhlIGtleSBjaGVja2luZyBhbmRcbiAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCBpcyBkb25lLlxuXG4gIHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9PT0gbnVsbCB8fCBwcmV2RWxlbWVudCA9PT0gZmFsc2U7XG4gIHZhciBuZXh0RW1wdHkgPSBuZXh0RWxlbWVudCA9PT0gbnVsbCB8fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7XG5cbiAgcmV0dXJuKFxuICAgIC8vIFRoaXMgaGFzIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyB3L3IvdCBlbXB0eSBjb21wb25lbnRzLlxuICAgIHByZXZFbXB0eSB8fCBuZXh0RW1wdHkgfHwgbmV4dEVsZW1lbnQuX293bmVyICE9PSBwcmV2RWxlbWVudC5fb3duZXIgfHwgbmV4dEVsZW1lbnQucmVmICE9PSBwcmV2RWxlbWVudC5yZWZcbiAgKTtcbn07XG5cblJlYWN0UmVmLmRldGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICBpZiAocmVmICE9IG51bGwpIHtcbiAgICBkZXRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVmOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFJvb3RJbmRleFxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJvb3RJbmRleEluamVjdGlvbiA9IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IF9jcmVhdGVSZWFjdFJvb3RJbmRleFxuICAgKi9cbiAgaW5qZWN0Q3JlYXRlUmVhY3RSb290SW5kZXg6IGZ1bmN0aW9uIChfY3JlYXRlUmVhY3RSb290SW5kZXgpIHtcbiAgICBSZWFjdFJvb3RJbmRleC5jcmVhdGVSZWFjdFJvb3RJbmRleCA9IF9jcmVhdGVSZWFjdFJvb3RJbmRleDtcbiAgfVxufTtcblxudmFyIFJlYWN0Um9vdEluZGV4ID0ge1xuICBjcmVhdGVSZWFjdFJvb3RJbmRleDogbnVsbCxcbiAgaW5qZWN0aW9uOiBSZWFjdFJvb3RJbmRleEluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJvb3RJbmRleDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5XG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneSA9IHtcbiAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLFxuICBiYXRjaGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaGVyZS4gRHVyaW5nIHRoZSBzZXJ2ZXIgcmVuZGVyaW5nIHdlIGRvbid0IHdhbnQgdG9cbiAgICAvLyBzY2hlZHVsZSBhbnkgdXBkYXRlcy4gV2Ugd2lsbCBzaW1wbHkgaWdub3JlIHRoZW0uXG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0U2VydmVyUmVuZGVyaW5nXG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSByZXF1aXJlKCcuL1JlYWN0TWFya3VwQ2hlY2tzdW0nKTtcbnZhciBSZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1JlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneScpO1xudmFyIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24nKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgSFRNTCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZWxlbWVudCkge1xuICAhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbmRlclRvU3RyaW5nKCk6IFlvdSBtdXN0IHBhc3MgYSB2YWxpZCBSZWFjdEVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHZhciB0cmFuc2FjdGlvbjtcbiAgdHJ5IHtcbiAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgIHZhciBpZCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0Um9vdElEKCk7XG4gICAgdHJhbnNhY3Rpb24gPSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLmdldFBvb2xlZChmYWxzZSk7XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ucGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGVsZW1lbnQsIG51bGwpO1xuICAgICAgdmFyIG1hcmt1cCA9IGNvbXBvbmVudEluc3RhbmNlLm1vdW50Q29tcG9uZW50KGlkLCB0cmFuc2FjdGlvbiwgZW1wdHlPYmplY3QpO1xuICAgICAgcmV0dXJuIFJlYWN0TWFya3VwQ2hlY2tzdW0uYWRkQ2hlY2tzdW1Ub01hcmt1cChtYXJrdXApO1xuICAgIH0sIG51bGwpO1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG4gICAgLy8gUmV2ZXJ0IHRvIHRoZSBET00gYmF0Y2hpbmcgc3RyYXRlZ3kgc2luY2UgdGhlc2UgdHdvIHJlbmRlcmVyc1xuICAgIC8vIGN1cnJlbnRseSBzaGFyZSB0aGVzZSBzdGF0ZWZ1bCBtb2R1bGVzLlxuICAgIFJlYWN0VXBkYXRlcy5pbmplY3Rpb24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBIVE1MIG1hcmt1cCwgd2l0aG91dCB0aGUgZXh0cmEgUmVhY3QgSUQgYW5kIGNoZWNrc3VtXG4gKiAoZm9yIGdlbmVyYXRpbmcgc3RhdGljIHBhZ2VzKVxuICovXG5mdW5jdGlvbiByZW5kZXJUb1N0YXRpY01hcmt1cChlbGVtZW50KSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncmVuZGVyVG9TdGF0aWNNYXJrdXAoKTogWW91IG11c3QgcGFzcyBhIHZhbGlkIFJlYWN0RWxlbWVudC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIHRyYW5zYWN0aW9uO1xuICB0cnkge1xuICAgIFJlYWN0VXBkYXRlcy5pbmplY3Rpb24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kpO1xuXG4gICAgdmFyIGlkID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RSb290SUQoKTtcbiAgICB0cmFuc2FjdGlvbiA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKHRydWUpO1xuXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlbGVtZW50LCBudWxsKTtcbiAgICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZS5tb3VudENvbXBvbmVudChpZCwgdHJhbnNhY3Rpb24sIGVtcHR5T2JqZWN0KTtcbiAgICB9LCBudWxsKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuICAgIC8vIFJldmVydCB0byB0aGUgRE9NIGJhdGNoaW5nIHN0cmF0ZWd5IHNpbmNlIHRoZXNlIHR3byByZW5kZXJlcnNcbiAgICAvLyBjdXJyZW50bHkgc2hhcmUgdGhlc2Ugc3RhdGVmdWwgbW9kdWxlcy5cbiAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJlbmRlclRvU3RyaW5nOiByZW5kZXJUb1N0cmluZyxcbiAgcmVuZGVyVG9TdGF0aWNNYXJrdXA6IHJlbmRlclRvU3RhdGljTWFya3VwXG59O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRk5sY25abGNsSmxibVJsY21sdVp5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjF4dUlDb3ZYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRVJsWm1GMWJIUkNZWFJqYUdsdVoxTjBjbUYwWldkNUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUmxabUYxYkhSQ1lYUmphR2x1WjFOMGNtRjBaV2Q1SnlrN1hHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5RbktUdGNiblpoY2lCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNbktUdGNiblpoY2lCU1pXRmpkRTFoY210MWNFTm9aV05yYzNWdElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFMWhjbXQxY0VOb1pXTnJjM1Z0SnlrN1hHNTJZWElnVW1WaFkzUlRaWEoyWlhKQ1lYUmphR2x1WjFOMGNtRjBaV2Q1SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZObGNuWmxja0poZEdOb2FXNW5VM1J5WVhSbFoza25LVHRjYm5aaGNpQlNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1SnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHVnRjSFI1VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbFBZbXBsWTNRbktUdGNiblpoY2lCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJR1ZzWlcxbGJuUmNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnZEdobElFaFVUVXdnYldGeWEzVndYRzRnS2k5Y2JtWjFibU4wYVc5dUlISmxibVJsY2xSdlUzUnlhVzVuS0dWc1pXMWxiblFwSUh0Y2JpQWdJVkpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ2hsYkdWdFpXNTBLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHlaVzVrWlhKVWIxTjBjbWx1WnlncE9pQlpiM1VnYlhWemRDQndZWE56SUdFZ2RtRnNhV1FnVW1WaFkzUkZiR1Z0Wlc1MExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0IyWVhJZ2RISmhibk5oWTNScGIyNDdYRzRnSUhSeWVTQjdYRzRnSUNBZ1VtVmhZM1JWY0dSaGRHVnpMbWx1YW1WamRHbHZiaTVwYm1wbFkzUkNZWFJqYUdsdVoxTjBjbUYwWldkNUtGSmxZV04wVTJWeWRtVnlRbUYwWTJocGJtZFRkSEpoZEdWbmVTazdYRzVjYmlBZ0lDQjJZWElnYVdRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVqY21WaGRHVlNaV0ZqZEZKdmIzUkpSQ2dwTzF4dUlDQWdJSFJ5WVc1ellXTjBhVzl1SUQwZ1VtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZiaTVuWlhSUWIyOXNaV1FvWm1Gc2MyVXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlIUnlZVzV6WVdOMGFXOXVMbkJsY21admNtMG9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRFbHVjM1JoYm1ObElEMGdhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDaGxiR1Z0Wlc1MExDQnVkV3hzS1R0Y2JpQWdJQ0FnSUhaaGNpQnRZWEpyZFhBZ1BTQmpiMjF3YjI1bGJuUkpibk4wWVc1alpTNXRiM1Z1ZEVOdmJYQnZibVZ1ZENocFpDd2dkSEpoYm5OaFkzUnBiMjRzSUdWdGNIUjVUMkpxWldOMEtUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCU1pXRmpkRTFoY210MWNFTm9aV05yYzNWdExtRmtaRU5vWldOcmMzVnRWRzlOWVhKcmRYQW9iV0Z5YTNWd0tUdGNiaUFnSUNCOUxDQnVkV3hzS1R0Y2JpQWdmU0JtYVc1aGJHeDVJSHRjYmlBZ0lDQlNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1TG5KbGJHVmhjMlVvZEhKaGJuTmhZM1JwYjI0cE8xeHVJQ0FnSUM4dklGSmxkbVZ5ZENCMGJ5QjBhR1VnUkU5TklHSmhkR05vYVc1bklITjBjbUYwWldkNUlITnBibU5sSUhSb1pYTmxJSFIzYnlCeVpXNWtaWEpsY25OY2JpQWdJQ0F2THlCamRYSnlaVzUwYkhrZ2MyaGhjbVVnZEdobGMyVWdjM1JoZEdWbWRXd2diVzlrZFd4bGN5NWNiaUFnSUNCU1pXRmpkRlZ3WkdGMFpYTXVhVzVxWldOMGFXOXVMbWx1YW1WamRFSmhkR05vYVc1blUzUnlZWFJsWjNrb1VtVmhZM1JFWldaaGRXeDBRbUYwWTJocGJtZFRkSEpoZEdWbmVTazdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ1pXeGxiV1Z1ZEZ4dUlDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQjBhR1VnU0ZSTlRDQnRZWEpyZFhBc0lIZHBkR2h2ZFhRZ2RHaGxJR1Y0ZEhKaElGSmxZV04wSUVsRUlHRnVaQ0JqYUdWamEzTjFiVnh1SUNvZ0tHWnZjaUJuWlc1bGNtRjBhVzVuSUhOMFlYUnBZeUJ3WVdkbGN5bGNiaUFxTDF4dVpuVnVZM1JwYjI0Z2NtVnVaR1Z5Vkc5VGRHRjBhV05OWVhKcmRYQW9aV3hsYldWdWRDa2dlMXh1SUNBaFVtVmhZM1JGYkdWdFpXNTBMbWx6Vm1Gc2FXUkZiR1Z0Wlc1MEtHVnNaVzFsYm5RcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNKbGJtUmxjbFJ2VTNSaGRHbGpUV0Z5YTNWd0tDazZJRmx2ZFNCdGRYTjBJSEJoYzNNZ1lTQjJZV3hwWkNCU1pXRmpkRVZzWlcxbGJuUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUhaaGNpQjBjbUZ1YzJGamRHbHZianRjYmlBZ2RISjVJSHRjYmlBZ0lDQlNaV0ZqZEZWd1pHRjBaWE11YVc1cVpXTjBhVzl1TG1sdWFtVmpkRUpoZEdOb2FXNW5VM1J5WVhSbFoza29VbVZoWTNSVFpYSjJaWEpDWVhSamFHbHVaMU4wY21GMFpXZDVLVHRjYmx4dUlDQWdJSFpoY2lCcFpDQTlJRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TG1OeVpXRjBaVkpsWVdOMFVtOXZkRWxFS0NrN1hHNGdJQ0FnZEhKaGJuTmhZM1JwYjI0Z1BTQlNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1TG1kbGRGQnZiMnhsWkNoMGNuVmxLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBjbUZ1YzJGamRHbHZiaTV3WlhKbWIzSnRLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUhaaGNpQmpiMjF3YjI1bGJuUkpibk4wWVc1alpTQTlJR2x1YzNSaGJuUnBZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9aV3hsYldWdWRDd2diblZzYkNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlV1Ylc5MWJuUkRiMjF3YjI1bGJuUW9hV1FzSUhSeVlXNXpZV04wYVc5dUxDQmxiWEIwZVU5aWFtVmpkQ2s3WEc0Z0lDQWdmU3dnYm5Wc2JDazdYRzRnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnVW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJpNXlaV3hsWVhObEtIUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ0lDQXZMeUJTWlhabGNuUWdkRzhnZEdobElFUlBUU0JpWVhSamFHbHVaeUJ6ZEhKaGRHVm5lU0J6YVc1alpTQjBhR1Z6WlNCMGQyOGdjbVZ1WkdWeVpYSnpYRzRnSUNBZ0x5OGdZM1Z5Y21WdWRHeDVJSE5vWVhKbElIUm9aWE5sSUhOMFlYUmxablZzSUcxdlpIVnNaWE11WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1Z6TG1sdWFtVmpkR2x2Ymk1cGJtcGxZM1JDWVhSamFHbHVaMU4wY21GMFpXZDVLRkpsWVdOMFJHVm1ZWFZzZEVKaGRHTm9hVzVuVTNSeVlYUmxaM2twTzF4dUlDQjlYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2UxeHVJQ0J5Wlc1a1pYSlViMU4wY21sdVp6b2djbVZ1WkdWeVZHOVRkSEpwYm1jc1hHNGdJSEpsYm1SbGNsUnZVM1JoZEdsalRXRnlhM1Z3T2lCeVpXNWtaWEpVYjFOMFlYUnBZMDFoY210MWNGeHVmVHNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBgQ2FsbGJhY2tRdWV1ZWAgcXVldWUgZm9yIGNvbGxlY3RpbmcgYG9uRE9NUmVhZHlgIGNhbGxiYWNrc1xuICogZHVyaW5nIHRoZSBwZXJmb3JtaW5nIG9mIHRoZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUuXG4gICAqL1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKTtcbiAgfSxcblxuICBjbG9zZTogZW1wdHlGdW5jdGlvblxufTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW09OX0RPTV9SRUFEWV9RVUVVRUlOR107XG5cbi8qKlxuICogQGNsYXNzIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVuZGVyVG9TdGF0aWNNYXJrdXBcbiAqL1xuZnVuY3Rpb24gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbihyZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRpY01hcmt1cDtcbiAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gZmFsc2U7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25cbiAgICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheX0gRW1wdHkgbGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG4gICAqL1xuICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG4gICAqIGluc3RhbmNlIHRvIGJlIHJldXNlZC5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpO1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5ID0gbnVsbDtcbiAgfVxufTtcblxuYXNzaWduKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbi5NaXhpbiwgTWl4aW4pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RUcmFuc2l0aW9uRXZlbnRzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG4vKipcbiAqIEVWRU5UX05BTUVfTUFQIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGV2ZW50IGZpcmVkIHdoZW4gYVxuICogdHJhbnNpdGlvbi9hbmltYXRpb24gZW5kcywgYmFzZWQgb24gdGhlIHN0eWxlIHByb3BlcnR5IHVzZWQgdG9cbiAqIGRlZmluZSB0aGF0IGV2ZW50LlxuICovXG52YXIgRVZFTlRfTkFNRV9NQVAgPSB7XG4gIHRyYW5zaXRpb25lbmQ6IHtcbiAgICAndHJhbnNpdGlvbic6ICd0cmFuc2l0aW9uZW5kJyxcbiAgICAnV2Via2l0VHJhbnNpdGlvbic6ICd3ZWJraXRUcmFuc2l0aW9uRW5kJyxcbiAgICAnTW96VHJhbnNpdGlvbic6ICdtb3pUcmFuc2l0aW9uRW5kJyxcbiAgICAnT1RyYW5zaXRpb24nOiAnb1RyYW5zaXRpb25FbmQnLFxuICAgICdtc1RyYW5zaXRpb24nOiAnTVNUcmFuc2l0aW9uRW5kJ1xuICB9LFxuXG4gIGFuaW1hdGlvbmVuZDoge1xuICAgICdhbmltYXRpb24nOiAnYW5pbWF0aW9uZW5kJyxcbiAgICAnV2Via2l0QW5pbWF0aW9uJzogJ3dlYmtpdEFuaW1hdGlvbkVuZCcsXG4gICAgJ01vekFuaW1hdGlvbic6ICdtb3pBbmltYXRpb25FbmQnLFxuICAgICdPQW5pbWF0aW9uJzogJ29BbmltYXRpb25FbmQnLFxuICAgICdtc0FuaW1hdGlvbic6ICdNU0FuaW1hdGlvbkVuZCdcbiAgfVxufTtcblxudmFyIGVuZEV2ZW50cyA9IFtdO1xuXG5mdW5jdGlvbiBkZXRlY3RFdmVudHMoKSB7XG4gIHZhciB0ZXN0RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdmFyIHN0eWxlID0gdGVzdEVsLnN0eWxlO1xuXG4gIC8vIE9uIHNvbWUgcGxhdGZvcm1zLCBpbiBwYXJ0aWN1bGFyIHNvbWUgcmVsZWFzZXMgb2YgQW5kcm9pZCA0LngsXG4gIC8vIHRoZSB1bi1wcmVmaXhlZCBcImFuaW1hdGlvblwiIGFuZCBcInRyYW5zaXRpb25cIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZVxuICAvLyBzdHlsZSBvYmplY3QgYnV0IHRoZSBldmVudHMgdGhhdCBmaXJlIHdpbGwgc3RpbGwgYmUgcHJlZml4ZWQsIHNvIHdlIG5lZWRcbiAgLy8gdG8gY2hlY2sgaWYgdGhlIHVuLXByZWZpeGVkIGV2ZW50cyBhcmUgdXNlYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbVxuICAvLyBmcm9tIHRoZSBtYXBcbiAgaWYgKCEoJ0FuaW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIEVWRU5UX05BTUVfTUFQLmFuaW1hdGlvbmVuZC5hbmltYXRpb247XG4gIH1cblxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIEVWRU5UX05BTUVfTUFQLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbjtcbiAgfVxuXG4gIGZvciAodmFyIGJhc2VFdmVudE5hbWUgaW4gRVZFTlRfTkFNRV9NQVApIHtcbiAgICB2YXIgYmFzZUV2ZW50cyA9IEVWRU5UX05BTUVfTUFQW2Jhc2VFdmVudE5hbWVdO1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBiYXNlRXZlbnRzKSB7XG4gICAgICBpZiAoc3R5bGVOYW1lIGluIHN0eWxlKSB7XG4gICAgICAgIGVuZEV2ZW50cy5wdXNoKGJhc2VFdmVudHNbc3R5bGVOYW1lXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIGRldGVjdEV2ZW50cygpO1xufVxuXG4vLyBXZSB1c2UgdGhlIHJhdyB7YWRkfHJlbW92ZX1FdmVudExpc3RlbmVyKCkgY2FsbCBiZWNhdXNlIEV2ZW50TGlzdGVuZXJcbi8vIGRvZXMgbm90IGtub3cgaG93IHRvIHJlbW92ZSBldmVudCBsaXN0ZW5lcnMgYW5kIHdlIHJlYWxseSBzaG91bGRcbi8vIGNsZWFuIHVwLiBBbHNvLCB0aGVzZSBldmVudHMgYXJlIG5vdCB0cmlnZ2VyZWQgaW4gb2xkZXIgYnJvd3NlcnNcbi8vIHNvIHdlIHNob3VsZCBiZSBBLU9LIGhlcmUuXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7XG4gIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIpIHtcbiAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwgZmFsc2UpO1xufVxuXG52YXIgUmVhY3RUcmFuc2l0aW9uRXZlbnRzID0ge1xuICBhZGRFbmRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAobm9kZSwgZXZlbnRMaXN0ZW5lcikge1xuICAgIGlmIChlbmRFdmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBJZiBDU1MgdHJhbnNpdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHRyaWdnZXIgYW4gXCJlbmQgYW5pbWF0aW9uXCJcbiAgICAgIC8vIGV2ZW50IGltbWVkaWF0ZWx5LlxuICAgICAgd2luZG93LnNldFRpbWVvdXQoZXZlbnRMaXN0ZW5lciwgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVuZEV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbmRFdmVudCkge1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7XG4gICAgfSk7XG4gIH0sXG5cbiAgcmVtb3ZlRW5kRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHtcbiAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbmRFdmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZW5kRXZlbnQpIHtcbiAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZW5kRXZlbnQsIGV2ZW50TGlzdGVuZXIpO1xuICAgIH0pO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VHJhbnNpdGlvbkV2ZW50czsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFVwZGF0ZVF1ZXVlXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSkge1xuICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gT25seSB3YXJuIHdoZW4gd2UgaGF2ZSBhIGNhbGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LlxuICAgICAgLy8gV2UncmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9uJ3Qgd2FudCB0byB3YXJuXG4gICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNhbGxlck5hbWUsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnJXMoLi4uKTogQ2Fubm90IHVwZGF0ZSBkdXJpbmcgYW4gZXhpc3Rpbmcgc3RhdGUgdHJhbnNpdGlvbiAnICsgJyhzdWNoIGFzIHdpdGhpbiBgcmVuZGVyYCkuIFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGUuJywgY2FsbGVyTmFtZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZTtcbn1cblxuLyoqXG4gKiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Igc3RhdGUgdXBkYXRlcyB0byBiZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyXG4gKiByZWNvbmNpbGlhdGlvbiBzdGVwLlxuICovXG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHtcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rpb24uICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxsIGJlIG51bGwgYnV0IGFmdGVyXG4gICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRlciB0byBzb21ldGhpbmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2VcbiAgICAgIC8vIHRoaXMgaGFjay5cbiAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2spIHtcbiAgICAhKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZW5xdWV1ZUNhbGxiYWNrKC4uLik6IFlvdSBjYWxsZWQgYHNldFByb3BzYCwgYHJlcGxhY2VQcm9wc2AsICcgKyAnYHNldFN0YXRlYCwgYHJlcGxhY2VTdGF0ZWAsIG9yIGBmb3JjZVVwZGF0ZWAgd2l0aCBhIGNhbGxiYWNrIHRoYXQgJyArICdpc25cXCd0IGNhbGxhYmxlLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG5cbiAgICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRocm93IGFuIGVycm9yIGlmIHdlIGRpZG4ndCBoYXZlIGFuIGludGVybmFsXG4gICAgLy8gaW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8gbWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZVxuICAgIC8vIGJlaGF2aW9yIHdlIGhhdmUgaW4gb3RoZXIgZW5xdWV1ZSogbWV0aG9kcy5cbiAgICAvLyBXZSBhbHNvIG5lZWQgdG8gaWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRXaWxsTW91bnQuIFNlZVxuICAgIC8vIGVucXVldWVVcGRhdGVzLlxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICAvLyBUT0RPOiBUaGUgY2FsbGJhY2sgaGVyZSBpcyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2FsbGVkIGZyb21cbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlzYWxsb3cgZG9pbmcgc28gY29tcGxldGVseSBpblxuICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0ZXJuYXRpdmVseSwgd2UgY2FuIGRpc2FsbG93XG4gICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGR1cmluZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG4gICAgISh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2VucXVldWVDYWxsYmFjayguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2AsIGByZXBsYWNlUHJvcHNgLCAnICsgJ2BzZXRTdGF0ZWAsIGByZXBsYWNlU3RhdGVgLCBvciBgZm9yY2VVcGRhdGVgIHdpdGggYSBjYWxsYmFjayB0aGF0ICcgKyAnaXNuXFwndCBjYWxsYWJsZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gdHJ1ZTtcblxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBxdWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlIHx8IChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtdKTtcbiAgICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsUHJvcHMgU3Vic2V0IG9mIHRoZSBuZXh0IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRQcm9wczogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsUHJvcHMpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3NldFByb3BzJyk7XG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVNldFByb3BzSW50ZXJuYWwoaW50ZXJuYWxJbnN0YW5jZSwgcGFydGlhbFByb3BzKTtcbiAgfSxcblxuICBlbnF1ZXVlU2V0UHJvcHNJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHBhcnRpYWxQcm9wcykge1xuICAgIHZhciB0b3BMZXZlbFdyYXBwZXIgPSBpbnRlcm5hbEluc3RhbmNlLl90b3BMZXZlbFdyYXBwZXI7XG4gICAgIXRvcExldmVsV3JhcHBlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRQcm9wcyguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2Agb24gYSAnICsgJ2NvbXBvbmVudCB3aXRoIGEgcGFyZW50LiBUaGlzIGlzIGFuIGFudGktcGF0dGVybiBzaW5jZSBwcm9wcyB3aWxsICcgKyAnZ2V0IHJlYWN0aXZlbHkgdXBkYXRlZCB3aGVuIHJlbmRlcmVkLiBJbnN0ZWFkLCBjaGFuZ2UgdGhlIG93bmVyXFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCB0byBwYXNzIHRoZSBjb3JyZWN0IHZhbHVlIGFzIHByb3BzIHRvIHRoZSBjb21wb25lbnQgJyArICd3aGVyZSBpdCBpcyBjcmVhdGVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIE1lcmdlIHdpdGggdGhlIHBlbmRpbmcgZWxlbWVudCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSB3aXRoIGV4aXN0aW5nXG4gICAgLy8gZWxlbWVudCBwcm9wcy5cbiAgICB2YXIgd3JhcEVsZW1lbnQgPSB0b3BMZXZlbFdyYXBwZXIuX3BlbmRpbmdFbGVtZW50IHx8IHRvcExldmVsV3JhcHBlci5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIGVsZW1lbnQgPSB3cmFwRWxlbWVudC5wcm9wcztcbiAgICB2YXIgcHJvcHMgPSBhc3NpZ24oe30sIGVsZW1lbnQucHJvcHMsIHBhcnRpYWxQcm9wcyk7XG4gICAgdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VQcm9wcyh3cmFwRWxlbWVudCwgUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzKGVsZW1lbnQsIHByb3BzKSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKHRvcExldmVsV3JhcHBlcik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgTmV3IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlUHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcHJvcHMpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VQcm9wcycpO1xuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlUHJvcHNJbnRlcm5hbChpbnRlcm5hbEluc3RhbmNlLCBwcm9wcyk7XG4gIH0sXG5cbiAgZW5xdWV1ZVJlcGxhY2VQcm9wc0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgcHJvcHMpIHtcbiAgICB2YXIgdG9wTGV2ZWxXcmFwcGVyID0gaW50ZXJuYWxJbnN0YW5jZS5fdG9wTGV2ZWxXcmFwcGVyO1xuICAgICF0b3BMZXZlbFdyYXBwZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncmVwbGFjZVByb3BzKC4uLik6IFlvdSBjYWxsZWQgYHJlcGxhY2VQcm9wc2Agb24gYSAnICsgJ2NvbXBvbmVudCB3aXRoIGEgcGFyZW50LiBUaGlzIGlzIGFuIGFudGktcGF0dGVybiBzaW5jZSBwcm9wcyB3aWxsICcgKyAnZ2V0IHJlYWN0aXZlbHkgdXBkYXRlZCB3aGVuIHJlbmRlcmVkLiBJbnN0ZWFkLCBjaGFuZ2UgdGhlIG93bmVyXFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCB0byBwYXNzIHRoZSBjb3JyZWN0IHZhbHVlIGFzIHByb3BzIHRvIHRoZSBjb21wb25lbnQgJyArICd3aGVyZSBpdCBpcyBjcmVhdGVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIE1lcmdlIHdpdGggdGhlIHBlbmRpbmcgZWxlbWVudCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSB3aXRoIGV4aXN0aW5nXG4gICAgLy8gZWxlbWVudCBwcm9wcy5cbiAgICB2YXIgd3JhcEVsZW1lbnQgPSB0b3BMZXZlbFdyYXBwZXIuX3BlbmRpbmdFbGVtZW50IHx8IHRvcExldmVsV3JhcHBlci5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIGVsZW1lbnQgPSB3cmFwRWxlbWVudC5wcm9wcztcbiAgICB0b3BMZXZlbFdyYXBwZXIuX3BlbmRpbmdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzKHdyYXBFbGVtZW50LCBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlUHJvcHMoZWxlbWVudCwgcHJvcHMpKTtcblxuICAgIGVucXVldWVVcGRhdGUodG9wTGV2ZWxXcmFwcGVyKTtcbiAgfSxcblxuICBlbnF1ZXVlRWxlbWVudEludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV3RWxlbWVudCkge1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVtZW50ID0gbmV3RWxlbWVudDtcbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVRdWV1ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEZWd1pHRjBaVkYxWlhWbExtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFZYQmtZWFJsVVhWbGRXVmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTjFjbkpsYm5SUGQyNWxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEZFhKeVpXNTBUM2R1WlhJbktUdGNiblpoY2lCU1pXRmpkRVZzWlcxbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSV3hsYldWdWRDY3BPMXh1ZG1GeUlGSmxZV04wU1c1emRHRnVZMlZOWVhBZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFNXNXpkR0Z1WTJWTllYQW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVlhCa1lYUmxjeWNwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVablZ1WTNScGIyNGdaVzV4ZFdWMVpWVndaR0YwWlNocGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJRkpsWVdOMFZYQmtZWFJsY3k1bGJuRjFaWFZsVlhCa1lYUmxLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQm5aWFJKYm5SbGNtNWhiRWx1YzNSaGJtTmxVbVZoWkhsR2IzSlZjR1JoZEdVb2NIVmliR2xqU1c1emRHRnVZMlVzSUdOaGJHeGxjazVoYldVcElIdGNiaUFnZG1GeUlHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVZ1BTQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0xtZGxkQ2h3ZFdKc2FXTkpibk4wWVc1alpTazdYRzRnSUdsbUlDZ2hhVzUwWlhKdVlXeEpibk4wWVc1alpTa2dlMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBdkx5QlBibXg1SUhkaGNtNGdkMmhsYmlCM1pTQm9ZWFpsSUdFZ1kyRnNiR1Z5VG1GdFpTNGdUM1JvWlhKM2FYTmxJSGRsSUhOb2IzVnNaQ0JpWlNCemFXeGxiblF1WEc0Z0lDQWdJQ0F2THlCWFpTZHlaU0J3Y205aVlXSnNlU0JqWVd4c2FXNW5JR1p5YjIwZ1pXNXhkV1YxWlVOaGJHeGlZV05yTGlCWFpTQmtiMjRuZENCM1lXNTBJSFJ2SUhkaGNtNWNiaUFnSUNBZ0lDOHZJSFJvWlhKbElHSmxZMkYxYzJVZ2QyVWdZV3h5WldGa2VTQjNZWEp1WldRZ1ptOXlJSFJvWlNCamIzSnlaWE53YjI1a2FXNW5JR3hwWm1WamVXTnNaU0J0WlhSb2IyUXVYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWdoWTJGc2JHVnlUbUZ0WlN3Z0p5VnpLQzR1TGlrNklFTmhiaUJ2Ym14NUlIVndaR0YwWlNCaElHMXZkVzUwWldRZ2IzSWdiVzkxYm5ScGJtY2dZMjl0Y0c5dVpXNTBMaUFuSUNzZ0oxUm9hWE1nZFhOMVlXeHNlU0J0WldGdWN5QjViM1VnWTJGc2JHVmtJQ1Z6S0NrZ2IyNGdZVzRnZFc1dGIzVnVkR1ZrSUdOdmJYQnZibVZ1ZEM0Z0p5QXJJQ2RVYUdseklHbHpJR0VnYm04dGIzQXVJRkJzWldGelpTQmphR1ZqYXlCMGFHVWdZMjlrWlNCbWIzSWdkR2hsSUNWeklHTnZiWEJ2Ym1WdWRDNG5MQ0JqWVd4c1pYSk9ZVzFsTENCallXeHNaWEpPWVcxbExDQndkV0pzYVdOSmJuTjBZVzVqWlM1amIyNXpkSEoxWTNSdmNpNWthWE53YkdGNVRtRnRaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwOUlHNTFiR3dzSUNjbGN5Z3VMaTRwT2lCRFlXNXViM1FnZFhCa1lYUmxJR1IxY21sdVp5QmhiaUJsZUdsemRHbHVaeUJ6ZEdGMFpTQjBjbUZ1YzJsMGFXOXVJQ2NnS3lBbktITjFZMmdnWVhNZ2QybDBhR2x1SUdCeVpXNWtaWEpnS1M0Z1VtVnVaR1Z5SUcxbGRHaHZaSE1nYzJodmRXeGtJR0psSUdFZ2NIVnlaU0JtZFc1amRHbHZiaUFuSUNzZ0oyOW1JSEJ5YjNCeklHRnVaQ0J6ZEdGMFpTNG5MQ0JqWVd4c1pYSk9ZVzFsS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnBiblJsY201aGJFbHVjM1JoYm1ObE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1VnWVd4c2IzZHpJR1p2Y2lCemRHRjBaU0IxY0dSaGRHVnpJSFJ2SUdKbElITmphR1ZrZFd4bFpDQnBiblJ2SUdFZ2JHRjBaWEpjYmlBcUlISmxZMjl1WTJsc2FXRjBhVzl1SUhOMFpYQXVYRzRnS2k5Y2JuWmhjaUJTWldGamRGVndaR0YwWlZGMVpYVmxJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYUdWamEzTWdkMmhsZEdobGNpQnZjaUJ1YjNRZ2RHaHBjeUJqYjIxd2IzTnBkR1VnWTI5dGNHOXVaVzUwSUdseklHMXZkVzUwWldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIZGxJSGRoYm5RZ2RHOGdkR1Z6ZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUJ0YjNWdWRHVmtMQ0JtWVd4elpTQnZkR2hsY25kcGMyVXVYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvZ1FHWnBibUZzWEc0Z0lDQXFMMXh1SUNCcGMwMXZkVzUwWldRNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlNrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVhJZ2IzZHVaWElnUFNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwTzF4dUlDQWdJQ0FnYVdZZ0tHOTNibVZ5SUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LRzkzYm1WeUxsOTNZWEp1WldSQlltOTFkRkpsWm5OSmJsSmxibVJsY2l3Z0p5VnpJR2x6SUdGalkyVnpjMmx1WnlCcGMwMXZkVzUwWldRZ2FXNXphV1JsSUdsMGN5QnlaVzVrWlhJb0tTQm1kVzVqZEdsdmJpNGdKeUFySUNkeVpXNWtaWElvS1NCemFHOTFiR1FnWW1VZ1lTQndkWEpsSUdaMWJtTjBhVzl1SUc5bUlIQnliM0J6SUdGdVpDQnpkR0YwWlM0Z1NYUWdjMmh2ZFd4a0lDY2dLeUFuYm1WMlpYSWdZV05qWlhOeklITnZiV1YwYUdsdVp5QjBhR0YwSUhKbGNYVnBjbVZ6SUhOMFlXeGxJR1JoZEdFZ1puSnZiU0IwYUdVZ2NISmxkbWx2ZFhNZ0p5QXJJQ2R5Wlc1a1pYSXNJSE4xWTJnZ1lYTWdjbVZtY3k0Z1RXOTJaU0IwYUdseklHeHZaMmxqSUhSdklHTnZiWEJ2Ym1WdWRFUnBaRTF2ZFc1MElHRnVaQ0FuSUNzZ0oyTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpTQnBibk4wWldGa0xpY3NJRzkzYm1WeUxtZGxkRTVoYldVb0tTQjhmQ0FuUVNCamIyMXdiMjVsYm5RbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnYjNkdVpYSXVYM2RoY201bFpFRmliM1YwVW1WbWMwbHVVbVZ1WkdWeUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdkbUZ5SUdsdWRHVnlibUZzU1c1emRHRnVZMlVnUFNCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3TG1kbGRDaHdkV0pzYVdOSmJuTjBZVzVqWlNrN1hHNGdJQ0FnYVdZZ0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVcElIdGNiaUFnSUNBZ0lDOHZJRVIxY21sdVp5QmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUWdZVzVrSUhKbGJtUmxjaUIwYUdseklIZHBiR3dnYzNScGJHd2dZbVVnYm5Wc2JDQmlkWFFnWVdaMFpYSmNiaUFnSUNBZ0lDOHZJSFJvWVhRZ2QybHNiQ0JoYkhkaGVYTWdjbVZ1WkdWeUlIUnZJSE52YldWMGFHbHVaeTRnUVhRZ2JHVmhjM1FnWm05eUlHNXZkeTRnVTI4Z2QyVWdZMkZ1SUhWelpWeHVJQ0FnSUNBZ0x5OGdkR2hwY3lCb1lXTnJMbHh1SUNBZ0lDQWdjbVYwZFhKdUlDRWhhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ1Y1hWbGRXVWdZU0JqWVd4c1ltRmpheUIwYUdGMElIZHBiR3dnWW1VZ1pYaGxZM1YwWldRZ1lXWjBaWElnWVd4c0lIUm9aU0J3Wlc1a2FXNW5JSFZ3WkdGMFpYTmNiaUFnSUNvZ2FHRjJaU0J3Y205alpYTnpaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJ2SUhWelpTQmhjeUJnZEdocGMyQWdZMjl1ZEdWNGRDNWNiaUFnSUNvZ1FIQmhjbUZ0SUhzL1puVnVZM1JwYjI1OUlHTmhiR3hpWVdOcklFTmhiR3hsWkNCaFpuUmxjaUJ6ZEdGMFpTQnBjeUIxY0dSaGRHVmtMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Z1Y1hWbGRXVkRZV3hzWW1GamF6b2dablZ1WTNScGIyNGdLSEIxWW14cFkwbHVjM1JoYm1ObExDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDRW9kSGx3Wlc5bUlHTmhiR3hpWVdOcklEMDlQU0FuWm5WdVkzUnBiMjRuS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RsYm5GMVpYVmxRMkZzYkdKaFkyc29MaTR1S1RvZ1dXOTFJR05oYkd4bFpDQmdjMlYwVUhKdmNITmdMQ0JnY21Wd2JHRmpaVkJ5YjNCellDd2dKeUFySUNkZ2MyVjBVM1JoZEdWZ0xDQmdjbVZ3YkdGalpWTjBZWFJsWUN3Z2IzSWdZR1p2Y21ObFZYQmtZWFJsWUNCM2FYUm9JR0VnWTJGc2JHSmhZMnNnZEdoaGRDQW5JQ3NnSjJsemJseGNKM1FnWTJGc2JHRmliR1V1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIWmhjaUJwYm5SbGNtNWhiRWx1YzNSaGJtTmxJRDBnWjJWMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlZKbFlXUjVSbTl5VlhCa1lYUmxLSEIxWW14cFkwbHVjM1JoYm1ObEtUdGNibHh1SUNBZ0lDOHZJRkJ5WlhacGIzVnpiSGtnZDJVZ2QyOTFiR1FnZEdoeWIzY2dZVzRnWlhKeWIzSWdhV1lnZDJVZ1pHbGtiaWQwSUdoaGRtVWdZVzRnYVc1MFpYSnVZV3hjYmlBZ0lDQXZMeUJwYm5OMFlXNWpaUzRnVTJsdVkyVWdkMlVnZDJGdWRDQjBieUJ0WVd0bElHbDBJR0VnYm04dGIzQWdhVzV6ZEdWaFpDd2dkMlVnYldseWNtOXlJSFJvWlNCellXMWxYRzRnSUNBZ0x5OGdZbVZvWVhacGIzSWdkMlVnYUdGMlpTQnBiaUJ2ZEdobGNpQmxibkYxWlhWbEtpQnRaWFJvYjJSekxseHVJQ0FnSUM4dklGZGxJR0ZzYzI4Z2JtVmxaQ0IwYnlCcFoyNXZjbVVnWTJGc2JHSmhZMnR6SUdsdUlHTnZiWEJ2Ym1WdWRGZHBiR3hOYjNWdWRDNGdVMlZsWEc0Z0lDQWdMeThnWlc1eGRXVjFaVlZ3WkdGMFpYTXVYRzRnSUNBZ2FXWWdLQ0ZwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3lrZ2UxeHVJQ0FnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3k1d2RYTm9LR05oYkd4aVlXTnJLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3lBOUlGdGpZV3hzWW1GamExMDdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dklGUlBSRTg2SUZSb1pTQmpZV3hzWW1GamF5Qm9aWEpsSUdseklHbG5ibTl5WldRZ2QyaGxiaUJ6WlhSVGRHRjBaU0JwY3lCallXeHNaV1FnWm5KdmJWeHVJQ0FnSUM4dklHTnZiWEJ2Ym1WdWRGZHBiR3hOYjNWdWRDNGdSV2wwYUdWeUlHWnBlQ0JwZENCdmNpQmthWE5oYkd4dmR5QmtiMmx1WnlCemJ5QmpiMjF3YkdWMFpXeDVJR2x1WEc0Z0lDQWdMeThnWm1GMmIzSWdiMllnWjJWMFNXNXBkR2xoYkZOMFlYUmxMaUJCYkhSbGNtNWhkR2wyWld4NUxDQjNaU0JqWVc0Z1pHbHpZV3hzYjNkY2JpQWdJQ0F2THlCamIyMXdiMjVsYm5SWGFXeHNUVzkxYm5RZ1pIVnlhVzVuSUhObGNuWmxjaTF6YVdSbElISmxibVJsY21sdVp5NWNiaUFnSUNCbGJuRjFaWFZsVlhCa1lYUmxLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBPMXh1SUNCOUxGeHVYRzRnSUdWdWNYVmxkV1ZEWVd4c1ltRmphMGx1ZEdWeWJtRnNPaUJtZFc1amRHbHZiaUFvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0FoS0hSNWNHVnZaaUJqWVd4c1ltRmpheUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblpXNXhkV1YxWlVOaGJHeGlZV05yS0M0dUxpazZJRmx2ZFNCallXeHNaV1FnWUhObGRGQnliM0J6WUN3Z1lISmxjR3hoWTJWUWNtOXdjMkFzSUNjZ0t5QW5ZSE5sZEZOMFlYUmxZQ3dnWUhKbGNHeGhZMlZUZEdGMFpXQXNJRzl5SUdCbWIzSmpaVlZ3WkdGMFpXQWdkMmwwYUNCaElHTmhiR3hpWVdOcklIUm9ZWFFnSnlBcklDZHBjMjVjWENkMElHTmhiR3hoWW14bExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3lrZ2UxeHVJQ0FnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3k1d2RYTm9LR05oYkd4aVlXTnJLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3lBOUlGdGpZV3hzWW1GamExMDdYRzRnSUNBZ2ZWeHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9hVzUwWlhKdVlXeEpibk4wWVc1alpTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVadmNtTmxjeUJoYmlCMWNHUmhkR1V1SUZSb2FYTWdjMmh2ZFd4a0lHOXViSGtnWW1VZ2FXNTJiMnRsWkNCM2FHVnVJR2wwSUdseklHdHViM2R1SUhkcGRHaGNiaUFnSUNvZ1kyVnlkR0ZwYm5SNUlIUm9ZWFFnZDJVZ1lYSmxJQ29xYm05MEtpb2dhVzRnWVNCRVQwMGdkSEpoYm5OaFkzUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlGbHZkU0J0WVhrZ2QyRnVkQ0IwYnlCallXeHNJSFJvYVhNZ2QyaGxiaUI1YjNVZ2EyNXZkeUIwYUdGMElITnZiV1VnWkdWbGNHVnlJR0Z6Y0dWamRDQnZaaUIwYUdWY2JpQWdJQ29nWTI5dGNHOXVaVzUwSjNNZ2MzUmhkR1VnYUdGeklHTm9ZVzVuWldRZ1luVjBJR0J6WlhSVGRHRjBaV0FnZDJGeklHNXZkQ0JqWVd4c1pXUXVYRzRnSUNBcVhHNGdJQ0FxSUZSb2FYTWdkMmxzYkNCdWIzUWdhVzUyYjJ0bElHQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1ZnTENCaWRYUWdhWFFnZDJsc2JDQnBiblp2YTJWY2JpQWdJQ29nWUdOdmJYQnZibVZ1ZEZkcGJHeFZjR1JoZEdWZ0lHRnVaQ0JnWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOc1lYTnpmU0J3ZFdKc2FXTkpibk4wWVc1alpTQlVhR1VnYVc1emRHRnVZMlVnZEdoaGRDQnphRzkxYkdRZ2NtVnlaVzVrWlhJdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pXNXhkV1YxWlVadmNtTmxWWEJrWVhSbE9pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVcElIdGNiaUFnSUNCMllYSWdhVzUwWlhKdVlXeEpibk4wWVc1alpTQTlJR2RsZEVsdWRHVnlibUZzU1c1emRHRnVZMlZTWldGa2VVWnZjbFZ3WkdGMFpTaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0oyWnZjbU5sVlhCa1lYUmxKeWs3WEc1Y2JpQWdJQ0JwWmlBb0lXbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVcElIdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwYm5SbGNtNWhiRWx1YzNSaGJtTmxMbDl3Wlc1a2FXNW5SbTl5WTJWVmNHUmhkR1VnUFNCMGNuVmxPMXh1WEc0Z0lDQWdaVzV4ZFdWMVpWVndaR0YwWlNocGJuUmxjbTVoYkVsdWMzUmhibU5sS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ3YkdGalpYTWdZV3hzSUc5bUlIUm9aU0J6ZEdGMFpTNGdRV3gzWVhseklIVnpaU0IwYUdseklHOXlJR0J6WlhSVGRHRjBaV0FnZEc4Z2JYVjBZWFJsSUhOMFlYUmxMbHh1SUNBZ0tpQlpiM1VnYzJodmRXeGtJSFJ5WldGMElHQjBhR2x6TG5OMFlYUmxZQ0JoY3lCcGJXMTFkR0ZpYkdVdVhHNGdJQ0FxWEc0Z0lDQXFJRlJvWlhKbElHbHpJRzV2SUdkMVlYSmhiblJsWlNCMGFHRjBJR0IwYUdsekxuTjBZWFJsWUNCM2FXeHNJR0psSUdsdGJXVmthV0YwWld4NUlIVndaR0YwWldRc0lITnZYRzRnSUNBcUlHRmpZMlZ6YzJsdVp5QmdkR2hwY3k1emRHRjBaV0FnWVdaMFpYSWdZMkZzYkdsdVp5QjBhR2x6SUcxbGRHaHZaQ0J0WVhrZ2NtVjBkWEp1SUhSb1pTQnZiR1FnZG1Gc2RXVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXRjR3hsZEdWVGRHRjBaU0JPWlhoMElITjBZWFJsTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZTWlhCc1lXTmxVM1JoZEdVNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z1kyOXRjR3hsZEdWVGRHRjBaU2tnZTF4dUlDQWdJSFpoY2lCcGJuUmxjbTVoYkVsdWMzUmhibU5sSUQwZ1oyVjBTVzUwWlhKdVlXeEpibk4wWVc1alpWSmxZV1I1Um05eVZYQmtZWFJsS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0FuY21Wd2JHRmpaVk4wWVhSbEp5azdYRzVjYmlBZ0lDQnBaaUFvSVdsdWRHVnlibUZzU1c1emRHRnVZMlVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBiblJsY201aGJFbHVjM1JoYm1ObExsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpTQTlJRnRqYjIxd2JHVjBaVk4wWVhSbFhUdGNiaUFnSUNCcGJuUmxjbTVoYkVsdWMzUmhibU5sTGw5d1pXNWthVzVuVW1Wd2JHRmpaVk4wWVhSbElEMGdkSEoxWlR0Y2JseHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9hVzUwWlhKdVlXeEpibk4wWVc1alpTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRITWdZU0J6ZFdKelpYUWdiMllnZEdobElITjBZWFJsTGlCVWFHbHpJRzl1YkhrZ1pYaHBjM1J6SUdKbFkyRjFjMlVnWDNCbGJtUnBibWRUZEdGMFpTQnBjMXh1SUNBZ0tpQnBiblJsY201aGJDNGdWR2hwY3lCd2NtOTJhV1JsY3lCaElHMWxjbWRwYm1jZ2MzUnlZWFJsWjNrZ2RHaGhkQ0JwY3lCdWIzUWdZWFpoYVd4aFlteGxJSFJ2SUdSbFpYQmNiaUFnSUNvZ2NISnZjR1Z5ZEdsbGN5QjNhR2xqYUNCcGN5QmpiMjVtZFhOcGJtY3VJRlJQUkU4NklFVjRjRzl6WlNCd1pXNWthVzVuVTNSaGRHVWdiM0lnWkc5dUozUWdkWE5sSUdsMFhHNGdJQ0FxSUdSMWNtbHVaeUIwYUdVZ2JXVnlaMlV1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJvWVhRZ2MyaHZkV3hrSUhKbGNtVnVaR1Z5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjR0Z5ZEdsaGJGTjBZWFJsSUU1bGVIUWdjR0Z5ZEdsaGJDQnpkR0YwWlNCMGJ5QmlaU0J0WlhKblpXUWdkMmwwYUNCemRHRjBaUzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxVMlYwVTNSaGRHVTZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2djR0Z5ZEdsaGJGTjBZWFJsS1NCN1hHNGdJQ0FnZG1GeUlHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVZ1BTQm5aWFJKYm5SbGNtNWhiRWx1YzNSaGJtTmxVbVZoWkhsR2IzSlZjR1JoZEdVb2NIVmliR2xqU1c1emRHRnVZMlVzSUNkelpYUlRkR0YwWlNjcE8xeHVYRzRnSUNBZ2FXWWdLQ0ZwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJSEYxWlhWbElEMGdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVWdmSHdnS0dsdWRHVnlibUZzU1c1emRHRnVZMlV1WDNCbGJtUnBibWRUZEdGMFpWRjFaWFZsSUQwZ1cxMHBPMXh1SUNBZ0lIRjFaWFZsTG5CMWMyZ29jR0Z5ZEdsaGJGTjBZWFJsS1R0Y2JseHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9hVzUwWlhKdVlXeEpibk4wWVc1alpTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRITWdZU0J6ZFdKelpYUWdiMllnZEdobElIQnliM0J6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJoY25ScFlXeFFjbTl3Y3lCVGRXSnpaWFFnYjJZZ2RHaGxJRzVsZUhRZ2NISnZjSE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWlc1eGRXVjFaVk5sZEZCeWIzQnpPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJSEJoY25ScFlXeFFjbTl3Y3lrZ2UxeHVJQ0FnSUhaaGNpQnBiblJsY201aGJFbHVjM1JoYm1ObElEMGdaMlYwU1c1MFpYSnVZV3hKYm5OMFlXNWpaVkpsWVdSNVJtOXlWWEJrWVhSbEtIQjFZbXhwWTBsdWMzUmhibU5sTENBbmMyVjBVSEp2Y0hNbktUdGNiaUFnSUNCcFppQW9JV2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWUmRXVjFaUzVsYm5GMVpYVmxVMlYwVUhKdmNITkpiblJsY201aGJDaHBiblJsY201aGJFbHVjM1JoYm1ObExDQndZWEowYVdGc1VISnZjSE1wTzF4dUlDQjlMRnh1WEc0Z0lHVnVjWFZsZFdWVFpYUlFjbTl3YzBsdWRHVnlibUZzT2lCbWRXNWpkR2x2YmlBb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlN3Z2NHRnlkR2xoYkZCeWIzQnpLU0I3WEc0Z0lDQWdkbUZ5SUhSdmNFeGxkbVZzVjNKaGNIQmxjaUE5SUdsdWRHVnlibUZzU1c1emRHRnVZMlV1WDNSdmNFeGxkbVZzVjNKaGNIQmxjanRjYmlBZ0lDQWhkRzl3VEdWMlpXeFhjbUZ3Y0dWeUlEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNObGRGQnliM0J6S0M0dUxpazZJRmx2ZFNCallXeHNaV1FnWUhObGRGQnliM0J6WUNCdmJpQmhJQ2NnS3lBblkyOXRjRzl1Wlc1MElIZHBkR2dnWVNCd1lYSmxiblF1SUZSb2FYTWdhWE1nWVc0Z1lXNTBhUzF3WVhSMFpYSnVJSE5wYm1ObElIQnliM0J6SUhkcGJHd2dKeUFySUNkblpYUWdjbVZoWTNScGRtVnNlU0IxY0dSaGRHVmtJSGRvWlc0Z2NtVnVaR1Z5WldRdUlFbHVjM1JsWVdRc0lHTm9ZVzVuWlNCMGFHVWdiM2R1WlhKY1hDZHpJQ2NnS3lBbllISmxibVJsY21BZ2JXVjBhRzlrSUhSdklIQmhjM01nZEdobElHTnZjbkpsWTNRZ2RtRnNkV1VnWVhNZ2NISnZjSE1nZEc4Z2RHaGxJR052YlhCdmJtVnVkQ0FuSUNzZ0ozZG9aWEpsSUdsMElHbHpJR055WldGMFpXUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0x5OGdUV1Z5WjJVZ2QybDBhQ0IwYUdVZ2NHVnVaR2x1WnlCbGJHVnRaVzUwSUdsbUlHbDBJR1Y0YVhOMGN5d2diM1JvWlhKM2FYTmxJSGRwZEdnZ1pYaHBjM1JwYm1kY2JpQWdJQ0F2THlCbGJHVnRaVzUwSUhCeWIzQnpMbHh1SUNBZ0lIWmhjaUIzY21Gd1JXeGxiV1Z1ZENBOUlIUnZjRXhsZG1Wc1YzSmhjSEJsY2k1ZmNHVnVaR2x1WjBWc1pXMWxiblFnZkh3Z2RHOXdUR1YyWld4WGNtRndjR1Z5TGw5amRYSnlaVzUwUld4bGJXVnVkRHRjYmlBZ0lDQjJZWElnWld4bGJXVnVkQ0E5SUhkeVlYQkZiR1Z0Wlc1MExuQnliM0J6TzF4dUlDQWdJSFpoY2lCd2NtOXdjeUE5SUdGemMybG5iaWg3ZlN3Z1pXeGxiV1Z1ZEM1d2NtOXdjeXdnY0dGeWRHbGhiRkJ5YjNCektUdGNiaUFnSUNCMGIzQk1aWFpsYkZkeVlYQndaWEl1WDNCbGJtUnBibWRGYkdWdFpXNTBJRDBnVW1WaFkzUkZiR1Z0Wlc1MExtTnNiMjVsUVc1a1VtVndiR0ZqWlZCeWIzQnpLSGR5WVhCRmJHVnRaVzUwTENCU1pXRmpkRVZzWlcxbGJuUXVZMnh2Ym1WQmJtUlNaWEJzWVdObFVISnZjSE1vWld4bGJXVnVkQ3dnY0hKdmNITXBLVHRjYmx4dUlDQWdJR1Z1Y1hWbGRXVlZjR1JoZEdVb2RHOXdUR1YyWld4WGNtRndjR1Z5S1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ3YkdGalpYTWdZV3hzSUc5bUlIUm9aU0J3Y205d2N5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnNZWE56ZlNCd2RXSnNhV05KYm5OMFlXNWpaU0JVYUdVZ2FXNXpkR0Z1WTJVZ2RHaGhkQ0J6YUc5MWJHUWdjbVZ5Wlc1a1pYSXVYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCd2NtOXdjeUJPWlhjZ2NISnZjSE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWlc1eGRXVjFaVkpsY0d4aFkyVlFjbTl3Y3pvZ1puVnVZM1JwYjI0Z0tIQjFZbXhwWTBsdWMzUmhibU5sTENCd2NtOXdjeWtnZTF4dUlDQWdJSFpoY2lCcGJuUmxjbTVoYkVsdWMzUmhibU5sSUQwZ1oyVjBTVzUwWlhKdVlXeEpibk4wWVc1alpWSmxZV1I1Um05eVZYQmtZWFJsS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0FuY21Wd2JHRmpaVkJ5YjNCekp5azdYRzRnSUNBZ2FXWWdLQ0ZwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVJQ0FnSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1V1Wlc1eGRXVjFaVkpsY0d4aFkyVlFjbTl3YzBsdWRHVnlibUZzS0dsdWRHVnlibUZzU1c1emRHRnVZMlVzSUhCeWIzQnpLVHRjYmlBZ2ZTeGNibHh1SUNCbGJuRjFaWFZsVW1Wd2JHRmpaVkJ5YjNCelNXNTBaWEp1WVd3NklHWjFibU4wYVc5dUlDaHBiblJsY201aGJFbHVjM1JoYm1ObExDQndjbTl3Y3lrZ2UxeHVJQ0FnSUhaaGNpQjBiM0JNWlhabGJGZHlZWEJ3WlhJZ1BTQnBiblJsY201aGJFbHVjM1JoYm1ObExsOTBiM0JNWlhabGJGZHlZWEJ3WlhJN1hHNGdJQ0FnSVhSdmNFeGxkbVZzVjNKaGNIQmxjaUEvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHlaWEJzWVdObFVISnZjSE1vTGk0dUtUb2dXVzkxSUdOaGJHeGxaQ0JnY21Wd2JHRmpaVkJ5YjNCellDQnZiaUJoSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBJSGRwZEdnZ1lTQndZWEpsYm5RdUlGUm9hWE1nYVhNZ1lXNGdZVzUwYVMxd1lYUjBaWEp1SUhOcGJtTmxJSEJ5YjNCeklIZHBiR3dnSnlBcklDZG5aWFFnY21WaFkzUnBkbVZzZVNCMWNHUmhkR1ZrSUhkb1pXNGdjbVZ1WkdWeVpXUXVJRWx1YzNSbFlXUXNJR05vWVc1blpTQjBhR1VnYjNkdVpYSmNYQ2R6SUNjZ0t5QW5ZSEpsYm1SbGNtQWdiV1YwYUc5a0lIUnZJSEJoYzNNZ2RHaGxJR052Y25KbFkzUWdkbUZzZFdVZ1lYTWdjSEp2Y0hNZ2RHOGdkR2hsSUdOdmJYQnZibVZ1ZENBbklDc2dKM2RvWlhKbElHbDBJR2x6SUdOeVpXRjBaV1F1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdMeThnVFdWeVoyVWdkMmwwYUNCMGFHVWdjR1Z1WkdsdVp5QmxiR1Z0Wlc1MElHbG1JR2wwSUdWNGFYTjBjeXdnYjNSb1pYSjNhWE5sSUhkcGRHZ2daWGhwYzNScGJtZGNiaUFnSUNBdkx5QmxiR1Z0Wlc1MElIQnliM0J6TGx4dUlDQWdJSFpoY2lCM2NtRndSV3hsYldWdWRDQTlJSFJ2Y0V4bGRtVnNWM0poY0hCbGNpNWZjR1Z1WkdsdVowVnNaVzFsYm5RZ2ZId2dkRzl3VEdWMlpXeFhjbUZ3Y0dWeUxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZER0Y2JpQWdJQ0IyWVhJZ1pXeGxiV1Z1ZENBOUlIZHlZWEJGYkdWdFpXNTBMbkJ5YjNCek8xeHVJQ0FnSUhSdmNFeGxkbVZzVjNKaGNIQmxjaTVmY0dWdVpHbHVaMFZzWlcxbGJuUWdQU0JTWldGamRFVnNaVzFsYm5RdVkyeHZibVZCYm1SU1pYQnNZV05sVUhKdmNITW9kM0poY0VWc1pXMWxiblFzSUZKbFlXTjBSV3hsYldWdWRDNWpiRzl1WlVGdVpGSmxjR3hoWTJWUWNtOXdjeWhsYkdWdFpXNTBMQ0J3Y205d2N5a3BPMXh1WEc0Z0lDQWdaVzV4ZFdWMVpWVndaR0YwWlNoMGIzQk1aWFpsYkZkeVlYQndaWElwTzF4dUlDQjlMRnh1WEc0Z0lHVnVjWFZsZFdWRmJHVnRaVzUwU1c1MFpYSnVZV3c2SUdaMWJtTjBhVzl1SUNocGJuUmxjbTVoYkVsdWMzUmhibU5sTENCdVpYZEZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBWc1pXMWxiblFnUFNCdVpYZEZiR1Z0Wlc1ME8xeHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9hVzUwWlhKdVlXeEpibk4wWVc1alpTazdYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0VXBkYXRlc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGRpcnR5Q29tcG9uZW50cyA9IFtdO1xudmFyIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbnZhciBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcblxudmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsO1xuXG5mdW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtcbiAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiAmJiBiYXRjaGluZ1N0cmF0ZWd5KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgaW5qZWN0IGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzIGFuZCBiYXRjaGluZyAnICsgJ3N0cmF0ZWd5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG52YXIgTkVTVEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IGRpcnR5Q29tcG9uZW50cy5sZW5ndGg7XG4gIH0sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoICE9PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBBZGRpdGlvbmFsIHVwZGF0ZXMgd2VyZSBlbnF1ZXVlZCBieSBjb21wb25lbnREaWRVcGRhdGUgaGFuZGxlcnMgb3JcbiAgICAgIC8vIHNpbWlsYXI7IGJlZm9yZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3cmFwcGVyIGNsb3Nlcywgd2Ugd2FudCB0byBydW5cbiAgICAgIC8vIHRoZXNlIG5ldyB1cGRhdGVzIHNvIHRoYXQgaWYgQSdzIGNvbXBvbmVudERpZFVwZGF0ZSBjYWxscyBzZXRTdGF0ZSBvblxuICAgICAgLy8gQiwgQiB3aWxsIHVwZGF0ZSBiZWZvcmUgdGhlIGNhbGxiYWNrIEEncyB1cGRhdGVyIHByb3ZpZGVkIHdoZW4gY2FsbGluZ1xuICAgICAgLy8gc2V0U3RhdGUuXG4gICAgICBkaXJ0eUNvbXBvbmVudHMuc3BsaWNlKDAsIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoKTtcbiAgICAgIGZsdXNoQmF0Y2hlZFVwZGF0ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlydHlDb21wb25lbnRzLmxlbmd0aCA9IDA7XG4gICAgfVxuICB9XG59O1xuXG52YXIgVVBEQVRFX1FVRVVFSU5HID0ge1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWxsYmFja1F1ZXVlLnJlc2V0KCk7XG4gIH0sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlmeUFsbCgpO1xuICB9XG59O1xuXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbTkVTVEVEX1VQREFURVMsIFVQREFURV9RVUVVRUlOR107XG5cbmZ1bmN0aW9uIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24oKSB7XG4gIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbiAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICB0aGlzLmNhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCAvKiBmb3JjZUhUTUwgKi9mYWxzZSk7XG59XG5cbmFzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24uTWl4aW4sIHtcbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7XG4gICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDtcbiAgfSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkge1xuICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9kLCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2FjdGlvbi5NaXhpbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBtZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTtcblxuZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgZW5zdXJlSW5qZWN0ZWQoKTtcbiAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSk7XG59XG5cbi8qKlxuICogQXJyYXkgY29tcGFyYXRvciBmb3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50IG9yZGVyaW5nLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMxIGZpcnN0IGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMiBzZWNvbmQgY29tcG9uZW50IHlvdSdyZSBjb21wYXJpbmdcbiAqIEByZXR1cm4ge251bWJlcn0gUmV0dXJuIHZhbHVlIHVzYWJsZSBieSBBcnJheS5wcm90b3R5cGUuc29ydCgpLlxuICovXG5mdW5jdGlvbiBtb3VudE9yZGVyQ29tcGFyYXRvcihjMSwgYzIpIHtcbiAgcmV0dXJuIGMxLl9tb3VudE9yZGVyIC0gYzIuX21vdW50T3JkZXI7XG59XG5cbmZ1bmN0aW9uIHJ1bkJhdGNoZWRVcGRhdGVzKHRyYW5zYWN0aW9uKSB7XG4gIHZhciBsZW4gPSB0cmFuc2FjdGlvbi5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7XG4gICEobGVuID09PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBmbHVzaCB0cmFuc2FjdGlvblxcJ3Mgc3RvcmVkIGRpcnR5LWNvbXBvbmVudHMgbGVuZ3RoICglcykgdG8gJyArICdtYXRjaCBkaXJ0eS1jb21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIC8vIFNpbmNlIHJlY29uY2lsaW5nIGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFyY2h5IHVzdWFsbHkgKG5vdFxuICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlXG4gIC8vIHRoZW0gYmVmb3JlIHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LlxuICBkaXJ0eUNvbXBvbmVudHMuc29ydChtb3VudE9yZGVyQ29tcGFyYXRvcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgcGVuZGluZyBjaGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsXG4gICAgLy8gYmUgaGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRcbiAgICAvLyB0aGF0IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5vb3AuXG4gICAgdmFyIGNvbXBvbmVudCA9IGRpcnR5Q29tcG9uZW50c1tpXTtcblxuICAgIC8vIElmIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5zIHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVzLCB3ZVxuICAgIC8vIHNob3VsZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5leHQgcmVuZGVyIGhhcHBlbnMsIHNvXG4gICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuICAgIHZhciBjYWxsYmFja3MgPSBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3M7XG4gICAgY29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblxuICAgIFJlYWN0UmVjb25jaWxlci5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkoY29tcG9uZW50LCB0cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykge1xuICAgICAgICB0cmFuc2FjdGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBmbHVzaEJhdGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkge1xuICAvLyBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21wb25lbnRzXG4gIC8vIGFycmF5IGFuZCBwZXJmb3JtIGFueSB1cGRhdGVzIGVucXVldWVkIGJ5IG1vdW50LXJlYWR5IGhhbmRsZXJzIChpLmUuLFxuICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGhlcmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoXG4gIC8vIHVwZGF0ZXMgZW5xdWV1ZWQgYnkgc2V0U3RhdGUgY2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLlxuICB3aGlsZSAoZGlydHlDb21wb25lbnRzLmxlbmd0aCB8fCBhc2FwRW5xdWV1ZWQpIHtcbiAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5nZXRQb29sZWQoKTtcbiAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0ocnVuQmF0Y2hlZFVwZGF0ZXMsIG51bGwsIHRyYW5zYWN0aW9uKTtcbiAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFzYXBFbnF1ZXVlZCkge1xuICAgICAgYXNhcEVucXVldWVkID0gZmFsc2U7XG4gICAgICB2YXIgcXVldWUgPSBhc2FwQ2FsbGJhY2tRdWV1ZTtcbiAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbiAgICAgIHF1ZXVlLm5vdGlmeUFsbCgpO1xuICAgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHF1ZXVlKTtcbiAgICB9XG4gIH1cbn07XG5mbHVzaEJhdGNoZWRVcGRhdGVzID0gUmVhY3RQZXJmLm1lYXN1cmUoJ1JlYWN0VXBkYXRlcycsICdmbHVzaEJhdGNoZWRVcGRhdGVzJywgZmx1c2hCYXRjaGVkVXBkYXRlcyk7XG5cbi8qKlxuICogTWFyayBhIGNvbXBvbmVudCBhcyBuZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBvcHRpb25hbCBjYWxsYmFjayB0byBhXG4gKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJlcmVuZGVyIG9jY3Vycy5cbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShjb21wb25lbnQpIHtcbiAgZW5zdXJlSW5qZWN0ZWQoKTtcblxuICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2FsbGVkIGJ5IGVhY2ggdG9wLWxldmVsIHVwZGF0ZVxuICAvLyBmdW5jdGlvbiwgbGlrZSBzZXRQcm9wcywgc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlvbiBhbmRcbiAgLy8gZGVzdHJ1Y3Rpb24gb2YgdG9wLWxldmVsIGNvbXBvbmVudHMgaXMgZ3VhcmRlZCBpbiBSZWFjdE1vdW50LilcblxuICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGVucXVldWVVcGRhdGUsIGNvbXBvbmVudCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGlydHlDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRocm93c1xuICogaWYgbm8gdXBkYXRlcyBhcmUgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC5cbiAqL1xuZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgY29udGV4dCkge1xuICAhYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXMuYXNhcDogQ2FuXFwndCBlbnF1ZXVlIGFuIGFzYXAgY2FsbGJhY2sgaW4gYSBjb250ZXh0IHdoZXJlJyArICd1cGRhdGVzIGFyZSBub3QgYmVpbmcgYmF0Y2hlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGFzYXBDYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpO1xuICBhc2FwRW5xdWV1ZWQgPSB0cnVlO1xufVxuXG52YXIgUmVhY3RVcGRhdGVzSW5qZWN0aW9uID0ge1xuICBpbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKFJlY29uY2lsZVRyYW5zYWN0aW9uKSB7XG4gICAgIVJlY29uY2lsZVRyYW5zYWN0aW9uID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgaW5qZWN0QmF0Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4gICAgIV9iYXRjaGluZ1N0cmF0ZWd5ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hlZFVwZGF0ZXMoKSBmdW5jdGlvbicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhbiBpc0JhdGNoaW5nVXBkYXRlcyBib29sZWFuIGF0dHJpYnV0ZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRlZ3k7XG4gIH1cbn07XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSB7XG4gIC8qKlxuICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyXG4gICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsXG5cbiAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxuICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLFxuICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0luamVjdGlvbixcbiAgYXNhcDogYXNhcFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRGVndaR0YwWlhNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JWY0dSaGRHVnpYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnUTJGc2JHSmhZMnRSZFdWMVpTQTlJSEpsY1hWcGNtVW9KeTR2UTJGc2JHSmhZMnRSZFdWMVpTY3BPMXh1ZG1GeUlGQnZiMnhsWkVOc1lYTnpJRDBnY21WeGRXbHlaU2duTGk5UWIyOXNaV1JEYkdGemN5Y3BPMXh1ZG1GeUlGSmxZV04wVUdWeVppQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFaWEptSnlrN1hHNTJZWElnVW1WaFkzUlNaV052Ym1OcGJHVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkpsWTI5dVkybHNaWEluS1R0Y2JuWmhjaUJVY21GdWMyRmpkR2x2YmlBOUlISmxjWFZwY21Vb0p5NHZWSEpoYm5OaFkzUnBiMjRuS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ1pHbHlkSGxEYjIxd2IyNWxiblJ6SUQwZ1cxMDdYRzUyWVhJZ1lYTmhjRU5oYkd4aVlXTnJVWFZsZFdVZ1BTQkRZV3hzWW1GamExRjFaWFZsTG1kbGRGQnZiMnhsWkNncE8xeHVkbUZ5SUdGellYQkZibkYxWlhWbFpDQTlJR1poYkhObE8xeHVYRzUyWVhJZ1ltRjBZMmhwYm1kVGRISmhkR1ZuZVNBOUlHNTFiR3c3WEc1Y2JtWjFibU4wYVc5dUlHVnVjM1Z5WlVsdWFtVmpkR1ZrS0NrZ2UxeHVJQ0FoS0ZKbFlXTjBWWEJrWVhSbGN5NVNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dUlDWW1JR0poZEdOb2FXNW5VM1J5WVhSbFoza3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wVlhCa1lYUmxjem9nYlhWemRDQnBibXBsWTNRZ1lTQnlaV052Ym1OcGJHVWdkSEpoYm5OaFkzUnBiMjRnWTJ4aGMzTWdZVzVrSUdKaGRHTm9hVzVuSUNjZ0t5QW5jM1J5WVhSbFoza25LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNTlYRzVjYm5aaGNpQk9SVk5VUlVSZlZWQkVRVlJGVXlBOUlIdGNiaUFnYVc1cGRHbGhiR2w2WlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIUm9hWE11WkdseWRIbERiMjF3YjI1bGJuUnpUR1Z1WjNSb0lEMGdaR2x5ZEhsRGIyMXdiMjVsYm5SekxteGxibWQwYUR0Y2JpQWdmU3hjYmlBZ1kyeHZjMlU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCcFppQW9kR2hwY3k1a2FYSjBlVU52YlhCdmJtVnVkSE5NWlc1bmRHZ2dJVDA5SUdScGNuUjVRMjl0Y0c5dVpXNTBjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQzh2SUVGa1pHbDBhVzl1WVd3Z2RYQmtZWFJsY3lCM1pYSmxJR1Z1Y1hWbGRXVmtJR0o1SUdOdmJYQnZibVZ1ZEVScFpGVndaR0YwWlNCb1lXNWtiR1Z5Y3lCdmNseHVJQ0FnSUNBZ0x5OGdjMmx0YVd4aGNqc2dZbVZtYjNKbElHOTFjaUJ2ZDI0Z1ZWQkVRVlJGWDFGVlJWVkZTVTVISUhkeVlYQndaWElnWTJ4dmMyVnpMQ0IzWlNCM1lXNTBJSFJ2SUhKMWJseHVJQ0FnSUNBZ0x5OGdkR2hsYzJVZ2JtVjNJSFZ3WkdGMFpYTWdjMjhnZEdoaGRDQnBaaUJCSjNNZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbElHTmhiR3h6SUhObGRGTjBZWFJsSUc5dVhHNGdJQ0FnSUNBdkx5QkNMQ0JDSUhkcGJHd2dkWEJrWVhSbElHSmxabTl5WlNCMGFHVWdZMkZzYkdKaFkyc2dRU2R6SUhWd1pHRjBaWElnY0hKdmRtbGtaV1FnZDJobGJpQmpZV3hzYVc1blhHNGdJQ0FnSUNBdkx5QnpaWFJUZEdGMFpTNWNiaUFnSUNBZ0lHUnBjblI1UTI5dGNHOXVaVzUwY3k1emNHeHBZMlVvTUN3Z2RHaHBjeTVrYVhKMGVVTnZiWEJ2Ym1WdWRITk1aVzVuZEdncE8xeHVJQ0FnSUNBZ1pteDFjMmhDWVhSamFHVmtWWEJrWVhSbGN5Z3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCa2FYSjBlVU52YlhCdmJtVnVkSE11YkdWdVozUm9JRDBnTUR0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUJWVUVSQlZFVmZVVlZGVlVWSlRrY2dQU0I3WEc0Z0lHbHVhWFJwWVd4cGVtVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxtTmhiR3hpWVdOclVYVmxkV1V1Y21WelpYUW9LVHRjYmlBZ2ZTeGNiaUFnWTJ4dmMyVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxtTmhiR3hpWVdOclVYVmxkV1V1Ym05MGFXWjVRV3hzS0NrN1hHNGdJSDFjYm4wN1hHNWNiblpoY2lCVVVrRk9VMEZEVkVsUFRsOVhVa0ZRVUVWU1V5QTlJRnRPUlZOVVJVUmZWVkJFUVZSRlV5d2dWVkJFUVZSRlgxRlZSVlZGU1U1SFhUdGNibHh1Wm5WdVkzUnBiMjRnVW1WaFkzUlZjR1JoZEdWelJteDFjMmhVY21GdWMyRmpkR2x2YmlncElIdGNiaUFnZEdocGN5NXlaV2x1YVhScFlXeHBlbVZVY21GdWMyRmpkR2x2YmlncE8xeHVJQ0IwYUdsekxtUnBjblI1UTI5dGNHOXVaVzUwYzB4bGJtZDBhQ0E5SUc1MWJHdzdYRzRnSUhSb2FYTXVZMkZzYkdKaFkydFJkV1YxWlNBOUlFTmhiR3hpWVdOclVYVmxkV1V1WjJWMFVHOXZiR1ZrS0NrN1hHNGdJSFJvYVhNdWNtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNGdQU0JTWldGamRGVndaR0YwWlhNdVVtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ymk1blpYUlFiMjlzWldRb0lDOHFJR1p2Y21ObFNGUk5UQ0FxTDJaaGJITmxLVHRjYm4xY2JseHVZWE56YVdkdUtGSmxZV04wVlhCa1lYUmxjMFpzZFhOb1ZISmhibk5oWTNScGIyNHVjSEp2ZEc5MGVYQmxMQ0JVY21GdWMyRmpkR2x2Ymk1TmFYaHBiaXdnZTF4dUlDQm5aWFJVY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUZSU1FVNVRRVU5VU1U5T1gxZFNRVkJRUlZKVE8xeHVJQ0I5TEZ4dVhHNGdJR1JsYzNSeWRXTjBiM0k2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbVJwY25SNVEyOXRjRzl1Wlc1MGMweGxibWQwYUNBOUlHNTFiR3c3WEc0Z0lDQWdRMkZzYkdKaFkydFJkV1YxWlM1eVpXeGxZWE5sS0hSb2FYTXVZMkZzYkdKaFkydFJkV1YxWlNrN1hHNGdJQ0FnZEdocGN5NWpZV3hzWW1GamExRjFaWFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQlNaV0ZqZEZWd1pHRjBaWE11VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiaTV5Wld4bFlYTmxLSFJvYVhNdWNtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNHBPMXh1SUNBZ0lIUm9hWE11Y21WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0Z1BTQnVkV3hzTzF4dUlDQjlMRnh1WEc0Z0lIQmxjbVp2Y20wNklHWjFibU4wYVc5dUlDaHRaWFJvYjJRc0lITmpiM0JsTENCaEtTQjdYRzRnSUNBZ0x5OGdSWE56Wlc1MGFXRnNiSGtnWTJGc2JITWdZSFJvYVhNdWNtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNHVjR1Z5Wm05eWJTaHRaWFJvYjJRc0lITmpiM0JsTENCaEtXQmNiaUFnSUNBdkx5QjNhWFJvSUhSb2FYTWdkSEpoYm5OaFkzUnBiMjRuY3lCM2NtRndjR1Z5Y3lCaGNtOTFibVFnYVhRdVhHNGdJQ0FnY21WMGRYSnVJRlJ5WVc1ellXTjBhVzl1TGsxcGVHbHVMbkJsY21admNtMHVZMkZzYkNoMGFHbHpMQ0IwYUdsekxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVMbkJsY21admNtMHNJSFJvYVhNdWNtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNHNJRzFsZEdodlpDd2djMk52Y0dVc0lHRXBPMXh1SUNCOVhHNTlLVHRjYmx4dVVHOXZiR1ZrUTJ4aGMzTXVZV1JrVUc5dmJHbHVaMVJ2S0ZKbFlXTjBWWEJrWVhSbGMwWnNkWE5vVkhKaGJuTmhZM1JwYjI0cE8xeHVYRzVtZFc1amRHbHZiaUJpWVhSamFHVmtWWEJrWVhSbGN5aGpZV3hzWW1GamF5d2dZU3dnWWl3Z1l5d2daQ3dnWlNrZ2UxeHVJQ0JsYm5OMWNtVkpibXBsWTNSbFpDZ3BPMXh1SUNCaVlYUmphR2x1WjFOMGNtRjBaV2Q1TG1KaGRHTm9aV1JWY0dSaGRHVnpLR05oYkd4aVlXTnJMQ0JoTENCaUxDQmpMQ0JrTENCbEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCQmNuSmhlU0JqYjIxd1lYSmhkRzl5SUdadmNpQlNaV0ZqZEVOdmJYQnZibVZ1ZEhNZ1lua2diVzkxYm5RZ2IzSmtaWEpwYm1jdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWXpFZ1ptbHljM1FnWTI5dGNHOXVaVzUwSUhsdmRTZHlaU0JqYjIxd1lYSnBibWRjYmlBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUdNeUlITmxZMjl1WkNCamIyMXdiMjVsYm5RZ2VXOTFKM0psSUdOdmJYQmhjbWx1WjF4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQlNaWFIxY200Z2RtRnNkV1VnZFhOaFlteGxJR0o1SUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YjNKMEtDa3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHMXZkVzUwVDNKa1pYSkRiMjF3WVhKaGRHOXlLR014TENCak1pa2dlMXh1SUNCeVpYUjFjbTRnWXpFdVgyMXZkVzUwVDNKa1pYSWdMU0JqTWk1ZmJXOTFiblJQY21SbGNqdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2NuVnVRbUYwWTJobFpGVndaR0YwWlhNb2RISmhibk5oWTNScGIyNHBJSHRjYmlBZ2RtRnlJR3hsYmlBOUlIUnlZVzV6WVdOMGFXOXVMbVJwY25SNVEyOXRjRzl1Wlc1MGMweGxibWQwYUR0Y2JpQWdJU2hzWlc0Z1BUMDlJR1JwY25SNVEyOXRjRzl1Wlc1MGN5NXNaVzVuZEdncElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWNGNHVmpkR1ZrSUdac2RYTm9JSFJ5WVc1ellXTjBhVzl1WEZ3bmN5QnpkRzl5WldRZ1pHbHlkSGt0WTI5dGNHOXVaVzUwY3lCc1pXNW5kR2dnS0NWektTQjBieUFuSUNzZ0oyMWhkR05vSUdScGNuUjVMV052YlhCdmJtVnVkSE1nWVhKeVlYa2diR1Z1WjNSb0lDZ2xjeWt1Snl3Z2JHVnVMQ0JrYVhKMGVVTnZiWEJ2Ym1WdWRITXViR1Z1WjNSb0tTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdMeThnVTJsdVkyVWdjbVZqYjI1amFXeHBibWNnWVNCamIyMXdiMjVsYm5RZ2FHbG5hR1Z5SUdsdUlIUm9aU0J2ZDI1bGNpQm9hV1Z5WVhKamFIa2dkWE4xWVd4c2VTQW9ibTkwWEc0Z0lDOHZJR0ZzZDJGNWN5QXRMU0J6WldVZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxLQ2twSUhkcGJHd2djbVZqYjI1amFXeGxJR05vYVd4a2NtVnVMQ0J5WldOdmJtTnBiR1ZjYmlBZ0x5OGdkR2hsYlNCaVpXWnZjbVVnZEdobGFYSWdZMmhwYkdSeVpXNGdZbmtnYzI5eWRHbHVaeUIwYUdVZ1lYSnlZWGt1WEc0Z0lHUnBjblI1UTI5dGNHOXVaVzUwY3k1emIzSjBLRzF2ZFc1MFQzSmtaWEpEYjIxd1lYSmhkRzl5S1R0Y2JseHVJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUd4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnTHk4Z1NXWWdZU0JqYjIxd2IyNWxiblFnYVhNZ2RXNXRiM1Z1ZEdWa0lHSmxabTl5WlNCd1pXNWthVzVuSUdOb1lXNW5aWE1nWVhCd2JIa3NJR2wwSUhkcGJHd2djM1JwYkd4Y2JpQWdJQ0F2THlCaVpTQm9aWEpsTENCaWRYUWdkMlVnWVhOemRXMWxJSFJvWVhRZ2FYUWdhR0Z6SUdOc1pXRnlaV1FnYVhSeklGOXdaVzVrYVc1blEyRnNiR0poWTJ0eklHRnVaRnh1SUNBZ0lDOHZJSFJvWVhRZ2NHVnlabTl5YlZWd1pHRjBaVWxtVG1WalpYTnpZWEo1SUdseklHRWdibTl2Y0M1Y2JpQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdaR2x5ZEhsRGIyMXdiMjVsYm5SelcybGRPMXh1WEc0Z0lDQWdMeThnU1dZZ2NHVnlabTl5YlZWd1pHRjBaVWxtVG1WalpYTnpZWEo1SUdoaGNIQmxibk1nZEc4Z1pXNXhkV1YxWlNCaGJua2dibVYzSUhWd1pHRjBaWE1zSUhkbFhHNGdJQ0FnTHk4Z2MyaHZkV3hrYmlkMElHVjRaV04xZEdVZ2RHaGxJR05oYkd4aVlXTnJjeUIxYm5ScGJDQjBhR1VnYm1WNGRDQnlaVzVrWlhJZ2FHRndjR1Z1Y3l3Z2MyOWNiaUFnSUNBdkx5QnpkR0Z6YUNCMGFHVWdZMkZzYkdKaFkydHpJR1pwY25OMFhHNGdJQ0FnZG1GeUlHTmhiR3hpWVdOcmN5QTlJR052YlhCdmJtVnVkQzVmY0dWdVpHbHVaME5oYkd4aVlXTnJjenRjYmlBZ0lDQmpiMjF3YjI1bGJuUXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTWdQU0J1ZFd4c08xeHVYRzRnSUNBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5CbGNtWnZjbTFWY0dSaGRHVkpaazVsWTJWemMyRnllU2hqYjIxd2IyNWxiblFzSUhSeVlXNXpZV04wYVc5dUxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVLVHRjYmx4dUlDQWdJR2xtSUNoallXeHNZbUZqYTNNcElIdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHb2dQU0F3T3lCcUlEd2dZMkZzYkdKaFkydHpMbXhsYm1kMGFEc2dhaXNyS1NCN1hHNGdJQ0FnSUNBZ0lIUnlZVzV6WVdOMGFXOXVMbU5oYkd4aVlXTnJVWFZsZFdVdVpXNXhkV1YxWlNoallXeHNZbUZqYTNOYmFsMHNJR052YlhCdmJtVnVkQzVuWlhSUWRXSnNhV05KYm5OMFlXNWpaU2dwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmx4dWRtRnlJR1pzZFhOb1FtRjBZMmhsWkZWd1pHRjBaWE1nUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUM4dklGSmxZV04wVlhCa1lYUmxjMFpzZFhOb1ZISmhibk5oWTNScGIyNG5jeUIzY21Gd2NHVnljeUIzYVd4c0lHTnNaV0Z5SUhSb1pTQmthWEowZVVOdmJYQnZibVZ1ZEhOY2JpQWdMeThnWVhKeVlYa2dZVzVrSUhCbGNtWnZjbTBnWVc1NUlIVndaR0YwWlhNZ1pXNXhkV1YxWldRZ1lua2diVzkxYm5RdGNtVmhaSGtnYUdGdVpHeGxjbk1nS0drdVpTNHNYRzRnSUM4dklHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpTa2dZblYwSUhkbElHNWxaV1FnZEc4Z1kyaGxZMnNnYUdWeVpTQjBiMjhnYVc0Z2IzSmtaWElnZEc4Z1kyRjBZMmhjYmlBZ0x5OGdkWEJrWVhSbGN5QmxibkYxWlhWbFpDQmllU0J6WlhSVGRHRjBaU0JqWVd4c1ltRmphM01nWVc1a0lHRnpZWEFnWTJGc2JITXVYRzRnSUhkb2FXeGxJQ2hrYVhKMGVVTnZiWEJ2Ym1WdWRITXViR1Z1WjNSb0lIeDhJR0Z6WVhCRmJuRjFaWFZsWkNrZ2UxeHVJQ0FnSUdsbUlDaGthWEowZVVOdmJYQnZibVZ1ZEhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCMllYSWdkSEpoYm5OaFkzUnBiMjRnUFNCU1pXRmpkRlZ3WkdGMFpYTkdiSFZ6YUZSeVlXNXpZV04wYVc5dUxtZGxkRkJ2YjJ4bFpDZ3BPMXh1SUNBZ0lDQWdkSEpoYm5OaFkzUnBiMjR1Y0dWeVptOXliU2h5ZFc1Q1lYUmphR1ZrVlhCa1lYUmxjeXdnYm5Wc2JDd2dkSEpoYm5OaFkzUnBiMjRwTzF4dUlDQWdJQ0FnVW1WaFkzUlZjR1JoZEdWelJteDFjMmhVY21GdWMyRmpkR2x2Ymk1eVpXeGxZWE5sS0hSeVlXNXpZV04wYVc5dUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9ZWE5oY0VWdWNYVmxkV1ZrS1NCN1hHNGdJQ0FnSUNCaGMyRndSVzV4ZFdWMVpXUWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lIWmhjaUJ4ZFdWMVpTQTlJR0Z6WVhCRFlXeHNZbUZqYTFGMVpYVmxPMXh1SUNBZ0lDQWdZWE5oY0VOaGJHeGlZV05yVVhWbGRXVWdQU0JEWVd4c1ltRmphMUYxWlhWbExtZGxkRkJ2YjJ4bFpDZ3BPMXh1SUNBZ0lDQWdjWFZsZFdVdWJtOTBhV1o1UVd4c0tDazdYRzRnSUNBZ0lDQkRZV3hzWW1GamExRjFaWFZsTG5KbGJHVmhjMlVvY1hWbGRXVXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZUdGNibVpzZFhOb1FtRjBZMmhsWkZWd1pHRjBaWE1nUFNCU1pXRmpkRkJsY21ZdWJXVmhjM1Z5WlNnblVtVmhZM1JWY0dSaGRHVnpKeXdnSjJac2RYTm9RbUYwWTJobFpGVndaR0YwWlhNbkxDQm1iSFZ6YUVKaGRHTm9aV1JWY0dSaGRHVnpLVHRjYmx4dUx5b3FYRzRnS2lCTllYSnJJR0VnWTI5dGNHOXVaVzUwSUdGeklHNWxaV1JwYm1jZ1lTQnlaWEpsYm1SbGNpd2dZV1JrYVc1bklHRnVJRzl3ZEdsdmJtRnNJR05oYkd4aVlXTnJJSFJ2SUdGY2JpQXFJR3hwYzNRZ2IyWWdablZ1WTNScGIyNXpJSGRvYVdOb0lIZHBiR3dnWW1VZ1pYaGxZM1YwWldRZ2IyNWpaU0IwYUdVZ2NtVnlaVzVrWlhJZ2IyTmpkWEp6TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJsYm5GMVpYVmxWWEJrWVhSbEtHTnZiWEJ2Ym1WdWRDa2dlMXh1SUNCbGJuTjFjbVZKYm1wbFkzUmxaQ2dwTzF4dVhHNGdJQzh2SUZaaGNtbHZkWE1nY0dGeWRITWdiMllnYjNWeUlHTnZaR1VnS0hOMVkyZ2dZWE1nVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUW5jMXh1SUNBdkx5QmZjbVZ1WkdWeVZtRnNhV1JoZEdWa1EyOXRjRzl1Wlc1MEtTQmhjM04xYldVZ2RHaGhkQ0JqWVd4c2N5QjBieUJ5Wlc1a1pYSWdZWEpsYmlkMElHNWxjM1JsWkR0Y2JpQWdMeThnZG1WeWFXWjVJSFJvWVhRZ2RHaGhkQ2R6SUhSb1pTQmpZWE5sTGlBb1ZHaHBjeUJwY3lCallXeHNaV1FnWW5rZ1pXRmphQ0IwYjNBdGJHVjJaV3dnZFhCa1lYUmxYRzRnSUM4dklHWjFibU4wYVc5dUxDQnNhV3RsSUhObGRGQnliM0J6TENCelpYUlRkR0YwWlN3Z1ptOXlZMlZWY0dSaGRHVXNJR1YwWXk0N0lHTnlaV0YwYVc5dUlHRnVaRnh1SUNBdkx5QmtaWE4wY25WamRHbHZiaUJ2WmlCMGIzQXRiR1YyWld3Z1kyOXRjRzl1Wlc1MGN5QnBjeUJuZFdGeVpHVmtJR2x1SUZKbFlXTjBUVzkxYm5RdUtWeHVYRzRnSUdsbUlDZ2hZbUYwWTJocGJtZFRkSEpoZEdWbmVTNXBjMEpoZEdOb2FXNW5WWEJrWVhSbGN5a2dlMXh1SUNBZ0lHSmhkR05vYVc1blUzUnlZWFJsWjNrdVltRjBZMmhsWkZWd1pHRjBaWE1vWlc1eGRXVjFaVlZ3WkdGMFpTd2dZMjl0Y0c5dVpXNTBLVHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmx4dUlDQmthWEowZVVOdmJYQnZibVZ1ZEhNdWNIVnphQ2hqYjIxd2IyNWxiblFwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVZ1Y1hWbGRXVWdZU0JqWVd4c1ltRmpheUIwYnlCaVpTQnlkVzRnWVhRZ2RHaGxJR1Z1WkNCdlppQjBhR1VnWTNWeWNtVnVkQ0JpWVhSamFHbHVaeUJqZVdOc1pTNGdWR2h5YjNkelhHNGdLaUJwWmlCdWJ5QjFjR1JoZEdWeklHRnlaU0JqZFhKeVpXNTBiSGtnWW1WcGJtY2djR1Z5Wm05eWJXVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmhjMkZ3S0dOaGJHeGlZV05yTENCamIyNTBaWGgwS1NCN1hHNGdJQ0ZpWVhSamFHbHVaMU4wY21GMFpXZDVMbWx6UW1GMFkyaHBibWRWY0dSaGRHVnpJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wVlhCa1lYUmxjeTVoYzJGd09pQkRZVzVjWENkMElHVnVjWFZsZFdVZ1lXNGdZWE5oY0NCallXeHNZbUZqYXlCcGJpQmhJR052Ym5SbGVIUWdkMmhsY21VbklDc2dKM1Z3WkdGMFpYTWdZWEpsSUc1dmRDQmlaV2x1WnlCaVlYUmphR1ZrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ1lYTmhjRU5oYkd4aVlXTnJVWFZsZFdVdVpXNXhkV1YxWlNoallXeHNZbUZqYXl3Z1kyOXVkR1Y0ZENrN1hHNGdJR0Z6WVhCRmJuRjFaWFZsWkNBOUlIUnlkV1U3WEc1OVhHNWNiblpoY2lCU1pXRmpkRlZ3WkdGMFpYTkpibXBsWTNScGIyNGdQU0I3WEc0Z0lHbHVhbVZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dU9pQm1kVzVqZEdsdmJpQW9VbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjRwSUh0Y2JpQWdJQ0FoVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0Z1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUlZjR1JoZEdWek9pQnRkWE4wSUhCeWIzWnBaR1VnWVNCeVpXTnZibU5wYkdVZ2RISmhibk5oWTNScGIyNGdZMnhoYzNNbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1Z6TGxKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjRnUFNCU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJqdGNiaUFnZlN4Y2JseHVJQ0JwYm1wbFkzUkNZWFJqYUdsdVoxTjBjbUYwWldkNU9pQm1kVzVqZEdsdmJpQW9YMkpoZEdOb2FXNW5VM1J5WVhSbFoza3BJSHRjYmlBZ0lDQWhYMkpoZEdOb2FXNW5VM1J5WVhSbFoza2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JWY0dSaGRHVnpPaUJ0ZFhOMElIQnliM1pwWkdVZ1lTQmlZWFJqYUdsdVp5QnpkSEpoZEdWbmVTY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FoS0hSNWNHVnZaaUJmWW1GMFkyaHBibWRUZEhKaGRHVm5lUzVpWVhSamFHVmtWWEJrWVhSbGN5QTlQVDBnSjJaMWJtTjBhVzl1SnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUlZjR1JoZEdWek9pQnRkWE4wSUhCeWIzWnBaR1VnWVNCaVlYUmphR1ZrVlhCa1lYUmxjeWdwSUdaMWJtTjBhVzl1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDRW9kSGx3Wlc5bUlGOWlZWFJqYUdsdVoxTjBjbUYwWldkNUxtbHpRbUYwWTJocGJtZFZjR1JoZEdWeklEMDlQU0FuWW05dmJHVmhiaWNwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFZYQmtZWFJsY3pvZ2JYVnpkQ0J3Y205MmFXUmxJR0Z1SUdselFtRjBZMmhwYm1kVmNHUmhkR1Z6SUdKdmIyeGxZVzRnWVhSMGNtbGlkWFJsSnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHSmhkR05vYVc1blUzUnlZWFJsWjNrZ1BTQmZZbUYwWTJocGJtZFRkSEpoZEdWbmVUdGNiaUFnZlZ4dWZUdGNibHh1ZG1GeUlGSmxZV04wVlhCa1lYUmxjeUE5SUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWVdOMElISmxabVZ5Wlc1alpYTWdZRkpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNWdJSFZ6YVc1bklIUm9hWE1nY0hKdmNHVnlkSGtnYVc0Z2IzSmtaWEpjYmlBZ0lDb2dkRzhnWVd4c2IzY2daR1Z3Wlc1a1pXNWplU0JwYm1wbFkzUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJqb2diblZzYkN4Y2JseHVJQ0JpWVhSamFHVmtWWEJrWVhSbGN6b2dZbUYwWTJobFpGVndaR0YwWlhNc1hHNGdJR1Z1Y1hWbGRXVlZjR1JoZEdVNklHVnVjWFZsZFdWVmNHUmhkR1VzWEc0Z0lHWnNkWE5vUW1GMFkyaGxaRlZ3WkdGMFpYTTZJR1pzZFhOb1FtRjBZMmhsWkZWd1pHRjBaWE1zWEc0Z0lHbHVhbVZqZEdsdmJqb2dVbVZoWTNSVmNHUmhkR1Z6U1c1cVpXTjBhVzl1TEZ4dUlDQmhjMkZ3T2lCaGMyRndYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVlhCa1lYUmxjenNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFZlcnNpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gJzAuMTQuMic7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFNWR0RPTVByb3BlcnR5Q29uZmlnXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG5cbnZhciBNVVNUX1VTRV9BVFRSSUJVVEUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfQVRUUklCVVRFO1xuXG52YXIgTlMgPSB7XG4gIHhsaW5rOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsXG4gIHhtbDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSdcbn07XG5cbnZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IHtcbiAgUHJvcGVydGllczoge1xuICAgIGNsaXBQYXRoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgY3g6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBjeTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBkeDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZmlsbDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZpbGxPcGFjaXR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZm9udEZhbWlseTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZvbnRTaXplOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZng6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmeTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGdyYWRpZW50VHJhbnNmb3JtOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZ3JhZGllbnRVbml0czogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1hcmtlckVuZDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1hcmtlck1pZDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1hcmtlclN0YXJ0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgb2Zmc2V0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgb3BhY2l0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHBhdHRlcm5Db250ZW50VW5pdHM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBwYXR0ZXJuVW5pdHM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBwb2ludHM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHJ4OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcnk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzcHJlYWRNZXRob2Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdG9wQ29sb3I6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdG9wT3BhY2l0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHN0cm9rZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHN0cm9rZURhc2hhcnJheTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHN0cm9rZUxpbmVjYXA6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdHJva2VPcGFjaXR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3Ryb2tlV2lkdGg6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB0ZXh0QW5jaG9yOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgdHJhbnNmb3JtOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgdmVyc2lvbjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHZpZXdCb3g6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4MTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHgyOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhsaW5rQWN0dWF0ZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhsaW5rQXJjcm9sZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhsaW5rSHJlZjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhsaW5rUm9sZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhsaW5rU2hvdzogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhsaW5rVGl0bGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua1R5cGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bWxCYXNlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeG1sTGFuZzogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhtbFNwYWNlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeTE6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB5MjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHk6IE1VU1RfVVNFX0FUVFJJQlVURVxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiB7XG4gICAgeGxpbmtBY3R1YXRlOiBOUy54bGluayxcbiAgICB4bGlua0FyY3JvbGU6IE5TLnhsaW5rLFxuICAgIHhsaW5rSHJlZjogTlMueGxpbmssXG4gICAgeGxpbmtSb2xlOiBOUy54bGluayxcbiAgICB4bGlua1Nob3c6IE5TLnhsaW5rLFxuICAgIHhsaW5rVGl0bGU6IE5TLnhsaW5rLFxuICAgIHhsaW5rVHlwZTogTlMueGxpbmssXG4gICAgeG1sQmFzZTogTlMueG1sLFxuICAgIHhtbExhbmc6IE5TLnhtbCxcbiAgICB4bWxTcGFjZTogTlMueG1sXG4gIH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7XG4gICAgY2xpcFBhdGg6ICdjbGlwLXBhdGgnLFxuICAgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICAgIGZvbnRTaXplOiAnZm9udC1zaXplJyxcbiAgICBncmFkaWVudFRyYW5zZm9ybTogJ2dyYWRpZW50VHJhbnNmb3JtJyxcbiAgICBncmFkaWVudFVuaXRzOiAnZ3JhZGllbnRVbml0cycsXG4gICAgbWFya2VyRW5kOiAnbWFya2VyLWVuZCcsXG4gICAgbWFya2VyTWlkOiAnbWFya2VyLW1pZCcsXG4gICAgbWFya2VyU3RhcnQ6ICdtYXJrZXItc3RhcnQnLFxuICAgIHBhdHRlcm5Db250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuICAgIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAgICBzcHJlYWRNZXRob2Q6ICdzcHJlYWRNZXRob2QnLFxuICAgIHN0b3BDb2xvcjogJ3N0b3AtY29sb3InLFxuICAgIHN0b3BPcGFjaXR5OiAnc3RvcC1vcGFjaXR5JyxcbiAgICBzdHJva2VEYXNoYXJyYXk6ICdzdHJva2UtZGFzaGFycmF5JyxcbiAgICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxuICAgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG4gICAgc3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLFxuICAgIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hvcicsXG4gICAgdmlld0JveDogJ3ZpZXdCb3gnLFxuICAgIHhsaW5rQWN0dWF0ZTogJ3hsaW5rOmFjdHVhdGUnLFxuICAgIHhsaW5rQXJjcm9sZTogJ3hsaW5rOmFyY3JvbGUnLFxuICAgIHhsaW5rSHJlZjogJ3hsaW5rOmhyZWYnLFxuICAgIHhsaW5rUm9sZTogJ3hsaW5rOnJvbGUnLFxuICAgIHhsaW5rU2hvdzogJ3hsaW5rOnNob3cnLFxuICAgIHhsaW5rVGl0bGU6ICd4bGluazp0aXRsZScsXG4gICAgeGxpbmtUeXBlOiAneGxpbms6dHlwZScsXG4gICAgeG1sQmFzZTogJ3htbDpiYXNlJyxcbiAgICB4bWxMYW5nOiAneG1sOmxhbmcnLFxuICAgIHhtbFNwYWNlOiAneG1sOnNwYWNlJ1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0RPTVByb3BlcnR5Q29uZmlnOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTZWxlY3RFdmVudFBsdWdpblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnB1dFNlbGVjdGlvbicpO1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG52YXIgZ2V0QWN0aXZlRWxlbWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL2dldEFjdGl2ZUVsZW1lbnQnKTtcbnZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1aXJlKCcuL2lzVGV4dElucHV0RWxlbWVudCcpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcbnZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xuXG52YXIgc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8PSAxMTtcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIHNlbGVjdDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU2VsZWN0OiBudWxsIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TZWxlY3RDYXB0dXJlOiBudWxsIH0pXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcEJsdXIsIHRvcExldmVsVHlwZXMudG9wQ29udGV4dE1lbnUsIHRvcExldmVsVHlwZXMudG9wRm9jdXMsIHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd24sIHRvcExldmVsVHlwZXMudG9wTW91c2VVcCwgdG9wTGV2ZWxUeXBlcy50b3BTZWxlY3Rpb25DaGFuZ2VdXG4gIH1cbn07XG5cbnZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbnZhciBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xudmFyIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xudmFyIG1vdXNlRG93biA9IGZhbHNlO1xuXG4vLyBUcmFjayB3aGV0aGVyIGEgbGlzdGVuZXIgZXhpc3RzIGZvciB0aGlzIHBsdWdpbi4gSWYgbm9uZSBleGlzdCwgd2UgZG9cbi8vIG5vdCBleHRyYWN0IGV2ZW50cy5cbnZhciBoYXNMaXN0ZW5lciA9IGZhbHNlO1xudmFyIE9OX1NFTEVDVF9LRVkgPSBrZXlPZih7IG9uU2VsZWN0OiBudWxsIH0pO1xuXG4vKipcbiAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICpcbiAqIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJvd3NlcnMsIGJ1dFxuICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFNlbGVjdGlvbihub2RlKSB7XG4gIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsXG4gICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kXG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgYW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsXG4gICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgfTtcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50RWxlbWVudDogcmFuZ2UucGFyZW50RWxlbWVudCgpLFxuICAgICAgdGV4dDogcmFuZ2UudGV4dCxcbiAgICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsXG4gICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQncyBjaGFuZ2VkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuICogQHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhXG4gIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIEluIEhUTUw1LCBzZWxlY3RcbiAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZVxuICAvLyB3b24ndCBkaXNwYXRjaC5cbiAgaWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuXG4gIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuICBpZiAoIWxhc3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSkge1xuICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uO1xuXG4gICAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2VsZWN0LCBhY3RpdmVFbGVtZW50SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgICBzeW50aGV0aWNFdmVudC50eXBlID0gJ3NlbGVjdCc7XG4gICAgc3ludGhldGljRXZlbnQudGFyZ2V0ID0gYWN0aXZlRWxlbWVudDtcblxuICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhzeW50aGV0aWNFdmVudCk7XG5cbiAgICByZXR1cm4gc3ludGhldGljRXZlbnQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvblNlbGVjdGAgZXZlbnQgdGhhdCBub3JtYWxpemVzIHNlbGVjdCBldmVudHNcbiAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG4gKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRleHRhcmVhXG4gKiAtIGNvbnRlbnRFZGl0YWJsZVxuICpcbiAqIFRoaXMgZGlmZmVycyBmcm9tIG5hdGl2ZSBicm93c2VyIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHdheXM6XG4gKiAtIEZpcmVzIG9uIGNvbnRlbnRFZGl0YWJsZSBmaWVsZHMgYXMgd2VsbCBhcyBpbnB1dHMuXG4gKiAtIEZpcmVzIGZvciBjb2xsYXBzZWQgc2VsZWN0aW9uLlxuICogLSBGaXJlcyBhZnRlciB1c2VyIGlucHV0LlxuICovXG52YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSB7XG5cbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgaWYgKCFoYXNMaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICAgIC8vIFRyYWNrIHRoZSBpbnB1dCBub2RlIHRoYXQgaGFzIGZvY3VzLlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzOlxuICAgICAgICBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRvcExldmVsVGFyZ2V0KSB8fCB0b3BMZXZlbFRhcmdldC5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJykge1xuICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSB0b3BMZXZlbFRhcmdldDtcbiAgICAgICAgICBhY3RpdmVFbGVtZW50SUQgPSB0b3BMZXZlbFRhcmdldElEO1xuICAgICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEJsdXI6XG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xuICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxlIHRoZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlXG4gICAgICAvLyBzZW1hbnRpY3Mgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuXG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VEb3duOlxuICAgICAgICBtb3VzZURvd24gPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDb250ZXh0TWVudTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZVVwOlxuICAgICAgICBtb3VzZURvd24gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgICAgIC8vIENocm9tZSBhbmQgSUUgZmlyZSBub24tc3RhbmRhcmQgZXZlbnQgd2hlbiBzZWxlY3Rpb24gaXMgY2hhbmdlZCAoYW5kXG4gICAgICAvLyBzb21ldGltZXMgd2hlbiBpdCBoYXNuJ3QpLiBJRSdzIGV2ZW50IGZpcmVzIG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3RcbiAgICAgIC8vIHRvIGtleSBhbmQgaW5wdXQgZXZlbnRzIG9uIGRlbGV0aW9uLCBzbyB3ZSBkaXNjYXJkIGl0LlxuICAgICAgLy9cbiAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBzdXBwb3J0IHNlbGVjdGlvbmNoYW5nZSwgc28gY2hlY2sgc2VsZWN0aW9uIHN0YXR1c1xuICAgICAgLy8gYWZ0ZXIgZWFjaCBrZXkgZW50cnkuIFRoZSBzZWxlY3Rpb24gY2hhbmdlcyBhZnRlciBrZXlkb3duIGFuZCBiZWZvcmVcbiAgICAgIC8vIGtleXVwLCBidXQgd2UgY2hlY2sgb24ga2V5ZG93biBhcyB3ZWxsIGluIHRoZSBjYXNlIG9mIGhvbGRpbmcgZG93biBhXG4gICAgICAvLyBrZXksIHdoZW4gbXVsdGlwbGUga2V5ZG93biBldmVudHMgYXJlIGZpcmVkIGJ1dCBvbmx5IG9uZSBrZXl1cCBpcy5cbiAgICAgIC8vIFRoaXMgaXMgYWxzbyBvdXIgYXBwcm9hY2ggZm9yIElFIGhhbmRsaW5nLCBmb3IgdGhlIHJlYXNvbiBhYm92ZS5cbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTZWxlY3Rpb25DaGFuZ2U6XG4gICAgICAgIGlmIChza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleURvd246XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5VXA6XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09IE9OX1NFTEVDVF9LRVkpIHtcbiAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFNlcnZlclJlYWN0Um9vdEluZGV4XG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTaXplIG9mIHRoZSByZWFjdFJvb3QgSUQgc3BhY2UuIFdlIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJzIGZvciBSZWFjdCByb290XG4gKiBJRHMgYW5kIGlmIHRoZXJlJ3MgYSBjb2xsaXNpb24gdGhlIGV2ZW50cyBhbmQgRE9NIHVwZGF0ZSBzeXN0ZW0gd2lsbFxuICogZ2V0IGNvbmZ1c2VkLiBJbiB0aGUgZnV0dXJlIHdlIG5lZWQgYSB3YXkgdG8gZ2VuZXJhdGUgR1VJRHMgYnV0IGZvclxuICogbm93IHRoaXMgd2lsbCB3b3JrIG9uIGEgc21hbGxlciBzY2FsZS5cbiAqL1xudmFyIEdMT0JBTF9NT1VOVF9QT0lOVF9NQVggPSBNYXRoLnBvdygyLCA1Myk7XG5cbnZhciBTZXJ2ZXJSZWFjdFJvb3RJbmRleCA9IHtcbiAgY3JlYXRlUmVhY3RSb290SW5kZXg6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiBHTE9CQUxfTU9VTlRfUE9JTlRfTUFYKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXJ2ZXJSZWFjdFJvb3RJbmRleDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFNpbXBsZUV2ZW50UGx1Z2luXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJ2ZianMvbGliL0V2ZW50TGlzdGVuZXInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNDbGlwYm9hcmRFdmVudCcpO1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xudmFyIFN5bnRoZXRpY0ZvY3VzRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0ZvY3VzRXZlbnQnKTtcbnZhciBTeW50aGV0aWNLZXlib2FyZEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNLZXlib2FyZEV2ZW50Jyk7XG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpO1xudmFyIFN5bnRoZXRpY0RyYWdFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRHJhZ0V2ZW50Jyk7XG52YXIgU3ludGhldGljVG91Y2hFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVG91Y2hFdmVudCcpO1xudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcbnZhciBTeW50aGV0aWNXaGVlbEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNXaGVlbEV2ZW50Jyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG5cbnZhciB0b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcztcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIGFib3J0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25BYm9ydDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQWJvcnRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBibHVyOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25CbHVyOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25CbHVyQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY2FuUGxheToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ2FuUGxheTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ2FuUGxheUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNhblBsYXlUaHJvdWdoOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DYW5QbGF5VGhyb3VnaDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ2FuUGxheVRocm91Z2hDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjbGljazoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ2xpY2s6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNsaWNrQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY29udGV4dE1lbnU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNvbnRleHRNZW51OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Db250ZXh0TWVudUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNvcHk6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNvcHk6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNvcHlDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjdXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkN1dDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ3V0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZG91YmxlQ2xpY2s6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRvdWJsZUNsaWNrOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Eb3VibGVDbGlja0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWc6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWc6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnRW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnRW5kOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnRW5kQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ0VudGVyOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnRW50ZXI6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdFbnRlckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdFeGl0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnRXhpdDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ0V4aXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnTGVhdmU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdMZWF2ZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ0xlYXZlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ092ZXI6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdPdmVyOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnT3ZlckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdTdGFydDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ1N0YXJ0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnU3RhcnRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcm9wOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ecm9wOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Ecm9wQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHVyYXRpb25DaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkR1cmF0aW9uQ2hhbmdlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EdXJhdGlvbkNoYW5nZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGVtcHRpZWQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkVtcHRpZWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkVtcHRpZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBlbmNyeXB0ZWQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkVuY3J5cHRlZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRW5jcnlwdGVkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZW5kZWQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkVuZGVkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25FbmRlZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGVycm9yOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FcnJvcjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRXJyb3JDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBmb2N1czoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRm9jdXM6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkZvY3VzQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbklucHV0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25JbnB1dENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGtleURvd246IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbktleURvd246IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbktleURvd25DYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBrZXlQcmVzczoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uS2V5UHJlc3M6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbktleVByZXNzQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAga2V5VXA6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbktleVVwOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25LZXlVcENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGxvYWQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkxvYWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkxvYWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBsb2FkZWREYXRhOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Mb2FkZWREYXRhOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Mb2FkZWREYXRhQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbG9hZGVkTWV0YWRhdGE6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkxvYWRlZE1ldGFkYXRhOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Mb2FkZWRNZXRhZGF0YUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGxvYWRTdGFydDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTG9hZFN0YXJ0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Mb2FkU3RhcnRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICAvLyBOb3RlOiBXZSBkbyBub3QgYWxsb3cgbGlzdGVuaW5nIHRvIG1vdXNlT3ZlciBldmVudHMuIEluc3RlYWQsIHVzZSB0aGVcbiAgLy8gb25Nb3VzZUVudGVyL29uTW91c2VMZWF2ZSBjcmVhdGVkIGJ5IGBFbnRlckxlYXZlRXZlbnRQbHVnaW5gLlxuICBtb3VzZURvd246IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbk1vdXNlRG93bjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTW91c2VEb3duQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbW91c2VNb3ZlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZU1vdmU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlTW92ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIG1vdXNlT3V0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZU91dDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTW91c2VPdXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBtb3VzZU92ZXI6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbk1vdXNlT3ZlcjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTW91c2VPdmVyQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbW91c2VVcDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VVcDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTW91c2VVcENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHBhc3RlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25QYXN0ZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUGFzdGVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwYXVzZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUGF1c2U6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblBhdXNlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcGxheToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUGxheTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUGxheUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHBsYXlpbmc6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblBsYXlpbmc6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblBsYXlpbmdDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwcm9ncmVzczoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUHJvZ3Jlc3M6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblByb2dyZXNzQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcmF0ZUNoYW5nZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUmF0ZUNoYW5nZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUmF0ZUNoYW5nZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHJlc2V0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25SZXNldDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUmVzZXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzY3JvbGw6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblNjcm9sbDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU2Nyb2xsQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc2Vla2VkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TZWVrZWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblNlZWtlZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHNlZWtpbmc6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblNlZWtpbmc6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblNlZWtpbmdDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzdGFsbGVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TdGFsbGVkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TdGFsbGVkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc3VibWl0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TdWJtaXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblN1Ym1pdENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHN1c3BlbmQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblN1c3BlbmQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblN1c3BlbmRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB0aW1lVXBkYXRlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25UaW1lVXBkYXRlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25UaW1lVXBkYXRlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdG91Y2hDYW5jZWw6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblRvdWNoQ2FuY2VsOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Ub3VjaENhbmNlbENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRvdWNoRW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ub3VjaEVuZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVG91Y2hFbmRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB0b3VjaE1vdmU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblRvdWNoTW92ZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVG91Y2hNb3ZlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdG91Y2hTdGFydDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVG91Y2hTdGFydDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVG91Y2hTdGFydENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHZvbHVtZUNoYW5nZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVm9sdW1lQ2hhbmdlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Wb2x1bWVDaGFuZ2VDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB3YWl0aW5nOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25XYWl0aW5nOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25XYWl0aW5nQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgd2hlZWw6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbldoZWVsOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25XaGVlbENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH1cbn07XG5cbnZhciB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7XG4gIHRvcEFib3J0OiBldmVudFR5cGVzLmFib3J0LFxuICB0b3BCbHVyOiBldmVudFR5cGVzLmJsdXIsXG4gIHRvcENhblBsYXk6IGV2ZW50VHlwZXMuY2FuUGxheSxcbiAgdG9wQ2FuUGxheVRocm91Z2g6IGV2ZW50VHlwZXMuY2FuUGxheVRocm91Z2gsXG4gIHRvcENsaWNrOiBldmVudFR5cGVzLmNsaWNrLFxuICB0b3BDb250ZXh0TWVudTogZXZlbnRUeXBlcy5jb250ZXh0TWVudSxcbiAgdG9wQ29weTogZXZlbnRUeXBlcy5jb3B5LFxuICB0b3BDdXQ6IGV2ZW50VHlwZXMuY3V0LFxuICB0b3BEb3VibGVDbGljazogZXZlbnRUeXBlcy5kb3VibGVDbGljayxcbiAgdG9wRHJhZzogZXZlbnRUeXBlcy5kcmFnLFxuICB0b3BEcmFnRW5kOiBldmVudFR5cGVzLmRyYWdFbmQsXG4gIHRvcERyYWdFbnRlcjogZXZlbnRUeXBlcy5kcmFnRW50ZXIsXG4gIHRvcERyYWdFeGl0OiBldmVudFR5cGVzLmRyYWdFeGl0LFxuICB0b3BEcmFnTGVhdmU6IGV2ZW50VHlwZXMuZHJhZ0xlYXZlLFxuICB0b3BEcmFnT3ZlcjogZXZlbnRUeXBlcy5kcmFnT3ZlcixcbiAgdG9wRHJhZ1N0YXJ0OiBldmVudFR5cGVzLmRyYWdTdGFydCxcbiAgdG9wRHJvcDogZXZlbnRUeXBlcy5kcm9wLFxuICB0b3BEdXJhdGlvbkNoYW5nZTogZXZlbnRUeXBlcy5kdXJhdGlvbkNoYW5nZSxcbiAgdG9wRW1wdGllZDogZXZlbnRUeXBlcy5lbXB0aWVkLFxuICB0b3BFbmNyeXB0ZWQ6IGV2ZW50VHlwZXMuZW5jcnlwdGVkLFxuICB0b3BFbmRlZDogZXZlbnRUeXBlcy5lbmRlZCxcbiAgdG9wRXJyb3I6IGV2ZW50VHlwZXMuZXJyb3IsXG4gIHRvcEZvY3VzOiBldmVudFR5cGVzLmZvY3VzLFxuICB0b3BJbnB1dDogZXZlbnRUeXBlcy5pbnB1dCxcbiAgdG9wS2V5RG93bjogZXZlbnRUeXBlcy5rZXlEb3duLFxuICB0b3BLZXlQcmVzczogZXZlbnRUeXBlcy5rZXlQcmVzcyxcbiAgdG9wS2V5VXA6IGV2ZW50VHlwZXMua2V5VXAsXG4gIHRvcExvYWQ6IGV2ZW50VHlwZXMubG9hZCxcbiAgdG9wTG9hZGVkRGF0YTogZXZlbnRUeXBlcy5sb2FkZWREYXRhLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogZXZlbnRUeXBlcy5sb2FkZWRNZXRhZGF0YSxcbiAgdG9wTG9hZFN0YXJ0OiBldmVudFR5cGVzLmxvYWRTdGFydCxcbiAgdG9wTW91c2VEb3duOiBldmVudFR5cGVzLm1vdXNlRG93bixcbiAgdG9wTW91c2VNb3ZlOiBldmVudFR5cGVzLm1vdXNlTW92ZSxcbiAgdG9wTW91c2VPdXQ6IGV2ZW50VHlwZXMubW91c2VPdXQsXG4gIHRvcE1vdXNlT3ZlcjogZXZlbnRUeXBlcy5tb3VzZU92ZXIsXG4gIHRvcE1vdXNlVXA6IGV2ZW50VHlwZXMubW91c2VVcCxcbiAgdG9wUGFzdGU6IGV2ZW50VHlwZXMucGFzdGUsXG4gIHRvcFBhdXNlOiBldmVudFR5cGVzLnBhdXNlLFxuICB0b3BQbGF5OiBldmVudFR5cGVzLnBsYXksXG4gIHRvcFBsYXlpbmc6IGV2ZW50VHlwZXMucGxheWluZyxcbiAgdG9wUHJvZ3Jlc3M6IGV2ZW50VHlwZXMucHJvZ3Jlc3MsXG4gIHRvcFJhdGVDaGFuZ2U6IGV2ZW50VHlwZXMucmF0ZUNoYW5nZSxcbiAgdG9wUmVzZXQ6IGV2ZW50VHlwZXMucmVzZXQsXG4gIHRvcFNjcm9sbDogZXZlbnRUeXBlcy5zY3JvbGwsXG4gIHRvcFNlZWtlZDogZXZlbnRUeXBlcy5zZWVrZWQsXG4gIHRvcFNlZWtpbmc6IGV2ZW50VHlwZXMuc2Vla2luZyxcbiAgdG9wU3RhbGxlZDogZXZlbnRUeXBlcy5zdGFsbGVkLFxuICB0b3BTdWJtaXQ6IGV2ZW50VHlwZXMuc3VibWl0LFxuICB0b3BTdXNwZW5kOiBldmVudFR5cGVzLnN1c3BlbmQsXG4gIHRvcFRpbWVVcGRhdGU6IGV2ZW50VHlwZXMudGltZVVwZGF0ZSxcbiAgdG9wVG91Y2hDYW5jZWw6IGV2ZW50VHlwZXMudG91Y2hDYW5jZWwsXG4gIHRvcFRvdWNoRW5kOiBldmVudFR5cGVzLnRvdWNoRW5kLFxuICB0b3BUb3VjaE1vdmU6IGV2ZW50VHlwZXMudG91Y2hNb3ZlLFxuICB0b3BUb3VjaFN0YXJ0OiBldmVudFR5cGVzLnRvdWNoU3RhcnQsXG4gIHRvcFZvbHVtZUNoYW5nZTogZXZlbnRUeXBlcy52b2x1bWVDaGFuZ2UsXG4gIHRvcFdhaXRpbmc6IGV2ZW50VHlwZXMud2FpdGluZyxcbiAgdG9wV2hlZWw6IGV2ZW50VHlwZXMud2hlZWxcbn07XG5cbmZvciAodmFyIHR5cGUgaW4gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnKSB7XG4gIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0eXBlXS5kZXBlbmRlbmNpZXMgPSBbdHlwZV07XG59XG5cbnZhciBPTl9DTElDS19LRVkgPSBrZXlPZih7IG9uQ2xpY2s6IG51bGwgfSk7XG52YXIgb25DbGlja0xpc3RlbmVycyA9IHt9O1xuXG52YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7XG5cbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcExldmVsVHlwZV07XG4gICAgaWYgKCFkaXNwYXRjaENvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBFdmVudENvbnN0cnVjdG9yO1xuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQWJvcnQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ2FuUGxheTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDYW5QbGF5VGhyb3VnaDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEdXJhdGlvbkNoYW5nZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BFbXB0aWVkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEVuY3J5cHRlZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BFbmRlZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BFcnJvcjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BJbnB1dDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BMb2FkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcExvYWRlZERhdGE6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTG9hZGVkTWV0YWRhdGE6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTG9hZFN0YXJ0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBhdXNlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBsYXk6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUGxheWluZzpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQcm9ncmVzczpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BSYXRlQ2hhbmdlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFJlc2V0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFNlZWtlZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTZWVraW5nOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFN0YWxsZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU3VibWl0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFN1c3BlbmQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVGltZVVwZGF0ZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BWb2x1bWVDaGFuZ2U6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wV2FpdGluZzpcbiAgICAgICAgLy8gSFRNTCBFdmVudHNcbiAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRleC5odG1sI2V2ZW50cy0wXG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5UHJlc3M6XG4gICAgICAgIC8vIEZpcmVGb3ggY3JlYXRlcyBhIGtleXByZXNzIGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4gVGhpcyByZW1vdmVzXG4gICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVudGVyIGlzIGhvd2V2ZXIgYm90aCBwcmludGFibGUgYW5kXG4gICAgICAgIC8vIG5vbi1wcmludGFibGUuIE9uZSB3b3VsZCBleHBlY3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBpdCBpc24ndCkuXG4gICAgICAgIGlmIChnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5RG93bjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEJsdXI6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRm9jdXM6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNGb2N1c0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDbGljazpcbiAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQgb24gcmlnaHQgbW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlXG4gICAgICAgIC8vIHVud2FudGVkIGNsaWNrIGV2ZW50cy5cbiAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ29udGV4dE1lbnU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRG91YmxlQ2xpY2s6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VEb3duOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlTW92ZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU91dDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU92ZXI6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VVcDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWc6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ0VuZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnRW50ZXI6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ0V4aXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ0xlYXZlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdPdmVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdTdGFydDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcm9wOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRHJhZ0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BUb3VjaENhbmNlbDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BUb3VjaEVuZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BUb3VjaE1vdmU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hTdGFydDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFNjcm9sbDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1VJRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFdoZWVsOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljV2hlZWxFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ29weTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDdXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUGFzdGU6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgICFFdmVudENvbnN0cnVjdG9yID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZlbnQgdHlwZSwgYCVzYC4nLCB0b3BMZXZlbFR5cGUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgZXZlbnQgPSBFdmVudENvbnN0cnVjdG9yLmdldFBvb2xlZChkaXNwYXRjaENvbmZpZywgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICAgIHJldHVybiBldmVudDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgIC8vIE1vYmlsZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBwcm9wZXJseSBidWJibGUgY2xpY2sgZXZlbnRzIG9uXG4gICAgLy8gbm9uLWludGVyYWN0aXZlIGVsZW1lbnRzLCB3aGljaCBtZWFucyBkZWxlZ2F0ZWQgY2xpY2sgbGlzdGVuZXJzIGRvIG5vdFxuICAgIC8vIGZpcmUuIFRoZSB3b3JrYXJvdW5kIGZvciB0aGlzIGJ1ZyBpbnZvbHZlcyBhdHRhY2hpbmcgYW4gZW1wdHkgY2xpY2tcbiAgICAvLyBsaXN0ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09IE9OX0NMSUNLX0tFWSkge1xuICAgICAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUoaWQpO1xuICAgICAgaWYgKCFvbkNsaWNrTGlzdGVuZXJzW2lkXSkge1xuICAgICAgICBvbkNsaWNrTGlzdGVuZXJzW2lkXSA9IEV2ZW50TGlzdGVuZXIubGlzdGVuKG5vZGUsICdjbGljaycsIGVtcHR5RnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB3aWxsRGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSBPTl9DTElDS19LRVkpIHtcbiAgICAgIG9uQ2xpY2tMaXN0ZW5lcnNbaWRdLnJlbW92ZSgpO1xuICAgICAgZGVsZXRlIG9uQ2xpY2tMaXN0ZW5lcnNbaWRdO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpbXBsZUV2ZW50UGx1Z2luO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5VGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGTnBiWEJzWlVWMlpXNTBVR3gxWjJsdVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdSWFpsYm5SRGIyNXpkR0Z1ZEhNZ1BTQnlaWEYxYVhKbEtDY3VMMFYyWlc1MFEyOXVjM1JoYm5Sekp5azdYRzUyWVhJZ1JYWmxiblJNYVhOMFpXNWxjaUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDBWMlpXNTBUR2x6ZEdWdVpYSW5LVHRjYm5aaGNpQkZkbVZ1ZEZCeWIzQmhaMkYwYjNKeklEMGdjbVZ4ZFdseVpTZ25MaTlGZG1WdWRGQnliM0JoWjJGMGIzSnpKeWs3WEc1MllYSWdVbVZoWTNSTmIzVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOYjNWdWRDY3BPMXh1ZG1GeUlGTjViblJvWlhScFkwTnNhWEJpYjJGeVpFVjJaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVRlVzUwYUdWMGFXTkRiR2x3WW05aGNtUkZkbVZ1ZENjcE8xeHVkbUZ5SUZONWJuUm9aWFJwWTBWMlpXNTBJRDBnY21WeGRXbHlaU2duTGk5VGVXNTBhR1YwYVdORmRtVnVkQ2NwTzF4dWRtRnlJRk41Ym5Sb1pYUnBZMFp2WTNWelJYWmxiblFnUFNCeVpYRjFhWEpsS0NjdUwxTjViblJvWlhScFkwWnZZM1Z6UlhabGJuUW5LVHRjYm5aaGNpQlRlVzUwYUdWMGFXTkxaWGxpYjJGeVpFVjJaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVRlVzUwYUdWMGFXTkxaWGxpYjJGeVpFVjJaVzUwSnlrN1hHNTJZWElnVTNsdWRHaGxkR2xqVFc5MWMyVkZkbVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVM2x1ZEdobGRHbGpUVzkxYzJWRmRtVnVkQ2NwTzF4dWRtRnlJRk41Ym5Sb1pYUnBZMFJ5WVdkRmRtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlUzbHVkR2hsZEdsalJISmhaMFYyWlc1MEp5azdYRzUyWVhJZ1UzbHVkR2hsZEdsalZHOTFZMmhGZG1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VTNsdWRHaGxkR2xqVkc5MVkyaEZkbVZ1ZENjcE8xeHVkbUZ5SUZONWJuUm9aWFJwWTFWSlJYWmxiblFnUFNCeVpYRjFhWEpsS0NjdUwxTjViblJvWlhScFkxVkpSWFpsYm5RbktUdGNiblpoY2lCVGVXNTBhR1YwYVdOWGFHVmxiRVYyWlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlUZVc1MGFHVjBhV05YYUdWbGJFVjJaVzUwSnlrN1hHNWNiblpoY2lCbGJYQjBlVVoxYm1OMGFXOXVJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbEdkVzVqZEdsdmJpY3BPMXh1ZG1GeUlHZGxkRVYyWlc1MFEyaGhja052WkdVZ1BTQnlaWEYxYVhKbEtDY3VMMmRsZEVWMlpXNTBRMmhoY2tOdlpHVW5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JuWmhjaUJyWlhsUFppQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMnRsZVU5bUp5azdYRzVjYm5aaGNpQjBiM0JNWlhabGJGUjVjR1Z6SUQwZ1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN6dGNibHh1ZG1GeUlHVjJaVzUwVkhsd1pYTWdQU0I3WEc0Z0lHRmliM0owT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVCWW05eWREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVRV0p2Y25SRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JpYkhWeU9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1Q2JIVnlPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVDYkhWeVEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWTJGdVVHeGhlVG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVRMkZ1VUd4aGVUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVRMkZ1VUd4aGVVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdOaGJsQnNZWGxVYUhKdmRXZG9PaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNURZVzVRYkdGNVZHaHliM1ZuYURvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVEyRnVVR3hoZVZSb2NtOTFaMmhEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmpiR2xqYXpvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UTJ4cFkyczZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia05zYVdOclEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWTI5dWRHVjRkRTFsYm5VNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtOdmJuUmxlSFJOWlc1MU9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNURiMjUwWlhoMFRXVnVkVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHTnZjSGs2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia052Y0hrNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrTnZjSGxEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmpkWFE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia04xZERvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVEzVjBRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1pHOTFZbXhsUTJ4cFkyczZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrUnZkV0pzWlVOc2FXTnJPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVFYjNWaWJHVkRiR2xqYTBOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1J5WVdjNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXYzZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia1J5WVdkRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JrY21GblJXNWtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVjbUZuUlc1a09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUVjbUZuUlc1a1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWkhKaFowVnVkR1Z5T2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFY21GblJXNTBaWEk2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZEZiblJsY2tOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1J5WVdkRmVHbDBPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVjbUZuUlhocGREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSSEpoWjBWNGFYUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa2NtRm5UR1ZoZG1VNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZE1aV0YyWlRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJISmhaMHhsWVhabFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWkhKaFowOTJaWEk2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1J5WVdkUGRtVnlPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVFY21GblQzWmxja05oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHUnlZV2RUZEdGeWREb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJISmhaMU4wWVhKME9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUVjbUZuVTNSaGNuUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa2NtOXdPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVjbTl3T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RWNtOXdRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1pIVnlZWFJwYjI1RGFHRnVaMlU2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1IxY21GMGFXOXVRMmhoYm1kbE9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUVkWEpoZEdsdmJrTm9ZVzVuWlVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1Z0Y0hScFpXUTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrVnRjSFJwWldRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrVnRjSFJwWldSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JsYm1OeWVYQjBaV1E2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1Z1WTNKNWNIUmxaRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1Ulc1amNubHdkR1ZrUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaVzVrWldRNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtWdVpHVmtPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVGYm1SbFpFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdWeWNtOXlPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUZjbkp2Y2pvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJYSnliM0pEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQm1iMk4xY3pvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1Um05amRYTTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia1p2WTNWelEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYVc1d2RYUTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrbHVjSFYwT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1SmJuQjFkRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHdGxlVVJ2ZDI0NklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2Ymt0bGVVUnZkMjQ2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2Ymt0bGVVUnZkMjVEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQnJaWGxRY21WemN6b2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVMyVjVVSEpsYzNNNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrdGxlVkJ5WlhOelEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYTJWNVZYQTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrdGxlVlZ3T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TFpYbFZjRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHeHZZV1E2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia3h2WVdRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJreHZZV1JEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQnNiMkZrWldSRVlYUmhPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU1iMkZrWldSRVlYUmhPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVNYjJGa1pXUkVZWFJoUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdiRzloWkdWa1RXVjBZV1JoZEdFNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2Ymt4dllXUmxaRTFsZEdGa1lYUmhPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVNYjJGa1pXUk5aWFJoWkdGMFlVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUd4dllXUlRkR0Z5ZERvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VEc5aFpGTjBZWEowT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TWIyRmtVM1JoY25SRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0F2THlCT2IzUmxPaUJYWlNCa2J5QnViM1FnWVd4c2IzY2diR2x6ZEdWdWFXNW5JSFJ2SUcxdmRYTmxUM1psY2lCbGRtVnVkSE11SUVsdWMzUmxZV1FzSUhWelpTQjBhR1ZjYmlBZ0x5OGdiMjVOYjNWelpVVnVkR1Z5TDI5dVRXOTFjMlZNWldGMlpTQmpjbVZoZEdWa0lHSjVJR0JGYm5SbGNreGxZWFpsUlhabGJuUlFiSFZuYVc1Z0xseHVJQ0J0YjNWelpVUnZkMjQ2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFJHOTNiam9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VFc5MWMyVkViM2R1UTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdiVzkxYzJWTmIzWmxPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU5iM1Z6WlUxdmRtVTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFRXOTJaVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHMXZkWE5sVDNWME9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1TmIzVnpaVTkxZERvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVRXOTFjMlZQZFhSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J0YjNWelpVOTJaWEk2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFQzWmxjam9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VFc5MWMyVlBkbVZ5UTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdiVzkxYzJWVmNEb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVRXOTFjMlZWY0RvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVRXOTFjMlZWY0VOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSEJoYzNSbE9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1UVlYTjBaVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VUdGemRHVkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCd1lYVnpaVG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVR0YxYzJVNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsQmhkWE5sUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjR3hoZVRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VUd4aGVUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVVR3hoZVVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSEJzWVhscGJtYzZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsQnNZWGxwYm1jNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsQnNZWGxwYm1kRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J3Y205bmNtVnpjem9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVSEp2WjNKbGMzTTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZibEJ5YjJkeVpYTnpRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2NtRjBaVU5vWVc1blpUb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVVtRjBaVU5vWVc1blpUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVVbUYwWlVOb1lXNW5aVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lISmxjMlYwT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVTWlhObGREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVVbVZ6WlhSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J6WTNKdmJHdzZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsTmpjbTlzYkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVUyTnliMnhzUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjMlZsYTJWa09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VFpXVnJaV1E2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxObFpXdGxaRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lITmxaV3RwYm1jNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxObFpXdHBibWM2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxObFpXdHBibWREWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQnpkR0ZzYkdWa09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VGRHRnNiR1ZrT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1VGRHRnNiR1ZrUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjM1ZpYldsME9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VGRXSnRhWFE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxOMVltMXBkRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lITjFjM0JsYm1RNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxOMWMzQmxibVE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxOMWMzQmxibVJEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQjBhVzFsVlhCa1lYUmxPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVVhVzFsVlhCa1lYUmxPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVVYVcxbFZYQmtZWFJsUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkRzkxWTJoRFlXNWpaV3c2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibFJ2ZFdOb1EyRnVZMlZzT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1VWIzVmphRU5oYm1ObGJFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhSdmRXTm9SVzVrT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVVYjNWamFFVnVaRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1Vkc5MVkyaEZibVJEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQjBiM1ZqYUUxdmRtVTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsUnZkV05vVFc5MlpUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVWRzkxWTJoTmIzWmxRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2RHOTFZMmhUZEdGeWREb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVZHOTFZMmhUZEdGeWREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVWRzkxWTJoVGRHRnlkRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lIWnZiSFZ0WlVOb1lXNW5aVG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVWbTlzZFcxbFEyaGhibWRsT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1V2IyeDFiV1ZEYUdGdVoyVkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCM1lXbDBhVzVuT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVYWVdsMGFXNW5PaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVYWVdsMGFXNW5RMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2QyaGxaV3c2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibGRvWldWc09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVhhR1ZsYkVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQjBiM0JNWlhabGJFVjJaVzUwYzFSdlJHbHpjR0YwWTJoRGIyNW1hV2NnUFNCN1hHNGdJSFJ2Y0VGaWIzSjBPaUJsZG1WdWRGUjVjR1Z6TG1GaWIzSjBMRnh1SUNCMGIzQkNiSFZ5T2lCbGRtVnVkRlI1Y0dWekxtSnNkWElzWEc0Z0lIUnZjRU5oYmxCc1lYazZJR1YyWlc1MFZIbHdaWE11WTJGdVVHeGhlU3hjYmlBZ2RHOXdRMkZ1VUd4aGVWUm9jbTkxWjJnNklHVjJaVzUwVkhsd1pYTXVZMkZ1VUd4aGVWUm9jbTkxWjJnc1hHNGdJSFJ2Y0VOc2FXTnJPaUJsZG1WdWRGUjVjR1Z6TG1Oc2FXTnJMRnh1SUNCMGIzQkRiMjUwWlhoMFRXVnVkVG9nWlhabGJuUlVlWEJsY3k1amIyNTBaWGgwVFdWdWRTeGNiaUFnZEc5d1EyOXdlVG9nWlhabGJuUlVlWEJsY3k1amIzQjVMRnh1SUNCMGIzQkRkWFE2SUdWMlpXNTBWSGx3WlhNdVkzVjBMRnh1SUNCMGIzQkViM1ZpYkdWRGJHbGphem9nWlhabGJuUlVlWEJsY3k1a2IzVmliR1ZEYkdsamF5eGNiaUFnZEc5d1JISmhaem9nWlhabGJuUlVlWEJsY3k1a2NtRm5MRnh1SUNCMGIzQkVjbUZuUlc1a09pQmxkbVZ1ZEZSNWNHVnpMbVJ5WVdkRmJtUXNYRzRnSUhSdmNFUnlZV2RGYm5SbGNqb2daWFpsYm5SVWVYQmxjeTVrY21GblJXNTBaWElzWEc0Z0lIUnZjRVJ5WVdkRmVHbDBPaUJsZG1WdWRGUjVjR1Z6TG1SeVlXZEZlR2wwTEZ4dUlDQjBiM0JFY21GblRHVmhkbVU2SUdWMlpXNTBWSGx3WlhNdVpISmhaMHhsWVhabExGeHVJQ0IwYjNCRWNtRm5UM1psY2pvZ1pYWmxiblJVZVhCbGN5NWtjbUZuVDNabGNpeGNiaUFnZEc5d1JISmhaMU4wWVhKME9pQmxkbVZ1ZEZSNWNHVnpMbVJ5WVdkVGRHRnlkQ3hjYmlBZ2RHOXdSSEp2Y0RvZ1pYWmxiblJVZVhCbGN5NWtjbTl3TEZ4dUlDQjBiM0JFZFhKaGRHbHZia05vWVc1blpUb2daWFpsYm5SVWVYQmxjeTVrZFhKaGRHbHZia05vWVc1blpTeGNiaUFnZEc5d1JXMXdkR2xsWkRvZ1pYWmxiblJVZVhCbGN5NWxiWEIwYVdWa0xGeHVJQ0IwYjNCRmJtTnllWEIwWldRNklHVjJaVzUwVkhsd1pYTXVaVzVqY25sd2RHVmtMRnh1SUNCMGIzQkZibVJsWkRvZ1pYWmxiblJVZVhCbGN5NWxibVJsWkN4Y2JpQWdkRzl3UlhKeWIzSTZJR1YyWlc1MFZIbHdaWE11WlhKeWIzSXNYRzRnSUhSdmNFWnZZM1Z6T2lCbGRtVnVkRlI1Y0dWekxtWnZZM1Z6TEZ4dUlDQjBiM0JKYm5CMWREb2daWFpsYm5SVWVYQmxjeTVwYm5CMWRDeGNiaUFnZEc5d1MyVjVSRzkzYmpvZ1pYWmxiblJVZVhCbGN5NXJaWGxFYjNkdUxGeHVJQ0IwYjNCTFpYbFFjbVZ6Y3pvZ1pYWmxiblJVZVhCbGN5NXJaWGxRY21WemN5eGNiaUFnZEc5d1MyVjVWWEE2SUdWMlpXNTBWSGx3WlhNdWEyVjVWWEFzWEc0Z0lIUnZjRXh2WVdRNklHVjJaVzUwVkhsd1pYTXViRzloWkN4Y2JpQWdkRzl3VEc5aFpHVmtSR0YwWVRvZ1pYWmxiblJVZVhCbGN5NXNiMkZrWldSRVlYUmhMRnh1SUNCMGIzQk1iMkZrWldSTlpYUmhaR0YwWVRvZ1pYWmxiblJVZVhCbGN5NXNiMkZrWldSTlpYUmhaR0YwWVN4Y2JpQWdkRzl3VEc5aFpGTjBZWEowT2lCbGRtVnVkRlI1Y0dWekxteHZZV1JUZEdGeWRDeGNiaUFnZEc5d1RXOTFjMlZFYjNkdU9pQmxkbVZ1ZEZSNWNHVnpMbTF2ZFhObFJHOTNiaXhjYmlBZ2RHOXdUVzkxYzJWTmIzWmxPaUJsZG1WdWRGUjVjR1Z6TG0xdmRYTmxUVzkyWlN4Y2JpQWdkRzl3VFc5MWMyVlBkWFE2SUdWMlpXNTBWSGx3WlhNdWJXOTFjMlZQZFhRc1hHNGdJSFJ2Y0UxdmRYTmxUM1psY2pvZ1pYWmxiblJVZVhCbGN5NXRiM1Z6WlU5MlpYSXNYRzRnSUhSdmNFMXZkWE5sVlhBNklHVjJaVzUwVkhsd1pYTXViVzkxYzJWVmNDeGNiaUFnZEc5d1VHRnpkR1U2SUdWMlpXNTBWSGx3WlhNdWNHRnpkR1VzWEc0Z0lIUnZjRkJoZFhObE9pQmxkbVZ1ZEZSNWNHVnpMbkJoZFhObExGeHVJQ0IwYjNCUWJHRjVPaUJsZG1WdWRGUjVjR1Z6TG5Cc1lYa3NYRzRnSUhSdmNGQnNZWGxwYm1jNklHVjJaVzUwVkhsd1pYTXVjR3hoZVdsdVp5eGNiaUFnZEc5d1VISnZaM0psYzNNNklHVjJaVzUwVkhsd1pYTXVjSEp2WjNKbGMzTXNYRzRnSUhSdmNGSmhkR1ZEYUdGdVoyVTZJR1YyWlc1MFZIbHdaWE11Y21GMFpVTm9ZVzVuWlN4Y2JpQWdkRzl3VW1WelpYUTZJR1YyWlc1MFZIbHdaWE11Y21WelpYUXNYRzRnSUhSdmNGTmpjbTlzYkRvZ1pYWmxiblJVZVhCbGN5NXpZM0p2Ykd3c1hHNGdJSFJ2Y0ZObFpXdGxaRG9nWlhabGJuUlVlWEJsY3k1elpXVnJaV1FzWEc0Z0lIUnZjRk5sWld0cGJtYzZJR1YyWlc1MFZIbHdaWE11YzJWbGEybHVaeXhjYmlBZ2RHOXdVM1JoYkd4bFpEb2daWFpsYm5SVWVYQmxjeTV6ZEdGc2JHVmtMRnh1SUNCMGIzQlRkV0p0YVhRNklHVjJaVzUwVkhsd1pYTXVjM1ZpYldsMExGeHVJQ0IwYjNCVGRYTndaVzVrT2lCbGRtVnVkRlI1Y0dWekxuTjFjM0JsYm1Rc1hHNGdJSFJ2Y0ZScGJXVlZjR1JoZEdVNklHVjJaVzUwVkhsd1pYTXVkR2x0WlZWd1pHRjBaU3hjYmlBZ2RHOXdWRzkxWTJoRFlXNWpaV3c2SUdWMlpXNTBWSGx3WlhNdWRHOTFZMmhEWVc1alpXd3NYRzRnSUhSdmNGUnZkV05vUlc1a09pQmxkbVZ1ZEZSNWNHVnpMblJ2ZFdOb1JXNWtMRnh1SUNCMGIzQlViM1ZqYUUxdmRtVTZJR1YyWlc1MFZIbHdaWE11ZEc5MVkyaE5iM1psTEZ4dUlDQjBiM0JVYjNWamFGTjBZWEowT2lCbGRtVnVkRlI1Y0dWekxuUnZkV05vVTNSaGNuUXNYRzRnSUhSdmNGWnZiSFZ0WlVOb1lXNW5aVG9nWlhabGJuUlVlWEJsY3k1MmIyeDFiV1ZEYUdGdVoyVXNYRzRnSUhSdmNGZGhhWFJwYm1jNklHVjJaVzUwVkhsd1pYTXVkMkZwZEdsdVp5eGNiaUFnZEc5d1YyaGxaV3c2SUdWMlpXNTBWSGx3WlhNdWQyaGxaV3hjYm4wN1hHNWNibVp2Y2lBb2RtRnlJSFI1Y0dVZ2FXNGdkRzl3VEdWMlpXeEZkbVZ1ZEhOVWIwUnBjM0JoZEdOb1EyOXVabWxuS1NCN1hHNGdJSFJ2Y0V4bGRtVnNSWFpsYm5SelZHOUVhWE53WVhSamFFTnZibVpwWjF0MGVYQmxYUzVrWlhCbGJtUmxibU5wWlhNZ1BTQmJkSGx3WlYwN1hHNTlYRzVjYm5aaGNpQlBUbDlEVEVsRFMxOUxSVmtnUFNCclpYbFBaaWg3SUc5dVEyeHBZMnM2SUc1MWJHd2dmU2s3WEc1MllYSWdiMjVEYkdsamEweHBjM1JsYm1WeWN5QTlJSHQ5TzF4dVhHNTJZWElnVTJsdGNHeGxSWFpsYm5SUWJIVm5hVzRnUFNCN1hHNWNiaUFnWlhabGJuUlVlWEJsY3pvZ1pYWmxiblJVZVhCbGN5eGNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSdmNFeGxkbVZzVkhsd1pTQlNaV052Y21RZ1puSnZiU0JnUlhabGJuUkRiMjV6ZEdGdWRITmdMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVYyWlc1MFZHRnlaMlYwZlNCMGIzQk1aWFpsYkZSaGNtZGxkQ0JVYUdVZ2JHbHpkR1Z1YVc1bklHTnZiWEJ2Ym1WdWRDQnliMjkwSUc1dlpHVXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMGIzQk1aWFpsYkZSaGNtZGxkRWxFSUVsRUlHOW1JR0IwYjNCTVpYWmxiRlJoY21kbGRHQXVYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCdVlYUnBkbVZGZG1WdWRDQk9ZWFJwZG1VZ1luSnZkM05sY2lCbGRtVnVkQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdLbjBnUVc0Z1lXTmpkVzExYkdGMGFXOXVJRzltSUhONWJuUm9aWFJwWXlCbGRtVnVkSE11WEc0Z0lDQXFJRUJ6WldVZ2UwVjJaVzUwVUd4MVoybHVTSFZpTG1WNGRISmhZM1JGZG1WdWRITjlYRzRnSUNBcUwxeHVJQ0JsZUhSeVlXTjBSWFpsYm5Sek9pQm1kVzVqZEdsdmJpQW9kRzl3VEdWMlpXeFVlWEJsTENCMGIzQk1aWFpsYkZSaGNtZGxkQ3dnZEc5d1RHVjJaV3hVWVhKblpYUkpSQ3dnYm1GMGFYWmxSWFpsYm5Rc0lHNWhkR2wyWlVWMlpXNTBWR0Z5WjJWMEtTQjdYRzRnSUNBZ2RtRnlJR1JwYzNCaGRHTm9RMjl1Wm1sbklEMGdkRzl3VEdWMlpXeEZkbVZ1ZEhOVWIwUnBjM0JoZEdOb1EyOXVabWxuVzNSdmNFeGxkbVZzVkhsd1pWMDdYRzRnSUNBZ2FXWWdLQ0ZrYVhOd1lYUmphRU52Ym1acFp5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJGZG1WdWRFTnZibk4wY25WamRHOXlPMXh1SUNBZ0lITjNhWFJqYUNBb2RHOXdUR1YyWld4VWVYQmxLU0I3WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1FXSnZjblE2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1EyRnVVR3hoZVRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkRZVzVRYkdGNVZHaHliM1ZuYURwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkVkWEpoZEdsdmJrTm9ZVzVuWlRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkZiWEIwYVdWa09seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVZ1WTNKNWNIUmxaRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRmJtUmxaRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRmNuSnZjanBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCSmJuQjFkRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCTWIyRmtPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0V4dllXUmxaRVJoZEdFNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdURzloWkdWa1RXVjBZV1JoZEdFNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdURzloWkZOMFlYSjBPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZCaGRYTmxPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZCc1lYazZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VUd4aGVXbHVaenBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCUWNtOW5jbVZ6Y3pwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlNZWFJsUTJoaGJtZGxPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZKbGMyVjBPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZObFpXdGxaRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVFpXVnJhVzVuT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGTjBZV3hzWldRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdVM1ZpYldsME9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRk4xYzNCbGJtUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VkdsdFpWVndaR0YwWlRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQldiMngxYldWRGFHRnVaMlU2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1YyRnBkR2x1WnpwY2JpQWdJQ0FnSUNBZ0x5OGdTRlJOVENCRmRtVnVkSE5jYmlBZ0lDQWdJQ0FnTHk4Z1FITmxaU0JvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5b2RHMXNOUzlwYm1SbGVDNW9kRzFzSTJWMlpXNTBjeTB3WEc0Z0lDQWdJQ0FnSUVWMlpXNTBRMjl1YzNSeWRXTjBiM0lnUFNCVGVXNTBhR1YwYVdORmRtVnVkRHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UzJWNVVISmxjM002WEc0Z0lDQWdJQ0FnSUM4dklFWnBjbVZHYjNnZ1kzSmxZWFJsY3lCaElHdGxlWEJ5WlhOeklHVjJaVzUwSUdadmNpQm1kVzVqZEdsdmJpQnJaWGx6SUhSdmJ5NGdWR2hwY3lCeVpXMXZkbVZ6WEc0Z0lDQWdJQ0FnSUM4dklIUm9aU0IxYm5kaGJuUmxaQ0JyWlhsd2NtVnpjeUJsZG1WdWRITXVJRVZ1ZEdWeUlHbHpJR2h2ZDJWMlpYSWdZbTkwYUNCd2NtbHVkR0ZpYkdVZ1lXNWtYRzRnSUNBZ0lDQWdJQzh2SUc1dmJpMXdjbWx1ZEdGaWJHVXVJRTl1WlNCM2IzVnNaQ0JsZUhCbFkzUWdWR0ZpSUhSdklHSmxJR0Z6SUhkbGJHd2dLR0oxZENCcGRDQnBjMjRuZENrdVhHNGdJQ0FnSUNBZ0lHbG1JQ2huWlhSRmRtVnVkRU5vWVhKRGIyUmxLRzVoZEdsMlpVVjJaVzUwS1NBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2S2lCbVlXeHNjeUIwYUhKdmRXZG9JQ292WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1MyVjVSRzkzYmpwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkxaWGxWY0RwY2JpQWdJQ0FnSUNBZ1JYWmxiblJEYjI1emRISjFZM1J2Y2lBOUlGTjViblJvWlhScFkwdGxlV0p2WVhKa1JYWmxiblE3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VKc2RYSTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Um05amRYTTZYRzRnSUNBZ0lDQWdJRVYyWlc1MFEyOXVjM1J5ZFdOMGIzSWdQU0JUZVc1MGFHVjBhV05HYjJOMWMwVjJaVzUwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRGJHbGphenBjYmlBZ0lDQWdJQ0FnTHk4Z1JtbHlaV1p2ZUNCamNtVmhkR1Z6SUdFZ1kyeHBZMnNnWlhabGJuUWdiMjRnY21sbmFIUWdiVzkxYzJVZ1kyeHBZMnR6TGlCVWFHbHpJSEpsYlc5MlpYTWdkR2hsWEc0Z0lDQWdJQ0FnSUM4dklIVnVkMkZ1ZEdWa0lHTnNhV05ySUdWMlpXNTBjeTVjYmlBZ0lDQWdJQ0FnYVdZZ0tHNWhkR2wyWlVWMlpXNTBMbUoxZEhSdmJpQTlQVDBnTWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBdktpQm1ZV3hzY3lCMGFISnZkV2RvSUNvdlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdRMjl1ZEdWNGRFMWxiblU2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1JHOTFZbXhsUTJ4cFkyczZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VFc5MWMyVkViM2R1T2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFMXZkWE5sVFc5MlpUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JOYjNWelpVOTFkRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCTmIzVnpaVTkyWlhJNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdUVzkxYzJWVmNEcGNiaUFnSUNBZ0lDQWdSWFpsYm5SRGIyNXpkSEoxWTNSdmNpQTlJRk41Ym5Sb1pYUnBZMDF2ZFhObFJYWmxiblE3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VSeVlXYzZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UkhKaFowVnVaRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRWNtRm5SVzUwWlhJNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdSSEpoWjBWNGFYUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UkhKaFoweGxZWFpsT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFUnlZV2RQZG1WeU9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVJ5WVdkVGRHRnlkRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRWNtOXdPbHh1SUNBZ0lDQWdJQ0JGZG1WdWRFTnZibk4wY25WamRHOXlJRDBnVTNsdWRHaGxkR2xqUkhKaFowVjJaVzUwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVWIzVmphRU5oYm1ObGJEcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JVYjNWamFFVnVaRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVWIzVmphRTF2ZG1VNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoVGRHRnlkRHBjYmlBZ0lDQWdJQ0FnUlhabGJuUkRiMjV6ZEhKMVkzUnZjaUE5SUZONWJuUm9aWFJwWTFSdmRXTm9SWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGTmpjbTlzYkRwY2JpQWdJQ0FnSUNBZ1JYWmxiblJEYjI1emRISjFZM1J2Y2lBOUlGTjViblJvWlhScFkxVkpSWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGZG9aV1ZzT2x4dUlDQWdJQ0FnSUNCRmRtVnVkRU52Ym5OMGNuVmpkRzl5SUQwZ1UzbHVkR2hsZEdsalYyaGxaV3hGZG1WdWREdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdRMjl3ZVRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkRkWFE2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1VHRnpkR1U2WEc0Z0lDQWdJQ0FnSUVWMlpXNTBRMjl1YzNSeWRXTjBiM0lnUFNCVGVXNTBhR1YwYVdORGJHbHdZbTloY21SRmRtVnVkRHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVJQ0FnSUNGRmRtVnVkRU52Ym5OMGNuVmpkRzl5SUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMU5wYlhCc1pVVjJaVzUwVUd4MVoybHVPaUJWYm1oaGJtUnNaV1FnWlhabGJuUWdkSGx3WlN3Z1lDVnpZQzRuTENCMGIzQk1aWFpsYkZSNWNHVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0IyWVhJZ1pYWmxiblFnUFNCRmRtVnVkRU52Ym5OMGNuVmpkRzl5TG1kbGRGQnZiMnhsWkNoa2FYTndZWFJqYUVOdmJtWnBaeXdnZEc5d1RHVjJaV3hVWVhKblpYUkpSQ3dnYm1GMGFYWmxSWFpsYm5Rc0lHNWhkR2wyWlVWMlpXNTBWR0Z5WjJWMEtUdGNiaUFnSUNCRmRtVnVkRkJ5YjNCaFoyRjBiM0p6TG1GalkzVnRkV3hoZEdWVWQyOVFhR0Z6WlVScGMzQmhkR05vWlhNb1pYWmxiblFwTzF4dUlDQWdJSEpsZEhWeWJpQmxkbVZ1ZER0Y2JpQWdmU3hjYmx4dUlDQmthV1JRZFhSTWFYTjBaVzVsY2pvZ1puVnVZM1JwYjI0Z0tHbGtMQ0J5WldkcGMzUnlZWFJwYjI1T1lXMWxMQ0JzYVhOMFpXNWxjaWtnZTF4dUlDQWdJQzh2SUUxdlltbHNaU0JUWVdaaGNta2daRzlsY3lCdWIzUWdabWx5WlNCd2NtOXdaWEpzZVNCaWRXSmliR1VnWTJ4cFkyc2daWFpsYm5SeklHOXVYRzRnSUNBZ0x5OGdibTl1TFdsdWRHVnlZV04wYVhabElHVnNaVzFsYm5SekxDQjNhR2xqYUNCdFpXRnVjeUJrWld4bFoyRjBaV1FnWTJ4cFkyc2diR2x6ZEdWdVpYSnpJR1J2SUc1dmRGeHVJQ0FnSUM4dklHWnBjbVV1SUZSb1pTQjNiM0pyWVhKdmRXNWtJR1p2Y2lCMGFHbHpJR0oxWnlCcGJuWnZiSFpsY3lCaGRIUmhZMmhwYm1jZ1lXNGdaVzF3ZEhrZ1kyeHBZMnRjYmlBZ0lDQXZMeUJzYVhOMFpXNWxjaUJ2YmlCMGFHVWdkR0Z5WjJWMElHNXZaR1V1WEc0Z0lDQWdhV1lnS0hKbFoybHpkSEpoZEdsdmJrNWhiV1VnUFQwOUlFOU9YME5NU1VOTFgwdEZXU2tnZTF4dUlDQWdJQ0FnZG1GeUlHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2FXUXBPMXh1SUNBZ0lDQWdhV1lnS0NGdmJrTnNhV05yVEdsemRHVnVaWEp6VzJsa1hTa2dlMXh1SUNBZ0lDQWdJQ0J2YmtOc2FXTnJUR2x6ZEdWdVpYSnpXMmxrWFNBOUlFVjJaVzUwVEdsemRHVnVaWEl1YkdsemRHVnVLRzV2WkdVc0lDZGpiR2xqYXljc0lHVnRjSFI1Um5WdVkzUnBiMjRwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCM2FXeHNSR1ZzWlhSbFRHbHpkR1Z1WlhJNklHWjFibU4wYVc5dUlDaHBaQ3dnY21WbmFYTjBjbUYwYVc5dVRtRnRaU2tnZTF4dUlDQWdJR2xtSUNoeVpXZHBjM1J5WVhScGIyNU9ZVzFsSUQwOVBTQlBUbDlEVEVsRFMxOUxSVmtwSUh0Y2JpQWdJQ0FnSUc5dVEyeHBZMnRNYVhOMFpXNWxjbk5iYVdSZExuSmxiVzkyWlNncE8xeHVJQ0FnSUNBZ1pHVnNaWFJsSUc5dVEyeHBZMnRNYVhOMFpXNWxjbk5iYVdSZE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRk5wYlhCc1pVVjJaVzUwVUd4MVoybHVPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NsaXBib2FyZC1hcGlzL1xuICovXG52YXIgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGNsaXBib2FyZERhdGE6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAnY2xpcGJvYXJkRGF0YScgaW4gZXZlbnQgPyBldmVudC5jbGlwYm9hcmREYXRhIDogd2luZG93LmNsaXBib2FyZERhdGE7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQ2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljQ29tcG9zaXRpb25FdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBvc2l0aW9uZXZlbnRzXG4gKi9cbnZhciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuICBkYXRhOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQ29tcG9zaXRpb25FdmVudCwgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljRHJhZ0V2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIERyYWdFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBEcmFnRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGRhdGFUcmFuc2ZlcjogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRHJhZ0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuICB0eXBlOiBudWxsLFxuICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3aGVuIGRpc3BhdGNoaW5nOyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlXG4gIGN1cnJlbnRUYXJnZXQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsLFxuICBldmVudFBoYXNlOiBudWxsLFxuICBidWJibGVzOiBudWxsLFxuICBjYW5jZWxhYmxlOiBudWxsLFxuICB0aW1lU3RhbXA6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcbiAgfSxcbiAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCxcbiAgaXNUcnVzdGVkOiBudWxsXG59O1xuXG4vKipcbiAqIFN5bnRoZXRpYyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5IGluIHJlc3BvbnNlIHRvIGFcbiAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuXG4gKlxuICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJlZHVjZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2VcbiAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZVxuICogZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0Y2hlZC4gVXNlcnMgdGhhdFxuICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQgaW52b2tlIGBwZXJzaXN0YC5cbiAqXG4gKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1wbGVtZW50IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5XG4gKiBub3JtYWxpemluZyBicm93c2VyIHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbXBsZW1lbnQgYVxuICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmlnO1xuICB0aGlzLmRpc3BhdGNoTWFya2VyID0gZGlzcGF0Y2hNYXJrZXI7XG4gIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcbiAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcbiAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG5cbiAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcbiAgICBpZiAoIUludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YXIgbm9ybWFsaXplID0gSW50ZXJmYWNlW3Byb3BOYW1lXTtcbiAgICBpZiAobm9ybWFsaXplKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6ZShuYXRpdmVFdmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbcHJvcE5hbWVdID0gbmF0aXZlRXZlbnRbcHJvcE5hbWVdO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkZWZhdWx0UHJldmVudGVkID0gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCAhPSBudWxsID8gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCA6IG5hdGl2ZUV2ZW50LnJldHVyblZhbHVlID09PSBmYWxzZTtcbiAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlO1xuICB9XG4gIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG59XG5cbmFzc2lnbihTeW50aGV0aWNFdmVudC5wcm90b3R5cGUsIHtcblxuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7XG4gICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZXZlbnQsICdUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVxcJ3JlICcgKyAnc2VlaW5nIHRoaXMsIHlvdVxcJ3JlIGNhbGxpbmcgYHByZXZlbnREZWZhdWx0YCBvbiBhICcgKyAncmVsZWFzZWQvbnVsbGlmaWVkIHN5bnRoZXRpYyBldmVudC4gVGhpcyBpcyBhIG5vLW9wLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZXZlbnQsICdUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVxcJ3JlICcgKyAnc2VlaW5nIHRoaXMsIHlvdVxcJ3JlIGNhbGxpbmcgYHN0b3BQcm9wYWdhdGlvbmAgb24gYSAnICsgJ3JlbGVhc2VkL251bGxpZmllZCBzeW50aGV0aWMgZXZlbnQuIFRoaXMgaXMgYSBuby1vcC4gU2VlICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFkZGluZ1xuICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcbiAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAgKi9cbiAgcGVyc2lzdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuICAgICAgdGhpc1twcm9wTmFtZV0gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoQ29uZmlnID0gbnVsbDtcbiAgICB0aGlzLmRpc3BhdGNoTWFya2VyID0gbnVsbDtcbiAgICB0aGlzLm5hdGl2ZUV2ZW50ID0gbnVsbDtcbiAgfVxuXG59KTtcblxuU3ludGhldGljRXZlbnQuSW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7XG5cbi8qKlxuICogSGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5nIHN1YmNsYXNzZXMuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3NcbiAqIEBwYXJhbSB7P29iamVjdH0gSW50ZXJmYWNlXG4gKi9cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyA9IGZ1bmN0aW9uIChDbGFzcywgSW50ZXJmYWNlKSB7XG4gIHZhciBTdXBlciA9IHRoaXM7XG5cbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgYXNzaWduKHByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTtcbiAgQ2xhc3MucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzcztcblxuICBDbGFzcy5JbnRlcmZhY2UgPSBhc3NpZ24oe30sIFN1cGVyLkludGVyZmFjZSwgSW50ZXJmYWNlKTtcbiAgQ2xhc3MuYXVnbWVudENsYXNzID0gU3VwZXIuYXVnbWVudENsYXNzO1xuXG4gIFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDbGFzcywgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcbn07XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhTeW50aGV0aWNFdmVudCwgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVRlVzUwYUdWMGFXTkZkbVZ1ZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVM2x1ZEdobGRHbGpSWFpsYm5SY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVRzl2YkdWa1EyeGhjM01nUFNCeVpYRjFhWEpsS0NjdUwxQnZiMnhsWkVOc1lYTnpKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmxiWEIwZVVaMWJtTjBhVzl1SUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlpXMXdkSGxHZFc1amRHbHZiaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JpOHFLbHh1SUNvZ1FHbHVkR1Z5Wm1GalpTQkZkbVZ1ZEZ4dUlDb2dRSE5sWlNCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOUVUMDB0VEdWMlpXd3RNeTFGZG1WdWRITXZYRzRnS2k5Y2JuWmhjaUJGZG1WdWRFbHVkR1Z5Wm1GalpTQTlJSHRjYmlBZ2RIbHdaVG9nYm5Wc2JDeGNiaUFnTHk4Z1kzVnljbVZ1ZEZSaGNtZGxkQ0JwY3lCelpYUWdkMmhsYmlCa2FYTndZWFJqYUdsdVp6c2dibThnZFhObElHbHVJR052Y0hscGJtY2dhWFFnYUdWeVpWeHVJQ0JqZFhKeVpXNTBWR0Z5WjJWME9pQmxiWEIwZVVaMWJtTjBhVzl1TG5Sb1lYUlNaWFIxY201elRuVnNiQ3hjYmlBZ1pYWmxiblJRYUdGelpUb2diblZzYkN4Y2JpQWdZblZpWW14bGN6b2diblZzYkN4Y2JpQWdZMkZ1WTJWc1lXSnNaVG9nYm5Wc2JDeGNiaUFnZEdsdFpWTjBZVzF3T2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaWFpsYm5RdWRHbHRaVk4wWVcxd0lIeDhJRVJoZEdVdWJtOTNLQ2s3WEc0Z0lIMHNYRzRnSUdSbFptRjFiSFJRY21WMlpXNTBaV1E2SUc1MWJHd3NYRzRnSUdselZISjFjM1JsWkRvZ2JuVnNiRnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQlRlVzUwYUdWMGFXTWdaWFpsYm5SeklHRnlaU0JrYVhOd1lYUmphR1ZrSUdKNUlHVjJaVzUwSUhCc2RXZHBibk1zSUhSNWNHbGpZV3hzZVNCcGJpQnlaWE53YjI1elpTQjBieUJoWEc0Z0tpQjBiM0F0YkdWMlpXd2daWFpsYm5RZ1pHVnNaV2RoZEdsdmJpQm9ZVzVrYkdWeUxseHVJQ3BjYmlBcUlGUm9aWE5sSUhONWMzUmxiWE1nYzJodmRXeGtJR2RsYm1WeVlXeHNlU0IxYzJVZ2NHOXZiR2x1WnlCMGJ5QnlaV1IxWTJVZ2RHaGxJR1p5WlhGMVpXNWplU0J2WmlCbllYSmlZV2RsWEc0Z0tpQmpiMnhzWldOMGFXOXVMaUJVYUdVZ2MzbHpkR1Z0SUhOb2IzVnNaQ0JqYUdWamF5QmdhWE5RWlhKemFYTjBaVzUwWUNCMGJ5QmtaWFJsY20xcGJtVWdkMmhsZEdobGNpQjBhR1ZjYmlBcUlHVjJaVzUwSUhOb2IzVnNaQ0JpWlNCeVpXeGxZWE5sWkNCcGJuUnZJSFJvWlNCd2IyOXNJR0ZtZEdWeUlHSmxhVzVuSUdScGMzQmhkR05vWldRdUlGVnpaWEp6SUhSb1lYUmNiaUFxSUc1bFpXUWdZU0J3WlhKemFYTjBaV1FnWlhabGJuUWdjMmh2ZFd4a0lHbHVkbTlyWlNCZ2NHVnljMmx6ZEdBdVhHNGdLbHh1SUNvZ1UzbHVkR2hsZEdsaklHVjJaVzUwY3lBb1lXNWtJSE4xWW1Oc1lYTnpaWE1wSUdsdGNHeGxiV1Z1ZENCMGFHVWdSRTlOSUV4bGRtVnNJRE1nUlhabGJuUnpJRUZRU1NCaWVWeHVJQ29nYm05eWJXRnNhWHBwYm1jZ1luSnZkM05sY2lCeGRXbHlhM011SUZOMVltTnNZWE56WlhNZ1pHOGdibTkwSUc1bFkyVnpjMkZ5YVd4NUlHaGhkbVVnZEc4Z2FXMXdiR1Z0Wlc1MElHRmNiaUFxSUVSUFRTQnBiblJsY21aaFkyVTdJR04xYzNSdmJTQmhjSEJzYVdOaGRHbHZiaTF6Y0dWamFXWnBZeUJsZG1WdWRITWdZMkZ1SUdGc2MyOGdjM1ZpWTJ4aGMzTWdkR2hwY3k1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWkdsemNHRjBZMmhEYjI1bWFXY2dRMjl1Wm1sbmRYSmhkR2x2YmlCMWMyVmtJSFJ2SUdScGMzQmhkR05vSUhSb2FYTWdaWFpsYm5RdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaR2x6Y0dGMFkyaE5ZWEpyWlhJZ1RXRnlhMlZ5SUdsa1pXNTBhV1o1YVc1bklIUm9aU0JsZG1WdWRDQjBZWEpuWlhRdVhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdibUYwYVhabFJYWmxiblFnVG1GMGFYWmxJR0p5YjNkelpYSWdaWFpsYm5RdVhHNGdLaTljYm1aMWJtTjBhVzl1SUZONWJuUm9aWFJwWTBWMlpXNTBLR1JwYzNCaGRHTm9RMjl1Wm1sbkxDQmthWE53WVhSamFFMWhjbXRsY2l3Z2JtRjBhWFpsUlhabGJuUXNJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBLU0I3WEc0Z0lIUm9hWE11WkdsemNHRjBZMmhEYjI1bWFXY2dQU0JrYVhOd1lYUmphRU52Ym1acFp6dGNiaUFnZEdocGN5NWthWE53WVhSamFFMWhjbXRsY2lBOUlHUnBjM0JoZEdOb1RXRnlhMlZ5TzF4dUlDQjBhR2x6TG01aGRHbDJaVVYyWlc1MElEMGdibUYwYVhabFJYWmxiblE3WEc0Z0lIUm9hWE11ZEdGeVoyVjBJRDBnYm1GMGFYWmxSWFpsYm5SVVlYSm5aWFE3WEc0Z0lIUm9hWE11WTNWeWNtVnVkRlJoY21kbGRDQTlJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBPMXh1WEc0Z0lIWmhjaUJKYm5SbGNtWmhZMlVnUFNCMGFHbHpMbU52Ym5OMGNuVmpkRzl5TGtsdWRHVnlabUZqWlR0Y2JpQWdabTl5SUNoMllYSWdjSEp2Y0U1aGJXVWdhVzRnU1c1MFpYSm1ZV05sS1NCN1hHNGdJQ0FnYVdZZ0tDRkpiblJsY21aaFkyVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlHNXZjbTFoYkdsNlpTQTlJRWx1ZEdWeVptRmpaVnR3Y205d1RtRnRaVjA3WEc0Z0lDQWdhV1lnS0c1dmNtMWhiR2w2WlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjMXR3Y205d1RtRnRaVjBnUFNCdWIzSnRZV3hwZW1Vb2JtRjBhWFpsUlhabGJuUXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpXM0J5YjNCT1lXMWxYU0E5SUc1aGRHbDJaVVYyWlc1MFczQnliM0JPWVcxbFhUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQjJZWElnWkdWbVlYVnNkRkJ5WlhabGJuUmxaQ0E5SUc1aGRHbDJaVVYyWlc1MExtUmxabUYxYkhSUWNtVjJaVzUwWldRZ0lUMGdiblZzYkNBL0lHNWhkR2wyWlVWMlpXNTBMbVJsWm1GMWJIUlFjbVYyWlc1MFpXUWdPaUJ1WVhScGRtVkZkbVZ1ZEM1eVpYUjFjbTVXWVd4MVpTQTlQVDBnWm1Gc2MyVTdYRzRnSUdsbUlDaGtaV1poZFd4MFVISmxkbVZ1ZEdWa0tTQjdYRzRnSUNBZ2RHaHBjeTVwYzBSbFptRjFiSFJRY21WMlpXNTBaV1FnUFNCbGJYQjBlVVoxYm1OMGFXOXVMblJvWVhSU1pYUjFjbTV6VkhKMVpUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQjBhR2x6TG1selJHVm1ZWFZzZEZCeVpYWmxiblJsWkNBOUlHVnRjSFI1Um5WdVkzUnBiMjR1ZEdoaGRGSmxkSFZ5Ym5OR1lXeHpaVHRjYmlBZ2ZWeHVJQ0IwYUdsekxtbHpVSEp2Y0dGbllYUnBiMjVUZEc5d2NHVmtJRDBnWlcxd2RIbEdkVzVqZEdsdmJpNTBhR0YwVW1WMGRYSnVjMFpoYkhObE8xeHVmVnh1WEc1aGMzTnBaMjRvVTNsdWRHaGxkR2xqUlhabGJuUXVjSEp2ZEc5MGVYQmxMQ0I3WEc1Y2JpQWdjSEpsZG1WdWRFUmxabUYxYkhRNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjBhR2x6TG1SbFptRjFiSFJRY21WMlpXNTBaV1FnUFNCMGNuVmxPMXh1SUNBZ0lIWmhjaUJsZG1WdWRDQTlJSFJvYVhNdWJtRjBhWFpsUlhabGJuUTdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHVjJaVzUwTENBblZHaHBjeUJ6ZVc1MGFHVjBhV01nWlhabGJuUWdhWE1nY21WMWMyVmtJR1p2Y2lCd1pYSm1iM0p0WVc1alpTQnlaV0Z6YjI1ekxpQkpaaUI1YjNWY1hDZHlaU0FuSUNzZ0ozTmxaV2x1WnlCMGFHbHpMQ0I1YjNWY1hDZHlaU0JqWVd4c2FXNW5JR0J3Y21WMlpXNTBSR1ZtWVhWc2RHQWdiMjRnWVNBbklDc2dKM0psYkdWaGMyVmtMMjUxYkd4cFptbGxaQ0J6ZVc1MGFHVjBhV01nWlhabGJuUXVJRlJvYVhNZ2FYTWdZU0J1YnkxdmNDNGdVMlZsSUNjZ0t5QW5hSFIwY0hNNkx5OW1ZaTV0WlM5eVpXRmpkQzFsZG1WdWRDMXdiMjlzYVc1bklHWnZjaUJ0YjNKbElHbHVabTl5YldGMGFXOXVMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb0lXVjJaVzUwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dWMlpXNTBMbkJ5WlhabGJuUkVaV1poZFd4MEtTQjdYRzRnSUNBZ0lDQmxkbVZ1ZEM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQmxkbVZ1ZEM1eVpYUjFjbTVXWVd4MVpTQTlJR1poYkhObE8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxtbHpSR1ZtWVhWc2RGQnlaWFpsYm5SbFpDQTlJR1Z0Y0hSNVJuVnVZM1JwYjI0dWRHaGhkRkpsZEhWeWJuTlVjblZsTzF4dUlDQjlMRnh1WEc0Z0lITjBiM0JRY205d1lXZGhkR2x2YmpvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIWmhjaUJsZG1WdWRDQTlJSFJvYVhNdWJtRjBhWFpsUlhabGJuUTdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHVjJaVzUwTENBblZHaHBjeUJ6ZVc1MGFHVjBhV01nWlhabGJuUWdhWE1nY21WMWMyVmtJR1p2Y2lCd1pYSm1iM0p0WVc1alpTQnlaV0Z6YjI1ekxpQkpaaUI1YjNWY1hDZHlaU0FuSUNzZ0ozTmxaV2x1WnlCMGFHbHpMQ0I1YjNWY1hDZHlaU0JqWVd4c2FXNW5JR0J6ZEc5d1VISnZjR0ZuWVhScGIyNWdJRzl1SUdFZ0p5QXJJQ2R5Wld4bFlYTmxaQzl1ZFd4c2FXWnBaV1FnYzNsdWRHaGxkR2xqSUdWMlpXNTBMaUJVYUdseklHbHpJR0VnYm04dGIzQXVJRk5sWlNBbklDc2dKMmgwZEhCek9pOHZabUl1YldVdmNtVmhZM1F0WlhabGJuUXRjRzl2YkdsdVp5Qm1iM0lnYlc5eVpTQnBibVp2Y20xaGRHbHZiaTRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tDRmxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNobGRtVnVkQzV6ZEc5d1VISnZjR0ZuWVhScGIyNHBJSHRjYmlBZ0lDQWdJR1YyWlc1MExuTjBiM0JRY205d1lXZGhkR2x2YmlncE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JsZG1WdWRDNWpZVzVqWld4Q2RXSmliR1VnUFNCMGNuVmxPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbWx6VUhKdmNHRm5ZWFJwYjI1VGRHOXdjR1ZrSUQwZ1pXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzFSeWRXVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZkbElISmxiR1ZoYzJVZ1lXeHNJR1JwYzNCaGRHTm9aV1FnWUZONWJuUm9aWFJwWTBWMlpXNTBZSE1nWVdaMFpYSWdaV0ZqYUNCbGRtVnVkQ0JzYjI5d0xDQmhaR1JwYm1kY2JpQWdJQ29nZEdobGJTQmlZV05ySUdsdWRHOGdkR2hsSUhCdmIyd3VJRlJvYVhNZ1lXeHNiM2R6SUdFZ2QyRjVJSFJ2SUdodmJHUWdiMjUwYnlCaElISmxabVZ5Wlc1alpTQjBhR0YwWEc0Z0lDQXFJSGR2YmlkMElHSmxJR0ZrWkdWa0lHSmhZMnNnYVc1MGJ5QjBhR1VnY0c5dmJDNWNiaUFnSUNvdlhHNGdJSEJsY25OcGMzUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxtbHpVR1Z5YzJsemRHVnVkQ0E5SUdWdGNIUjVSblZ1WTNScGIyNHVkR2hoZEZKbGRIVnlibk5VY25WbE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYUdWamEzTWdhV1lnZEdocGN5QmxkbVZ1ZENCemFHOTFiR1FnWW1VZ2NtVnNaV0Z6WldRZ1ltRmpheUJwYm5SdklIUm9aU0J3YjI5c0xseHVJQ0FnS2x4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JVY25WbElHbG1JSFJvYVhNZ2MyaHZkV3hrSUc1dmRDQmlaU0J5Wld4bFlYTmxaQ3dnWm1Gc2MyVWdiM1JvWlhKM2FYTmxMbHh1SUNBZ0tpOWNiaUFnYVhOUVpYSnphWE4wWlc1ME9pQmxiWEIwZVVaMWJtTjBhVzl1TG5Sb1lYUlNaWFIxY201elJtRnNjMlVzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJR0JRYjI5c1pXUkRiR0Z6YzJBZ2JHOXZhM01nWm05eUlHQmtaWE4wY25WamRHOXlZQ0J2YmlCbFlXTm9JR2x1YzNSaGJtTmxJR2wwSUhKbGJHVmhjMlZ6TGx4dUlDQWdLaTljYmlBZ1pHVnpkSEoxWTNSdmNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCSmJuUmxjbVpoWTJVZ1BTQjBhR2x6TG1OdmJuTjBjblZqZEc5eUxrbHVkR1Z5Wm1GalpUdGNiaUFnSUNCbWIzSWdLSFpoY2lCd2NtOXdUbUZ0WlNCcGJpQkpiblJsY21aaFkyVXBJSHRjYmlBZ0lDQWdJSFJvYVhOYmNISnZjRTVoYldWZElEMGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1a2FYTndZWFJqYUVOdmJtWnBaeUE5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVrYVhOd1lYUmphRTFoY210bGNpQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NXVZWFJwZG1WRmRtVnVkQ0E5SUc1MWJHdzdYRzRnSUgxY2JseHVmU2s3WEc1Y2JsTjViblJvWlhScFkwVjJaVzUwTGtsdWRHVnlabUZqWlNBOUlFVjJaVzUwU1c1MFpYSm1ZV05sTzF4dVhHNHZLaXBjYmlBcUlFaGxiSEJsY2lCMGJ5QnlaV1IxWTJVZ1ltOXBiR1Z5Y0d4aGRHVWdkMmhsYmlCamNtVmhkR2x1WnlCemRXSmpiR0Z6YzJWekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlFTnNZWE56WEc0Z0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlFbHVkR1Z5Wm1GalpWeHVJQ292WEc1VGVXNTBhR1YwYVdORmRtVnVkQzVoZFdkdFpXNTBRMnhoYzNNZ1BTQm1kVzVqZEdsdmJpQW9RMnhoYzNNc0lFbHVkR1Z5Wm1GalpTa2dlMXh1SUNCMllYSWdVM1Z3WlhJZ1BTQjBhR2x6TzF4dVhHNGdJSFpoY2lCd2NtOTBiM1I1Y0dVZ1BTQlBZbXBsWTNRdVkzSmxZWFJsS0ZOMWNHVnlMbkJ5YjNSdmRIbHdaU2s3WEc0Z0lHRnpjMmxuYmlod2NtOTBiM1I1Y0dVc0lFTnNZWE56TG5CeWIzUnZkSGx3WlNrN1hHNGdJRU5zWVhOekxuQnliM1J2ZEhsd1pTQTlJSEJ5YjNSdmRIbHdaVHRjYmlBZ1EyeGhjM011Y0hKdmRHOTBlWEJsTG1OdmJuTjBjblZqZEc5eUlEMGdRMnhoYzNNN1hHNWNiaUFnUTJ4aGMzTXVTVzUwWlhKbVlXTmxJRDBnWVhOemFXZHVLSHQ5TENCVGRYQmxjaTVKYm5SbGNtWmhZMlVzSUVsdWRHVnlabUZqWlNrN1hHNGdJRU5zWVhOekxtRjFaMjFsYm5SRGJHRnpjeUE5SUZOMWNHVnlMbUYxWjIxbGJuUkRiR0Z6Y3p0Y2JseHVJQ0JRYjI5c1pXUkRiR0Z6Y3k1aFpHUlFiMjlzYVc1blZHOG9RMnhoYzNNc0lGQnZiMnhsWkVOc1lYTnpMbVp2ZFhKQmNtZDFiV1Z1ZEZCdmIyeGxjaWs3WEc1OU8xeHVYRzVRYjI5c1pXUkRiR0Z6Y3k1aFpHUlFiMjlzYVc1blZHOG9VM2x1ZEdobGRHbGpSWFpsYm5Rc0lGQnZiMnhsWkVOc1lYTnpMbVp2ZFhKQmNtZDFiV1Z1ZEZCdmIyeGxjaWs3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1UzbHVkR2hsZEdsalJYWmxiblE3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNGb2N1c0V2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEZvY3VzRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgRm9jdXNFdmVudEludGVyZmFjZSA9IHtcbiAgcmVsYXRlZFRhcmdldDogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNGb2N1c0V2ZW50LCBGb2N1c0V2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNGb2N1c0V2ZW50OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNJbnB1dEV2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDVcbiAqICAgICAgLyNldmVudHMtaW5wdXRldmVudHNcbiAqL1xudmFyIElucHV0RXZlbnRJbnRlcmZhY2UgPSB7XG4gIGRhdGE6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0lucHV0RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNLZXlib2FyZEV2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcblxudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtcbnZhciBnZXRFdmVudEtleSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRLZXknKTtcbnZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBLZXlib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBrZXk6IGdldEV2ZW50S2V5LFxuICBsb2NhdGlvbjogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAgc2hpZnRLZXk6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0YUtleTogbnVsbCxcbiAgcmVwZWF0OiBudWxsLFxuICBsb2NhbGU6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcbiAgLy8gTGVnYWN5IEludGVyZmFjZVxuICBjaGFyQ29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG4gICAgLy8gdGhlIGFjdHVhbCBwcmludGFibGUgY2hhcmFjdGVyLlxuXG4gICAgLy8gS2V5UHJlc3MgaXMgZGVwcmVjYXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3RcbiAgICAvLyBpbXBsZW1lbnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVzcyBoYXMgY2hhckNvZGUuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIGtleUNvZGU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBrZXlDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5RG93bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2ZcbiAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuXG5cbiAgICAvLyBUaGUgYWN0dWFsIG1lYW5pbmcgb2YgdGhlIHZhbHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlvdXRcbiAgICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBrZXlib2FyZCBsYXlvdXRcbiAgICAvLyBwcm92aWRlcyBhIHN1cnByaXNpbmdseSBhY2N1cmF0ZSBtYXBwaW5nIGZvciBVUyBhbmQgRXVyb3BlYW4gdXNlcnMuXG4gICAgLy8gRHVlIHRvIHRoaXMsIGl0IGlzIGxlZnQgdG8gdGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgIHJldHVybiBldmVudC5rZXlDb2RlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgd2hpY2g6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlXG4gICAgLy8gdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7XG4gICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljS2V5Ym9hcmRFdmVudCwgS2V5Ym9hcmRFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljTW91c2VFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgnLi9WaWV3cG9ydE1ldHJpY3MnKTtcblxudmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRNb2RpZmllclN0YXRlJyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBNb3VzZUV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIE1vdXNlRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHNjcmVlblg6IG51bGwsXG4gIHNjcmVlblk6IG51bGwsXG4gIGNsaWVudFg6IG51bGwsXG4gIGNsaWVudFk6IG51bGwsXG4gIGN0cmxLZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1ldGFLZXk6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcbiAgYnV0dG9uOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBXZWJraXQsIEZpcmVmb3gsIElFOStcbiAgICAvLyB3aGljaDogIDEgMiAzXG4gICAgLy8gYnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQpXG4gICAgdmFyIGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjtcbiAgICBpZiAoJ3doaWNoJyBpbiBldmVudCkge1xuICAgICAgcmV0dXJuIGJ1dHRvbjtcbiAgICB9XG4gICAgLy8gSUU8OVxuICAgIC8vIHdoaWNoOiAgdW5kZWZpbmVkXG4gICAgLy8gYnV0dG9uOiAwIDAgMFxuICAgIC8vIGJ1dHRvbjogMSA0IDIgKG9ubW91c2V1cClcbiAgICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0gNCA/IDEgOiAwO1xuICB9LFxuICBidXR0b25zOiBudWxsLFxuICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQucmVsYXRlZFRhcmdldCB8fCAoZXZlbnQuZnJvbUVsZW1lbnQgPT09IGV2ZW50LnNyY0VsZW1lbnQgPyBldmVudC50b0VsZW1lbnQgOiBldmVudC5mcm9tRWxlbWVudCk7XG4gIH0sXG4gIC8vIFwiUHJvcHJpZXRhcnlcIiBJbnRlcmZhY2UuXG4gIHBhZ2VYOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ3BhZ2VYJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VYIDogZXZlbnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdDtcbiAgfSxcbiAgcGFnZVk6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAncGFnZVknIGluIGV2ZW50ID8gZXZlbnQucGFnZVkgOiBldmVudC5jbGllbnRZICsgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3A7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY01vdXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVudCwgTW91c2VFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljTW91c2VFdmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljVG91Y2hFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbnZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgVG91Y2hFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi90b3VjaC1ldmVudHMvXG4gKi9cbnZhciBUb3VjaEV2ZW50SW50ZXJmYWNlID0ge1xuICB0b3VjaGVzOiBudWxsLFxuICB0YXJnZXRUb3VjaGVzOiBudWxsLFxuICBjaGFuZ2VkVG91Y2hlczogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICBjdHJsS2V5OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNUb3VjaEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY1VJRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRUYXJnZXQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFVJRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgVUlFdmVudEludGVyZmFjZSA9IHtcbiAgdmlldzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnZpZXcpIHtcbiAgICAgIHJldHVybiBldmVudC52aWV3O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gICAgaWYgKHRhcmdldCAhPSBudWxsICYmIHRhcmdldC53aW5kb3cgPT09IHRhcmdldCkge1xuICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdFxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LlxuICAgIGlmIChkb2MpIHtcbiAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdpbmRvdztcbiAgICB9XG4gIH0sXG4gIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LmRldGFpbCB8fCAwO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1VJRXZlbnQsIFVJRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1VJRXZlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY1doZWVsRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBXaGVlbEV2ZW50SW50ZXJmYWNlID0ge1xuICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAnZGVsdGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6XG4gICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFYYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKHJpZ2h0IGlzIHBvc2l0aXZlKS5cbiAgICAnd2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFYIDogMDtcbiAgfSxcbiAgZGVsdGFZOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2RlbHRhWScgaW4gZXZlbnQgPyBldmVudC5kZWx0YVkgOlxuICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWWAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS5cbiAgICAnd2hlZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDpcbiAgICAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YWAgZm9yIElFPDkgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEgOiAwO1xuICB9LFxuICBkZWx0YVo6IG51bGwsXG5cbiAgLy8gQnJvd3NlcnMgd2l0aG91dCBcImRlbHRhTW9kZVwiIGlzIHJlcG9ydGluZyBpbiByYXcgd2hlZWwgZGVsdGEgd2hlcmUgb25lXG4gIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMgYWx3YXlzICsvLSAxMjAsIHJvdWdobHkgZXF1aXZhbGVudCB0byBwaXhlbHMuXG4gIC8vIEEgZ29vZCBhcHByb3hpbWF0aW9uIG9mIERPTV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yXG4gIC8vIH40MCBwaXhlbHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41JSBvZiB2aWV3cG9ydCBzaXplLlxuICBkZWx0YU1vZGU6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1doZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljTW91c2VFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljV2hlZWxFdmVudCwgV2hlZWxFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljV2hlZWxFdmVudDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFRyYW5zYWN0aW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogYFRyYW5zYWN0aW9uYCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3cmFwIGFueSBtZXRob2Qgc3VjaCB0aGF0XG4gKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWRcbiAqIChFdmVuIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gd2hpbGUgaW52b2tpbmcgdGhlIHdyYXBwZWQgbWV0aG9kKS4gV2hvZXZlclxuICogaW5zdGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5mb3JjZXJzIG9mIHRoZSBpbnZhcmlhbnRzIGF0XG4gKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBpdHNlbGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWxcbiAqIGF1dG9tYXRpYyBpbnZhcmlhbnQgZm9yIHlvdSAtIHRoZSBpbnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rpb24gaW5zdGFuY2VcbiAqIHNob3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVpbmcgcnVuLiBZb3Ugd291bGQgdHlwaWNhbGx5IGNyZWF0ZSBhXG4gKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rpb25gIGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseVxuICogaXMgdXNlZCB0byB3cmFwIHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBwZXJzIGFyZSBleHRyZW1lbHkgc2ltcGxlIC1cbiAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVudGluZyB0d28gbWV0aG9kcy5cbiAqXG4gKiA8cHJlPlxuICogICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJzIChpbmplY3RlZCBhdCBjcmVhdGlvbiB0aW1lKVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICtcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tK1xuICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgICstLXwgICAgd3JhcHBlcjEgICB8LS0tfC0tLS0rICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgIHYgICAgfCAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICstLS0tfCAgIHdyYXBwZXIyICB8LS0tLS0tLS0rICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICB2ICAgICB2ICAgfCB3cmFwcGVyXG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzXG4gKiBwZXJmb3JtKGFueU1ldGhvZCkgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfCBtYWludGFpbmVkXG4gKiArLS0tLS0tLS0tLS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8LS0tfC0tLXwtfC0tLXwtfC0tLS0tLS0tPlxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICBpbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBjbG9zZSAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICogPC9wcmU+XG4gKlxuICogVXNlIGNhc2VzOlxuICogLSBQcmVzZXJ2aW5nIHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlhdGlvbi5cbiAqICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBldmVudCBvZiBhbiB1bmV4cGVjdGVkIGVycm9yLlxuICogLSBEZWFjdGl2YXRpbmcgZXZlbnRzIHdoaWxlIHJlYXJyYW5naW5nIHRoZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcyxcbiAqICAgd2hpbGUgZ3VhcmFudGVlaW5nIHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2YXRlZC5cbiAqIC0gRmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0aW9ucyB0byB0aGUgbWFpbiBVSSB0aHJlYWQgYWZ0ZXIgYVxuICogICByZWNvbmNpbGlhdGlvbiB0YWtlcyBwbGFjZSBpbiBhIHdvcmtlciB0aHJlYWQuXG4gKiAtIEludm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXdcbiAqICAgY29udGVudC5cbiAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBwaW5nIHBhcnRpY3VsYXIgZmx1c2hlcyBvZiB0aGUgYFJlYWN0V29ya2VyYCBxdWV1ZVxuICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9sbFRvcGAgKGFuIGF1dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS5cbiAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IExheW91dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBkYXRlcy5cbiAqXG4gKiBUcmFuc2FjdGlvbmFsIHBsdWdpbiBBUEk6XG4gKiAtIEEgbW9kdWxlIHRoYXQgaGFzIGFuIGBpbml0aWFsaXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21wdXRhdGlvbi5cbiAqIC0gYW5kIGEgYGNsb3NlYCBtZXRob2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21wdXRhdGlvbi4gYGNsb3NlYCBpcyBpbnZva2VkXG4gKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9yIGhhcyBmYWlsZWQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxUcmFuc2FjdGlvbmFsV3JhcHBlcj59IHRyYW5zYWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXNcbiAqIHRoYXQgaW1wbGVtZW50IGBpbml0aWFsaXplYCBhbmQgYGNsb3NlYC5cbiAqIEByZXR1cm4ge1RyYW5zYWN0aW9ufSBTaW5nbGUgdHJhbnNhY3Rpb24gZm9yIHJldXNlIGluIHRocmVhZC5cbiAqXG4gKiBAY2xhc3MgVHJhbnNhY3Rpb25cbiAqL1xudmFyIE1peGluID0ge1xuICAvKipcbiAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuICAgKiBzbyBzdWNoIHRoYXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBhbHJlYWR5XG4gICAqIGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgdXBvbiByZXVzZS5cbiAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxuICAgKiBcIlBvb2xlZENsYXNzXCIuXG4gICAqL1xuICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygpO1xuICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuICAgICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cmFwcGVySW5pdERhdGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gIH0sXG5cbiAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBBcnJheSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IG51bGwsXG5cbiAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5faXNJblRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgZnVuY3Rpb24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0b3AgbGV2ZWxcbiAgICogbWV0aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNvbXB1dGF0aW9uL211dGF0aW9ucyB0aGF0IHdvdWxkXG4gICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuICAgKiB0byBiaW5kIGluIG1hbnkgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1iZXIgb2Ygc2NvcGUgdG8gY2FsbC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHNjb3BlIFNjb3BlIHRvIGludm9rZSBmcm9tLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFsdWUgZnJvbSBgbWV0aG9kYC5cbiAgICovXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gICAgISF0aGlzLmlzSW5UcmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRpYWxpemUgYSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJlICcgKyAnaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGVycm9yVGhyb3duO1xuICAgIHZhciByZXQ7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IHRydWU7XG4gICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG4gICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nXG4gICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxzIHRocmV3LlxuICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgdGhpcy5pbml0aWFsaXplQWxsKDApO1xuICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpO1xuICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgLy8gSWYgYG1ldGhvZGAgdGhyb3dzLCBwcmVmZXIgdG8gc2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93blxuICAgICAgICAgIC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0aHJvdywgd2UgZG9uJ3Qgd2FudCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb25cbiAgICAgICAgICAvLyBoZXJlLlxuICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIGluaXRpYWxpemVBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZVxuICAgICAgICAvLyBPQlNFUlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQgd2l0aCB0aGUgcmVhbCByZXR1cm4gdmFsdWVcbiAgICAgICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byBPQlNFUlZFRF9FUlJPUiBpbiB0aGUgZmluYWxseVxuICAgICAgICAvLyBibG9jaywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRocmV3LlxuICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IFRyYW5zYWN0aW9uLk9CU0VSVkVEX0VSUk9SO1xuICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IHdyYXBwZXIuaW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpIDogbnVsbDtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9PT0gVHJhbnNhY3Rpb24uT0JTRVJWRURfRVJST1IpIHtcbiAgICAgICAgICAvLyBUaGUgaW5pdGlhbGl6ZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGVcbiAgICAgICAgICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZVxuICAgICAgICAgIC8vIHRoYXQgdGhlIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVBbGwoaSArIDEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW52b2tlcyBlYWNoIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywgcGFzc2luZyBpbnRvXG4gICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmluaXRbaV1gXG4gICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNwb25kIHRvIGluaXRpYWxpemVycyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZVxuICAgKiBpbnZva2VkKS5cbiAgICovXG4gIGNsb3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgICF0aGlzLmlzSW5UcmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNsb3NlQWxsKCk6IENhbm5vdCBjbG9zZSB0cmFuc2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdmFyIGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07XG4gICAgICB2YXIgZXJyb3JUaHJvd247XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG4gICAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmdcbiAgICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJldy5cbiAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgICBpZiAoaW5pdERhdGEgIT09IFRyYW5zYWN0aW9uLk9CU0VSVkVEX0VSUk9SICYmIHdyYXBwZXIuY2xvc2UpIHtcbiAgICAgICAgICB3cmFwcGVyLmNsb3NlLmNhbGwodGhpcywgaW5pdERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAvLyBUaGUgY2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGNsb3NlIHRoZSByZW1haW5pbmdcbiAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlXG4gICAgICAgICAgLy8gZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoaSArIDEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgfVxufTtcblxudmFyIFRyYW5zYWN0aW9uID0ge1xuXG4gIE1peGluOiBNaXhpbixcblxuICAvKipcbiAgICogVG9rZW4gdG8gbG9vayBmb3IgdG8gZGV0ZXJtaW5lIGlmIGFuIGVycm9yIG9jY3VycmVkLlxuICAgKi9cbiAgT0JTRVJWRURfRVJST1I6IHt9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNhY3Rpb247XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlVY21GdWMyRmpkR2x2Ymk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdWSEpoYm5OaFkzUnBiMjVjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dUx5b3FYRzRnS2lCZ1ZISmhibk5oWTNScGIyNWdJR055WldGMFpYTWdZU0JpYkdGamF5QmliM2dnZEdoaGRDQnBjeUJoWW14bElIUnZJSGR5WVhBZ1lXNTVJRzFsZEdodlpDQnpkV05vSUhSb1lYUmNiaUFxSUdObGNuUmhhVzRnYVc1MllYSnBZVzUwY3lCaGNtVWdiV0ZwYm5SaGFXNWxaQ0JpWldadmNtVWdZVzVrSUdGbWRHVnlJSFJvWlNCdFpYUm9iMlFnYVhNZ2FXNTJiMnRsWkZ4dUlDb2dLRVYyWlc0Z2FXWWdZVzRnWlhoalpYQjBhVzl1SUdseklIUm9jbTkzYmlCM2FHbHNaU0JwYm5admEybHVaeUIwYUdVZ2QzSmhjSEJsWkNCdFpYUm9iMlFwTGlCWGFHOWxkbVZ5WEc0Z0tpQnBibk4wWVc1MGFXRjBaWE1nWVNCMGNtRnVjMkZqZEdsdmJpQmpZVzRnY0hKdmRtbGtaU0JsYm1admNtTmxjbk1nYjJZZ2RHaGxJR2x1ZG1GeWFXRnVkSE1nWVhSY2JpQXFJR055WldGMGFXOXVJSFJwYldVdUlGUm9aU0JnVkhKaGJuTmhZM1JwYjI1Z0lHTnNZWE56SUdsMGMyVnNaaUIzYVd4c0lITjFjSEJzZVNCdmJtVWdZV1JrYVhScGIyNWhiRnh1SUNvZ1lYVjBiMjFoZEdsaklHbHVkbUZ5YVdGdWRDQm1iM0lnZVc5MUlDMGdkR2hsSUdsdWRtRnlhV0Z1ZENCMGFHRjBJR0Z1ZVNCMGNtRnVjMkZqZEdsdmJpQnBibk4wWVc1alpWeHVJQ29nYzJodmRXeGtJRzV2ZENCaVpTQnlkVzRnZDJocGJHVWdhWFFnYVhNZ1lXeHlaV0ZrZVNCaVpXbHVaeUJ5ZFc0dUlGbHZkU0IzYjNWc1pDQjBlWEJwWTJGc2JIa2dZM0psWVhSbElHRmNiaUFxSUhOcGJtZHNaU0JwYm5OMFlXNWpaU0J2WmlCaElHQlVjbUZ1YzJGamRHbHZibUFnWm05eUlISmxkWE5sSUcxMWJIUnBjR3hsSUhScGJXVnpMQ0IwYUdGMElIQnZkR1Z1ZEdsaGJHeDVYRzRnS2lCcGN5QjFjMlZrSUhSdklIZHlZWEFnYzJWMlpYSmhiQ0JrYVdabVpYSmxiblFnYldWMGFHOWtjeTRnVjNKaGNIQmxjbk1nWVhKbElHVjRkSEpsYldWc2VTQnphVzF3YkdVZ0xWeHVJQ29nZEdobGVTQnZibXg1SUhKbGNYVnBjbVVnYVcxd2JHVnRaVzUwYVc1bklIUjNieUJ0WlhSb2IyUnpMbHh1SUNwY2JpQXFJRHh3Y21VK1hHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2QzSmhjSEJsY25NZ0tHbHVhbVZqZEdWa0lHRjBJR055WldGMGFXOXVJSFJwYldVcFhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS3lBZ0lDQWdJQ0FnSzF4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUNBZ0lDQWdJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXJMUzB0TFMwdExTMHRMUzB0TFMwdExTMThMUzB0TFMwdExTMThMUzB0TFMwdExTMHRMUzB0TFMwclhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZGlBZ0lDQWdJQ0FnZkNBZ0lDQWdJQ0FnSUNBZ0lDQWdmRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dJQ0FnSUNBckxTMHRMUzB0TFMwdExTMHRMUzB0S3lBZ0lId2dJQ0FnSUNBZ0lDQWdJQ0FnSUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNBZ0t5MHRmQ0FnSUNCM2NtRndjR1Z5TVNBZ0lId3RMUzE4TFMwdExTc2dJQ0FnSUNBZ0lDQjhYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDQWdJSHdnSUNzdExTMHRMUzB0TFMwdExTMHRMUzBySUNBZ2RpQWdJQ0I4SUNBZ0lDQWdJQ0FnZkZ4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUNCOElDQWdJQ0FnSUNBZ0lDc3RMUzB0TFMwdExTMHRMUzB0S3lBZ2ZDQWdJQ0FnSUNBZ0lIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElDQWdmQ0FnSUNBZ0t5MHRMUzE4SUNBZ2QzSmhjSEJsY2pJZ0lId3RMUzB0TFMwdExTc2dJQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FnSUh3Z0lDQWdJSHdnSUNBZ0t5MHRMUzB0TFMwdExTMHRMUzBySUNCOElDQWdJQ0I4SUNBZ2ZGeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0lDQjhJQ0FnSUNCOElDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FnSUNBZ2ZDQWdJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0FnZGlBZ0lDQWdkaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhZZ0lDQWdJSFlnSUNCOElIZHlZWEJ3WlhKY2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNzdExTMHJJQ3N0TFMwcklDQWdLeTB0TFMwdExTMHRMU3NnSUNBckxTMHRLeUFyTFMwdEt5QjhJR2x1ZG1GeWFXRnVkSE5jYmlBcUlIQmxjbVp2Y20wb1lXNTVUV1YwYUc5a0tTQjhJSHdnSUNCOElId2dJQ0I4SUNBZ2ZDQWdJQ0FnSUNBZ0lId2dJQ0I4SUNBZ2ZDQjhJQ0FnZkNCOElHMWhhVzUwWVdsdVpXUmNiaUFxSUNzdExTMHRMUzB0TFMwdExTMHRMUzB0TFQ1OExYd3RMUzE4TFh3dExTMThMUzArZkdGdWVVMWxkR2h2Wkh3dExTMThMUzB0ZkMxOExTMHRmQzE4TFMwdExTMHRMUzArWEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0I4SUNBZ2ZDQjhJQ0FnZkNBZ0lId2dJQ0FnSUNBZ0lDQjhJQ0FnZkNBZ0lId2dmQ0FnSUh3Z2ZGeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z2ZDQWdJSHdnZkNBZ0lId2dJQ0I4SUNBZ0lDQWdJQ0FnZkNBZ0lId2dJQ0I4SUh3Z0lDQjhJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJSHdnSUNCOElId2dJQ0I4SUNBZ2ZDQWdJQ0FnSUNBZ0lId2dJQ0I4SUNBZ2ZDQjhJQ0FnZkNCOFhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBckxTMHRLeUFyTFMwdEt5QWdJQ3N0TFMwdExTMHRMUzBySUNBZ0t5MHRMU3NnS3kwdExTc2dmRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dJR2x1YVhScFlXeHBlbVVnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOc2IzTmxJQ0FnSUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FyTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHJYRzRnS2lBOEwzQnlaVDVjYmlBcVhHNGdLaUJWYzJVZ1kyRnpaWE02WEc0Z0tpQXRJRkJ5WlhObGNuWnBibWNnZEdobElHbHVjSFYwSUhObGJHVmpkR2x2YmlCeVlXNW5aWE1nWW1WbWIzSmxMMkZtZEdWeUlISmxZMjl1WTJsc2FXRjBhVzl1TGx4dUlDb2dJQ0JTWlhOMGIzSnBibWNnYzJWc1pXTjBhVzl1SUdWMlpXNGdhVzRnZEdobElHVjJaVzUwSUc5bUlHRnVJSFZ1Wlhod1pXTjBaV1FnWlhKeWIzSXVYRzRnS2lBdElFUmxZV04wYVhaaGRHbHVaeUJsZG1WdWRITWdkMmhwYkdVZ2NtVmhjbkpoYm1kcGJtY2dkR2hsSUVSUFRTd2djSEpsZG1WdWRHbHVaeUJpYkhWeWN5OW1iMk4xYzJWekxGeHVJQ29nSUNCM2FHbHNaU0JuZFdGeVlXNTBaV1ZwYm1jZ2RHaGhkQ0JoWm5SbGNuZGhjbVJ6TENCMGFHVWdaWFpsYm5RZ2MzbHpkR1Z0SUdseklISmxZV04wYVhaaGRHVmtMbHh1SUNvZ0xTQkdiSFZ6YUdsdVp5QmhJSEYxWlhWbElHOW1JR052Ykd4bFkzUmxaQ0JFVDAwZ2JYVjBZWFJwYjI1eklIUnZJSFJvWlNCdFlXbHVJRlZKSUhSb2NtVmhaQ0JoWm5SbGNpQmhYRzRnS2lBZ0lISmxZMjl1WTJsc2FXRjBhVzl1SUhSaGEyVnpJSEJzWVdObElHbHVJR0VnZDI5eWEyVnlJSFJvY21WaFpDNWNiaUFxSUMwZ1NXNTJiMnRwYm1jZ1lXNTVJR052Ykd4bFkzUmxaQ0JnWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsWUNCallXeHNZbUZqYTNNZ1lXWjBaWElnY21WdVpHVnlhVzVuSUc1bGQxeHVJQ29nSUNCamIyNTBaVzUwTGx4dUlDb2dMU0FvUm5WMGRYSmxJSFZ6WlNCallYTmxLVG9nVjNKaGNIQnBibWNnY0dGeWRHbGpkV3hoY2lCbWJIVnphR1Z6SUc5bUlIUm9aU0JnVW1WaFkzUlhiM0pyWlhKZ0lIRjFaWFZsWEc0Z0tpQWdJSFJ2SUhCeVpYTmxjblpsSUhSb1pTQmdjMk55YjJ4c1ZHOXdZQ0FvWVc0Z1lYVjBiMjFoZEdsaklITmpjbTlzYkNCaGQyRnlaU0JFVDAwcExseHVJQ29nTFNBb1JuVjBkWEpsSUhWelpTQmpZWE5sS1RvZ1RHRjViM1YwSUdOaGJHTjFiR0YwYVc5dWN5QmlaV1p2Y21VZ1lXNWtJR0ZtZEdWeUlFUlBUU0IxY0dSaGRHVnpMbHh1SUNwY2JpQXFJRlJ5WVc1ellXTjBhVzl1WVd3Z2NHeDFaMmx1SUVGUVNUcGNiaUFxSUMwZ1FTQnRiMlIxYkdVZ2RHaGhkQ0JvWVhNZ1lXNGdZR2x1YVhScFlXeHBlbVZnSUcxbGRHaHZaQ0IwYUdGMElISmxkSFZ5Ym5NZ1lXNTVJSEJ5WldOdmJYQjFkR0YwYVc5dUxseHVJQ29nTFNCaGJtUWdZU0JnWTJ4dmMyVmdJRzFsZEdodlpDQjBhR0YwSUdGalkyVndkSE1nZEdobElIQnlaV052YlhCMWRHRjBhVzl1TGlCZ1kyeHZjMlZnSUdseklHbHVkbTlyWldSY2JpQXFJQ0FnZDJobGJpQjBhR1VnZDNKaGNIQmxaQ0J3Y205alpYTnpJR2x6SUdOdmJYQnNaWFJsWkN3Z2IzSWdhR0Z6SUdaaGFXeGxaQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNVBGUnlZVzV6WVdOMGFXOXVZV3hYY21Gd2NHVnlQbjBnZEhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5SUZkeVlYQndaWElnYlc5a2RXeGxjMXh1SUNvZ2RHaGhkQ0JwYlhCc1pXMWxiblFnWUdsdWFYUnBZV3hwZW1WZ0lHRnVaQ0JnWTJ4dmMyVmdMbHh1SUNvZ1FISmxkSFZ5YmlCN1ZISmhibk5oWTNScGIyNTlJRk5wYm1kc1pTQjBjbUZ1YzJGamRHbHZiaUJtYjNJZ2NtVjFjMlVnYVc0Z2RHaHlaV0ZrTGx4dUlDcGNiaUFxSUVCamJHRnpjeUJVY21GdWMyRmpkR2x2Ymx4dUlDb3ZYRzUyWVhJZ1RXbDRhVzRnUFNCN1hHNGdJQzhxS2x4dUlDQWdLaUJUWlhSeklIVndJSFJvYVhNZ2FXNXpkR0Z1WTJVZ2MyOGdkR2hoZENCcGRDQnBjeUJ3Y21Wd1lYSmxaQ0JtYjNJZ1kyOXNiR1ZqZEdsdVp5QnRaWFJ5YVdOekxpQkViMlZ6WEc0Z0lDQXFJSE52SUhOMVkyZ2dkR2hoZENCMGFHbHpJSE5sZEhWd0lHMWxkR2h2WkNCdFlYa2dZbVVnZFhObFpDQnZiaUJoYmlCcGJuTjBZVzVqWlNCMGFHRjBJR2x6SUdGc2NtVmhaSGxjYmlBZ0lDb2dhVzVwZEdsaGJHbDZaV1FzSUdsdUlHRWdkMkY1SUhSb1lYUWdaRzlsY3lCdWIzUWdZMjl1YzNWdFpTQmhaR1JwZEdsdmJtRnNJRzFsYlc5eWVTQjFjRzl1SUhKbGRYTmxMbHh1SUNBZ0tpQlVhR0YwSUdOaGJpQmlaU0IxYzJWbWRXd2dhV1lnZVc5MUlHUmxZMmxrWlNCMGJ5QnRZV3RsSUhsdmRYSWdjM1ZpWTJ4aGMzTWdiMllnZEdocGN5QnRhWGhwYmlCaFhHNGdJQ0FxSUZ3aVVHOXZiR1ZrUTJ4aGMzTmNJaTVjYmlBZ0lDb3ZYRzRnSUhKbGFXNXBkR2xoYkdsNlpWUnlZVzV6WVdOMGFXOXVPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZEdocGN5NTBjbUZ1YzJGamRHbHZibGR5WVhCd1pYSnpJRDBnZEdocGN5NW5aWFJVY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6S0NrN1hHNGdJQ0FnYVdZZ0tIUm9hWE11ZDNKaGNIQmxja2x1YVhSRVlYUmhLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuZHlZWEJ3WlhKSmJtbDBSR0YwWVM1c1pXNW5kR2dnUFNBd08xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxuZHlZWEJ3WlhKSmJtbDBSR0YwWVNBOUlGdGRPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbDlwYzBsdVZISmhibk5oWTNScGIyNGdQU0JtWVd4elpUdGNiaUFnZlN4Y2JseHVJQ0JmYVhOSmJsUnlZVzV6WVdOMGFXOXVPaUJtWVd4elpTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FHRmljM1J5WVdOMFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBGeWNtRjVQRlJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjajU5SUVGeWNtRjVJRzltSUhSeVlXNXpZV04wYVc5dUlIZHlZWEJ3WlhKekxseHVJQ0FnS2k5Y2JpQWdaMlYwVkhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3pvZ2JuVnNiQ3hjYmx4dUlDQnBjMGx1VkhKaGJuTmhZM1JwYjI0NklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z0lTRjBhR2x6TGw5cGMwbHVWSEpoYm5OaFkzUnBiMjQ3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVjRaV04xZEdWeklIUm9aU0JtZFc1amRHbHZiaUIzYVhSb2FXNGdZU0J6WVdabGRIa2dkMmx1Wkc5M0xpQlZjMlVnZEdocGN5Qm1iM0lnZEdobElIUnZjQ0JzWlhabGJGeHVJQ0FnS2lCdFpYUm9iMlJ6SUhSb1lYUWdjbVZ6ZFd4MElHbHVJR3hoY21kbElHRnRiM1Z1ZEhNZ2IyWWdZMjl0Y0hWMFlYUnBiMjR2YlhWMFlYUnBiMjV6SUhSb1lYUWdkMjkxYkdSY2JpQWdJQ29nYm1WbFpDQjBieUJpWlNCellXWmxkSGtnWTJobFkydGxaQzRnVkdobElHOXdkR2x2Ym1Gc0lHRnlaM1Z0Wlc1MGN5Qm9aV3h3Y3lCd2NtVjJaVzUwSUhSb1pTQnVaV1ZrWEc0Z0lDQXFJSFJ2SUdKcGJtUWdhVzRnYldGdWVTQmpZWE5sY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdiV1YwYUc5a0lFMWxiV0psY2lCdlppQnpZMjl3WlNCMGJ5QmpZV3hzTGx4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdjMk52Y0dVZ1UyTnZjR1VnZEc4Z2FXNTJiMnRsSUdaeWIyMHVYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wUHoxOUlHRWdRWEpuZFcxbGJuUWdkRzhnY0dGemN5QjBieUIwYUdVZ2JXVjBhRzlrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamREODlmU0JpSUVGeVozVnRaVzUwSUhSdklIQmhjM01nZEc4Z2RHaGxJRzFsZEdodlpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1EvUFgwZ1l5QkJjbWQxYldWdWRDQjBieUJ3WVhOeklIUnZJSFJvWlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUMkpxWldOMFB6MTlJR1FnUVhKbmRXMWxiblFnZEc4Z2NHRnpjeUIwYnlCMGFHVWdiV1YwYUc5a0xseHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkRDg5ZlNCbElFRnlaM1Z0Wlc1MElIUnZJSEJoYzNNZ2RHOGdkR2hsSUcxbGRHaHZaQzVjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNRL1BYMGdaaUJCY21kMWJXVnVkQ0IwYnlCd1lYTnpJSFJ2SUhSb1pTQnRaWFJvYjJRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WlhSMWNtNGdleXA5SUZKbGRIVnliaUIyWVd4MVpTQm1jbTl0SUdCdFpYUm9iMlJnTGx4dUlDQWdLaTljYmlBZ2NHVnlabTl5YlRvZ1puVnVZM1JwYjI0Z0tHMWxkR2h2WkN3Z2MyTnZjR1VzSUdFc0lHSXNJR01zSUdRc0lHVXNJR1lwSUh0Y2JpQWdJQ0FoSVhSb2FYTXVhWE5KYmxSeVlXNXpZV04wYVc5dUtDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblZISmhibk5oWTNScGIyNHVjR1Z5Wm05eWJTZ3VMaTRwT2lCRFlXNXViM1FnYVc1cGRHbGhiR2w2WlNCaElIUnlZVzV6WVdOMGFXOXVJSGRvWlc0Z2RHaGxjbVVnSnlBcklDZHBjeUJoYkhKbFlXUjVJR0Z1SUc5MWRITjBZVzVrYVc1bklIUnlZVzV6WVdOMGFXOXVMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCMllYSWdaWEp5YjNKVWFISnZkMjQ3WEc0Z0lDQWdkbUZ5SUhKbGREdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmFYTkpibFJ5WVc1ellXTjBhVzl1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQzh2SUVOaGRHTm9hVzVuSUdWeWNtOXljeUJ0WVd0bGN5QmtaV0oxWjJkcGJtY2diVzl5WlNCa2FXWm1hV04xYkhRc0lITnZJSGRsSUhOMFlYSjBJSGRwZEdoY2JpQWdJQ0FnSUM4dklHVnljbTl5VkdoeWIzZHVJSE5sZENCMGJ5QjBjblZsSUdKbFptOXlaU0J6WlhSMGFXNW5JR2wwSUhSdklHWmhiSE5sSUdGbWRHVnlJR05oYkd4cGJtZGNiaUFnSUNBZ0lDOHZJR05zYjNObElDMHRJR2xtSUdsMEozTWdjM1JwYkd3Z2MyVjBJSFJ2SUhSeWRXVWdhVzRnZEdobElHWnBibUZzYkhrZ1lteHZZMnNzSUdsMElHMWxZVzV6WEc0Z0lDQWdJQ0F2THlCdmJtVWdiMllnZEdobGMyVWdZMkZzYkhNZ2RHaHlaWGN1WEc0Z0lDQWdJQ0JsY25KdmNsUm9jbTkzYmlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0IwYUdsekxtbHVhWFJwWVd4cGVtVkJiR3dvTUNrN1hHNGdJQ0FnSUNCeVpYUWdQU0J0WlhSb2IyUXVZMkZzYkNoelkyOXdaU3dnWVN3Z1lpd2dZeXdnWkN3Z1pTd2daaWs3WEc0Z0lDQWdJQ0JsY25KdmNsUm9jbTkzYmlBOUlHWmhiSE5sTzF4dUlDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSlVhSEp2ZDI0cElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCSlppQmdiV1YwYUc5a1lDQjBhSEp2ZDNNc0lIQnlaV1psY2lCMGJ5QnphRzkzSUhSb1lYUWdjM1JoWTJzZ2RISmhZMlVnYjNabGNpQmhibmtnZEdoeWIzZHVYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1lua2dhVzUyYjJ0cGJtY2dZR05zYjNObFFXeHNZQzVjYmlBZ0lDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVqYkc5elpVRnNiQ2d3S1R0Y2JpQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxjbklwSUh0OVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVTJsdVkyVWdZRzFsZEdodlpHQWdaR2xrYmlkMElIUm9jbTkzTENCM1pTQmtiMjRuZENCM1lXNTBJSFJ2SUhOcGJHVnVZMlVnZEdobElHVjRZMlZ3ZEdsdmJseHVJQ0FnSUNBZ0lDQWdJQzh2SUdobGNtVXVYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWpiRzl6WlVGc2JDZ3dLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbWFXNWhiR3g1SUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmYVhOSmJsUnlZVzV6WVdOMGFXOXVJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJSDBzWEc1Y2JpQWdhVzVwZEdsaGJHbDZaVUZzYkRvZ1puVnVZM1JwYjI0Z0tITjBZWEowU1c1a1pYZ3BJSHRjYmlBZ0lDQjJZWElnZEhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3lBOUlIUm9hWE11ZEhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3p0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ2MzUmhjblJKYm1SbGVEc2dhU0E4SUhSeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCM2NtRndjR1Z5SUQwZ2RISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWMxdHBYVHRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDOHZJRU5oZEdOb2FXNW5JR1Z5Y205eWN5QnRZV3RsY3lCa1pXSjFaMmRwYm1jZ2JXOXlaU0JrYVdabWFXTjFiSFFzSUhOdklIZGxJSE4wWVhKMElIZHBkR2dnZEdobFhHNGdJQ0FnSUNBZ0lDOHZJRTlDVTBWU1ZrVkVYMFZTVWs5U0lITjBZWFJsSUdKbFptOXlaU0J2ZG1WeWQzSnBkR2x1WnlCcGRDQjNhWFJvSUhSb1pTQnlaV0ZzSUhKbGRIVnliaUIyWVd4MVpWeHVJQ0FnSUNBZ0lDQXZMeUJ2WmlCcGJtbDBhV0ZzYVhwbElDMHRJR2xtSUdsMEozTWdjM1JwYkd3Z2MyVjBJSFJ2SUU5Q1UwVlNWa1ZFWDBWU1VrOVNJR2x1SUhSb1pTQm1hVzVoYkd4NVhHNGdJQ0FnSUNBZ0lDOHZJR0pzYjJOckxDQnBkQ0J0WldGdWN5QjNjbUZ3Y0dWeUxtbHVhWFJwWVd4cGVtVWdkR2h5WlhjdVhHNGdJQ0FnSUNBZ0lIUm9hWE11ZDNKaGNIQmxja2x1YVhSRVlYUmhXMmxkSUQwZ1ZISmhibk5oWTNScGIyNHVUMEpUUlZKV1JVUmZSVkpTVDFJN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZDNKaGNIQmxja2x1YVhSRVlYUmhXMmxkSUQwZ2QzSmhjSEJsY2k1cGJtbDBhV0ZzYVhwbElEOGdkM0poY0hCbGNpNXBibWwwYVdGc2FYcGxMbU5oYkd3b2RHaHBjeWtnT2lCdWRXeHNPMXh1SUNBZ0lDQWdmU0JtYVc1aGJHeDVJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11ZDNKaGNIQmxja2x1YVhSRVlYUmhXMmxkSUQwOVBTQlVjbUZ1YzJGamRHbHZiaTVQUWxORlVsWkZSRjlGVWxKUFVpa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklGUm9aU0JwYm1sMGFXRnNhWHBsY2lCbWIzSWdkM0poY0hCbGNpQnBJSFJvY21WM0lHRnVJR1Z5Y205eU95QnBibWwwYVdGc2FYcGxJSFJvWlZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSEpsYldGcGJtbHVaeUIzY21Gd2NHVnljeUJpZFhRZ2MybHNaVzVqWlNCaGJua2daWGhqWlhCMGFXOXVjeUJtY205dElIUm9aVzBnZEc4Z1pXNXpkWEpsWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkR2hoZENCMGFHVWdabWx5YzNRZ1pYSnliM0lnYVhNZ2RHaGxJRzl1WlNCMGJ5QmlkV0ppYkdVZ2RYQXVYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhVzVwZEdsaGJHbDZaVUZzYkNocElDc2dNU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pYSnlLU0I3ZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWeklHVmhZMmdnYjJZZ1lIUm9hWE11ZEhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3k1amJHOXpaVnRwWFdBZ1puVnVZM1JwYjI1ekxDQndZWE56YVc1bklHbHVkRzljYmlBZ0lDb2dkR2hsYlNCMGFHVWdjbVZ6Y0dWamRHbDJaU0J5WlhSMWNtNGdkbUZzZFdWeklHOW1JR0IwYUdsekxuUnlZVzV6WVdOMGFXOXVWM0poY0hCbGNuTXVhVzVwZEZ0cFhXQmNiaUFnSUNvZ0tHQmpiRzl6WldCeWN5QjBhR0YwSUdOdmNuSmxjM0J2Ym1RZ2RHOGdhVzVwZEdsaGJHbDZaWEp6SUhSb1lYUWdabUZwYkdWa0lIZHBiR3dnYm05MElHSmxYRzRnSUNBcUlHbHVkbTlyWldRcExseHVJQ0FnS2k5Y2JpQWdZMnh2YzJWQmJHdzZJR1oxYm1OMGFXOXVJQ2h6ZEdGeWRFbHVaR1Y0S1NCN1hHNGdJQ0FnSVhSb2FYTXVhWE5KYmxSeVlXNXpZV04wYVc5dUtDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblZISmhibk5oWTNScGIyNHVZMnh2YzJWQmJHd29LVG9nUTJGdWJtOTBJR05zYjNObElIUnlZVzV6WVdOMGFXOXVJSGRvWlc0Z2JtOXVaU0JoY21VZ2IzQmxiaTRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RtRnlJSFJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk1nUFNCMGFHbHpMblJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk03WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SUhOMFlYSjBTVzVrWlhnN0lHa2dQQ0IwY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnZDNKaGNIQmxjaUE5SUhSeVlXNXpZV04wYVc5dVYzSmhjSEJsY25OYmFWMDdYRzRnSUNBZ0lDQjJZWElnYVc1cGRFUmhkR0VnUFNCMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlWdHBYVHRjYmlBZ0lDQWdJSFpoY2lCbGNuSnZjbFJvY205M2JqdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUM4dklFTmhkR05vYVc1bklHVnljbTl5Y3lCdFlXdGxjeUJrWldKMVoyZHBibWNnYlc5eVpTQmthV1ptYVdOMWJIUXNJSE52SUhkbElITjBZWEowSUhkcGRHaGNiaUFnSUNBZ0lDQWdMeThnWlhKeWIzSlVhSEp2ZDI0Z2MyVjBJSFJ2SUhSeWRXVWdZbVZtYjNKbElITmxkSFJwYm1jZ2FYUWdkRzhnWm1Gc2MyVWdZV1owWlhJZ1kyRnNiR2x1WjF4dUlDQWdJQ0FnSUNBdkx5QmpiRzl6WlNBdExTQnBaaUJwZENkeklITjBhV3hzSUhObGRDQjBieUIwY25WbElHbHVJSFJvWlNCbWFXNWhiR3g1SUdKc2IyTnJMQ0JwZENCdFpXRnVjMXh1SUNBZ0lDQWdJQ0F2THlCM2NtRndjR1Z5TG1Oc2IzTmxJSFJvY21WM0xseHVJQ0FnSUNBZ0lDQmxjbkp2Y2xSb2NtOTNiaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJR2xtSUNocGJtbDBSR0YwWVNBaFBUMGdWSEpoYm5OaFkzUnBiMjR1VDBKVFJWSldSVVJmUlZKU1QxSWdKaVlnZDNKaGNIQmxjaTVqYkc5elpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhkeVlYQndaWEl1WTJ4dmMyVXVZMkZzYkNoMGFHbHpMQ0JwYm1sMFJHRjBZU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1pYSnliM0pVYUhKdmQyNGdQU0JtWVd4elpUdGNiaUFnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJR2xtSUNobGNuSnZjbFJvY205M2Jpa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklGUm9aU0JqYkc5elpYSWdabTl5SUhkeVlYQndaWElnYVNCMGFISmxkeUJoYmlCbGNuSnZjanNnWTJ4dmMyVWdkR2hsSUhKbGJXRnBibWx1WjF4dUlDQWdJQ0FnSUNBZ0lDOHZJSGR5WVhCd1pYSnpJR0oxZENCemFXeGxibU5sSUdGdWVTQmxlR05sY0hScGIyNXpJR1p5YjIwZ2RHaGxiU0IwYnlCbGJuTjFjbVVnZEdoaGRDQjBhR1ZjYmlBZ0lDQWdJQ0FnSUNBdkx5Qm1hWEp6ZENCbGNuSnZjaUJwY3lCMGFHVWdiMjVsSUhSdklHSjFZbUpzWlNCMWNDNWNiaUFnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWpiRzl6WlVGc2JDaHBJQ3NnTVNrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTMxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxuZHlZWEJ3WlhKSmJtbDBSR0YwWVM1c1pXNW5kR2dnUFNBd08xeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ1ZISmhibk5oWTNScGIyNGdQU0I3WEc1Y2JpQWdUV2w0YVc0NklFMXBlR2x1TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYjJ0bGJpQjBieUJzYjI5cklHWnZjaUIwYnlCa1pYUmxjbTFwYm1VZ2FXWWdZVzRnWlhKeWIzSWdiMk5qZFhKeVpXUXVYRzRnSUNBcUwxeHVJQ0JQUWxORlVsWkZSRjlGVWxKUFVqb2dlMzFjYmx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JVY21GdWMyRmpkR2x2YmpzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgVmlld3BvcnRNZXRyaWNzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVmlld3BvcnRNZXRyaWNzID0ge1xuXG4gIGN1cnJlbnRTY3JvbGxMZWZ0OiAwLFxuXG4gIGN1cnJlbnRTY3JvbGxUb3A6IDAsXG5cbiAgcmVmcmVzaFNjcm9sbFZhbHVlczogZnVuY3Rpb24gKHNjcm9sbFBvc2l0aW9uKSB7XG4gICAgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxMZWZ0ID0gc2Nyb2xsUG9zaXRpb24ueDtcbiAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcCA9IHNjcm9sbFBvc2l0aW9uLnk7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3cG9ydE1ldHJpY3M7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBhY2N1bXVsYXRlSW50b1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqXG4gKiBBY2N1bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIGludG8gdGhlIGZpcnN0IG9uZS4gVGhpc1xuICogaXMgdXNlZCB0byBjb25zZXJ2ZSBtZW1vcnkgYnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMsIGFuZCB0aHVzIHNhY3JpZmljZXNcbiAqIEFQSSBjbGVhbm5lc3MuIFNpbmNlIGBjdXJyZW50YCBjYW4gYmUgbnVsbCBiZWZvcmUgYmVpbmcgcGFzc2VkIGluIGFuZCBub3RcbiAqIG51bGwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGFzc2lnbiBpdCBiYWNrIHRvIGBjdXJyZW50YDpcbiAqXG4gKiBgYSA9IGFjY3VtdWxhdGVJbnRvKGEsIGIpO2BcbiAqXG4gKiBUaGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5IHVzZWQuIFRyeSBgYWNjdW11bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVyLlxuICpcbiAqIEByZXR1cm4geyp8YXJyYXk8Kj59IEFuIGFjY3VtdWxhdGlvbiBvZiBpdGVtcy5cbiAqL1xuXG5mdW5jdGlvbiBhY2N1bXVsYXRlSW50byhjdXJyZW50LCBuZXh0KSB7XG4gICEobmV4dCAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdhY2N1bXVsYXRlSW50byguLi4pOiBBY2N1bXVsYXRlZCBpdGVtcyBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGlmIChjdXJyZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gbmV4dDtcbiAgfVxuXG4gIC8vIEJvdGggYXJlIG5vdCBlbXB0eS4gV2FybmluZzogTmV2ZXIgY2FsbCB4LmNvbmNhdCh5KSB3aGVuIHlvdSBhcmUgbm90XG4gIC8vIGNlcnRhaW4gdGhhdCB4IGlzIGFuIEFycmF5ICh4IGNvdWxkIGJlIGEgc3RyaW5nIHdpdGggY29uY2F0IG1ldGhvZCkuXG4gIHZhciBjdXJyZW50SXNBcnJheSA9IEFycmF5LmlzQXJyYXkoY3VycmVudCk7XG4gIHZhciBuZXh0SXNBcnJheSA9IEFycmF5LmlzQXJyYXkobmV4dCk7XG5cbiAgaWYgKGN1cnJlbnRJc0FycmF5ICYmIG5leHRJc0FycmF5KSB7XG4gICAgY3VycmVudC5wdXNoLmFwcGx5KGN1cnJlbnQsIG5leHQpO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgaWYgKGN1cnJlbnRJc0FycmF5KSB7XG4gICAgY3VycmVudC5wdXNoKG5leHQpO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgaWYgKG5leHRJc0FycmF5KSB7XG4gICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91cyB0byBtdXRhdGUgYG5leHRgLlxuICAgIHJldHVybiBbY3VycmVudF0uY29uY2F0KG5leHQpO1xuICB9XG5cbiAgcmV0dXJuIFtjdXJyZW50LCBuZXh0XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhY2N1bXVsYXRlSW50bztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOWhZMk4xYlhWc1lYUmxTVzUwYnk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TkMweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUdGalkzVnRkV3hoZEdWSmJuUnZYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ3BjYmlBcUlFRmpZM1Z0ZFd4aGRHVnpJR2wwWlcxeklIUm9ZWFFnYlhWemRDQnViM1FnWW1VZ2JuVnNiQ0J2Y2lCMWJtUmxabWx1WldRZ2FXNTBieUIwYUdVZ1ptbHljM1FnYjI1bExpQlVhR2x6WEc0Z0tpQnBjeUIxYzJWa0lIUnZJR052Ym5ObGNuWmxJRzFsYlc5eWVTQmllU0JoZG05cFpHbHVaeUJoY25KaGVTQmhiR3h2WTJGMGFXOXVjeXdnWVc1a0lIUm9kWE1nYzJGamNtbG1hV05sYzF4dUlDb2dRVkJKSUdOc1pXRnVibVZ6Y3k0Z1UybHVZMlVnWUdOMWNuSmxiblJnSUdOaGJpQmlaU0J1ZFd4c0lHSmxabTl5WlNCaVpXbHVaeUJ3WVhOelpXUWdhVzRnWVc1a0lHNXZkRnh1SUNvZ2JuVnNiQ0JoWm5SbGNpQjBhR2x6SUdaMWJtTjBhVzl1TENCdFlXdGxJSE4xY21VZ2RHOGdZWE56YVdkdUlHbDBJR0poWTJzZ2RHOGdZR04xY25KbGJuUmdPbHh1SUNwY2JpQXFJR0JoSUQwZ1lXTmpkVzExYkdGMFpVbHVkRzhvWVN3Z1lpazdZRnh1SUNwY2JpQXFJRlJvYVhNZ1FWQkpJSE5vYjNWc1pDQmlaU0J6Y0dGeWFXNW5iSGtnZFhObFpDNGdWSEo1SUdCaFkyTjFiWFZzWVhSbFlDQm1iM0lnYzI5dFpYUm9hVzVuSUdOc1pXRnVaWEl1WEc0Z0tseHVJQ29nUUhKbGRIVnliaUI3S254aGNuSmhlVHdxUG4wZ1FXNGdZV05qZFcxMWJHRjBhVzl1SUc5bUlHbDBaVzF6TGx4dUlDb3ZYRzVjYm1aMWJtTjBhVzl1SUdGalkzVnRkV3hoZEdWSmJuUnZLR04xY25KbGJuUXNJRzVsZUhRcElIdGNiaUFnSVNodVpYaDBJQ0U5SUc1MWJHd3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyRmpZM1Z0ZFd4aGRHVkpiblJ2S0M0dUxpazZJRUZqWTNWdGRXeGhkR1ZrSUdsMFpXMXpJRzExYzNRZ2JtOTBJR0psSUc1MWJHd2diM0lnZFc1a1pXWnBibVZrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2FXWWdLR04xY25KbGJuUWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYaDBPMXh1SUNCOVhHNWNiaUFnTHk4Z1FtOTBhQ0JoY21VZ2JtOTBJR1Z0Y0hSNUxpQlhZWEp1YVc1bk9pQk9aWFpsY2lCallXeHNJSGd1WTI5dVkyRjBLSGtwSUhkb1pXNGdlVzkxSUdGeVpTQnViM1JjYmlBZ0x5OGdZMlZ5ZEdGcGJpQjBhR0YwSUhnZ2FYTWdZVzRnUVhKeVlYa2dLSGdnWTI5MWJHUWdZbVVnWVNCemRISnBibWNnZDJsMGFDQmpiMjVqWVhRZ2JXVjBhRzlrS1M1Y2JpQWdkbUZ5SUdOMWNuSmxiblJKYzBGeWNtRjVJRDBnUVhKeVlYa3VhWE5CY25KaGVTaGpkWEp5Wlc1MEtUdGNiaUFnZG1GeUlHNWxlSFJKYzBGeWNtRjVJRDBnUVhKeVlYa3VhWE5CY25KaGVTaHVaWGgwS1R0Y2JseHVJQ0JwWmlBb1kzVnljbVZ1ZEVselFYSnlZWGtnSmlZZ2JtVjRkRWx6UVhKeVlYa3BJSHRjYmlBZ0lDQmpkWEp5Wlc1MExuQjFjMmd1WVhCd2JIa29ZM1Z5Y21WdWRDd2dibVY0ZENrN1hHNGdJQ0FnY21WMGRYSnVJR04xY25KbGJuUTdYRzRnSUgxY2JseHVJQ0JwWmlBb1kzVnljbVZ1ZEVselFYSnlZWGtwSUh0Y2JpQWdJQ0JqZFhKeVpXNTBMbkIxYzJnb2JtVjRkQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHTjFjbkpsYm5RN1hHNGdJSDFjYmx4dUlDQnBaaUFvYm1WNGRFbHpRWEp5WVhrcElIdGNiaUFnSUNBdkx5QkJJR0pwZENCMGIyOGdaR0Z1WjJWeWIzVnpJSFJ2SUcxMWRHRjBaU0JnYm1WNGRHQXVYRzRnSUNBZ2NtVjBkWEp1SUZ0amRYSnlaVzUwWFM1amIyNWpZWFFvYm1WNGRDazdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdXMk4xY25KbGJuUXNJRzVsZUhSZE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdGalkzVnRkV3hoZEdWSmJuUnZPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBhZGxlcjMyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTU9EID0gNjU1MjE7XG5cbi8vIGFkbGVyMzIgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZywgYW5kIGlzIG9ubHkgdXNlZCB0byBzYW5pdHkgY2hlY2sgdGhhdFxuLy8gbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyIG1hdGNoZXMgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIGNsaWVudC5cbi8vIFRoaXMgaW1wbGVtZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgU2hlZXRKUyB2ZXJzaW9uKSBoYXMgYmVlbiBvcHRpbWl6ZWRcbi8vIGZvciBvdXIgdXNlIGNhc2UsIGF0IHRoZSBleHBlbnNlIG9mIGNvbmZvcm1pbmcgdG8gdGhlIGFkbGVyMzIgc3BlY2lmaWNhdGlvblxuLy8gZm9yIG5vbi1hc2NpaSBpbnB1dHMuXG5mdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHtcbiAgdmFyIGEgPSAxO1xuICB2YXIgYiA9IDA7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBkYXRhLmxlbmd0aDtcbiAgdmFyIG0gPSBsICYgfjB4MztcbiAgd2hpbGUgKGkgPCBtKSB7XG4gICAgZm9yICg7IGkgPCBNYXRoLm1pbihpICsgNDA5NiwgbSk7IGkgKz0gNCkge1xuICAgICAgYiArPSAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAxKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDIpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMykpO1xuICAgIH1cbiAgICBhICU9IE1PRDtcbiAgICBiICU9IE1PRDtcbiAgfVxuICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgIGIgKz0gYSArPSBkYXRhLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgYSAlPSBNT0Q7XG4gIGIgJT0gTU9EO1xuICByZXR1cm4gYSB8IGIgPDwgMTY7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGNhbkRlZmluZVByb3BlcnR5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBmYWxzZTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7fSB9KTtcbiAgICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbkRlZmluZVByb3BlcnR5O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5allXNUVaV1pwYm1WUWNtOXdaWEowZVM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJqWVc1RVpXWnBibVZRY205d1pYSjBlU0E5SUdaaGJITmxPMXh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ2RISjVJSHRjYmlBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZTMwc0lDZDRKeXdnZXlCblpYUTZJR1oxYm1OMGFXOXVJQ2dwSUh0OUlIMHBPMXh1SUNBZ0lHTmhia1JsWm1sdVpWQnliM0JsY25SNUlEMGdkSEoxWlR0Y2JpQWdmU0JqWVhSamFDQW9lQ2tnZTF4dUlDQWdJQzh2SUVsRklIZHBiR3dnWm1GcGJDQnZiaUJrWldacGJtVlFjbTl3WlhKMGVWeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIazdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGRhbmdlcm91c1N0eWxlVmFsdWVcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5Jyk7XG5cbnZhciBpc1VuaXRsZXNzTnVtYmVyID0gQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcjtcblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJvcGVyIGNzcyB3cml0YWJsZSB2YWx1ZS4gVGhlIHN0eWxlIG5hbWUgYG5hbWVgXG4gKiBzaG91bGQgYmUgbG9naWNhbCAobm8gaHlwaGVucyksIGFzIHNwZWNpZmllZFxuICogaW4gYENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXJgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIENTUyBwcm9wZXJ0eSBuYW1lIHN1Y2ggYXMgYHRvcE1hcmdpbmAuXG4gKiBAcGFyYW0geyp9IHZhbHVlIENTUyBwcm9wZXJ0eSB2YWx1ZSBzdWNoIGFzIGAxMHB4YC5cbiAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBzdHlsZSB2YWx1ZSB3aXRoIGRpbWVuc2lvbnMgYXBwbGllZC5cbiAqL1xuZnVuY3Rpb24gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShuYW1lLCB2YWx1ZSkge1xuICAvLyBOb3RlIHRoYXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVUZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG4gIC8vIHdob2xlIHN0cmluZyB3aWxsIGJlIGVzY2FwZWQgd2hlbiB0aGUgYXR0cmlidXRlIGlzIGluamVjdGVkIGludG9cbiAgLy8gdGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIgZGF0YSBoZXJlIHRoZXkgY2FuIGluamVjdFxuICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVtYXRpYyAoSSBjb3VsZG4ndCByZXBybyB0aGlzKTpcbiAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcbiAgLy8gaHR0cDovL3d3dy50aGVzcGFubmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNzcy1pbmplY3Rpb24vXG4gIC8vIFRoaXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENTUyBpbmplY3Rpb24gaXNzdWVcbiAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVhdGVyIGRpc2N1c3Npb24gYWJvdXQgaG93IHdlJ3JlIGdvaW5nIHRvXG4gIC8vIHRydXN0IFVSTHMgbW92aW5nIGZvcndhcmQuIFNlZSAjMjExNTkwMVxuXG4gIHZhciBpc0VtcHR5ID0gdmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7XG4gIGlmIChpc0VtcHR5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIGlzTm9uTnVtZXJpYyA9IGlzTmFOKHZhbHVlKTtcbiAgaWYgKGlzTm9uTnVtZXJpYyB8fCB2YWx1ZSA9PT0gMCB8fCBpc1VuaXRsZXNzTnVtYmVyLmhhc093blByb3BlcnR5KG5hbWUpICYmIGlzVW5pdGxlc3NOdW1iZXJbbmFtZV0pIHtcbiAgICByZXR1cm4gJycgKyB2YWx1ZTsgLy8gY2FzdCB0byBzdHJpbmdcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlICsgJ3B4Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNTdHlsZVZhbHVlOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZGVwcmVjYXRlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogVGhpcyB3aWxsIGxvZyBhIHNpbmdsZSBkZXByZWNhdGlvbiBub3RpY2UgcGVyIGZ1bmN0aW9uIGFuZCBmb3J3YXJkIHRoZSBjYWxsXG4gKiBvbiB0byB0aGUgbmV3IEFQSS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm5OYW1lIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IG5ld01vZHVsZSBUaGUgbW9kdWxlIHRoYXQgZm4gd2lsbCBleGlzdCBpblxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1BhY2thZ2UgVGhlIG1vZHVsZSB0aGF0IGZuIHdpbGwgZXhpc3QgaW5cbiAqIEBwYXJhbSB7Kn0gY3R4IFRoZSBjb250ZXh0IHRoaXMgZm9yd2FyZGVkIGNhbGwgc2hvdWxkIHJ1biBpblxuICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGZvcndhcmQgb24gdG9cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgZnVuY3Rpb24gdGhhdCB3aWxsIHdhcm4gb25jZSBhbmQgdGhlbiBjYWxsIGZuXG4gKi9cbmZ1bmN0aW9uIGRlcHJlY2F0ZWQoZm5OYW1lLCBuZXdNb2R1bGUsIG5ld1BhY2thZ2UsIGN0eCwgZm4pIHtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBuZXdGbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5lZCxcbiAgICAgIC8vIFJlcXVpcmUgZXhhbXBsZXMgaW4gdGhpcyBzdHJpbmcgbXVzdCBiZSBzcGxpdCB0byBwcmV2ZW50IFJlYWN0J3NcbiAgICAgIC8vIGJ1aWxkIHRvb2xzIGZyb20gbWlzdGFraW5nIHRoZW0gZm9yIHJlYWwgcmVxdWlyZXMuXG4gICAgICAvLyBPdGhlcndpc2UgdGhlIGJ1aWxkIHRvb2xzIHdpbGwgYXR0ZW1wdCB0byBidWlsZCBhICclcycgbW9kdWxlLlxuICAgICAgJ1JlYWN0LiVzIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJXMuJXMgZnJvbSByZXF1aXJlJyArICcoXFwnJXNcXCcpICcgKyAnaW5zdGVhZC4nLCBmbk5hbWUsIG5ld01vZHVsZSwgZm5OYW1lLCBuZXdQYWNrYWdlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICByZXR1cm4gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgYWxsIHByb3BlcnRpZXMgb2YgdGhlIG9yaWdpbmFsIGZuIGFyZSBjb3BpZWQgb3Zlci5cbiAgICAvLyBJbiBwYXJ0aWN1bGFyLCB0aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IFByb3BUeXBlc1xuICAgIHJldHVybiBhc3NpZ24obmV3Rm4sIGZuKTtcbiAgfVxuXG4gIHJldHVybiBmbjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGVkO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5a1pYQnlaV05oZEdWa0xtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCa1pYQnlaV05oZEdWa1hHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1THlvcVhHNGdLaUJVYUdseklIZHBiR3dnYkc5bklHRWdjMmx1WjJ4bElHUmxjSEpsWTJGMGFXOXVJRzV2ZEdsalpTQndaWElnWm5WdVkzUnBiMjRnWVc1a0lHWnZjbmRoY21RZ2RHaGxJR05oYkd4Y2JpQXFJRzl1SUhSdklIUm9aU0J1WlhjZ1FWQkpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQm1iazVoYldVZ1ZHaGxJRzVoYldVZ2IyWWdkR2hsSUdaMWJtTjBhVzl1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtVjNUVzlrZFd4bElGUm9aU0J0YjJSMWJHVWdkR2hoZENCbWJpQjNhV3hzSUdWNGFYTjBJR2x1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtVjNVR0ZqYTJGblpTQlVhR1VnYlc5a2RXeGxJSFJvWVhRZ1ptNGdkMmxzYkNCbGVHbHpkQ0JwYmx4dUlDb2dRSEJoY21GdElIc3FmU0JqZEhnZ1ZHaGxJR052Ym5SbGVIUWdkR2hwY3lCbWIzSjNZWEprWldRZ1kyRnNiQ0J6YUc5MWJHUWdjblZ1SUdsdVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0JtYmlCVWFHVWdablZ1WTNScGIyNGdkRzhnWm05eWQyRnlaQ0J2YmlCMGIxeHVJQ29nUUhKbGRIVnliaUI3Wm5WdVkzUnBiMjU5SUZSb1pTQm1kVzVqZEdsdmJpQjBhR0YwSUhkcGJHd2dkMkZ5YmlCdmJtTmxJR0Z1WkNCMGFHVnVJR05oYkd3Z1ptNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pHVndjbVZqWVhSbFpDaG1iazVoYldVc0lHNWxkMDF2WkhWc1pTd2dibVYzVUdGamEyRm5aU3dnWTNSNExDQm1iaWtnZTF4dUlDQjJZWElnZDJGeWJtVmtJRDBnWm1Gc2MyVTdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdkbUZ5SUc1bGQwWnVJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29kMkZ5Ym1Wa0xGeHVJQ0FnSUNBZ0x5OGdVbVZ4ZFdseVpTQmxlR0Z0Y0d4bGN5QnBiaUIwYUdseklITjBjbWx1WnlCdGRYTjBJR0psSUhOd2JHbDBJSFJ2SUhCeVpYWmxiblFnVW1WaFkzUW5jMXh1SUNBZ0lDQWdMeThnWW5WcGJHUWdkRzl2YkhNZ1puSnZiU0J0YVhOMFlXdHBibWNnZEdobGJTQm1iM0lnY21WaGJDQnlaWEYxYVhKbGN5NWNiaUFnSUNBZ0lDOHZJRTkwYUdWeWQybHpaU0IwYUdVZ1luVnBiR1FnZEc5dmJITWdkMmxzYkNCaGRIUmxiWEIwSUhSdklHSjFhV3hrSUdFZ0p5VnpKeUJ0YjJSMWJHVXVYRzRnSUNBZ0lDQW5VbVZoWTNRdUpYTWdhWE1nWkdWd2NtVmpZWFJsWkM0Z1VHeGxZWE5sSUhWelpTQWxjeTRsY3lCbWNtOXRJSEpsY1hWcGNtVW5JQ3NnSnloY1hDY2xjMXhjSnlrZ0p5QXJJQ2RwYm5OMFpXRmtMaWNzSUdadVRtRnRaU3dnYm1WM1RXOWtkV3hsTENCbWJrNWhiV1VzSUc1bGQxQmhZMnRoWjJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdkMkZ5Ym1Wa0lEMGdkSEoxWlR0Y2JpQWdJQ0FnSUhKbGRIVnliaUJtYmk1aGNIQnNlU2hqZEhnc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ2ZUdGNiaUFnSUNBdkx5QlhaU0J1WldWa0lIUnZJRzFoYTJVZ2MzVnlaU0JoYkd3Z2NISnZjR1Z5ZEdsbGN5QnZaaUIwYUdVZ2IzSnBaMmx1WVd3Z1ptNGdZWEpsSUdOdmNHbGxaQ0J2ZG1WeUxseHVJQ0FnSUM4dklFbHVJSEJoY25ScFkzVnNZWElzSUhSb2FYTWdhWE1nYm1WbFpHVmtJSFJ2SUhOMWNIQnZjblFnVUhKdmNGUjVjR1Z6WEc0Z0lDQWdjbVYwZFhKdUlHRnpjMmxuYmlodVpYZEdiaXdnWm00cE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlHWnVPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHUmxjSEpsWTJGMFpXUTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlclxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEVTQ0FQRV9MT09LVVAgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJz4nOiAnJmd0OycsXG4gICc8JzogJyZsdDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgJ1xcJyc6ICcmI3gyNzsnXG59O1xuXG52YXIgRVNDQVBFX1JFR0VYID0gL1smPjxcIiddL2c7XG5cbmZ1bmN0aW9uIGVzY2FwZXIobWF0Y2gpIHtcbiAgcmV0dXJuIEVTQ0FQRV9MT09LVVBbbWF0Y2hdO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSB7XG4gIHJldHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKEVTQ0FQRV9SRUdFWCwgZXNjYXBlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZmluZERPTU5vZGVcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgRE9NIG5vZGUgcmVuZGVyZWQgYnkgdGhpcyBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR8RE9NRWxlbWVudH0gY29tcG9uZW50T3JFbGVtZW50XG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gVGhlIHJvb3Qgbm9kZSBvZiB0aGlzIGVsZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgaWYgKG93bmVyICE9PSBudWxsKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgZ2V0RE9NTm9kZSBvciBmaW5kRE9NTm9kZSBpbnNpZGUgaXRzIHJlbmRlcigpLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbXBvbmVudE9yRWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGNvbXBvbmVudE9yRWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBjb21wb25lbnRPckVsZW1lbnQ7XG4gIH1cbiAgaWYgKFJlYWN0SW5zdGFuY2VNYXAuaGFzKGNvbXBvbmVudE9yRWxlbWVudCkpIHtcbiAgICByZXR1cm4gUmVhY3RNb3VudC5nZXROb2RlRnJvbUluc3RhbmNlKGNvbXBvbmVudE9yRWxlbWVudCk7XG4gIH1cbiAgIShjb21wb25lbnRPckVsZW1lbnQucmVuZGVyID09IG51bGwgfHwgdHlwZW9mIGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgIT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRET01Ob2RlIHdhcyBjYWxsZWQgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IGFwcGVhcnMgdG8gYmUgbmVpdGhlciBSZWFjdENvbXBvbmVudCBub3IgRE9NTm9kZSAoa2V5czogJXMpJywgT2JqZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRET01Ob2RlO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5bWFXNWtSRTlOVG05a1pTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JtYVc1a1JFOU5UbTlrWlZ4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFRXRndJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRWx1YzNSaGJtTmxUV0Z3SnlrN1hHNTJZWElnVW1WaFkzUk5iM1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmIzVnVkQ2NwTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJSFJvWlNCRVQwMGdibTlrWlNCeVpXNWtaWEpsWkNCaWVTQjBhR2x6SUdWc1pXMWxiblF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIeEVUMDFGYkdWdFpXNTBmU0JqYjIxd2IyNWxiblJQY2tWc1pXMWxiblJjYmlBcUlFQnlaWFIxY200Z2V6OUVUMDFGYkdWdFpXNTBmU0JVYUdVZ2NtOXZkQ0J1YjJSbElHOW1JSFJvYVhNZ1pXeGxiV1Z1ZEM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWm1sdVpFUlBUVTV2WkdVb1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MEtTQjdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdkbUZ5SUc5M2JtVnlJRDBnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkRHRjYmlBZ0lDQnBaaUFvYjNkdVpYSWdJVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0c5M2JtVnlMbDkzWVhKdVpXUkJZbTkxZEZKbFpuTkpibEpsYm1SbGNpd2dKeVZ6SUdseklHRmpZMlZ6YzJsdVp5Qm5aWFJFVDAxT2IyUmxJRzl5SUdacGJtUkVUMDFPYjJSbElHbHVjMmxrWlNCcGRITWdjbVZ1WkdWeUtDa3VJQ2NnS3lBbmNtVnVaR1Z5S0NrZ2MyaHZkV3hrSUdKbElHRWdjSFZ5WlNCbWRXNWpkR2x2YmlCdlppQndjbTl3Y3lCaGJtUWdjM1JoZEdVdUlFbDBJSE5vYjNWc1pDQW5JQ3NnSjI1bGRtVnlJR0ZqWTJWemN5QnpiMjFsZEdocGJtY2dkR2hoZENCeVpYRjFhWEpsY3lCemRHRnNaU0JrWVhSaElHWnliMjBnZEdobElIQnlaWFpwYjNWeklDY2dLeUFuY21WdVpHVnlMQ0J6ZFdOb0lHRnpJSEpsWm5NdUlFMXZkbVVnZEdocGN5QnNiMmRwWXlCMGJ5QmpiMjF3YjI1bGJuUkVhV1JOYjNWdWRDQmhibVFnSnlBcklDZGpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVWdhVzV6ZEdWaFpDNG5MQ0J2ZDI1bGNpNW5aWFJPWVcxbEtDa2dmSHdnSjBFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J2ZDI1bGNpNWZkMkZ5Ym1Wa1FXSnZkWFJTWldaelNXNVNaVzVrWlhJZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0JwWmlBb1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MElEMDlJRzUxYkd3cElIdGNiaUFnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlZ4dUlDQnBaaUFvWTI5dGNHOXVaVzUwVDNKRmJHVnRaVzUwTG01dlpHVlVlWEJsSUQwOVBTQXhLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHTnZiWEJ2Ym1WdWRFOXlSV3hsYldWdWREdGNiaUFnZlZ4dUlDQnBaaUFvVW1WaFkzUkpibk4wWVc1alpVMWhjQzVvWVhNb1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MEtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdWR2NtOXRTVzV6ZEdGdVkyVW9ZMjl0Y0c5dVpXNTBUM0pGYkdWdFpXNTBLVHRjYmlBZ2ZWeHVJQ0FoS0dOdmJYQnZibVZ1ZEU5eVJXeGxiV1Z1ZEM1eVpXNWtaWElnUFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnWTI5dGNHOXVaVzUwVDNKRmJHVnRaVzUwTG5KbGJtUmxjaUFoUFQwZ0oyWjFibU4wYVc5dUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblptbHVaRVJQVFU1dlpHVWdkMkZ6SUdOaGJHeGxaQ0J2YmlCaGJpQjFibTF2ZFc1MFpXUWdZMjl0Y0c5dVpXNTBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSVdaaGJITmxJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVnNaVzFsYm5RZ1lYQndaV0Z5Y3lCMGJ5QmlaU0J1WldsMGFHVnlJRkpsWVdOMFEyOXRjRzl1Wlc1MElHNXZjaUJFVDAxT2IyUmxJQ2hyWlhsek9pQWxjeWtuTENCUFltcGxZM1F1YTJWNWN5aGpiMjF3YjI1bGJuUlBja1ZzWlcxbGJuUXBLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWm1sdVpFUlBUVTV2WkdVN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGZsYXR0ZW5DaGlsZHJlblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZlcnNhbC5cbiAqIEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50fSBjaGlsZCBSZWFjdCBjaGlsZCBjb21wb25lbnQuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWUgU3RyaW5nIG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG4gIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG4gIHZhciBrZXlVbmlxdWUgPSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhrZXlVbmlxdWUsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4nLCBuYW1lKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoa2V5VW5pcXVlICYmIGNoaWxkICE9IG51bGwpIHtcbiAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDtcbiAgfVxufVxuXG4vKipcbiAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGxcbiAqIGNoaWxkcmVuIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LlxuICogQHJldHVybiB7IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5IG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgcmVzdWx0ID0ge307XG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5DaGlsZHJlbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOW1iR0YwZEdWdVEyaHBiR1J5Wlc0dWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUdac1lYUjBaVzVEYUdsc1pISmxibHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUhSeVlYWmxjbk5sUVd4c1EyaHBiR1J5Wlc0Z1BTQnlaWEYxYVhKbEtDY3VMM1J5WVhabGNuTmxRV3hzUTJocGJHUnlaVzRuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNHZLaXBjYmlBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlIUnlZWFpsY25ObFEyOXVkR1Y0ZENCRGIyNTBaWGgwSUhCaGMzTmxaQ0IwYUhKdmRXZG9JSFJ5WVhabGNuTmhiQzVjYmlBcUlFQndZWEpoYlNCN1AxSmxZV04wUTI5dGNHOXVaVzUwZlNCamFHbHNaQ0JTWldGamRDQmphR2xzWkNCamIyMXdiMjVsYm5RdVhHNGdLaUJBY0dGeVlXMGdleUZ6ZEhKcGJtZDlJRzVoYldVZ1UzUnlhVzVuSUc1aGJXVWdiMllnYTJWNUlIQmhkR2dnZEc4Z1kyaHBiR1F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1pzWVhSMFpXNVRhVzVuYkdWRGFHbHNaRWx1ZEc5RGIyNTBaWGgwS0hSeVlYWmxjbk5sUTI5dWRHVjRkQ3dnWTJocGJHUXNJRzVoYldVcElIdGNiaUFnTHk4Z1YyVWdabTkxYm1RZ1lTQmpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVXVYRzRnSUhaaGNpQnlaWE4xYkhRZ1BTQjBjbUYyWlhKelpVTnZiblJsZUhRN1hHNGdJSFpoY2lCclpYbFZibWx4ZFdVZ1BTQnlaWE4xYkhSYmJtRnRaVjBnUFQwOUlIVnVaR1ZtYVc1bFpEdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhyWlhsVmJtbHhkV1VzSUNkbWJHRjBkR1Z1UTJocGJHUnlaVzRvTGk0dUtUb2dSVzVqYjNWdWRHVnlaV1FnZEhkdklHTm9hV3hrY21WdUlIZHBkR2dnZEdobElITmhiV1VnYTJWNUxDQW5JQ3NnSjJBbGMyQXVJRU5vYVd4a0lHdGxlWE1nYlhWemRDQmlaU0IxYm1seGRXVTdJSGRvWlc0Z2RIZHZJR05vYVd4a2NtVnVJSE5vWVhKbElHRWdhMlY1TENCdmJteDVJQ2NnS3lBbmRHaGxJR1pwY25OMElHTm9hV3hrSUhkcGJHd2dZbVVnZFhObFpDNG5MQ0J1WVcxbEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVJQ0JwWmlBb2EyVjVWVzVwY1hWbElDWW1JR05vYVd4a0lDRTlJRzUxYkd3cElIdGNiaUFnSUNCeVpYTjFiSFJiYm1GdFpWMGdQU0JqYUdsc1pEdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRVpzWVhSMFpXNXpJR05vYVd4a2NtVnVJSFJvWVhRZ1lYSmxJSFI1Y0dsallXeHNlU0J6Y0dWamFXWnBaV1FnWVhNZ1lIQnliM0J6TG1Ob2FXeGtjbVZ1WUM0Z1FXNTVJRzUxYkd4Y2JpQXFJR05vYVd4a2NtVnVJSGRwYkd3Z2JtOTBJR0psSUdsdVkyeDFaR1ZrSUdsdUlIUm9aU0J5WlhOMWJIUnBibWNnYjJKcVpXTjBMbHh1SUNvZ1FISmxkSFZ5YmlCN0lXOWlhbVZqZEgwZ1pteGhkSFJsYm1Wa0lHTm9hV3hrY21WdUlHdGxlV1ZrSUdKNUlHNWhiV1V1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1pzWVhSMFpXNURhR2xzWkhKbGJpaGphR2xzWkhKbGJpa2dlMXh1SUNCcFppQW9ZMmhwYkdSeVpXNGdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCamFHbHNaSEpsYmp0Y2JpQWdmVnh1SUNCMllYSWdjbVZ6ZFd4MElEMGdlMzA3WEc0Z0lIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNG9ZMmhwYkdSeVpXNHNJR1pzWVhSMFpXNVRhVzVuYkdWRGFHbHNaRWx1ZEc5RGIyNTBaWGgwTENCeVpYTjFiSFFwTzF4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1pzWVhSMFpXNURhR2xzWkhKbGJqc2lYWDA9IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGZvckVhY2hBY2N1bXVsYXRlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge2FycmF5fSBhcnIgYW4gXCJhY2N1bXVsYXRpb25cIiBvZiBpdGVtcyB3aGljaCBpcyBlaXRoZXIgYW4gQXJyYXkgb3JcbiAqIGEgc2luZ2xlIGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRoZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGFcbiAqIHNpbXBsZSB1dGlsaXR5IHRoYXQgYWxsb3dzIHVzIHRvIHJlYXNvbiBhYm91dCBhIGNvbGxlY3Rpb24gb2YgaXRlbXMsIGJ1dFxuICogaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBleGFjdGx5IG9uZSBpdGVtIChhbmQgd2UgZG8gbm90IG5lZWQgdG9cbiAqIGFsbG9jYXRlIGFuIGFycmF5KS5cbiAqL1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IGZ1bmN0aW9uIChhcnIsIGNiLCBzY29wZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgYXJyLmZvckVhY2goY2IsIHNjb3BlKTtcbiAgfSBlbHNlIGlmIChhcnIpIHtcbiAgICBjYi5jYWxsKHNjb3BlLCBhcnIpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2hBY2N1bXVsYXRlZDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0RXZlbnRDaGFyQ29kZVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogYGNoYXJDb2RlYCByZXByZXNlbnRzIHRoZSBhY3R1YWwgXCJjaGFyYWN0ZXIgY29kZVwiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRoXG4gKiBgU3RyaW5nLmZyb21DaGFyQ29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJpbnRhYmxlXG4gKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci5cbiAqIFRoZSBUYWIta2V5IGlzIGNvbnNpZGVyZWQgbm9uLXByaW50YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29kZWAsXG4gKiBwcmVzdW1hYmx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIgaW4gYnJvd3NlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGNoYXJDb2RlO1xuICB2YXIga2V5Q29kZSA9IG5hdGl2ZUV2ZW50LmtleUNvZGU7XG5cbiAgaWYgKCdjaGFyQ29kZScgaW4gbmF0aXZlRXZlbnQpIHtcbiAgICBjaGFyQ29kZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlO1xuXG4gICAgLy8gRkYgZG9lcyBub3Qgc2V0IGBjaGFyQ29kZWAgZm9yIHRoZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3QgYGtleUNvZGVgLlxuICAgIGlmIChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykge1xuICAgICAgY2hhckNvZGUgPSAxMztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBgY2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS5cbiAgICBjaGFyQ29kZSA9IGtleUNvZGU7XG4gIH1cblxuICAvLyBTb21lIG5vbi1wcmludGFibGUga2V5cyBhcmUgcmVwb3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQgdGhlbS5cbiAgLy8gTXVzdCBub3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRhYmxlIEVudGVyLWtleS5cbiAgaWYgKGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykge1xuICAgIHJldHVybiBjaGFyQ29kZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50Q2hhckNvZGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldEV2ZW50S2V5XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtcblxuLyoqXG4gKiBOb3JtYWxpemF0aW9uIG9mIGRlcHJlY2F0ZWQgSFRNTDUgYGtleWAgdmFsdWVzXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lc1xuICovXG52YXIgbm9ybWFsaXplS2V5ID0ge1xuICAnRXNjJzogJ0VzY2FwZScsXG4gICdTcGFjZWJhcic6ICcgJyxcbiAgJ0xlZnQnOiAnQXJyb3dMZWZ0JyxcbiAgJ1VwJzogJ0Fycm93VXAnLFxuICAnUmlnaHQnOiAnQXJyb3dSaWdodCcsXG4gICdEb3duJzogJ0Fycm93RG93bicsXG4gICdEZWwnOiAnRGVsZXRlJyxcbiAgJ1dpbic6ICdPUycsXG4gICdNZW51JzogJ0NvbnRleHRNZW51JyxcbiAgJ0FwcHMnOiAnQ29udGV4dE1lbnUnLFxuICAnU2Nyb2xsJzogJ1Njcm9sbExvY2snLFxuICAnTW96UHJpbnRhYmxlS2V5JzogJ1VuaWRlbnRpZmllZCdcbn07XG5cbi8qKlxuICogVHJhbnNsYXRpb24gZnJvbSBsZWdhY3kgYGtleUNvZGVgIHRvIEhUTUw1IGBrZXlgXG4gKiBPbmx5IHNwZWNpYWwga2V5cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMgZGVwZW5kIG9uIGtleWJvYXJkIGxheW91dCBvciBicm93c2VyXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lc1xuICovXG52YXIgdHJhbnNsYXRlVG9LZXkgPSB7XG4gIDg6ICdCYWNrc3BhY2UnLFxuICA5OiAnVGFiJyxcbiAgMTI6ICdDbGVhcicsXG4gIDEzOiAnRW50ZXInLFxuICAxNjogJ1NoaWZ0JyxcbiAgMTc6ICdDb250cm9sJyxcbiAgMTg6ICdBbHQnLFxuICAxOTogJ1BhdXNlJyxcbiAgMjA6ICdDYXBzTG9jaycsXG4gIDI3OiAnRXNjYXBlJyxcbiAgMzI6ICcgJyxcbiAgMzM6ICdQYWdlVXAnLFxuICAzNDogJ1BhZ2VEb3duJyxcbiAgMzU6ICdFbmQnLFxuICAzNjogJ0hvbWUnLFxuICAzNzogJ0Fycm93TGVmdCcsXG4gIDM4OiAnQXJyb3dVcCcsXG4gIDM5OiAnQXJyb3dSaWdodCcsXG4gIDQwOiAnQXJyb3dEb3duJyxcbiAgNDU6ICdJbnNlcnQnLFxuICA0NjogJ0RlbGV0ZScsXG4gIDExMjogJ0YxJywgMTEzOiAnRjInLCAxMTQ6ICdGMycsIDExNTogJ0Y0JywgMTE2OiAnRjUnLCAxMTc6ICdGNicsXG4gIDExODogJ0Y3JywgMTE5OiAnRjgnLCAxMjA6ICdGOScsIDEyMTogJ0YxMCcsIDEyMjogJ0YxMScsIDEyMzogJ0YxMicsXG4gIDE0NDogJ051bUxvY2snLFxuICAxNDU6ICdTY3JvbGxMb2NrJyxcbiAgMjI0OiAnTWV0YSdcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIGBrZXlgIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBnZXRFdmVudEtleShuYXRpdmVFdmVudCkge1xuICBpZiAobmF0aXZlRXZlbnQua2V5KSB7XG4gICAgLy8gTm9ybWFsaXplIGluY29uc2lzdGVudCB2YWx1ZXMgcmVwb3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvXG4gICAgLy8gaW1wbGVtZW50YXRpb25zIG9mIGEgd29ya2luZyBkcmFmdCBzcGVjaWZpY2F0aW9uLlxuXG4gICAgLy8gRmlyZUZveCBpbXBsZW1lbnRzIGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlgIGZvciBhbGxcbiAgICAvLyBwcmludGFibGUgY2hhcmFjdGVycyAobm9ybWFsaXplZCB0byBgVW5pZGVudGlmaWVkYCksIGlnbm9yZSBpdC5cbiAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5W25hdGl2ZUV2ZW50LmtleV0gfHwgbmF0aXZlRXZlbnQua2V5O1xuICAgIGlmIChrZXkgIT09ICdVbmlkZW50aWZpZWQnKSB7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEJyb3dzZXIgZG9lcyBub3QgaW1wbGVtZW50IGBrZXlgLCBwb2x5ZmlsbCBhcyBtdWNoIG9mIGl0IGFzIHdlIGNhbi5cbiAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICB2YXIgY2hhckNvZGUgPSBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KTtcblxuICAgIC8vIFRoZSBlbnRlci1rZXkgaXMgdGVjaG5pY2FsbHkgYm90aCBwcmludGFibGUgYW5kIG5vbi1wcmludGFibGUgYW5kIGNhblxuICAgIC8vIHRodXMgYmUgY2FwdHVyZWQgYnkgYGtleXByZXNzYCwgbm8gb3RoZXIgbm9uLXByaW50YWJsZSBrZXkgc2hvdWxkLlxuICAgIHJldHVybiBjaGFyQ29kZSA9PT0gMTMgPyAnRW50ZXInIDogU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7XG4gIH1cbiAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBuYXRpdmVFdmVudC50eXBlID09PSAna2V5dXAnKSB7XG4gICAgLy8gV2hpbGUgdXNlciBrZXlib2FyZCBsYXlvdXQgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIG1lYW5pbmcgb2YgZWFjaFxuICAgIC8vIGBrZXlDb2RlYCB2YWx1ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUgYSB1bml2ZXJzYWwgdmFsdWUuXG4gICAgcmV0dXJuIHRyYW5zbGF0ZVRvS2V5W25hdGl2ZUV2ZW50LmtleUNvZGVdIHx8ICdVbmlkZW50aWZpZWQnO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudEtleTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0RXZlbnRNb2RpZmllclN0YXRlXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBUcmFuc2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQuXG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2RpZmllcnNcbiAqL1xuXG52YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7XG4gICdBbHQnOiAnYWx0S2V5JyxcbiAgJ0NvbnRyb2wnOiAnY3RybEtleScsXG4gICdNZXRhJzogJ21ldGFLZXknLFxuICAnU2hpZnQnOiAnc2hpZnRLZXknXG59O1xuXG4vLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGdldE1vZGlmaWVyU3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0byB0aGUgb25seVxuLy8gbW9kaWZpZXIga2V5cyBleHBvc2VkIGJ5IHRoZSBldmVudCBpdHNlbGYsIGRvZXMgbm90IHN1cHBvcnQgTG9jay1rZXlzLlxuLy8gQ3VycmVudGx5LCBhbGwgbWFqb3IgYnJvd3NlcnMgZXhjZXB0IENocm9tZSBzZWVtcyB0byBzdXBwb3J0IExvY2sta2V5cy5cbmZ1bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIoa2V5QXJnKSB7XG4gIHZhciBzeW50aGV0aWNFdmVudCA9IHRoaXM7XG4gIHZhciBuYXRpdmVFdmVudCA9IHN5bnRoZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50O1xuICBpZiAobmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSkge1xuICAgIHJldHVybiBuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKGtleUFyZyk7XG4gIH1cbiAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJvcFtrZXlBcmddO1xuICByZXR1cm4ga2V5UHJvcCA/ICEhbmF0aXZlRXZlbnRba2V5UHJvcF0gOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RXZlbnRNb2RpZmllclN0YXRlKG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiBtb2RpZmllclN0YXRlR2V0dGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50TW9kaWZpZXJTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0RXZlbnRUYXJnZXRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdldHMgdGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVudCBieSBhY2NvdW50aW5nIGZvclxuICogaW5jb25zaXN0ZW5jaWVzIGluIGJyb3dzZXIgRE9NIEFQSXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2RlLlxuICovXG5mdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkge1xuICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuICAvLyBTYWZhcmkgbWF5IGZpcmUgZXZlbnRzIG9uIHRleHQgbm9kZXMgKE5vZGUuVEVYVF9OT0RFIGlzIDMpLlxuICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMuaHRtbFxuICByZXR1cm4gdGFyZ2V0Lm5vZGVUeXBlID09PSAzID8gdGFyZ2V0LnBhcmVudE5vZGUgOiB0YXJnZXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRUYXJnZXQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldEl0ZXJhdG9yRm5cbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKiBnbG9iYWwgU3ltYm9sICovXG52YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gKlxuICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XG4gKlxuICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcbiAqICAgICBpZiAoaXRlcmF0b3JGbikge1xuICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICogICAgICAgLi4uXG4gKiAgICAgfVxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuICogQHJldHVybiB7P2Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTtcbiAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm47XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRJdGVyYXRvckZuOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVuIGFueSBub2RlIHJldHVybiB0aGUgZmlyc3QgbGVhZiBub2RlIHdpdGhvdXQgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHtET01FbGVtZW50fERPTVRleHROb2RlfVxuICovXG5mdW5jdGlvbiBnZXRMZWFmTm9kZShub2RlKSB7XG4gIHdoaWxlIChub2RlICYmIG5vZGUuZmlyc3RDaGlsZCkge1xuICAgIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gIH1cbiAgcmV0dXJuIG5vZGU7XG59XG5cbi8qKlxuICogR2V0IHRoZSBuZXh0IHNpYmxpbmcgd2l0aGluIGEgY29udGFpbmVyLiBUaGlzIHdpbGwgd2FsayB1cCB0aGVcbiAqIERPTSBpZiBhIG5vZGUncyBzaWJsaW5ncyBoYXZlIGJlZW4gZXhoYXVzdGVkLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHJldHVybiB7P0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9XG4gKi9cbmZ1bmN0aW9uIGdldFNpYmxpbmdOb2RlKG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBpZiAobm9kZS5uZXh0U2libGluZykge1xuICAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmc7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdoaWNoIGNvbnRhaW4gY2hhcmFjdGVycyBhdCBvZmZzZXQuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSByb290XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcmV0dXJuIHs/b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KHJvb3QsIG9mZnNldCkge1xuICB2YXIgbm9kZSA9IGdldExlYWZOb2RlKHJvb3QpO1xuICB2YXIgbm9kZVN0YXJ0ID0gMDtcbiAgdmFyIG5vZGVFbmQgPSAwO1xuXG4gIHdoaWxlIChub2RlKSB7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIG5vZGVFbmQgPSBub2RlU3RhcnQgKyBub2RlLnRleHRDb250ZW50Lmxlbmd0aDtcblxuICAgICAgaWYgKG5vZGVTdGFydCA8PSBvZmZzZXQgJiYgbm9kZUVuZCA+PSBvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0IC0gbm9kZVN0YXJ0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG5vZGVTdGFydCA9IG5vZGVFbmQ7XG4gICAgfVxuXG4gICAgbm9kZSA9IGdldExlYWZOb2RlKGdldFNpYmxpbmdOb2RlKG5vZGUpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldFRleHRDb250ZW50QWNjZXNzb3JcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBjb250ZW50S2V5ID0gbnVsbDtcblxuLyoqXG4gKiBHZXRzIHRoZSBrZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50IG9uIGEgRE9NIG5vZGUuXG4gKlxuICogQHJldHVybiB7P3N0cmluZ30gS2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXRUZXh0Q29udGVudEFjY2Vzc29yKCkge1xuICBpZiAoIWNvbnRlbnRLZXkgJiYgRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gICAgLy8gUHJlZmVyIHRleHRDb250ZW50IHRvIGlubmVyVGV4dCBiZWNhdXNlIG1hbnkgYnJvd3NlcnMgc3VwcG9ydCBib3RoIGJ1dFxuICAgIC8vIFNWRyA8dGV4dD4gZWxlbWVudHMgZG9uJ3Qgc3VwcG9ydCBpbm5lclRleHQgZXZlbiB3aGVuIDxkaXY+IGRvZXMuXG4gICAgY29udGVudEtleSA9ICd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gJ3RleHRDb250ZW50JyA6ICdpbm5lclRleHQnO1xuICB9XG4gIHJldHVybiBjb250ZW50S2V5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRleHRDb250ZW50QWNjZXNzb3I7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3ROYXRpdmVDb21wb25lbnQnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8vIFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwgY2xhc3MgaW4gdGhpcyBtb2R1bGVcbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7fTtcbmFzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5NaXhpbiwge1xuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxufSk7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSB0eXBlIHJlZmVyZW5jZSBpcyBhIGtub3duIGludGVybmFsIHR5cGUuIEkuZS4gbm90IGEgdXNlclxuICogcHJvdmlkZWQgY29tcG9zaXRlIHR5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSB2YWxpZCBpbnRlcm5hbCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc0ludGVybmFsQ29tcG9uZW50VHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0Tm9kZSwgY3JlYXRlIGFuIGluc3RhbmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLlxuICpcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9IEEgbmV3IGluc3RhbmNlIG9mIHRoZSBlbGVtZW50J3MgY29uc3RydWN0b3IuXG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobm9kZSkge1xuICB2YXIgaW5zdGFuY2U7XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcbiAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdEVtcHR5Q29tcG9uZW50KGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBlbGVtZW50ID0gbm9kZTtcbiAgICAhKGVsZW1lbnQgJiYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSAnICsgJ29yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCBlbGVtZW50LnR5cGUgPT0gbnVsbCA/IGVsZW1lbnQudHlwZSA6IHR5cGVvZiBlbGVtZW50LnR5cGUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShlbGVtZW50Ll9vd25lcikpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0TmF0aXZlQ29tcG9uZW50LmNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5hbENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBlKSkge1xuICAgICAgLy8gVGhpcyBpcyB0ZW1wb3JhcmlseSBhdmFpbGFibGUgZm9yIGN1c3RvbSBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBzdHJpbmdcbiAgICAgIC8vIHJlcHJlc2VudGF0aW9ucy4gSS5lLiBBUlQuIE9uY2UgdGhvc2UgYXJlIHVwZGF0ZWQgdG8gdXNlIHRoZSBzdHJpbmdcbiAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB3ZSBjYW4gZHJvcCB0aGlzIGNvZGUgcGF0aC5cbiAgICAgIGluc3RhbmNlID0gbmV3IGVsZW1lbnQudHlwZShlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZSA9PT0gJ251bWJlcicpIHtcbiAgICBpbnN0YW5jZSA9IFJlYWN0TmF0aXZlQ29tcG9uZW50LmNyZWF0ZUluc3RhbmNlRm9yVGV4dChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRW5jb3VudGVyZWQgaW52YWxpZCBSZWFjdCBub2RlIG9mIHR5cGUgJXMnLCB0eXBlb2Ygbm9kZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdGFuY2UuY29uc3RydWN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4gYmUgbW91bnRlZC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFNldHMgdXAgdGhlIGluc3RhbmNlLiBUaGlzIGNhbiBwcm9iYWJseSBqdXN0IG1vdmUgaW50byB0aGUgY29uc3RydWN0b3Igbm93LlxuICBpbnN0YW5jZS5jb25zdHJ1Y3Qobm9kZSk7XG5cbiAgLy8gVGhlc2UgdHdvIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgRE9NIGFuZCBBUlQgZGlmZmluZyBhbGdvcml0aG1zXG4gIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2luZyBleHBhbmRvcyBvbiBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmVcbiAgLy8gc3RvcmluZyB0aGUgc3RhdGUgbmVlZGVkIGJ5IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLlxuICBpbnN0YW5jZS5fbW91bnRJbmRleCA9IDA7XG4gIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGluc3RhbmNlLl9pc093bmVyTmVjZXNzYXJ5ID0gZmFsc2U7XG4gICAgaW5zdGFuY2UuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gZmFsc2U7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBpbnN0YW5jZXMgc2hvdWxkIGZ1bGx5IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXkgc2hvdWxkXG4gIC8vIG5vdCBnZXQgYW55IG5ldyBmaWVsZHMgYWRkZWQgdG8gdGhlbSBhdCB0aGlzIHBvaW50LlxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHtcbiAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhpbnN0YW5jZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUdsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblJjYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZiWEIwZVVOdmJYQnZibVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJYQjBlVU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFRtRjBhWFpsUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEU1aGRHbDJaVU52YlhCdmJtVnVkQ2NwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVMeThnVkc4Z1lYWnZhV1FnWVNCamVXTnNhV01nWkdWd1pXNWtaVzVqZVN3Z2QyVWdZM0psWVhSbElIUm9aU0JtYVc1aGJDQmpiR0Z6Y3lCcGJpQjBhR2x6SUcxdlpIVnNaVnh1ZG1GeUlGSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwVjNKaGNIQmxjaUE5SUdaMWJtTjBhVzl1SUNncElIdDlPMXh1WVhOemFXZHVLRkpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MFYzSmhjSEJsY2k1d2NtOTBiM1I1Y0dVc0lGSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwTGsxcGVHbHVMQ0I3WEc0Z0lGOXBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1ME9pQnBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MFhHNTlLVHRjYmx4dVpuVnVZM1JwYjI0Z1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtHOTNibVZ5S1NCN1hHNGdJR2xtSUNodmQyNWxjaWtnZTF4dUlDQWdJSFpoY2lCdVlXMWxJRDBnYjNkdVpYSXVaMlYwVG1GdFpTZ3BPMXh1SUNBZ0lHbG1JQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0p5QkRhR1ZqYXlCMGFHVWdjbVZ1WkdWeUlHMWxkR2h2WkNCdlppQmdKeUFySUc1aGJXVWdLeUFuWUM0bk8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnSnljN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJobFkyc2dhV1lnZEdobElIUjVjR1VnY21WbVpYSmxibU5sSUdseklHRWdhMjV2ZDI0Z2FXNTBaWEp1WVd3Z2RIbHdaUzRnU1M1bExpQnViM1FnWVNCMWMyVnlYRzRnS2lCd2NtOTJhV1JsWkNCamIyMXdiM05wZEdVZ2RIbHdaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0IwZVhCbFhHNGdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JTWlhSMWNtNXpJSFJ5ZFdVZ2FXWWdkR2hwY3lCcGN5QmhJSFpoYkdsa0lHbHVkR1Z5Ym1Gc0lIUjVjR1V1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x6U1c1MFpYSnVZV3hEYjIxd2IyNWxiblJVZVhCbEtIUjVjR1VwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCMGVYQmxJRDA5UFNBblpuVnVZM1JwYjI0bklDWW1JSFI1Y0dWdlppQjBlWEJsTG5CeWIzUnZkSGx3WlNBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NnSmlZZ2RIbHdaVzltSUhSNWNHVXVjSEp2ZEc5MGVYQmxMbTF2ZFc1MFEyOXRjRzl1Wlc1MElEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlIUjVjR1Z2WmlCMGVYQmxMbkJ5YjNSdmRIbHdaUzV5WldObGFYWmxRMjl0Y0c5dVpXNTBJRDA5UFNBblpuVnVZM1JwYjI0bk8xeHVmVnh1WEc0dktpcGNiaUFxSUVkcGRtVnVJR0VnVW1WaFkzUk9iMlJsTENCamNtVmhkR1VnWVc0Z2FXNXpkR0Z1WTJVZ2RHaGhkQ0IzYVd4c0lHRmpkSFZoYkd4NUlHSmxJRzF2ZFc1MFpXUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEU1dlpHVjlJRzV2WkdWY2JpQXFJRUJ5WlhSMWNtNGdlMjlpYW1WamRIMGdRU0J1WlhjZ2FXNXpkR0Z1WTJVZ2IyWWdkR2hsSUdWc1pXMWxiblFuY3lCamIyNXpkSEoxWTNSdmNpNWNiaUFxSUVCd2NtOTBaV04wWldSY2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2h1YjJSbEtTQjdYRzRnSUhaaGNpQnBibk4wWVc1alpUdGNibHh1SUNCcFppQW9ibTlrWlNBOVBUMGdiblZzYkNCOGZDQnViMlJsSUQwOVBTQm1ZV3h6WlNrZ2UxeHVJQ0FnSUdsdWMzUmhibU5sSUQwZ2JtVjNJRkpsWVdOMFJXMXdkSGxEYjIxd2IyNWxiblFvYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2s3WEc0Z0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHNXZaR1VnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ2RtRnlJR1ZzWlcxbGJuUWdQU0J1YjJSbE8xeHVJQ0FnSUNFb1pXeGxiV1Z1ZENBbUppQW9kSGx3Wlc5bUlHVnNaVzFsYm5RdWRIbHdaU0E5UFQwZ0oyWjFibU4wYVc5dUp5QjhmQ0IwZVhCbGIyWWdaV3hsYldWdWRDNTBlWEJsSUQwOVBTQW5jM1J5YVc1bkp5a3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVnNaVzFsYm5RZ2RIbHdaU0JwY3lCcGJuWmhiR2xrT2lCbGVIQmxZM1JsWkNCaElITjBjbWx1WnlBb1ptOXlJR0oxYVd4MExXbHVJR052YlhCdmJtVnVkSE1wSUNjZ0t5QW5iM0lnWVNCamJHRnpjeTltZFc1amRHbHZiaUFvWm05eUlHTnZiWEJ2YzJsMFpTQmpiMjF3YjI1bGJuUnpLU0JpZFhRZ1oyOTBPaUFsY3k0bGN5Y3NJR1ZzWlcxbGJuUXVkSGx3WlNBOVBTQnVkV3hzSUQ4Z1pXeGxiV1Z1ZEM1MGVYQmxJRG9nZEhsd1pXOW1JR1ZzWlcxbGJuUXVkSGx3WlN3Z1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtHVnNaVzFsYm5RdVgyOTNibVZ5S1NrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdMeThnVTNCbFkybGhiQ0JqWVhObElITjBjbWx1WnlCMllXeDFaWE5jYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR1ZzWlcxbGJuUXVkSGx3WlNBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJR2x1YzNSaGJtTmxJRDBnVW1WaFkzUk9ZWFJwZG1WRGIyMXdiMjVsYm5RdVkzSmxZWFJsU1c1MFpYSnVZV3hEYjIxd2IyNWxiblFvWld4bGJXVnVkQ2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hwYzBsdWRHVnlibUZzUTI5dGNHOXVaVzUwVkhsd1pTaGxiR1Z0Wlc1MExuUjVjR1VwS1NCN1hHNGdJQ0FnSUNBdkx5QlVhR2x6SUdseklIUmxiWEJ2Y21GeWFXeDVJR0YyWVdsc1lXSnNaU0JtYjNJZ1kzVnpkRzl0SUdOdmJYQnZibVZ1ZEhNZ2RHaGhkQ0JoY21VZ2JtOTBJSE4wY21sdVoxeHVJQ0FnSUNBZ0x5OGdjbVZ3Y21WelpXNTBZWFJwYjI1ekxpQkpMbVV1SUVGU1ZDNGdUMjVqWlNCMGFHOXpaU0JoY21VZ2RYQmtZWFJsWkNCMGJ5QjFjMlVnZEdobElITjBjbWx1WjF4dUlDQWdJQ0FnTHk4Z2NtVndjbVZ6Wlc1MFlYUnBiMjRzSUhkbElHTmhiaUJrY205d0lIUm9hWE1nWTI5a1pTQndZWFJvTGx4dUlDQWdJQ0FnYVc1emRHRnVZMlVnUFNCdVpYY2daV3hsYldWdWRDNTBlWEJsS0dWc1pXMWxiblFwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnBibk4wWVc1alpTQTlJRzVsZHlCU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkRmR5WVhCd1pYSW9LVHRjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUc1dlpHVWdQVDA5SUNkemRISnBibWNuSUh4OElIUjVjR1Z2WmlCdWIyUmxJRDA5UFNBbmJuVnRZbVZ5SnlrZ2UxeHVJQ0FnSUdsdWMzUmhibU5sSUQwZ1VtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUXVZM0psWVhSbFNXNXpkR0Z1WTJWR2IzSlVaWGgwS0c1dlpHVXBPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0ZtWVd4elpTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmJtTnZkVzUwWlhKbFpDQnBiblpoYkdsa0lGSmxZV04wSUc1dlpHVWdiMllnZEhsd1pTQWxjeWNzSUhSNWNHVnZaaUJ1YjJSbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hSNWNHVnZaaUJwYm5OMFlXNWpaUzVqYjI1emRISjFZM1FnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnZEhsd1pXOW1JR2x1YzNSaGJtTmxMbTF2ZFc1MFEyOXRjRzl1Wlc1MElEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlIUjVjR1Z2WmlCcGJuTjBZVzVqWlM1eVpXTmxhWFpsUTI5dGNHOXVaVzUwSUQwOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUhSNWNHVnZaaUJwYm5OMFlXNWpaUzUxYm0xdmRXNTBRMjl0Y0c5dVpXNTBJRDA5UFNBblpuVnVZM1JwYjI0bkxDQW5UMjVzZVNCU1pXRmpkQ0JEYjIxd2IyNWxiblJ6SUdOaGJpQmlaU0J0YjNWdWRHVmtMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc1Y2JpQWdMeThnVTJWMGN5QjFjQ0IwYUdVZ2FXNXpkR0Z1WTJVdUlGUm9hWE1nWTJGdUlIQnliMkpoWW14NUlHcDFjM1FnYlc5MlpTQnBiblJ2SUhSb1pTQmpiMjV6ZEhKMVkzUnZjaUJ1YjNjdVhHNGdJR2x1YzNSaGJtTmxMbU52Ym5OMGNuVmpkQ2h1YjJSbEtUdGNibHh1SUNBdkx5QlVhR1Z6WlNCMGQyOGdabWxsYkdSeklHRnlaU0IxYzJWa0lHSjVJSFJvWlNCRVQwMGdZVzVrSUVGU1ZDQmthV1ptYVc1bklHRnNaMjl5YVhSb2JYTmNiaUFnTHk4Z2NtVnpjR1ZqZEdsMlpXeDVMaUJKYm5OMFpXRmtJRzltSUhWemFXNW5JR1Y0Y0dGdVpHOXpJRzl1SUdOdmJYQnZibVZ1ZEhNc0lIZGxJSE5vYjNWc1pDQmlaVnh1SUNBdkx5QnpkRzl5YVc1bklIUm9aU0J6ZEdGMFpTQnVaV1ZrWldRZ1lua2dkR2hsSUdScFptWnBibWNnWVd4bmIzSnBkR2h0Y3lCbGJITmxkMmhsY21VdVhHNGdJR2x1YzNSaGJtTmxMbDl0YjNWdWRFbHVaR1Y0SUQwZ01EdGNiaUFnYVc1emRHRnVZMlV1WDIxdmRXNTBTVzFoWjJVZ1BTQnVkV3hzTzF4dVhHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2FXNXpkR0Z1WTJVdVgybHpUM2R1WlhKT1pXTmxjM05oY25rZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JwYm5OMFlXNWpaUzVmZDJGeWJtVmtRV0p2ZFhSU1pXWnpTVzVTWlc1a1pYSWdQU0JtWVd4elpUdGNiaUFnZlZ4dVhHNGdJQzh2SUVsdWRHVnlibUZzSUdsdWMzUmhibU5sY3lCemFHOTFiR1FnWm5Wc2JIa2dZMjl1YzNSeWRXTjBaV1FnWVhRZ2RHaHBjeUJ3YjJsdWRDd2djMjhnZEdobGVTQnphRzkxYkdSY2JpQWdMeThnYm05MElHZGxkQ0JoYm5rZ2JtVjNJR1pwWld4a2N5QmhaR1JsWkNCMGJ5QjBhR1Z0SUdGMElIUm9hWE1nY0c5cGJuUXVYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdhV1lnS0U5aWFtVmpkQzV3Y21WMlpXNTBSWGgwWlc1emFXOXVjeWtnZTF4dUlDQWdJQ0FnVDJKcVpXTjBMbkJ5WlhabGJuUkZlSFJsYm5OcGIyNXpLR2x1YzNSaGJtTmxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdhVzV6ZEdGdVkyVTdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2FXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZERzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaXNFdmVudFN1cHBvcnRlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIHVzZUhhc0ZlYXR1cmU7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHVzZUhhc0ZlYXR1cmUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlICYmXG4gIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRoZSBzdGFuZGFyZC5cbiAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLWRvbWltcGxlbWVudGF0aW9uLWhhc2ZlYXR1cmVcbiAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnJywgJycpICE9PSB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50LlxuICpcbiAqIE5PVEU6IFRoaXMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgZm9yIG5vbi1nZW5lcmljIGV2ZW50cyBzdWNoIGFzIGBjaGFuZ2VgLFxuICogYHJlc2V0YCwgYGxvYWRgLCBgZXJyb3JgLCBhbmQgYHNlbGVjdGAuXG4gKlxuICogQm9ycm93cyBmcm9tIE1vZGVybml6ci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lU3VmZml4IEV2ZW50IG5hbWUsIGUuZy4gXCJjbGlja1wiLlxuICogQHBhcmFtIHs/Ym9vbGVhbn0gY2FwdHVyZSBDaGVjayBpZiB0aGUgY2FwdHVyZSBwaGFzZSBpcyBzdXBwb3J0ZWQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCBpcyBzdXBwb3J0ZWQuXG4gKiBAaW50ZXJuYWxcbiAqIEBsaWNlbnNlIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuICovXG5mdW5jdGlvbiBpc0V2ZW50U3VwcG9ydGVkKGV2ZW50TmFtZVN1ZmZpeCwgY2FwdHVyZSkge1xuICBpZiAoIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSB8fCBjYXB0dXJlICYmICEoJ2FkZEV2ZW50TGlzdGVuZXInIGluIGRvY3VtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBldmVudE5hbWUgPSAnb24nICsgZXZlbnROYW1lU3VmZml4O1xuICB2YXIgaXNTdXBwb3J0ZWQgPSAoZXZlbnROYW1lIGluIGRvY3VtZW50KTtcblxuICBpZiAoIWlzU3VwcG9ydGVkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47Jyk7XG4gICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgZWxlbWVudFtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgaWYgKCFpc1N1cHBvcnRlZCAmJiB1c2VIYXNGZWF0dXJlICYmIGV2ZW50TmFtZVN1ZmZpeCA9PT0gJ3doZWVsJykge1xuICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhlIGB3aGVlbGAgZXZlbnQgaW4gSUU5Ky5cbiAgICBpc1N1cHBvcnRlZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJ0V2ZW50cy53aGVlbCcsICczLjAnKTtcbiAgfVxuXG4gIHJldHVybiBpc1N1cHBvcnRlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50U3VwcG9ydGVkOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBpc1RleHRJbnB1dEVsZW1lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQHNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtaW5wdXQtZWxlbWVudC5odG1sI2lucHV0LXR5cGUtYXR0ci1zdW1tYXJ5XG4gKi9cbnZhciBzdXBwb3J0ZWRJbnB1dFR5cGVzID0ge1xuICAnY29sb3InOiB0cnVlLFxuICAnZGF0ZSc6IHRydWUsXG4gICdkYXRldGltZSc6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWUsXG4gICdlbWFpbCc6IHRydWUsXG4gICdtb250aCc6IHRydWUsXG4gICdudW1iZXInOiB0cnVlLFxuICAncGFzc3dvcmQnOiB0cnVlLFxuICAncmFuZ2UnOiB0cnVlLFxuICAnc2VhcmNoJzogdHJ1ZSxcbiAgJ3RlbCc6IHRydWUsXG4gICd0ZXh0JzogdHJ1ZSxcbiAgJ3RpbWUnOiB0cnVlLFxuICAndXJsJzogdHJ1ZSxcbiAgJ3dlZWsnOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09PSAnaW5wdXQnICYmIHN1cHBvcnRlZElucHV0VHlwZXNbZWxlbS50eXBlXSB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUZXh0SW5wdXRFbGVtZW50OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgb25seUNoaWxkXG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBpbiBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmVcbiAqIGlzIG9ubHkgb25lIGNoaWxkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzXG4gKiBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYSBzaW5nbGUgY2hpbGQgZ2V0cyBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGVcbiAqIHB1cnBvc2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdG8gYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmVcbiAqIG9mIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gY2hpbGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG4gKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdENvbXBvbmVudGAgY29udGFpbmVkIGluIHRoZVxuICogc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnb25seUNoaWxkIG11c3QgYmUgcGFzc2VkIGEgY2hpbGRyZW4gd2l0aCBleGFjdGx5IG9uZSBjaGlsZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvbmx5Q2hpbGQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTl2Ym14NVEyaHBiR1F1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElHOXViSGxEYUdsc1pGeHVJQ292WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUld4bGJXVnVkQ2NwTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ1ptbHljM1FnWTJocGJHUWdhVzRnWVNCamIyeHNaV04wYVc5dUlHOW1JR05vYVd4a2NtVnVJR0Z1WkNCMlpYSnBabWxsY3lCMGFHRjBJSFJvWlhKbFhHNGdLaUJwY3lCdmJteDVJRzl1WlNCamFHbHNaQ0JwYmlCMGFHVWdZMjlzYkdWamRHbHZiaTRnVkdobElHTjFjbkpsYm5RZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ2RHaHBjMXh1SUNvZ1puVnVZM1JwYjI0Z1lYTnpkVzFsY3lCMGFHRjBJR0VnYzJsdVoyeGxJR05vYVd4a0lHZGxkSE1nY0dGemMyVmtJSGRwZEdodmRYUWdZU0IzY21Gd2NHVnlMQ0JpZFhRZ2RHaGxYRzRnS2lCd2RYSndiM05sSUc5bUlIUm9hWE1nYUdWc2NHVnlJR1oxYm1OMGFXOXVJR2x6SUhSdklHRmljM1J5WVdOMElHRjNZWGtnZEdobElIQmhjblJwWTNWc1lYSWdjM1J5ZFdOMGRYSmxYRzRnS2lCdlppQmphR2xzWkhKbGJpNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHTm9hV3hrY21WdUlFTm9hV3hrSUdOdmJHeGxZM1JwYjI0Z2MzUnlkV04wZFhKbExseHVJQ29nUUhKbGRIVnliaUI3VW1WaFkzUkRiMjF3YjI1bGJuUjlJRlJvWlNCbWFYSnpkQ0JoYm1RZ2IyNXNlU0JnVW1WaFkzUkRiMjF3YjI1bGJuUmdJR052Ym5SaGFXNWxaQ0JwYmlCMGFHVmNiaUFxSUhOMGNuVmpkSFZ5WlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYjI1c2VVTm9hV3hrS0dOb2FXeGtjbVZ1S1NCN1hHNGdJQ0ZTWldGamRFVnNaVzFsYm5RdWFYTldZV3hwWkVWc1pXMWxiblFvWTJocGJHUnlaVzRwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMjl1YkhsRGFHbHNaQ0J0ZFhOMElHSmxJSEJoYzNObFpDQmhJR05vYVd4a2NtVnVJSGRwZEdnZ1pYaGhZM1JzZVNCdmJtVWdZMmhwYkdRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQnlaWFIxY200Z1kyaHBiR1J5Wlc0N1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYjI1c2VVTm9hV3hrT3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xuXG4vKipcbiAqIEVzY2FwZXMgYXR0cmlidXRlIHZhbHVlIHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBlc2NhcGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSkge1xuICByZXR1cm4gJ1wiJyArIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih2YWx1ZSkgKyAnXCInO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiogQHByb3ZpZGVzTW9kdWxlIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyXG4qL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudC5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgc2V0SW5uZXJIVE1MXG4gKi9cblxuLyogZ2xvYmFscyBNU0FwcCAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXFxyXFxuXFx0XFxmXS87XG52YXIgTk9OVklTSUJMRV9URVNUID0gLzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcXHJcXG5cXHRcXGZcXC8+XS87XG5cbi8qKlxuICogU2V0IHRoZSBpbm5lckhUTUwgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElFOC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7XG4gIG5vZGUuaW5uZXJIVE1MID0gaHRtbDtcbn07XG5cbi8vIFdpbjggYXBwczogQWxsb3cgYWxsIGh0bWwgdG8gYmUgaW5zZXJ0ZWRcbmlmICh0eXBlb2YgTVNBcHAgIT09ICd1bmRlZmluZWQnICYmIE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKSB7XG4gIHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7XG4gICAgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xuICAgIH0pO1xuICB9O1xufVxuXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFODogV2hlbiB1cGRhdGluZyBhIGp1c3QgY3JlYXRlZCBub2RlIHdpdGggaW5uZXJIVE1MIG9ubHkgbGVhZGluZ1xuICAvLyB3aGl0ZXNwYWNlIGlzIHJlbW92ZWQuIFdoZW4gdXBkYXRpbmcgYW4gZXhpc3Rpbmcgbm9kZSB3aXRoIGlubmVySFRNTFxuICAvLyB3aGl0ZXNwYWNlIGluIHJvb3QgVGV4dE5vZGVzIGlzIGFsc28gY29sbGFwc2VkLlxuICAvLyBAc2VlIHF1aXJrc21vZGUub3JnL2J1Z3JlcG9ydHMvYXJjaGl2ZXMvMjAwNC8xMS9pbm5lcmh0bWxfYW5kX3QuaHRtbFxuXG4gIC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBvbmx5IElFOCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9wZXJseSBsaWtlIHRoaXMuXG4gIHZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB0ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAnICc7XG4gIGlmICh0ZXN0RWxlbWVudC5pbm5lckhUTUwgPT09ICcnKSB7XG4gICAgc2V0SW5uZXJIVE1MID0gZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgICAgIC8vIE1hZ2ljIHRoZW9yeTogSUU4IHN1cHBvc2VkbHkgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBhZGRlZCBhbmQgdXBkYXRlZFxuICAgICAgLy8gbm9kZXMgd2hlbiBwcm9jZXNzaW5nIGlubmVySFRNTCwgaW5uZXJIVE1MIG9uIHVwZGF0ZWQgbm9kZXMgc3VmZmVyc1xuICAgICAgLy8gZnJvbSB3b3JzZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLiBSZS1hZGRpbmcgYSBub2RlIGxpa2UgdGhpcyB0cmlnZ2Vyc1xuICAgICAgLy8gdGhlIGluaXRpYWwgYW5kIG1vcmUgZmF2b3JhYmxlIHdoaXRlc3BhY2UgYmVoYXZpb3IuXG4gICAgICAvLyBUT0RPOiBXaGF0IHRvIGRvIG9uIGEgZGV0YWNoZWQgbm9kZT9cbiAgICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChub2RlLCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2UgYWxzbyBpbXBsZW1lbnQgYSB3b3JrYXJvdW5kIGZvciBub24tdmlzaWJsZSB0YWdzIGRpc2FwcGVhcmluZyBpbnRvXG4gICAgICAvLyB0aGluIGFpciBvbiBJRTgsIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdGV4dFxuICAgICAgLy8gaW4tZnJvbnQgb2YgdGhlIG5vbi12aXNpYmxlIHRhZ3MuIFBpZ2d5YmFjayBvbiB0aGUgd2hpdGVzcGFjZSBmaXhcbiAgICAgIC8vIGFuZCBzaW1wbHkgY2hlY2sgaWYgYW55IG5vbi12aXNpYmxlIHRhZ3MgYXBwZWFyIGluIHRoZSBzb3VyY2UuXG4gICAgICBpZiAoV0hJVEVTUEFDRV9URVNULnRlc3QoaHRtbCkgfHwgaHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lCTEVfVEVTVC50ZXN0KGh0bWwpKSB7XG4gICAgICAgIC8vIFJlY292ZXIgbGVhZGluZyB3aGl0ZXNwYWNlIGJ5IHRlbXBvcmFyaWx5IHByZXBlbmRpbmcgYW55IGNoYXJhY3Rlci5cbiAgICAgICAgLy8gXFx1RkVGRiBoYXMgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZpc2libGUuXG4gICAgICAgIC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNvIHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlXG4gICAgICAgIC8vIGluIGhvcGVzIHRoYXQgdGhpcyBpcyBwcmVzZXJ2ZWQgZXZlbiBpZiBcIlxcdUZFRkZcIiBpcyB0cmFuc2Zvcm1lZCB0b1xuICAgICAgICAvLyB0aGUgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4YW1wbGUpLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9iL3YyLjQuMjAvbGliL3BhcnNlLmpzI0wyMTZcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkVGRikgKyBodG1sO1xuXG4gICAgICAgIC8vIGRlbGV0ZURhdGEgbGVhdmVzIGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsXG4gICAgICAgIC8vIGNoaWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy5cbiAgICAgICAgdmFyIHRleHROb2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgICBpZiAodGV4dE5vZGUuZGF0YS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRleHROb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAsIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldElubmVySFRNTDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgc2V0VGV4dENvbnRlbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xuXG4vKipcbiAqIFNldCB0aGUgdGV4dENvbnRlbnQgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnlcbiAqIGlzc3VlcywgaW5zZXJ0cyA8YnI+IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFycy4gaW5uZXJIVE1MIGJlaGF2ZXNcbiAqIGFzIGl0IHNob3VsZC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG59O1xuXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xuICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgICAgIHNldElubmVySFRNTChub2RlLCBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUZXh0Q29udGVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVuIGEgYHByZXZFbGVtZW50YCBhbmQgYG5leHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3RpbmdcbiAqIGluc3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVzdHJveWVkIG9yIHJlcGxhY2VkIGJ5IGEgbmV3XG4gKiBpbnN0YW5jZS4gQm90aCBhcmd1bWVudHMgYXJlIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGlzIGxvZ2ljIGNhblxuICogb3BlcmF0ZSBvbiBzdGF0ZWxlc3MgdHJlZXMgd2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IHByZXZFbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG5leHRFbGVtZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBleGlzdGluZyBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZC5cbiAqIEBwcm90ZWN0ZWRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG4gIHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9PT0gbnVsbCB8fCBwcmV2RWxlbWVudCA9PT0gZmFsc2U7XG4gIHZhciBuZXh0RW1wdHkgPSBuZXh0RWxlbWVudCA9PT0gbnVsbCB8fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7XG4gIGlmIChwcmV2RW1wdHkgfHwgbmV4dEVtcHR5KSB7XG4gICAgcmV0dXJuIHByZXZFbXB0eSA9PT0gbmV4dEVtcHR5O1xuICB9XG5cbiAgdmFyIHByZXZUeXBlID0gdHlwZW9mIHByZXZFbGVtZW50O1xuICB2YXIgbmV4dFR5cGUgPSB0eXBlb2YgbmV4dEVsZW1lbnQ7XG4gIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwgcHJldlR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5leHRUeXBlID09PSAnc3RyaW5nJyB8fCBuZXh0VHlwZSA9PT0gJ251bWJlcic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5leHRUeXBlID09PSAnb2JqZWN0JyAmJiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVudC50eXBlICYmIHByZXZFbGVtZW50LmtleSA9PT0gbmV4dEVsZW1lbnQua2V5O1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHRyYXZlcnNlQWxsQ2hpbGRyZW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBTRVBBUkFUT1IgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5TRVBBUkFUT1I7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRPRE86IFRlc3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRoZSBzYW1lIGtleVxuICogcGF0dGVybi5cbiAqL1xuXG52YXIgdXNlclByb3ZpZGVkS2V5RXNjYXBlckxvb2t1cCA9IHtcbiAgJz0nOiAnPTAnLFxuICAnLic6ICc9MScsXG4gICc6JzogJz0yJ1xufTtcblxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1s9LjpdL2c7XG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHVzZXJQcm92aWRlZEtleUVzY2FwZXIobWF0Y2gpIHtcbiAgcmV0dXJuIHVzZXJQcm92aWRlZEtleUVzY2FwZXJMb29rdXBbbWF0Y2hdO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxuICpcbiAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29tcG9uZW50IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XG4gIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXQga2V5XG4gICAgcmV0dXJuIHdyYXBVc2VyUHJvdmlkZWRLZXkoY29tcG9uZW50LmtleSk7XG4gIH1cbiAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBzZXRcbiAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cblxuLyoqXG4gKiBFc2NhcGUgYSBjb21wb25lbnQga2V5IHNvIHRoYXQgaXQgaXMgc2FmZSB0byB1c2UgaW4gYSByZWFjdGlkLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4dCBDb21wb25lbnQga2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlc2NhcGVVc2VyUHJvdmlkZWRLZXkodGV4dCkge1xuICByZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgdXNlclByb3ZpZGVkS2V5RXNjYXBlcik7XG59XG5cbi8qKlxuICogV3JhcCBhIGBrZXlgIHZhbHVlIGV4cGxpY2l0bHkgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbVxuICogaW1wbGljaXRseS1nZW5lcmF0ZWQga2V5cyBnZW5lcmF0ZWQgYnkgYSBjb21wb25lbnQncyBpbmRleCBpbiBpdHMgcGFyZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVmFsdWUgb2YgYSB1c2VyLXByb3ZpZGVkIGBrZXlgIGF0dHJpYnV0ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB3cmFwVXNlclByb3ZpZGVkS2V5KGtleSkge1xuICByZXR1cm4gJyQnICsgZXNjYXBlVXNlclByb3ZpZGVkS2V5KGtleSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcbiAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFtZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXG4gICAgbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgdmFyIGNoaWxkO1xuICB2YXIgbmV4dE5hbWU7XG4gIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBzdWJ0cmVlLlxuICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTtcbiAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hpbGRyZW4pO1xuICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRyZW4pO1xuICAgICAgdmFyIHN0ZXA7XG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykge1xuICAgICAgICB2YXIgaWkgPSAwO1xuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKyspO1xuICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyB3cmFwVXNlclByb3ZpZGVkS2V5KGVudHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgYWRkZW5kdW0gPSAnJztcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcbiAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gJyBJdCBsb29rcyBsaWtlIHlvdVxcJ3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3VidHJlZUNvdW50O1xufVxuXG4vKipcbiAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dFxuICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQgdGhyb3VnaCBhdHRyaWJ1dGVzOlxuICpcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4uKWBcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5sZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWBcbiAqXG4gKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcbiAqIGVudGlyZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMgb3IgYW55dGhpbmcgZWxzZSB0aGF0XG4gKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC5cbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2FsLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTkwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SnlrN1hHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5RbktUdGNiblpoY2lCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNbktUdGNibHh1ZG1GeUlHZGxkRWwwWlhKaGRHOXlSbTRnUFNCeVpYRjFhWEpsS0NjdUwyZGxkRWwwWlhKaGRHOXlSbTRuS1R0Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzUyWVhJZ1UwVlFRVkpCVkU5U0lEMGdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE11VTBWUVFWSkJWRTlTTzF4dWRtRnlJRk5WUWxORlVFRlNRVlJQVWlBOUlDYzZKenRjYmx4dUx5b3FYRzRnS2lCVVQwUlBPaUJVWlhOMElIUm9ZWFFnWVNCemFXNW5iR1VnWTJocGJHUWdZVzVrSUdGdUlHRnljbUY1SUhkcGRHZ2diMjVsSUdsMFpXMGdhR0YyWlNCMGFHVWdjMkZ0WlNCclpYbGNiaUFxSUhCaGRIUmxjbTR1WEc0Z0tpOWNibHh1ZG1GeUlIVnpaWEpRY205MmFXUmxaRXRsZVVWelkyRndaWEpNYjI5cmRYQWdQU0I3WEc0Z0lDYzlKem9nSnowd0p5eGNiaUFnSnk0bk9pQW5QVEVuTEZ4dUlDQW5PaWM2SUNjOU1pZGNibjA3WEc1Y2JuWmhjaUIxYzJWeVVISnZkbWxrWldSTFpYbEZjMk5oY0dWU1pXZGxlQ0E5SUM5YlBTNDZYUzluTzF4dVhHNTJZWElnWkdsa1YyRnlia0ZpYjNWMFRXRndjeUE5SUdaaGJITmxPMXh1WEc1bWRXNWpkR2x2YmlCMWMyVnlVSEp2ZG1sa1pXUkxaWGxGYzJOaGNHVnlLRzFoZEdOb0tTQjdYRzRnSUhKbGRIVnliaUIxYzJWeVVISnZkbWxrWldSTFpYbEZjMk5oY0dWeVRHOXZhM1Z3VzIxaGRHTm9YVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkhaVzVsY21GMFpTQmhJR3RsZVNCemRISnBibWNnZEdoaGRDQnBaR1Z1ZEdsbWFXVnpJR0VnWTI5dGNHOXVaVzUwSUhkcGRHaHBiaUJoSUhObGRDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJR052YlhCdmJtVnVkQ0JCSUdOdmJYQnZibVZ1ZENCMGFHRjBJR052ZFd4a0lHTnZiblJoYVc0Z1lTQnRZVzUxWVd3Z2EyVjVMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRJRWx1WkdWNElIUm9ZWFFnYVhNZ2RYTmxaQ0JwWmlCaElHMWhiblZoYkNCclpYa2dhWE1nYm05MElIQnliM1pwWkdWa0xseHVJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mVnh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJEYjIxd2IyNWxiblJMWlhrb1kyOXRjRzl1Wlc1MExDQnBibVJsZUNrZ2UxeHVJQ0JwWmlBb1kyOXRjRzl1Wlc1MElDWW1JR052YlhCdmJtVnVkQzVyWlhrZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUM4dklFVjRjR3hwWTJsMElHdGxlVnh1SUNBZ0lISmxkSFZ5YmlCM2NtRndWWE5sY2xCeWIzWnBaR1ZrUzJWNUtHTnZiWEJ2Ym1WdWRDNXJaWGtwTzF4dUlDQjlYRzRnSUM4dklFbHRjR3hwWTJsMElHdGxlU0JrWlhSbGNtMXBibVZrSUdKNUlIUm9aU0JwYm1SbGVDQnBiaUIwYUdVZ2MyVjBYRzRnSUhKbGRIVnliaUJwYm1SbGVDNTBiMU4wY21sdVp5Z3pOaWs3WEc1OVhHNWNiaThxS2x4dUlDb2dSWE5qWVhCbElHRWdZMjl0Y0c5dVpXNTBJR3RsZVNCemJ5QjBhR0YwSUdsMElHbHpJSE5oWm1VZ2RHOGdkWE5sSUdsdUlHRWdjbVZoWTNScFpDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSFJsZUhRZ1EyOXRjRzl1Wlc1MElHdGxlU0IwYnlCaVpTQmxjMk5oY0dWa0xseHVJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JCYmlCbGMyTmhjR1ZrSUhOMGNtbHVaeTVjYmlBcUwxeHVablZ1WTNScGIyNGdaWE5qWVhCbFZYTmxjbEJ5YjNacFpHVmtTMlY1S0hSbGVIUXBJSHRjYmlBZ2NtVjBkWEp1SUNnbkp5QXJJSFJsZUhRcExuSmxjR3hoWTJVb2RYTmxjbEJ5YjNacFpHVmtTMlY1UlhOallYQmxVbVZuWlhnc0lIVnpaWEpRY205MmFXUmxaRXRsZVVWelkyRndaWElwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRmR5WVhBZ1lTQmdhMlY1WUNCMllXeDFaU0JsZUhCc2FXTnBkR3g1SUhCeWIzWnBaR1ZrSUdKNUlIUm9aU0IxYzJWeUlIUnZJR1JwYzNScGJtZDFhWE5vSUdsMElHWnliMjFjYmlBcUlHbHRjR3hwWTJsMGJIa3RaMlZ1WlhKaGRHVmtJR3RsZVhNZ1oyVnVaWEpoZEdWa0lHSjVJR0VnWTI5dGNHOXVaVzUwSjNNZ2FXNWtaWGdnYVc0Z2FYUnpJSEJoY21WdWRDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2EyVjVJRlpoYkhWbElHOW1JR0VnZFhObGNpMXdjbTkyYVdSbFpDQmdhMlY1WUNCaGRIUnlhV0oxZEdWY2JpQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2QzSmhjRlZ6WlhKUWNtOTJhV1JsWkV0bGVTaHJaWGtwSUh0Y2JpQWdjbVYwZFhKdUlDY2tKeUFySUdWelkyRndaVlZ6WlhKUWNtOTJhV1JsWkV0bGVTaHJaWGtwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdQeXA5SUdOb2FXeGtjbVZ1SUVOb2FXeGtjbVZ1SUhSeVpXVWdZMjl1ZEdGcGJtVnlMbHh1SUNvZ1FIQmhjbUZ0SUhzaGMzUnlhVzVuZlNCdVlXMWxVMjlHWVhJZ1RtRnRaU0J2WmlCMGFHVWdhMlY1SUhCaGRHZ2djMjhnWm1GeUxseHVJQ29nUUhCaGNtRnRJSHNoWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVOaGJHeGlZV05ySUhSdklHbHVkbTlyWlNCM2FYUm9JR1ZoWTJnZ1kyaHBiR1FnWm05MWJtUXVYRzRnS2lCQWNHRnlZVzBnZXo4cWZTQjBjbUYyWlhKelpVTnZiblJsZUhRZ1ZYTmxaQ0IwYnlCd1lYTnpJR2x1Wm05eWJXRjBhVzl1SUhSb2NtOTFaMmh2ZFhRZ2RHaGxJSFJ5WVhabGNuTmhiRnh1SUNvZ2NISnZZMlZ6Y3k1Y2JpQXFJRUJ5WlhSMWNtNGdleUZ1ZFcxaVpYSjlJRlJvWlNCdWRXMWlaWElnYjJZZ1kyaHBiR1J5Wlc0Z2FXNGdkR2hwY3lCemRXSjBjbVZsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1U1cxd2JDaGphR2xzWkhKbGJpd2dibUZ0WlZOdlJtRnlMQ0JqWVd4c1ltRmpheXdnZEhKaGRtVnljMlZEYjI1MFpYaDBLU0I3WEc0Z0lIWmhjaUIwZVhCbElEMGdkSGx3Wlc5bUlHTm9hV3hrY21WdU8xeHVYRzRnSUdsbUlDaDBlWEJsSUQwOVBTQW5kVzVrWldacGJtVmtKeUI4ZkNCMGVYQmxJRDA5UFNBblltOXZiR1ZoYmljcElIdGNiaUFnSUNBdkx5QkJiR3dnYjJZZ2RHaGxJR0ZpYjNabElHRnlaU0J3WlhKalpXbDJaV1FnWVhNZ2JuVnNiQzVjYmlBZ0lDQmphR2xzWkhKbGJpQTlJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQnBaaUFvWTJocGJHUnlaVzRnUFQwOUlHNTFiR3dnZkh3Z2RIbHdaU0E5UFQwZ0ozTjBjbWx1WnljZ2ZId2dkSGx3WlNBOVBUMGdKMjUxYldKbGNpY2dmSHdnVW1WaFkzUkZiR1Z0Wlc1MExtbHpWbUZzYVdSRmJHVnRaVzUwS0dOb2FXeGtjbVZ1S1NrZ2UxeHVJQ0FnSUdOaGJHeGlZV05yS0hSeVlYWmxjbk5sUTI5dWRHVjRkQ3dnWTJocGJHUnlaVzRzWEc0Z0lDQWdMeThnU1dZZ2FYUW5jeUIwYUdVZ2IyNXNlU0JqYUdsc1pDd2dkSEpsWVhRZ2RHaGxJRzVoYldVZ1lYTWdhV1lnYVhRZ2QyRnpJSGR5WVhCd1pXUWdhVzRnWVc0Z1lYSnlZWGxjYmlBZ0lDQXZMeUJ6YnlCMGFHRjBJR2wwSjNNZ1kyOXVjMmx6ZEdWdWRDQnBaaUIwYUdVZ2JuVnRZbVZ5SUc5bUlHTm9hV3hrY21WdUlHZHliM2R6TGx4dUlDQWdJRzVoYldWVGIwWmhjaUE5UFQwZ0p5Y2dQeUJUUlZCQlVrRlVUMUlnS3lCblpYUkRiMjF3YjI1bGJuUkxaWGtvWTJocGJHUnlaVzRzSURBcElEb2dibUZ0WlZOdlJtRnlLVHRjYmlBZ0lDQnlaWFIxY200Z01UdGNiaUFnZlZ4dVhHNGdJSFpoY2lCamFHbHNaRHRjYmlBZ2RtRnlJRzVsZUhST1lXMWxPMXh1SUNCMllYSWdjM1ZpZEhKbFpVTnZkVzUwSUQwZ01Ec2dMeThnUTI5MWJuUWdiMllnWTJocGJHUnlaVzRnWm05MWJtUWdhVzRnZEdobElHTjFjbkpsYm5RZ2MzVmlkSEpsWlM1Y2JpQWdkbUZ5SUc1bGVIUk9ZVzFsVUhKbFptbDRJRDBnYm1GdFpWTnZSbUZ5SUQwOVBTQW5KeUEvSUZORlVFRlNRVlJQVWlBNklHNWhiV1ZUYjBaaGNpQXJJRk5WUWxORlVFRlNRVlJQVWp0Y2JseHVJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hqYUdsc1pISmxiaWtwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUdOb2FXeGtjbVZ1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQmphR2xzWkNBOUlHTm9hV3hrY21WdVcybGRPMXh1SUNBZ0lDQWdibVY0ZEU1aGJXVWdQU0J1WlhoMFRtRnRaVkJ5WldacGVDQXJJR2RsZEVOdmJYQnZibVZ1ZEV0bGVTaGphR2xzWkN3Z2FTazdYRzRnSUNBZ0lDQnpkV0owY21WbFEyOTFiblFnS3owZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJrbHRjR3dvWTJocGJHUXNJRzVsZUhST1lXMWxMQ0JqWVd4c1ltRmpheXdnZEhKaGRtVnljMlZEYjI1MFpYaDBLVHRjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdkbUZ5SUdsMFpYSmhkRzl5Um00Z1BTQm5aWFJKZEdWeVlYUnZja1p1S0dOb2FXeGtjbVZ1S1R0Y2JpQWdJQ0JwWmlBb2FYUmxjbUYwYjNKR2Jpa2dlMXh1SUNBZ0lDQWdkbUZ5SUdsMFpYSmhkRzl5SUQwZ2FYUmxjbUYwYjNKR2JpNWpZV3hzS0dOb2FXeGtjbVZ1S1R0Y2JpQWdJQ0FnSUhaaGNpQnpkR1Z3TzF4dUlDQWdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNGdJVDA5SUdOb2FXeGtjbVZ1TG1WdWRISnBaWE1wSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR2xwSUQwZ01EdGNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tDRW9jM1JsY0NBOUlHbDBaWEpoZEc5eUxtNWxlSFFvS1NrdVpHOXVaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTm9hV3hrSUQwZ2MzUmxjQzUyWVd4MVpUdGNiaUFnSUNBZ0lDQWdJQ0J1WlhoMFRtRnRaU0E5SUc1bGVIUk9ZVzFsVUhKbFptbDRJQ3NnWjJWMFEyOXRjRzl1Wlc1MFMyVjVLR05vYVd4a0xDQnBhU3NyS1R0Y2JpQWdJQ0FnSUNBZ0lDQnpkV0owY21WbFEyOTFiblFnS3owZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJrbHRjR3dvWTJocGJHUXNJRzVsZUhST1lXMWxMQ0JqWVd4c1ltRmpheXdnZEhKaGRtVnljMlZEYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aGthV1JYWVhKdVFXSnZkWFJOWVhCekxDQW5WWE5wYm1jZ1RXRndjeUJoY3lCamFHbHNaSEpsYmlCcGN5QnViM1FnZVdWMElHWjFiR3g1SUhOMWNIQnZjblJsWkM0Z1NYUWdhWE1nWVc0Z0p5QXJJQ2RsZUhCbGNtbHRaVzUwWVd3Z1ptVmhkSFZ5WlNCMGFHRjBJRzFwWjJoMElHSmxJSEpsYlc5MlpXUXVJRU52Ym5abGNuUWdhWFFnZEc4Z1lTQW5JQ3NnSjNObGNYVmxibU5sSUM4Z2FYUmxjbUZpYkdVZ2IyWWdhMlY1WldRZ1VtVmhZM1JGYkdWdFpXNTBjeUJwYm5OMFpXRmtMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQWdJR1JwWkZkaGNtNUJZbTkxZEUxaGNITWdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQzh2SUVsMFpYSmhkRzl5SUhkcGJHd2djSEp2ZG1sa1pTQmxiblJ5ZVNCYmF5eDJYU0IwZFhCc1pYTWdjbUYwYUdWeUlIUm9ZVzRnZG1Gc2RXVnpMbHh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9JU2h6ZEdWd0lEMGdhWFJsY21GMGIzSXVibVY0ZENncEtTNWtiMjVsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUdWdWRISjVJRDBnYzNSbGNDNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWlc1MGNua3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTm9hV3hrSUQwZ1pXNTBjbmxiTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhoMFRtRnRaU0E5SUc1bGVIUk9ZVzFsVUhKbFptbDRJQ3NnZDNKaGNGVnpaWEpRY205MmFXUmxaRXRsZVNobGJuUnllVnN3WFNrZ0t5QlRWVUpUUlZCQlVrRlVUMUlnS3lCblpYUkRiMjF3YjI1bGJuUkxaWGtvWTJocGJHUXNJREFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1ZpZEhKbFpVTnZkVzUwSUNzOUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNUpiWEJzS0dOb2FXeGtMQ0J1WlhoMFRtRnRaU3dnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lDQWdkbUZ5SUdGa1pHVnVaSFZ0SUQwZ0p5YzdYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQmhaR1JsYm1SMWJTQTlJQ2NnU1dZZ2VXOTFJRzFsWVc1MElIUnZJSEpsYm1SbGNpQmhJR052Ykd4bFkzUnBiMjRnYjJZZ1kyaHBiR1J5Wlc0c0lIVnpaU0JoYmlCaGNuSmhlU0FuSUNzZ0oybHVjM1JsWVdRZ2IzSWdkM0poY0NCMGFHVWdiMkpxWldOMElIVnphVzVuSUdOeVpXRjBaVVp5WVdkdFpXNTBLRzlpYW1WamRDa2dabkp2YlNCMGFHVWdKeUFySUNkU1pXRmpkQ0JoWkdRdGIyNXpMaWM3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphR2xzWkhKbGJpNWZhWE5TWldGamRFVnNaVzFsYm5RcElIdGNiaUFnSUNBZ0lDQWdJQ0JoWkdSbGJtUjFiU0E5SUNjZ1NYUWdiRzl2YTNNZ2JHbHJaU0I1YjNWY1hDZHlaU0IxYzJsdVp5QmhiaUJsYkdWdFpXNTBJR055WldGMFpXUWdZbmtnWVNCa2FXWm1aWEpsYm5RZ0p5QXJJQ2QyWlhKemFXOXVJRzltSUZKbFlXTjBMaUJOWVd0bElITjFjbVVnZEc4Z2RYTmxJRzl1YkhrZ2IyNWxJR052Y0hrZ2IyWWdVbVZoWTNRdUp6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCdVlXMWxJRDBnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQzVuWlhST1lXMWxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLRzVoYldVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGa1pHVnVaSFZ0SUNzOUlDY2dRMmhsWTJzZ2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRZ2IyWWdZQ2NnS3lCdVlXMWxJQ3NnSjJBdUp6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQmphR2xzWkhKbGJsTjBjbWx1WnlBOUlGTjBjbWx1WnloamFHbHNaSEpsYmlrN1hHNGdJQ0FnSUNBaFptRnNjMlVnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5UMkpxWldOMGN5QmhjbVVnYm05MElIWmhiR2xrSUdGeklHRWdVbVZoWTNRZ1kyaHBiR1FnS0dadmRXNWtPaUFsY3lrdUpYTW5MQ0JqYUdsc1pISmxibE4wY21sdVp5QTlQVDBnSjF0dlltcGxZM1FnVDJKcVpXTjBYU2NnUHlBbmIySnFaV04wSUhkcGRHZ2dhMlY1Y3lCN0p5QXJJRTlpYW1WamRDNXJaWGx6S0dOb2FXeGtjbVZ1S1M1cWIybHVLQ2NzSUNjcElDc2dKMzBuSURvZ1kyaHBiR1J5Wlc1VGRISnBibWNzSUdGa1pHVnVaSFZ0S1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlITjFZblJ5WldWRGIzVnVkRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVjbUYyWlhKelpYTWdZMmhwYkdSeVpXNGdkR2hoZENCaGNtVWdkSGx3YVdOaGJHeDVJSE53WldOcFptbGxaQ0JoY3lCZ2NISnZjSE11WTJocGJHUnlaVzVnTENCaWRYUmNiaUFxSUcxcFoyaDBJR0ZzYzI4Z1ltVWdjM0JsWTJsbWFXVmtJSFJvY205MVoyZ2dZWFIwY21saWRYUmxjenBjYmlBcVhHNGdLaUF0SUdCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUtIUm9hWE11Y0hKdmNITXVZMmhwYkdSeVpXNHNJQzR1TGlsZ1hHNGdLaUF0SUdCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUtIUm9hWE11Y0hKdmNITXViR1ZtZEZCaGJtVnNRMmhwYkdSeVpXNHNJQzR1TGlsZ1hHNGdLbHh1SUNvZ1ZHaGxJR0IwY21GMlpYSnpaVU52Ym5SbGVIUmdJR2x6SUdGdUlHOXdkR2x2Ym1Gc0lHRnlaM1Z0Wlc1MElIUm9ZWFFnYVhNZ2NHRnpjMlZrSUhSb2NtOTFaMmdnZEdobFhHNGdLaUJsYm5ScGNtVWdkSEpoZG1WeWMyRnNMaUJKZENCallXNGdZbVVnZFhObFpDQjBieUJ6ZEc5eVpTQmhZMk4xYlhWc1lYUnBiMjV6SUc5eUlHRnVlWFJvYVc1bklHVnNjMlVnZEdoaGRGeHVJQ29nZEdobElHTmhiR3hpWVdOcklHMXBaMmgwSUdacGJtUWdjbVZzWlhaaGJuUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9LbjBnWTJocGJHUnlaVzRnUTJocGJHUnlaVzRnZEhKbFpTQnZZbXBsWTNRdVhHNGdLaUJBY0dGeVlXMGdleUZtZFc1amRHbHZibjBnWTJGc2JHSmhZMnNnVkc4Z2FXNTJiMnRsSUhWd2IyNGdkSEpoZG1WeWMybHVaeUJsWVdOb0lHTm9hV3hrTGx4dUlDb2dRSEJoY21GdElIcy9LbjBnZEhKaGRtVnljMlZEYjI1MFpYaDBJRU52Ym5SbGVIUWdabTl5SUhSeVlYWmxjbk5oYkM1Y2JpQXFJRUJ5WlhSMWNtNGdleUZ1ZFcxaVpYSjlJRlJvWlNCdWRXMWlaWElnYjJZZ1kyaHBiR1J5Wlc0Z2FXNGdkR2hwY3lCemRXSjBjbVZsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1S0dOb2FXeGtjbVZ1TENCallXeHNZbUZqYXl3Z2RISmhkbVZ5YzJWRGIyNTBaWGgwS1NCN1hHNGdJR2xtSUNoamFHbHNaSEpsYmlBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVJREE3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmtsdGNHd29ZMmhwYkdSeVpXNHNJQ2NuTENCallXeHNZbUZqYXl3Z2RISmhkbVZ5YzJWRGIyNTBaWGgwS1R0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0IwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHVwZGF0ZVxuICovXG5cbi8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9ICh7fSkuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHNoYWxsb3dDb3B5KHgpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICByZXR1cm4geC5jb25jYXQoKTtcbiAgfSBlbHNlIGlmICh4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhc3NpZ24obmV3IHguY29uc3RydWN0b3IoKSwgeCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cbn1cblxudmFyIENPTU1BTkRfUFVTSCA9IGtleU9mKHsgJHB1c2g6IG51bGwgfSk7XG52YXIgQ09NTUFORF9VTlNISUZUID0ga2V5T2YoeyAkdW5zaGlmdDogbnVsbCB9KTtcbnZhciBDT01NQU5EX1NQTElDRSA9IGtleU9mKHsgJHNwbGljZTogbnVsbCB9KTtcbnZhciBDT01NQU5EX1NFVCA9IGtleU9mKHsgJHNldDogbnVsbCB9KTtcbnZhciBDT01NQU5EX01FUkdFID0ga2V5T2YoeyAkbWVyZ2U6IG51bGwgfSk7XG52YXIgQ09NTUFORF9BUFBMWSA9IGtleU9mKHsgJGFwcGx5OiBudWxsIH0pO1xuXG52YXIgQUxMX0NPTU1BTkRTX0xJU1QgPSBbQ09NTUFORF9QVVNILCBDT01NQU5EX1VOU0hJRlQsIENPTU1BTkRfU1BMSUNFLCBDT01NQU5EX1NFVCwgQ09NTUFORF9NRVJHRSwgQ09NTUFORF9BUFBMWV07XG5cbnZhciBBTExfQ09NTUFORFNfU0VUID0ge307XG5cbkFMTF9DT01NQU5EU19MSVNULmZvckVhY2goZnVuY3Rpb24gKGNvbW1hbmQpIHtcbiAgQUxMX0NPTU1BTkRTX1NFVFtjb21tYW5kXSA9IHRydWU7XG59KTtcblxuZnVuY3Rpb24gaW52YXJpYW50QXJyYXlDYXNlKHZhbHVlLCBzcGVjLCBjb21tYW5kKSB7XG4gICFBcnJheS5pc0FycmF5KHZhbHVlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgdGFyZ2V0IG9mICVzIHRvIGJlIGFuIGFycmF5OyBnb3QgJXMuJywgY29tbWFuZCwgdmFsdWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgdmFyIHNwZWNWYWx1ZSA9IHNwZWNbY29tbWFuZF07XG4gICFBcnJheS5pc0FycmF5KHNwZWNWYWx1ZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXk7IGdvdCAlcy4gJyArICdEaWQgeW91IGZvcmdldCB0byB3cmFwIHlvdXIgcGFyYW1ldGVyIGluIGFuIGFycmF5PycsIGNvbW1hbmQsIHNwZWNWYWx1ZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUodmFsdWUsIHNwZWMpIHtcbiAgISh0eXBlb2Ygc3BlYyA9PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBZb3UgcHJvdmlkZWQgYSBrZXkgcGF0aCB0byB1cGRhdGUoKSB0aGF0IGRpZCBub3QgY29udGFpbiBvbmUgJyArICdvZiAlcy4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSB7JXM6IC4uLn0/JywgQUxMX0NPTU1BTkRTX0xJU1Quam9pbignLCAnKSwgQ09NTUFORF9TRVQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5EX1NFVCkpIHtcbiAgICAhKE9iamVjdC5rZXlzKHNwZWMpLmxlbmd0aCA9PT0gMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBrZXkgaW4gYW4gb2JqZWN0IHdpdGggJXMnLCBDT01NQU5EX1NFVCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHNwZWNbQ09NTUFORF9TRVRdO1xuICB9XG5cbiAgdmFyIG5leHRWYWx1ZSA9IHNoYWxsb3dDb3B5KHZhbHVlKTtcblxuICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5EX01FUkdFKSkge1xuICAgIHZhciBtZXJnZU9iaiA9IHNwZWNbQ09NTUFORF9NRVJHRV07XG4gICAgIShtZXJnZU9iaiAmJiB0eXBlb2YgbWVyZ2VPYmogPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogJXMgZXhwZWN0cyBhIHNwZWMgb2YgdHlwZSBcXCdvYmplY3RcXCc7IGdvdCAlcycsIENPTU1BTkRfTUVSR0UsIG1lcmdlT2JqKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgIShuZXh0VmFsdWUgJiYgdHlwZW9mIG5leHRWYWx1ZSA9PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiAlcyBleHBlY3RzIGEgdGFyZ2V0IG9mIHR5cGUgXFwnb2JqZWN0XFwnOyBnb3QgJXMnLCBDT01NQU5EX01FUkdFLCBuZXh0VmFsdWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBhc3NpZ24obmV4dFZhbHVlLCBzcGVjW0NPTU1BTkRfTUVSR0VdKTtcbiAgfVxuXG4gIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfUFVTSCkpIHtcbiAgICBpbnZhcmlhbnRBcnJheUNhc2UodmFsdWUsIHNwZWMsIENPTU1BTkRfUFVTSCk7XG4gICAgc3BlY1tDT01NQU5EX1BVU0hdLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIG5leHRWYWx1ZS5wdXNoKGl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9VTlNISUZUKSkge1xuICAgIGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgQ09NTUFORF9VTlNISUZUKTtcbiAgICBzcGVjW0NPTU1BTkRfVU5TSElGVF0uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgbmV4dFZhbHVlLnVuc2hpZnQoaXRlbSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5EX1NQTElDRSkpIHtcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgJXMgdGFyZ2V0IHRvIGJlIGFuIGFycmF5OyBnb3QgJXMnLCBDT01NQU5EX1NQTElDRSwgdmFsdWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAhQXJyYXkuaXNBcnJheShzcGVjW0NPTU1BTkRfU1BMSUNFXSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXkgb2YgYXJyYXlzOyBnb3QgJXMuICcgKyAnRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFtZXRlcnMgaW4gYW4gYXJyYXk/JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9TUExJQ0VdKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgc3BlY1tDT01NQU5EX1NQTElDRV0uZm9yRWFjaChmdW5jdGlvbiAoYXJncykge1xuICAgICAgIUFycmF5LmlzQXJyYXkoYXJncykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHNwZWMgb2YgJXMgdG8gYmUgYW4gYXJyYXkgb2YgYXJyYXlzOyBnb3QgJXMuICcgKyAnRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFtZXRlcnMgaW4gYW4gYXJyYXk/JywgQ09NTUFORF9TUExJQ0UsIHNwZWNbQ09NTUFORF9TUExJQ0VdKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBuZXh0VmFsdWUuc3BsaWNlLmFwcGx5KG5leHRWYWx1ZSwgYXJncyk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5EX0FQUExZKSkge1xuICAgICEodHlwZW9mIHNwZWNbQ09NTUFORF9BUFBMWV0gPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVjIG9mICVzIHRvIGJlIGEgZnVuY3Rpb247IGdvdCAlcy4nLCBDT01NQU5EX0FQUExZLCBzcGVjW0NPTU1BTkRfQVBQTFldKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgbmV4dFZhbHVlID0gc3BlY1tDT01NQU5EX0FQUExZXShuZXh0VmFsdWUpO1xuICB9XG5cbiAgZm9yICh2YXIgayBpbiBzcGVjKSB7XG4gICAgaWYgKCEoQUxMX0NPTU1BTkRTX1NFVC5oYXNPd25Qcm9wZXJ0eShrKSAmJiBBTExfQ09NTUFORFNfU0VUW2tdKSkge1xuICAgICAgbmV4dFZhbHVlW2tdID0gdXBkYXRlKHZhbHVlW2tdLCBzcGVjW2tdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV4dFZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVwZGF0ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOTFjR1JoZEdVdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0IxY0dSaGRHVmNiaUFxTDF4dVhHNHZLaUJuYkc5aVlXd2dhR0Z6VDNkdVVISnZjR1Z5ZEhrNmRISjFaU0FxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQnJaWGxQWmlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwydGxlVTltSnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2FHRnpUM2R1VUhKdmNHVnlkSGtnUFNBb2UzMHBMbWhoYzA5M2JsQnliM0JsY25SNU8xeHVYRzVtZFc1amRHbHZiaUJ6YUdGc2JHOTNRMjl3ZVNoNEtTQjdYRzRnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0hncEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhndVkyOXVZMkYwS0NrN1hHNGdJSDBnWld4elpTQnBaaUFvZUNBbUppQjBlWEJsYjJZZ2VDQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZWE56YVdkdUtHNWxkeUI0TG1OdmJuTjBjblZqZEc5eUtDa3NJSGdwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUI0TzF4dUlDQjlYRzU5WEc1Y2JuWmhjaUJEVDAxTlFVNUVYMUJWVTBnZ1BTQnJaWGxQWmloN0lDUndkWE5vT2lCdWRXeHNJSDBwTzF4dWRtRnlJRU5QVFUxQlRrUmZWVTVUU0VsR1ZDQTlJR3RsZVU5bUtIc2dKSFZ1YzJocFpuUTZJRzUxYkd3Z2ZTazdYRzUyWVhJZ1EwOU5UVUZPUkY5VFVFeEpRMFVnUFNCclpYbFBaaWg3SUNSemNHeHBZMlU2SUc1MWJHd2dmU2s3WEc1MllYSWdRMDlOVFVGT1JGOVRSVlFnUFNCclpYbFBaaWg3SUNSelpYUTZJRzUxYkd3Z2ZTazdYRzUyWVhJZ1EwOU5UVUZPUkY5TlJWSkhSU0E5SUd0bGVVOW1LSHNnSkcxbGNtZGxPaUJ1ZFd4c0lIMHBPMXh1ZG1GeUlFTlBUVTFCVGtSZlFWQlFURmtnUFNCclpYbFBaaWg3SUNSaGNIQnNlVG9nYm5Wc2JDQjlLVHRjYmx4dWRtRnlJRUZNVEY5RFQwMU5RVTVFVTE5TVNWTlVJRDBnVzBOUFRVMUJUa1JmVUZWVFNDd2dRMDlOVFVGT1JGOVZUbE5JU1VaVUxDQkRUMDFOUVU1RVgxTlFURWxEUlN3Z1EwOU5UVUZPUkY5VFJWUXNJRU5QVFUxQlRrUmZUVVZTUjBVc0lFTlBUVTFCVGtSZlFWQlFURmxkTzF4dVhHNTJZWElnUVV4TVgwTlBUVTFCVGtSVFgxTkZWQ0E5SUh0OU8xeHVYRzVCVEV4ZlEwOU5UVUZPUkZOZlRFbFRWQzVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2hqYjIxdFlXNWtLU0I3WEc0Z0lFRk1URjlEVDAxTlFVNUVVMTlUUlZSYlkyOXRiV0Z1WkYwZ1BTQjBjblZsTzF4dWZTazdYRzVjYm1aMWJtTjBhVzl1SUdsdWRtRnlhV0Z1ZEVGeWNtRjVRMkZ6WlNoMllXeDFaU3dnYzNCbFl5d2dZMjl0YldGdVpDa2dlMXh1SUNBaFFYSnlZWGt1YVhOQmNuSmhlU2gyWVd4MVpTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRYQmtZWFJsS0NrNklHVjRjR1ZqZEdWa0lIUmhjbWRsZENCdlppQWxjeUIwYnlCaVpTQmhiaUJoY25KaGVUc2daMjkwSUNWekxpY3NJR052YlcxaGJtUXNJSFpoYkhWbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIWmhjaUJ6Y0dWalZtRnNkV1VnUFNCemNHVmpXMk52YlcxaGJtUmRPMXh1SUNBaFFYSnlZWGt1YVhOQmNuSmhlU2h6Y0dWalZtRnNkV1VwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKM1Z3WkdGMFpTZ3BPaUJsZUhCbFkzUmxaQ0J6Y0dWaklHOW1JQ1Z6SUhSdklHSmxJR0Z1SUdGeWNtRjVPeUJuYjNRZ0pYTXVJQ2NnS3lBblJHbGtJSGx2ZFNCbWIzSm5aWFFnZEc4Z2QzSmhjQ0I1YjNWeUlIQmhjbUZ0WlhSbGNpQnBiaUJoYmlCaGNuSmhlVDhuTENCamIyMXRZVzVrTENCemNHVmpWbUZzZFdVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVablZ1WTNScGIyNGdkWEJrWVhSbEtIWmhiSFZsTENCemNHVmpLU0I3WEc0Z0lDRW9kSGx3Wlc5bUlITndaV01nUFQwOUlDZHZZbXBsWTNRbktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkMWNHUmhkR1VvS1RvZ1dXOTFJSEJ5YjNacFpHVmtJR0VnYTJWNUlIQmhkR2dnZEc4Z2RYQmtZWFJsS0NrZ2RHaGhkQ0JrYVdRZ2JtOTBJR052Ym5SaGFXNGdiMjVsSUNjZ0t5QW5iMllnSlhNdUlFUnBaQ0I1YjNVZ1ptOXlaMlYwSUhSdklHbHVZMngxWkdVZ2V5VnpPaUF1TGk1OVB5Y3NJRUZNVEY5RFQwMU5RVTVFVTE5TVNWTlVMbXB2YVc0b0p5d2dKeWtzSUVOUFRVMUJUa1JmVTBWVUtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdhV1lnS0doaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2MzQmxZeXdnUTA5TlRVRk9SRjlUUlZRcEtTQjdYRzRnSUNBZ0lTaFBZbXBsWTNRdWEyVjVjeWh6Y0dWaktTNXNaVzVuZEdnZ1BUMDlJREVwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKME5oYm01dmRDQm9ZWFpsSUcxdmNtVWdkR2hoYmlCdmJtVWdhMlY1SUdsdUlHRnVJRzlpYW1WamRDQjNhWFJvSUNWekp5d2dRMDlOVFVGT1JGOVRSVlFwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lISmxkSFZ5YmlCemNHVmpXME5QVFUxQlRrUmZVMFZVWFR0Y2JpQWdmVnh1WEc0Z0lIWmhjaUJ1WlhoMFZtRnNkV1VnUFNCemFHRnNiRzkzUTI5d2VTaDJZV3gxWlNrN1hHNWNiaUFnYVdZZ0tHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jM0JsWXl3Z1EwOU5UVUZPUkY5TlJWSkhSU2twSUh0Y2JpQWdJQ0IyWVhJZ2JXVnlaMlZQWW1vZ1BTQnpjR1ZqVzBOUFRVMUJUa1JmVFVWU1IwVmRPMXh1SUNBZ0lDRW9iV1Z5WjJWUFltb2dKaVlnZEhsd1pXOW1JRzFsY21kbFQySnFJRDA5UFNBbmIySnFaV04wSnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuZFhCa1lYUmxLQ2s2SUNWeklHVjRjR1ZqZEhNZ1lTQnpjR1ZqSUc5bUlIUjVjR1VnWEZ3bmIySnFaV04wWEZ3bk95Qm5iM1FnSlhNbkxDQkRUMDFOUVU1RVgwMUZVa2RGTENCdFpYSm5aVTlpYWlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDRW9ibVY0ZEZaaGJIVmxJQ1ltSUhSNWNHVnZaaUJ1WlhoMFZtRnNkV1VnUFQwOUlDZHZZbXBsWTNRbktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkMWNHUmhkR1VvS1RvZ0pYTWdaWGh3WldOMGN5QmhJSFJoY21kbGRDQnZaaUIwZVhCbElGeGNKMjlpYW1WamRGeGNKenNnWjI5MElDVnpKeXdnUTA5TlRVRk9SRjlOUlZKSFJTd2dibVY0ZEZaaGJIVmxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnWVhOemFXZHVLRzVsZUhSV1lXeDFaU3dnYzNCbFkxdERUMDFOUVU1RVgwMUZVa2RGWFNrN1hHNGdJSDFjYmx4dUlDQnBaaUFvYUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoemNHVmpMQ0JEVDAxTlFVNUVYMUJWVTBncEtTQjdYRzRnSUNBZ2FXNTJZWEpwWVc1MFFYSnlZWGxEWVhObEtIWmhiSFZsTENCemNHVmpMQ0JEVDAxTlFVNUVYMUJWVTBncE8xeHVJQ0FnSUhOd1pXTmJRMDlOVFVGT1JGOVFWVk5JWFM1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNocGRHVnRLU0I3WEc0Z0lDQWdJQ0J1WlhoMFZtRnNkV1V1Y0hWemFDaHBkR1Z0S1R0Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0hOd1pXTXNJRU5QVFUxQlRrUmZWVTVUU0VsR1ZDa3BJSHRjYmlBZ0lDQnBiblpoY21saGJuUkJjbkpoZVVOaGMyVW9kbUZzZFdVc0lITndaV01zSUVOUFRVMUJUa1JmVlU1VFNFbEdWQ2s3WEc0Z0lDQWdjM0JsWTF0RFQwMU5RVTVFWDFWT1UwaEpSbFJkTG1admNrVmhZMmdvWm5WdVkzUnBiMjRnS0dsMFpXMHBJSHRjYmlBZ0lDQWdJRzVsZUhSV1lXeDFaUzUxYm5Ob2FXWjBLR2wwWlcwcE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0doaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2MzQmxZeXdnUTA5TlRVRk9SRjlUVUV4SlEwVXBLU0I3WEc0Z0lDQWdJVUZ5Y21GNUxtbHpRWEp5WVhrb2RtRnNkV1VwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFY0Y0dWamRHVmtJQ1Z6SUhSaGNtZGxkQ0IwYnlCaVpTQmhiaUJoY25KaGVUc2daMjkwSUNWekp5d2dRMDlOVFVGT1JGOVRVRXhKUTBVc0lIWmhiSFZsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lVRnljbUY1TG1selFYSnlZWGtvYzNCbFkxdERUMDFOUVU1RVgxTlFURWxEUlYwcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNWd1pHRjBaU2dwT2lCbGVIQmxZM1JsWkNCemNHVmpJRzltSUNWeklIUnZJR0psSUdGdUlHRnljbUY1SUc5bUlHRnljbUY1Y3pzZ1oyOTBJQ1Z6TGlBbklDc2dKMFJwWkNCNWIzVWdabTl5WjJWMElIUnZJSGR5WVhBZ2VXOTFjaUJ3WVhKaGJXVjBaWEp6SUdsdUlHRnVJR0Z5Y21GNVB5Y3NJRU5QVFUxQlRrUmZVMUJNU1VORkxDQnpjR1ZqVzBOUFRVMUJUa1JmVTFCTVNVTkZYU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhOd1pXTmJRMDlOVFVGT1JGOVRVRXhKUTBWZExtWnZja1ZoWTJnb1puVnVZM1JwYjI0Z0tHRnlaM01wSUh0Y2JpQWdJQ0FnSUNGQmNuSmhlUzVwYzBGeWNtRjVLR0Z5WjNNcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNWd1pHRjBaU2dwT2lCbGVIQmxZM1JsWkNCemNHVmpJRzltSUNWeklIUnZJR0psSUdGdUlHRnljbUY1SUc5bUlHRnljbUY1Y3pzZ1oyOTBJQ1Z6TGlBbklDc2dKMFJwWkNCNWIzVWdabTl5WjJWMElIUnZJSGR5WVhBZ2VXOTFjaUJ3WVhKaGJXVjBaWEp6SUdsdUlHRnVJR0Z5Y21GNVB5Y3NJRU5QVFUxQlRrUmZVMUJNU1VORkxDQnpjR1ZqVzBOUFRVMUJUa1JmVTFCTVNVTkZYU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2JtVjRkRlpoYkhWbExuTndiR2xqWlM1aGNIQnNlU2h1WlhoMFZtRnNkV1VzSUdGeVozTXBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jM0JsWXl3Z1EwOU5UVUZPUkY5QlVGQk1XU2twSUh0Y2JpQWdJQ0FoS0hSNWNHVnZaaUJ6Y0dWalcwTlBUVTFCVGtSZlFWQlFURmxkSUQwOVBTQW5ablZ1WTNScGIyNG5LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZDFjR1JoZEdVb0tUb2daWGh3WldOMFpXUWdjM0JsWXlCdlppQWxjeUIwYnlCaVpTQmhJR1oxYm1OMGFXOXVPeUJuYjNRZ0pYTXVKeXdnUTA5TlRVRk9SRjlCVUZCTVdTd2djM0JsWTF0RFQwMU5RVTVFWDBGUVVFeFpYU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUc1bGVIUldZV3gxWlNBOUlITndaV05iUTA5TlRVRk9SRjlCVUZCTVdWMG9ibVY0ZEZaaGJIVmxLVHRjYmlBZ2ZWeHVYRzRnSUdadmNpQW9kbUZ5SUdzZ2FXNGdjM0JsWXlrZ2UxeHVJQ0FnSUdsbUlDZ2hLRUZNVEY5RFQwMU5RVTVFVTE5VFJWUXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2F5a2dKaVlnUVV4TVgwTlBUVTFCVGtSVFgxTkZWRnRyWFNrcElIdGNiaUFnSUNBZ0lHNWxlSFJXWVd4MVpWdHJYU0E5SUhWd1pHRjBaU2gyWVd4MVpWdHJYU3dnYzNCbFkxdHJYU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJRzVsZUhSV1lXeDFaVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQjFjR1JoZEdVN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB2YWxpZGF0ZURPTU5lc3RpbmdcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUgSFRNTDUgcGFyc2luZyBzcGVjOlxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICAvL1xuICAvLyBOb3RlOiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0IHRyeSB0byAoYXMgaXQnc1xuICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBkb2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seVxuICAvLyBmb3IgY2FzZXMgd2hlcmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdoYXQgUmVhY3RcbiAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4gaXMgaW52YWxpZCBidXQgd2UgZG9uJ3Qgd2FyblxuICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkXG4gIC8vIDxwPiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxpY2l0bHkgY2xvc2VzIHRoZVxuICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLlxuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3NwZWNpYWxcbiAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVhJywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY29sJywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywgJ21haW4nLCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25vZW1iZWQnLCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFyYW0nLCAncGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc291cmNlJywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVtcGxhdGUnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndWwnLCAnd2JyJywgJ3htcCddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG4gIHZhciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJsZScsICd0ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsXG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxuICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVyZSAtLSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmVcbiAgLy8gZXJycyBvbiB0aGUgc2lkZSBvZiBmZXdlciB3YXJuaW5nc1xuICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlXG4gIHZhciBidXR0b25TY29wZVRhZ3MgPSBpblNjb3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQtdGFnc1xuICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbicsICdvcHRncm91cCcsICdwJywgJ3JwJywgJ3J0J107XG5cbiAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0ge1xuICAgIHBhcmVudFRhZzogbnVsbCxcblxuICAgIGZvcm1UYWc6IG51bGwsXG4gICAgYVRhZ0luU2NvcGU6IG51bGwsXG4gICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCxcbiAgICBub2JyVGFnSW5TY29wZTogbnVsbCxcbiAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCxcblxuICAgIGxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGwsXG4gICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGxcbiAgfTtcblxuICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3RhbmNlKSB7XG4gICAgdmFyIGFuY2VzdG9ySW5mbyA9IGFzc2lnbih7fSwgb2xkSW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbyk7XG4gICAgdmFyIGluZm8gPSB7IHRhZzogdGFnLCBpbnN0YW5jZTogaW5zdGFuY2UgfTtcblxuICAgIGlmIChpblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGJ1dHRvblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlZSBydWxlcyBmb3IgJ2xpJywgJ2RkJywgJ2R0JyBzdGFydCB0YWdzIGluXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIGlmIChzcGVjaWFsVGFncy5pbmRleE9mKHRhZykgIT09IC0xICYmIHRhZyAhPT0gJ2FkZHJlc3MnICYmIHRhZyAhPT0gJ2RpdicgJiYgdGFnICE9PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7XG4gICAgfVxuXG4gICAgYW5jZXN0b3JJbmZvLnBhcmVudFRhZyA9IGluZm87XG5cbiAgICBpZiAodGFnID09PSAnZm9ybScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2EnKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnYnV0dG9uJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnbm9icicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2xpJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0Jykge1xuICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JJbmZvO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xuICAgIC8vIEZpcnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4uLlxuICAgIHN3aXRjaCAocGFyZW50VGFnKSB7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3RcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJ29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICBjYXNlICdvcHRncm91cCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBtZWFuIHdlJ3JlIGluIGEgPHNlbGVjdD5cbiAgICAgIC8vIGJ1dFxuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JztcblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGRcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb25cbiAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3Igc2luY2UgdGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvIFwiaW4gYm9keVwiIG1vZGUgZm9yXG4gICAgICAvLyBhbGwgZXhjZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBhcnNpbmcgYmVoYXZpb3IgYW55d2F5LlxuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50clxuICAgICAgY2FzZSAndHInOlxuICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRib2R5XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICd0cicgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jb2xncm91cFxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRhYmxlXG4gICAgICBjYXNlICd0YWJsZSc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdjYXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAndGJvZHknIHx8IHRhZyA9PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5oZWFkXG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2Jhc2UnIHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09ICdiZ3NvdW5kJyB8fCB0YWcgPT09ICdsaW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09ICd0aXRsZScgfHwgdGFnID09PSAnbm9zY3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1sLWVsZW1lbnRcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwgdGFnID09PSAnYm9keSc7XG4gICAgfVxuXG4gICAgLy8gUHJvYmFibHkgaW4gdGhlIFwiaW4gYm9keVwiIHBhcnNpbmcgbW9kZSwgc28gd2Ugb3V0bGF3IG9ubHkgdGFnIGNvbWJvc1xuICAgIC8vIHdoZXJlIHRoZSBwYXJzaW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3NlcyB0byBiZSBhZGRlZC5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAgIGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicgJiYgcGFyZW50VGFnICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcgIT09ICdoNScgJiYgcGFyZW50VGFnICE9PSAnaDYnO1xuXG4gICAgICBjYXNlICdycCc6XG4gICAgICBjYXNlICdydCc6XG4gICAgICAgIHJldHVybiBpbXBsaWVkRW5kVGFncy5pbmRleE9mKHBhcmVudFRhZykgPT09IC0xO1xuXG4gICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2NvbCc6XG4gICAgICBjYXNlICdjb2xncm91cCc6XG4gICAgICBjYXNlICdmcmFtZSc6XG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgIGNhc2UgJ3Rib2R5JzpcbiAgICAgIGNhc2UgJ3RkJzpcbiAgICAgIGNhc2UgJ3Rmb290JzpcbiAgICAgIGNhc2UgJ3RoJzpcbiAgICAgIGNhc2UgJ3RoZWFkJzpcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBoYXZlIHNwZWNpYWwgY2hpbGRcbiAgICAgICAgLy8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdyZSBkb3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFuZFxuICAgICAgICAvLyBzbyB3ZSBhbGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBhcyBhbGwgb3RoZXJcbiAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuXG4gICAgICAgIHJldHVybiBwYXJlbnRUYWcgPT0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgZmluZEludmFsaWRBbmNlc3RvckZvclRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgIGNhc2UgJ2FydGljbGUnOlxuICAgICAgY2FzZSAnYXNpZGUnOlxuICAgICAgY2FzZSAnYmxvY2txdW90ZSc6XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgY2FzZSAnZGV0YWlscyc6XG4gICAgICBjYXNlICdkaWFsb2cnOlxuICAgICAgY2FzZSAnZGlyJzpcbiAgICAgIGNhc2UgJ2Rpdic6XG4gICAgICBjYXNlICdkbCc6XG4gICAgICBjYXNlICdmaWVsZHNldCc6XG4gICAgICBjYXNlICdmaWdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2ZpZ3VyZSc6XG4gICAgICBjYXNlICdmb290ZXInOlxuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgIGNhc2UgJ2hncm91cCc6XG4gICAgICBjYXNlICdtYWluJzpcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgY2FzZSAnbmF2JzpcbiAgICAgIGNhc2UgJ29sJzpcbiAgICAgIGNhc2UgJ3AnOlxuICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICBjYXNlICdzdW1tYXJ5JzpcbiAgICAgIGNhc2UgJ3VsJzpcblxuICAgICAgY2FzZSAncHJlJzpcbiAgICAgIGNhc2UgJ2xpc3RpbmcnOlxuXG4gICAgICBjYXNlICd0YWJsZSc6XG5cbiAgICAgIGNhc2UgJ2hyJzpcblxuICAgICAgY2FzZSAneG1wJzpcblxuICAgICAgY2FzZSAnaDEnOlxuICAgICAgY2FzZSAnaDInOlxuICAgICAgY2FzZSAnaDMnOlxuICAgICAgY2FzZSAnaDQnOlxuICAgICAgY2FzZSAnaDUnOlxuICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xuXG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2FzZSAnbGknOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2RkJzpcbiAgICAgIGNhc2UgJ2R0JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZztcblxuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlO1xuXG4gICAgICBjYXNlICdhJzpcbiAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0aGluZyBhYm91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay5cbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnbm9icic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZVxuICAgKiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFuZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgdmFyIGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIC8qZXNsaW50LWRpc2FibGUgc3BhY2UtYWZ0ZXIta2V5d29yZHMgKi9cbiAgICBkbyB7XG4gICAgICAvKmVzbGludC1lbmFibGUgc3BhY2UtYWZ0ZXIta2V5d29yZHMgKi9cbiAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2UpO1xuICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgc3RhY2sucmV2ZXJzZSgpO1xuICAgIHJldHVybiBzdGFjaztcbiAgfTtcblxuICB2YXIgZGlkV2FybiA9IHt9O1xuXG4gIHZhbGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRJbnN0YW5jZSwgYW5jZXN0b3JJbmZvKSB7XG4gICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuICAgIHZhciBwYXJlbnRJbmZvID0gYW5jZXN0b3JJbmZvLnBhcmVudFRhZztcbiAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZztcblxuICAgIHZhciBpbnZhbGlkUGFyZW50ID0gaXNUYWdWYWxpZFdpdGhQYXJlbnQoY2hpbGRUYWcsIHBhcmVudFRhZykgPyBudWxsIDogcGFyZW50SW5mbztcbiAgICB2YXIgaW52YWxpZEFuY2VzdG9yID0gaW52YWxpZFBhcmVudCA/IG51bGwgOiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFnLCBhbmNlc3RvckluZm8pO1xuICAgIHZhciBwcm9ibGVtYXRpYyA9IGludmFsaWRQYXJlbnQgfHwgaW52YWxpZEFuY2VzdG9yO1xuXG4gICAgaWYgKHByb2JsZW1hdGljKSB7XG4gICAgICB2YXIgYW5jZXN0b3JUYWcgPSBwcm9ibGVtYXRpYy50YWc7XG4gICAgICB2YXIgYW5jZXN0b3JJbnN0YW5jZSA9IHByb2JsZW1hdGljLmluc3RhbmNlO1xuXG4gICAgICB2YXIgY2hpbGRPd25lciA9IGNoaWxkSW5zdGFuY2UgJiYgY2hpbGRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXIgPSBhbmNlc3Rvckluc3RhbmNlICYmIGFuY2VzdG9ySW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblxuICAgICAgdmFyIGNoaWxkT3duZXJzID0gZmluZE93bmVyU3RhY2soY2hpbGRPd25lcik7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lcnMgPSBmaW5kT3duZXJTdGFjayhhbmNlc3Rvck93bmVyKTtcblxuICAgICAgdmFyIG1pblN0YWNrTGVuID0gTWF0aC5taW4oY2hpbGRPd25lcnMubGVuZ3RoLCBhbmNlc3Rvck93bmVycy5sZW5ndGgpO1xuICAgICAgdmFyIGk7XG5cbiAgICAgIHZhciBkZWVwZXN0Q29tbW9uID0gLTE7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbWluU3RhY2tMZW47IGkrKykge1xuICAgICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09IGFuY2VzdG9yT3duZXJzW2ldKSB7XG4gICAgICAgICAgZGVlcGVzdENvbW1vbiA9IGk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIFVOS05PV04gPSAnKHVua25vd24pJztcbiAgICAgIHZhciBjaGlsZE93bmVyTmFtZXMgPSBjaGlsZE93bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lck5hbWVzID0gYW5jZXN0b3JPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIG93bmVySW5mbyA9IFtdLmNvbmNhdChcbiAgICAgIC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBoYXZlIGEgY29tbW9uIG93bmVyIGFuY2VzdG9yLCBzdGFydFxuICAgICAgLy8gd2l0aCB0aGF0IC0tIG90aGVyd2lzZSB3ZSBqdXN0IHN0YXJ0IHdpdGggdGhlIHBhcmVudCdzIG93bmVycy5cbiAgICAgIGRlZXBlc3RDb21tb24gIT09IC0xID8gY2hpbGRPd25lcnNbZGVlcGVzdENvbW1vbl0uZ2V0TmFtZSgpIHx8IFVOS05PV04gOiBbXSwgYW5jZXN0b3JPd25lck5hbWVzLCBhbmNlc3RvclRhZyxcbiAgICAgIC8vIElmIHdlJ3JlIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5jZXN0cnksIGFkZCAnLi4uJ1xuICAgICAgaW52YWxpZEFuY2VzdG9yID8gWycuLi4nXSA6IFtdLCBjaGlsZE93bmVyTmFtZXMsIGNoaWxkVGFnKS5qb2luKCcgPiAnKTtcblxuICAgICAgdmFyIHdhcm5LZXkgPSAhIWludmFsaWRQYXJlbnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFnICsgJ3wnICsgb3duZXJJbmZvO1xuICAgICAgaWYgKGRpZFdhcm5bd2FybktleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGlkV2Fyblt3YXJuS2V5XSA9IHRydWU7XG5cbiAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7XG4gICAgICAgIHZhciBpbmZvID0gJyc7XG4gICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykge1xuICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIuJztcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiA8JXM+IGNhbm5vdCBhcHBlYXIgYXMgYSBjaGlsZCBvZiA8JXM+LiAnICsgJ1NlZSAlcy4lcycsIGNoaWxkVGFnLCBhbmNlc3RvclRhZywgb3duZXJJbmZvLCBpbmZvKSA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6IDwlcz4gY2Fubm90IGFwcGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgY2hpbGRUYWcsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleSA9ICdfX3ZhbGlkYXRlRE9NTmVzdGluZ19hbmNlc3RvckluZm8kJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG4gIHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRlZEFuY2VzdG9ySW5mbztcblxuICAvLyBGb3IgdGVzdGluZ1xuICB2YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxpZEluQ29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5wYXJlbnRUYWc7XG4gICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG4gICAgcmV0dXJuIGlzVGFnVmFsaWRXaXRoUGFyZW50KHRhZywgcGFyZW50VGFnKSAmJiAhZmluZEludmFsaWRBbmNlc3RvckZvclRhZyh0YWcsIGFuY2VzdG9ySW5mbyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsaWRhdGVET01OZXN0aW5nO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5MllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQjJZV3hwWkdGMFpVUlBUVTVsYzNScGJtZGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmxiWEIwZVVaMWJtTjBhVzl1SUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlpXMXdkSGxHZFc1amRHbHZiaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUIyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWNnUFNCbGJYQjBlVVoxYm1OMGFXOXVPMXh1WEc1cFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQXZMeUJVYUdseklIWmhiR2xrWVhScGIyNGdZMjlrWlNCM1lYTWdkM0pwZEhSbGJpQmlZWE5sWkNCdmJpQjBhR1VnU0ZSTlREVWdjR0Z5YzJsdVp5QnpjR1ZqT2x4dUlDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTm9ZWE10WVc0dFpXeGxiV1Z1ZEMxcGJpMXpZMjl3WlZ4dUlDQXZMMXh1SUNBdkx5Qk9iM1JsT2lCMGFHbHpJR1J2WlhNZ2JtOTBJR05oZEdOb0lHRnNiQ0JwYm5aaGJHbGtJRzVsYzNScGJtY3NJRzV2Y2lCa2IyVnpJR2wwSUhSeWVTQjBieUFvWVhNZ2FYUW5jMXh1SUNBdkx5QnViM1FnWTJ4bFlYSWdkMmhoZENCd2NtRmpkR2xqWVd3Z1ltVnVaV1pwZENCa2IybHVaeUJ6YnlCd2NtOTJhV1JsY3lrN0lHbHVjM1JsWVdRc0lIZGxJSGRoY200Z2IyNXNlVnh1SUNBdkx5Qm1iM0lnWTJGelpYTWdkMmhsY21VZ2RHaGxJSEJoY25ObGNpQjNhV3hzSUdkcGRtVWdZU0J3WVhKelpTQjBjbVZsSUdScFptWmxjbWx1WnlCbWNtOXRJSGRvWVhRZ1VtVmhZM1JjYmlBZ0x5OGdhVzUwWlc1a1pXUXVJRVp2Y2lCbGVHRnRjR3hsTENBOFlqNDhaR2wyUGp3dlpHbDJQand2WWo0Z2FYTWdhVzUyWVd4cFpDQmlkWFFnZDJVZ1pHOXVKM1FnZDJGeWJseHVJQ0F2THlCaVpXTmhkWE5sSUdsMElITjBhV3hzSUhCaGNuTmxjeUJqYjNKeVpXTjBiSGs3SUhkbElHUnZJSGRoY200Z1ptOXlJRzkwYUdWeUlHTmhjMlZ6SUd4cGEyVWdibVZ6ZEdWa1hHNGdJQzh2SUR4d1BpQjBZV2R6SUhkb1pYSmxJSFJvWlNCaVpXZHBibTVwYm1jZ2IyWWdkR2hsSUhObFkyOXVaQ0JsYkdWdFpXNTBJR2x0Y0d4cFkybDBiSGtnWTJ4dmMyVnpJSFJvWlZ4dUlDQXZMeUJtYVhKemRDd2dZMkYxYzJsdVp5QmhJR052Ym1aMWMybHVaeUJ0WlhOekxseHVYRzRnSUM4dklHaDBkSEJ6T2k4dmFIUnRiQzV6Y0dWakxuZG9ZWFIzWnk1dmNtY3ZiWFZzZEdsd1lXZGxMM041Ym5SaGVDNW9kRzFzSTNOd1pXTnBZV3hjYmlBZ2RtRnlJSE53WldOcFlXeFVZV2R6SUQwZ1d5ZGhaR1J5WlhOekp5d2dKMkZ3Y0d4bGRDY3NJQ2RoY21WaEp5d2dKMkZ5ZEdsamJHVW5MQ0FuWVhOcFpHVW5MQ0FuWW1GelpTY3NJQ2RpWVhObFptOXVkQ2NzSUNkaVozTnZkVzVrSnl3Z0oySnNiMk5yY1hWdmRHVW5MQ0FuWW05a2VTY3NJQ2RpY2ljc0lDZGlkWFIwYjI0bkxDQW5ZMkZ3ZEdsdmJpY3NJQ2RqWlc1MFpYSW5MQ0FuWTI5c0p5d2dKMk52YkdkeWIzVndKeXdnSjJSa0p5d2dKMlJsZEdGcGJITW5MQ0FuWkdseUp5d2dKMlJwZGljc0lDZGtiQ2NzSUNka2RDY3NJQ2RsYldKbFpDY3NJQ2RtYVdWc1pITmxkQ2NzSUNkbWFXZGpZWEIwYVc5dUp5d2dKMlpwWjNWeVpTY3NJQ2RtYjI5MFpYSW5MQ0FuWm05eWJTY3NJQ2RtY21GdFpTY3NJQ2RtY21GdFpYTmxkQ2NzSUNkb01TY3NJQ2RvTWljc0lDZG9NeWNzSUNkb05DY3NJQ2RvTlNjc0lDZG9OaWNzSUNkb1pXRmtKeXdnSjJobFlXUmxjaWNzSUNkb1ozSnZkWEFuTENBbmFISW5MQ0FuYUhSdGJDY3NJQ2RwWm5KaGJXVW5MQ0FuYVcxbkp5d2dKMmx1Y0hWMEp5d2dKMmx6YVc1a1pYZ25MQ0FuYkdrbkxDQW5iR2x1YXljc0lDZHNhWE4wYVc1bkp5d2dKMjFoYVc0bkxDQW5iV0Z5Y1hWbFpTY3NJQ2R0Wlc1MUp5d2dKMjFsYm5WcGRHVnRKeXdnSjIxbGRHRW5MQ0FuYm1GMkp5d2dKMjV2WlcxaVpXUW5MQ0FuYm05bWNtRnRaWE1uTENBbmJtOXpZM0pwY0hRbkxDQW5iMkpxWldOMEp5d2dKMjlzSnl3Z0ozQW5MQ0FuY0dGeVlXMG5MQ0FuY0d4aGFXNTBaWGgwSnl3Z0ozQnlaU2NzSUNkelkzSnBjSFFuTENBbmMyVmpkR2x2Ymljc0lDZHpaV3hsWTNRbkxDQW5jMjkxY21ObEp5d2dKM04wZVd4bEp5d2dKM04xYlcxaGNua25MQ0FuZEdGaWJHVW5MQ0FuZEdKdlpIa25MQ0FuZEdRbkxDQW5kR1Z0Y0d4aGRHVW5MQ0FuZEdWNGRHRnlaV0VuTENBbmRHWnZiM1FuTENBbmRHZ25MQ0FuZEdobFlXUW5MQ0FuZEdsMGJHVW5MQ0FuZEhJbkxDQW5kSEpoWTJzbkxDQW5kV3duTENBbmQySnlKeXdnSjNodGNDZGRPMXh1WEc0Z0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kyaGhjeTFoYmkxbGJHVnRaVzUwTFdsdUxYTmpiM0JsWEc0Z0lIWmhjaUJwYmxOamIzQmxWR0ZuY3lBOUlGc25ZWEJ3YkdWMEp5d2dKMk5oY0hScGIyNG5MQ0FuYUhSdGJDY3NJQ2QwWVdKc1pTY3NJQ2QwWkNjc0lDZDBhQ2NzSUNkdFlYSnhkV1ZsSnl3Z0oyOWlhbVZqZENjc0lDZDBaVzF3YkdGMFpTY3NYRzVjYmlBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amFIUnRiQzFwYm5SbFozSmhkR2x2Ymkxd2IybHVkRnh1SUNBdkx5QlVUMFJQT2lCRWFYTjBhVzVuZFdsemFDQmllU0J1WVcxbGMzQmhZMlVnYUdWeVpTQXRMU0JtYjNJZ1BIUnBkR3hsUGl3Z2FXNWpiSFZrYVc1bklHbDBJR2hsY21WY2JpQWdMeThnWlhKeWN5QnZiaUIwYUdVZ2MybGtaU0J2WmlCbVpYZGxjaUIzWVhKdWFXNW5jMXh1SUNBblptOXlaV2xuYms5aWFtVmpkQ2NzSUNka1pYTmpKeXdnSjNScGRHeGxKMTA3WEc1Y2JpQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2phR0Z6TFdGdUxXVnNaVzFsYm5RdGFXNHRZblYwZEc5dUxYTmpiM0JsWEc0Z0lIWmhjaUJpZFhSMGIyNVRZMjl3WlZSaFozTWdQU0JwYmxOamIzQmxWR0ZuY3k1amIyNWpZWFFvV3lkaWRYUjBiMjRuWFNrN1hHNWNiaUFnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqWjJWdVpYSmhkR1V0YVcxd2JHbGxaQzFsYm1RdGRHRm5jMXh1SUNCMllYSWdhVzF3YkdsbFpFVnVaRlJoWjNNZ1BTQmJKMlJrSnl3Z0oyUjBKeXdnSjJ4cEp5d2dKMjl3ZEdsdmJpY3NJQ2R2Y0hSbmNtOTFjQ2NzSUNkd0p5d2dKM0p3Snl3Z0ozSjBKMTA3WEc1Y2JpQWdkbUZ5SUdWdGNIUjVRVzVqWlhOMGIzSkpibVp2SUQwZ2UxeHVJQ0FnSUhCaGNtVnVkRlJoWnpvZ2JuVnNiQ3hjYmx4dUlDQWdJR1p2Y20xVVlXYzZJRzUxYkd3c1hHNGdJQ0FnWVZSaFowbHVVMk52Y0dVNklHNTFiR3dzWEc0Z0lDQWdZblYwZEc5dVZHRm5TVzVUWTI5d1pUb2diblZzYkN4Y2JpQWdJQ0J1YjJKeVZHRm5TVzVUWTI5d1pUb2diblZzYkN4Y2JpQWdJQ0J3VkdGblNXNUNkWFIwYjI1VFkyOXdaVG9nYm5Wc2JDeGNibHh1SUNBZ0lHeHBjM1JKZEdWdFZHRm5RWFYwYjJOc2IzTnBibWM2SUc1MWJHd3NYRzRnSUNBZ1pHeEpkR1Z0VkdGblFYVjBiMk5zYjNOcGJtYzZJRzUxYkd4Y2JpQWdmVHRjYmx4dUlDQjJZWElnZFhCa1lYUmxaRUZ1WTJWemRHOXlTVzVtYnlBOUlHWjFibU4wYVc5dUlDaHZiR1JKYm1adkxDQjBZV2NzSUdsdWMzUmhibU5sS1NCN1hHNGdJQ0FnZG1GeUlHRnVZMlZ6ZEc5eVNXNW1ieUE5SUdGemMybG5iaWg3ZlN3Z2IyeGtTVzVtYnlCOGZDQmxiWEIwZVVGdVkyVnpkRzl5U1c1bWJ5azdYRzRnSUNBZ2RtRnlJR2x1Wm04Z1BTQjdJSFJoWnpvZ2RHRm5MQ0JwYm5OMFlXNWpaVG9nYVc1emRHRnVZMlVnZlR0Y2JseHVJQ0FnSUdsbUlDaHBibE5qYjNCbFZHRm5jeTVwYm1SbGVFOW1LSFJoWnlrZ0lUMDlJQzB4S1NCN1hHNGdJQ0FnSUNCaGJtTmxjM1J2Y2tsdVptOHVZVlJoWjBsdVUyTnZjR1VnUFNCdWRXeHNPMXh1SUNBZ0lDQWdZVzVqWlhOMGIzSkpibVp2TG1KMWRIUnZibFJoWjBsdVUyTnZjR1VnUFNCdWRXeHNPMXh1SUNBZ0lDQWdZVzVqWlhOMGIzSkpibVp2TG01dlluSlVZV2RKYmxOamIzQmxJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHSjFkSFJ2YmxOamIzQmxWR0ZuY3k1cGJtUmxlRTltS0hSaFp5a2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQmhibU5sYzNSdmNrbHVabTh1Y0ZSaFowbHVRblYwZEc5dVUyTnZjR1VnUFNCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRk5sWlNCeWRXeGxjeUJtYjNJZ0oyeHBKeXdnSjJSa0p5d2dKMlIwSnlCemRHRnlkQ0IwWVdkeklHbHVYRzRnSUNBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amNHRnljMmx1WnkxdFlXbHVMV2x1WW05a2VWeHVJQ0FnSUdsbUlDaHpjR1ZqYVdGc1ZHRm5jeTVwYm1SbGVFOW1LSFJoWnlrZ0lUMDlJQzB4SUNZbUlIUmhaeUFoUFQwZ0oyRmtaSEpsYzNNbklDWW1JSFJoWnlBaFBUMGdKMlJwZGljZ0ppWWdkR0ZuSUNFOVBTQW5jQ2NwSUh0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NXNhWE4wU1hSbGJWUmhaMEYxZEc5amJHOXphVzVuSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJR0Z1WTJWemRHOXlTVzVtYnk1a2JFbDBaVzFVWVdkQmRYUnZZMnh2YzJsdVp5QTlJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWVc1alpYTjBiM0pKYm1adkxuQmhjbVZ1ZEZSaFp5QTlJR2x1Wm04N1hHNWNiaUFnSUNCcFppQW9kR0ZuSUQwOVBTQW5abTl5YlNjcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTVtYjNKdFZHRm5JRDBnYVc1bWJ6dGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUmhaeUE5UFQwZ0oyRW5LU0I3WEc0Z0lDQWdJQ0JoYm1ObGMzUnZja2x1Wm04dVlWUmhaMGx1VTJOdmNHVWdQU0JwYm1adk8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHRm5JRDA5UFNBblluVjBkRzl1SnlrZ2UxeHVJQ0FnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbUoxZEhSdmJsUmhaMGx1VTJOdmNHVWdQU0JwYm1adk8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHRm5JRDA5UFNBbmJtOWljaWNwSUh0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NXViMkp5VkdGblNXNVRZMjl3WlNBOUlHbHVabTg3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwWVdjZ1BUMDlJQ2R3SnlrZ2UxeHVJQ0FnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbkJVWVdkSmJrSjFkSFJ2YmxOamIzQmxJRDBnYVc1bWJ6dGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUmhaeUE5UFQwZ0oyeHBKeWtnZTF4dUlDQWdJQ0FnWVc1alpYTjBiM0pKYm1adkxteHBjM1JKZEdWdFZHRm5RWFYwYjJOc2IzTnBibWNnUFNCcGJtWnZPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kR0ZuSUQwOVBTQW5aR1FuSUh4OElIUmhaeUE5UFQwZ0oyUjBKeWtnZTF4dUlDQWdJQ0FnWVc1alpYTjBiM0pKYm1adkxtUnNTWFJsYlZSaFowRjFkRzlqYkc5emFXNW5JRDBnYVc1bWJ6dGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnWVc1alpYTjBiM0pKYm1adk8xeHVJQ0I5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJSGRvWlhSb1pYSmNiaUFnSUNvdlhHNGdJSFpoY2lCcGMxUmhaMVpoYkdsa1YybDBhRkJoY21WdWRDQTlJR1oxYm1OMGFXOXVJQ2gwWVdjc0lIQmhjbVZ1ZEZSaFp5a2dlMXh1SUNBZ0lDOHZJRVpwY25OMExDQnNaWFFuY3lCamFHVmpheUJwWmlCM1pTZHlaU0JwYmlCaGJpQjFiblZ6ZFdGc0lIQmhjbk5wYm1jZ2JXOWtaUzR1TGx4dUlDQWdJSE4zYVhSamFDQW9jR0Z5Wlc1MFZHRm5LU0I3WEc0Z0lDQWdJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNXpaV3hsWTNSY2JpQWdJQ0FnSUdOaGMyVWdKM05sYkdWamRDYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBZV2NnUFQwOUlDZHZjSFJwYjI0bklIeDhJSFJoWnlBOVBUMGdKMjl3ZEdkeWIzVndKeUI4ZkNCMFlXY2dQVDA5SUNjamRHVjRkQ2M3WEc0Z0lDQWdJQ0JqWVhObElDZHZjSFJuY205MWNDYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBZV2NnUFQwOUlDZHZjSFJwYjI0bklIeDhJSFJoWnlBOVBUMGdKeU4wWlhoMEp6dGNiaUFnSUNBZ0lDOHZJRk4wY21samRHeDVJSE53WldGcmFXNW5MQ0J6WldWcGJtY2dZVzRnUEc5d2RHbHZiajRnWkc5bGMyNG5kQ0J0WldGdUlIZGxKM0psSUdsdUlHRWdQSE5sYkdWamRENWNiaUFnSUNBZ0lDOHZJR0oxZEZ4dUlDQWdJQ0FnWTJGelpTQW5iM0IwYVc5dUp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUmhaeUE5UFQwZ0p5TjBaWGgwSnp0Y2JseHVJQ0FnSUNBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amNHRnljMmx1WnkxdFlXbHVMV2x1ZEdSY2JpQWdJQ0FnSUM4dklHaDBkSEJ6T2k4dmFIUnRiQzV6Y0dWakxuZG9ZWFIzWnk1dmNtY3ZiWFZzZEdsd1lXZGxMM041Ym5SaGVDNW9kRzFzSTNCaGNuTnBibWN0YldGcGJpMXBibU5oY0hScGIyNWNiaUFnSUNBZ0lDOHZJRTV2SUhOd1pXTnBZV3dnWW1Wb1lYWnBiM0lnYzJsdVkyVWdkR2hsYzJVZ2NuVnNaWE1nWm1Gc2JDQmlZV05ySUhSdklGd2lhVzRnWW05a2VWd2lJRzF2WkdVZ1ptOXlYRzRnSUNBZ0lDQXZMeUJoYkd3Z1pYaGpaWEIwSUhOd1pXTnBZV3dnZEdGaWJHVWdibTlrWlhNZ2QyaHBZMmdnWTJGMWMyVWdZbUZrSUhCaGNuTnBibWNnWW1Wb1lYWnBiM0lnWVc1NWQyRjVMbHh1WEc0Z0lDQWdJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNTBjbHh1SUNBZ0lDQWdZMkZ6WlNBbmRISW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0ZuSUQwOVBTQW5kR2duSUh4OElIUmhaeUE5UFQwZ0ozUmtKeUI4ZkNCMFlXY2dQVDA5SUNkemRIbHNaU2NnZkh3Z2RHRm5JRDA5UFNBbmMyTnlhWEIwSnlCOGZDQjBZV2NnUFQwOUlDZDBaVzF3YkdGMFpTYzdYRzVjYmlBZ0lDQWdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJM0JoY25OcGJtY3RiV0ZwYmkxcGJuUmliMlI1WEc0Z0lDQWdJQ0JqWVhObElDZDBZbTlrZVNjNlhHNGdJQ0FnSUNCallYTmxJQ2QwYUdWaFpDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMFptOXZkQ2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjZ1BUMDlJQ2QwY2ljZ2ZId2dkR0ZuSUQwOVBTQW5jM1I1YkdVbklIeDhJSFJoWnlBOVBUMGdKM05qY21sd2RDY2dmSHdnZEdGbklEMDlQU0FuZEdWdGNHeGhkR1VuTzF4dVhHNGdJQ0FnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzVqYjJ4bmNtOTFjRnh1SUNBZ0lDQWdZMkZ6WlNBblkyOXNaM0p2ZFhBbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHRm5JRDA5UFNBblkyOXNKeUI4ZkNCMFlXY2dQVDA5SUNkMFpXMXdiR0YwWlNjN1hHNWNiaUFnSUNBZ0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kzQmhjbk5wYm1jdGJXRnBiaTFwYm5SaFlteGxYRzRnSUNBZ0lDQmpZWE5sSUNkMFlXSnNaU2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjZ1BUMDlJQ2RqWVhCMGFXOXVKeUI4ZkNCMFlXY2dQVDA5SUNkamIyeG5jbTkxY0NjZ2ZId2dkR0ZuSUQwOVBTQW5kR0p2WkhrbklIeDhJSFJoWnlBOVBUMGdKM1JtYjI5MEp5QjhmQ0IwWVdjZ1BUMDlJQ2QwYUdWaFpDY2dmSHdnZEdGbklEMDlQU0FuYzNSNWJHVW5JSHg4SUhSaFp5QTlQVDBnSjNOamNtbHdkQ2NnZkh3Z2RHRm5JRDA5UFNBbmRHVnRjR3hoZEdVbk8xeHVYRzRnSUNBZ0lDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTndZWEp6YVc1bkxXMWhhVzR0YVc1b1pXRmtYRzRnSUNBZ0lDQmpZWE5sSUNkb1pXRmtKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJoWnlBOVBUMGdKMkpoYzJVbklIeDhJSFJoWnlBOVBUMGdKMkpoYzJWbWIyNTBKeUI4ZkNCMFlXY2dQVDA5SUNkaVozTnZkVzVrSnlCOGZDQjBZV2NnUFQwOUlDZHNhVzVySnlCOGZDQjBZV2NnUFQwOUlDZHRaWFJoSnlCOGZDQjBZV2NnUFQwOUlDZDBhWFJzWlNjZ2ZId2dkR0ZuSUQwOVBTQW5ibTl6WTNKcGNIUW5JSHg4SUhSaFp5QTlQVDBnSjI1dlpuSmhiV1Z6SnlCOGZDQjBZV2NnUFQwOUlDZHpkSGxzWlNjZ2ZId2dkR0ZuSUQwOVBTQW5jMk55YVhCMEp5QjhmQ0IwWVdjZ1BUMDlJQ2QwWlcxd2JHRjBaU2M3WEc1Y2JpQWdJQ0FnSUM4dklHaDBkSEJ6T2k4dmFIUnRiQzV6Y0dWakxuZG9ZWFIzWnk1dmNtY3ZiWFZzZEdsd1lXZGxMM05sYldGdWRHbGpjeTVvZEcxc0kzUm9aUzFvZEcxc0xXVnNaVzFsYm5SY2JpQWdJQ0FnSUdOaGMyVWdKMmgwYld3bk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHRm5JRDA5UFNBbmFHVmhaQ2NnZkh3Z2RHRm5JRDA5UFNBblltOWtlU2M3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVUhKdlltRmliSGtnYVc0Z2RHaGxJRndpYVc0Z1ltOWtlVndpSUhCaGNuTnBibWNnYlc5a1pTd2djMjhnZDJVZ2IzVjBiR0YzSUc5dWJIa2dkR0ZuSUdOdmJXSnZjMXh1SUNBZ0lDOHZJSGRvWlhKbElIUm9aU0J3WVhKemFXNW5JSEoxYkdWeklHTmhkWE5sSUdsdGNHeHBZMmwwSUc5d1pXNXpJRzl5SUdOc2IzTmxjeUIwYnlCaVpTQmhaR1JsWkM1Y2JpQWdJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNWliMlI1WEc0Z0lDQWdjM2RwZEdOb0lDaDBZV2NwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdKMmd4SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmd5SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmd6SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmcwSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmcxSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmcySnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhCaGNtVnVkRlJoWnlBaFBUMGdKMmd4SnlBbUppQndZWEpsYm5SVVlXY2dJVDA5SUNkb01pY2dKaVlnY0dGeVpXNTBWR0ZuSUNFOVBTQW5hRE1uSUNZbUlIQmhjbVZ1ZEZSaFp5QWhQVDBnSjJnMEp5QW1KaUJ3WVhKbGJuUlVZV2NnSVQwOUlDZG9OU2NnSmlZZ2NHRnlaVzUwVkdGbklDRTlQU0FuYURZbk8xeHVYRzRnSUNBZ0lDQmpZWE5sSUNkeWNDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkeWRDYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnBiWEJzYVdWa1JXNWtWR0ZuY3k1cGJtUmxlRTltS0hCaGNtVnVkRlJoWnlrZ1BUMDlJQzB4TzF4dVhHNGdJQ0FnSUNCallYTmxJQ2RqWVhCMGFXOXVKenBjYmlBZ0lDQWdJR05oYzJVZ0oyTnZiQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZGpiMnhuY205MWNDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkbWNtRnRaU2M2WEc0Z0lDQWdJQ0JqWVhObElDZG9aV0ZrSnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1JpYjJSNUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjNSa0p6cGNiaUFnSUNBZ0lHTmhjMlVnSjNSbWIyOTBKenBjYmlBZ0lDQWdJR05oYzJVZ0ozUm9KenBjYmlBZ0lDQWdJR05oYzJVZ0ozUm9aV0ZrSnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1J5SnpwY2JpQWdJQ0FnSUNBZ0x5OGdWR2hsYzJVZ2RHRm5jeUJoY21VZ2IyNXNlU0IyWVd4cFpDQjNhWFJvSUdFZ1ptVjNJSEJoY21WdWRITWdkR2hoZENCb1lYWmxJSE53WldOcFlXd2dZMmhwYkdSY2JpQWdJQ0FnSUNBZ0x5OGdjR0Z5YzJsdVp5QnlkV3hsY3lBdExTQnBaaUIzWlNkeVpTQmtiM2R1SUdobGNtVXNJSFJvWlc0Z2JtOXVaU0J2WmlCMGFHOXpaU0J0WVhSamFHVmtJR0Z1WkZ4dUlDQWdJQ0FnSUNBdkx5QnpieUIzWlNCaGJHeHZkeUJwZENCdmJteDVJR2xtSUhkbElHUnZiaWQwSUd0dWIzY2dkMmhoZENCMGFHVWdjR0Z5Wlc1MElHbHpMQ0JoY3lCaGJHd2diM1JvWlhKY2JpQWdJQ0FnSUNBZ0x5OGdZMkZ6WlhNZ1lYSmxJR2x1ZG1Gc2FXUXVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQndZWEpsYm5SVVlXY2dQVDBnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUIzYUdWMGFHVnlYRzRnSUNBcUwxeHVJQ0IyWVhJZ1ptbHVaRWx1ZG1Gc2FXUkJibU5sYzNSdmNrWnZjbFJoWnlBOUlHWjFibU4wYVc5dUlDaDBZV2NzSUdGdVkyVnpkRzl5U1c1bWJ5a2dlMXh1SUNBZ0lITjNhWFJqYUNBb2RHRm5LU0I3WEc0Z0lDQWdJQ0JqWVhObElDZGhaR1J5WlhOekp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJGeWRHbGpiR1VuT2x4dUlDQWdJQ0FnWTJGelpTQW5ZWE5wWkdVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWW14dlkydHhkVzkwWlNjNlhHNGdJQ0FnSUNCallYTmxJQ2RqWlc1MFpYSW5PbHh1SUNBZ0lDQWdZMkZ6WlNBblpHVjBZV2xzY3ljNlhHNGdJQ0FnSUNCallYTmxJQ2RrYVdGc2IyY25PbHh1SUNBZ0lDQWdZMkZ6WlNBblpHbHlKenBjYmlBZ0lDQWdJR05oYzJVZ0oyUnBkaWM2WEc0Z0lDQWdJQ0JqWVhObElDZGtiQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZG1hV1ZzWkhObGRDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkbWFXZGpZWEIwYVc5dUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJacFozVnlaU2M2WEc0Z0lDQWdJQ0JqWVhObElDZG1iMjkwWlhJbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYUdWaFpHVnlKenBjYmlBZ0lDQWdJR05oYzJVZ0oyaG5jbTkxY0NjNlhHNGdJQ0FnSUNCallYTmxJQ2R0WVdsdUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjIxbGJuVW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmJtRjJKenBjYmlBZ0lDQWdJR05oYzJVZ0oyOXNKenBjYmlBZ0lDQWdJR05oYzJVZ0ozQW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmMyVmpkR2x2YmljNlhHNGdJQ0FnSUNCallYTmxJQ2R6ZFcxdFlYSjVKenBjYmlBZ0lDQWdJR05oYzJVZ0ozVnNKenBjYmx4dUlDQWdJQ0FnWTJGelpTQW5jSEpsSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMnhwYzNScGJtY25PbHh1WEc0Z0lDQWdJQ0JqWVhObElDZDBZV0pzWlNjNlhHNWNiaUFnSUNBZ0lHTmhjMlVnSjJoeUp6cGNibHh1SUNBZ0lDQWdZMkZ6WlNBbmVHMXdKenBjYmx4dUlDQWdJQ0FnWTJGelpTQW5hREVuT2x4dUlDQWdJQ0FnWTJGelpTQW5hREluT2x4dUlDQWdJQ0FnWTJGelpTQW5hRE1uT2x4dUlDQWdJQ0FnWTJGelpTQW5hRFFuT2x4dUlDQWdJQ0FnWTJGelpTQW5hRFVuT2x4dUlDQWdJQ0FnWTJGelpTQW5hRFluT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWVc1alpYTjBiM0pKYm1adkxuQlVZV2RKYmtKMWRIUnZibE5qYjNCbE8xeHVYRzRnSUNBZ0lDQmpZWE5sSUNkbWIzSnRKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z1WTJWemRHOXlTVzVtYnk1bWIzSnRWR0ZuSUh4OElHRnVZMlZ6ZEc5eVNXNW1ieTV3VkdGblNXNUNkWFIwYjI1VFkyOXdaVHRjYmx4dUlDQWdJQ0FnWTJGelpTQW5iR2tuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWVc1alpYTjBiM0pKYm1adkxteHBjM1JKZEdWdFZHRm5RWFYwYjJOc2IzTnBibWM3WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMlJrSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMlIwSnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdVkyVnpkRzl5U1c1bWJ5NWtiRWwwWlcxVVlXZEJkWFJ2WTJ4dmMybHVaenRjYmx4dUlDQWdJQ0FnWTJGelpTQW5ZblYwZEc5dUp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnVZMlZ6ZEc5eVNXNW1ieTVpZFhSMGIyNVVZV2RKYmxOamIzQmxPMXh1WEc0Z0lDQWdJQ0JqWVhObElDZGhKenBjYmlBZ0lDQWdJQ0FnTHk4Z1UzQmxZeUJ6WVhseklITnZiV1YwYUdsdVp5QmhZbTkxZENCemRHOXlhVzVuSUdFZ2JHbHpkQ0J2WmlCdFlYSnJaWEp6TENCaWRYUWdhWFFnYzI5MWJtUnpYRzRnSUNBZ0lDQWdJQzh2SUdWeGRXbDJZV3hsYm5RZ2RHOGdkR2hwY3lCamFHVmpheTVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z1WTJWemRHOXlTVzVtYnk1aFZHRm5TVzVUWTI5d1pUdGNibHh1SUNBZ0lDQWdZMkZ6WlNBbmJtOWljaWM2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYm1ObGMzUnZja2x1Wm04dWJtOWljbFJoWjBsdVUyTnZjR1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZHBkbVZ1SUdFZ1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFnYVc1emRHRnVZMlVzSUhKbGRIVnliaUJoSUd4cGMzUWdiMllnYVhSeklISmxZM1Z5YzJsMlpWeHVJQ0FnS2lCdmQyNWxjbk1zSUhOMFlYSjBhVzVuSUdGMElIUm9aU0J5YjI5MElHRnVaQ0JsYm1ScGJtY2dkMmwwYUNCMGFHVWdhVzV6ZEdGdVkyVWdhWFJ6Wld4bUxseHVJQ0FnS2k5Y2JpQWdkbUZ5SUdacGJtUlBkMjVsY2xOMFlXTnJJRDBnWm5WdVkzUnBiMjRnS0dsdWMzUmhibU5sS1NCN1hHNGdJQ0FnYVdZZ0tDRnBibk4wWVc1alpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlGdGRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ6ZEdGamF5QTlJRnRkTzF4dUlDQWdJQzhxWlhOc2FXNTBMV1JwYzJGaWJHVWdjM0JoWTJVdFlXWjBaWEl0YTJWNWQyOXlaSE1nS2k5Y2JpQWdJQ0JrYnlCN1hHNGdJQ0FnSUNBdkttVnpiR2x1ZEMxbGJtRmliR1VnYzNCaFkyVXRZV1owWlhJdGEyVjVkMjl5WkhNZ0tpOWNiaUFnSUNBZ0lITjBZV05yTG5CMWMyZ29hVzV6ZEdGdVkyVXBPMXh1SUNBZ0lIMGdkMmhwYkdVZ0tHbHVjM1JoYm1ObElEMGdhVzV6ZEdGdVkyVXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExsOXZkMjVsY2lrN1hHNGdJQ0FnYzNSaFkyc3VjbVYyWlhKelpTZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCemRHRmphenRjYmlBZ2ZUdGNibHh1SUNCMllYSWdaR2xrVjJGeWJpQTlJSHQ5TzF4dVhHNGdJSFpoYkdsa1lYUmxSRTlOVG1WemRHbHVaeUE5SUdaMWJtTjBhVzl1SUNoamFHbHNaRlJoWnl3Z1kyaHBiR1JKYm5OMFlXNWpaU3dnWVc1alpYTjBiM0pKYm1adktTQjdYRzRnSUNBZ1lXNWpaWE4wYjNKSmJtWnZJRDBnWVc1alpYTjBiM0pKYm1adklIeDhJR1Z0Y0hSNVFXNWpaWE4wYjNKSmJtWnZPMXh1SUNBZ0lIWmhjaUJ3WVhKbGJuUkpibVp2SUQwZ1lXNWpaWE4wYjNKSmJtWnZMbkJoY21WdWRGUmhaenRjYmlBZ0lDQjJZWElnY0dGeVpXNTBWR0ZuSUQwZ2NHRnlaVzUwU1c1bWJ5QW1KaUJ3WVhKbGJuUkpibVp2TG5SaFp6dGNibHh1SUNBZ0lIWmhjaUJwYm5aaGJHbGtVR0Z5Wlc1MElEMGdhWE5VWVdkV1lXeHBaRmRwZEdoUVlYSmxiblFvWTJocGJHUlVZV2NzSUhCaGNtVnVkRlJoWnlrZ1B5QnVkV3hzSURvZ2NHRnlaVzUwU1c1bWJ6dGNiaUFnSUNCMllYSWdhVzUyWVd4cFpFRnVZMlZ6ZEc5eUlEMGdhVzUyWVd4cFpGQmhjbVZ1ZENBL0lHNTFiR3dnT2lCbWFXNWtTVzUyWVd4cFpFRnVZMlZ6ZEc5eVJtOXlWR0ZuS0dOb2FXeGtWR0ZuTENCaGJtTmxjM1J2Y2tsdVptOHBPMXh1SUNBZ0lIWmhjaUJ3Y205aWJHVnRZWFJwWXlBOUlHbHVkbUZzYVdSUVlYSmxiblFnZkh3Z2FXNTJZV3hwWkVGdVkyVnpkRzl5TzF4dVhHNGdJQ0FnYVdZZ0tIQnliMkpzWlcxaGRHbGpLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1lXNWpaWE4wYjNKVVlXY2dQU0J3Y205aWJHVnRZWFJwWXk1MFlXYzdYRzRnSUNBZ0lDQjJZWElnWVc1alpYTjBiM0pKYm5OMFlXNWpaU0E5SUhCeWIySnNaVzFoZEdsakxtbHVjM1JoYm1ObE8xeHVYRzRnSUNBZ0lDQjJZWElnWTJocGJHUlBkMjVsY2lBOUlHTm9hV3hrU1c1emRHRnVZMlVnSmlZZ1kyaHBiR1JKYm5OMFlXNWpaUzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeU8xeHVJQ0FnSUNBZ2RtRnlJR0Z1WTJWemRHOXlUM2R1WlhJZ1BTQmhibU5sYzNSdmNrbHVjM1JoYm1ObElDWW1JR0Z1WTJWemRHOXlTVzV6ZEdGdVkyVXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExsOXZkMjVsY2p0Y2JseHVJQ0FnSUNBZ2RtRnlJR05vYVd4a1QzZHVaWEp6SUQwZ1ptbHVaRTkzYm1WeVUzUmhZMnNvWTJocGJHUlBkMjVsY2lrN1hHNGdJQ0FnSUNCMllYSWdZVzVqWlhOMGIzSlBkMjVsY25NZ1BTQm1hVzVrVDNkdVpYSlRkR0ZqYXloaGJtTmxjM1J2Y2s5M2JtVnlLVHRjYmx4dUlDQWdJQ0FnZG1GeUlHMXBibE4wWVdOclRHVnVJRDBnVFdGMGFDNXRhVzRvWTJocGJHUlBkMjVsY25NdWJHVnVaM1JvTENCaGJtTmxjM1J2Y2s5M2JtVnljeTVzWlc1bmRHZ3BPMXh1SUNBZ0lDQWdkbUZ5SUdrN1hHNWNiaUFnSUNBZ0lIWmhjaUJrWldWd1pYTjBRMjl0Ylc5dUlEMGdMVEU3WEc0Z0lDQWdJQ0JtYjNJZ0tHa2dQU0F3T3lCcElEd2diV2x1VTNSaFkydE1aVzQ3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1kyaHBiR1JQZDI1bGNuTmJhVjBnUFQwOUlHRnVZMlZ6ZEc5eVQzZHVaWEp6VzJsZEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWkdWbGNHVnpkRU52YlcxdmJpQTlJR2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2RtRnlJRlZPUzA1UFYwNGdQU0FuS0hWdWEyNXZkMjRwSnp0Y2JpQWdJQ0FnSUhaaGNpQmphR2xzWkU5M2JtVnlUbUZ0WlhNZ1BTQmphR2xzWkU5M2JtVnljeTV6YkdsalpTaGtaV1Z3WlhOMFEyOXRiVzl1SUNzZ01Ta3ViV0Z3S0daMWJtTjBhVzl1SUNocGJuTjBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5OMExtZGxkRTVoYldVb0tTQjhmQ0JWVGt0T1QxZE9PMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0IyWVhJZ1lXNWpaWE4wYjNKUGQyNWxjazVoYldWeklEMGdZVzVqWlhOMGIzSlBkMjVsY25NdWMyeHBZMlVvWkdWbGNHVnpkRU52YlcxdmJpQXJJREVwTG0xaGNDaG1kVzVqZEdsdmJpQW9hVzV6ZENrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNXpkQzVuWlhST1lXMWxLQ2tnZkh3Z1ZVNUxUazlYVGp0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2RtRnlJRzkzYm1WeVNXNW1ieUE5SUZ0ZExtTnZibU5oZENoY2JpQWdJQ0FnSUM4dklFbG1JSFJvWlNCd1lYSmxiblFnWVc1a0lHTm9hV3hrSUdsdWMzUmhibU5sY3lCb1lYWmxJR0VnWTI5dGJXOXVJRzkzYm1WeUlHRnVZMlZ6ZEc5eUxDQnpkR0Z5ZEZ4dUlDQWdJQ0FnTHk4Z2QybDBhQ0IwYUdGMElDMHRJRzkwYUdWeWQybHpaU0IzWlNCcWRYTjBJSE4wWVhKMElIZHBkR2dnZEdobElIQmhjbVZ1ZENkeklHOTNibVZ5Y3k1Y2JpQWdJQ0FnSUdSbFpYQmxjM1JEYjIxdGIyNGdJVDA5SUMweElEOGdZMmhwYkdSUGQyNWxjbk5iWkdWbGNHVnpkRU52YlcxdmJsMHVaMlYwVG1GdFpTZ3BJSHg4SUZWT1MwNVBWMDRnT2lCYlhTd2dZVzVqWlhOMGIzSlBkMjVsY2s1aGJXVnpMQ0JoYm1ObGMzUnZjbFJoWnl4Y2JpQWdJQ0FnSUM4dklFbG1JSGRsSjNKbElIZGhjbTVwYm1jZ1lXSnZkWFFnWVc0Z2FXNTJZV3hwWkNBb2JtOXVMWEJoY21WdWRDa2dZVzVqWlhOMGNua3NJR0ZrWkNBbkxpNHVKMXh1SUNBZ0lDQWdhVzUyWVd4cFpFRnVZMlZ6ZEc5eUlEOGdXeWN1TGk0blhTQTZJRnRkTENCamFHbHNaRTkzYm1WeVRtRnRaWE1zSUdOb2FXeGtWR0ZuS1M1cWIybHVLQ2NnUGlBbktUdGNibHh1SUNBZ0lDQWdkbUZ5SUhkaGNtNUxaWGtnUFNBaElXbHVkbUZzYVdSUVlYSmxiblFnS3lBbmZDY2dLeUJqYUdsc1pGUmhaeUFySUNkOEp5QXJJR0Z1WTJWemRHOXlWR0ZuSUNzZ0ozd25JQ3NnYjNkdVpYSkpibVp2TzF4dUlDQWdJQ0FnYVdZZ0tHUnBaRmRoY201YmQyRnlia3RsZVYwcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1pHbGtWMkZ5Ymx0M1lYSnVTMlY1WFNBOUlIUnlkV1U3WEc1Y2JpQWdJQ0FnSUdsbUlDaHBiblpoYkdsa1VHRnlaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJwYm1adklEMGdKeWM3WEc0Z0lDQWdJQ0FnSUdsbUlDaGhibU5sYzNSdmNsUmhaeUE5UFQwZ0ozUmhZbXhsSnlBbUppQmphR2xzWkZSaFp5QTlQVDBnSjNSeUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdVptOGdLejBnSnlCQlpHUWdZU0E4ZEdKdlpIaytJSFJ2SUhsdmRYSWdZMjlrWlNCMGJ5QnRZWFJqYUNCMGFHVWdSRTlOSUhSeVpXVWdaMlZ1WlhKaGRHVmtJR0o1SUNjZ0t5QW5kR2hsSUdKeWIzZHpaWEl1Snp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWd1TGk0cE9pQThKWE0rSUdOaGJtNXZkQ0JoY0hCbFlYSWdZWE1nWVNCamFHbHNaQ0J2WmlBOEpYTStMaUFuSUNzZ0oxTmxaU0FsY3k0bGN5Y3NJR05vYVd4a1ZHRm5MQ0JoYm1ObGMzUnZjbFJoWnl3Z2IzZHVaWEpKYm1adkxDQnBibVp2S1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5kbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5LQzR1TGlrNklEd2xjejRnWTJGdWJtOTBJR0Z3Y0dWaGNpQmhjeUJoSUdSbGMyTmxibVJoYm5RZ2IyWWdKeUFySUNjOEpYTStMaUJUWldVZ0pYTXVKeXdnWTJocGJHUlVZV2NzSUdGdVkyVnpkRzl5VkdGbkxDQnZkMjVsY2tsdVptOHBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZUdGNibHh1SUNCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jdVlXNWpaWE4wYjNKSmJtWnZRMjl1ZEdWNGRFdGxlU0E5SUNkZlgzWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVoxOWhibU5sYzNSdmNrbHVabThrSnlBcklFMWhkR2d1Y21GdVpHOXRLQ2t1ZEc5VGRISnBibWNvTXpZcExuTnNhV05sS0RJcE8xeHVYRzRnSUhaaGJHbGtZWFJsUkU5TlRtVnpkR2x1Wnk1MWNHUmhkR1ZrUVc1alpYTjBiM0pKYm1adklEMGdkWEJrWVhSbFpFRnVZMlZ6ZEc5eVNXNW1ienRjYmx4dUlDQXZMeUJHYjNJZ2RHVnpkR2x1WjF4dUlDQjJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VhWE5VWVdkV1lXeHBaRWx1UTI5dWRHVjRkQ0E5SUdaMWJtTjBhVzl1SUNoMFlXY3NJR0Z1WTJWemRHOXlTVzVtYnlrZ2UxeHVJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5QTlJR0Z1WTJWemRHOXlTVzVtYnlCOGZDQmxiWEIwZVVGdVkyVnpkRzl5U1c1bWJ6dGNiaUFnSUNCMllYSWdjR0Z5Wlc1MFNXNW1ieUE5SUdGdVkyVnpkRzl5U1c1bWJ5NXdZWEpsYm5SVVlXYzdYRzRnSUNBZ2RtRnlJSEJoY21WdWRGUmhaeUE5SUhCaGNtVnVkRWx1Wm04Z0ppWWdjR0Z5Wlc1MFNXNW1ieTUwWVdjN1hHNGdJQ0FnY21WMGRYSnVJR2x6VkdGblZtRnNhV1JYYVhSb1VHRnlaVzUwS0hSaFp5d2djR0Z5Wlc1MFZHRm5LU0FtSmlBaFptbHVaRWx1ZG1Gc2FXUkJibU5sYzNSdmNrWnZjbFJoWnloMFlXY3NJR0Z1WTJWemRHOXlTVzVtYnlrN1hHNGdJSDA3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5PeUpkZlE9PSIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9SZWFjdCcpO1xuIiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NhbWVsaXplU3R5bGVOYW1lJyk7XG52YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IHJlcXVpcmUoJy4vZGFuZ2Vyb3VzU3R5bGVWYWx1ZScpO1xudmFyIGh5cGhlbmF0ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGliL2h5cGhlbmF0ZVN0eWxlTmFtZScpO1xudmFyIG1lbW9pemVTdHJpbmdPbmx5ID0gcmVxdWlyZSgnZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHknKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgcHJvY2Vzc1N0eWxlTmFtZSA9IG1lbW9pemVTdHJpbmdPbmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHlsZU5hbWUpO1xufSk7XG5cbnZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IGZhbHNlO1xudmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NGbG9hdCc7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHZhciB0ZW1wU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcbiAgdHJ5IHtcbiAgICAvLyBJRTggdGhyb3dzIFwiSW52YWxpZCBhcmd1bWVudC5cIiBpZiByZXNldHRpbmcgc2hvcnRoYW5kIHN0eWxlIHByb3BlcnRpZXMuXG4gICAgdGVtcFN0eWxlLmZvbnQgPSAnJztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnID0gdHJ1ZTtcbiAgfVxuICAvLyBJRTggb25seSBzdXBwb3J0cyBhY2Nlc3NpbmcgY3NzRmxvYXQgKHN0YW5kYXJkKSBhcyBzdHlsZUZsb2F0XG4gIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdzdHlsZUZsb2F0JztcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNvcnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG4gIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS87XG5cbiAgLy8gc3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9uXG4gIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztcblxuICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9O1xuICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fTtcblxuICB2YXIgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSkpIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIHZhciB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpKSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnU3R5bGUgcHJvcGVydHkgdmFsdWVzIHNob3VsZG5cXCd0IGNvbnRhaW4gYSBzZW1pY29sb24uICcgKyAnVHJ5IFwiJXM6ICVzXCIgaW5zdGVhZC4nLCBuYW1lLCB2YWx1ZS5yZXBsYWNlKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiwgJycpKSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKi9cbiAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIENTUyBwcm9wZXJ0aWVzLlxuICovXG52YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0ge1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIGZvciB1c2UgYXMgaW5saW5lIHN0eWxlczpcbiAgICpcbiAgICogICA+IGNyZWF0ZU1hcmt1cEZvclN0eWxlcyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pXG4gICAqICAgXCJ3aWR0aDoyMDBweDtoZWlnaHQ6MDtcIlxuICAgKlxuICAgKiBVbmRlZmluZWQgdmFsdWVzIGFyZSBpZ25vcmVkIHNvIHRoYXQgZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcgaXMgZWFzaWVyLlxuICAgKiBUaGUgcmVzdWx0IHNob3VsZCBiZSBIVE1MLWVzY2FwZWQgYmVmb3JlIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICogQHJldHVybiB7P3N0cmluZ31cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0eWxlcykge1xuICAgIHZhciBzZXJpYWxpemVkID0gJyc7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBzdHlsZVZhbHVlID0gc3R5bGVzW3N0eWxlTmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICBzZXJpYWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JztcbiAgICAgICAgc2VyaWFsaXplZCArPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSkgKyAnOyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZXJpYWxpemVkIHx8IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciBtdWx0aXBsZSBzdHlsZXMgb24gYSBub2RlLiAgSWYgYSB2YWx1ZSBpcyBzcGVjaWZpZWQgYXNcbiAgICogJycgKGVtcHR5IHN0cmluZyksIHRoZSBjb3JyZXNwb25kaW5nIHN0eWxlIHByb3BlcnR5IHdpbGwgYmUgdW5zZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzXG4gICAqL1xuICBzZXRWYWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcykge1xuICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0pO1xuICAgICAgfVxuICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0pO1xuICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0Jykge1xuICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNjZXNzb3I7XG4gICAgICB9XG4gICAgICBpZiAoc3R5bGVWYWx1ZSkge1xuICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBleHBhbnNpb24gPSBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyAmJiBDU1NQcm9wZXJ0eS5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTtcbiAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuICAgICAgICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3b24ndCBsaWtlIHVuc2V0dGluZywgc28gdW5zZXQgZWFjaFxuICAgICAgICAgIC8vIGNvbXBvbmVudCB0byBwbGFjYXRlIGl0XG4gICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcbiAgICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoQ1NTUHJvcGVydHlPcGVyYXRpb25zLCAnQ1NTUHJvcGVydHlPcGVyYXRpb25zJywge1xuICBzZXRWYWx1ZUZvclN0eWxlczogJ3NldFZhbHVlRm9yU3R5bGVzJ1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlExTlRVSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUVOVFUxQnliM0JsY25SNVQzQmxjbUYwYVc5dWMxeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJEVTFOUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHZRMU5UVUhKdmNHVnlkSGtuS1R0Y2JuWmhjaUJGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwwVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSUVpYSm1JRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkJsY21ZbktUdGNibHh1ZG1GeUlHTmhiV1ZzYVhwbFUzUjViR1ZPWVcxbElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZZMkZ0Wld4cGVtVlRkSGxzWlU1aGJXVW5LVHRjYm5aaGNpQmtZVzVuWlhKdmRYTlRkSGxzWlZaaGJIVmxJRDBnY21WeGRXbHlaU2duTGk5a1lXNW5aWEp2ZFhOVGRIbHNaVlpoYkhWbEp5azdYRzUyWVhJZ2FIbHdhR1Z1WVhSbFUzUjViR1ZPWVcxbElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhSGx3YUdWdVlYUmxVM1I1YkdWT1lXMWxKeWs3WEc1MllYSWdiV1Z0YjJsNlpWTjBjbWx1WjA5dWJIa2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTl0WlcxdmFYcGxVM1J5YVc1blQyNXNlU2NwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUJ3Y205alpYTnpVM1I1YkdWT1lXMWxJRDBnYldWdGIybDZaVk4wY21sdVowOXViSGtvWm5WdVkzUnBiMjRnS0hOMGVXeGxUbUZ0WlNrZ2UxeHVJQ0J5WlhSMWNtNGdhSGx3YUdWdVlYUmxVM1I1YkdWT1lXMWxLSE4wZVd4bFRtRnRaU2s3WEc1OUtUdGNibHh1ZG1GeUlHaGhjMU5vYjNKMGFHRnVaRkJ5YjNCbGNuUjVRblZuSUQwZ1ptRnNjMlU3WEc1MllYSWdjM1I1YkdWR2JHOWhkRUZqWTJWemMyOXlJRDBnSjJOemMwWnNiMkYwSnp0Y2JtbG1JQ2hGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZEM1allXNVZjMlZFVDAwcElIdGNiaUFnZG1GeUlIUmxiWEJUZEhsc1pTQTlJR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb0oyUnBkaWNwTG5OMGVXeGxPMXh1SUNCMGNua2dlMXh1SUNBZ0lDOHZJRWxGT0NCMGFISnZkM01nWENKSmJuWmhiR2xrSUdGeVozVnRaVzUwTGx3aUlHbG1JSEpsYzJWMGRHbHVaeUJ6YUc5eWRHaGhibVFnYzNSNWJHVWdjSEp2Y0dWeWRHbGxjeTVjYmlBZ0lDQjBaVzF3VTNSNWJHVXVabTl1ZENBOUlDY25PMXh1SUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ2FHRnpVMmh2Y25Sb1lXNWtVSEp2Y0dWeWRIbENkV2NnUFNCMGNuVmxPMXh1SUNCOVhHNGdJQzh2SUVsRk9DQnZibXg1SUhOMWNIQnZjblJ6SUdGalkyVnpjMmx1WnlCamMzTkdiRzloZENBb2MzUmhibVJoY21RcElHRnpJSE4wZVd4bFJteHZZWFJjYmlBZ2FXWWdLR1J2WTNWdFpXNTBMbVJ2WTNWdFpXNTBSV3hsYldWdWRDNXpkSGxzWlM1amMzTkdiRzloZENBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdjM1I1YkdWR2JHOWhkRUZqWTJWemMyOXlJRDBnSjNOMGVXeGxSbXh2WVhRbk8xeHVJQ0I5WEc1OVhHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUM4dklDZHRjMVJ5WVc1elptOXliU2NnYVhNZ1kyOXljbVZqZEN3Z1luVjBJSFJvWlNCdmRHaGxjaUJ3Y21WbWFYaGxjeUJ6YUc5MWJHUWdZbVVnWTJGd2FYUmhiR2w2WldSY2JpQWdkbUZ5SUdKaFpGWmxibVJ2Y21Wa1UzUjViR1ZPWVcxbFVHRjBkR1Z5YmlBOUlDOWVLRDg2ZDJWaWEybDBmRzF2ZW54dktWdEJMVnBkTHp0Y2JseHVJQ0F2THlCemRIbHNaU0IyWVd4MVpYTWdjMmh2ZFd4a2JpZDBJR052Ym5SaGFXNGdZU0J6WlcxcFkyOXNiMjVjYmlBZ2RtRnlJR0poWkZOMGVXeGxWbUZzZFdWWGFYUm9VMlZ0YVdOdmJHOXVVR0YwZEdWeWJpQTlJQzg3WEZ4ektpUXZPMXh1WEc0Z0lIWmhjaUIzWVhKdVpXUlRkSGxzWlU1aGJXVnpJRDBnZTMwN1hHNGdJSFpoY2lCM1lYSnVaV1JUZEhsc1pWWmhiSFZsY3lBOUlIdDlPMXh1WEc0Z0lIWmhjaUIzWVhKdVNIbHdhR1Z1WVhSbFpGTjBlV3hsVG1GdFpTQTlJR1oxYm1OMGFXOXVJQ2h1WVcxbEtTQjdYRzRnSUNBZ2FXWWdLSGRoY201bFpGTjBlV3hsVG1GdFpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnSmlZZ2QyRnlibVZrVTNSNWJHVk9ZVzFsYzF0dVlXMWxYU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIZGhjbTVsWkZOMGVXeGxUbUZ0WlhOYmJtRnRaVjBnUFNCMGNuVmxPMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5WVzV6ZFhCd2IzSjBaV1FnYzNSNWJHVWdjSEp2Y0dWeWRIa2dKWE11SUVScFpDQjViM1VnYldWaGJpQWxjejhuTENCdVlXMWxMQ0JqWVcxbGJHbDZaVk4wZVd4bFRtRnRaU2h1WVcxbEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMDdYRzVjYmlBZ2RtRnlJSGRoY201Q1lXUldaVzVrYjNKbFpGTjBlV3hsVG1GdFpTQTlJR1oxYm1OMGFXOXVJQ2h1WVcxbEtTQjdYRzRnSUNBZ2FXWWdLSGRoY201bFpGTjBlV3hsVG1GdFpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnSmlZZ2QyRnlibVZrVTNSNWJHVk9ZVzFsYzF0dVlXMWxYU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIZGhjbTVsWkZOMGVXeGxUbUZ0WlhOYmJtRnRaVjBnUFNCMGNuVmxPMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5WVzV6ZFhCd2IzSjBaV1FnZG1WdVpHOXlMWEJ5WldacGVHVmtJSE4wZVd4bElIQnliM0JsY25SNUlDVnpMaUJFYVdRZ2VXOTFJRzFsWVc0Z0pYTS9KeXdnYm1GdFpTd2dibUZ0WlM1amFHRnlRWFFvTUNrdWRHOVZjSEJsY2tOaGMyVW9LU0FySUc1aGJXVXVjMnhwWTJVb01Ta3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlPMXh1WEc0Z0lIWmhjaUIzWVhKdVUzUjViR1ZXWVd4MVpWZHBkR2hUWlcxcFkyOXNiMjRnUFNCbWRXNWpkR2x2YmlBb2JtRnRaU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQnBaaUFvZDJGeWJtVmtVM1I1YkdWV1lXeDFaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29kbUZzZFdVcElDWW1JSGRoY201bFpGTjBlV3hsVm1Gc2RXVnpXM1poYkhWbFhTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhkaGNtNWxaRk4wZVd4bFZtRnNkV1Z6VzNaaGJIVmxYU0E5SUhSeWRXVTdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFRkSGxzWlNCd2NtOXdaWEowZVNCMllXeDFaWE1nYzJodmRXeGtibHhjSjNRZ1kyOXVkR0ZwYmlCaElITmxiV2xqYjJ4dmJpNGdKeUFySUNkVWNua2dYQ0lsY3pvZ0pYTmNJaUJwYm5OMFpXRmtMaWNzSUc1aGJXVXNJSFpoYkhWbExuSmxjR3hoWTJVb1ltRmtVM1I1YkdWV1lXeDFaVmRwZEdoVFpXMXBZMjlzYjI1UVlYUjBaWEp1TENBbkp5a3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2V5cDlJSFpoYkhWbFhHNGdJQ0FxTDF4dUlDQjJZWElnZDJGeWJsWmhiR2xrVTNSNWJHVWdQU0JtZFc1amRHbHZiaUFvYm1GdFpTd2dkbUZzZFdVcElIdGNiaUFnSUNCcFppQW9ibUZ0WlM1cGJtUmxlRTltS0NjdEp5a2dQaUF0TVNrZ2UxeHVJQ0FnSUNBZ2QyRnlia2g1Y0dobGJtRjBaV1JUZEhsc1pVNWhiV1VvYm1GdFpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGlZV1JXWlc1a2IzSmxaRk4wZVd4bFRtRnRaVkJoZEhSbGNtNHVkR1Z6ZENodVlXMWxLU2tnZTF4dUlDQWdJQ0FnZDJGeWJrSmhaRlpsYm1SdmNtVmtVM1I1YkdWT1lXMWxLRzVoYldVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1ltRmtVM1I1YkdWV1lXeDFaVmRwZEdoVFpXMXBZMjlzYjI1UVlYUjBaWEp1TG5SbGMzUW9kbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQjNZWEp1VTNSNWJHVldZV3gxWlZkcGRHaFRaVzFwWTI5c2IyNG9ibUZ0WlN3Z2RtRnNkV1VwTzF4dUlDQWdJSDFjYmlBZ2ZUdGNibjFjYmx4dUx5b3FYRzRnS2lCUGNHVnlZWFJwYjI1eklHWnZjaUJrWldGc2FXNW5JSGRwZEdnZ1ExTlRJSEJ5YjNCbGNuUnBaWE11WEc0Z0tpOWNiblpoY2lCRFUxTlFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTWdQU0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRk5sY21saGJHbDZaWE1nWVNCdFlYQndhVzVuSUc5bUlITjBlV3hsSUhCeWIzQmxjblJwWlhNZ1ptOXlJSFZ6WlNCaGN5QnBibXhwYm1VZ2MzUjViR1Z6T2x4dUlDQWdLbHh1SUNBZ0tpQWdJRDRnWTNKbFlYUmxUV0Z5YTNWd1JtOXlVM1I1YkdWektIdDNhV1IwYURvZ0p6SXdNSEI0Snl3Z2FHVnBaMmgwT2lBd2ZTbGNiaUFnSUNvZ0lDQmNJbmRwWkhSb09qSXdNSEI0TzJobGFXZG9kRG93TzF3aVhHNGdJQ0FxWEc0Z0lDQXFJRlZ1WkdWbWFXNWxaQ0IyWVd4MVpYTWdZWEpsSUdsbmJtOXlaV1FnYzI4Z2RHaGhkQ0JrWldOc1lYSmhkR2wyWlNCd2NtOW5jbUZ0YldsdVp5QnBjeUJsWVhOcFpYSXVYRzRnSUNBcUlGUm9aU0J5WlhOMWJIUWdjMmh2ZFd4a0lHSmxJRWhVVFV3dFpYTmpZWEJsWkNCaVpXWnZjbVVnYVc1elpYSjBhVzl1SUdsdWRHOGdkR2hsSUVSUFRTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSE4wZVd4bGMxeHVJQ0FnS2lCQWNtVjBkWEp1SUhzL2MzUnlhVzVuZlZ4dUlDQWdLaTljYmlBZ1kzSmxZWFJsVFdGeWEzVndSbTl5VTNSNWJHVnpPaUJtZFc1amRHbHZiaUFvYzNSNWJHVnpLU0I3WEc0Z0lDQWdkbUZ5SUhObGNtbGhiR2w2WldRZ1BTQW5KenRjYmlBZ0lDQm1iM0lnS0haaGNpQnpkSGxzWlU1aGJXVWdhVzRnYzNSNWJHVnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lYTjBlV3hsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h6ZEhsc1pVNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RtRnlJSE4wZVd4bFZtRnNkV1VnUFNCemRIbHNaWE5iYzNSNWJHVk9ZVzFsWFR0Y2JpQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUhkaGNtNVdZV3hwWkZOMGVXeGxLSE4wZVd4bFRtRnRaU3dnYzNSNWJHVldZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9jM1I1YkdWV1lXeDFaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhObGNtbGhiR2w2WldRZ0t6MGdjSEp2WTJWemMxTjBlV3hsVG1GdFpTaHpkSGxzWlU1aGJXVXBJQ3NnSnpvbk8xeHVJQ0FnSUNBZ0lDQnpaWEpwWVd4cGVtVmtJQ3M5SUdSaGJtZGxjbTkxYzFOMGVXeGxWbUZzZFdVb2MzUjViR1ZPWVcxbExDQnpkSGxzWlZaaGJIVmxLU0FySUNjN0p6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSE5sY21saGJHbDZaV1FnZkh3Z2JuVnNiRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyVjBjeUIwYUdVZ2RtRnNkV1VnWm05eUlHMTFiSFJwY0d4bElITjBlV3hsY3lCdmJpQmhJRzV2WkdVdUlDQkpaaUJoSUhaaGJIVmxJR2x6SUhOd1pXTnBabWxsWkNCaGMxeHVJQ0FnS2lBbkp5QW9aVzF3ZEhrZ2MzUnlhVzVuS1N3Z2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ2MzUjViR1VnY0hKdmNHVnlkSGtnZDJsc2JDQmlaU0IxYm5ObGRDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCdWIyUmxYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCemRIbHNaWE5jYmlBZ0lDb3ZYRzRnSUhObGRGWmhiSFZsUm05eVUzUjViR1Z6T2lCbWRXNWpkR2x2YmlBb2JtOWtaU3dnYzNSNWJHVnpLU0I3WEc0Z0lDQWdkbUZ5SUhOMGVXeGxJRDBnYm05a1pTNXpkSGxzWlR0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ6ZEhsc1pVNWhiV1VnYVc0Z2MzUjViR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9JWE4wZVd4bGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNoemRIbHNaVTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdkMkZ5YmxaaGJHbGtVM1I1YkdVb2MzUjViR1ZPWVcxbExDQnpkSGxzWlhOYmMzUjViR1ZPWVcxbFhTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjJZWElnYzNSNWJHVldZV3gxWlNBOUlHUmhibWRsY205MWMxTjBlV3hsVm1Gc2RXVW9jM1I1YkdWT1lXMWxMQ0J6ZEhsc1pYTmJjM1I1YkdWT1lXMWxYU2s3WEc0Z0lDQWdJQ0JwWmlBb2MzUjViR1ZPWVcxbElEMDlQU0FuWm14dllYUW5LU0I3WEc0Z0lDQWdJQ0FnSUhOMGVXeGxUbUZ0WlNBOUlITjBlV3hsUm14dllYUkJZMk5sYzNOdmNqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2h6ZEhsc1pWWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lITjBlV3hsVzNOMGVXeGxUbUZ0WlYwZ1BTQnpkSGxzWlZaaGJIVmxPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdWNGNHRnVjMmx2YmlBOUlHaGhjMU5vYjNKMGFHRnVaRkJ5YjNCbGNuUjVRblZuSUNZbUlFTlRVMUJ5YjNCbGNuUjVMbk5vYjNKMGFHRnVaRkJ5YjNCbGNuUjVSWGh3WVc1emFXOXVjMXR6ZEhsc1pVNWhiV1ZkTzF4dUlDQWdJQ0FnSUNCcFppQW9aWGh3WVc1emFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdVMmh2Y25Sb1lXNWtJSEJ5YjNCbGNuUjVJSFJvWVhRZ1NVVTRJSGR2YmlkMElHeHBhMlVnZFc1elpYUjBhVzVuTENCemJ5QjFibk5sZENCbFlXTm9YRzRnSUNBZ0lDQWdJQ0FnTHk4Z1kyOXRjRzl1Wlc1MElIUnZJSEJzWVdOaGRHVWdhWFJjYmlBZ0lDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcGJtUnBkbWxrZFdGc1UzUjViR1ZPWVcxbElHbHVJR1Y0Y0dGdWMybHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdWYmFXNWthWFpwWkhWaGJGTjBlV3hsVG1GdFpWMGdQU0FuSnp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYzNSNWJHVmJjM1I1YkdWT1lXMWxYU0E5SUNjbk8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JuMDdYRzVjYmxKbFlXTjBVR1Z5Wmk1dFpXRnpkWEpsVFdWMGFHOWtjeWhEVTFOUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5Nc0lDZERVMU5RY205d1pYSjBlVTl3WlhKaGRHbHZibk1uTENCN1hHNGdJSE5sZEZaaGJIVmxSbTl5VTNSNWJHVnpPaUFuYzJWMFZtRnNkV1ZHYjNKVGRIbHNaWE1uWEc1OUtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JEVTFOUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENhbGxiYWNrUXVldWVcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgcHNldWRvLWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2YgY29tcG9uZW50cyB3YWl0aW5nIHRvXG4gKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50cyBgUG9vbGVkQ2xhc3NgLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEluc3RlYWQsIHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuXG4gKlxuICogQGNsYXNzIFJlYWN0TW91bnRSZWFkeVxuICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3NcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBDYWxsYmFja1F1ZXVlKCkge1xuICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG59XG5cbmFzc2lnbihDYWxsYmFja1F1ZXVlLnByb3RvdHlwZSwge1xuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0IENvbnRleHQgdG8gY2FsbCBgY2FsbGJhY2tgIHdpdGguXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZTogZnVuY3Rpb24gKGNhbGxiYWNrLCBjb250ZXh0KSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IFtdO1xuICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107XG4gICAgdGhpcy5fY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIHRoaXMuX2NvbnRleHRzLnB1c2goY29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNhbGxiYWNrcyBhbmQgY2xlYXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyXG4gICAqIHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBvciB1cGRhdGVkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5vdGlmeUFsbDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3M7XG4gICAgdmFyIGNvbnRleHRzID0gdGhpcy5fY29udGV4dHM7XG4gICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgIShjYWxsYmFja3MubGVuZ3RoID09PSBjb250ZXh0cy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBjb250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSk7XG4gICAgICB9XG4gICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICAgIGNvbnRleHRzLmxlbmd0aCA9IDA7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG5cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FsbGJhY2tRdWV1ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZRMkZzYkdKaFkydFJkV1YxWlM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnUTJGc2JHSmhZMnRSZFdWMVpWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkJ2YjJ4bFpFTnNZWE56SUQwZ2NtVnhkV2x5WlNnbkxpOVFiMjlzWldSRGJHRnpjeWNwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dRU0J6Y0dWamFXRnNhWHBsWkNCd2MyVjFaRzh0WlhabGJuUWdiVzlrZFd4bElIUnZJR2hsYkhBZ2EyVmxjQ0IwY21GamF5QnZaaUJqYjIxd2IyNWxiblJ6SUhkaGFYUnBibWNnZEc5Y2JpQXFJR0psSUc1dmRHbG1hV1ZrSUhkb1pXNGdkR2hsYVhJZ1JFOU5JSEpsY0hKbGMyVnVkR0YwYVc5dWN5QmhjbVVnWVhaaGFXeGhZbXhsSUdadmNpQjFjMlV1WEc0Z0tseHVJQ29nVkdocGN5QnBiWEJzWlcxbGJuUnpJR0JRYjI5c1pXUkRiR0Z6YzJBc0lITnZJSGx2ZFNCemFHOTFiR1FnYm1WMlpYSWdibVZsWkNCMGJ5QnBibk4wWVc1MGFXRjBaU0IwYUdsekxseHVJQ29nU1c1emRHVmhaQ3dnZFhObElHQkRZV3hzWW1GamExRjFaWFZsTG1kbGRGQnZiMnhsWkNncFlDNWNiaUFxWEc0Z0tpQkFZMnhoYzNNZ1VtVmhZM1JOYjNWdWRGSmxZV1I1WEc0Z0tpQkFhVzF3YkdWdFpXNTBjeUJRYjI5c1pXUkRiR0Z6YzF4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JtWjFibU4wYVc5dUlFTmhiR3hpWVdOclVYVmxkV1VvS1NCN1hHNGdJSFJvYVhNdVgyTmhiR3hpWVdOcmN5QTlJRzUxYkd3N1hHNGdJSFJvYVhNdVgyTnZiblJsZUhSeklEMGdiblZzYkR0Y2JuMWNibHh1WVhOemFXZHVLRU5oYkd4aVlXTnJVWFZsZFdVdWNISnZkRzkwZVhCbExDQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnVjWFZsZFdWeklHRWdZMkZzYkdKaFkyc2dkRzhnWW1VZ2FXNTJiMnRsWkNCM2FHVnVJR0J1YjNScFpubEJiR3hnSUdseklHbHVkbTlyWldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJRWx1ZG05clpXUWdkMmhsYmlCZ2JtOTBhV1o1UVd4c1lDQnBjeUJwYm5admEyVmtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHTnZiblJsZUhRZ1EyOXVkR1Y0ZENCMGJ5QmpZV3hzSUdCallXeHNZbUZqYTJBZ2QybDBhQzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxPaUJtZFc1amRHbHZiaUFvWTJGc2JHSmhZMnNzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IwYUdsekxsOWpZV3hzWW1GamEzTWdQU0IwYUdsekxsOWpZV3hzWW1GamEzTWdmSHdnVzEwN1hHNGdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRITWdQU0IwYUdsekxsOWpiMjUwWlhoMGN5QjhmQ0JiWFR0Y2JpQWdJQ0IwYUdsekxsOWpZV3hzWW1GamEzTXVjSFZ6YUNoallXeHNZbUZqYXlrN1hHNGdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRITXVjSFZ6YUNoamIyNTBaWGgwS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzUyYjJ0bGN5QmhiR3dnWlc1eGRXVjFaV1FnWTJGc2JHSmhZMnR6SUdGdVpDQmpiR1ZoY25NZ2RHaGxJSEYxWlhWbExpQlVhR2x6SUdseklHbHVkbTlyWldRZ1lXWjBaWEpjYmlBZ0lDb2dkR2hsSUVSUFRTQnlaWEJ5WlhObGJuUmhkR2x2YmlCdlppQmhJR052YlhCdmJtVnVkQ0JvWVhNZ1ltVmxiaUJqY21WaGRHVmtJRzl5SUhWd1pHRjBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdibTkwYVdaNVFXeHNPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZG1GeUlHTmhiR3hpWVdOcmN5QTlJSFJvYVhNdVgyTmhiR3hpWVdOcmN6dGNiaUFnSUNCMllYSWdZMjl1ZEdWNGRITWdQU0IwYUdsekxsOWpiMjUwWlhoMGN6dGNiaUFnSUNCcFppQW9ZMkZzYkdKaFkydHpLU0I3WEc0Z0lDQWdJQ0FoS0dOaGJHeGlZV05yY3k1c1pXNW5kR2dnUFQwOUlHTnZiblJsZUhSekxteGxibWQwYUNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVFdsemJXRjBZMmhsWkNCc2FYTjBJRzltSUdOdmJuUmxlSFJ6SUdsdUlHTmhiR3hpWVdOcklIRjFaWFZsSnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdkR2hwY3k1ZlkyRnNiR0poWTJ0eklEMGdiblZzYkR0Y2JpQWdJQ0FnSUhSb2FYTXVYMk52Ym5SbGVIUnpJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dZMkZzYkdKaFkydHpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHTmhiR3hpWVdOcmMxdHBYUzVqWVd4c0tHTnZiblJsZUhSelcybGRLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR05oYkd4aVlXTnJjeTVzWlc1bmRHZ2dQU0F3TzF4dUlDQWdJQ0FnWTI5dWRHVjRkSE11YkdWdVozUm9JRDBnTUR0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjMlYwY3lCMGFHVWdhVzUwWlhKdVlXd2djWFZsZFdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnY21WelpYUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxsOWpZV3hzWW1GamEzTWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYMk52Ym5SbGVIUnpJRDBnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nWUZCdmIyeGxaRU5zWVhOellDQnNiMjlyY3lCbWIzSWdkR2hwY3k1Y2JpQWdJQ292WEc0Z0lHUmxjM1J5ZFdOMGIzSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxuSmxjMlYwS0NrN1hHNGdJSDFjYmx4dWZTazdYRzVjYmxCdmIyeGxaRU5zWVhOekxtRmtaRkJ2YjJ4cGJtZFVieWhEWVd4c1ltRmphMUYxWlhWbEtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JEWVd4c1ltRmphMUYxWlhWbE95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENoYW5nZUV2ZW50UGx1Z2luXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50VGFyZ2V0Jyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1cHBvcnRlZCcpO1xudmFyIGlzVGV4dElucHV0RWxlbWVudCA9IHJlcXVpcmUoJy4vaXNUZXh0SW5wdXRFbGVtZW50Jyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBjaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNoYW5nZTogbnVsbCB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ2hhbmdlQ2FwdHVyZTogbnVsbCB9KVxuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wTGV2ZWxUeXBlcy50b3BCbHVyLCB0b3BMZXZlbFR5cGVzLnRvcENoYW5nZSwgdG9wTGV2ZWxUeXBlcy50b3BDbGljaywgdG9wTGV2ZWxUeXBlcy50b3BGb2N1cywgdG9wTGV2ZWxUeXBlcy50b3BJbnB1dCwgdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duLCB0b3BMZXZlbFR5cGVzLnRvcEtleVVwLCB0b3BMZXZlbFR5cGVzLnRvcFNlbGVjdGlvbkNoYW5nZV1cbiAgfVxufTtcblxuLyoqXG4gKiBGb3IgSUUgc2hpbXNcbiAqL1xudmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJRCA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVudFZhbHVlID0gbnVsbDtcbnZhciBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gbnVsbDtcblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNlQ2hhbmdlRXZlbnQoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8fCBub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJztcbn1cblxudmFyIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuICBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOCk7XG59XG5cbmZ1bmN0aW9uIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuY2hhbmdlLCBhY3RpdmVFbGVtZW50SUQsIG5hdGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkpO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuXG4gIC8vIElmIGNoYW5nZSBhbmQgcHJvcGVydHljaGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBhbGwgdGhlXG4gIC8vIG90aGVyIGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci4gU2luY2UgaXRcbiAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlzdGVuIGZvciB0aGUgZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG4gIC8vIHByb2Nlc3MgdGhlIGFic3RyYWN0IGV2ZW50IG1hbnVhbGx5LlxuICAvL1xuICAvLyBCYXRjaGluZyBpcyBuZWNlc3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxlcnMgcnVuXG4gIC8vIGJlZm9yZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVkIHRvIGFuY2VzdG9yXG4gIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGlyZWN0bHkgb24gdGhlIGlucHV0KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkXG4gIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2VcbiAgLy8gdGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFsdWUgcmV2ZXJ0ZWQgYmVmb3JlIGFsbCB0aGUgZXZlbnRcbiAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LlxuICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7XG59XG5cbmZ1bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVudCkge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50KTtcbiAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJRCkge1xuICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xuICBhY3RpdmVFbGVtZW50SUQgPSB0YXJnZXRJRDtcbiAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcbn1cblxuZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQpO1xuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudElEID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SURGb3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wQ2hhbmdlKSB7XG4gICAgcmV0dXJuIHRvcExldmVsVGFyZ2V0SUQ7XG4gIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BGb2N1cykge1xuICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2VcbiAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50IHNvbWVob3cuXG4gICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKTtcbiAgICBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpO1xuICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BCbHVyKSB7XG4gICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKTtcbiAgfVxufVxuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBgaW5wdXRgIGV2ZW50XG4gKi9cbnZhciBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBmYWxzZTtcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gSUU5IGNsYWltcyB0byBzdXBwb3J0IHRoZSBpbnB1dCBldmVudCBidXQgZmFpbHMgdG8gdHJpZ2dlciBpdCB3aGVuXG4gIC8vIGRlbGV0aW5nIHRleHQsIHNvIHdlIGlnbm9yZSBpdHMgaW5wdXQgZXZlbnRzXG4gIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2lucHV0JykgJiYgKCEoJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDkpO1xufVxuXG4vKipcbiAqIChGb3Igb2xkIElFLikgUmVwbGFjZW1lbnQgZ2V0dGVyL3NldHRlciBmb3IgdGhlIGB2YWx1ZWAgcHJvcGVydHkgdGhhdCBnZXRzXG4gKiBzZXQgb24gdGhlIGFjdGl2ZSBlbGVtZW50LlxuICovXG52YXIgbmV3VmFsdWVQcm9wID0ge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gYWN0aXZlRWxlbWVudFZhbHVlUHJvcC5nZXQuY2FsbCh0aGlzKTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsKSB7XG4gICAgLy8gQ2FzdCB0byBhIHN0cmluZyBzbyB3ZSBjYW4gZG8gZXF1YWxpdHkgY2hlY2tzLlxuICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9ICcnICsgdmFsO1xuICAgIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3Auc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgfVxufTtcblxuLyoqXG4gKiAoRm9yIG9sZCBJRS4pIFN0YXJ0cyB0cmFja2luZyBwcm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVtZW50XG4gKiBhbmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2UgY2FuIGRpc3Rpbmd1aXNoIHVzZXIgZXZlbnRzIGZyb21cbiAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldElEKSB7XG4gIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4gIGFjdGl2ZUVsZW1lbnRJRCA9IHRhcmdldElEO1xuICBhY3RpdmVFbGVtZW50VmFsdWUgPSB0YXJnZXQudmFsdWU7XG4gIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICd2YWx1ZScpO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhY3RpdmVFbGVtZW50LCAndmFsdWUnLCBuZXdWYWx1ZVByb3ApO1xuICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xufVxuXG4vKipcbiAqIChGb3Igb2xkIElFLikgUmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIGZyb20gdGhlIGN1cnJlbnRseS10cmFja2VkIGVsZW1lbnQsXG4gKiBpZiBhbnkgZXhpc3RzLlxuICovXG5mdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpIHtcbiAgaWYgKCFhY3RpdmVFbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gZGVsZXRlIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSBkZWZpbml0aW9uXG4gIGRlbGV0ZSBhY3RpdmVFbGVtZW50LnZhbHVlO1xuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXG4gIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gbnVsbDtcbn1cblxuLyoqXG4gKiAoRm9yIG9sZCBJRS4pIEhhbmRsZXMgYSBwcm9wZXJ0eWNoYW5nZSBldmVudCwgc2VuZGluZyBhIGBjaGFuZ2VgIGV2ZW50IGlmXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSBlbGVtZW50IGhhcyBjaGFuZ2VkLlxuICovXG5mdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVudCkge1xuICBpZiAobmF0aXZlRXZlbnQucHJvcGVydHlOYW1lICE9PSAndmFsdWUnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciB2YWx1ZSA9IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIGlmICh2YWx1ZSA9PT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IHZhbHVlO1xuXG4gIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZlbnQpO1xufVxuXG4vKipcbiAqIElmIGEgYGNoYW5nZWAgZXZlbnQgc2hvdWxkIGJlIGZpcmVkLCByZXR1cm5zIHRoZSB0YXJnZXQncyBJRC5cbiAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0SURGb3JJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BJbnB1dCkge1xuICAgIC8vIEluIG1vZGVybiBicm93c2VycyAoaS5lLiwgbm90IElFOCBvciBJRTkpLCB0aGUgaW5wdXQgZXZlbnQgaXMgZXhhY3RseVxuICAgIC8vIHdoYXQgd2Ugd2FudCBzbyBmYWxsIHRocm91Z2ggaGVyZSBhbmQgdHJpZ2dlciBhbiBhYnN0cmFjdCBldmVudFxuICAgIHJldHVybiB0b3BMZXZlbFRhcmdldElEO1xuICB9XG59XG5cbi8vIEZvciBJRTggYW5kIElFOS5cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJRSh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wRm9jdXMpIHtcbiAgICAvLyBJbiBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVlIGNoYW5nZXMgYnkgYWRkaW5nIGFcbiAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMgd2l0aCBwcm9wZXJ0eU5hbWVcbiAgICAvLyBlcXVhbCB0byAndmFsdWUnXG4gICAgLy8gSW4gSUU5LCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBpbnB1dCBldmVudHMgYnV0IGlzIGJ1Z2d5IGFuZFxuICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0IGNvbnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlXG4gICAgLy8gYXBwZWFycyB0byBmaXJlIGluIGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRob3NlIGFuZFxuICAgIC8vIGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgIC8vIEluIGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYgdGhlIHZhbHVlXG4gICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVmaW5lIGEgc2V0dGVyIGZvciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXNcbiAgICAvLyBvdXIgYWN0aXZlRWxlbWVudFZhbHVlIHZhcmlhYmxlLCBhbGxvd2luZyB1cyB0byBpZ25vcmUgdGhvc2UgY2hhbmdlc1xuICAgIC8vXG4gICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICAgIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEJsdXIpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICB9XG59XG5cbi8vIEZvciBJRTggYW5kIElFOS5cbmZ1bmN0aW9uIGdldFRhcmdldElERm9ySW5wdXRFdmVudElFKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BTZWxlY3Rpb25DaGFuZ2UgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEtleVVwIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duKSB7XG4gICAgLy8gT24gdGhlIHNlbGVjdGlvbmNoYW5nZSBldmVudCwgdGhlIHRhcmdldCBpcyBqdXN0IGRvY3VtZW50IHdoaWNoIGlzbid0XG4gICAgLy8gaGVscGZ1bCBmb3IgdXMgc28ganVzdCBjaGVjayBhY3RpdmVFbGVtZW50IGluc3RlYWQuXG4gICAgLy9cbiAgICAvLyA5OSUgb2YgdGhlIHRpbWUsIGtleWRvd24gYW5kIGtleXVwIGFyZW4ndCBuZWNlc3NhcnkuIElFOCBmYWlscyB0byBmaXJlXG4gICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFmdGVyIHNldHRpbmcgYHZhbHVlYCBmcm9tIGFcbiAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkga2V5ZG93biwga2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1c3VhbGx5XG4gICAgLy8gZ2V0cyBpdCBhbmQgY2F0Y2hpbmcga2V5ZG93biBsZXRzIHVzIGZpcmUgYW4gZXZlbnQgZm9yIHRoZSBmaXJzdFxuICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBrZXkgcmVwZWF0IChpdCdsbCBiZSBhIGxpdHRsZSBkZWxheWVkOiByaWdodFxuICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0cm9rZSkuIE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvXG4gICAgLy8gZmlyZSBzZWxlY3Rpb25jaGFuZ2Ugbm9ybWFsbHkuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZlRWxlbWVudC52YWx1ZSAhPT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7XG4gICAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSBhY3RpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRJRDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNsaWNrYCBldmVudFxuICovXG5mdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVsZW0pIHtcbiAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuXG4gIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3NzIGFsbCBicm93c2Vycywgd2hlcmVhcyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlXG4gIC8vIHVudGlsIGBibHVyYCBpbiBJRTguXG4gIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiAoZWxlbS50eXBlID09PSAnY2hlY2tib3gnIHx8IGVsZW0udHlwZSA9PT0gJ3JhZGlvJyk7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldElERm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wQ2xpY2spIHtcbiAgICByZXR1cm4gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmlyZXMgYXQgYSB0aW1lIHdoZW4gaXQncyBwb3NzaWJsZSB0b1xuICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91dCBzZWVpbmcgYSBmbGlja2VyLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG4gKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRleHRhcmVhXG4gKiAtIHNlbGVjdFxuICovXG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG5cbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cbiAgICB2YXIgZ2V0VGFyZ2V0SURGdW5jLCBoYW5kbGVFdmVudEZ1bmM7XG4gICAgaWYgKHNob3VsZFVzZUNoYW5nZUV2ZW50KHRvcExldmVsVGFyZ2V0KSkge1xuICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuICAgICAgICBnZXRUYXJnZXRJREZ1bmMgPSBnZXRUYXJnZXRJREZvckNoYW5nZUV2ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTg7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RleHRJbnB1dEVsZW1lbnQodG9wTGV2ZWxUYXJnZXQpKSB7XG4gICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVkKSB7XG4gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9ySW5wdXRFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9ySW5wdXRFdmVudElFO1xuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50SUU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG91bGRVc2VDbGlja0V2ZW50KHRvcExldmVsVGFyZ2V0KSkge1xuICAgICAgZ2V0VGFyZ2V0SURGdW5jID0gZ2V0VGFyZ2V0SURGb3JDbGlja0V2ZW50O1xuICAgIH1cblxuICAgIGlmIChnZXRUYXJnZXRJREZ1bmMpIHtcbiAgICAgIHZhciB0YXJnZXRJRCA9IGdldFRhcmdldElERnVuYyh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKTtcbiAgICAgIGlmICh0YXJnZXRJRCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5jaGFuZ2UsIHRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgICBldmVudC50eXBlID0gJ2NoYW5nZSc7XG4gICAgICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFuZGxlRXZlbnRGdW5jKSB7XG4gICAgICBoYW5kbGVFdmVudEZ1bmModG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBET01DaGlsZHJlbk9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRGFuZ2VyID0gcmVxdWlyZSgnLi9EYW5nZXInKTtcbnZhciBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBJbnNlcnRzIGBjaGlsZE5vZGVgIGFzIGEgY2hpbGQgb2YgYHBhcmVudE5vZGVgIGF0IHRoZSBgaW5kZXhgLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50Tm9kZSBQYXJlbnQgbm9kZSBpbiB3aGljaCB0byBpbnNlcnQuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNoaWxkTm9kZSBDaGlsZCBub2RlIHRvIGluc2VydC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCBpbmRleCkge1xuICAvLyBCeSBleHBsb2l0aW5nIGFycmF5cyByZXR1cm5pbmcgYHVuZGVmaW5lZGAgZm9yIGFuIHVuZGVmaW5lZCBpbmRleCwgd2UgY2FuXG4gIC8vIHJlbHkgZXhjbHVzaXZlbHkgb24gYGluc2VydEJlZm9yZShub2RlLCBudWxsKWAgaW5zdGVhZCBvZiBhbHNvIHVzaW5nXG4gIC8vIGBhcHBlbmRDaGlsZChub2RlKWAuIEhvd2V2ZXIsIHVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbFxuICAvLyBicm93c2VycyBzbyB3ZSBtdXN0IHJlcGxhY2UgaXQgd2l0aCBgbnVsbGAuXG5cbiAgLy8gZml4IHJlbmRlciBvcmRlciBlcnJvciBpbiBzYWZhcmlcbiAgLy8gSUU4IHdpbGwgdGhyb3cgZXJyb3Igd2hlbiBpbmRleCBvdXQgb2YgbGlzdCBzaXplLlxuICB2YXIgYmVmb3JlQ2hpbGQgPSBpbmRleCA+PSBwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoID8gbnVsbCA6IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5pdGVtKGluZGV4KTtcblxuICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZE5vZGUsIGJlZm9yZUNoaWxkKTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi5cbiAqL1xudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHtcblxuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLFxuXG4gIHVwZGF0ZVRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy4gVGhlXG4gICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7YXJyYXk8c3RyaW5nPn0gbWFya3VwTGlzdCBMaXN0IG9mIG1hcmt1cCBzdHJpbmdzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb2Nlc3NVcGRhdGVzOiBmdW5jdGlvbiAodXBkYXRlcywgbWFya3VwTGlzdCkge1xuICAgIHZhciB1cGRhdGU7XG4gICAgLy8gTWFwcGluZyBmcm9tIHBhcmVudCBJRHMgdG8gaW5pdGlhbCBjaGlsZCBvcmRlcmluZ3MuXG4gICAgdmFyIGluaXRpYWxDaGlsZHJlbiA9IG51bGw7XG4gICAgLy8gTGlzdCBvZiBjaGlsZHJlbiB0aGF0IHdpbGwgYmUgbW92ZWQgb3IgcmVtb3ZlZC5cbiAgICB2YXIgdXBkYXRlZENoaWxkcmVuID0gbnVsbDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXBkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdXBkYXRlID0gdXBkYXRlc1tpXTtcbiAgICAgIGlmICh1cGRhdGUudHlwZSA9PT0gUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuTU9WRV9FWElTVElORyB8fCB1cGRhdGUudHlwZSA9PT0gUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuUkVNT1ZFX05PREUpIHtcbiAgICAgICAgdmFyIHVwZGF0ZWRJbmRleCA9IHVwZGF0ZS5mcm9tSW5kZXg7XG4gICAgICAgIHZhciB1cGRhdGVkQ2hpbGQgPSB1cGRhdGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzW3VwZGF0ZWRJbmRleF07XG4gICAgICAgIHZhciBwYXJlbnRJRCA9IHVwZGF0ZS5wYXJlbnRJRDtcblxuICAgICAgICAhdXBkYXRlZENoaWxkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NVcGRhdGVzKCk6IFVuYWJsZSB0byBmaW5kIGNoaWxkICVzIG9mIGVsZW1lbnQuIFRoaXMgJyArICdwcm9iYWJseSBtZWFucyB0aGUgRE9NIHdhcyB1bmV4cGVjdGVkbHkgbXV0YXRlZCAoZS5nLiwgYnkgdGhlICcgKyAnYnJvd3NlciksIHVzdWFsbHkgZHVlIHRvIGZvcmdldHRpbmcgYSA8dGJvZHk+IHdoZW4gdXNpbmcgdGFibGVzLCAnICsgJ25lc3RpbmcgdGFncyBsaWtlIDxmb3JtPiwgPHA+LCBvciA8YT4sIG9yIHVzaW5nIG5vbi1TVkcgZWxlbWVudHMgJyArICdpbiBhbiA8c3ZnPiBwYXJlbnQuIFRyeSBpbnNwZWN0aW5nIHRoZSBjaGlsZCBub2RlcyBvZiB0aGUgZWxlbWVudCAnICsgJ3dpdGggUmVhY3QgSUQgYCVzYC4nLCB1cGRhdGVkSW5kZXgsIHBhcmVudElEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaW5pdGlhbENoaWxkcmVuID0gaW5pdGlhbENoaWxkcmVuIHx8IHt9O1xuICAgICAgICBpbml0aWFsQ2hpbGRyZW5bcGFyZW50SURdID0gaW5pdGlhbENoaWxkcmVuW3BhcmVudElEXSB8fCBbXTtcbiAgICAgICAgaW5pdGlhbENoaWxkcmVuW3BhcmVudElEXVt1cGRhdGVkSW5kZXhdID0gdXBkYXRlZENoaWxkO1xuXG4gICAgICAgIHVwZGF0ZWRDaGlsZHJlbiA9IHVwZGF0ZWRDaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgdXBkYXRlZENoaWxkcmVuLnB1c2godXBkYXRlZENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVuZGVyZWRNYXJrdXA7XG4gICAgLy8gbWFya3VwTGlzdCBpcyBlaXRoZXIgYSBsaXN0IG9mIG1hcmt1cCBvciBqdXN0IGEgbGlzdCBvZiBlbGVtZW50c1xuICAgIGlmIChtYXJrdXBMaXN0Lmxlbmd0aCAmJiB0eXBlb2YgbWFya3VwTGlzdFswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlbmRlcmVkTWFya3VwID0gRGFuZ2VyLmRhbmdlcm91c2x5UmVuZGVyTWFya3VwKG1hcmt1cExpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlZE1hcmt1cCA9IG1hcmt1cExpc3Q7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHVwZGF0ZWQgY2hpbGRyZW4gZmlyc3Qgc28gdGhhdCBgdG9JbmRleGAgaXMgY29uc2lzdGVudC5cbiAgICBpZiAodXBkYXRlZENoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHVwZGF0ZWRDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB1cGRhdGVkQ2hpbGRyZW5bal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1cGRhdGVkQ2hpbGRyZW5bal0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuICAgICAgdXBkYXRlID0gdXBkYXRlc1trXTtcbiAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5JTlNFUlRfTUFSS1VQOlxuICAgICAgICAgIGluc2VydENoaWxkQXQodXBkYXRlLnBhcmVudE5vZGUsIHJlbmRlcmVkTWFya3VwW3VwZGF0ZS5tYXJrdXBJbmRleF0sIHVwZGF0ZS50b0luZGV4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5NT1ZFX0VYSVNUSU5HOlxuICAgICAgICAgIGluc2VydENoaWxkQXQodXBkYXRlLnBhcmVudE5vZGUsIGluaXRpYWxDaGlsZHJlblt1cGRhdGUucGFyZW50SURdW3VwZGF0ZS5mcm9tSW5kZXhdLCB1cGRhdGUudG9JbmRleCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuU0VUX01BUktVUDpcbiAgICAgICAgICBzZXRJbm5lckhUTUwodXBkYXRlLnBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5URVhUX0NPTlRFTlQ6XG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQodXBkYXRlLnBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5SRU1PVkVfTk9ERTpcbiAgICAgICAgICAvLyBBbHJlYWR5IHJlbW92ZWQgYnkgdGhlIGZvci1sb29wIGFib3ZlLlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoRE9NQ2hpbGRyZW5PcGVyYXRpb25zLCAnRE9NQ2hpbGRyZW5PcGVyYXRpb25zJywge1xuICB1cGRhdGVUZXh0Q29udGVudDogJ3VwZGF0ZVRleHRDb250ZW50J1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NQ2hpbGRyZW5PcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQkVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk5jYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1JHRnVaMlZ5SUQwZ2NtVnhkV2x5WlNnbkxpOUVZVzVuWlhJbktUdGNiblpoY2lCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTW5LVHRjYm5aaGNpQlNaV0ZqZEZCbGNtWWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVR1Z5WmljcE8xeHVYRzUyWVhJZ2MyVjBTVzV1WlhKSVZFMU1JRDBnY21WeGRXbHlaU2duTGk5elpYUkpibTVsY2toVVRVd25LVHRjYm5aaGNpQnpaWFJVWlhoMFEyOXVkR1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZjMlYwVkdWNGRFTnZiblJsYm5RbktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dUx5b3FYRzRnS2lCSmJuTmxjblJ6SUdCamFHbHNaRTV2WkdWZ0lHRnpJR0VnWTJocGJHUWdiMllnWUhCaGNtVnVkRTV2WkdWZ0lHRjBJSFJvWlNCZ2FXNWtaWGhnTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2NHRnlaVzUwVG05a1pTQlFZWEpsYm5RZ2JtOWtaU0JwYmlCM2FHbGphQ0IwYnlCcGJuTmxjblF1WEc0Z0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR05vYVd4a1RtOWtaU0JEYUdsc1pDQnViMlJsSUhSdklHbHVjMlZ5ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnBibVJsZUNCSmJtUmxlQ0JoZENCM2FHbGphQ0IwYnlCcGJuTmxjblFnZEdobElHTm9hV3hrTGx4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHVjMlZ5ZEVOb2FXeGtRWFFvY0dGeVpXNTBUbTlrWlN3Z1kyaHBiR1JPYjJSbExDQnBibVJsZUNrZ2UxeHVJQ0F2THlCQ2VTQmxlSEJzYjJsMGFXNW5JR0Z5Y21GNWN5QnlaWFIxY201cGJtY2dZSFZ1WkdWbWFXNWxaR0FnWm05eUlHRnVJSFZ1WkdWbWFXNWxaQ0JwYm1SbGVDd2dkMlVnWTJGdVhHNGdJQzh2SUhKbGJIa2daWGhqYkhWemFYWmxiSGtnYjI0Z1lHbHVjMlZ5ZEVKbFptOXlaU2h1YjJSbExDQnVkV3hzS1dBZ2FXNXpkR1ZoWkNCdlppQmhiSE52SUhWemFXNW5YRzRnSUM4dklHQmhjSEJsYm1SRGFHbHNaQ2h1YjJSbEtXQXVJRWh2ZDJWMlpYSXNJSFZ6YVc1bklHQjFibVJsWm1sdVpXUmdJR2x6SUc1dmRDQmhiR3h2ZDJWa0lHSjVJR0ZzYkZ4dUlDQXZMeUJpY205M2MyVnljeUJ6YnlCM1pTQnRkWE4wSUhKbGNHeGhZMlVnYVhRZ2QybDBhQ0JnYm5Wc2JHQXVYRzVjYmlBZ0x5OGdabWw0SUhKbGJtUmxjaUJ2Y21SbGNpQmxjbkp2Y2lCcGJpQnpZV1poY21sY2JpQWdMeThnU1VVNElIZHBiR3dnZEdoeWIzY2daWEp5YjNJZ2QyaGxiaUJwYm1SbGVDQnZkWFFnYjJZZ2JHbHpkQ0J6YVhwbExseHVJQ0IyWVhJZ1ltVm1iM0psUTJocGJHUWdQU0JwYm1SbGVDQStQU0J3WVhKbGJuUk9iMlJsTG1Ob2FXeGtUbTlrWlhNdWJHVnVaM1JvSUQ4Z2JuVnNiQ0E2SUhCaGNtVnVkRTV2WkdVdVkyaHBiR1JPYjJSbGN5NXBkR1Z0S0dsdVpHVjRLVHRjYmx4dUlDQndZWEpsYm5ST2IyUmxMbWx1YzJWeWRFSmxabTl5WlNoamFHbHNaRTV2WkdVc0lHSmxabTl5WlVOb2FXeGtLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlBjR1Z5WVhScGIyNXpJR1p2Y2lCMWNHUmhkR2x1WnlCM2FYUm9JRVJQVFNCamFHbHNaSEpsYmk1Y2JpQXFMMXh1ZG1GeUlFUlBUVU5vYVd4a2NtVnVUM0JsY21GMGFXOXVjeUE5SUh0Y2JseHVJQ0JrWVc1blpYSnZkWE5zZVZKbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNEb2dSR0Z1WjJWeUxtUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3TEZ4dVhHNGdJSFZ3WkdGMFpWUmxlSFJEYjI1MFpXNTBPaUJ6WlhSVVpYaDBRMjl1ZEdWdWRDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsY3lCaElHTnZiWEJ2Ym1WdWRDZHpJR05vYVd4a2NtVnVJR0o1SUhCeWIyTmxjM05wYm1jZ1lTQnpaWEpwWlhNZ2IyWWdkWEJrWVhSbGN5NGdWR2hsWEc0Z0lDQXFJSFZ3WkdGMFpTQmpiMjVtYVdkMWNtRjBhVzl1Y3lCaGNtVWdaV0ZqYUNCbGVIQmxZM1JsWkNCMGJ5Qm9ZWFpsSUdFZ1lIQmhjbVZ1ZEU1dlpHVmdJSEJ5YjNCbGNuUjVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTJGeWNtRjVQRzlpYW1WamRENTlJSFZ3WkdGMFpYTWdUR2x6ZENCdlppQjFjR1JoZEdVZ1kyOXVabWxuZFhKaGRHbHZibk11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZWEp5WVhrOGMzUnlhVzVuUG4wZ2JXRnlhM1Z3VEdsemRDQk1hWE4wSUc5bUlHMWhjbXQxY0NCemRISnBibWR6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUhCeWIyTmxjM05WY0dSaGRHVnpPaUJtZFc1amRHbHZiaUFvZFhCa1lYUmxjeXdnYldGeWEzVndUR2x6ZENrZ2UxeHVJQ0FnSUhaaGNpQjFjR1JoZEdVN1hHNGdJQ0FnTHk4Z1RXRndjR2x1WnlCbWNtOXRJSEJoY21WdWRDQkpSSE1nZEc4Z2FXNXBkR2xoYkNCamFHbHNaQ0J2Y21SbGNtbHVaM011WEc0Z0lDQWdkbUZ5SUdsdWFYUnBZV3hEYUdsc1pISmxiaUE5SUc1MWJHdzdYRzRnSUNBZ0x5OGdUR2x6ZENCdlppQmphR2xzWkhKbGJpQjBhR0YwSUhkcGJHd2dZbVVnYlc5MlpXUWdiM0lnY21WdGIzWmxaQzVjYmlBZ0lDQjJZWElnZFhCa1lYUmxaRU5vYVd4a2NtVnVJRDBnYm5Wc2JEdGNibHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dkWEJrWVhSbGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZFhCa1lYUmxJRDBnZFhCa1lYUmxjMXRwWFR0Y2JpQWdJQ0FnSUdsbUlDaDFjR1JoZEdVdWRIbHdaU0E5UFQwZ1VtVmhZM1JOZFd4MGFVTm9hV3hrVlhCa1lYUmxWSGx3WlhNdVRVOVdSVjlGV0VsVFZFbE9SeUI4ZkNCMWNHUmhkR1V1ZEhsd1pTQTlQVDBnVW1WaFkzUk5kV3gwYVVOb2FXeGtWWEJrWVhSbFZIbHdaWE11VWtWTlQxWkZYMDVQUkVVcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhWd1pHRjBaV1JKYm1SbGVDQTlJSFZ3WkdGMFpTNW1jbTl0U1c1a1pYZzdYRzRnSUNBZ0lDQWdJSFpoY2lCMWNHUmhkR1ZrUTJocGJHUWdQU0IxY0dSaGRHVXVjR0Z5Wlc1MFRtOWtaUzVqYUdsc1pFNXZaR1Z6VzNWd1pHRjBaV1JKYm1SbGVGMDdYRzRnSUNBZ0lDQWdJSFpoY2lCd1lYSmxiblJKUkNBOUlIVndaR0YwWlM1d1lYSmxiblJKUkR0Y2JseHVJQ0FnSUNBZ0lDQWhkWEJrWVhSbFpFTm9hV3hrSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKM0J5YjJObGMzTlZjR1JoZEdWektDazZJRlZ1WVdKc1pTQjBieUJtYVc1a0lHTm9hV3hrSUNWeklHOW1JR1ZzWlcxbGJuUXVJRlJvYVhNZ0p5QXJJQ2R3Y205aVlXSnNlU0J0WldGdWN5QjBhR1VnUkU5TklIZGhjeUIxYm1WNGNHVmpkR1ZrYkhrZ2JYVjBZWFJsWkNBb1pTNW5MaXdnWW5rZ2RHaGxJQ2NnS3lBblluSnZkM05sY2lrc0lIVnpkV0ZzYkhrZ1pIVmxJSFJ2SUdadmNtZGxkSFJwYm1jZ1lTQThkR0p2WkhrK0lIZG9aVzRnZFhOcGJtY2dkR0ZpYkdWekxDQW5JQ3NnSjI1bGMzUnBibWNnZEdGbmN5QnNhV3RsSUR4bWIzSnRQaXdnUEhBK0xDQnZjaUE4WVQ0c0lHOXlJSFZ6YVc1bklHNXZiaTFUVmtjZ1pXeGxiV1Z1ZEhNZ0p5QXJJQ2RwYmlCaGJpQThjM1puUGlCd1lYSmxiblF1SUZSeWVTQnBibk53WldOMGFXNW5JSFJvWlNCamFHbHNaQ0J1YjJSbGN5QnZaaUIwYUdVZ1pXeGxiV1Z1ZENBbklDc2dKM2RwZEdnZ1VtVmhZM1FnU1VRZ1lDVnpZQzRuTENCMWNHUmhkR1ZrU1c1a1pYZ3NJSEJoY21WdWRFbEVLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lDQWdhVzVwZEdsaGJFTm9hV3hrY21WdUlEMGdhVzVwZEdsaGJFTm9hV3hrY21WdUlIeDhJSHQ5TzF4dUlDQWdJQ0FnSUNCcGJtbDBhV0ZzUTJocGJHUnlaVzViY0dGeVpXNTBTVVJkSUQwZ2FXNXBkR2xoYkVOb2FXeGtjbVZ1VzNCaGNtVnVkRWxFWFNCOGZDQmJYVHRjYmlBZ0lDQWdJQ0FnYVc1cGRHbGhiRU5vYVd4a2NtVnVXM0JoY21WdWRFbEVYVnQxY0dSaGRHVmtTVzVrWlhoZElEMGdkWEJrWVhSbFpFTm9hV3hrTzF4dVhHNGdJQ0FnSUNBZ0lIVndaR0YwWldSRGFHbHNaSEpsYmlBOUlIVndaR0YwWldSRGFHbHNaSEpsYmlCOGZDQmJYVHRjYmlBZ0lDQWdJQ0FnZFhCa1lYUmxaRU5vYVd4a2NtVnVMbkIxYzJnb2RYQmtZWFJsWkVOb2FXeGtLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY21WdVpHVnlaV1JOWVhKcmRYQTdYRzRnSUNBZ0x5OGdiV0Z5YTNWd1RHbHpkQ0JwY3lCbGFYUm9aWElnWVNCc2FYTjBJRzltSUcxaGNtdDFjQ0J2Y2lCcWRYTjBJR0VnYkdsemRDQnZaaUJsYkdWdFpXNTBjMXh1SUNBZ0lHbG1JQ2h0WVhKcmRYQk1hWE4wTG14bGJtZDBhQ0FtSmlCMGVYQmxiMllnYldGeWEzVndUR2x6ZEZzd1hTQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0FnSUhKbGJtUmxjbVZrVFdGeWEzVndJRDBnUkdGdVoyVnlMbVJoYm1kbGNtOTFjMng1VW1WdVpHVnlUV0Z5YTNWd0tHMWhjbXQxY0V4cGMzUXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpXNWtaWEpsWkUxaGNtdDFjQ0E5SUcxaGNtdDFjRXhwYzNRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1VtVnRiM1psSUhWd1pHRjBaV1FnWTJocGJHUnlaVzRnWm1seWMzUWdjMjhnZEdoaGRDQmdkRzlKYm1SbGVHQWdhWE1nWTI5dWMybHpkR1Z1ZEM1Y2JpQWdJQ0JwWmlBb2RYQmtZWFJsWkVOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCcUlEMGdNRHNnYWlBOElIVndaR0YwWldSRGFHbHNaSEpsYmk1c1pXNW5kR2c3SUdvckt5a2dlMXh1SUNBZ0lDQWdJQ0IxY0dSaGRHVmtRMmhwYkdSeVpXNWJhbDB1Y0dGeVpXNTBUbTlrWlM1eVpXMXZkbVZEYUdsc1pDaDFjR1JoZEdWa1EyaHBiR1J5Wlc1YmFsMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHWnZjaUFvZG1GeUlHc2dQU0F3T3lCcklEd2dkWEJrWVhSbGN5NXNaVzVuZEdnN0lHc3JLeWtnZTF4dUlDQWdJQ0FnZFhCa1lYUmxJRDBnZFhCa1lYUmxjMXRyWFR0Y2JpQWdJQ0FnSUhOM2FYUmphQ0FvZFhCa1lYUmxMblI1Y0dVcElIdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1SlRsTkZVbFJmVFVGU1MxVlFPbHh1SUNBZ0lDQWdJQ0FnSUdsdWMyVnlkRU5vYVd4a1FYUW9kWEJrWVhSbExuQmhjbVZ1ZEU1dlpHVXNJSEpsYm1SbGNtVmtUV0Z5YTNWd1czVndaR0YwWlM1dFlYSnJkWEJKYm1SbGVGMHNJSFZ3WkdGMFpTNTBiMGx1WkdWNEtUdGNiaUFnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdZMkZ6WlNCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1TlQxWkZYMFZZU1ZOVVNVNUhPbHh1SUNBZ0lDQWdJQ0FnSUdsdWMyVnlkRU5vYVd4a1FYUW9kWEJrWVhSbExuQmhjbVZ1ZEU1dlpHVXNJR2x1YVhScFlXeERhR2xzWkhKbGJsdDFjR1JoZEdVdWNHRnlaVzUwU1VSZFczVndaR0YwWlM1bWNtOXRTVzVrWlhoZExDQjFjR1JoZEdVdWRHOUpibVJsZUNrN1hHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnVW1WaFkzUk5kV3gwYVVOb2FXeGtWWEJrWVhSbFZIbHdaWE11VTBWVVgwMUJVa3RWVURwY2JpQWdJQ0FnSUNBZ0lDQnpaWFJKYm01bGNraFVUVXdvZFhCa1lYUmxMbkJoY21WdWRFNXZaR1VzSUhWd1pHRjBaUzVqYjI1MFpXNTBLVHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWTJGelpTQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NVVSVmhVWDBOUFRsUkZUbFE2WEc0Z0lDQWdJQ0FnSUNBZ2MyVjBWR1Y0ZEVOdmJuUmxiblFvZFhCa1lYUmxMbkJoY21WdWRFNXZaR1VzSUhWd1pHRjBaUzVqYjI1MFpXNTBLVHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWTJGelpTQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NVNSVTFQVmtWZlRrOUVSVHBjYmlBZ0lDQWdJQ0FnSUNBdkx5QkJiSEpsWVdSNUlISmxiVzkyWldRZ1lua2dkR2hsSUdadmNpMXNiMjl3SUdGaWIzWmxMbHh1SUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNTlPMXh1WEc1U1pXRmpkRkJsY21ZdWJXVmhjM1Z5WlUxbGRHaHZaSE1vUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1ekxDQW5SRTlOUTJocGJHUnlaVzVQY0dWeVlYUnBiMjV6Snl3Z2UxeHVJQ0IxY0dSaGRHVlVaWGgwUTI5dWRHVnVkRG9nSjNWd1pHRjBaVlJsZUhSRGIyNTBaVzUwSjF4dWZTazdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1ek95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBET01Qcm9wZXJ0eVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuZnVuY3Rpb24gY2hlY2tNYXNrKHZhbHVlLCBiaXRtYXNrKSB7XG4gIHJldHVybiAodmFsdWUgJiBiaXRtYXNrKSA9PT0gYml0bWFzaztcbn1cblxudmFyIERPTVByb3BlcnR5SW5qZWN0aW9uID0ge1xuICAvKipcbiAgICogTWFwcGluZyBmcm9tIG5vcm1hbGl6ZWQsIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgdG8gYSBjb25maWd1cmF0aW9uIHRoYXRcbiAgICogc3BlY2lmaWVzIGhvdyB0aGUgYXNzb2NpYXRlZCBET00gcHJvcGVydHkgc2hvdWxkIGJlIGFjY2Vzc2VkIG9yIHJlbmRlcmVkLlxuICAgKi9cbiAgTVVTVF9VU0VfQVRUUklCVVRFOiAweDEsXG4gIE1VU1RfVVNFX1BST1BFUlRZOiAweDIsXG4gIEhBU19TSURFX0VGRkVDVFM6IDB4NCxcbiAgSEFTX0JPT0xFQU5fVkFMVUU6IDB4OCxcbiAgSEFTX05VTUVSSUNfVkFMVUU6IDB4MTAsXG4gIEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOiAweDIwIHwgMHgxMCxcbiAgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTogMHg0MCxcblxuICAvKipcbiAgICogSW5qZWN0IHNvbWUgc3BlY2lhbGl6ZWQga25vd2xlZGdlIGFib3V0IHRoZSBET00uIFRoaXMgdGFrZXMgYSBjb25maWcgb2JqZWN0XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBnaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSB3aWxsIHJldHVybiB0cnVlXG4gICAqIGlmIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00gdmVyYmF0aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFyaWEtKlxuICAgKiBhdHRyaWJ1dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxsIG9mIHRoZSBwb3NzaWJsZVxuICAgKiBhdHRyaWJ1dGUgbmFtZXMsXG4gICAqXG4gICAqIFByb3BlcnRpZXM6IG9iamVjdCBtYXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcbiAgICogRE9NUHJvcGVydHlJbmplY3Rpb24gY29uc3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0cmlidXRlIGlzbid0IGluIGhlcmUsXG4gICAqIGl0IHdvbid0IGdldCB3cml0dGVuIHRvIHRoZSBET00uXG4gICAqXG4gICAqIERPTUF0dHJpYnV0ZU5hbWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lLiBBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlICoqbG93ZXJjYXNlKipcbiAgICogbm9ybWFsaXplZCBuYW1lLlxuICAgKlxuICAgKiBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2UgVVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG4gICAqXG4gICAqIERPTVByb3BlcnR5TmFtZXM6IHNpbWlsYXIgdG8gRE9NQXR0cmlidXRlTmFtZXMgYnV0IGZvciBET00gcHJvcGVydGllcy5cbiAgICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlIG5vcm1hbGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NTXV0YXRpb25NZXRob2RzOiBQcm9wZXJ0aWVzIHRoYXQgcmVxdWlyZSBzcGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElmXG4gICAqIGB2YWx1ZWAgaXMgdW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1bnNldCB0aGUgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0eUNvbmZpZyB0aGUgY29uZmlnIGFzIGRlc2NyaWJlZCBhYm92ZS5cbiAgICovXG4gIGluamVjdERPTVByb3BlcnR5Q29uZmlnOiBmdW5jdGlvbiAoZG9tUHJvcGVydHlDb25maWcpIHtcbiAgICB2YXIgSW5qZWN0aW9uID0gRE9NUHJvcGVydHlJbmplY3Rpb247XG4gICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciBET01BdHRyaWJ1dGVOYW1lc3BhY2VzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lcyB8fCB7fTtcbiAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTVByb3BlcnR5TmFtZXMgfHwge307XG4gICAgdmFyIERPTU11dGF0aW9uTWV0aG9kcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTU11dGF0aW9uTWV0aG9kcyB8fCB7fTtcblxuICAgIGlmIChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSkge1xuICAgICAgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIFByb3BlcnRpZXMpIHtcbiAgICAgICEhRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnaW5qZWN0RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91XFwncmUgdHJ5aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgJyArICdcXCclc1xcJyB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGluamVjdGVkLiBZb3UgbWF5IGJlIGFjY2lkZW50YWxseSAnICsgJ2luamVjdGluZyB0aGUgc2FtZSBET00gcHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlICcgKyAnaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25mbGljdGluZyBwcm9wZXJ0eSBuYW1lcy4nLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgbG93ZXJDYXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcHJvcENvbmZpZyA9IFByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXG4gICAgICB2YXIgcHJvcGVydHlJbmZvID0ge1xuICAgICAgICBhdHRyaWJ1dGVOYW1lOiBsb3dlckNhc2VkLFxuICAgICAgICBhdHRyaWJ1dGVOYW1lc3BhY2U6IG51bGwsXG4gICAgICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUsXG4gICAgICAgIG11dGF0aW9uTWV0aG9kOiBudWxsLFxuXG4gICAgICAgIG11c3RVc2VBdHRyaWJ1dGU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uTVVTVF9VU0VfQVRUUklCVVRFKSxcbiAgICAgICAgbXVzdFVzZVByb3BlcnR5OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZKSxcbiAgICAgICAgaGFzU2lkZUVmZmVjdHM6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX1NJREVfRUZGRUNUUyksXG4gICAgICAgIGhhc0Jvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSksXG4gICAgICAgIGhhc051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRSksXG4gICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxcbiAgICAgICAgaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKVxuICAgICAgfTtcblxuICAgICAgISghcHJvcGVydHlJbmZvLm11c3RVc2VBdHRyaWJ1dGUgfHwgIXByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBDYW5ub3QgcmVxdWlyZSB1c2luZyBib3RoIGF0dHJpYnV0ZSBhbmQgcHJvcGVydHk6ICVzJywgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICEocHJvcGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSB8fCAhcHJvcGVydHlJbmZvLmhhc1NpZGVFZmZlY3RzKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0eTogUHJvcGVydGllcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzIG11c3QgdXNlIHByb3BlcnR5OiAlcycsIHByb3BOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAhKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICsgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgPD0gMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFZhbHVlIGNhbiBiZSBvbmUgb2YgYm9vbGVhbiwgb3ZlcmxvYWRlZCBib29sZWFuLCBvciAnICsgJ251bWVyaWMgdmFsdWUsIGJ1dCBub3QgYSBjb21iaW5hdGlvbjogJXMnLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkXSA9IHByb3BOYW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gRE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVdO1xuICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbYXR0cmlidXRlTmFtZV0gPSBwcm9wTmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZSA9IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXNbcHJvcE5hbWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAoRE9NUHJvcGVydHlOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZSA9IERPTVByb3BlcnR5TmFtZXNbcHJvcE5hbWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAoRE9NTXV0YXRpb25NZXRob2RzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2QgPSBET01NdXRhdGlvbk1ldGhvZHNbcHJvcE5hbWVdO1xuICAgICAgfVxuXG4gICAgICBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BOYW1lXSA9IHByb3BlcnR5SW5mbztcbiAgICB9XG4gIH1cbn07XG52YXIgZGVmYXVsdFZhbHVlQ2FjaGUgPSB7fTtcblxuLyoqXG4gKiBET01Qcm9wZXJ0eSBleHBvcnRzIGxvb2t1cCBvYmplY3RzIHRoYXQgY2FuIGJlIHVzZWQgbGlrZSBmdW5jdGlvbnM6XG4gKlxuICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2lkJ11cbiAqICAgdHJ1ZVxuICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2Zvb2JhciddXG4gKiAgIHVuZGVmaW5lZFxuICpcbiAqIEFsdGhvdWdoIHRoaXMgbWF5IGJlIGNvbmZ1c2luZywgaXQgcGVyZm9ybXMgYmV0dGVyIGluIGdlbmVyYWwuXG4gKlxuICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktZXhpc3RzXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1taXNzaW5nXG4gKi9cbnZhciBET01Qcm9wZXJ0eSA9IHtcblxuICBJRF9BVFRSSUJVVEVfTkFNRTogJ2RhdGEtcmVhY3RpZCcsXG5cbiAgLyoqXG4gICAqIE1hcCBmcm9tIHByb3BlcnR5IFwic3RhbmRhcmQgbmFtZVwiIHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldFxuICAgKiB0aGUgcHJvcGVydHkgaW4gdGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6XG4gICAqXG4gICAqIGF0dHJpYnV0ZU5hbWU6XG4gICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Igd2l0aCBgKkF0dHJpYnV0ZSgpYC5cbiAgICogYXR0cmlidXRlTmFtZXNwYWNlXG4gICAqIHByb3BlcnR5TmFtZTpcbiAgICogICBVc2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5jbHVkZXMgcHJvcGVydGllcyB0aGF0IG11dGF0ZSBkdWUgdG9cbiAgICogICBleHRlcm5hbCBmYWN0b3JzLilcbiAgICogbXV0YXRpb25NZXRob2Q6XG4gICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5zdGVhZCBvZiB0aGUgcHJvcGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlclxuICAgKiAgIGluaXRpYWwgcmVuZGVyLlxuICAgKiBtdXN0VXNlQXR0cmlidXRlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgYWNjZXNzZWQgYW5kIG11dGF0ZWQgdXNpbmcgYCpBdHRyaWJ1dGUoKWAuXG4gICAqICAgKFRoaXMgaW5jbHVkZXMgYW55dGhpbmcgdGhhdCBmYWlscyBgPHByb3BOYW1lPiBpbiA8ZWxlbWVudD5gLilcbiAgICogbXVzdFVzZVByb3BlcnR5OlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgYWNjZXNzZWQgYW5kIG11dGF0ZWQgYXMgYW4gb2JqZWN0IHByb3BlcnR5LlxuICAgKiBoYXNTaWRlRWZmZWN0czpcbiAgICogICBXaGV0aGVyIG9yIG5vdCBzZXR0aW5nIGEgdmFsdWUgY2F1c2VzIHNpZGUgZWZmZWN0cyBzdWNoIGFzIHRyaWdnZXJpbmdcbiAgICogICByZXNvdXJjZXMgdG8gYmUgbG9hZGVkIG9yIHRleHQgc2VsZWN0aW9uIGNoYW5nZXMuIElmIHRydWUsIHdlIHJlYWQgZnJvbVxuICAgKiAgIHRoZSBET00gYmVmb3JlIHVwZGF0aW5nIHRvIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpcyBvbmx5IHNldCBpZiBpdCBoYXNcbiAgICogICBjaGFuZ2VkLlxuICAgKiBoYXNCb29sZWFuVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc051bWVyaWNWYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBudW1lcmljIGFuZCBzaG91bGQgYmVcbiAgICogICByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIHBvc2l0aXZlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBwb3NpdGl2ZVxuICAgKiAgIG51bWVyaWMgYW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IGNhbiBiZSB1c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cbiAgICogICBSZW1vdmVkIHdoZW4gc3RyaWN0bHkgZXF1YWwgdG8gZmFsc2U7IHByZXNlbnQgd2l0aG91dCBhIHZhbHVlIHdoZW5cbiAgICogICBzdHJpY3RseSBlcXVhbCB0byB0cnVlOyBwcmVzZW50IHdpdGggYSB2YWx1ZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm9wZXJ0aWVzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGxvd2VyY2FzZSBwcm9wZXJ0eSBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lvbiwgdXNlZFxuICAgKiB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgcHJvcGVydGllcy4gQXZhaWxhYmxlIG9ubHkgaW4gX19ERVZfXy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8ge30gOiBudWxsLFxuXG4gIC8qKlxuICAgKiBBbGwgb2YgdGhlIGlzQ3VzdG9tQXR0cmlidXRlKCkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGluamVjdGVkLlxuICAgKi9cbiAgX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zOiBbXSxcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBwcm9wZXJ0eSBuYW1lIGlzIGEgY3VzdG9tIGF0dHJpYnV0ZS5cbiAgICogQG1ldGhvZFxuICAgKi9cbiAgaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpc0N1c3RvbUF0dHJpYnV0ZUZuID0gRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW2ldO1xuICAgICAgaWYgKGlzQ3VzdG9tQXR0cmlidXRlRm4oYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBET00gcHJvcGVydHkgKGkuZS4sIG5vdCBhblxuICAgKiBhdHRyaWJ1dGUpLiBNb3N0IGRlZmF1bHQgdmFsdWVzIGFyZSAnJyBvciBmYWxzZSwgYnV0IG5vdCBhbGwuIFdvcnNlIHlldCxcbiAgICogc29tZSAoaW4gcGFydGljdWxhciwgYHR5cGVgKSB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LlxuICAgKlxuICAgKiBUT0RPOiBJcyBpdCBiZXR0ZXIgdG8gZ3JhYiBhbGwgdGhlIHBvc3NpYmxlIHByb3BlcnRpZXMgd2hlbiBjcmVhdGluZyBhblxuICAgKiBlbGVtZW50IHRvIGF2b2lkIGhhdmluZyB0byBjcmVhdGUgdGhlIHNhbWUgZWxlbWVudCB0d2ljZT9cbiAgICovXG4gIGdldERlZmF1bHRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZU5hbWUsIHByb3ApIHtcbiAgICB2YXIgbm9kZURlZmF1bHRzID0gZGVmYXVsdFZhbHVlQ2FjaGVbbm9kZU5hbWVdO1xuICAgIHZhciB0ZXN0RWxlbWVudDtcbiAgICBpZiAoIW5vZGVEZWZhdWx0cykge1xuICAgICAgZGVmYXVsdFZhbHVlQ2FjaGVbbm9kZU5hbWVdID0gbm9kZURlZmF1bHRzID0ge307XG4gICAgfVxuICAgIGlmICghKHByb3AgaW4gbm9kZURlZmF1bHRzKSkge1xuICAgICAgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5vZGVOYW1lKTtcbiAgICAgIG5vZGVEZWZhdWx0c1twcm9wXSA9IHRlc3RFbGVtZW50W3Byb3BdO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZURlZmF1bHRzW3Byb3BdO1xuICB9LFxuXG4gIGluamVjdGlvbjogRE9NUHJvcGVydHlJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NUHJvcGVydHk7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2UkU5TlVISnZjR1Z5ZEhrdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFUlBUVkJ5YjNCbGNuUjVYRzRnS2lCQWRIbHdaV05vWldOcmN5QnpkR0YwYVdNdGIyNXNlVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc1bWRXNWpkR2x2YmlCamFHVmphMDFoYzJzb2RtRnNkV1VzSUdKcGRHMWhjMnNwSUh0Y2JpQWdjbVYwZFhKdUlDaDJZV3gxWlNBbUlHSnBkRzFoYzJzcElEMDlQU0JpYVhSdFlYTnJPMXh1ZlZ4dVhHNTJZWElnUkU5TlVISnZjR1Z5ZEhsSmJtcGxZM1JwYjI0Z1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCTllYQndhVzVuSUdaeWIyMGdibTl5YldGc2FYcGxaQ3dnWTJGdFpXeGpZWE5sWkNCd2NtOXdaWEowZVNCdVlXMWxjeUIwYnlCaElHTnZibVpwWjNWeVlYUnBiMjRnZEdoaGRGeHVJQ0FnS2lCemNHVmphV1pwWlhNZ2FHOTNJSFJvWlNCaGMzTnZZMmxoZEdWa0lFUlBUU0J3Y205d1pYSjBlU0J6YUc5MWJHUWdZbVVnWVdOalpYTnpaV1FnYjNJZ2NtVnVaR1Z5WldRdVhHNGdJQ0FxTDF4dUlDQk5WVk5VWDFWVFJWOUJWRlJTU1VKVlZFVTZJREI0TVN4Y2JpQWdUVlZUVkY5VlUwVmZVRkpQVUVWU1ZGazZJREI0TWl4Y2JpQWdTRUZUWDFOSlJFVmZSVVpHUlVOVVV6b2dNSGcwTEZ4dUlDQklRVk5mUWs5UFRFVkJUbDlXUVV4VlJUb2dNSGc0TEZ4dUlDQklRVk5mVGxWTlJWSkpRMTlXUVV4VlJUb2dNSGd4TUN4Y2JpQWdTRUZUWDFCUFUwbFVTVlpGWDA1VlRVVlNTVU5mVmtGTVZVVTZJREI0TWpBZ2ZDQXdlREV3TEZ4dUlDQklRVk5mVDFaRlVreFBRVVJGUkY5Q1QwOU1SVUZPWDFaQlRGVkZPaUF3ZURRd0xGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJtcGxZM1FnYzI5dFpTQnpjR1ZqYVdGc2FYcGxaQ0JyYm05M2JHVmtaMlVnWVdKdmRYUWdkR2hsSUVSUFRTNGdWR2hwY3lCMFlXdGxjeUJoSUdOdmJtWnBaeUJ2WW1wbFkzUmNiaUFnSUNvZ2QybDBhQ0IwYUdVZ1ptOXNiRzkzYVc1bklIQnliM0JsY25ScFpYTTZYRzRnSUNBcVhHNGdJQ0FxSUdselEzVnpkRzl0UVhSMGNtbGlkWFJsT2lCbWRXNWpkR2x2YmlCMGFHRjBJR2RwZG1WdUlHRnVJR0YwZEhKcFluVjBaU0J1WVcxbElIZHBiR3dnY21WMGRYSnVJSFJ5ZFdWY2JpQWdJQ29nYVdZZ2FYUWdZMkZ1SUdKbElHbHVjMlZ5ZEdWa0lHbHVkRzhnZEdobElFUlBUU0IyWlhKaVlYUnBiUzRnVlhObFpuVnNJR1p2Y2lCa1lYUmhMU29nYjNJZ1lYSnBZUzBxWEc0Z0lDQXFJR0YwZEhKcFluVjBaWE1nZDJobGNtVWdhWFFuY3lCcGJYQnZjM05wWW14bElIUnZJR1Z1ZFcxbGNtRjBaU0JoYkd3Z2IyWWdkR2hsSUhCdmMzTnBZbXhsWEc0Z0lDQXFJR0YwZEhKcFluVjBaU0J1WVcxbGN5eGNiaUFnSUNwY2JpQWdJQ29nVUhKdmNHVnlkR2xsY3pvZ2IySnFaV04wSUcxaGNIQnBibWNnUkU5TklIQnliM0JsY25SNUlHNWhiV1VnZEc4Z2IyNWxJRzltSUhSb1pWeHVJQ0FnS2lCRVQwMVFjbTl3WlhKMGVVbHVhbVZqZEdsdmJpQmpiMjV6ZEdGdWRITWdiM0lnYm5Wc2JDNGdTV1lnZVc5MWNpQmhkSFJ5YVdKMWRHVWdhWE51SjNRZ2FXNGdhR1Z5WlN4Y2JpQWdJQ29nYVhRZ2QyOXVKM1FnWjJWMElIZHlhWFIwWlc0Z2RHOGdkR2hsSUVSUFRTNWNiaUFnSUNwY2JpQWdJQ29nUkU5TlFYUjBjbWxpZFhSbFRtRnRaWE02SUc5aWFtVmpkQ0J0WVhCd2FXNW5JRkpsWVdOMElHRjBkSEpwWW5WMFpTQnVZVzFsSUhSdklIUm9aU0JFVDAxY2JpQWdJQ29nWVhSMGNtbGlkWFJsSUc1aGJXVXVJRUYwZEhKcFluVjBaU0J1WVcxbGN5QnViM1FnYzNCbFkybG1hV1ZrSUhWelpTQjBhR1VnS2lwc2IzZGxjbU5oYzJVcUtseHVJQ0FnS2lCdWIzSnRZV3hwZW1Wa0lHNWhiV1V1WEc0Z0lDQXFYRzRnSUNBcUlFUlBUVUYwZEhKcFluVjBaVTVoYldWemNHRmpaWE02SUc5aWFtVmpkQ0J0WVhCd2FXNW5JRkpsWVdOMElHRjBkSEpwWW5WMFpTQnVZVzFsSUhSdklIUm9aU0JFVDAxY2JpQWdJQ29nWVhSMGNtbGlkWFJsSUc1aGJXVnpjR0ZqWlNCVlVrd3VJQ2hCZEhSeWFXSjFkR1VnYm1GdFpYTWdibTkwSUhOd1pXTnBabWxsWkNCMWMyVWdibThnYm1GdFpYTndZV05sTGlsY2JpQWdJQ3BjYmlBZ0lDb2dSRTlOVUhKdmNHVnlkSGxPWVcxbGN6b2djMmx0YVd4aGNpQjBieUJFVDAxQmRIUnlhV0oxZEdWT1lXMWxjeUJpZFhRZ1ptOXlJRVJQVFNCd2NtOXdaWEowYVdWekxseHVJQ0FnS2lCUWNtOXdaWEowZVNCdVlXMWxjeUJ1YjNRZ2MzQmxZMmxtYVdWa0lIVnpaU0IwYUdVZ2JtOXliV0ZzYVhwbFpDQnVZVzFsTGx4dUlDQWdLbHh1SUNBZ0tpQkVUMDFOZFhSaGRHbHZiazFsZEdodlpITTZJRkJ5YjNCbGNuUnBaWE1nZEdoaGRDQnlaWEYxYVhKbElITndaV05wWVd3Z2JYVjBZWFJwYjI0Z2JXVjBhRzlrY3k0Z1NXWmNiaUFnSUNvZ1lIWmhiSFZsWUNCcGN5QjFibVJsWm1sdVpXUXNJSFJvWlNCdGRYUmhkR2x2YmlCdFpYUm9iMlFnYzJodmRXeGtJSFZ1YzJWMElIUm9aU0J3Y205d1pYSjBlUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdSdmJWQnliM0JsY25SNVEyOXVabWxuSUhSb1pTQmpiMjVtYVdjZ1lYTWdaR1Z6WTNKcFltVmtJR0ZpYjNabExseHVJQ0FnS2k5Y2JpQWdhVzVxWldOMFJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjNklHWjFibU4wYVc5dUlDaGtiMjFRY205d1pYSjBlVU52Ym1acFp5a2dlMXh1SUNBZ0lIWmhjaUJKYm1wbFkzUnBiMjRnUFNCRVQwMVFjbTl3WlhKMGVVbHVhbVZqZEdsdmJqdGNiaUFnSUNCMllYSWdVSEp2Y0dWeWRHbGxjeUE5SUdSdmJWQnliM0JsY25SNVEyOXVabWxuTGxCeWIzQmxjblJwWlhNZ2ZId2dlMzA3WEc0Z0lDQWdkbUZ5SUVSUFRVRjBkSEpwWW5WMFpVNWhiV1Z6Y0dGalpYTWdQU0JrYjIxUWNtOXdaWEowZVVOdmJtWnBaeTVFVDAxQmRIUnlhV0oxZEdWT1lXMWxjM0JoWTJWeklIeDhJSHQ5TzF4dUlDQWdJSFpoY2lCRVQwMUJkSFJ5YVdKMWRHVk9ZVzFsY3lBOUlHUnZiVkJ5YjNCbGNuUjVRMjl1Wm1sbkxrUlBUVUYwZEhKcFluVjBaVTVoYldWeklIeDhJSHQ5TzF4dUlDQWdJSFpoY2lCRVQwMVFjbTl3WlhKMGVVNWhiV1Z6SUQwZ1pHOXRVSEp2Y0dWeWRIbERiMjVtYVdjdVJFOU5VSEp2Y0dWeWRIbE9ZVzFsY3lCOGZDQjdmVHRjYmlBZ0lDQjJZWElnUkU5TlRYVjBZWFJwYjI1TlpYUm9iMlJ6SUQwZ1pHOXRVSEp2Y0dWeWRIbERiMjVtYVdjdVJFOU5UWFYwWVhScGIyNU5aWFJvYjJSeklIeDhJSHQ5TzF4dVhHNGdJQ0FnYVdZZ0tHUnZiVkJ5YjNCbGNuUjVRMjl1Wm1sbkxtbHpRM1Z6ZEc5dFFYUjBjbWxpZFhSbEtTQjdYRzRnSUNBZ0lDQkVUMDFRY205d1pYSjBlUzVmYVhORGRYTjBiMjFCZEhSeWFXSjFkR1ZHZFc1amRHbHZibk11Y0hWemFDaGtiMjFRY205d1pYSjBlVU52Ym1acFp5NXBjME4xYzNSdmJVRjBkSEpwWW5WMFpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NISnZjRTVoYldVZ2FXNGdVSEp2Y0dWeWRHbGxjeWtnZTF4dUlDQWdJQ0FnSVNGRVQwMVFjbTl3WlhKMGVTNXdjbTl3WlhKMGFXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkcGJtcGxZM1JFVDAxUWNtOXdaWEowZVVOdmJtWnBaeWd1TGk0cE9pQlpiM1ZjWENkeVpTQjBjbmxwYm1jZ2RHOGdhVzVxWldOMElFUlBUU0J3Y205d1pYSjBlU0FuSUNzZ0oxeGNKeVZ6WEZ3bklIZG9hV05vSUdoaGN5QmhiSEpsWVdSNUlHSmxaVzRnYVc1cVpXTjBaV1F1SUZsdmRTQnRZWGtnWW1VZ1lXTmphV1JsYm5SaGJHeDVJQ2NnS3lBbmFXNXFaV04wYVc1bklIUm9aU0J6WVcxbElFUlBUU0J3Y205d1pYSjBlU0JqYjI1bWFXY2dkSGRwWTJVc0lHOXlJSGx2ZFNCdFlYa2dZbVVnSnlBcklDZHBibXBsWTNScGJtY2dkSGR2SUdOdmJtWnBaM01nZEdoaGRDQm9ZWFpsSUdOdmJtWnNhV04wYVc1bklIQnliM0JsY25SNUlHNWhiV1Z6TGljc0lIQnliM0JPWVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0FnSUhaaGNpQnNiM2RsY2tOaGMyVmtJRDBnY0hKdmNFNWhiV1V1ZEc5TWIzZGxja05oYzJVb0tUdGNiaUFnSUNBZ0lIWmhjaUJ3Y205d1EyOXVabWxuSUQwZ1VISnZjR1Z5ZEdsbGMxdHdjbTl3VG1GdFpWMDdYRzVjYmlBZ0lDQWdJSFpoY2lCd2NtOXdaWEowZVVsdVptOGdQU0I3WEc0Z0lDQWdJQ0FnSUdGMGRISnBZblYwWlU1aGJXVTZJR3h2ZDJWeVEyRnpaV1FzWEc0Z0lDQWdJQ0FnSUdGMGRISnBZblYwWlU1aGJXVnpjR0ZqWlRvZ2JuVnNiQ3hjYmlBZ0lDQWdJQ0FnY0hKdmNHVnlkSGxPWVcxbE9pQndjbTl3VG1GdFpTeGNiaUFnSUNBZ0lDQWdiWFYwWVhScGIyNU5aWFJvYjJRNklHNTFiR3dzWEc1Y2JpQWdJQ0FnSUNBZ2JYVnpkRlZ6WlVGMGRISnBZblYwWlRvZ1kyaGxZMnROWVhOcktIQnliM0JEYjI1bWFXY3NJRWx1YW1WamRHbHZiaTVOVlZOVVgxVlRSVjlCVkZSU1NVSlZWRVVwTEZ4dUlDQWdJQ0FnSUNCdGRYTjBWWE5sVUhKdmNHVnlkSGs2SUdOb1pXTnJUV0Z6YXlod2NtOXdRMjl1Wm1sbkxDQkpibXBsWTNScGIyNHVUVlZUVkY5VlUwVmZVRkpQVUVWU1ZGa3BMRnh1SUNBZ0lDQWdJQ0JvWVhOVGFXUmxSV1ptWldOMGN6b2dZMmhsWTJ0TllYTnJLSEJ5YjNCRGIyNW1hV2NzSUVsdWFtVmpkR2x2Ymk1SVFWTmZVMGxFUlY5RlJrWkZRMVJUS1N4Y2JpQWdJQ0FnSUNBZ2FHRnpRbTl2YkdWaGJsWmhiSFZsT2lCamFHVmphMDFoYzJzb2NISnZjRU52Ym1acFp5d2dTVzVxWldOMGFXOXVMa2hCVTE5Q1QwOU1SVUZPWDFaQlRGVkZLU3hjYmlBZ0lDQWdJQ0FnYUdGelRuVnRaWEpwWTFaaGJIVmxPaUJqYUdWamEwMWhjMnNvY0hKdmNFTnZibVpwWnl3Z1NXNXFaV04wYVc5dUxraEJVMTlPVlUxRlVrbERYMVpCVEZWRktTeGNiaUFnSUNBZ0lDQWdhR0Z6VUc5emFYUnBkbVZPZFcxbGNtbGpWbUZzZFdVNklHTm9aV05yVFdGemF5aHdjbTl3UTI5dVptbG5MQ0JKYm1wbFkzUnBiMjR1U0VGVFgxQlBVMGxVU1ZaRlgwNVZUVVZTU1VOZlZrRk1WVVVwTEZ4dUlDQWdJQ0FnSUNCb1lYTlBkbVZ5Ykc5aFpHVmtRbTl2YkdWaGJsWmhiSFZsT2lCamFHVmphMDFoYzJzb2NISnZjRU52Ym1acFp5d2dTVzVxWldOMGFXOXVMa2hCVTE5UFZrVlNURTlCUkVWRVgwSlBUMHhGUVU1ZlZrRk1WVVVwWEc0Z0lDQWdJQ0I5TzF4dVhHNGdJQ0FnSUNBaEtDRndjbTl3WlhKMGVVbHVabTh1YlhWemRGVnpaVUYwZEhKcFluVjBaU0I4ZkNBaGNISnZjR1Z5ZEhsSmJtWnZMbTExYzNSVmMyVlFjbTl3WlhKMGVTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJFOU5VSEp2Y0dWeWRIazZJRU5oYm01dmRDQnlaWEYxYVhKbElIVnphVzVuSUdKdmRHZ2dZWFIwY21saWRYUmxJR0Z1WkNCd2NtOXdaWEowZVRvZ0pYTW5MQ0J3Y205d1RtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lTaHdjbTl3WlhKMGVVbHVabTh1YlhWemRGVnpaVkJ5YjNCbGNuUjVJSHg4SUNGd2NtOXdaWEowZVVsdVptOHVhR0Z6VTJsa1pVVm1abVZqZEhNcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBSUFRWQnliM0JsY25SNU9pQlFjbTl3WlhKMGFXVnpJSFJvWVhRZ2FHRjJaU0J6YVdSbElHVm1abVZqZEhNZ2JYVnpkQ0IxYzJVZ2NISnZjR1Z5ZEhrNklDVnpKeXdnY0hKdmNFNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDRW9jSEp2Y0dWeWRIbEpibVp2TG1oaGMwSnZiMnhsWVc1V1lXeDFaU0FySUhCeWIzQmxjblI1U1c1bWJ5NW9ZWE5PZFcxbGNtbGpWbUZzZFdVZ0t5QndjbTl3WlhKMGVVbHVabTh1YUdGelQzWmxjbXh2WVdSbFpFSnZiMnhsWVc1V1lXeDFaU0E4UFNBeEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRVQwMVFjbTl3WlhKMGVUb2dWbUZzZFdVZ1kyRnVJR0psSUc5dVpTQnZaaUJpYjI5c1pXRnVMQ0J2ZG1WeWJHOWhaR1ZrSUdKdmIyeGxZVzRzSUc5eUlDY2dLeUFuYm5WdFpYSnBZeUIyWVd4MVpTd2dZblYwSUc1dmRDQmhJR052YldKcGJtRjBhVzl1T2lBbGN5Y3NJSEJ5YjNCT1lXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lFUlBUVkJ5YjNCbGNuUjVMbWRsZEZCdmMzTnBZbXhsVTNSaGJtUmhjbVJPWVcxbFcyeHZkMlZ5UTJGelpXUmRJRDBnY0hKdmNFNWhiV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaEVUMDFCZEhSeWFXSjFkR1ZPWVcxbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2NtOXdUbUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdGMGRISnBZblYwWlU1aGJXVWdQU0JFVDAxQmRIUnlhV0oxZEdWT1lXMWxjMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0FnSUhCeWIzQmxjblI1U1c1bWJ5NWhkSFJ5YVdKMWRHVk9ZVzFsSUQwZ1lYUjBjbWxpZFhSbFRtRnRaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCRVQwMVFjbTl3WlhKMGVTNW5aWFJRYjNOemFXSnNaVk4wWVc1a1lYSmtUbUZ0WlZ0aGRIUnlhV0oxZEdWT1lXMWxYU0E5SUhCeWIzQk9ZVzFsTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHbG1JQ2hFVDAxQmRIUnlhV0oxZEdWT1lXMWxjM0JoWTJWekxtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQndjbTl3WlhKMGVVbHVabTh1WVhSMGNtbGlkWFJsVG1GdFpYTndZV05sSUQwZ1JFOU5RWFIwY21saWRYUmxUbUZ0WlhOd1lXTmxjMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaEVUMDFRY205d1pYSjBlVTVoYldWekxtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQndjbTl3WlhKMGVVbHVabTh1Y0hKdmNHVnlkSGxPWVcxbElEMGdSRTlOVUhKdmNHVnlkSGxPWVcxbGMxdHdjbTl3VG1GdFpWMDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoRVQwMU5kWFJoZEdsdmJrMWxkR2h2WkhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lIQnliM0JsY25SNVNXNW1ieTV0ZFhSaGRHbHZiazFsZEdodlpDQTlJRVJQVFUxMWRHRjBhVzl1VFdWMGFHOWtjMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNUxuQnliM0JsY25ScFpYTmJjSEp2Y0U1aGJXVmRJRDBnY0hKdmNHVnlkSGxKYm1adk8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlR0Y2JuWmhjaUJrWldaaGRXeDBWbUZzZFdWRFlXTm9aU0E5SUh0OU8xeHVYRzR2S2lwY2JpQXFJRVJQVFZCeWIzQmxjblI1SUdWNGNHOXlkSE1nYkc5dmEzVndJRzlpYW1WamRITWdkR2hoZENCallXNGdZbVVnZFhObFpDQnNhV3RsSUdaMWJtTjBhVzl1Y3pwY2JpQXFYRzRnS2lBZ0lENGdSRTlOVUhKdmNHVnlkSGt1YVhOV1lXeHBaRnNuYVdRblhWeHVJQ29nSUNCMGNuVmxYRzRnS2lBZ0lENGdSRTlOVUhKdmNHVnlkSGt1YVhOV1lXeHBaRnNuWm05dlltRnlKMTFjYmlBcUlDQWdkVzVrWldacGJtVmtYRzRnS2x4dUlDb2dRV3gwYUc5MVoyZ2dkR2hwY3lCdFlYa2dZbVVnWTI5dVpuVnphVzVuTENCcGRDQndaWEptYjNKdGN5QmlaWFIwWlhJZ2FXNGdaMlZ1WlhKaGJDNWNiaUFxWEc0Z0tpQkFjMlZsSUdoMGRIQTZMeTlxYzNCbGNtWXVZMjl0TDJ0bGVTMWxlR2x6ZEhOY2JpQXFJRUJ6WldVZ2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdmEyVjVMVzFwYzNOcGJtZGNiaUFxTDF4dWRtRnlJRVJQVFZCeWIzQmxjblI1SUQwZ2UxeHVYRzRnSUVsRVgwRlVWRkpKUWxWVVJWOU9RVTFGT2lBblpHRjBZUzF5WldGamRHbGtKeXhjYmx4dUlDQXZLaXBjYmlBZ0lDb2dUV0Z3SUdaeWIyMGdjSEp2Y0dWeWRIa2dYQ0p6ZEdGdVpHRnlaQ0J1WVcxbFhDSWdkRzhnWVc0Z2IySnFaV04wSUhkcGRHZ2dhVzVtYnlCaFltOTFkQ0JvYjNjZ2RHOGdjMlYwWEc0Z0lDQXFJSFJvWlNCd2NtOXdaWEowZVNCcGJpQjBhR1VnUkU5TkxpQkZZV05vSUc5aWFtVmpkQ0JqYjI1MFlXbHVjenBjYmlBZ0lDcGNiaUFnSUNvZ1lYUjBjbWxpZFhSbFRtRnRaVHBjYmlBZ0lDb2dJQ0JWYzJWa0lIZG9aVzRnY21WdVpHVnlhVzVuSUcxaGNtdDFjQ0J2Y2lCM2FYUm9JR0FxUVhSMGNtbGlkWFJsS0NsZ0xseHVJQ0FnS2lCaGRIUnlhV0oxZEdWT1lXMWxjM0JoWTJWY2JpQWdJQ29nY0hKdmNHVnlkSGxPWVcxbE9seHVJQ0FnS2lBZ0lGVnpaV1FnYjI0Z1JFOU5JRzV2WkdVZ2FXNXpkR0Z1WTJWekxpQW9WR2hwY3lCcGJtTnNkV1JsY3lCd2NtOXdaWEowYVdWeklIUm9ZWFFnYlhWMFlYUmxJR1IxWlNCMGIxeHVJQ0FnS2lBZ0lHVjRkR1Z5Ym1Gc0lHWmhZM1J2Y25NdUtWeHVJQ0FnS2lCdGRYUmhkR2x2YmsxbGRHaHZaRHBjYmlBZ0lDb2dJQ0JKWmlCdWIyNHRiblZzYkN3Z2RYTmxaQ0JwYm5OMFpXRmtJRzltSUhSb1pTQndjbTl3WlhKMGVTQnZjaUJnYzJWMFFYUjBjbWxpZFhSbEtDbGdJR0ZtZEdWeVhHNGdJQ0FxSUNBZ2FXNXBkR2xoYkNCeVpXNWtaWEl1WEc0Z0lDQXFJRzExYzNSVmMyVkJkSFJ5YVdKMWRHVTZYRzRnSUNBcUlDQWdWMmhsZEdobGNpQjBhR1VnY0hKdmNHVnlkSGtnYlhWemRDQmlaU0JoWTJObGMzTmxaQ0JoYm1RZ2JYVjBZWFJsWkNCMWMybHVaeUJnS2tGMGRISnBZblYwWlNncFlDNWNiaUFnSUNvZ0lDQW9WR2hwY3lCcGJtTnNkV1JsY3lCaGJubDBhR2x1WnlCMGFHRjBJR1poYVd4eklHQThjSEp2Y0U1aGJXVStJR2x1SUR4bGJHVnRaVzUwUG1BdUtWeHVJQ0FnS2lCdGRYTjBWWE5sVUhKdmNHVnlkSGs2WEc0Z0lDQXFJQ0FnVjJobGRHaGxjaUIwYUdVZ2NISnZjR1Z5ZEhrZ2JYVnpkQ0JpWlNCaFkyTmxjM05sWkNCaGJtUWdiWFYwWVhSbFpDQmhjeUJoYmlCdlltcGxZM1FnY0hKdmNHVnlkSGt1WEc0Z0lDQXFJR2hoYzFOcFpHVkZabVpsWTNSek9seHVJQ0FnS2lBZ0lGZG9aWFJvWlhJZ2IzSWdibTkwSUhObGRIUnBibWNnWVNCMllXeDFaU0JqWVhWelpYTWdjMmxrWlNCbFptWmxZM1J6SUhOMVkyZ2dZWE1nZEhKcFoyZGxjbWx1WjF4dUlDQWdLaUFnSUhKbGMyOTFjbU5sY3lCMGJ5QmlaU0JzYjJGa1pXUWdiM0lnZEdWNGRDQnpaV3hsWTNScGIyNGdZMmhoYm1kbGN5NGdTV1lnZEhKMVpTd2dkMlVnY21WaFpDQm1jbTl0WEc0Z0lDQXFJQ0FnZEdobElFUlBUU0JpWldadmNtVWdkWEJrWVhScGJtY2dkRzhnWlc1emRYSmxJSFJvWVhRZ2RHaGxJSFpoYkhWbElHbHpJRzl1YkhrZ2MyVjBJR2xtSUdsMElHaGhjMXh1SUNBZ0tpQWdJR05vWVc1blpXUXVYRzRnSUNBcUlHaGhjMEp2YjJ4bFlXNVdZV3gxWlRwY2JpQWdJQ29nSUNCWGFHVjBhR1Z5SUhSb1pTQndjbTl3WlhKMGVTQnphRzkxYkdRZ1ltVWdjbVZ0YjNabFpDQjNhR1Z1SUhObGRDQjBieUJoSUdaaGJITmxlU0IyWVd4MVpTNWNiaUFnSUNvZ2FHRnpUblZ0WlhKcFkxWmhiSFZsT2x4dUlDQWdLaUFnSUZkb1pYUm9aWElnZEdobElIQnliM0JsY25SNUlHMTFjM1FnWW1VZ2JuVnRaWEpwWXlCdmNpQndZWEp6WlNCaGN5QmhJRzUxYldWeWFXTWdZVzVrSUhOb2IzVnNaQ0JpWlZ4dUlDQWdLaUFnSUhKbGJXOTJaV1FnZDJobGJpQnpaWFFnZEc4Z1lTQm1ZV3h6WlhrZ2RtRnNkV1V1WEc0Z0lDQXFJR2hoYzFCdmMybDBhWFpsVG5WdFpYSnBZMVpoYkhWbE9seHVJQ0FnS2lBZ0lGZG9aWFJvWlhJZ2RHaGxJSEJ5YjNCbGNuUjVJRzExYzNRZ1ltVWdjRzl6YVhScGRtVWdiblZ0WlhKcFl5QnZjaUJ3WVhKelpTQmhjeUJoSUhCdmMybDBhWFpsWEc0Z0lDQXFJQ0FnYm5WdFpYSnBZeUJoYm1RZ2MyaHZkV3hrSUdKbElISmxiVzkyWldRZ2QyaGxiaUJ6WlhRZ2RHOGdZU0JtWVd4elpYa2dkbUZzZFdVdVhHNGdJQ0FxSUdoaGMwOTJaWEpzYjJGa1pXUkNiMjlzWldGdVZtRnNkV1U2WEc0Z0lDQXFJQ0FnVjJobGRHaGxjaUIwYUdVZ2NISnZjR1Z5ZEhrZ1kyRnVJR0psSUhWelpXUWdZWE1nWVNCbWJHRm5JR0Z6SUhkbGJHd2dZWE1nZDJsMGFDQmhJSFpoYkhWbExseHVJQ0FnS2lBZ0lGSmxiVzkyWldRZ2QyaGxiaUJ6ZEhKcFkzUnNlU0JsY1hWaGJDQjBieUJtWVd4elpUc2djSEpsYzJWdWRDQjNhWFJvYjNWMElHRWdkbUZzZFdVZ2QyaGxibHh1SUNBZ0tpQWdJSE4wY21samRHeDVJR1Z4ZFdGc0lIUnZJSFJ5ZFdVN0lIQnlaWE5sYm5RZ2QybDBhQ0JoSUhaaGJIVmxJRzkwYUdWeWQybHpaUzVjYmlBZ0lDb3ZYRzRnSUhCeWIzQmxjblJwWlhNNklIdDlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQk5ZWEJ3YVc1bklHWnliMjBnYkc5M1pYSmpZWE5sSUhCeWIzQmxjblI1SUc1aGJXVnpJSFJ2SUhSb1pTQndjbTl3WlhKc2VTQmpZWE5sWkNCMlpYSnphVzl1TENCMWMyVmtYRzRnSUNBcUlIUnZJSGRoY200Z2FXNGdkR2hsSUdOaGMyVWdiMllnYldsemMybHVaeUJ3Y205d1pYSjBhV1Z6TGlCQmRtRnBiR0ZpYkdVZ2IyNXNlU0JwYmlCZlgwUkZWbDlmTGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdaMlYwVUc5emMybGliR1ZUZEdGdVpHRnlaRTVoYldVNklIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUI3ZlNBNklHNTFiR3dzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUZzYkNCdlppQjBhR1VnYVhORGRYTjBiMjFCZEhSeWFXSjFkR1VvS1NCbWRXNWpkR2x2Ym5NZ2RHaGhkQ0JvWVhabElHSmxaVzRnYVc1cVpXTjBaV1F1WEc0Z0lDQXFMMXh1SUNCZmFYTkRkWE4wYjIxQmRIUnlhV0oxZEdWR2RXNWpkR2x2Ym5NNklGdGRMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRhR1ZqYTNNZ2QyaGxkR2hsY2lCaElIQnliM0JsY25SNUlHNWhiV1VnYVhNZ1lTQmpkWE4wYjIwZ1lYUjBjbWxpZFhSbExseHVJQ0FnS2lCQWJXVjBhRzlrWEc0Z0lDQXFMMXh1SUNCcGMwTjFjM1J2YlVGMGRISnBZblYwWlRvZ1puVnVZM1JwYjI0Z0tHRjBkSEpwWW5WMFpVNWhiV1VwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUVSUFRWQnliM0JsY25SNUxsOXBjME4xYzNSdmJVRjBkSEpwWW5WMFpVWjFibU4wYVc5dWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZG1GeUlHbHpRM1Z6ZEc5dFFYUjBjbWxpZFhSbFJtNGdQU0JFVDAxUWNtOXdaWEowZVM1ZmFYTkRkWE4wYjIxQmRIUnlhV0oxZEdWR2RXNWpkR2x2Ym5OYmFWMDdYRzRnSUNBZ0lDQnBaaUFvYVhORGRYTjBiMjFCZEhSeWFXSjFkR1ZHYmloaGRIUnlhV0oxZEdWT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJSFJvWlNCa1pXWmhkV3gwSUhCeWIzQmxjblI1SUhaaGJIVmxJR1p2Y2lCaElFUlBUU0J3Y205d1pYSjBlU0FvYVM1bExpd2dibTkwSUdGdVhHNGdJQ0FxSUdGMGRISnBZblYwWlNrdUlFMXZjM1FnWkdWbVlYVnNkQ0IyWVd4MVpYTWdZWEpsSUNjbklHOXlJR1poYkhObExDQmlkWFFnYm05MElHRnNiQzRnVjI5eWMyVWdlV1YwTEZ4dUlDQWdLaUJ6YjIxbElDaHBiaUJ3WVhKMGFXTjFiR0Z5TENCZ2RIbHdaV0FwSUhaaGNua2daR1Z3Wlc1a2FXNW5JRzl1SUhSb1pTQjBlWEJsSUc5bUlHVnNaVzFsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRlJQUkU4NklFbHpJR2wwSUdKbGRIUmxjaUIwYnlCbmNtRmlJR0ZzYkNCMGFHVWdjRzl6YzJsaWJHVWdjSEp2Y0dWeWRHbGxjeUIzYUdWdUlHTnlaV0YwYVc1bklHRnVYRzRnSUNBcUlHVnNaVzFsYm5RZ2RHOGdZWFp2YVdRZ2FHRjJhVzVuSUhSdklHTnlaV0YwWlNCMGFHVWdjMkZ0WlNCbGJHVnRaVzUwSUhSM2FXTmxQMXh1SUNBZ0tpOWNiaUFnWjJWMFJHVm1ZWFZzZEZaaGJIVmxSbTl5VUhKdmNHVnlkSGs2SUdaMWJtTjBhVzl1SUNodWIyUmxUbUZ0WlN3Z2NISnZjQ2tnZTF4dUlDQWdJSFpoY2lCdWIyUmxSR1ZtWVhWc2RITWdQU0JrWldaaGRXeDBWbUZzZFdWRFlXTm9aVnR1YjJSbFRtRnRaVjA3WEc0Z0lDQWdkbUZ5SUhSbGMzUkZiR1Z0Wlc1ME8xeHVJQ0FnSUdsbUlDZ2hibTlrWlVSbFptRjFiSFJ6S1NCN1hHNGdJQ0FnSUNCa1pXWmhkV3gwVm1Gc2RXVkRZV05vWlZ0dWIyUmxUbUZ0WlYwZ1BTQnViMlJsUkdWbVlYVnNkSE1nUFNCN2ZUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tDRW9jSEp2Y0NCcGJpQnViMlJsUkdWbVlYVnNkSE1wS1NCN1hHNGdJQ0FnSUNCMFpYTjBSV3hsYldWdWRDQTlJR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb2JtOWtaVTVoYldVcE8xeHVJQ0FnSUNBZ2JtOWtaVVJsWm1GMWJIUnpXM0J5YjNCZElEMGdkR1Z6ZEVWc1pXMWxiblJiY0hKdmNGMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1YjJSbFJHVm1ZWFZzZEhOYmNISnZjRjA3WEc0Z0lIMHNYRzVjYmlBZ2FXNXFaV04wYVc5dU9pQkVUMDFRY205d1pYSjBlVWx1YW1WamRHbHZibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQkVUMDFRY205d1pYSjBlVHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRE9NUHJvcGVydHlPcGVyYXRpb25zXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXInKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vLyBTaW1wbGlmaWVkIHN1YnNldFxudmFyIFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYID0gL15bYS16QS1aX11bXFx3XFwuXFwtXSokLztcbnZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG52YXIgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG5cbmZ1bmN0aW9uIGlzQXR0cmlidXRlTmFtZVNhZmUoYXR0cmlidXRlTmFtZSkge1xuICBpZiAodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYLnRlc3QoYXR0cmlidXRlTmFtZSkpIHtcbiAgICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlO1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2AnLCBhdHRyaWJ1dGVOYW1lKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgJiYgIXZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgJiYgaXNOYU4odmFsdWUpIHx8IHByb3BlcnR5SW5mby5oYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSAmJiB2YWx1ZSA8IDEgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IGZhbHNlO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcmVhY3RQcm9wcyA9IHtcbiAgICBjaGlsZHJlbjogdHJ1ZSxcbiAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogdHJ1ZSxcbiAgICBrZXk6IHRydWUsXG4gICAgcmVmOiB0cnVlXG4gIH07XG4gIHZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307XG5cbiAgdmFyIHdhcm5Vbmtub3duUHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChyZWFjdFByb3BzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHJlYWN0UHJvcHNbbmFtZV0gfHwgd2FybmVkUHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7XG4gICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gZGF0YS0qIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIGxvd2VyY2FzZTsgc3VnZ2VzdCB0aGUgbG93ZXJjYXNlIHZlcnNpb25cbiAgICB2YXIgc3RhbmRhcmROYW1lID0gRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobG93ZXJDYXNlZE5hbWUpID8gbG93ZXJDYXNlZE5hbWUgOiBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZS5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkgPyBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkTmFtZV0gOiBudWxsO1xuXG4gICAgLy8gRm9yIG5vdywgb25seSB3YXJuIHdoZW4gd2UgaGF2ZSBhIHN1Z2dlc3RlZCBjb3JyZWN0aW9uLiBUaGlzIHByZXZlbnRzXG4gICAgLy8gbG9nZ2luZyB0b28gbXVjaCB3aGVuIHVzaW5nIHRyYW5zZmVyUHJvcHNUby5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhzdGFuZGFyZE5hbWUgPT0gbnVsbCwgJ1Vua25vd24gRE9NIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JywgbmFtZSwgc3RhbmRhcmROYW1lKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMuXG4gKi9cbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgSUQgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBVbmVzY2FwZWQgSUQuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvcklEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcihpZCk7XG4gIH0sXG5cbiAgc2V0QXR0cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2RlLCBpZCkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FLCBpZCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9XCJcIic7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5Vbmtub3duUHJvcGVydHkobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKi9cbiAgc2V0VmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG4gICAgICBpZiAobXV0YXRpb25NZXRob2QpIHtcbiAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgbmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlQXR0cmlidXRlKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlO1xuICAgICAgICAvLyBgc2V0QXR0cmlidXRlYCB3aXRoIG9iamVjdHMgYmVjb21lcyBvbmx5IGBbb2JqZWN0XWAgaW4gSUU4LzksXG4gICAgICAgIC8vICgnJyArIHZhbHVlKSBtYWtlcyBpdCBvdXRwdXQgdGhlIGNvcnJlY3QgdG9TdHJpbmcoKS12YWx1ZS5cbiAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lO1xuICAgICAgICAvLyBNdXN0IGV4cGxpY2l0bHkgY2FzdCB2YWx1ZXMgZm9yIEhBU19TSURFX0VGRkVDVFMtcHJvcGVydGllcyB0byB0aGVcbiAgICAgICAgLy8gcHJvcGVydHkgdHlwZSBiZWZvcmUgY29tcGFyaW5nOyBvbmx5IGB2YWx1ZWAgZG9lcyBhbmQgaXMgc3RyaW5nLlxuICAgICAgICBpZiAoIXByb3BlcnR5SW5mby5oYXNTaWRlRWZmZWN0cyB8fCAnJyArIG5vZGVbcHJvcE5hbWVdICE9PSAnJyArIHZhbHVlKSB7XG4gICAgICAgICAgLy8gQ29udHJhcnkgdG8gYHNldEF0dHJpYnV0ZWAsIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBwcm9wZXJseVxuICAgICAgICAgIC8vIGB0b1N0cmluZ2BlZCBieSBJRTgvOS5cbiAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5Vbmtub3duUHJvcGVydHkobmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyArIHZhbHVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBkZWxldGVWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kO1xuICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7XG4gICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlQXR0cmlidXRlKSB7XG4gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7XG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBET01Qcm9wZXJ0eS5nZXREZWZhdWx0VmFsdWVGb3JQcm9wZXJ0eShub2RlLm5vZGVOYW1lLCBwcm9wTmFtZSk7XG4gICAgICAgIGlmICghcHJvcGVydHlJbmZvLmhhc1NpZGVFZmZlY3RzIHx8ICcnICsgbm9kZVtwcm9wTmFtZV0gIT09IGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuVW5rbm93blByb3BlcnR5KG5hbWUpO1xuICAgIH1cbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoRE9NUHJvcGVydHlPcGVyYXRpb25zLCAnRE9NUHJvcGVydHlPcGVyYXRpb25zJywge1xuICBzZXRWYWx1ZUZvclByb3BlcnR5OiAnc2V0VmFsdWVGb3JQcm9wZXJ0eScsXG4gIHNldFZhbHVlRm9yQXR0cmlidXRlOiAnc2V0VmFsdWVGb3JBdHRyaWJ1dGUnLFxuICBkZWxldGVWYWx1ZUZvclByb3BlcnR5OiAnZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eSdcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9ucztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTmNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnUkU5TlVISnZjR1Z5ZEhrZ1BTQnlaWEYxYVhKbEtDY3VMMFJQVFZCeWIzQmxjblI1SnlrN1hHNTJZWElnVW1WaFkzUlFaWEptSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZCbGNtWW5LVHRjYmx4dWRtRnlJSEYxYjNSbFFYUjBjbWxpZFhSbFZtRnNkV1ZHYjNKQ2NtOTNjMlZ5SUQwZ2NtVnhkV2x5WlNnbkxpOXhkVzkwWlVGMGRISnBZblYwWlZaaGJIVmxSbTl5UW5KdmQzTmxjaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JpOHZJRk5wYlhCc2FXWnBaV1FnYzNWaWMyVjBYRzUyWVhJZ1ZrRk1TVVJmUVZSVVVrbENWVlJGWDA1QlRVVmZVa1ZIUlZnZ1BTQXZYbHRoTFhwQkxWcGZYVnRjWEhkY1hDNWNYQzFkS2lRdk8xeHVkbUZ5SUdsc2JHVm5ZV3hCZEhSeWFXSjFkR1ZPWVcxbFEyRmphR1VnUFNCN2ZUdGNiblpoY2lCMllXeHBaR0YwWldSQmRIUnlhV0oxZEdWT1lXMWxRMkZqYUdVZ1BTQjdmVHRjYmx4dVpuVnVZM1JwYjI0Z2FYTkJkSFJ5YVdKMWRHVk9ZVzFsVTJGbVpTaGhkSFJ5YVdKMWRHVk9ZVzFsS1NCN1hHNGdJR2xtSUNoMllXeHBaR0YwWldSQmRIUnlhV0oxZEdWT1lXMWxRMkZqYUdVdWFHRnpUM2R1VUhKdmNHVnlkSGtvWVhSMGNtbGlkWFJsVG1GdFpTa3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVJQ0JwWmlBb2FXeHNaV2RoYkVGMGRISnBZblYwWlU1aGJXVkRZV05vWlM1b1lYTlBkMjVRY205d1pYSjBlU2hoZEhSeWFXSjFkR1ZPWVcxbEtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ2ZWeHVJQ0JwWmlBb1ZrRk1TVVJmUVZSVVVrbENWVlJGWDA1QlRVVmZVa1ZIUlZndWRHVnpkQ2hoZEhSeWFXSjFkR1ZPWVcxbEtTa2dlMXh1SUNBZ0lIWmhiR2xrWVhSbFpFRjBkSEpwWW5WMFpVNWhiV1ZEWVdOb1pWdGhkSFJ5YVdKMWRHVk9ZVzFsWFNBOUlIUnlkV1U3WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMWNiaUFnYVd4c1pXZGhiRUYwZEhKcFluVjBaVTVoYldWRFlXTm9aVnRoZEhSeWFXSjFkR1ZPWVcxbFhTQTlJSFJ5ZFdVN1hHNGdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuU1c1MllXeHBaQ0JoZEhSeWFXSjFkR1VnYm1GdFpUb2dZQ1Z6WUNjc0lHRjBkSEpwWW5WMFpVNWhiV1VwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhOb2IzVnNaRWxuYm05eVpWWmhiSFZsS0hCeWIzQmxjblI1U1c1bWJ5d2dkbUZzZFdVcElIdGNiaUFnY21WMGRYSnVJSFpoYkhWbElEMDlJRzUxYkd3Z2ZId2djSEp2Y0dWeWRIbEpibVp2TG1oaGMwSnZiMnhsWVc1V1lXeDFaU0FtSmlBaGRtRnNkV1VnZkh3Z2NISnZjR1Z5ZEhsSmJtWnZMbWhoYzA1MWJXVnlhV05XWVd4MVpTQW1KaUJwYzA1aFRpaDJZV3gxWlNrZ2ZId2djSEp2Y0dWeWRIbEpibVp2TG1oaGMxQnZjMmwwYVhabFRuVnRaWEpwWTFaaGJIVmxJQ1ltSUhaaGJIVmxJRHdnTVNCOGZDQndjbTl3WlhKMGVVbHVabTh1YUdGelQzWmxjbXh2WVdSbFpFSnZiMnhsWVc1V1lXeDFaU0FtSmlCMllXeDFaU0E5UFQwZ1ptRnNjMlU3WEc1OVhHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUhaaGNpQnlaV0ZqZEZCeWIzQnpJRDBnZTF4dUlDQWdJR05vYVd4a2NtVnVPaUIwY25WbExGeHVJQ0FnSUdSaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1PaUIwY25WbExGeHVJQ0FnSUd0bGVUb2dkSEoxWlN4Y2JpQWdJQ0J5WldZNklIUnlkV1ZjYmlBZ2ZUdGNiaUFnZG1GeUlIZGhjbTVsWkZCeWIzQmxjblJwWlhNZ1BTQjdmVHRjYmx4dUlDQjJZWElnZDJGeWJsVnVhMjV2ZDI1UWNtOXdaWEowZVNBOUlHWjFibU4wYVc5dUlDaHVZVzFsS1NCN1hHNGdJQ0FnYVdZZ0tISmxZV04wVUhKdmNITXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnSmlZZ2NtVmhZM1JRY205d2MxdHVZVzFsWFNCOGZDQjNZWEp1WldSUWNtOXdaWEowYVdWekxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBJQ1ltSUhkaGNtNWxaRkJ5YjNCbGNuUnBaWE5iYm1GdFpWMHBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCM1lYSnVaV1JRY205d1pYSjBhV1Z6VzI1aGJXVmRJRDBnZEhKMVpUdGNiaUFnSUNCMllYSWdiRzkzWlhKRFlYTmxaRTVoYldVZ1BTQnVZVzFsTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjYmlBZ0lDQXZMeUJrWVhSaExTb2dZWFIwY21saWRYUmxjeUJ6YUc5MWJHUWdZbVVnYkc5M1pYSmpZWE5sT3lCemRXZG5aWE4wSUhSb1pTQnNiM2RsY21OaGMyVWdkbVZ5YzJsdmJseHVJQ0FnSUhaaGNpQnpkR0Z1WkdGeVpFNWhiV1VnUFNCRVQwMVFjbTl3WlhKMGVTNXBjME4xYzNSdmJVRjBkSEpwWW5WMFpTaHNiM2RsY2tOaGMyVmtUbUZ0WlNrZ1B5QnNiM2RsY2tOaGMyVmtUbUZ0WlNBNklFUlBUVkJ5YjNCbGNuUjVMbWRsZEZCdmMzTnBZbXhsVTNSaGJtUmhjbVJPWVcxbExtaGhjMDkzYmxCeWIzQmxjblI1S0d4dmQyVnlRMkZ6WldST1lXMWxLU0EvSUVSUFRWQnliM0JsY25SNUxtZGxkRkJ2YzNOcFlteGxVM1JoYm1SaGNtUk9ZVzFsVzJ4dmQyVnlRMkZ6WldST1lXMWxYU0E2SUc1MWJHdzdYRzVjYmlBZ0lDQXZMeUJHYjNJZ2JtOTNMQ0J2Ym14NUlIZGhjbTRnZDJobGJpQjNaU0JvWVhabElHRWdjM1ZuWjJWemRHVmtJR052Y25KbFkzUnBiMjR1SUZSb2FYTWdjSEpsZG1WdWRITmNiaUFnSUNBdkx5QnNiMmRuYVc1bklIUnZieUJ0ZFdOb0lIZG9aVzRnZFhOcGJtY2dkSEpoYm5ObVpYSlFjbTl3YzFSdkxseHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktITjBZVzVrWVhKa1RtRnRaU0E5UFNCdWRXeHNMQ0FuVlc1cmJtOTNiaUJFVDAwZ2NISnZjR1Z5ZEhrZ0pYTXVJRVJwWkNCNWIzVWdiV1ZoYmlBbGN6OG5MQ0J1WVcxbExDQnpkR0Z1WkdGeVpFNWhiV1VwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5TzF4dWZWeHVYRzR2S2lwY2JpQXFJRTl3WlhKaGRHbHZibk1nWm05eUlHUmxZV3hwYm1jZ2QybDBhQ0JFVDAwZ2NISnZjR1Z5ZEdsbGN5NWNiaUFxTDF4dWRtRnlJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3lBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCdFlYSnJkWEFnWm05eUlIUm9aU0JKUkNCd2NtOXdaWEowZVM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRlZ1WlhOallYQmxaQ0JKUkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JOWVhKcmRYQWdjM1J5YVc1bkxseHVJQ0FnS2k5Y2JpQWdZM0psWVhSbFRXRnlhM1Z3Um05eVNVUTZJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJFVDAxUWNtOXdaWEowZVM1SlJGOUJWRlJTU1VKVlZFVmZUa0ZOUlNBcklDYzlKeUFySUhGMWIzUmxRWFIwY21saWRYUmxWbUZzZFdWR2IzSkNjbTkzYzJWeUtHbGtLVHRjYmlBZ2ZTeGNibHh1SUNCelpYUkJkSFJ5YVdKMWRHVkdiM0pKUkRvZ1puVnVZM1JwYjI0Z0tHNXZaR1VzSUdsa0tTQjdYRzRnSUNBZ2JtOWtaUzV6WlhSQmRIUnlhV0oxZEdVb1JFOU5VSEp2Y0dWeWRIa3VTVVJmUVZSVVVrbENWVlJGWDA1QlRVVXNJR2xrS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QnRZWEpyZFhBZ1ptOXlJR0VnY0hKdmNHVnlkSGt1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdWY2JpQWdJQ29nUUhKbGRIVnliaUI3UDNOMGNtbHVaMzBnVFdGeWEzVndJSE4wY21sdVp5d2diM0lnYm5Wc2JDQnBaaUIwYUdVZ2NISnZjR1Z5ZEhrZ2QyRnpJR2x1ZG1Gc2FXUXVYRzRnSUNBcUwxeHVJQ0JqY21WaGRHVk5ZWEpyZFhCR2IzSlFjbTl3WlhKMGVUb2dablZ1WTNScGIyNGdLRzVoYldVc0lIWmhiSFZsS1NCN1hHNGdJQ0FnZG1GeUlIQnliM0JsY25SNVNXNW1ieUE5SUVSUFRWQnliM0JsY25SNUxuQnliM0JsY25ScFpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnUHlCRVQwMVFjbTl3WlhKMGVTNXdjbTl3WlhKMGFXVnpXMjVoYldWZElEb2diblZzYkR0Y2JpQWdJQ0JwWmlBb2NISnZjR1Z5ZEhsSmJtWnZLU0I3WEc0Z0lDQWdJQ0JwWmlBb2MyaHZkV3hrU1dkdWIzSmxWbUZzZFdVb2NISnZjR1Z5ZEhsSmJtWnZMQ0IyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZG1GeUlHRjBkSEpwWW5WMFpVNWhiV1VnUFNCd2NtOXdaWEowZVVsdVptOHVZWFIwY21saWRYUmxUbUZ0WlR0Y2JpQWdJQ0FnSUdsbUlDaHdjbTl3WlhKMGVVbHVabTh1YUdGelFtOXZiR1ZoYmxaaGJIVmxJSHg4SUhCeWIzQmxjblI1U1c1bWJ5NW9ZWE5QZG1WeWJHOWhaR1ZrUW05dmJHVmhibFpoYkhWbElDWW1JSFpoYkhWbElEMDlQU0IwY25WbEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhkSFJ5YVdKMWRHVk9ZVzFsSUNzZ0p6MWNJbHdpSnp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJoZEhSeWFXSjFkR1ZPWVcxbElDc2dKejBuSUNzZ2NYVnZkR1ZCZEhSeWFXSjFkR1ZXWVd4MVpVWnZja0p5YjNkelpYSW9kbUZzZFdVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1JFOU5VSEp2Y0dWeWRIa3VhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVW9ibUZ0WlNrcElIdGNiaUFnSUNBZ0lHbG1JQ2gyWVd4MVpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQW5KenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnVZVzFsSUNzZ0p6MG5JQ3NnY1hWdmRHVkJkSFJ5YVdKMWRHVldZV3gxWlVadmNrSnliM2R6WlhJb2RtRnNkV1VwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2QyRnlibFZ1YTI1dmQyNVFjbTl3WlhKMGVTaHVZVzFsS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ2JXRnlhM1Z3SUdadmNpQmhJR04xYzNSdmJTQndjbTl3WlhKMGVTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzVoYldWY2JpQWdJQ29nUUhCaGNtRnRJSHNxZlNCMllXeDFaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFMWhjbXQxY0NCemRISnBibWNzSUc5eUlHVnRjSFI1SUhOMGNtbHVaeUJwWmlCMGFHVWdjSEp2Y0dWeWRIa2dkMkZ6SUdsdWRtRnNhV1F1WEc0Z0lDQXFMMXh1SUNCamNtVmhkR1ZOWVhKcmRYQkdiM0pEZFhOMGIyMUJkSFJ5YVdKMWRHVTZJR1oxYm1OMGFXOXVJQ2h1WVcxbExDQjJZV3gxWlNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5CZEhSeWFXSjFkR1ZPWVcxbFUyRm1aU2h1WVcxbEtTQjhmQ0IyWVd4MVpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0p5YzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1WVcxbElDc2dKejBuSUNzZ2NYVnZkR1ZCZEhSeWFXSjFkR1ZXWVd4MVpVWnZja0p5YjNkelpYSW9kbUZzZFdVcE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUWlhSeklIUm9aU0IyWVd4MVpTQm1iM0lnWVNCd2NtOXdaWEowZVNCdmJpQmhJRzV2WkdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnYm05a1pWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYm1GdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsWEc0Z0lDQXFMMXh1SUNCelpYUldZV3gxWlVadmNsQnliM0JsY25SNU9pQm1kVzVqZEdsdmJpQW9ibTlrWlN3Z2JtRnRaU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQjJZWElnY0hKdmNHVnlkSGxKYm1adklEMGdSRTlOVUhKdmNHVnlkSGt1Y0hKdmNHVnlkR2xsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQS9JRVJQVFZCeWIzQmxjblI1TG5CeWIzQmxjblJwWlhOYmJtRnRaVjBnT2lCdWRXeHNPMXh1SUNBZ0lHbG1JQ2h3Y205d1pYSjBlVWx1Wm04cElIdGNiaUFnSUNBZ0lIWmhjaUJ0ZFhSaGRHbHZiazFsZEdodlpDQTlJSEJ5YjNCbGNuUjVTVzVtYnk1dGRYUmhkR2x2YmsxbGRHaHZaRHRjYmlBZ0lDQWdJR2xtSUNodGRYUmhkR2x2YmsxbGRHaHZaQ2tnZTF4dUlDQWdJQ0FnSUNCdGRYUmhkR2x2YmsxbGRHaHZaQ2h1YjJSbExDQjJZV3gxWlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tITm9iM1ZzWkVsbmJtOXlaVlpoYkhWbEtIQnliM0JsY25SNVNXNW1ieXdnZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaR1ZzWlhSbFZtRnNkV1ZHYjNKUWNtOXdaWEowZVNodWIyUmxMQ0J1WVcxbEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9jSEp2Y0dWeWRIbEpibVp2TG0xMWMzUlZjMlZCZEhSeWFXSjFkR1VwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR0YwZEhKcFluVjBaVTVoYldVZ1BTQndjbTl3WlhKMGVVbHVabTh1WVhSMGNtbGlkWFJsVG1GdFpUdGNiaUFnSUNBZ0lDQWdkbUZ5SUc1aGJXVnpjR0ZqWlNBOUlIQnliM0JsY25SNVNXNW1ieTVoZEhSeWFXSjFkR1ZPWVcxbGMzQmhZMlU3WEc0Z0lDQWdJQ0FnSUM4dklHQnpaWFJCZEhSeWFXSjFkR1ZnSUhkcGRHZ2diMkpxWldOMGN5QmlaV052YldWeklHOXViSGtnWUZ0dlltcGxZM1JkWUNCcGJpQkpSVGd2T1N4Y2JpQWdJQ0FnSUNBZ0x5OGdLQ2NuSUNzZ2RtRnNkV1VwSUcxaGEyVnpJR2wwSUc5MWRIQjFkQ0IwYUdVZ1kyOXljbVZqZENCMGIxTjBjbWx1WnlncExYWmhiSFZsTGx4dUlDQWdJQ0FnSUNCcFppQW9ibUZ0WlhOd1lXTmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JtOWtaUzV6WlhSQmRIUnlhV0oxZEdWT1V5aHVZVzFsYzNCaFkyVXNJR0YwZEhKcFluVjBaVTVoYldVc0lDY25JQ3NnZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hCeWIzQmxjblI1U1c1bWJ5NW9ZWE5DYjI5c1pXRnVWbUZzZFdVZ2ZId2djSEp2Y0dWeWRIbEpibVp2TG1oaGMwOTJaWEpzYjJGa1pXUkNiMjlzWldGdVZtRnNkV1VnSmlZZ2RtRnNkV1VnUFQwOUlIUnlkV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsTG5ObGRFRjBkSEpwWW5WMFpTaGhkSFJ5YVdKMWRHVk9ZVzFsTENBbkp5azdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYm05a1pTNXpaWFJCZEhSeWFXSjFkR1VvWVhSMGNtbGlkWFJsVG1GdFpTd2dKeWNnS3lCMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQndjbTl3VG1GdFpTQTlJSEJ5YjNCbGNuUjVTVzVtYnk1d2NtOXdaWEowZVU1aGJXVTdYRzRnSUNBZ0lDQWdJQzh2SUUxMWMzUWdaWGh3YkdsamFYUnNlU0JqWVhOMElIWmhiSFZsY3lCbWIzSWdTRUZUWDFOSlJFVmZSVVpHUlVOVVV5MXdjbTl3WlhKMGFXVnpJSFJ2SUhSb1pWeHVJQ0FnSUNBZ0lDQXZMeUJ3Y205d1pYSjBlU0IwZVhCbElHSmxabTl5WlNCamIyMXdZWEpwYm1jN0lHOXViSGtnWUhaaGJIVmxZQ0JrYjJWeklHRnVaQ0JwY3lCemRISnBibWN1WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hjSEp2Y0dWeWRIbEpibVp2TG1oaGMxTnBaR1ZGWm1abFkzUnpJSHg4SUNjbklDc2dibTlrWlZ0d2NtOXdUbUZ0WlYwZ0lUMDlJQ2NuSUNzZ2RtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJEYjI1MGNtRnllU0IwYnlCZ2MyVjBRWFIwY21saWRYUmxZQ3dnYjJKcVpXTjBJSEJ5YjNCbGNuUnBaWE1nWVhKbElIQnliM0JsY214NVhHNGdJQ0FnSUNBZ0lDQWdMeThnWUhSdlUzUnlhVzVuWUdWa0lHSjVJRWxGT0M4NUxseHVJQ0FnSUNBZ0lDQWdJRzV2WkdWYmNISnZjRTVoYldWZElEMGdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tFUlBUVkJ5YjNCbGNuUjVMbWx6UTNWemRHOXRRWFIwY21saWRYUmxLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11YzJWMFZtRnNkV1ZHYjNKQmRIUnlhV0oxZEdVb2JtOWtaU3dnYm1GdFpTd2dkbUZzZFdVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkMkZ5YmxWdWEyNXZkMjVRY205d1pYSjBlU2h1WVcxbEtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdjMlYwVm1Gc2RXVkdiM0pCZEhSeWFXSjFkR1U2SUdaMWJtTjBhVzl1SUNodWIyUmxMQ0J1WVcxbExDQjJZV3gxWlNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5CZEhSeWFXSjFkR1ZPWVcxbFUyRm1aU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RtRnNkV1VnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYm05a1pTNXlaVzF2ZG1WQmRIUnlhV0oxZEdVb2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHNXZaR1V1YzJWMFFYUjBjbWxpZFhSbEtHNWhiV1VzSUNjbklDc2dkbUZzZFdVcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1ZzWlhSbGN5QjBhR1VnZG1Gc2RXVWdabTl5SUdFZ2NISnZjR1Z5ZEhrZ2IyNGdZU0J1YjJSbExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUc1dlpHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1aGJXVmNiaUFnSUNvdlhHNGdJR1JsYkdWMFpWWmhiSFZsUm05eVVISnZjR1Z5ZEhrNklHWjFibU4wYVc5dUlDaHViMlJsTENCdVlXMWxLU0I3WEc0Z0lDQWdkbUZ5SUhCeWIzQmxjblI1U1c1bWJ5QTlJRVJQVFZCeWIzQmxjblI1TG5CeWIzQmxjblJwWlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa2dQeUJFVDAxUWNtOXdaWEowZVM1d2NtOXdaWEowYVdWelcyNWhiV1ZkSURvZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvY0hKdmNHVnlkSGxKYm1adktTQjdYRzRnSUNBZ0lDQjJZWElnYlhWMFlYUnBiMjVOWlhSb2IyUWdQU0J3Y205d1pYSjBlVWx1Wm04dWJYVjBZWFJwYjI1TlpYUm9iMlE3WEc0Z0lDQWdJQ0JwWmlBb2JYVjBZWFJwYjI1TlpYUm9iMlFwSUh0Y2JpQWdJQ0FnSUNBZ2JYVjBZWFJwYjI1TlpYUm9iMlFvYm05a1pTd2dkVzVrWldacGJtVmtLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvY0hKdmNHVnlkSGxKYm1adkxtMTFjM1JWYzJWQmRIUnlhV0oxZEdVcElIdGNiaUFnSUNBZ0lDQWdibTlrWlM1eVpXMXZkbVZCZEhSeWFXSjFkR1VvY0hKdmNHVnlkSGxKYm1adkxtRjBkSEpwWW5WMFpVNWhiV1VwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIQnliM0JPWVcxbElEMGdjSEp2Y0dWeWRIbEpibVp2TG5CeWIzQmxjblI1VG1GdFpUdGNiaUFnSUNBZ0lDQWdkbUZ5SUdSbFptRjFiSFJXWVd4MVpTQTlJRVJQVFZCeWIzQmxjblI1TG1kbGRFUmxabUYxYkhSV1lXeDFaVVp2Y2xCeWIzQmxjblI1S0c1dlpHVXVibTlrWlU1aGJXVXNJSEJ5YjNCT1lXMWxLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRndjbTl3WlhKMGVVbHVabTh1YUdGelUybGtaVVZtWm1WamRITWdmSHdnSnljZ0t5QnViMlJsVzNCeWIzQk9ZVzFsWFNBaFBUMGdaR1ZtWVhWc2RGWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdibTlrWlZ0d2NtOXdUbUZ0WlYwZ1BTQmtaV1poZFd4MFZtRnNkV1U3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0VSUFRWQnliM0JsY25SNUxtbHpRM1Z6ZEc5dFFYUjBjbWxpZFhSbEtHNWhiV1VwS1NCN1hHNGdJQ0FnSUNCdWIyUmxMbkpsYlc5MlpVRjBkSEpwWW5WMFpTaHVZVzFsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIZGhjbTVWYm10dWIzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYm4wN1hHNWNibEpsWVdOMFVHVnlaaTV0WldGemRYSmxUV1YwYUc5a2N5aEVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk1zSUNkRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTW5MQ0I3WEc0Z0lITmxkRlpoYkhWbFJtOXlVSEp2Y0dWeWRIazZJQ2R6WlhSV1lXeDFaVVp2Y2xCeWIzQmxjblI1Snl4Y2JpQWdjMlYwVm1Gc2RXVkdiM0pCZEhSeWFXSjFkR1U2SUNkelpYUldZV3gxWlVadmNrRjBkSEpwWW5WMFpTY3NYRzRnSUdSbGJHVjBaVlpoYkhWbFJtOXlVSEp2Y0dWeWRIazZJQ2RrWld4bGRHVldZV3gxWlVadmNsQnliM0JsY25SNUoxeHVmU2s3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRGFuZ2VyXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cCA9IHJlcXVpcmUoJ2ZianMvbGliL2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCcpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZ2V0TWFya3VwV3JhcCA9IHJlcXVpcmUoJ2ZianMvbGliL2dldE1hcmt1cFdyYXAnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIE9QRU5fVEFHX05BTUVfRVhQID0gL14oPFteIFxcLz5dKykvO1xudmFyIFJFU1VMVF9JTkRFWF9BVFRSID0gJ2RhdGEtZGFuZ2VyLWluZGV4JztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYG5vZGVOYW1lYCBmcm9tIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAqXG4gKiBOT1RFOiBFeHRyYWN0aW5nIHRoZSBgbm9kZU5hbWVgIGRvZXMgbm90IHJlcXVpcmUgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hcbiAqIGJlY2F1c2Ugd2UgbWFrZSBhc3N1bXB0aW9ucyBhYm91dCBSZWFjdC1nZW5lcmF0ZWQgbWFya3VwIChpLmUuIHRoZXJlIGFyZSBub1xuICogc3BhY2VzIHN1cnJvdW5kaW5nIHRoZSBvcGVuaW5nIHRhZyBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZSkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuICogQHJldHVybiB7c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1cC5cbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vZXh0cmFjdC1ub2RlbmFtZVxuICovXG5mdW5jdGlvbiBnZXROb2RlTmFtZShtYXJrdXApIHtcbiAgcmV0dXJuIG1hcmt1cC5zdWJzdHJpbmcoMSwgbWFya3VwLmluZGV4T2YoJyAnKSk7XG59XG5cbnZhciBEYW5nZXIgPSB7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgbWFya3VwIGludG8gYW4gYXJyYXkgb2Ygbm9kZXMuIFRoZSBtYXJrdXAgaXMgZXhwZWN0ZWQgdG8gcmVuZGVyXG4gICAqIGludG8gYSBsaXN0IG9mIHJvb3Qgbm9kZXMuIEFsc28sIHRoZSBsZW5ndGggb2YgYHJlc3VsdExpc3RgIGFuZFxuICAgKiBgbWFya3VwTGlzdGAgc2hvdWxkIGJlIHRoZSBzYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PHN0cmluZz59IG1hcmt1cExpc3QgTGlzdCBvZiBtYXJrdXAgc3RyaW5ncyB0byByZW5kZXIuXG4gICAqIEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnQ+fSBMaXN0IG9mIHJlbmRlcmVkIG5vZGVzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdlcm91c2x5UmVuZGVyTWFya3VwOiBmdW5jdGlvbiAobWFya3VwTGlzdCkge1xuICAgICFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZW5kZXJNYXJrdXAoLi4uKTogQ2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIgJyArICd0aHJlYWQuIE1ha2Ugc3VyZSBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBhcmUgYXZhaWxhYmxlIGdsb2JhbGx5ICcgKyAnYmVmb3JlIHJlcXVpcmluZyBSZWFjdCB3aGVuIHVuaXQgdGVzdGluZyBvciB1c2UgJyArICdSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZyBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIG5vZGVOYW1lO1xuICAgIHZhciBtYXJrdXBCeU5vZGVOYW1lID0ge307XG4gICAgLy8gR3JvdXAgbWFya3VwIGJ5IGBub2RlTmFtZWAgaWYgYSB3cmFwIGlzIG5lY2Vzc2FyeSwgZWxzZSBieSAnKicuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrdXBMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAhbWFya3VwTGlzdFtpXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlbmRlck1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1cC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBub2RlTmFtZSA9IGdldE5vZGVOYW1lKG1hcmt1cExpc3RbaV0pO1xuICAgICAgbm9kZU5hbWUgPSBnZXRNYXJrdXBXcmFwKG5vZGVOYW1lKSA/IG5vZGVOYW1lIDogJyonO1xuICAgICAgbWFya3VwQnlOb2RlTmFtZVtub2RlTmFtZV0gPSBtYXJrdXBCeU5vZGVOYW1lW25vZGVOYW1lXSB8fCBbXTtcbiAgICAgIG1hcmt1cEJ5Tm9kZU5hbWVbbm9kZU5hbWVdW2ldID0gbWFya3VwTGlzdFtpXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdExpc3QgPSBbXTtcbiAgICB2YXIgcmVzdWx0TGlzdEFzc2lnbm1lbnRDb3VudCA9IDA7XG4gICAgZm9yIChub2RlTmFtZSBpbiBtYXJrdXBCeU5vZGVOYW1lKSB7XG4gICAgICBpZiAoIW1hcmt1cEJ5Tm9kZU5hbWUuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIG1hcmt1cExpc3RCeU5vZGVOYW1lID0gbWFya3VwQnlOb2RlTmFtZVtub2RlTmFtZV07XG5cbiAgICAgIC8vIFRoaXMgZm9yLWluIGxvb3Agc2tpcHMgdGhlIGhvbGVzIG9mIHRoZSBzcGFyc2UgYXJyYXkuIFRoZSBvcmRlciBvZlxuICAgICAgLy8gaXRlcmF0aW9uIHNob3VsZCBmb2xsb3cgdGhlIG9yZGVyIG9mIGFzc2lnbm1lbnQsIHdoaWNoIGhhcHBlbnMgdG8gbWF0Y2hcbiAgICAgIC8vIG51bWVyaWNhbCBpbmRleCBvcmRlciwgYnV0IHdlIGRvbid0IHJlbHkgb24gdGhhdC5cbiAgICAgIHZhciByZXN1bHRJbmRleDtcbiAgICAgIGZvciAocmVzdWx0SW5kZXggaW4gbWFya3VwTGlzdEJ5Tm9kZU5hbWUpIHtcbiAgICAgICAgaWYgKG1hcmt1cExpc3RCeU5vZGVOYW1lLmhhc093blByb3BlcnR5KHJlc3VsdEluZGV4KSkge1xuICAgICAgICAgIHZhciBtYXJrdXAgPSBtYXJrdXBMaXN0QnlOb2RlTmFtZVtyZXN1bHRJbmRleF07XG5cbiAgICAgICAgICAvLyBQdXNoIHRoZSByZXF1ZXN0ZWQgbWFya3VwIHdpdGggYW4gYWRkaXRpb25hbCBSRVNVTFRfSU5ERVhfQVRUUlxuICAgICAgICAgIC8vIGF0dHJpYnV0ZS4gIElmIHRoZSBtYXJrdXAgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIDwgY2hhcmFjdGVyLCBpdFxuICAgICAgICAgIC8vIHdpbGwgYmUgZGlzY2FyZGVkIGJlbG93ICh3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbnNvbGUuZXJyb3IpLlxuICAgICAgICAgIG1hcmt1cExpc3RCeU5vZGVOYW1lW3Jlc3VsdEluZGV4XSA9IG1hcmt1cC5yZXBsYWNlKE9QRU5fVEFHX05BTUVfRVhQLFxuICAgICAgICAgIC8vIFRoaXMgaW5kZXggd2lsbCBiZSBwYXJzZWQgYmFjayBvdXQgYmVsb3cuXG4gICAgICAgICAgJyQxICcgKyBSRVNVTFRfSU5ERVhfQVRUUiArICc9XCInICsgcmVzdWx0SW5kZXggKyAnXCIgJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVuZGVyIGVhY2ggZ3JvdXAgb2YgbWFya3VwIHdpdGggc2ltaWxhciB3cmFwcGluZyBgbm9kZU5hbWVgLlxuICAgICAgdmFyIHJlbmRlck5vZGVzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cExpc3RCeU5vZGVOYW1lLmpvaW4oJycpLCBlbXB0eUZ1bmN0aW9uIC8vIERvIG5vdGhpbmcgc3BlY2lhbCB3aXRoIDxzY3JpcHQ+IHRhZ3MuXG4gICAgICApO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlbmRlck5vZGVzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIHZhciByZW5kZXJOb2RlID0gcmVuZGVyTm9kZXNbal07XG4gICAgICAgIGlmIChyZW5kZXJOb2RlLmhhc0F0dHJpYnV0ZSAmJiByZW5kZXJOb2RlLmhhc0F0dHJpYnV0ZShSRVNVTFRfSU5ERVhfQVRUUikpIHtcblxuICAgICAgICAgIHJlc3VsdEluZGV4ID0gK3JlbmRlck5vZGUuZ2V0QXR0cmlidXRlKFJFU1VMVF9JTkRFWF9BVFRSKTtcbiAgICAgICAgICByZW5kZXJOb2RlLnJlbW92ZUF0dHJpYnV0ZShSRVNVTFRfSU5ERVhfQVRUUik7XG5cbiAgICAgICAgICAhIXJlc3VsdExpc3QuaGFzT3duUHJvcGVydHkocmVzdWx0SW5kZXgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RhbmdlcjogQXNzaWduaW5nIHRvIGFuIGFscmVhZHktb2NjdXBpZWQgcmVzdWx0IGluZGV4LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHJlc3VsdExpc3RbcmVzdWx0SW5kZXhdID0gcmVuZGVyTm9kZTtcblxuICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG1hdGNoIHJlc3VsdExpc3QubGVuZ3RoIGFuZCBtYXJrdXBMaXN0Lmxlbmd0aCB3aGVuXG4gICAgICAgICAgLy8gd2UncmUgZG9uZS5cbiAgICAgICAgICByZXN1bHRMaXN0QXNzaWdubWVudENvdW50ICs9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0RhbmdlcjogRGlzY2FyZGluZyB1bmV4cGVjdGVkIG5vZGU6JywgcmVuZGVyTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHRob3VnaCByZXN1bHRMaXN0IHdhcyBwb3B1bGF0ZWQgb3V0IG9mIG9yZGVyLCBpdCBzaG91bGQgbm93IGJlIGEgZGVuc2VcbiAgICAvLyBhcnJheS5cbiAgICAhKHJlc3VsdExpc3RBc3NpZ25tZW50Q291bnQgPT09IHJlc3VsdExpc3QubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdEYW5nZXI6IERpZCBub3QgYXNzaWduIHRvIGV2ZXJ5IGluZGV4IG9mIHJlc3VsdExpc3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgIShyZXN1bHRMaXN0Lmxlbmd0aCA9PT0gbWFya3VwTGlzdC5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RhbmdlcjogRXhwZWN0ZWQgbWFya3VwIHRvIHJlbmRlciAlcyBub2RlcywgYnV0IHJlbmRlcmVkICVzLicsIG1hcmt1cExpc3QubGVuZ3RoLCByZXN1bHRMaXN0Lmxlbmd0aCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHJlc3VsdExpc3Q7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzXG4gICAqIHBhcmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hpbGQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXApIHtcbiAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgJyArICd3b3JrZXIgdGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSAnICsgJ2dsb2JhbGx5IGJlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0IHRlc3Rpbmcgb3IgdXNlICcgKyAnUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgIW1hcmt1cCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1cC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgIShvbGRDaGlsZC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdodG1sJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxhY2UgbWFya3VwIG9mIHRoZSAnICsgJzxodG1sPiBub2RlLiBUaGlzIGlzIGJlY2F1c2UgYnJvd3NlciBxdWlya3MgbWFrZSB0aGlzIHVucmVsaWFibGUgJyArICdhbmQvb3Igc2xvdy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSAnICsgJ3NlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBuZXdDaGlsZDtcbiAgICBpZiAodHlwZW9mIG1hcmt1cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5ld0NoaWxkID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgZW1wdHlGdW5jdGlvbilbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0NoaWxkID0gbWFya3VwO1xuICAgIH1cbiAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGFuZ2VyO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJHRnVaMlZ5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRVJoYm1kbGNseHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwwVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBKeWs3WEc1Y2JuWmhjaUJqY21WaGRHVk9iMlJsYzBaeWIyMU5ZWEpyZFhBZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOWpjbVZoZEdWT2IyUmxjMFp5YjIxTllYSnJkWEFuS1R0Y2JuWmhjaUJsYlhCMGVVWjFibU4wYVc5dUlEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZaVzF3ZEhsR2RXNWpkR2x2YmljcE8xeHVkbUZ5SUdkbGRFMWhjbXQxY0ZkeVlYQWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTluWlhSTllYSnJkWEJYY21Gd0p5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JuWmhjaUJQVUVWT1gxUkJSMTlPUVUxRlgwVllVQ0E5SUM5ZUtEeGJYaUJjWEM4K1hTc3BMenRjYm5aaGNpQlNSVk5WVEZSZlNVNUVSVmhmUVZSVVVpQTlJQ2RrWVhSaExXUmhibWRsY2kxcGJtUmxlQ2M3WEc1Y2JpOHFLbHh1SUNvZ1JYaDBjbUZqZEhNZ2RHaGxJR0J1YjJSbFRtRnRaV0FnWm5KdmJTQmhJSE4wY21sdVp5QnZaaUJ0WVhKcmRYQXVYRzRnS2x4dUlDb2dUazlVUlRvZ1JYaDBjbUZqZEdsdVp5QjBhR1VnWUc1dlpHVk9ZVzFsWUNCa2IyVnpJRzV2ZENCeVpYRjFhWEpsSUdFZ2NtVm5kV3hoY2lCbGVIQnlaWE56YVc5dUlHMWhkR05vWEc0Z0tpQmlaV05oZFhObElIZGxJRzFoYTJVZ1lYTnpkVzF3ZEdsdmJuTWdZV0p2ZFhRZ1VtVmhZM1F0WjJWdVpYSmhkR1ZrSUcxaGNtdDFjQ0FvYVM1bExpQjBhR1Z5WlNCaGNtVWdibTljYmlBcUlITndZV05sY3lCemRYSnliM1Z1WkdsdVp5QjBhR1VnYjNCbGJtbHVaeUIwWVdjZ1lXNWtJSFJvWlhKbElHbHpJR0YwSUd4bFlYTjBJRzl1WlNCaGRIUnlhV0oxZEdVcExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFlYSnJkWEFnVTNSeWFXNW5JRzltSUcxaGNtdDFjQzVjYmlBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ1RtOWtaU0J1WVcxbElHOW1JSFJvWlNCemRYQndiR2xsWkNCdFlYSnJkWEF1WEc0Z0tpQkFjMlZsSUdoMGRIQTZMeTlxYzNCbGNtWXVZMjl0TDJWNGRISmhZM1F0Ym05a1pXNWhiV1ZjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwVG05a1pVNWhiV1VvYldGeWEzVndLU0I3WEc0Z0lISmxkSFZ5YmlCdFlYSnJkWEF1YzNWaWMzUnlhVzVuS0RFc0lHMWhjbXQxY0M1cGJtUmxlRTltS0NjZ0p5a3BPMXh1ZlZ4dVhHNTJZWElnUkdGdVoyVnlJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlc1a1pYSnpJRzFoY210MWNDQnBiblJ2SUdGdUlHRnljbUY1SUc5bUlHNXZaR1Z6TGlCVWFHVWdiV0Z5YTNWd0lHbHpJR1Y0Y0dWamRHVmtJSFJ2SUhKbGJtUmxjbHh1SUNBZ0tpQnBiblJ2SUdFZ2JHbHpkQ0J2WmlCeWIyOTBJRzV2WkdWekxpQkJiSE52TENCMGFHVWdiR1Z1WjNSb0lHOW1JR0J5WlhOMWJIUk1hWE4wWUNCaGJtUmNiaUFnSUNvZ1lHMWhjbXQxY0V4cGMzUmdJSE5vYjNWc1pDQmlaU0IwYUdVZ2MyRnRaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0aGNuSmhlVHh6ZEhKcGJtYytmU0J0WVhKcmRYQk1hWE4wSUV4cGMzUWdiMllnYldGeWEzVndJSE4wY21sdVozTWdkRzhnY21WdVpHVnlMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhjbkpoZVR4RVQwMUZiR1Z0Wlc1MFBuMGdUR2x6ZENCdlppQnlaVzVrWlhKbFpDQnViMlJsY3k1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCa1lXNW5aWEp2ZFhOc2VWSmxibVJsY2sxaGNtdDFjRG9nWm5WdVkzUnBiMjRnS0cxaGNtdDFjRXhwYzNRcElIdGNiaUFnSUNBaFJYaGxZM1YwYVc5dVJXNTJhWEp2Ym0xbGJuUXVZMkZ1VlhObFJFOU5JRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyUmhibWRsY205MWMyeDVVbVZ1WkdWeVRXRnlhM1Z3S0M0dUxpazZJRU5oYm01dmRDQnlaVzVrWlhJZ2JXRnlhM1Z3SUdsdUlHRWdkMjl5YTJWeUlDY2dLeUFuZEdoeVpXRmtMaUJOWVd0bElITjFjbVVnWUhkcGJtUnZkMkFnWVc1a0lHQmtiMk4xYldWdWRHQWdZWEpsSUdGMllXbHNZV0pzWlNCbmJHOWlZV3hzZVNBbklDc2dKMkpsWm05eVpTQnlaWEYxYVhKcGJtY2dVbVZoWTNRZ2QyaGxiaUIxYm1sMElIUmxjM1JwYm1jZ2IzSWdkWE5sSUNjZ0t5QW5VbVZoWTNSRVQwMVRaWEoyWlhJdWNtVnVaR1Z5Vkc5VGRISnBibWNnWm05eUlITmxjblpsY2lCeVpXNWtaWEpwYm1jdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSFpoY2lCdWIyUmxUbUZ0WlR0Y2JpQWdJQ0IyWVhJZ2JXRnlhM1Z3UW5sT2IyUmxUbUZ0WlNBOUlIdDlPMXh1SUNBZ0lDOHZJRWR5YjNWd0lHMWhjbXQxY0NCaWVTQmdibTlrWlU1aGJXVmdJR2xtSUdFZ2QzSmhjQ0JwY3lCdVpXTmxjM05oY25rc0lHVnNjMlVnWW5rZ0p5b25MbHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diV0Z5YTNWd1RHbHpkQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lXMWhjbXQxY0V4cGMzUmJhVjBnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5aR0Z1WjJWeWIzVnpiSGxTWlc1a1pYSk5ZWEpyZFhBb0xpNHVLVG9nVFdsemMybHVaeUJ0WVhKcmRYQXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2JtOWtaVTVoYldVZ1BTQm5aWFJPYjJSbFRtRnRaU2h0WVhKcmRYQk1hWE4wVzJsZEtUdGNiaUFnSUNBZ0lHNXZaR1ZPWVcxbElEMGdaMlYwVFdGeWEzVndWM0poY0NodWIyUmxUbUZ0WlNrZ1B5QnViMlJsVG1GdFpTQTZJQ2NxSnp0Y2JpQWdJQ0FnSUcxaGNtdDFjRUo1VG05a1pVNWhiV1ZiYm05a1pVNWhiV1ZkSUQwZ2JXRnlhM1Z3UW5sT2IyUmxUbUZ0WlZ0dWIyUmxUbUZ0WlYwZ2ZId2dXMTA3WEc0Z0lDQWdJQ0J0WVhKcmRYQkNlVTV2WkdWT1lXMWxXMjV2WkdWT1lXMWxYVnRwWFNBOUlHMWhjbXQxY0V4cGMzUmJhVjA3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJ5WlhOMWJIUk1hWE4wSUQwZ1cxMDdYRzRnSUNBZ2RtRnlJSEpsYzNWc2RFeHBjM1JCYzNOcFoyNXRaVzUwUTI5MWJuUWdQU0F3TzF4dUlDQWdJR1p2Y2lBb2JtOWtaVTVoYldVZ2FXNGdiV0Z5YTNWd1FubE9iMlJsVG1GdFpTa2dlMXh1SUNBZ0lDQWdhV1lnS0NGdFlYSnJkWEJDZVU1dlpHVk9ZVzFsTG1oaGMwOTNibEJ5YjNCbGNuUjVLRzV2WkdWT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQnRZWEpyZFhCTWFYTjBRbmxPYjJSbFRtRnRaU0E5SUcxaGNtdDFjRUo1VG05a1pVNWhiV1ZiYm05a1pVNWhiV1ZkTzF4dVhHNGdJQ0FnSUNBdkx5QlVhR2x6SUdadmNpMXBiaUJzYjI5d0lITnJhWEJ6SUhSb1pTQm9iMnhsY3lCdlppQjBhR1VnYzNCaGNuTmxJR0Z5Y21GNUxpQlVhR1VnYjNKa1pYSWdiMlpjYmlBZ0lDQWdJQzh2SUdsMFpYSmhkR2x2YmlCemFHOTFiR1FnWm05c2JHOTNJSFJvWlNCdmNtUmxjaUJ2WmlCaGMzTnBaMjV0Wlc1MExDQjNhR2xqYUNCb1lYQndaVzV6SUhSdklHMWhkR05vWEc0Z0lDQWdJQ0F2THlCdWRXMWxjbWxqWVd3Z2FXNWtaWGdnYjNKa1pYSXNJR0oxZENCM1pTQmtiMjRuZENCeVpXeDVJRzl1SUhSb1lYUXVYRzRnSUNBZ0lDQjJZWElnY21WemRXeDBTVzVrWlhnN1hHNGdJQ0FnSUNCbWIzSWdLSEpsYzNWc2RFbHVaR1Y0SUdsdUlHMWhjbXQxY0V4cGMzUkNlVTV2WkdWT1lXMWxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRZWEpyZFhCTWFYTjBRbmxPYjJSbFRtRnRaUzVvWVhOUGQyNVFjbTl3WlhKMGVTaHlaWE4xYkhSSmJtUmxlQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnYldGeWEzVndJRDBnYldGeWEzVndUR2x6ZEVKNVRtOWtaVTVoYldWYmNtVnpkV3gwU1c1a1pYaGRPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdVSFZ6YUNCMGFHVWdjbVZ4ZFdWemRHVmtJRzFoY210MWNDQjNhWFJvSUdGdUlHRmtaR2wwYVc5dVlXd2dVa1ZUVlV4VVgwbE9SRVZZWDBGVVZGSmNiaUFnSUNBZ0lDQWdJQ0F2THlCaGRIUnlhV0oxZEdVdUlDQkpaaUIwYUdVZ2JXRnlhM1Z3SUdSdlpYTWdibTkwSUhOMFlYSjBJSGRwZEdnZ1lTQThJR05vWVhKaFkzUmxjaXdnYVhSY2JpQWdJQ0FnSUNBZ0lDQXZMeUIzYVd4c0lHSmxJR1JwYzJOaGNtUmxaQ0JpWld4dmR5QW9kMmwwYUNCaGJpQmhjSEJ5YjNCeWFXRjBaU0JqYjI1emIyeGxMbVZ5Y205eUtTNWNiaUFnSUNBZ0lDQWdJQ0J0WVhKcmRYQk1hWE4wUW5sT2IyUmxUbUZ0WlZ0eVpYTjFiSFJKYm1SbGVGMGdQU0J0WVhKcmRYQXVjbVZ3YkdGalpTaFBVRVZPWDFSQlIxOU9RVTFGWDBWWVVDeGNiaUFnSUNBZ0lDQWdJQ0F2THlCVWFHbHpJR2x1WkdWNElIZHBiR3dnWW1VZ2NHRnljMlZrSUdKaFkyc2diM1YwSUdKbGJHOTNMbHh1SUNBZ0lDQWdJQ0FnSUNja01TQW5JQ3NnVWtWVFZVeFVYMGxPUkVWWVgwRlVWRklnS3lBblBWd2lKeUFySUhKbGMzVnNkRWx1WkdWNElDc2dKMXdpSUNjcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUZKbGJtUmxjaUJsWVdOb0lHZHliM1Z3SUc5bUlHMWhjbXQxY0NCM2FYUm9JSE5wYldsc1lYSWdkM0poY0hCcGJtY2dZRzV2WkdWT1lXMWxZQzVjYmlBZ0lDQWdJSFpoY2lCeVpXNWtaWEpPYjJSbGN5QTlJR055WldGMFpVNXZaR1Z6Um5KdmJVMWhjbXQxY0NodFlYSnJkWEJNYVhOMFFubE9iMlJsVG1GdFpTNXFiMmx1S0NjbktTd2daVzF3ZEhsR2RXNWpkR2x2YmlBdkx5QkVieUJ1YjNSb2FXNW5JSE53WldOcFlXd2dkMmwwYUNBOGMyTnlhWEIwUGlCMFlXZHpMbHh1SUNBZ0lDQWdLVHRjYmx4dUlDQWdJQ0FnWm05eUlDaDJZWElnYWlBOUlEQTdJR29nUENCeVpXNWtaWEpPYjJSbGN5NXNaVzVuZEdnN0lDc3JhaWtnZTF4dUlDQWdJQ0FnSUNCMllYSWdjbVZ1WkdWeVRtOWtaU0E5SUhKbGJtUmxjazV2WkdWelcycGRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnVaR1Z5VG05a1pTNW9ZWE5CZEhSeWFXSjFkR1VnSmlZZ2NtVnVaR1Z5VG05a1pTNW9ZWE5CZEhSeWFXSjFkR1VvVWtWVFZVeFVYMGxPUkVWWVgwRlVWRklwS1NCN1hHNWNiaUFnSUNBZ0lDQWdJQ0J5WlhOMWJIUkpibVJsZUNBOUlDdHlaVzVrWlhKT2IyUmxMbWRsZEVGMGRISnBZblYwWlNoU1JWTlZURlJmU1U1RVJWaGZRVlJVVWlrN1hHNGdJQ0FnSUNBZ0lDQWdjbVZ1WkdWeVRtOWtaUzV5WlcxdmRtVkJkSFJ5YVdKMWRHVW9Va1ZUVlV4VVgwbE9SRVZZWDBGVVZGSXBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lTRnlaWE4xYkhSTWFYTjBMbWhoYzA5M2JsQnliM0JsY25SNUtISmxjM1ZzZEVsdVpHVjRLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEVZVzVuWlhJNklFRnpjMmxuYm1sdVp5QjBieUJoYmlCaGJISmxZV1I1TFc5alkzVndhV1ZrSUhKbGMzVnNkQ0JwYm1SbGVDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lDQWdJQ0J5WlhOMWJIUk1hWE4wVzNKbGMzVnNkRWx1WkdWNFhTQTlJSEpsYm1SbGNrNXZaR1U3WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJVYUdseklITm9iM1ZzWkNCdFlYUmphQ0J5WlhOMWJIUk1hWE4wTG14bGJtZDBhQ0JoYm1RZ2JXRnlhM1Z3VEdsemRDNXNaVzVuZEdnZ2QyaGxibHh1SUNBZ0lDQWdJQ0FnSUM4dklIZGxKM0psSUdSdmJtVXVYRzRnSUNBZ0lDQWdJQ0FnY21WemRXeDBUR2x6ZEVGemMybG5ibTFsYm5SRGIzVnVkQ0FyUFNBeE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0NkRVlXNW5aWEk2SUVScGMyTmhjbVJwYm1jZ2RXNWxlSEJsWTNSbFpDQnViMlJsT2ljc0lISmxibVJsY2s1dlpHVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUVd4MGFHOTFaMmdnY21WemRXeDBUR2x6ZENCM1lYTWdjRzl3ZFd4aGRHVmtJRzkxZENCdlppQnZjbVJsY2l3Z2FYUWdjMmh2ZFd4a0lHNXZkeUJpWlNCaElHUmxibk5sWEc0Z0lDQWdMeThnWVhKeVlYa3VYRzRnSUNBZ0lTaHlaWE4xYkhSTWFYTjBRWE56YVdkdWJXVnVkRU52ZFc1MElEMDlQU0J5WlhOMWJIUk1hWE4wTG14bGJtZDBhQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5SR0Z1WjJWeU9pQkVhV1FnYm05MElHRnpjMmxuYmlCMGJ5QmxkbVZ5ZVNCcGJtUmxlQ0J2WmlCeVpYTjFiSFJNYVhOMExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNFb2NtVnpkV3gwVEdsemRDNXNaVzVuZEdnZ1BUMDlJRzFoY210MWNFeHBjM1F1YkdWdVozUm9LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEVZVzVuWlhJNklFVjRjR1ZqZEdWa0lHMWhjbXQxY0NCMGJ5QnlaVzVrWlhJZ0pYTWdibTlrWlhNc0lHSjFkQ0J5Wlc1a1pYSmxaQ0FsY3k0bkxDQnRZWEpyZFhCTWFYTjBMbXhsYm1kMGFDd2djbVZ6ZFd4MFRHbHpkQzVzWlc1bmRHZ3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUk1hWE4wTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWEJzWVdObGN5QmhJRzV2WkdVZ2QybDBhQ0JoSUhOMGNtbHVaeUJ2WmlCdFlYSnJkWEFnWVhRZ2FYUnpJR04xY25KbGJuUWdjRzl6YVhScGIyNGdkMmwwYUdsdUlHbDBjMXh1SUNBZ0tpQndZWEpsYm5RdUlGUm9aU0J0WVhKcmRYQWdiWFZ6ZENCeVpXNWtaWElnYVc1MGJ5QmhJSE5wYm1kc1pTQnliMjkwSUc1dlpHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2IyeGtRMmhwYkdRZ1EyaHBiR1FnYm05a1pTQjBieUJ5WlhCc1lXTmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXRnlhM1Z3SUUxaGNtdDFjQ0IwYnlCeVpXNWtaWElnYVc0Z2NHeGhZMlVnYjJZZ2RHaGxJR05vYVd4a0lHNXZaR1V1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWkdGdVoyVnliM1Z6YkhsU1pYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQTZJR1oxYm1OMGFXOXVJQ2h2YkdSRGFHbHNaQ3dnYldGeWEzVndLU0I3WEc0Z0lDQWdJVVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwTG1OaGJsVnpaVVJQVFNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RrWVc1blpYSnZkWE5zZVZKbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNDZ3VMaTRwT2lCRFlXNXViM1FnY21WdVpHVnlJRzFoY210MWNDQnBiaUJoSUNjZ0t5QW5kMjl5YTJWeUlIUm9jbVZoWkM0Z1RXRnJaU0J6ZFhKbElHQjNhVzVrYjNkZ0lHRnVaQ0JnWkc5amRXMWxiblJnSUdGeVpTQmhkbUZwYkdGaWJHVWdKeUFySUNkbmJHOWlZV3hzZVNCaVpXWnZjbVVnY21WeGRXbHlhVzVuSUZKbFlXTjBJSGRvWlc0Z2RXNXBkQ0IwWlhOMGFXNW5JRzl5SUhWelpTQW5JQ3NnSjFKbFlXTjBSRTlOVTJWeWRtVnlMbkpsYm1SbGNsUnZVM1J5YVc1bktDa2dabTl5SUhObGNuWmxjaUJ5Wlc1a1pYSnBibWN1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDRnRZWEpyZFhBZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWkdGdVoyVnliM1Z6YkhsU1pYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQW9MaTR1S1RvZ1RXbHpjMmx1WnlCdFlYSnJkWEF1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDRW9iMnhrUTJocGJHUXVkR0ZuVG1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwSUNFOVBTQW5hSFJ0YkNjcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJSaGJtZGxjbTkxYzJ4NVVtVndiR0ZqWlU1dlpHVlhhWFJvVFdGeWEzVndLQzR1TGlrNklFTmhibTV2ZENCeVpYQnNZV05sSUcxaGNtdDFjQ0J2WmlCMGFHVWdKeUFySUNjOGFIUnRiRDRnYm05a1pTNGdWR2hwY3lCcGN5QmlaV05oZFhObElHSnliM2R6WlhJZ2NYVnBjbXR6SUcxaGEyVWdkR2hwY3lCMWJuSmxiR2xoWW14bElDY2dLeUFuWVc1a0wyOXlJSE5zYjNjdUlFbG1JSGx2ZFNCM1lXNTBJSFJ2SUhKbGJtUmxjaUIwYnlCMGFHVWdjbTl2ZENCNWIzVWdiWFZ6ZENCMWMyVWdKeUFySUNkelpYSjJaWElnY21WdVpHVnlhVzVuTGlCVFpXVWdVbVZoWTNSRVQwMVRaWEoyWlhJdWNtVnVaR1Z5Vkc5VGRISnBibWNvS1M0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ2JtVjNRMmhwYkdRN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdFlYSnJkWEFnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ0lDQnVaWGREYUdsc1pDQTlJR055WldGMFpVNXZaR1Z6Um5KdmJVMWhjbXQxY0NodFlYSnJkWEFzSUdWdGNIUjVSblZ1WTNScGIyNHBXekJkTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnVaWGREYUdsc1pDQTlJRzFoY210MWNEdGNiaUFnSUNCOVhHNGdJQ0FnYjJ4a1EyaHBiR1F1Y0dGeVpXNTBUbTlrWlM1eVpYQnNZV05sUTJocGJHUW9ibVYzUTJocGJHUXNJRzlzWkVOb2FXeGtLVHRjYmlBZ2ZWeHVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFUmhibWRsY2pzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV2ZW50UGx1Z2luSHViXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGlscycpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSByZXF1aXJlKCcuL2FjY3VtdWxhdGVJbnRvJyk7XG52YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gcmVxdWlyZSgnLi9mb3JFYWNoQWNjdW11bGF0ZWQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEludGVybmFsIHN0b3JlIGZvciBldmVudCBsaXN0ZW5lcnNcbiAqL1xudmFyIGxpc3RlbmVyQmFuayA9IHt9O1xuXG4vKipcbiAqIEludGVybmFsIHF1ZXVlIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWNjdW11bGF0ZWQgdGhlaXIgZGlzcGF0Y2hlcyBhbmQgYXJlXG4gKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlzcGF0Y2hlcyBleGVjdXRlZC5cbiAqL1xudmFyIGV2ZW50UXVldWUgPSBudWxsO1xuXG4vKipcbiAqIERpc3BhdGNoZXMgYW4gZXZlbnQgYW5kIHJlbGVhc2VzIGl0IGJhY2sgaW50byB0aGUgcG9vbCwgdW5sZXNzIHBlcnNpc3RlbnQuXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBldmVudCBTeW50aGV0aWMgZXZlbnQgdG8gYmUgZGlzcGF0Y2hlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICogQHByaXZhdGVcbiAqL1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSA9IGZ1bmN0aW9uIChldmVudCwgc2ltdWxhdGVkKSB7XG4gIGlmIChldmVudCkge1xuICAgIEV2ZW50UGx1Z2luVXRpbHMuZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpO1xuXG4gICAgaWYgKCFldmVudC5pc1BlcnNpc3RlbnQoKSkge1xuICAgICAgZXZlbnQuY29uc3RydWN0b3IucmVsZWFzZShldmVudCk7XG4gICAgfVxuICB9XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCA9IGZ1bmN0aW9uIChlKSB7XG4gIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgdHJ1ZSk7XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsID0gZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCBmYWxzZSk7XG59O1xuXG4vKipcbiAqIC0gYEluc3RhbmNlSGFuZGxlYDogW3JlcXVpcmVkXSBNb2R1bGUgdGhhdCBwZXJmb3JtcyBsb2dpY2FsIHRyYXZlcnNhbHMgb2YgRE9NXG4gKiAgIGhpZXJhcmNoeSBnaXZlbiBpZHMgb2YgdGhlIGxvZ2ljYWwgRE9NIGVsZW1lbnRzIGludm9sdmVkLlxuICovXG52YXIgSW5zdGFuY2VIYW5kbGUgPSBudWxsO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUluc3RhbmNlSGFuZGxlKCkge1xuICB2YXIgdmFsaWQgPSBJbnN0YW5jZUhhbmRsZSAmJiBJbnN0YW5jZUhhbmRsZS50cmF2ZXJzZVR3b1BoYXNlICYmIEluc3RhbmNlSGFuZGxlLnRyYXZlcnNlRW50ZXJMZWF2ZTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodmFsaWQsICdJbnN0YW5jZUhhbmRsZSBub3QgaW5qZWN0ZWQgYmVmb3JlIHVzZSEnKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgdW5pZmllZCBpbnRlcmZhY2UgZm9yIGV2ZW50IHBsdWdpbnMgdG8gYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLlxuICpcbiAqIEV2ZW50IHBsdWdpbnMgY2FuIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICBgZXh0cmFjdEV2ZW50c2Age2Z1bmN0aW9uKHN0cmluZywgRE9NRXZlbnRUYXJnZXQsIHN0cmluZywgb2JqZWN0KTogKn1cbiAqICAgICBSZXF1aXJlZC4gV2hlbiBhIHRvcC1sZXZlbCBldmVudCBpcyBmaXJlZCwgdGhpcyBtZXRob2QgaXMgZXhwZWN0ZWQgdG9cbiAqICAgICBleHRyYWN0IHN5bnRoZXRpYyBldmVudHMgdGhhdCB3aWxsIGluIHR1cm4gYmUgcXVldWVkIGFuZCBkaXNwYXRjaGVkLlxuICpcbiAqICAgYGV2ZW50VHlwZXNgIHtvYmplY3R9XG4gKiAgICAgT3B0aW9uYWwsIHBsdWdpbnMgdGhhdCBmaXJlIGV2ZW50cyBtdXN0IHB1Ymxpc2ggYSBtYXBwaW5nIG9mIHJlZ2lzdHJhdGlvblxuICogICAgIG5hbWVzIHRoYXQgYXJlIHVzZWQgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLiBWYWx1ZXMgb2YgdGhpcyBtYXBwaW5nIG11c3RcbiAqICAgICBiZSBvYmplY3RzIHRoYXQgY29udGFpbiBgcmVnaXN0cmF0aW9uTmFtZWAgb3IgYHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzYC5cbiAqXG4gKiAgIGBleGVjdXRlRGlzcGF0Y2hgIHtmdW5jdGlvbihvYmplY3QsIGZ1bmN0aW9uLCBzdHJpbmcpfVxuICogICAgIE9wdGlvbmFsLCBhbGxvd3MgcGx1Z2lucyB0byBvdmVycmlkZSBob3cgYW4gZXZlbnQgZ2V0cyBkaXNwYXRjaGVkLiBCeVxuICogICAgIGRlZmF1bHQsIHRoZSBsaXN0ZW5lciBpcyBzaW1wbHkgaW52b2tlZC5cbiAqXG4gKiBFYWNoIHBsdWdpbiB0aGF0IGlzIGluamVjdGVkIGludG8gYEV2ZW50c1BsdWdpbkh1YmAgaXMgaW1tZWRpYXRlbHkgb3BlcmFibGUuXG4gKlxuICogQHB1YmxpY1xuICovXG52YXIgRXZlbnRQbHVnaW5IdWIgPSB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZHMgZm9yIGluamVjdGluZyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBpbmplY3Rpb246IHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBJbmplY3RlZE1vdW50XG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGluamVjdE1vdW50OiBFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RNb3VudCxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBJbmplY3RlZEluc3RhbmNlSGFuZGxlXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGluamVjdEluc3RhbmNlSGFuZGxlOiBmdW5jdGlvbiAoSW5qZWN0ZWRJbnN0YW5jZUhhbmRsZSkge1xuICAgICAgSW5zdGFuY2VIYW5kbGUgPSBJbmplY3RlZEluc3RhbmNlSGFuZGxlO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVJbnN0YW5jZUhhbmRsZSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBnZXRJbnN0YW5jZUhhbmRsZTogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVJbnN0YW5jZUhhbmRsZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEluc3RhbmNlSGFuZGxlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXJcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZVxuXG4gIH0sXG5cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncyxcblxuICByZWdpc3RyYXRpb25OYW1lTW9kdWxlczogRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxcblxuICAvKipcbiAgICogU3RvcmVzIGBsaXN0ZW5lcmAgYXQgYGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtpZF1gLiBJcyBpZGVtcG90ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIERPTSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBsaXN0ZW5lciBUaGUgY2FsbGJhY2sgdG8gc3RvcmUuXG4gICAqL1xuICBwdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgICEodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtcbiAgICBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtpZF0gPSBsaXN0ZW5lcjtcblxuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKSB7XG4gICAgICBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICByZXR1cm4gYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgJiYgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVbaWRdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBuZXZlciBiZSBudWxsIC0tIHdoZW4gaXMgaXQ/XG4gICAgaWYgKGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVbaWRdO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0aGUgRE9NIGVsZW1lbnQgd2l0aCB0aGUgc3VwcGxpZWQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqL1xuICBkZWxldGVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIChpZCkge1xuICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4gICAgICBpZiAoIWxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtpZF0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG4gICAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2lkXTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsbG93cyByZWdpc3RlcmVkIHBsdWdpbnMgYW4gb3Bwb3J0dW5pdHkgdG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3AtbGV2ZWxcbiAgICogbmF0aXZlIGJyb3dzZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGV2ZW50cztcbiAgICB2YXIgcGx1Z2lucyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIE5vdCBldmVyeSBwbHVnaW4gaW4gdGhlIG9yZGVyaW5nIG1heSBiZSBsb2FkZWQgYXQgcnVudGltZS5cbiAgICAgIHZhciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07XG4gICAgICBpZiAocG9zc2libGVQbHVnaW4pIHtcbiAgICAgICAgdmFyIGV4dHJhY3RlZEV2ZW50cyA9IHBvc3NpYmxlUGx1Z2luLmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykge1xuICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVkIHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlvbiAoZXZlbnRzKSB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkge1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAvLyBldmVudHMgZ2V0IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBpZiAoc2ltdWxhdGVkKSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncHJvY2Vzc0V2ZW50UXVldWUoKTogQWRkaXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nICcgKyAnYW4gZXZlbnQgcXVldWUuIFN1cHBvcnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byByZXRocm93IGlmIGFueSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuXG4gICAgUmVhY3RFcnJvclV0aWxzLnJldGhyb3dDYXVnaHRFcnJvcigpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUaGVzZSBhcmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIVxuICAgKi9cbiAgX19wdXJnZTogZnVuY3Rpb24gKCkge1xuICAgIGxpc3RlbmVyQmFuayA9IHt9O1xuICB9LFxuXG4gIF9fZ2V0TGlzdGVuZXJCYW5rOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQmFuaztcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luSHViO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJYWmxiblJRYkhWbmFXNUlkV0l1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUVWMlpXNTBVR3gxWjJsdVNIVmlYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVNBOUlISmxjWFZwY21Vb0p5NHZSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllU2NwTzF4dWRtRnlJRVYyWlc1MFVHeDFaMmx1VlhScGJITWdQU0J5WlhGMWFYSmxLQ2N1TDBWMlpXNTBVR3gxWjJsdVZYUnBiSE1uS1R0Y2JuWmhjaUJTWldGamRFVnljbTl5VlhScGJITWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSWEp5YjNKVmRHbHNjeWNwTzF4dVhHNTJZWElnWVdOamRXMTFiR0YwWlVsdWRHOGdQU0J5WlhGMWFYSmxLQ2N1TDJGalkzVnRkV3hoZEdWSmJuUnZKeWs3WEc1MllYSWdabTl5UldGamFFRmpZM1Z0ZFd4aGRHVmtJRDBnY21WeGRXbHlaU2duTGk5bWIzSkZZV05vUVdOamRXMTFiR0YwWldRbktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc0dktpcGNiaUFxSUVsdWRHVnlibUZzSUhOMGIzSmxJR1p2Y2lCbGRtVnVkQ0JzYVhOMFpXNWxjbk5jYmlBcUwxeHVkbUZ5SUd4cGMzUmxibVZ5UW1GdWF5QTlJSHQ5TzF4dVhHNHZLaXBjYmlBcUlFbHVkR1Z5Ym1Gc0lIRjFaWFZsSUc5bUlHVjJaVzUwY3lCMGFHRjBJR2hoZG1VZ1lXTmpkVzExYkdGMFpXUWdkR2hsYVhJZ1pHbHpjR0YwWTJobGN5QmhibVFnWVhKbFhHNGdLaUIzWVdsMGFXNW5JSFJ2SUdoaGRtVWdkR2hsYVhJZ1pHbHpjR0YwWTJobGN5QmxlR1ZqZFhSbFpDNWNiaUFxTDF4dWRtRnlJR1YyWlc1MFVYVmxkV1VnUFNCdWRXeHNPMXh1WEc0dktpcGNiaUFxSUVScGMzQmhkR05vWlhNZ1lXNGdaWFpsYm5RZ1lXNWtJSEpsYkdWaGMyVnpJR2wwSUdKaFkyc2dhVzUwYnlCMGFHVWdjRzl2YkN3Z2RXNXNaWE56SUhCbGNuTnBjM1JsYm5RdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCbGRtVnVkQ0JUZVc1MGFHVjBhV01nWlhabGJuUWdkRzhnWW1VZ1pHbHpjR0YwWTJobFpDNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnYzJsdGRXeGhkR1ZrSUVsbUlIUm9aU0JsZG1WdWRDQnBjeUJ6YVcxMWJHRjBaV1FnS0dOb1lXNW5aWE1nWlhodUlHSmxhR0YyYVc5eUtWeHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVkbUZ5SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6UVc1a1VtVnNaV0Z6WlNBOUlHWjFibU4wYVc5dUlDaGxkbVZ1ZEN3Z2MybHRkV3hoZEdWa0tTQjdYRzRnSUdsbUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUVWMlpXNTBVR3gxWjJsdVZYUnBiSE11WlhobFkzVjBaVVJwYzNCaGRHTm9aWE5KYms5eVpHVnlLR1YyWlc1MExDQnphVzExYkdGMFpXUXBPMXh1WEc0Z0lDQWdhV1lnS0NGbGRtVnVkQzVwYzFCbGNuTnBjM1JsYm5Rb0tTa2dlMXh1SUNBZ0lDQWdaWFpsYm5RdVkyOXVjM1J5ZFdOMGIzSXVjbVZzWldGelpTaGxkbVZ1ZENrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dWRtRnlJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpRVzVrVW1Wc1pXRnpaVk5wYlhWc1lYUmxaQ0E5SUdaMWJtTjBhVzl1SUNobEtTQjdYRzRnSUhKbGRIVnliaUJsZUdWamRYUmxSR2x6Y0dGMFkyaGxjMEZ1WkZKbGJHVmhjMlVvWlN3Z2RISjFaU2s3WEc1OU8xeHVkbUZ5SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6UVc1a1VtVnNaV0Z6WlZSdmNFeGxkbVZzSUQwZ1puVnVZM1JwYjI0Z0tHVXBJSHRjYmlBZ2NtVjBkWEp1SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6UVc1a1VtVnNaV0Z6WlNobExDQm1ZV3h6WlNrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUMwZ1lFbHVjM1JoYm1ObFNHRnVaR3hsWURvZ1czSmxjWFZwY21Wa1hTQk5iMlIxYkdVZ2RHaGhkQ0J3WlhKbWIzSnRjeUJzYjJkcFkyRnNJSFJ5WVhabGNuTmhiSE1nYjJZZ1JFOU5YRzRnS2lBZ0lHaHBaWEpoY21Ob2VTQm5hWFpsYmlCcFpITWdiMllnZEdobElHeHZaMmxqWVd3Z1JFOU5JR1ZzWlcxbGJuUnpJR2x1ZG05c2RtVmtMbHh1SUNvdlhHNTJZWElnU1c1emRHRnVZMlZJWVc1a2JHVWdQU0J1ZFd4c08xeHVYRzVtZFc1amRHbHZiaUIyWVd4cFpHRjBaVWx1YzNSaGJtTmxTR0Z1Wkd4bEtDa2dlMXh1SUNCMllYSWdkbUZzYVdRZ1BTQkpibk4wWVc1alpVaGhibVJzWlNBbUppQkpibk4wWVc1alpVaGhibVJzWlM1MGNtRjJaWEp6WlZSM2IxQm9ZWE5sSUNZbUlFbHVjM1JoYm1ObFNHRnVaR3hsTG5SeVlYWmxjbk5sUlc1MFpYSk1aV0YyWlR0Y2JpQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvZG1Gc2FXUXNJQ2RKYm5OMFlXNWpaVWhoYm1Sc1pTQnViM1FnYVc1cVpXTjBaV1FnWW1WbWIzSmxJSFZ6WlNFbktTQTZJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVhR2x6SUdseklHRWdkVzVwWm1sbFpDQnBiblJsY21aaFkyVWdabTl5SUdWMlpXNTBJSEJzZFdkcGJuTWdkRzhnWW1VZ2FXNXpkR0ZzYkdWa0lHRnVaQ0JqYjI1bWFXZDFjbVZrTGx4dUlDcGNiaUFxSUVWMlpXNTBJSEJzZFdkcGJuTWdZMkZ1SUdsdGNHeGxiV1Z1ZENCMGFHVWdabTlzYkc5M2FXNW5JSEJ5YjNCbGNuUnBaWE02WEc0Z0tseHVJQ29nSUNCZ1pYaDBjbUZqZEVWMlpXNTBjMkFnZTJaMWJtTjBhVzl1S0hOMGNtbHVaeXdnUkU5TlJYWmxiblJVWVhKblpYUXNJSE4wY21sdVp5d2diMkpxWldOMEtUb2dLbjFjYmlBcUlDQWdJQ0JTWlhGMWFYSmxaQzRnVjJobGJpQmhJSFJ2Y0Mxc1pYWmxiQ0JsZG1WdWRDQnBjeUJtYVhKbFpDd2dkR2hwY3lCdFpYUm9iMlFnYVhNZ1pYaHdaV04wWldRZ2RHOWNiaUFxSUNBZ0lDQmxlSFJ5WVdOMElITjViblJvWlhScFl5QmxkbVZ1ZEhNZ2RHaGhkQ0IzYVd4c0lHbHVJSFIxY200Z1ltVWdjWFZsZFdWa0lHRnVaQ0JrYVhOd1lYUmphR1ZrTGx4dUlDcGNiaUFxSUNBZ1lHVjJaVzUwVkhsd1pYTmdJSHR2WW1wbFkzUjlYRzRnS2lBZ0lDQWdUM0IwYVc5dVlXd3NJSEJzZFdkcGJuTWdkR2hoZENCbWFYSmxJR1YyWlc1MGN5QnRkWE4wSUhCMVlteHBjMmdnWVNCdFlYQndhVzVuSUc5bUlISmxaMmx6ZEhKaGRHbHZibHh1SUNvZ0lDQWdJRzVoYldWeklIUm9ZWFFnWVhKbElIVnpaV1FnZEc4Z2NtVm5hWE4wWlhJZ2JHbHpkR1Z1WlhKekxpQldZV3gxWlhNZ2IyWWdkR2hwY3lCdFlYQndhVzVuSUcxMWMzUmNiaUFxSUNBZ0lDQmlaU0J2WW1wbFkzUnpJSFJvWVhRZ1kyOXVkR0ZwYmlCZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WldBZ2IzSWdZSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWellDNWNiaUFxWEc0Z0tpQWdJR0JsZUdWamRYUmxSR2x6Y0dGMFkyaGdJSHRtZFc1amRHbHZiaWh2WW1wbFkzUXNJR1oxYm1OMGFXOXVMQ0J6ZEhKcGJtY3BmVnh1SUNvZ0lDQWdJRTl3ZEdsdmJtRnNMQ0JoYkd4dmQzTWdjR3gxWjJsdWN5QjBieUJ2ZG1WeWNtbGtaU0JvYjNjZ1lXNGdaWFpsYm5RZ1oyVjBjeUJrYVhOd1lYUmphR1ZrTGlCQ2VWeHVJQ29nSUNBZ0lHUmxabUYxYkhRc0lIUm9aU0JzYVhOMFpXNWxjaUJwY3lCemFXMXdiSGtnYVc1MmIydGxaQzVjYmlBcVhHNGdLaUJGWVdOb0lIQnNkV2RwYmlCMGFHRjBJR2x6SUdsdWFtVmpkR1ZrSUdsdWRHOGdZRVYyWlc1MGMxQnNkV2RwYmtoMVltQWdhWE1nYVcxdFpXUnBZWFJsYkhrZ2IzQmxjbUZpYkdVdVhHNGdLbHh1SUNvZ1FIQjFZbXhwWTF4dUlDb3ZYRzUyWVhJZ1JYWmxiblJRYkhWbmFXNUlkV0lnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUUxbGRHaHZaSE1nWm05eUlHbHVhbVZqZEdsdVp5QmtaWEJsYm1SbGJtTnBaWE11WEc0Z0lDQXFMMXh1SUNCcGJtcGxZM1JwYjI0NklIdGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQkpibXBsWTNSbFpFMXZkVzUwWEc0Z0lDQWdJQ29nUUhCMVlteHBZMXh1SUNBZ0lDQXFMMXh1SUNBZ0lHbHVhbVZqZEUxdmRXNTBPaUJGZG1WdWRGQnNkV2RwYmxWMGFXeHpMbWx1YW1WamRHbHZiaTVwYm1wbFkzUk5iM1Z1ZEN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCSmJtcGxZM1JsWkVsdWMzUmhibU5sU0dGdVpHeGxYRzRnSUNBZ0lDb2dRSEIxWW14cFkxeHVJQ0FnSUNBcUwxeHVJQ0FnSUdsdWFtVmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bE9pQm1kVzVqZEdsdmJpQW9TVzVxWldOMFpXUkpibk4wWVc1alpVaGhibVJzWlNrZ2UxeHVJQ0FnSUNBZ1NXNXpkR0Z1WTJWSVlXNWtiR1VnUFNCSmJtcGxZM1JsWkVsdWMzUmhibU5sU0dGdVpHeGxPMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkpibk4wWVc1alpVaGhibVJzWlNncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc1hHNWNiaUFnSUNCblpYUkpibk4wWVc1alpVaGhibVJzWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkpibk4wWVc1alpVaGhibVJzWlNncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUVsdWMzUmhibU5sU0dGdVpHeGxPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMkZ5Y21GNWZTQkpibXBsWTNSbFpFVjJaVzUwVUd4MVoybHVUM0prWlhKY2JpQWdJQ0FnS2lCQWNIVmliR2xqWEc0Z0lDQWdJQ292WEc0Z0lDQWdhVzVxWldOMFJYWmxiblJRYkhWbmFXNVBjbVJsY2pvZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXBibXBsWTNSRmRtVnVkRkJzZFdkcGJrOXlaR1Z5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdsdWFtVmpkR1ZrVG1GdFpYTlViMUJzZFdkcGJuTWdUV0Z3SUdaeWIyMGdibUZ0WlhNZ2RHOGdjR3gxWjJsdUlHMXZaSFZzWlhNdVhHNGdJQ0FnSUNvdlhHNGdJQ0FnYVc1cVpXTjBSWFpsYm5SUWJIVm5hVzV6UW5sT1lXMWxPaUJGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG1sdWFtVmpkRVYyWlc1MFVHeDFaMmx1YzBKNVRtRnRaVnh1WEc0Z0lIMHNYRzVjYmlBZ1pYWmxiblJPWVcxbFJHbHpjR0YwWTJoRGIyNW1hV2R6T2lCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxtVjJaVzUwVG1GdFpVUnBjM0JoZEdOb1EyOXVabWxuY3l4Y2JseHVJQ0J5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN6b2dSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzV5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN5eGNibHh1SUNBdktpcGNiaUFnSUNvZ1UzUnZjbVZ6SUdCc2FYTjBaVzVsY21BZ1lYUWdZR3hwYzNSbGJtVnlRbUZ1YTF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFZ0cFpGMWdMaUJKY3lCcFpHVnRjRzkwWlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnU1VRZ2IyWWdkR2hsSUVSUFRTQmxiR1Z0Wlc1MExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY21WbmFYTjBjbUYwYVc5dVRtRnRaU0JPWVcxbElHOW1JR3hwYzNSbGJtVnlJQ2hsTG1jdUlHQnZia05zYVdOcllDa3VYRzRnSUNBcUlFQndZWEpoYlNCN1AyWjFibU4wYVc5dWZTQnNhWE4wWlc1bGNpQlVhR1VnWTJGc2JHSmhZMnNnZEc4Z2MzUnZjbVV1WEc0Z0lDQXFMMXh1SUNCd2RYUk1hWE4wWlc1bGNqb2dablZ1WTNScGIyNGdLR2xrTENCeVpXZHBjM1J5WVhScGIyNU9ZVzFsTENCc2FYTjBaVzVsY2lrZ2UxeHVJQ0FnSUNFb2RIbHdaVzltSUd4cGMzUmxibVZ5SUQwOVBTQW5ablZ1WTNScGIyNG5LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZlSEJsWTNSbFpDQWxjeUJzYVhOMFpXNWxjaUIwYnlCaVpTQmhJR1oxYm1OMGFXOXVMQ0JwYm5OMFpXRmtJR2R2ZENCMGVYQmxJQ1Z6Snl3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z2RIbHdaVzltSUd4cGMzUmxibVZ5S1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQjJZWElnWW1GdWEwWnZjbEpsWjJsemRISmhkR2x2Yms1aGJXVWdQU0JzYVhOMFpXNWxja0poYm10YmNtVm5hWE4wY21GMGFXOXVUbUZ0WlYwZ2ZId2dLR3hwYzNSbGJtVnlRbUZ1YTF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFNBOUlIdDlLVHRjYmlBZ0lDQmlZVzVyUm05eVVtVm5hWE4wY21GMGFXOXVUbUZ0WlZ0cFpGMGdQU0JzYVhOMFpXNWxjanRjYmx4dUlDQWdJSFpoY2lCUWJIVm5hVzVOYjJSMWJHVWdQU0JGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG5KbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpXM0psWjJsemRISmhkR2x2Yms1aGJXVmRPMXh1SUNBZ0lHbG1JQ2hRYkhWbmFXNU5iMlIxYkdVZ0ppWWdVR3gxWjJsdVRXOWtkV3hsTG1ScFpGQjFkRXhwYzNSbGJtVnlLU0I3WEc0Z0lDQWdJQ0JRYkhWbmFXNU5iMlIxYkdVdVpHbGtVSFYwVEdsemRHVnVaWElvYVdRc0lISmxaMmx6ZEhKaGRHbHZiazVoYldVc0lHeHBjM1JsYm1WeUtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnBaQ0JKUkNCdlppQjBhR1VnUkU5TklHVnNaVzFsYm5RdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldkcGMzUnlZWFJwYjI1T1lXMWxJRTVoYldVZ2IyWWdiR2x6ZEdWdVpYSWdLR1V1Wnk0Z1lHOXVRMnhwWTJ0Z0tTNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AyWjFibU4wYVc5dWZTQlVhR1VnYzNSdmNtVmtJR05oYkd4aVlXTnJMbHh1SUNBZ0tpOWNiaUFnWjJWMFRHbHpkR1Z1WlhJNklHWjFibU4wYVc5dUlDaHBaQ3dnY21WbmFYTjBjbUYwYVc5dVRtRnRaU2tnZTF4dUlDQWdJSFpoY2lCaVlXNXJSbTl5VW1WbmFYTjBjbUYwYVc5dVRtRnRaU0E5SUd4cGMzUmxibVZ5UW1GdWExdHlaV2RwYzNSeVlYUnBiMjVPWVcxbFhUdGNiaUFnSUNCeVpYUjFjbTRnWW1GdWEwWnZjbEpsWjJsemRISmhkR2x2Yms1aGJXVWdKaVlnWW1GdWEwWnZjbEpsWjJsemRISmhkR2x2Yms1aGJXVmJhV1JkTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVaV3hsZEdWeklHRWdiR2x6ZEdWdVpYSWdabkp2YlNCMGFHVWdjbVZuYVhOMGNtRjBhVzl1SUdKaGJtc3VYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCSlJDQnZaaUIwYUdVZ1JFOU5JR1ZzWlcxbGJuUXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCeVpXZHBjM1J5WVhScGIyNU9ZVzFsSUU1aGJXVWdiMllnYkdsemRHVnVaWElnS0dVdVp5NGdZRzl1UTJ4cFkydGdLUzVjYmlBZ0lDb3ZYRzRnSUdSbGJHVjBaVXhwYzNSbGJtVnlPaUJtZFc1amRHbHZiaUFvYVdRc0lISmxaMmx6ZEhKaGRHbHZiazVoYldVcElIdGNiaUFnSUNCMllYSWdVR3gxWjJsdVRXOWtkV3hsSUQwZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsYzF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFR0Y2JpQWdJQ0JwWmlBb1VHeDFaMmx1VFc5a2RXeGxJQ1ltSUZCc2RXZHBiazF2WkhWc1pTNTNhV3hzUkdWc1pYUmxUR2x6ZEdWdVpYSXBJSHRjYmlBZ0lDQWdJRkJzZFdkcGJrMXZaSFZzWlM1M2FXeHNSR1ZzWlhSbFRHbHpkR1Z1WlhJb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJpWVc1clJtOXlVbVZuYVhOMGNtRjBhVzl1VG1GdFpTQTlJR3hwYzNSbGJtVnlRbUZ1YTF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFR0Y2JpQWdJQ0F2THlCVVQwUlBPaUJVYUdseklITm9iM1ZzWkNCdVpYWmxjaUJpWlNCdWRXeHNJQzB0SUhkb1pXNGdhWE1nYVhRL1hHNGdJQ0FnYVdZZ0tHSmhibXRHYjNKU1pXZHBjM1J5WVhScGIyNU9ZVzFsS1NCN1hHNGdJQ0FnSUNCa1pXeGxkR1VnWW1GdWEwWnZjbEpsWjJsemRISmhkR2x2Yms1aGJXVmJhV1JkTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1JHVnNaWFJsY3lCaGJHd2diR2x6ZEdWdVpYSnpJR1p2Y2lCMGFHVWdSRTlOSUdWc1pXMWxiblFnZDJsMGFDQjBhR1VnYzNWd2NHeHBaV1FnU1VRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnBaQ0JKUkNCdlppQjBhR1VnUkU5TklHVnNaVzFsYm5RdVhHNGdJQ0FxTDF4dUlDQmtaV3hsZEdWQmJHeE1hWE4wWlc1bGNuTTZJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUhKbFoybHpkSEpoZEdsdmJrNWhiV1VnYVc0Z2JHbHpkR1Z1WlhKQ1lXNXJLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lXeHBjM1JsYm1WeVFtRnVhMXR5WldkcGMzUnlZWFJwYjI1T1lXMWxYVnRwWkYwcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFpoY2lCUWJIVm5hVzVOYjJSMWJHVWdQU0JGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG5KbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpXM0psWjJsemRISmhkR2x2Yms1aGJXVmRPMXh1SUNBZ0lDQWdhV1lnS0ZCc2RXZHBiazF2WkhWc1pTQW1KaUJRYkhWbmFXNU5iMlIxYkdVdWQybHNiRVJsYkdWMFpVeHBjM1JsYm1WeUtTQjdYRzRnSUNBZ0lDQWdJRkJzZFdkcGJrMXZaSFZzWlM1M2FXeHNSR1ZzWlhSbFRHbHpkR1Z1WlhJb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JrWld4bGRHVWdiR2x6ZEdWdVpYSkNZVzVyVzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkVzJsa1hUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUZzYkc5M2N5QnlaV2RwYzNSbGNtVmtJSEJzZFdkcGJuTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdaWGgwY21GamRDQmxkbVZ1ZEhNZ1puSnZiU0IwYjNBdGJHVjJaV3hjYmlBZ0lDb2dibUYwYVhabElHSnliM2R6WlhJZ1pYWmxiblJ6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHOXdUR1YyWld4VWVYQmxJRkpsWTI5eVpDQm1jbTl0SUdCRmRtVnVkRU52Ym5OMFlXNTBjMkF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUlhabGJuUlVZWEpuWlhSOUlIUnZjRXhsZG1Wc1ZHRnlaMlYwSUZSb1pTQnNhWE4wWlc1cGJtY2dZMjl0Y0c5dVpXNTBJSEp2YjNRZ2JtOWtaUzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUnZjRXhsZG1Wc1ZHRnlaMlYwU1VRZ1NVUWdiMllnWUhSdmNFeGxkbVZzVkdGeVoyVjBZQzVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHNWhkR2wyWlVWMlpXNTBJRTVoZEdsMlpTQmljbTkzYzJWeUlHVjJaVzUwTGx4dUlDQWdLaUJBY21WMGRYSnVJSHNxZlNCQmJpQmhZMk4xYlhWc1lYUnBiMjRnYjJZZ2MzbHVkR2hsZEdsaklHVjJaVzUwY3k1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGVIUnlZV04wUlhabGJuUnpPaUJtZFc1amRHbHZiaUFvZEc5d1RHVjJaV3hVZVhCbExDQjBiM0JNWlhabGJGUmhjbWRsZEN3Z2RHOXdUR1YyWld4VVlYSm5aWFJKUkN3Z2JtRjBhWFpsUlhabGJuUXNJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBLU0I3WEc0Z0lDQWdkbUZ5SUdWMlpXNTBjenRjYmlBZ0lDQjJZWElnY0d4MVoybHVjeUE5SUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdWNHeDFaMmx1Y3p0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUhCc2RXZHBibk11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDOHZJRTV2ZENCbGRtVnllU0J3YkhWbmFXNGdhVzRnZEdobElHOXlaR1Z5YVc1bklHMWhlU0JpWlNCc2IyRmtaV1FnWVhRZ2NuVnVkR2x0WlM1Y2JpQWdJQ0FnSUhaaGNpQndiM056YVdKc1pWQnNkV2RwYmlBOUlIQnNkV2RwYm5OYmFWMDdYRzRnSUNBZ0lDQnBaaUFvY0c5emMybGliR1ZRYkhWbmFXNHBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVjRkSEpoWTNSbFpFVjJaVzUwY3lBOUlIQnZjM05wWW14bFVHeDFaMmx1TG1WNGRISmhZM1JGZG1WdWRITW9kRzl3VEdWMlpXeFVlWEJsTENCMGIzQk1aWFpsYkZSaGNtZGxkQ3dnZEc5d1RHVjJaV3hVWVhKblpYUkpSQ3dnYm1GMGFYWmxSWFpsYm5Rc0lHNWhkR2wyWlVWMlpXNTBWR0Z5WjJWMEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dWNGRISmhZM1JsWkVWMlpXNTBjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHVjJaVzUwY3lBOUlHRmpZM1Z0ZFd4aGRHVkpiblJ2S0dWMlpXNTBjeXdnWlhoMGNtRmpkR1ZrUlhabGJuUnpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1pYWmxiblJ6TzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZibkYxWlhWbGN5QmhJSE41Ym5Sb1pYUnBZeUJsZG1WdWRDQjBhR0YwSUhOb2IzVnNaQ0JpWlNCa2FYTndZWFJqYUdWa0lIZG9aVzVjYmlBZ0lDb2dZSEJ5YjJObGMzTkZkbVZ1ZEZGMVpYVmxZQ0JwY3lCcGJuWnZhMlZrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5cDlJR1YyWlc1MGN5QkJiaUJoWTJOMWJYVnNZWFJwYjI0Z2IyWWdjM2x1ZEdobGRHbGpJR1YyWlc1MGN5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFJYWmxiblJ6T2lCbWRXNWpkR2x2YmlBb1pYWmxiblJ6S1NCN1hHNGdJQ0FnYVdZZ0tHVjJaVzUwY3lrZ2UxeHVJQ0FnSUNBZ1pYWmxiblJSZFdWMVpTQTlJR0ZqWTNWdGRXeGhkR1ZKYm5SdktHVjJaVzUwVVhWbGRXVXNJR1YyWlc1MGN5azdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFYVhOd1lYUmphR1Z6SUdGc2JDQnplVzUwYUdWMGFXTWdaWFpsYm5SeklHOXVJSFJvWlNCbGRtVnVkQ0J4ZFdWMVpTNWNiaUFnSUNwY2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCd2NtOWpaWE56UlhabGJuUlJkV1YxWlRvZ1puVnVZM1JwYjI0Z0tITnBiWFZzWVhSbFpDa2dlMXh1SUNBZ0lDOHZJRk5sZENCZ1pYWmxiblJSZFdWMVpXQWdkRzhnYm5Wc2JDQmlaV1p2Y21VZ2NISnZZMlZ6YzJsdVp5QnBkQ0J6YnlCMGFHRjBJSGRsSUdOaGJpQjBaV3hzSUdsbUlHMXZjbVZjYmlBZ0lDQXZMeUJsZG1WdWRITWdaMlYwSUdWdWNYVmxkV1ZrSUhkb2FXeGxJSEJ5YjJObGMzTnBibWN1WEc0Z0lDQWdkbUZ5SUhCeWIyTmxjM05wYm1kRmRtVnVkRkYxWlhWbElEMGdaWFpsYm5SUmRXVjFaVHRjYmlBZ0lDQmxkbVZ1ZEZGMVpYVmxJRDBnYm5Wc2JEdGNiaUFnSUNCcFppQW9jMmx0ZFd4aGRHVmtLU0I3WEc0Z0lDQWdJQ0JtYjNKRllXTm9RV05qZFcxMWJHRjBaV1FvY0hKdlkyVnpjMmx1WjBWMlpXNTBVWFZsZFdVc0lHVjRaV04xZEdWRWFYTndZWFJqYUdWelFXNWtVbVZzWldGelpWTnBiWFZzWVhSbFpDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdadmNrVmhZMmhCWTJOMWJYVnNZWFJsWkNod2NtOWpaWE56YVc1blJYWmxiblJSZFdWMVpTd2daWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkJibVJTWld4bFlYTmxWRzl3VEdWMlpXd3BPMXh1SUNBZ0lIMWNiaUFnSUNBaElXVjJaVzUwVVhWbGRXVWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmNISnZZMlZ6YzBWMlpXNTBVWFZsZFdVb0tUb2dRV1JrYVhScGIyNWhiQ0JsZG1WdWRITWdkMlZ5WlNCbGJuRjFaWFZsWkNCM2FHbHNaU0J3Y205alpYTnphVzVuSUNjZ0t5QW5ZVzRnWlhabGJuUWdjWFZsZFdVdUlGTjFjSEJ2Y25RZ1ptOXlJSFJvYVhNZ2FHRnpJRzV2ZENCNVpYUWdZbVZsYmlCcGJYQnNaVzFsYm5SbFpDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnTHk4Z1ZHaHBjeUIzYjNWc1pDQmlaU0JoSUdkdmIyUWdkR2x0WlNCMGJ5QnlaWFJvY205M0lHbG1JR0Z1ZVNCdlppQjBhR1VnWlhabGJuUWdhR0Z1Wkd4bGNuTWdkR2h5WlhjdVhHNGdJQ0FnVW1WaFkzUkZjbkp2Y2xWMGFXeHpMbkpsZEdoeWIzZERZWFZuYUhSRmNuSnZjaWdwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1Z6WlNCaGNtVWdibVZsWkdWa0lHWnZjaUIwWlhOMGN5QnZibXg1TGlCRWJ5QnViM1FnZFhObElWeHVJQ0FnS2k5Y2JpQWdYMTl3ZFhKblpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJR3hwYzNSbGJtVnlRbUZ1YXlBOUlIdDlPMXh1SUNCOUxGeHVYRzRnSUY5ZloyVjBUR2x6ZEdWdVpYSkNZVzVyT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUd4cGMzUmxibVZ5UW1GdWF6dGNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUVWMlpXNTBVR3gxWjJsdVNIVmlPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQbHVnaW5SZWdpc3RyeVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBJbmplY3RhYmxlIG9yZGVyaW5nIG9mIGV2ZW50IHBsdWdpbnMuXG4gKi9cbnZhciBFdmVudFBsdWdpbk9yZGVyID0gbnVsbDtcblxuLyoqXG4gKiBJbmplY3RhYmxlIG1hcHBpbmcgZnJvbSBuYW1lcyB0byBldmVudCBwbHVnaW4gbW9kdWxlcy5cbiAqL1xudmFyIG5hbWVzVG9QbHVnaW5zID0ge307XG5cbi8qKlxuICogUmVjb21wdXRlcyB0aGUgcGx1Z2luIGxpc3QgdXNpbmcgdGhlIGluamVjdGVkIHBsdWdpbnMgYW5kIHBsdWdpbiBvcmRlcmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpIHtcbiAgaWYgKCFFdmVudFBsdWdpbk9yZGVyKSB7XG4gICAgLy8gV2FpdCB1bnRpbCBhbiBgRXZlbnRQbHVnaW5PcmRlcmAgaXMgaW5qZWN0ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHtcbiAgICB2YXIgUGx1Z2luTW9kdWxlID0gbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgdmFyIHBsdWdpbkluZGV4ID0gRXZlbnRQbHVnaW5PcmRlci5pbmRleE9mKHBsdWdpbk5hbWUpO1xuICAgICEocGx1Z2luSW5kZXggPiAtMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW5zIHRoYXQgZG8gbm90IGV4aXN0IGluICcgKyAndGhlIHBsdWdpbiBvcmRlcmluZywgYCVzYC4nLCBwbHVnaW5OYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAhUGx1Z2luTW9kdWxlLmV4dHJhY3RFdmVudHMgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRXZlbnQgcGx1Z2lucyBtdXN0IGltcGxlbWVudCBhbiBgZXh0cmFjdEV2ZW50c2AgJyArICdtZXRob2QsIGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdID0gUGx1Z2luTW9kdWxlO1xuICAgIHZhciBwdWJsaXNoZWRFdmVudHMgPSBQbHVnaW5Nb2R1bGUuZXZlbnRUeXBlcztcbiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gcHVibGlzaGVkRXZlbnRzKSB7XG4gICAgICAhcHVibGlzaEV2ZW50Rm9yUGx1Z2luKHB1Ymxpc2hlZEV2ZW50c1tldmVudE5hbWVdLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQgYCVzYCBmb3IgcGx1Z2luIGAlc2AuJywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHVibGlzaGVzIGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQgYnkgdGhlIHN1cHBsaWVkIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgRGlzcGF0Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2ZW50LlxuICogQHBhcmFtIHtvYmplY3R9IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNwYXRjaENvbmZpZywgUGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcbiAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSAnICsgJ2V2ZW50IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZztcblxuICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztcbiAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgZm9yICh2YXIgcGhhc2VOYW1lIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkge1xuICAgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07XG4gICAgICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIFBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsIFBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZFxuICogY2FuIGJlIHVzZWQgd2l0aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFtZSB0byBhZGQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIFBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgJyArICdyZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdpc3RyYXRpb25OYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBQbHVnaW5Nb2R1bGU7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXSA9IFBsdWdpbk1vZHVsZS5ldmVudFR5cGVzW2V2ZW50TmFtZV0uZGVwZW5kZW5jaWVzO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBwbHVnaW5zIHNvIHRoYXQgdGhleSBjYW4gZXh0cmFjdCBhbmQgZGlzcGF0Y2ggZXZlbnRzLlxuICpcbiAqIEBzZWUge0V2ZW50UGx1Z2luSHVifVxuICovXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHtcblxuICAvKipcbiAgICogT3JkZXJlZCBsaXN0IG9mIGluamVjdGVkIHBsdWdpbnMuXG4gICAqL1xuICBwbHVnaW5zOiBbXSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGV2ZW50IG5hbWUgdG8gZGlzcGF0Y2ggY29uZmlnXG4gICAqL1xuICBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gcGx1Z2luIG1vZHVsZVxuICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gZXZlbnQgbmFtZVxuICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczoge30sXG5cbiAgLyoqXG4gICAqIEluamVjdHMgYW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkgcGx1Z2luIG5hbWUpLiBUaGlzIGFsbG93cyB0aGUgb3JkZXJpbmdcbiAgICogdG8gYmUgZGVjb3VwbGVkIGZyb20gaW5qZWN0aW9uIG9mIHRoZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzXG4gICAqIGFsd2F5cyBkZXRlcm1pbmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVjdGlvbiwgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXJcbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbk9yZGVyfVxuICAgKi9cbiAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogZnVuY3Rpb24gKEluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikge1xuICAgICEhRXZlbnRQbHVnaW5PcmRlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2ZW50IHBsdWdpbiBvcmRlcmluZyBtb3JlIHRoYW4gJyArICdvbmNlLiBZb3UgYXJlIGxpa2VseSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25lIGNvcHkgb2YgUmVhY3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIC8vIENsb25lIHRoZSBvcmRlcmluZyBzbyBpdCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgbXV0YXRlZC5cbiAgICBFdmVudFBsdWdpbk9yZGVyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKTtcbiAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbmplY3RzIHBsdWdpbnMgdG8gYmUgdXNlZCBieSBgRXZlbnRQbHVnaW5IdWJgLiBUaGUgcGx1Z2luIG5hbWVzIG11c3QgYmVcbiAgICogaW4gdGhlIG9yZGVyaW5nIGluamVjdGVkIGJ5IGBpbmplY3RFdmVudFBsdWdpbk9yZGVyYC5cbiAgICpcbiAgICogUGx1Z2lucyBjYW4gYmUgaW5qZWN0ZWQgYXMgcGFydCBvZiBwYWdlIGluaXRpYWxpemF0aW9uIG9yIG9uLXRoZS1mbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogZnVuY3Rpb24gKGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcbiAgICB2YXIgaXNPcmRlcmluZ0RpcnR5ID0gZmFsc2U7XG4gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7XG4gICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgUGx1Z2luTW9kdWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICAgIGlmICghbmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkgfHwgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gIT09IFBsdWdpbk1vZHVsZSkge1xuICAgICAgICAhIW5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVudCBwbHVnaW5zICcgKyAndXNpbmcgdGhlIHNhbWUgbmFtZSwgYCVzYC4nLCBwbHVnaW5OYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID0gUGx1Z2luTW9kdWxlO1xuICAgICAgICBpc09yZGVyaW5nRGlydHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNPcmRlcmluZ0RpcnR5KSB7XG4gICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogTG9va3MgdXAgdGhlIHBsdWdpbiBmb3IgdGhlIHN1cHBsaWVkIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgQSBzeW50aGV0aWMgZXZlbnQuXG4gICAqIEByZXR1cm4gez9vYmplY3R9IFRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkIHRoZSBzdXBwbGllZCBldmVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7XG4gICAgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2Rpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWVdIHx8IG51bGw7XG4gICAgfVxuICAgIGZvciAodmFyIHBoYXNlIGluIGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICBpZiAoIWRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2Rpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBQbHVnaW5Nb2R1bGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0aW9uICgpIHtcbiAgICBFdmVudFBsdWdpbk9yZGVyID0gbnVsbDtcbiAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAgICBpZiAobmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnMubGVuZ3RoID0gMDtcblxuICAgIHZhciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztcbiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzKSB7XG4gICAgICBpZiAoZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG4gICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykge1xuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1WEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNHZLaXBjYmlBcUlFbHVhbVZqZEdGaWJHVWdiM0prWlhKcGJtY2diMllnWlhabGJuUWdjR3gxWjJsdWN5NWNiaUFxTDF4dWRtRnlJRVYyWlc1MFVHeDFaMmx1VDNKa1pYSWdQU0J1ZFd4c08xeHVYRzR2S2lwY2JpQXFJRWx1YW1WamRHRmliR1VnYldGd2NHbHVaeUJtY205dElHNWhiV1Z6SUhSdklHVjJaVzUwSUhCc2RXZHBiaUJ0YjJSMWJHVnpMbHh1SUNvdlhHNTJZWElnYm1GdFpYTlViMUJzZFdkcGJuTWdQU0I3ZlR0Y2JseHVMeW9xWEc0Z0tpQlNaV052YlhCMWRHVnpJSFJvWlNCd2JIVm5hVzRnYkdsemRDQjFjMmx1WnlCMGFHVWdhVzVxWldOMFpXUWdjR3gxWjJsdWN5QmhibVFnY0d4MVoybHVJRzl5WkdWeWFXNW5MbHh1SUNwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlISmxZMjl0Y0hWMFpWQnNkV2RwYms5eVpHVnlhVzVuS0NrZ2UxeHVJQ0JwWmlBb0lVVjJaVzUwVUd4MVoybHVUM0prWlhJcElIdGNiaUFnSUNBdkx5QlhZV2wwSUhWdWRHbHNJR0Z1SUdCRmRtVnVkRkJzZFdkcGJrOXlaR1Z5WUNCcGN5QnBibXBsWTNSbFpDNWNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnWm05eUlDaDJZWElnY0d4MVoybHVUbUZ0WlNCcGJpQnVZVzFsYzFSdlVHeDFaMmx1Y3lrZ2UxeHVJQ0FnSUhaaGNpQlFiSFZuYVc1TmIyUjFiR1VnUFNCdVlXMWxjMVJ2VUd4MVoybHVjMXR3YkhWbmFXNU9ZVzFsWFR0Y2JpQWdJQ0IyWVhJZ2NHeDFaMmx1U1c1a1pYZ2dQU0JGZG1WdWRGQnNkV2RwYms5eVpHVnlMbWx1WkdWNFQyWW9jR3gxWjJsdVRtRnRaU2s3WEc0Z0lDQWdJU2h3YkhWbmFXNUpibVJsZUNBK0lDMHhLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVPaUJEWVc1dWIzUWdhVzVxWldOMElHVjJaVzUwSUhCc2RXZHBibk1nZEdoaGRDQmtieUJ1YjNRZ1pYaHBjM1FnYVc0Z0p5QXJJQ2QwYUdVZ2NHeDFaMmx1SUc5eVpHVnlhVzVuTENCZ0pYTmdMaWNzSUhCc2RXZHBiazVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnBaaUFvUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1d2JIVm5hVzV6VzNCc2RXZHBia2x1WkdWNFhTa2dlMXh1SUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUNGUWJIVm5hVzVOYjJSMWJHVXVaWGgwY21GamRFVjJaVzUwY3lBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1T2lCRmRtVnVkQ0J3YkhWbmFXNXpJRzExYzNRZ2FXMXdiR1Z0Wlc1MElHRnVJR0JsZUhSeVlXTjBSWFpsYm5SellDQW5JQ3NnSjIxbGRHaHZaQ3dnWW5WMElHQWxjMkFnWkc5bGN5QnViM1F1Snl3Z2NHeDFaMmx1VG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y0d4MVoybHVjMXR3YkhWbmFXNUpibVJsZUYwZ1BTQlFiSFZuYVc1TmIyUjFiR1U3WEc0Z0lDQWdkbUZ5SUhCMVlteHBjMmhsWkVWMlpXNTBjeUE5SUZCc2RXZHBiazF2WkhWc1pTNWxkbVZ1ZEZSNWNHVnpPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHVjJaVzUwVG1GdFpTQnBiaUJ3ZFdKc2FYTm9aV1JGZG1WdWRITXBJSHRjYmlBZ0lDQWdJQ0Z3ZFdKc2FYTm9SWFpsYm5SR2IzSlFiSFZuYVc0b2NIVmliR2x6YUdWa1JYWmxiblJ6VzJWMlpXNTBUbUZ0WlYwc0lGQnNkV2RwYmsxdlpIVnNaU3dnWlhabGJuUk9ZVzFsS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1T2lCR1lXbHNaV1FnZEc4Z2NIVmliR2x6YUNCbGRtVnVkQ0JnSlhOZ0lHWnZjaUJ3YkhWbmFXNGdZQ1Z6WUM0bkxDQmxkbVZ1ZEU1aGJXVXNJSEJzZFdkcGJrNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQlFkV0pzYVhOb1pYTWdZVzRnWlhabGJuUWdjMjhnZEdoaGRDQnBkQ0JqWVc0Z1ltVWdaR2x6Y0dGMFkyaGxaQ0JpZVNCMGFHVWdjM1Z3Y0d4cFpXUWdjR3gxWjJsdUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCa2FYTndZWFJqYUVOdmJtWnBaeUJFYVhOd1lYUmphQ0JqYjI1bWFXZDFjbUYwYVc5dUlHWnZjaUIwYUdVZ1pYWmxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1VHeDFaMmx1VFc5a2RXeGxJRkJzZFdkcGJpQndkV0pzYVhOb2FXNW5JSFJvWlNCbGRtVnVkQzVjYmlBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ2RHaGxJR1YyWlc1MElIZGhjeUJ6ZFdOalpYTnpablZzYkhrZ2NIVmliR2x6YUdWa0xseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdjSFZpYkdsemFFVjJaVzUwUm05eVVHeDFaMmx1S0dScGMzQmhkR05vUTI5dVptbG5MQ0JRYkhWbmFXNU5iMlIxYkdVc0lHVjJaVzUwVG1GdFpTa2dlMXh1SUNBaElVVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua3VaWFpsYm5ST1lXMWxSR2x6Y0dGMFkyaERiMjVtYVdkekxtaGhjMDkzYmxCeWIzQmxjblI1S0dWMlpXNTBUbUZ0WlNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUlhabGJuUlFiSFZuYVc1SWRXSTZJRTF2Y21VZ2RHaGhiaUJ2Ym1VZ2NHeDFaMmx1SUdGMGRHVnRjSFJsWkNCMGJ5QndkV0pzYVhOb0lIUm9aU0J6WVcxbElDY2dLeUFuWlhabGJuUWdibUZ0WlN3Z1lDVnpZQzRuTENCbGRtVnVkRTVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNWxkbVZ1ZEU1aGJXVkVhWE53WVhSamFFTnZibVpwWjNOYlpYWmxiblJPWVcxbFhTQTlJR1JwYzNCaGRHTm9RMjl1Wm1sbk8xeHVYRzRnSUhaaGNpQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3lBOUlHUnBjM0JoZEdOb1EyOXVabWxuTG5Cb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPMXh1SUNCcFppQW9jR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCd2FHRnpaVTVoYldVZ2FXNGdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2h3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2FHRnpaVTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxJRDBnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTmJjR2hoYzJWT1lXMWxYVHRjYmlBZ0lDQWdJQ0FnY0hWaWJHbHphRkpsWjJsemRISmhkR2x2Yms1aGJXVW9jR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z1VHeDFaMmx1VFc5a2RXeGxMQ0JsZG1WdWRFNWhiV1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaGthWE53WVhSamFFTnZibVpwWnk1eVpXZHBjM1J5WVhScGIyNU9ZVzFsS1NCN1hHNGdJQ0FnY0hWaWJHbHphRkpsWjJsemRISmhkR2x2Yms1aGJXVW9aR2x6Y0dGMFkyaERiMjVtYVdjdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z1VHeDFaMmx1VFc5a2RXeGxMQ0JsZG1WdWRFNWhiV1VwTzF4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJtWVd4elpUdGNibjFjYmx4dUx5b3FYRzRnS2lCUWRXSnNhWE5vWlhNZ1lTQnlaV2RwYzNSeVlYUnBiMjRnYm1GdFpTQjBhR0YwSUdseklIVnpaV1FnZEc4Z2FXUmxiblJwWm5rZ1pHbHpjR0YwWTJobFpDQmxkbVZ1ZEhNZ1lXNWtYRzRnS2lCallXNGdZbVVnZFhObFpDQjNhWFJvSUdCRmRtVnVkRkJzZFdkcGJraDFZaTV3ZFhSTWFYTjBaVzVsY21BZ2RHOGdjbVZuYVhOMFpYSWdiR2x6ZEdWdVpYSnpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnlaV2RwYzNSeVlYUnBiMjVPWVcxbElGSmxaMmx6ZEhKaGRHbHZiaUJ1WVcxbElIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQlFiSFZuYVc1TmIyUjFiR1VnVUd4MVoybHVJSEIxWW14cGMyaHBibWNnZEdobElHVjJaVzUwTGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z2NIVmliR2x6YUZKbFoybHpkSEpoZEdsdmJrNWhiV1VvY21WbmFYTjBjbUYwYVc5dVRtRnRaU3dnVUd4MVoybHVUVzlrZFd4bExDQmxkbVZ1ZEU1aGJXVXBJSHRjYmlBZ0lTRkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbkpsWjJsemRISmhkR2x2Yms1aGJXVk5iMlIxYkdWelczSmxaMmx6ZEhKaGRHbHZiazVoYldWZElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWMlpXNTBVR3gxWjJsdVNIVmlPaUJOYjNKbElIUm9ZVzRnYjI1bElIQnNkV2RwYmlCaGRIUmxiWEIwWldRZ2RHOGdjSFZpYkdsemFDQjBhR1VnYzJGdFpTQW5JQ3NnSjNKbFoybHpkSEpoZEdsdmJpQnVZVzFsTENCZ0pYTmdMaWNzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjMXR5WldkcGMzUnlZWFJwYjI1T1lXMWxYU0E5SUZCc2RXZHBiazF2WkhWc1pUdGNiaUFnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsUkdWd1pXNWtaVzVqYVdWelczSmxaMmx6ZEhKaGRHbHZiazVoYldWZElEMGdVR3gxWjJsdVRXOWtkV3hsTG1WMlpXNTBWSGx3WlhOYlpYWmxiblJPWVcxbFhTNWtaWEJsYm1SbGJtTnBaWE03WEc1OVhHNWNiaThxS2x4dUlDb2dVbVZuYVhOMFpYSnpJSEJzZFdkcGJuTWdjMjhnZEdoaGRDQjBhR1Y1SUdOaGJpQmxlSFJ5WVdOMElHRnVaQ0JrYVhOd1lYUmphQ0JsZG1WdWRITXVYRzRnS2x4dUlDb2dRSE5sWlNCN1JYWmxiblJRYkhWbmFXNUlkV0o5WEc0Z0tpOWNiblpoY2lCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUlEMGdlMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlBjbVJsY21Wa0lHeHBjM1FnYjJZZ2FXNXFaV04wWldRZ2NHeDFaMmx1Y3k1Y2JpQWdJQ292WEc0Z0lIQnNkV2RwYm5NNklGdGRMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQk5ZWEJ3YVc1bklHWnliMjBnWlhabGJuUWdibUZ0WlNCMGJ5QmthWE53WVhSamFDQmpiMjVtYVdkY2JpQWdJQ292WEc0Z0lHVjJaVzUwVG1GdFpVUnBjM0JoZEdOb1EyOXVabWxuY3pvZ2UzMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFMWhjSEJwYm1jZ1puSnZiU0J5WldkcGMzUnlZWFJwYjI0Z2JtRnRaU0IwYnlCd2JIVm5hVzRnYlc5a2RXeGxYRzRnSUNBcUwxeHVJQ0J5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN6b2dlMzBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoY0hCcGJtY2dabkp2YlNCeVpXZHBjM1J5WVhScGIyNGdibUZ0WlNCMGJ5QmxkbVZ1ZENCdVlXMWxYRzRnSUNBcUwxeHVJQ0J5WldkcGMzUnlZWFJwYjI1T1lXMWxSR1Z3Wlc1a1pXNWphV1Z6T2lCN2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNXFaV04wY3lCaGJpQnZjbVJsY21sdVp5QnZaaUJ3YkhWbmFXNXpJQ2hpZVNCd2JIVm5hVzRnYm1GdFpTa3VJRlJvYVhNZ1lXeHNiM2R6SUhSb1pTQnZjbVJsY21sdVoxeHVJQ0FnS2lCMGJ5QmlaU0JrWldOdmRYQnNaV1FnWm5KdmJTQnBibXBsWTNScGIyNGdiMllnZEdobElHRmpkSFZoYkNCd2JIVm5hVzV6SUhOdklIUm9ZWFFnYjNKa1pYSnBibWNnYVhOY2JpQWdJQ29nWVd4M1lYbHpJR1JsZEdWeWJXbHVhWE4wYVdNZ2NtVm5ZWEprYkdWemN5QnZaaUJ3WVdOcllXZHBibWNzSUc5dUxYUm9aUzFtYkhrZ2FXNXFaV04wYVc5dUxDQmxkR011WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1lYSnlZWGw5SUVsdWFtVmpkR1ZrUlhabGJuUlFiSFZuYVc1UGNtUmxjbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvZ1FITmxaU0I3UlhabGJuUlFiSFZuYVc1SWRXSXVhVzVxWldOMGFXOXVMbWx1YW1WamRFVjJaVzUwVUd4MVoybHVUM0prWlhKOVhHNGdJQ0FxTDF4dUlDQnBibXBsWTNSRmRtVnVkRkJzZFdkcGJrOXlaR1Z5T2lCbWRXNWpkR2x2YmlBb1NXNXFaV04wWldSRmRtVnVkRkJzZFdkcGJrOXlaR1Z5S1NCN1hHNGdJQ0FnSVNGRmRtVnVkRkJzZFdkcGJrOXlaR1Z5SUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbms2SUVOaGJtNXZkQ0JwYm1wbFkzUWdaWFpsYm5RZ2NHeDFaMmx1SUc5eVpHVnlhVzVuSUcxdmNtVWdkR2hoYmlBbklDc2dKMjl1WTJVdUlGbHZkU0JoY21VZ2JHbHJaV3g1SUhSeWVXbHVaeUIwYnlCc2IyRmtJRzF2Y21VZ2RHaGhiaUJ2Ym1VZ1kyOXdlU0J2WmlCU1pXRmpkQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0x5OGdRMnh2Ym1VZ2RHaGxJRzl5WkdWeWFXNW5JSE52SUdsMElHTmhibTV2ZENCaVpTQmtlVzVoYldsallXeHNlU0J0ZFhSaGRHVmtMbHh1SUNBZ0lFVjJaVzUwVUd4MVoybHVUM0prWlhJZ1BTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaEpibXBsWTNSbFpFVjJaVzUwVUd4MVoybHVUM0prWlhJcE8xeHVJQ0FnSUhKbFkyOXRjSFYwWlZCc2RXZHBiazl5WkdWeWFXNW5LQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhbVZqZEhNZ2NHeDFaMmx1Y3lCMGJ5QmlaU0IxYzJWa0lHSjVJR0JGZG1WdWRGQnNkV2RwYmtoMVltQXVJRlJvWlNCd2JIVm5hVzRnYm1GdFpYTWdiWFZ6ZENCaVpWeHVJQ0FnS2lCcGJpQjBhR1VnYjNKa1pYSnBibWNnYVc1cVpXTjBaV1FnWW5rZ1lHbHVhbVZqZEVWMlpXNTBVR3gxWjJsdVQzSmtaWEpnTGx4dUlDQWdLbHh1SUNBZ0tpQlFiSFZuYVc1eklHTmhiaUJpWlNCcGJtcGxZM1JsWkNCaGN5QndZWEowSUc5bUlIQmhaMlVnYVc1cGRHbGhiR2w2WVhScGIyNGdiM0lnYjI0dGRHaGxMV1pzZVM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHbHVhbVZqZEdWa1RtRnRaWE5VYjFCc2RXZHBibk1nVFdGd0lHWnliMjBnYm1GdFpYTWdkRzhnY0d4MVoybHVJRzF2WkhWc1pYTXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2lCQWMyVmxJSHRGZG1WdWRGQnNkV2RwYmtoMVlpNXBibXBsWTNScGIyNHVhVzVxWldOMFJYWmxiblJRYkhWbmFXNXpRbmxPWVcxbGZWeHVJQ0FnS2k5Y2JpQWdhVzVxWldOMFJYWmxiblJRYkhWbmFXNXpRbmxPWVcxbE9pQm1kVzVqZEdsdmJpQW9hVzVxWldOMFpXUk9ZVzFsYzFSdlVHeDFaMmx1Y3lrZ2UxeHVJQ0FnSUhaaGNpQnBjMDl5WkdWeWFXNW5SR2x5ZEhrZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3YkhWbmFXNU9ZVzFsSUdsdUlHbHVhbVZqZEdWa1RtRnRaWE5VYjFCc2RXZHBibk1wSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hhVzVxWldOMFpXUk9ZVzFsYzFSdlVHeDFaMmx1Y3k1b1lYTlBkMjVRY205d1pYSjBlU2h3YkhWbmFXNU9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIWmhjaUJRYkhWbmFXNU5iMlIxYkdVZ1BTQnBibXBsWTNSbFpFNWhiV1Z6Vkc5UWJIVm5hVzV6VzNCc2RXZHBiazVoYldWZE8xeHVJQ0FnSUNBZ2FXWWdLQ0Z1WVcxbGMxUnZVR3gxWjJsdWN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2JIVm5hVzVPWVcxbEtTQjhmQ0J1WVcxbGMxUnZVR3gxWjJsdWMxdHdiSFZuYVc1T1lXMWxYU0FoUFQwZ1VHeDFaMmx1VFc5a2RXeGxLU0I3WEc0Z0lDQWdJQ0FnSUNFaGJtRnRaWE5VYjFCc2RXZHBibk5iY0d4MVoybHVUbUZ0WlYwZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVRvZ1EyRnVibTkwSUdsdWFtVmpkQ0IwZDI4Z1pHbG1abVZ5Wlc1MElHVjJaVzUwSUhCc2RXZHBibk1nSnlBcklDZDFjMmx1WnlCMGFHVWdjMkZ0WlNCdVlXMWxMQ0JnSlhOZ0xpY3NJSEJzZFdkcGJrNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdibUZ0WlhOVWIxQnNkV2RwYm5OYmNHeDFaMmx1VG1GdFpWMGdQU0JRYkhWbmFXNU5iMlIxYkdVN1hHNGdJQ0FnSUNBZ0lHbHpUM0prWlhKcGJtZEVhWEowZVNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hwYzA5eVpHVnlhVzVuUkdseWRIa3BJSHRjYmlBZ0lDQWdJSEpsWTI5dGNIVjBaVkJzZFdkcGJrOXlaR1Z5YVc1bktDazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJNYjI5cmN5QjFjQ0IwYUdVZ2NHeDFaMmx1SUdadmNpQjBhR1VnYzNWd2NHeHBaV1FnWlhabGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JsZG1WdWRDQkJJSE41Ym5Sb1pYUnBZeUJsZG1WdWRDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AyOWlhbVZqZEgwZ1ZHaGxJSEJzZFdkcGJpQjBhR0YwSUdOeVpXRjBaV1FnZEdobElITjFjSEJzYVdWa0lHVjJaVzUwTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdkbGRGQnNkV2RwYmsxdlpIVnNaVVp2Y2tWMlpXNTBPaUJtZFc1amRHbHZiaUFvWlhabGJuUXBJSHRjYmlBZ0lDQjJZWElnWkdsemNHRjBZMmhEYjI1bWFXY2dQU0JsZG1WdWRDNWthWE53WVhSamFFTnZibVpwWnp0Y2JpQWdJQ0JwWmlBb1pHbHpjR0YwWTJoRGIyNW1hV2N1Y21WbmFYTjBjbUYwYVc5dVRtRnRaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTmJaR2x6Y0dGMFkyaERiMjVtYVdjdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlYwZ2ZId2diblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdabTl5SUNoMllYSWdjR2hoYzJVZ2FXNGdaR2x6Y0dGMFkyaERiMjVtYVdjdWNHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE1wSUh0Y2JpQWdJQ0FnSUdsbUlDZ2haR2x6Y0dGMFkyaERiMjVtYVdjdWNHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jR2hoYzJVcEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUZCc2RXZHBiazF2WkhWc1pTQTlJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTmJaR2x6Y0dGMFkyaERiMjVtYVdjdWNHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE5iY0doaGMyVmRYVHRjYmlBZ0lDQWdJR2xtSUNoUWJIVm5hVzVOYjJSMWJHVXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRkJzZFdkcGJrMXZaSFZzWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVjRjRzl6WldRZ1ptOXlJSFZ1YVhRZ2RHVnpkR2x1Wnk1Y2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb3ZYRzRnSUY5eVpYTmxkRVYyWlc1MFVHeDFaMmx1Y3pvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lFVjJaVzUwVUd4MVoybHVUM0prWlhJZ1BTQnVkV3hzTzF4dUlDQWdJR1p2Y2lBb2RtRnlJSEJzZFdkcGJrNWhiV1VnYVc0Z2JtRnRaWE5VYjFCc2RXZHBibk1wSUh0Y2JpQWdJQ0FnSUdsbUlDaHVZVzFsYzFSdlVHeDFaMmx1Y3k1b1lYTlBkMjVRY205d1pYSjBlU2h3YkhWbmFXNU9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2JtRnRaWE5VYjFCc2RXZHBibk5iY0d4MVoybHVUbUZ0WlYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y0d4MVoybHVjeTVzWlc1bmRHZ2dQU0F3TzF4dVhHNGdJQ0FnZG1GeUlHVjJaVzUwVG1GdFpVUnBjM0JoZEdOb1EyOXVabWxuY3lBOUlFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua3VaWFpsYm5ST1lXMWxSR2x6Y0dGMFkyaERiMjVtYVdkek8xeHVJQ0FnSUdadmNpQW9kbUZ5SUdWMlpXNTBUbUZ0WlNCcGJpQmxkbVZ1ZEU1aGJXVkVhWE53WVhSamFFTnZibVpwWjNNcElIdGNiaUFnSUNBZ0lHbG1JQ2hsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb1pYWmxiblJPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JrWld4bGRHVWdaWFpsYm5ST1lXMWxSR2x6Y0dGMFkyaERiMjVtYVdkelcyVjJaVzUwVG1GdFpWMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJSEpsWjJsemRISmhkR2x2Yms1aGJXVk5iMlIxYkdWeklEMGdSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzV5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN6dGNiaUFnSUNCbWIzSWdLSFpoY2lCeVpXZHBjM1J5WVhScGIyNU9ZVzFsSUdsdUlISmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9jbVZuYVhOMGNtRjBhVzl1VG1GdFpVMXZaSFZzWlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY21WbmFYTjBjbUYwYVc5dVRtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ1pHVnNaWFJsSUhKbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpXM0psWjJsemRISmhkR2x2Yms1aGJXVmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV2ZW50UGx1Z2luVXRpbHNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGlscycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBJbmplY3RlZCBkZXBlbmRlbmNpZXM6XG4gKi9cblxuLyoqXG4gKiAtIGBNb3VudGA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBkb20gSURzIGFuZFxuICogICBhY3R1YWwgbm9kZSByZWZlcmVuY2VzLlxuICovXG52YXIgaW5qZWN0aW9uID0ge1xuICBNb3VudDogbnVsbCxcbiAgaW5qZWN0TW91bnQ6IGZ1bmN0aW9uIChJbmplY3RlZE1vdW50KSB7XG4gICAgaW5qZWN0aW9uLk1vdW50ID0gSW5qZWN0ZWRNb3VudDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWRNb3VudCAmJiBJbmplY3RlZE1vdW50LmdldE5vZGUgJiYgSW5qZWN0ZWRNb3VudC5nZXRJRCwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdE1vdW50KC4uLik6IEluamVjdGVkIE1vdW50ICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgZ2V0Tm9kZSBvciBnZXRJRC4nKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciB0b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcztcblxuZnVuY3Rpb24gaXNFbmRpc2godG9wTGV2ZWxUeXBlKSB7XG4gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wTW91c2VVcCB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wVG91Y2hFbmQgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoQ2FuY2VsO1xufVxuXG5mdW5jdGlvbiBpc01vdmVpc2godG9wTGV2ZWxUeXBlKSB7XG4gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wTW91c2VNb3ZlIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BUb3VjaE1vdmU7XG59XG5mdW5jdGlvbiBpc1N0YXJ0aXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93biB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wVG91Y2hTdGFydDtcbn1cblxudmFyIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gICAgdmFyIGRpc3BhdGNoSURzID0gZXZlbnQuX2Rpc3BhdGNoSURzO1xuXG4gICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycyk7XG4gICAgdmFyIGlkc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaElEcyk7XG4gICAgdmFyIElEc0xlbiA9IGlkc0lzQXJyID8gZGlzcGF0Y2hJRHMubGVuZ3RoIDogZGlzcGF0Y2hJRHMgPyAxIDogMDtcbiAgICB2YXIgbGlzdGVuZXJzTGVuID0gbGlzdGVuZXJzSXNBcnIgPyBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGggOiBkaXNwYXRjaExpc3RlbmVycyA/IDEgOiAwO1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaWRzSXNBcnIgPT09IGxpc3RlbmVyc0lzQXJyICYmIElEc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5VdGlsczogSW52YWxpZCBgZXZlbnRgLicpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG4vKipcbiAqIERpc3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlzdGVuZXIuXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBTeW50aGV0aWNFdmVudCB0byBoYW5kbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBkb21JRCBET00gaWQgdG8gcGFzcyB0byB0aGUgY2FsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBsaXN0ZW5lciwgZG9tSUQpIHtcbiAgdmFyIHR5cGUgPSBldmVudC50eXBlIHx8ICd1bmtub3duLWV2ZW50JztcbiAgZXZlbnQuY3VycmVudFRhcmdldCA9IGluamVjdGlvbi5Nb3VudC5nZXROb2RlKGRvbUlEKTtcbiAgaWYgKHNpbXVsYXRlZCkge1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2godHlwZSwgbGlzdGVuZXIsIGV2ZW50LCBkb21JRCk7XG4gIH0gZWxzZSB7XG4gICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQsIGRvbUlEKTtcbiAgfVxuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcy5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJRHMgPSBldmVudC5fZGlzcGF0Y2hJRHM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuZXJzIGFuZCBJRHMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMuXG4gICAgICBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVsYXRlZCwgZGlzcGF0Y2hMaXN0ZW5lcnNbaV0sIGRpc3BhdGNoSURzW2ldKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHtcbiAgICBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVsYXRlZCwgZGlzcGF0Y2hMaXN0ZW5lcnMsIGRpc3BhdGNoSURzKTtcbiAgfVxuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hJRHMgPSBudWxsO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLCBidXQgc3RvcHNcbiAqIGF0IHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gcmV0dXJuaW5nIHRydWUsIGFuZCByZXR1cm5zIHRoYXQgaWQuXG4gKlxuICogQHJldHVybiB7P3N0cmluZ30gaWQgb2YgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiB3aG8ncyBsaXN0ZW5lciByZXR1cm5zXG4gKiB0cnVlLCBvciBudWxsIGlmIG5vIGxpc3RlbmVyIHJldHVybmVkIHRydWUuXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KSB7XG4gIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgdmFyIGRpc3BhdGNoSURzID0gZXZlbnQuX2Rpc3BhdGNoSURzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIExpc3RlbmVycyBhbmQgSURzIGFyZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLlxuICAgICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJzW2ldKGV2ZW50LCBkaXNwYXRjaElEc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BhdGNoSURzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykge1xuICAgIGlmIChkaXNwYXRjaExpc3RlbmVycyhldmVudCwgZGlzcGF0Y2hJRHMpKSB7XG4gICAgICByZXR1cm4gZGlzcGF0Y2hJRHM7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEBzZWUgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGxcbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZShldmVudCkge1xuICB2YXIgcmV0ID0gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpO1xuICBldmVudC5fZGlzcGF0Y2hJRHMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIEV4ZWN1dGlvbiBvZiBhIFwiZGlyZWN0XCIgZGlzcGF0Y2ggLSB0aGVyZSBtdXN0IGJlIGF0IG1vc3Qgb25lIGRpc3BhdGNoXG4gKiBhY2N1bXVsYXRlZCBvbiB0aGUgZXZlbnQgb3IgaXQgaXMgY29uc2lkZXJlZCBhbiBlcnJvci4gSXQgZG9lc24ndCByZWFsbHkgbWFrZVxuICogc2Vuc2UgZm9yIGFuIGV2ZW50IHdpdGggbXVsdGlwbGUgZGlzcGF0Y2hlcyAoYnViYmxlZCkgdG8ga2VlcCB0cmFjayBvZiB0aGVcbiAqIHJldHVybiB2YWx1ZXMgYXQgZWFjaCBkaXNwYXRjaCBleGVjdXRpb24sIGJ1dCBpdCBkb2VzIHRlbmQgdG8gbWFrZSBzZW5zZSB3aGVuXG4gKiBkZWFsaW5nIHdpdGggXCJkaXJlY3RcIiBkaXNwYXRjaGVzLlxuICpcbiAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgZXhlY3V0aW5nIHRoZSBzaW5nbGUgZGlzcGF0Y2guXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNwYXRjaChldmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAgfVxuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lciA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgdmFyIGRpc3BhdGNoSUQgPSBldmVudC5fZGlzcGF0Y2hJRHM7XG4gICEhQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdleGVjdXRlRGlyZWN0RGlzcGF0Y2goLi4uKTogSW52YWxpZCBgZXZlbnRgLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgdmFyIHJlcyA9IGRpc3BhdGNoTGlzdGVuZXIgPyBkaXNwYXRjaExpc3RlbmVyKGV2ZW50LCBkaXNwYXRjaElEKSA6IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaElEcyA9IG51bGw7XG4gIHJldHVybiByZXM7XG59XG5cbi8qKlxuICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVzIGFjY3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLlxuICovXG5mdW5jdGlvbiBoYXNEaXNwYXRjaGVzKGV2ZW50KSB7XG4gIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbn1cblxuLyoqXG4gKiBHZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwgaW4gY3JlYXRpbmcgY3VzdG9tIEV2ZW50IFBsdWdpbnMuXG4gKi9cbnZhciBFdmVudFBsdWdpblV0aWxzID0ge1xuICBpc0VuZGlzaDogaXNFbmRpc2gsXG4gIGlzTW92ZWlzaDogaXNNb3ZlaXNoLFxuICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNoLFxuXG4gIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3BhdGNoLFxuICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcixcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZSxcbiAgaGFzRGlzcGF0Y2hlczogaGFzRGlzcGF0Y2hlcyxcblxuICBnZXROb2RlOiBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4gaW5qZWN0aW9uLk1vdW50LmdldE5vZGUoaWQpO1xuICB9LFxuICBnZXRJRDogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gaW5qZWN0aW9uLk1vdW50LmdldElEKG5vZGUpO1xuICB9LFxuXG4gIGluamVjdGlvbjogaW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2UlhabGJuUlFiSFZuYVc1VmRHbHNjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCRmRtVnVkRkJzZFdkcGJsVjBhV3h6WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1JYWmxiblJEYjI1emRHRnVkSE1nUFNCeVpYRjFhWEpsS0NjdUwwVjJaVzUwUTI5dWMzUmhiblJ6SnlrN1hHNTJZWElnVW1WaFkzUkZjbkp2Y2xWMGFXeHpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZ5Y205eVZYUnBiSE1uS1R0Y2JseHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYmk4cUtseHVJQ29nU1c1cVpXTjBaV1FnWkdWd1pXNWtaVzVqYVdWek9seHVJQ292WEc1Y2JpOHFLbHh1SUNvZ0xTQmdUVzkxYm5SZ09pQmJjbVZ4ZFdseVpXUmRJRTF2WkhWc1pTQjBhR0YwSUdOaGJpQmpiMjUyWlhKMElHSmxkSGRsWlc0Z1VtVmhZM1FnWkc5dElFbEVjeUJoYm1SY2JpQXFJQ0FnWVdOMGRXRnNJRzV2WkdVZ2NtVm1aWEpsYm1ObGN5NWNiaUFxTDF4dWRtRnlJR2x1YW1WamRHbHZiaUE5SUh0Y2JpQWdUVzkxYm5RNklHNTFiR3dzWEc0Z0lHbHVhbVZqZEUxdmRXNTBPaUJtZFc1amRHbHZiaUFvU1c1cVpXTjBaV1JOYjNWdWRDa2dlMXh1SUNBZ0lHbHVhbVZqZEdsdmJpNU5iM1Z1ZENBOUlFbHVhbVZqZEdWa1RXOTFiblE3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LRWx1YW1WamRHVmtUVzkxYm5RZ0ppWWdTVzVxWldOMFpXUk5iM1Z1ZEM1blpYUk9iMlJsSUNZbUlFbHVhbVZqZEdWa1RXOTFiblF1WjJWMFNVUXNJQ2RGZG1WdWRGQnNkV2RwYmxWMGFXeHpMbWx1YW1WamRHbHZiaTVwYm1wbFkzUk5iM1Z1ZENndUxpNHBPaUJKYm1wbFkzUmxaQ0JOYjNWdWRDQW5JQ3NnSjIxdlpIVnNaU0JwY3lCdGFYTnphVzVuSUdkbGRFNXZaR1VnYjNJZ1oyVjBTVVF1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ2RHOXdUR1YyWld4VWVYQmxjeUE5SUVWMlpXNTBRMjl1YzNSaGJuUnpMblJ2Y0V4bGRtVnNWSGx3WlhNN1hHNWNibVoxYm1OMGFXOXVJR2x6Ulc1a2FYTm9LSFJ2Y0V4bGRtVnNWSGx3WlNrZ2UxeHVJQ0J5WlhSMWNtNGdkRzl3VEdWMlpXeFVlWEJsSUQwOVBTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFMXZkWE5sVlhBZ2ZId2dkRzl3VEdWMlpXeFVlWEJsSUQwOVBTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGUnZkV05vUlc1a0lIeDhJSFJ2Y0V4bGRtVnNWSGx3WlNBOVBUMGdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlViM1ZqYUVOaGJtTmxiRHRjYm4xY2JseHVablZ1WTNScGIyNGdhWE5OYjNabGFYTm9LSFJ2Y0V4bGRtVnNWSGx3WlNrZ2UxeHVJQ0J5WlhSMWNtNGdkRzl3VEdWMlpXeFVlWEJsSUQwOVBTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFMXZkWE5sVFc5MlpTQjhmQ0IwYjNCTVpYWmxiRlI1Y0dVZ1BUMDlJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoTmIzWmxPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2FYTlRkR0Z5ZEdsemFDaDBiM0JNWlhabGJGUjVjR1VwSUh0Y2JpQWdjbVYwZFhKdUlIUnZjRXhsZG1Wc1ZIbHdaU0E5UFQwZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCTmIzVnpaVVJ2ZDI0Z2ZId2dkRzl3VEdWMlpXeFVlWEJsSUQwOVBTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGUnZkV05vVTNSaGNuUTdYRzU5WEc1Y2JuWmhjaUIyWVd4cFpHRjBaVVYyWlc1MFJHbHpjR0YwWTJobGN6dGNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUhaaGJHbGtZWFJsUlhabGJuUkVhWE53WVhSamFHVnpJRDBnWm5WdVkzUnBiMjRnS0dWMlpXNTBLU0I3WEc0Z0lDQWdkbUZ5SUdScGMzQmhkR05vVEdsemRHVnVaWEp6SUQwZ1pYWmxiblF1WDJScGMzQmhkR05vVEdsemRHVnVaWEp6TzF4dUlDQWdJSFpoY2lCa2FYTndZWFJqYUVsRWN5QTlJR1YyWlc1MExsOWthWE53WVhSamFFbEVjenRjYmx4dUlDQWdJSFpoY2lCc2FYTjBaVzVsY25OSmMwRnljaUE5SUVGeWNtRjVMbWx6UVhKeVlYa29aR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTXBPMXh1SUNBZ0lIWmhjaUJwWkhOSmMwRnljaUE5SUVGeWNtRjVMbWx6UVhKeVlYa29aR2x6Y0dGMFkyaEpSSE1wTzF4dUlDQWdJSFpoY2lCSlJITk1aVzRnUFNCcFpITkpjMEZ5Y2lBL0lHUnBjM0JoZEdOb1NVUnpMbXhsYm1kMGFDQTZJR1JwYzNCaGRHTm9TVVJ6SUQ4Z01TQTZJREE3WEc0Z0lDQWdkbUZ5SUd4cGMzUmxibVZ5YzB4bGJpQTlJR3hwYzNSbGJtVnljMGx6UVhKeUlEOGdaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTXViR1Z1WjNSb0lEb2daR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTWdQeUF4SURvZ01EdGNibHh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR2xrYzBselFYSnlJRDA5UFNCc2FYTjBaVzVsY25OSmMwRnljaUFtSmlCSlJITk1aVzRnUFQwOUlHeHBjM1JsYm1WeWMweGxiaXdnSjBWMlpXNTBVR3gxWjJsdVZYUnBiSE02SUVsdWRtRnNhV1FnWUdWMlpXNTBZQzRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlR0Y2JuMWNibHh1THlvcVhHNGdLaUJFYVhOd1lYUmphQ0IwYUdVZ1pYWmxiblFnZEc4Z2RHaGxJR3hwYzNSbGJtVnlMbHh1SUNvZ1FIQmhjbUZ0SUh0VGVXNTBhR1YwYVdORmRtVnVkSDBnWlhabGJuUWdVM2x1ZEdobGRHbGpSWFpsYm5RZ2RHOGdhR0Z1Wkd4bFhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSE5wYlhWc1lYUmxaQ0JKWmlCMGFHVWdaWFpsYm5RZ2FYTWdjMmx0ZFd4aGRHVmtJQ2hqYUdGdVoyVnpJR1Y0YmlCaVpXaGhkbWx2Y2lsY2JpQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJR3hwYzNSbGJtVnlJRUZ3Y0d4cFkyRjBhVzl1TFd4bGRtVnNJR05oYkd4aVlXTnJYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWkc5dFNVUWdSRTlOSUdsa0lIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOaGJHeGlZV05yTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJsZUdWamRYUmxSR2x6Y0dGMFkyZ29aWFpsYm5Rc0lITnBiWFZzWVhSbFpDd2diR2x6ZEdWdVpYSXNJR1J2YlVsRUtTQjdYRzRnSUhaaGNpQjBlWEJsSUQwZ1pYWmxiblF1ZEhsd1pTQjhmQ0FuZFc1cmJtOTNiaTFsZG1WdWRDYzdYRzRnSUdWMlpXNTBMbU4xY25KbGJuUlVZWEpuWlhRZ1BTQnBibXBsWTNScGIyNHVUVzkxYm5RdVoyVjBUbTlrWlNoa2IyMUpSQ2s3WEc0Z0lHbG1JQ2h6YVcxMWJHRjBaV1FwSUh0Y2JpQWdJQ0JTWldGamRFVnljbTl5VlhScGJITXVhVzUyYjJ0bFIzVmhjbVJsWkVOaGJHeGlZV05yVjJsMGFFTmhkR05vS0hSNWNHVXNJR3hwYzNSbGJtVnlMQ0JsZG1WdWRDd2daRzl0U1VRcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lGSmxZV04wUlhKeWIzSlZkR2xzY3k1cGJuWnZhMlZIZFdGeVpHVmtRMkZzYkdKaFkyc29kSGx3WlN3Z2JHbHpkR1Z1WlhJc0lHVjJaVzUwTENCa2IyMUpSQ2s3WEc0Z0lIMWNiaUFnWlhabGJuUXVZM1Z5Y21WdWRGUmhjbWRsZENBOUlHNTFiR3c3WEc1OVhHNWNiaThxS2x4dUlDb2dVM1JoYm1SaGNtUXZjMmx0Y0d4bElHbDBaWEpoZEdsdmJpQjBhSEp2ZFdkb0lHRnVJR1YyWlc1MEozTWdZMjlzYkdWamRHVmtJR1JwYzNCaGRHTm9aWE11WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpTVzVQY21SbGNpaGxkbVZ1ZEN3Z2MybHRkV3hoZEdWa0tTQjdYRzRnSUhaaGNpQmthWE53WVhSamFFeHBjM1JsYm1WeWN5QTlJR1YyWlc1MExsOWthWE53WVhSamFFeHBjM1JsYm1WeWN6dGNiaUFnZG1GeUlHUnBjM0JoZEdOb1NVUnpJRDBnWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6TzF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhaaGJHbGtZWFJsUlhabGJuUkVhWE53WVhSamFHVnpLR1YyWlc1MEtUdGNiaUFnZlZ4dUlDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaGthWE53WVhSamFFeHBjM1JsYm1WeWN5a3BJSHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR1JwYzNCaGRHTm9UR2x6ZEdWdVpYSnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9aWFpsYm5RdWFYTlFjbTl3WVdkaGRHbHZibE4wYjNCd1pXUW9LU2tnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJQzh2SUV4cGMzUmxibVZ5Y3lCaGJtUWdTVVJ6SUdGeVpTQjBkMjhnY0dGeVlXeHNaV3dnWVhKeVlYbHpJSFJvWVhRZ1lYSmxJR0ZzZDJGNWN5QnBiaUJ6ZVc1akxseHVJQ0FnSUNBZ1pYaGxZM1YwWlVScGMzQmhkR05vS0dWMlpXNTBMQ0J6YVcxMWJHRjBaV1FzSUdScGMzQmhkR05vVEdsemRHVnVaWEp6VzJsZExDQmthWE53WVhSamFFbEVjMXRwWFNrN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2FXWWdLR1JwYzNCaGRHTm9UR2x6ZEdWdVpYSnpLU0I3WEc0Z0lDQWdaWGhsWTNWMFpVUnBjM0JoZEdOb0tHVjJaVzUwTENCemFXMTFiR0YwWldRc0lHUnBjM0JoZEdOb1RHbHpkR1Z1WlhKekxDQmthWE53WVhSamFFbEVjeWs3WEc0Z0lIMWNiaUFnWlhabGJuUXVYMlJwYzNCaGRHTm9UR2x6ZEdWdVpYSnpJRDBnYm5Wc2JEdGNiaUFnWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6SUQwZ2JuVnNiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlRkR0Z1WkdGeVpDOXphVzF3YkdVZ2FYUmxjbUYwYVc5dUlIUm9jbTkxWjJnZ1lXNGdaWFpsYm5RbmN5QmpiMnhzWldOMFpXUWdaR2x6Y0dGMFkyaGxjeXdnWW5WMElITjBiM0J6WEc0Z0tpQmhkQ0IwYUdVZ1ptbHljM1FnWkdsemNHRjBZMmdnWlhobFkzVjBhVzl1SUhKbGRIVnlibWx1WnlCMGNuVmxMQ0JoYm1RZ2NtVjBkWEp1Y3lCMGFHRjBJR2xrTGx4dUlDcGNiaUFxSUVCeVpYUjFjbTRnZXo5emRISnBibWQ5SUdsa0lHOW1JSFJvWlNCbWFYSnpkQ0JrYVhOd1lYUmphQ0JsZUdWamRYUnBiMjRnZDJodkozTWdiR2x6ZEdWdVpYSWdjbVYwZFhKdWMxeHVJQ29nZEhKMVpTd2diM0lnYm5Wc2JDQnBaaUJ1YnlCc2FYTjBaVzVsY2lCeVpYUjFjbTVsWkNCMGNuVmxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmxlR1ZqZFhSbFJHbHpjR0YwWTJobGMwbHVUM0prWlhKVGRHOXdRWFJVY25WbFNXMXdiQ2hsZG1WdWRDa2dlMXh1SUNCMllYSWdaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTWdQU0JsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTTdYRzRnSUhaaGNpQmthWE53WVhSamFFbEVjeUE5SUdWMlpXNTBMbDlrYVhOd1lYUmphRWxFY3p0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCMllXeHBaR0YwWlVWMlpXNTBSR2x6Y0dGMFkyaGxjeWhsZG1WdWRDazdYRzRnSUgxY2JpQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29aR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTXBLU0I3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JrYVhOd1lYUmphRXhwYzNSbGJtVnljeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLR1YyWlc1MExtbHpVSEp2Y0dGbllYUnBiMjVUZEc5d2NHVmtLQ2twSUh0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2THlCTWFYTjBaVzVsY25NZ1lXNWtJRWxFY3lCaGNtVWdkSGR2SUhCaGNtRnNiR1ZzSUdGeWNtRjVjeUIwYUdGMElHRnlaU0JoYkhkaGVYTWdhVzRnYzNsdVl5NWNiaUFnSUNBZ0lHbG1JQ2hrYVhOd1lYUmphRXhwYzNSbGJtVnljMXRwWFNobGRtVnVkQ3dnWkdsemNHRjBZMmhKUkhOYmFWMHBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYVhOd1lYUmphRWxFYzF0cFhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBnWld4elpTQnBaaUFvWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1wSUh0Y2JpQWdJQ0JwWmlBb1pHbHpjR0YwWTJoTWFYTjBaVzVsY25Nb1pYWmxiblFzSUdScGMzQmhkR05vU1VSektTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHUnBjM0JoZEdOb1NVUnpPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2JuVnNiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjMlZsSUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6U1c1UGNtUmxjbE4wYjNCQmRGUnlkV1ZKYlhCc1hHNGdLaTljYm1aMWJtTjBhVzl1SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6U1c1UGNtUmxjbE4wYjNCQmRGUnlkV1VvWlhabGJuUXBJSHRjYmlBZ2RtRnlJSEpsZENBOUlHVjRaV04xZEdWRWFYTndZWFJqYUdWelNXNVBjbVJsY2xOMGIzQkJkRlJ5ZFdWSmJYQnNLR1YyWlc1MEtUdGNiaUFnWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6SUQwZ2JuVnNiRHRjYmlBZ1pYWmxiblF1WDJScGMzQmhkR05vVEdsemRHVnVaWEp6SUQwZ2JuVnNiRHRjYmlBZ2NtVjBkWEp1SUhKbGREdGNibjFjYmx4dUx5b3FYRzRnS2lCRmVHVmpkWFJwYjI0Z2IyWWdZU0JjSW1ScGNtVmpkRndpSUdScGMzQmhkR05vSUMwZ2RHaGxjbVVnYlhWemRDQmlaU0JoZENCdGIzTjBJRzl1WlNCa2FYTndZWFJqYUZ4dUlDb2dZV05qZFcxMWJHRjBaV1FnYjI0Z2RHaGxJR1YyWlc1MElHOXlJR2wwSUdseklHTnZibk5wWkdWeVpXUWdZVzRnWlhKeWIzSXVJRWwwSUdSdlpYTnVKM1FnY21WaGJHeDVJRzFoYTJWY2JpQXFJSE5sYm5ObElHWnZjaUJoYmlCbGRtVnVkQ0IzYVhSb0lHMTFiSFJwY0d4bElHUnBjM0JoZEdOb1pYTWdLR0oxWW1Kc1pXUXBJSFJ2SUd0bFpYQWdkSEpoWTJzZ2IyWWdkR2hsWEc0Z0tpQnlaWFIxY200Z2RtRnNkV1Z6SUdGMElHVmhZMmdnWkdsemNHRjBZMmdnWlhobFkzVjBhVzl1TENCaWRYUWdhWFFnWkc5bGN5QjBaVzVrSUhSdklHMWhhMlVnYzJWdWMyVWdkMmhsYmx4dUlDb2daR1ZoYkdsdVp5QjNhWFJvSUZ3aVpHbHlaV04wWENJZ1pHbHpjR0YwWTJobGN5NWNiaUFxWEc0Z0tpQkFjbVYwZFhKdUlIc3FmU0JVYUdVZ2NtVjBkWEp1SUhaaGJIVmxJRzltSUdWNFpXTjFkR2x1WnlCMGFHVWdjMmx1WjJ4bElHUnBjM0JoZEdOb0xseHVJQ292WEc1bWRXNWpkR2x2YmlCbGVHVmpkWFJsUkdseVpXTjBSR2x6Y0dGMFkyZ29aWFpsYm5RcElIdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQjJZV3hwWkdGMFpVVjJaVzUwUkdsemNHRjBZMmhsY3lobGRtVnVkQ2s3WEc0Z0lIMWNiaUFnZG1GeUlHUnBjM0JoZEdOb1RHbHpkR1Z1WlhJZ1BTQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25NN1hHNGdJSFpoY2lCa2FYTndZWFJqYUVsRUlEMGdaWFpsYm5RdVgyUnBjM0JoZEdOb1NVUnpPMXh1SUNBaElVRnljbUY1TG1selFYSnlZWGtvWkdsemNHRjBZMmhNYVhOMFpXNWxjaWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5aWGhsWTNWMFpVUnBjbVZqZEVScGMzQmhkR05vS0M0dUxpazZJRWx1ZG1Gc2FXUWdZR1YyWlc1MFlDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSFpoY2lCeVpYTWdQU0JrYVhOd1lYUmphRXhwYzNSbGJtVnlJRDhnWkdsemNHRjBZMmhNYVhOMFpXNWxjaWhsZG1WdWRDd2daR2x6Y0dGMFkyaEpSQ2tnT2lCdWRXeHNPMXh1SUNCbGRtVnVkQzVmWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1nUFNCdWRXeHNPMXh1SUNCbGRtVnVkQzVmWkdsemNHRjBZMmhKUkhNZ1BTQnVkV3hzTzF4dUlDQnlaWFIxY200Z2NtVnpPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFQndZWEpoYlNCN1UzbHVkR2hsZEdsalJYWmxiblI5SUdWMlpXNTBYRzRnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCVWNuVmxJR2xtWmlCdWRXMWlaWElnYjJZZ1pHbHpjR0YwWTJobGN5QmhZMk4xYlhWc1lYUmxaQ0JwY3lCbmNtVmhkR1Z5SUhSb1lXNGdNQzVjYmlBcUwxeHVablZ1WTNScGIyNGdhR0Z6UkdsemNHRjBZMmhsY3lobGRtVnVkQ2tnZTF4dUlDQnlaWFIxY200Z0lTRmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25NN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWdVpYSmhiQ0IxZEdsc2FYUnBaWE1nZEdoaGRDQmhjbVVnZFhObFpuVnNJR2x1SUdOeVpXRjBhVzVuSUdOMWMzUnZiU0JGZG1WdWRDQlFiSFZuYVc1ekxseHVJQ292WEc1MllYSWdSWFpsYm5SUWJIVm5hVzVWZEdsc2N5QTlJSHRjYmlBZ2FYTkZibVJwYzJnNklHbHpSVzVrYVhOb0xGeHVJQ0JwYzAxdmRtVnBjMmc2SUdselRXOTJaV2x6YUN4Y2JpQWdhWE5UZEdGeWRHbHphRG9nYVhOVGRHRnlkR2x6YUN4Y2JseHVJQ0JsZUdWamRYUmxSR2x5WldOMFJHbHpjR0YwWTJnNklHVjRaV04xZEdWRWFYSmxZM1JFYVhOd1lYUmphQ3hjYmlBZ1pYaGxZM1YwWlVScGMzQmhkR05vWlhOSmJrOXlaR1Z5T2lCbGVHVmpkWFJsUkdsemNHRjBZMmhsYzBsdVQzSmtaWElzWEc0Z0lHVjRaV04xZEdWRWFYTndZWFJqYUdWelNXNVBjbVJsY2xOMGIzQkJkRlJ5ZFdVNklHVjRaV04xZEdWRWFYTndZWFJqYUdWelNXNVBjbVJsY2xOMGIzQkJkRlJ5ZFdVc1hHNGdJR2hoYzBScGMzQmhkR05vWlhNNklHaGhjMFJwYzNCaGRHTm9aWE1zWEc1Y2JpQWdaMlYwVG05a1pUb2dablZ1WTNScGIyNGdLR2xrS1NCN1hHNGdJQ0FnY21WMGRYSnVJR2x1YW1WamRHbHZiaTVOYjNWdWRDNW5aWFJPYjJSbEtHbGtLVHRjYmlBZ2ZTeGNiaUFnWjJWMFNVUTZJR1oxYm1OMGFXOXVJQ2h1YjJSbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdsdWFtVmpkR2x2Ymk1TmIzVnVkQzVuWlhSSlJDaHViMlJsS1R0Y2JpQWdmU3hjYmx4dUlDQnBibXBsWTNScGIyNDZJR2x1YW1WamRHbHZibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQkZkbVZ1ZEZCc2RXZHBibFYwYVd4ek95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudFByb3BhZ2F0b3JzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSByZXF1aXJlKCcuL2FjY3VtdWxhdGVJbnRvJyk7XG52YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gcmVxdWlyZSgnLi9mb3JFYWNoQWNjdW11bGF0ZWQnKTtcblxudmFyIFByb3BhZ2F0aW9uUGhhc2VzID0gRXZlbnRDb25zdGFudHMuUHJvcGFnYXRpb25QaGFzZXM7XG52YXIgZ2V0TGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcjtcblxuLyoqXG4gKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50XG4gKiBcInBoYXNlc1wiIG9mIHByb3BhZ2F0aW9uLiBUaGlzIGZpbmRzIGxpc3RlbmVycyBieSBhIGdpdmVuIHBoYXNlLlxuICovXG5mdW5jdGlvbiBsaXN0ZW5lckF0UGhhc2UoaWQsIGV2ZW50LCBwcm9wYWdhdGlvblBoYXNlKSB7XG4gIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFnYXRpb25QaGFzZV07XG4gIHJldHVybiBnZXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7XG59XG5cbi8qKlxuICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3RlbmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvblxuICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC5cbiAqIE11dGF0aW5nIHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhIHdyYXBwaW5nXG4gKiBcImRpc3BhdGNoXCIgb2JqZWN0IHRoYXQgcGFpcnMgdGhlIGV2ZW50IHdpdGggdGhlIGxpc3RlbmVyLlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzKGRvbUlELCB1cHdhcmRzLCBldmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRvbUlELCAnRGlzcGF0Y2hpbmcgaWQgbXVzdCBub3QgYmUgbnVsbCcpIDogdW5kZWZpbmVkO1xuICB9XG4gIHZhciBwaGFzZSA9IHVwd2FyZHMgPyBQcm9wYWdhdGlvblBoYXNlcy5idWJibGVkIDogUHJvcGFnYXRpb25QaGFzZXMuY2FwdHVyZWQ7XG4gIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShkb21JRCwgZXZlbnQsIHBoYXNlKTtcbiAgaWYgKGxpc3RlbmVyKSB7XG4gICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gICAgZXZlbnQuX2Rpc3BhdGNoSURzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSURzLCBkb21JRCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50aXJlbHkgY29sbGVjdGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0XG4gKiB0ZXN0cykuIExhemlseSBhbGxvY2F0ZSB0aGUgYXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29wIHRocm91Z2hcbiAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdlIGNhbm5vdCBwZXJmb3JtIGFcbiAqIHNpbmdsZSB0cmF2ZXJzYWwgZm9yIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBvZiBldmVudHMgYmVjYXVzZSBlYWNoIGV2ZW50IG1heVxuICogaGF2ZSBhIGRpZmZlcmVudCB0YXJnZXQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmdldEluc3RhbmNlSGFuZGxlKCkudHJhdmVyc2VUd29QaGFzZShldmVudC5kaXNwYXRjaE1hcmtlciwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgRXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmdldEluc3RhbmNlSGFuZGxlKCkudHJhdmVyc2VUd29QaGFzZVNraXBUYXJnZXQoZXZlbnQuZGlzcGF0Y2hNYXJrZXIsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEFjY3VtdWxhdGVzIHdpdGhvdXQgcmVnYXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3QgbG9vayBmb3IgcGhhc2VkXG4gKiByZWdpc3RyYXRpb24gbmFtZXMuIFNhbWUgYXMgYGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlYCBidXQgd2l0aG91dFxuICogcmVxdWlyaW5nIHRoYXQgdGhlIGBkaXNwYXRjaE1hcmtlcmAgYmUgdGhlIHNhbWUgYXMgdGhlIGRpc3BhdGNoZWQgSUQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXNwYXRjaGVzKGlkLCBpZ25vcmVkRGlyZWN0aW9uLCBldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZTtcbiAgICB2YXIgbGlzdGVuZXIgPSBnZXRMaXN0ZW5lcihpZCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgICAgIGV2ZW50Ll9kaXNwYXRjaElEcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaElEcywgaWQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY3VtdWxhdGVzIGRpc3BhdGNoZXMgb24gYW4gYFN5bnRoZXRpY0V2ZW50YCwgYnV0IG9ubHkgZm9yIHRoZVxuICogYGRpc3BhdGNoTWFya2VyYC5cbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgYWNjdW11bGF0ZURpc3BhdGNoZXMoZXZlbnQuZGlzcGF0Y2hNYXJrZXIsIG51bGwsIGV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbUlELCB0b0lEKSB7XG4gIEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5nZXRJbnN0YW5jZUhhbmRsZSgpLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tSUQsIHRvSUQsIGFjY3VtdWxhdGVEaXNwYXRjaGVzLCBsZWF2ZSwgZW50ZXIpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG4vKipcbiAqIEEgc21hbGwgc2V0IG9mIHByb3BhZ2F0aW9uIHBhdHRlcm5zLCBlYWNoIG9mIHdoaWNoIHdpbGwgYWNjZXB0IGEgc21hbGwgYW1vdW50XG4gKiBvZiBpbmZvcm1hdGlvbiwgYW5kIGdlbmVyYXRlIGEgc2V0IG9mIFwiZGlzcGF0Y2ggcmVhZHkgZXZlbnQgb2JqZWN0c1wiIC0gd2hpY2hcbiAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWRcbiAqIGxpc3RlbmVyIGZ1bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3YXkgdG8gZGlzY291cmFnZSB0aGVzZVxuICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFjdHVhbGx5IGV4ZWN1dGluZyB0aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2VcbiAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhlIGVudGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGFcbiAqIHNpbmdsZSBvbmUuXG4gKlxuICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnNcbiAqL1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSB7XG4gIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCxcbiAgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzLFxuICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlc1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJYWmxiblJRY205d1lXZGhkRzl5Y3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1JYWmxiblJRY205d1lXZGhkRzl5YzF4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFVjJaVzUwUTI5dWMzUmhiblJ6SUQwZ2NtVnhkV2x5WlNnbkxpOUZkbVZ1ZEVOdmJuTjBZVzUwY3ljcE8xeHVkbUZ5SUVWMlpXNTBVR3gxWjJsdVNIVmlJRDBnY21WeGRXbHlaU2duTGk5RmRtVnVkRkJzZFdkcGJraDFZaWNwTzF4dVhHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVkbUZ5SUdGalkzVnRkV3hoZEdWSmJuUnZJRDBnY21WeGRXbHlaU2duTGk5aFkyTjFiWFZzWVhSbFNXNTBieWNwTzF4dWRtRnlJR1p2Y2tWaFkyaEJZMk4xYlhWc1lYUmxaQ0E5SUhKbGNYVnBjbVVvSnk0dlptOXlSV0ZqYUVGalkzVnRkV3hoZEdWa0p5azdYRzVjYm5aaGNpQlFjbTl3WVdkaGRHbHZibEJvWVhObGN5QTlJRVYyWlc1MFEyOXVjM1JoYm5SekxsQnliM0JoWjJGMGFXOXVVR2hoYzJWek8xeHVkbUZ5SUdkbGRFeHBjM1JsYm1WeUlEMGdSWFpsYm5SUWJIVm5hVzVJZFdJdVoyVjBUR2x6ZEdWdVpYSTdYRzVjYmk4cUtseHVJQ29nVTI5dFpTQmxkbVZ1ZENCMGVYQmxjeUJvWVhabElHRWdibTkwYVc5dUlHOW1JR1JwWm1abGNtVnVkQ0J5WldkcGMzUnlZWFJwYjI0Z2JtRnRaWE1nWm05eUlHUnBabVpsY21WdWRGeHVJQ29nWENKd2FHRnpaWE5jSWlCdlppQndjbTl3WVdkaGRHbHZiaTRnVkdocGN5Qm1hVzVrY3lCc2FYTjBaVzVsY25NZ1lua2dZU0JuYVhabGJpQndhR0Z6WlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYkdsemRHVnVaWEpCZEZCb1lYTmxLR2xrTENCbGRtVnVkQ3dnY0hKdmNHRm5ZWFJwYjI1UWFHRnpaU2tnZTF4dUlDQjJZWElnY21WbmFYTjBjbUYwYVc5dVRtRnRaU0E5SUdWMlpXNTBMbVJwYzNCaGRHTm9RMjl1Wm1sbkxuQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6VzNCeWIzQmhaMkYwYVc5dVVHaGhjMlZkTzF4dUlDQnlaWFIxY200Z1oyVjBUR2x6ZEdWdVpYSW9hV1FzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJoWjNNZ1lTQmdVM2x1ZEdobGRHbGpSWFpsYm5SZ0lIZHBkR2dnWkdsemNHRjBZMmhsWkNCc2FYTjBaVzVsY25NdUlFTnlaV0YwYVc1bklIUm9hWE1nWm5WdVkzUnBiMjVjYmlBcUlHaGxjbVVzSUdGc2JHOTNjeUIxY3lCMGJ5QnViM1FnYUdGMlpTQjBieUJpYVc1a0lHOXlJR055WldGMFpTQm1kVzVqZEdsdmJuTWdabTl5SUdWaFkyZ2daWFpsYm5RdVhHNGdLaUJOZFhSaGRHbHVaeUIwYUdVZ1pYWmxiblFuY3lCdFpXMWlaWEp6SUdGc2JHOTNjeUIxY3lCMGJ5QnViM1FnYUdGMlpTQjBieUJqY21WaGRHVWdZU0IzY21Gd2NHbHVaMXh1SUNvZ1hDSmthWE53WVhSamFGd2lJRzlpYW1WamRDQjBhR0YwSUhCaGFYSnpJSFJvWlNCbGRtVnVkQ0IzYVhSb0lIUm9aU0JzYVhOMFpXNWxjaTVjYmlBcUwxeHVablZ1WTNScGIyNGdZV05qZFcxMWJHRjBaVVJwY21WamRHbHZibUZzUkdsemNHRjBZMmhsY3loa2IyMUpSQ3dnZFhCM1lYSmtjeXdnWlhabGJuUXBJSHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1Wnloa2IyMUpSQ3dnSjBScGMzQmhkR05vYVc1bklHbGtJRzExYzNRZ2JtOTBJR0psSUc1MWJHd25LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNCMllYSWdjR2hoYzJVZ1BTQjFjSGRoY21SeklEOGdVSEp2Y0dGbllYUnBiMjVRYUdGelpYTXVZblZpWW14bFpDQTZJRkJ5YjNCaFoyRjBhVzl1VUdoaGMyVnpMbU5oY0hSMWNtVmtPMXh1SUNCMllYSWdiR2x6ZEdWdVpYSWdQU0JzYVhOMFpXNWxja0YwVUdoaGMyVW9aRzl0U1VRc0lHVjJaVzUwTENCd2FHRnpaU2s3WEc0Z0lHbG1JQ2hzYVhOMFpXNWxjaWtnZTF4dUlDQWdJR1YyWlc1MExsOWthWE53WVhSamFFeHBjM1JsYm1WeWN5QTlJR0ZqWTNWdGRXeGhkR1ZKYm5SdktHVjJaVzUwTGw5a2FYTndZWFJqYUV4cGMzUmxibVZ5Y3l3Z2JHbHpkR1Z1WlhJcE8xeHVJQ0FnSUdWMlpXNTBMbDlrYVhOd1lYUmphRWxFY3lBOUlHRmpZM1Z0ZFd4aGRHVkpiblJ2S0dWMlpXNTBMbDlrYVhOd1lYUmphRWxFY3l3Z1pHOXRTVVFwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyOXNiR1ZqZENCa2FYTndZWFJqYUdWeklDaHRkWE4wSUdKbElHVnVkR2x5Wld4NUlHTnZiR3hsWTNSbFpDQmlaV1p2Y21VZ1pHbHpjR0YwWTJocGJtY2dMU0J6WldVZ2RXNXBkRnh1SUNvZ2RHVnpkSE1wTGlCTVlYcHBiSGtnWVd4c2IyTmhkR1VnZEdobElHRnljbUY1SUhSdklHTnZibk5sY25abElHMWxiVzl5ZVM0Z0lGZGxJRzExYzNRZ2JHOXZjQ0IwYUhKdmRXZG9YRzRnS2lCbFlXTm9JR1YyWlc1MElHRnVaQ0J3WlhKbWIzSnRJSFJvWlNCMGNtRjJaWEp6WVd3Z1ptOXlJR1ZoWTJnZ2IyNWxMaUJYWlNCallXNXViM1FnY0dWeVptOXliU0JoWEc0Z0tpQnphVzVuYkdVZ2RISmhkbVZ5YzJGc0lHWnZjaUIwYUdVZ1pXNTBhWEpsSUdOdmJHeGxZM1JwYjI0Z2IyWWdaWFpsYm5SeklHSmxZMkYxYzJVZ1pXRmphQ0JsZG1WdWRDQnRZWGxjYmlBcUlHaGhkbVVnWVNCa2FXWm1aWEpsYm5RZ2RHRnlaMlYwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6VTJsdVoyeGxLR1YyWlc1MEtTQjdYRzRnSUdsbUlDaGxkbVZ1ZENBbUppQmxkbVZ1ZEM1a2FYTndZWFJqYUVOdmJtWnBaeTV3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5a2dlMXh1SUNBZ0lFVjJaVzUwVUd4MVoybHVTSFZpTG1sdWFtVmpkR2x2Ymk1blpYUkpibk4wWVc1alpVaGhibVJzWlNncExuUnlZWFpsY25ObFZIZHZVR2hoYzJVb1pYWmxiblF1WkdsemNHRjBZMmhOWVhKclpYSXNJR0ZqWTNWdGRXeGhkR1ZFYVhKbFkzUnBiMjVoYkVScGMzQmhkR05vWlhNc0lHVjJaVzUwS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmhiV1VnWVhNZ1lHRmpZM1Z0ZFd4aGRHVlVkMjlRYUdGelpVUnBjM0JoZEdOb1pYTlRhVzVuYkdWZ0xDQmlkWFFnYzJ0cGNITWdiM1psY2lCMGFHVWdkR0Z5WjJWMFNVUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHRmpZM1Z0ZFd4aGRHVlVkMjlRYUdGelpVUnBjM0JoZEdOb1pYTlRhVzVuYkdWVGEybHdWR0Z5WjJWMEtHVjJaVzUwS1NCN1hHNGdJR2xtSUNobGRtVnVkQ0FtSmlCbGRtVnVkQzVrYVhOd1lYUmphRU52Ym1acFp5NXdhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3lrZ2UxeHVJQ0FnSUVWMlpXNTBVR3gxWjJsdVNIVmlMbWx1YW1WamRHbHZiaTVuWlhSSmJuTjBZVzVqWlVoaGJtUnNaU2dwTG5SeVlYWmxjbk5sVkhkdlVHaGhjMlZUYTJsd1ZHRnlaMlYwS0dWMlpXNTBMbVJwYzNCaGRHTm9UV0Z5YTJWeUxDQmhZMk4xYlhWc1lYUmxSR2x5WldOMGFXOXVZV3hFYVhOd1lYUmphR1Z6TENCbGRtVnVkQ2s3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCQlkyTjFiWFZzWVhSbGN5QjNhWFJvYjNWMElISmxaMkZ5WkNCMGJ5QmthWEpsWTNScGIyNHNJR1J2WlhNZ2JtOTBJR3h2YjJzZ1ptOXlJSEJvWVhObFpGeHVJQ29nY21WbmFYTjBjbUYwYVc5dUlHNWhiV1Z6TGlCVFlXMWxJR0Z6SUdCaFkyTjFiWFZzWVhSbFJHbHlaV04wUkdsemNHRjBZMmhsYzFOcGJtZHNaV0FnWW5WMElIZHBkR2h2ZFhSY2JpQXFJSEpsY1hWcGNtbHVaeUIwYUdGMElIUm9aU0JnWkdsemNHRjBZMmhOWVhKclpYSmdJR0psSUhSb1pTQnpZVzFsSUdGeklIUm9aU0JrYVhOd1lYUmphR1ZrSUVsRUxseHVJQ292WEc1bWRXNWpkR2x2YmlCaFkyTjFiWFZzWVhSbFJHbHpjR0YwWTJobGN5aHBaQ3dnYVdkdWIzSmxaRVJwY21WamRHbHZiaXdnWlhabGJuUXBJSHRjYmlBZ2FXWWdLR1YyWlc1MElDWW1JR1YyWlc1MExtUnBjM0JoZEdOb1EyOXVabWxuTG5KbFoybHpkSEpoZEdsdmJrNWhiV1VwSUh0Y2JpQWdJQ0IyWVhJZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNBOUlHVjJaVzUwTG1ScGMzQmhkR05vUTI5dVptbG5MbkpsWjJsemRISmhkR2x2Yms1aGJXVTdYRzRnSUNBZ2RtRnlJR3hwYzNSbGJtVnlJRDBnWjJWMFRHbHpkR1Z1WlhJb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXBPMXh1SUNBZ0lHbG1JQ2hzYVhOMFpXNWxjaWtnZTF4dUlDQWdJQ0FnWlhabGJuUXVYMlJwYzNCaGRHTm9UR2x6ZEdWdVpYSnpJRDBnWVdOamRXMTFiR0YwWlVsdWRHOG9aWFpsYm5RdVgyUnBjM0JoZEdOb1RHbHpkR1Z1WlhKekxDQnNhWE4wWlc1bGNpazdYRzRnSUNBZ0lDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoSlJITWdQU0JoWTJOMWJYVnNZWFJsU1c1MGJ5aGxkbVZ1ZEM1ZlpHbHpjR0YwWTJoSlJITXNJR2xrS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCQlkyTjFiWFZzWVhSbGN5QmthWE53WVhSamFHVnpJRzl1SUdGdUlHQlRlVzUwYUdWMGFXTkZkbVZ1ZEdBc0lHSjFkQ0J2Ym14NUlHWnZjaUIwYUdWY2JpQXFJR0JrYVhOd1lYUmphRTFoY210bGNtQXVYRzRnS2lCQWNHRnlZVzBnZTFONWJuUm9aWFJwWTBWMlpXNTBmU0JsZG1WdWRGeHVJQ292WEc1bWRXNWpkR2x2YmlCaFkyTjFiWFZzWVhSbFJHbHlaV04wUkdsemNHRjBZMmhsYzFOcGJtZHNaU2hsZG1WdWRDa2dlMXh1SUNCcFppQW9aWFpsYm5RZ0ppWWdaWFpsYm5RdVpHbHpjR0YwWTJoRGIyNW1hV2N1Y21WbmFYTjBjbUYwYVc5dVRtRnRaU2tnZTF4dUlDQWdJR0ZqWTNWdGRXeGhkR1ZFYVhOd1lYUmphR1Z6S0dWMlpXNTBMbVJwYzNCaGRHTm9UV0Z5YTJWeUxDQnVkV3hzTENCbGRtVnVkQ2s3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1lXTmpkVzExYkdGMFpWUjNiMUJvWVhObFJHbHpjR0YwWTJobGN5aGxkbVZ1ZEhNcElIdGNiaUFnWm05eVJXRmphRUZqWTNWdGRXeGhkR1ZrS0dWMlpXNTBjeXdnWVdOamRXMTFiR0YwWlZSM2IxQm9ZWE5sUkdsemNHRjBZMmhsYzFOcGJtZHNaU2s3WEc1OVhHNWNibVoxYm1OMGFXOXVJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE5UYTJsd1ZHRnlaMlYwS0dWMlpXNTBjeWtnZTF4dUlDQm1iM0pGWVdOb1FXTmpkVzExYkdGMFpXUW9aWFpsYm5SekxDQmhZMk4xYlhWc1lYUmxWSGR2VUdoaGMyVkVhWE53WVhSamFHVnpVMmx1WjJ4bFUydHBjRlJoY21kbGRDazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHRmpZM1Z0ZFd4aGRHVkZiblJsY2t4bFlYWmxSR2x6Y0dGMFkyaGxjeWhzWldGMlpTd2daVzUwWlhJc0lHWnliMjFKUkN3Z2RHOUpSQ2tnZTF4dUlDQkZkbVZ1ZEZCc2RXZHBia2gxWWk1cGJtcGxZM1JwYjI0dVoyVjBTVzV6ZEdGdVkyVklZVzVrYkdVb0tTNTBjbUYyWlhKelpVVnVkR1Z5VEdWaGRtVW9abkp2YlVsRUxDQjBiMGxFTENCaFkyTjFiWFZzWVhSbFJHbHpjR0YwWTJobGN5d2diR1ZoZG1Vc0lHVnVkR1Z5S1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWVdOamRXMTFiR0YwWlVScGNtVmpkRVJwYzNCaGRHTm9aWE1vWlhabGJuUnpLU0I3WEc0Z0lHWnZja1ZoWTJoQlkyTjFiWFZzWVhSbFpDaGxkbVZ1ZEhNc0lHRmpZM1Z0ZFd4aGRHVkVhWEpsWTNSRWFYTndZWFJqYUdWelUybHVaMnhsS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJCSUhOdFlXeHNJSE5sZENCdlppQndjbTl3WVdkaGRHbHZiaUJ3WVhSMFpYSnVjeXdnWldGamFDQnZaaUIzYUdsamFDQjNhV3hzSUdGalkyVndkQ0JoSUhOdFlXeHNJR0Z0YjNWdWRGeHVJQ29nYjJZZ2FXNW1iM0p0WVhScGIyNHNJR0Z1WkNCblpXNWxjbUYwWlNCaElITmxkQ0J2WmlCY0ltUnBjM0JoZEdOb0lISmxZV1I1SUdWMlpXNTBJRzlpYW1WamRITmNJaUF0SUhkb2FXTm9YRzRnS2lCaGNtVWdjMlYwY3lCdlppQmxkbVZ1ZEhNZ2RHaGhkQ0JvWVhabElHRnNjbVZoWkhrZ1ltVmxiaUJoYm01dmRHRjBaV1FnZDJsMGFDQmhJSE5sZENCdlppQmthWE53WVhSamFHVmtYRzRnS2lCc2FYTjBaVzVsY2lCbWRXNWpkR2x2Ym5NdmFXUnpMaUJVYUdVZ1FWQkpJR2x6SUdSbGMybG5ibVZrSUhSb2FYTWdkMkY1SUhSdklHUnBjMk52ZFhKaFoyVWdkR2hsYzJWY2JpQXFJSEJ5YjNCaFoyRjBhVzl1SUhOMGNtRjBaV2RwWlhNZ1puSnZiU0JoWTNSMVlXeHNlU0JsZUdWamRYUnBibWNnZEdobElHUnBjM0JoZEdOb1pYTXNJSE5wYm1ObElIZGxYRzRnS2lCaGJIZGhlWE1nZDJGdWRDQjBieUJqYjJ4c1pXTjBJSFJvWlNCbGJuUnBjbVVnYzJWMElHOW1JR1JwYzNCaGRHTm9aWE1nWW1WbWIzSmxJR1Y0WldOMWRHbHVaeUJsZG1WdWRDQmhYRzRnS2lCemFXNW5iR1VnYjI1bExseHVJQ3BjYmlBcUlFQmpiMjV6ZEhKMVkzUnZjaUJGZG1WdWRGQnliM0JoWjJGMGIzSnpYRzRnS2k5Y2JuWmhjaUJGZG1WdWRGQnliM0JoWjJGMGIzSnpJRDBnZTF4dUlDQmhZMk4xYlhWc1lYUmxWSGR2VUdoaGMyVkVhWE53WVhSamFHVnpPaUJoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6TEZ4dUlDQmhZMk4xYlhWc1lYUmxWSGR2VUdoaGMyVkVhWE53WVhSamFHVnpVMnRwY0ZSaGNtZGxkRG9nWVdOamRXMTFiR0YwWlZSM2IxQm9ZWE5sUkdsemNHRjBZMmhsYzFOcmFYQlVZWEpuWlhRc1hHNGdJR0ZqWTNWdGRXeGhkR1ZFYVhKbFkzUkVhWE53WVhSamFHVnpPaUJoWTJOMWJYVnNZWFJsUkdseVpXTjBSR2x6Y0dGMFkyaGxjeXhjYmlBZ1lXTmpkVzExYkdGMFpVVnVkR1Z5VEdWaGRtVkVhWE53WVhSamFHVnpPaUJoWTJOMWJYVnNZWFJsUlc1MFpYSk1aV0YyWlVScGMzQmhkR05vWlhOY2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnUlhabGJuUlFjbTl3WVdkaGRHOXljenNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBIVE1MRE9NUHJvcGVydHlDb25maWdcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBNVVNUX1VTRV9BVFRSSUJVVEUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfQVRUUklCVVRFO1xudmFyIE1VU1RfVVNFX1BST1BFUlRZID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZO1xudmFyIEhBU19CT09MRUFOX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFO1xudmFyIEhBU19TSURFX0VGRkVDVFMgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX1NJREVfRUZGRUNUUztcbnZhciBIQVNfTlVNRVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcbnZhciBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTtcbnZhciBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU7XG5cbnZhciBoYXNTVkc7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHZhciBpbXBsZW1lbnRhdGlvbiA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uO1xuICBoYXNTVkcgPSBpbXBsZW1lbnRhdGlvbiAmJiBpbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlICYmIGltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJ2h0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUnLCAnMS4xJyk7XG59XG5cbnZhciBIVE1MRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZCgvXihkYXRhfGFyaWEpLVthLXpfXVthLXpcXGRfLlxcLV0qJC8pLFxuICBQcm9wZXJ0aWVzOiB7XG4gICAgLyoqXG4gICAgICogU3RhbmRhcmQgUHJvcGVydGllc1xuICAgICAqL1xuICAgIGFjY2VwdDogbnVsbCxcbiAgICBhY2NlcHRDaGFyc2V0OiBudWxsLFxuICAgIGFjY2Vzc0tleTogbnVsbCxcbiAgICBhY3Rpb246IG51bGwsXG4gICAgYWxsb3dGdWxsU2NyZWVuOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBhbGxvd1RyYW5zcGFyZW5jeTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGFsdDogbnVsbCxcbiAgICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYXV0b0NvbXBsZXRlOiBudWxsLFxuICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3VzVXRpbHNcbiAgICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjYXB0dXJlOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjZWxsUGFkZGluZzogbnVsbCxcbiAgICBjZWxsU3BhY2luZzogbnVsbCxcbiAgICBjaGFyU2V0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgY2hhbGxlbmdlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgY2hlY2tlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjbGFzc0lEOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gVG8gc2V0IGNsYXNzTmFtZSBvbiBTVkcgZWxlbWVudHMsIGl0J3MgbmVjZXNzYXJ5IHRvIHVzZSAuc2V0QXR0cmlidXRlO1xuICAgIC8vIHRoaXMgd29ya3Mgb24gSFRNTCBlbGVtZW50cyB0b28gaW4gYWxsIGJyb3dzZXJzIGV4Y2VwdCBJRTguIENvbnZlbmllbnRseSxcbiAgICAvLyBJRTggZG9lc24ndCBzdXBwb3J0IFNWRyBhbmQgc28gd2UgY2FuIHNpbXBseSB1c2UgdGhlIGF0dHJpYnV0ZSBpblxuICAgIC8vIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBTVkcgYW5kIHRoZSBwcm9wZXJ0eSBpbiBicm93c2VycyB0aGF0IGRvbid0LFxuICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgZWxlbWVudCBpcyBIVE1MIG9yIFNWRy5cbiAgICBjbGFzc05hbWU6IGhhc1NWRyA/IE1VU1RfVVNFX0FUVFJJQlVURSA6IE1VU1RfVVNFX1BST1BFUlRZLFxuICAgIGNvbHM6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIGNvbFNwYW46IG51bGwsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBjb250ZW50RWRpdGFibGU6IG51bGwsXG4gICAgY29udGV4dE1lbnU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBjb250cm9sczogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjb29yZHM6IG51bGwsXG4gICAgY3Jvc3NPcmlnaW46IG51bGwsXG4gICAgZGF0YTogbnVsbCwgLy8gRm9yIGA8b2JqZWN0IC8+YCBhY3RzIGFzIGBzcmNgLlxuICAgIGRhdGVUaW1lOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZGVmZXI6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRpcjogbnVsbCxcbiAgICBkaXNhYmxlZDogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsXG4gICAgZHJhZ2dhYmxlOiBudWxsLFxuICAgIGVuY1R5cGU6IG51bGwsXG4gICAgZm9ybTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZvcm1BY3Rpb246IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtRW5jVHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZvcm1NZXRob2Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtTm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZm9ybVRhcmdldDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZyYW1lQm9yZGVyOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaGVhZGVyczogbnVsbCxcbiAgICBoZWlnaHQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBoaWRkZW46IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGhpZ2g6IG51bGwsXG4gICAgaHJlZjogbnVsbCxcbiAgICBocmVmTGFuZzogbnVsbCxcbiAgICBodG1sRm9yOiBudWxsLFxuICAgIGh0dHBFcXVpdjogbnVsbCxcbiAgICBpY29uOiBudWxsLFxuICAgIGlkOiBNVVNUX1VTRV9QUk9QRVJUWSxcbiAgICBpbnB1dE1vZGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpczogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGtleVBhcmFtczogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGtleVR5cGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBsYW5nOiBudWxsLFxuICAgIGxpc3Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBsb29wOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGxvdzogbnVsbCxcbiAgICBtYW5pZmVzdDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1hcmdpbkhlaWdodDogbnVsbCxcbiAgICBtYXJnaW5XaWR0aDogbnVsbCxcbiAgICBtYXg6IG51bGwsXG4gICAgbWF4TGVuZ3RoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbWVkaWE6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtZWRpYUdyb3VwOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbWluTGVuZ3RoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbmFtZTogbnVsbCxcbiAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcHRpbXVtOiBudWxsLFxuICAgIHBhdHRlcm46IG51bGwsXG4gICAgcGxhY2Vob2xkZXI6IG51bGwsXG4gICAgcG9zdGVyOiBudWxsLFxuICAgIHByZWxvYWQ6IG51bGwsXG4gICAgcmFkaW9Hcm91cDogbnVsbCxcbiAgICByZWFkT25seTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZWw6IG51bGwsXG4gICAgcmVxdWlyZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHJvbGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICByb3dzOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICByb3dTcGFuOiBudWxsLFxuICAgIHNhbmRib3g6IG51bGwsXG4gICAgc2NvcGU6IG51bGwsXG4gICAgc2NvcGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzY3JvbGxpbmc6IG51bGwsXG4gICAgc2VhbWxlc3M6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHNoYXBlOiBudWxsLFxuICAgIHNpemU6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHNpemVzOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3BhbjogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgc3BlbGxDaGVjazogbnVsbCxcbiAgICBzcmM6IG51bGwsXG4gICAgc3JjRG9jOiBNVVNUX1VTRV9QUk9QRVJUWSxcbiAgICBzcmNTZXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsXG4gICAgc3RlcDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICBzdW1tYXJ5OiBudWxsLFxuICAgIHRhYkluZGV4OiBudWxsLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHVzZU1hcDogbnVsbCxcbiAgICB2YWx1ZTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfU0lERV9FRkZFQ1RTLFxuICAgIHdpZHRoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgd21vZGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB3cmFwOiBudWxsLFxuXG4gICAgLyoqXG4gICAgICogUkRGYSBQcm9wZXJ0aWVzXG4gICAgICovXG4gICAgYWJvdXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBkYXRhdHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGlubGlzdDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHByZWZpeDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLlxuICAgIHByb3BlcnR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcmVzb3VyY2U6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAndHlwZW9mJzogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHZvY2FiOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG5cbiAgICAvKipcbiAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllc1xuICAgICAqL1xuICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3VwcG9ydGVkIGluIE1vYmlsZSBTYWZhcmkgZm9yXG4gICAgLy8ga2V5Ym9hcmQgaGludHMuXG4gICAgYXV0b0NhcGl0YWxpemU6IG51bGwsXG4gICAgYXV0b0NvcnJlY3Q6IG51bGwsXG4gICAgLy8gYXV0b1NhdmUgYWxsb3dzIFdlYktpdC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRzXG4gICAgYXV0b1NhdmU6IG51bGwsXG4gICAgLy8gaXRlbVByb3AsIGl0ZW1TY29wZSwgaXRlbVR5cGUgYXJlIGZvclxuICAgIC8vIE1pY3JvZGF0YSBzdXBwb3J0LiBTZWUgaHR0cDovL3NjaGVtYS5vcmcvZG9jcy9ncy5odG1sXG4gICAgaXRlbVByb3A6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpdGVtU2NvcGU6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGl0ZW1UeXBlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gaXRlbUlEIGFuZCBpdGVtUmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcbiAgICAvLyBvbmx5IHNwZWNpZmllZCBpbiB0aGUgdGhlIFdIQVRXRyBzcGVjIGRvY3VtZW50LiBTZWVcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaVxuICAgIGl0ZW1JRDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGl0ZW1SZWY6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAvLyByZXN1bHRzIHNob3cgbG9va2luZyBnbGFzcyBpY29uIGFuZCByZWNlbnQgc2VhcmNoZXMgb24gaW5wdXRcbiAgICAvLyBzZWFyY2ggZmllbGRzIGluIFdlYktpdC9CbGlua1xuICAgIHJlc3VsdHM6IG51bGwsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBzcGVjaWZpZXMgc2VjdXJpdHkgcmVzdHJpY3Rpb25zIG9uIGFuIGlmcmFtZVxuICAgIC8vIGFzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvbiBJRTwxMFxuICAgIHNlY3VyaXR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlvclxuICAgIHVuc2VsZWN0YWJsZTogTVVTVF9VU0VfQVRUUklCVVRFXG4gIH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7XG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgaHRtbEZvcjogJ2ZvcicsXG4gICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgRE9NUHJvcGVydHlOYW1lczoge1xuICAgIGF1dG9DYXBpdGFsaXplOiAnYXV0b2NhcGl0YWxpemUnLFxuICAgIGF1dG9Db21wbGV0ZTogJ2F1dG9jb21wbGV0ZScsXG4gICAgYXV0b0NvcnJlY3Q6ICdhdXRvY29ycmVjdCcsXG4gICAgYXV0b0ZvY3VzOiAnYXV0b2ZvY3VzJyxcbiAgICBhdXRvUGxheTogJ2F1dG9wbGF5JyxcbiAgICBhdXRvU2F2ZTogJ2F1dG9zYXZlJyxcbiAgICAvLyBgZW5jb2RpbmdgIGlzIGVxdWl2YWxlbnQgdG8gYGVuY3R5cGVgLCBJRTggbGFja3MgYW4gYGVuY3R5cGVgIHNldHRlci5cbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9mb3Jtcy5odG1sI2RvbS1mcy1lbmNvZGluZ1xuICAgIGVuY1R5cGU6ICdlbmNvZGluZycsXG4gICAgaHJlZkxhbmc6ICdocmVmbGFuZycsXG4gICAgcmFkaW9Hcm91cDogJ3JhZGlvZ3JvdXAnLFxuICAgIHNwZWxsQ2hlY2s6ICdzcGVsbGNoZWNrJyxcbiAgICBzcmNEb2M6ICdzcmNkb2MnLFxuICAgIHNyY1NldDogJ3NyY3NldCdcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIVE1MRE9NUHJvcGVydHlDb25maWc7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBMaW5rZWRWYWx1ZVV0aWxzXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlcycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBoYXNSZWFkT25seVZhbHVlID0ge1xuICAnYnV0dG9uJzogdHJ1ZSxcbiAgJ2NoZWNrYm94JzogdHJ1ZSxcbiAgJ2ltYWdlJzogdHJ1ZSxcbiAgJ2hpZGRlbic6IHRydWUsXG4gICdyYWRpbyc6IHRydWUsXG4gICdyZXNldCc6IHRydWUsXG4gICdzdWJtaXQnOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7XG4gICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5rID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgdmFsdWVMaW5rLiBJZiB5b3Ugd2FudCB0byB1c2UgJyArICdjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rIGFuZCB2aWNlIHZlcnNhLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIHZhbHVlTGluayBhbmQgYSB2YWx1ZSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgJyArICd0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluay4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKSB7XG4gIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSBjaGVja2VkIHByb3BlcnR5IG9yIG9uQ2hhbmdlIGV2ZW50LiAnICsgJ0lmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvICcgKyAndXNlIGNoZWNrZWRMaW5rJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG52YXIgcHJvcFR5cGVzID0ge1xuICB2YWx1ZTogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuICB9LFxuICBjaGVja2VkOiBmdW5jdGlvbiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgaWYgKCFwcm9wc1twcm9wTmFtZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAgb25DaGFuZ2U6IFJlYWN0UHJvcFR5cGVzLmZ1bmNcbn07XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFByb3ZpZGUgYSBsaW5rZWQgYHZhbHVlYCBhdHRyaWJ1dGUgZm9yIGNvbnRyb2xsZWQgZm9ybXMuIFlvdSBzaG91bGQgbm90IHVzZVxuICogdGhpcyBvdXRzaWRlIG9mIHRoZSBSZWFjdERPTSBjb250cm9sbGVkIGZvcm0gY29tcG9uZW50cy5cbiAqL1xudmFyIExpbmtlZFZhbHVlVXRpbHMgPSB7XG4gIGNoZWNrUHJvcFR5cGVzOiBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIG93bmVyKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJvcFR5cGVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IgPSBwcm9wVHlwZXNbcHJvcE5hbWVdKHByb3BzLCBwcm9wTmFtZSwgdGFnTmFtZSwgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcbiAgICogQHJldHVybiB7Kn0gY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gdmFsdWUgcHJvcCBvciBsaW5rLlxuICAgKi9cbiAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG4gICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2YgdGhlIGlucHV0IGVpdGhlciBmcm9tIGNoZWNrZWQgcHJvcFxuICAgKiAgICAgICAgICAgICBvciBsaW5rLlxuICAgKi9cbiAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG4gICAqL1xuICBleGVjdXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChpbnB1dFByb3BzLCBldmVudCkge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7XG4gICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLm9uQ2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpbmtlZFZhbHVlVXRpbHM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VEdsdWEyVmtWbUZzZFdWVmRHbHNjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFeHBibXRsWkZaaGJIVmxWWFJwYkhOY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWekp5azdYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVjeWNwTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlHaGhjMUpsWVdSUGJteDVWbUZzZFdVZ1BTQjdYRzRnSUNkaWRYUjBiMjRuT2lCMGNuVmxMRnh1SUNBblkyaGxZMnRpYjNnbk9pQjBjblZsTEZ4dUlDQW5hVzFoWjJVbk9pQjBjblZsTEZ4dUlDQW5hR2xrWkdWdUp6b2dkSEoxWlN4Y2JpQWdKM0poWkdsdkp6b2dkSEoxWlN4Y2JpQWdKM0psYzJWMEp6b2dkSEoxWlN4Y2JpQWdKM04xWW0xcGRDYzZJSFJ5ZFdWY2JuMDdYRzVjYm1aMWJtTjBhVzl1SUY5aGMzTmxjblJUYVc1bmJHVk1hVzVyS0dsdWNIVjBVSEp2Y0hNcElIdGNiaUFnSVNocGJuQjFkRkJ5YjNCekxtTm9aV05yWldSTWFXNXJJRDA5SUc1MWJHd2dmSHdnYVc1d2RYUlFjbTl3Y3k1MllXeDFaVXhwYm1zZ1BUMGdiblZzYkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUTJGdWJtOTBJSEJ5YjNacFpHVWdZU0JqYUdWamEyVmtUR2x1YXlCaGJtUWdZU0IyWVd4MVpVeHBibXN1SUVsbUlIbHZkU0IzWVc1MElIUnZJSFZ6WlNBbklDc2dKMk5vWldOclpXUk1hVzVyTENCNWIzVWdjSEp2WW1GaWJIa2daRzl1WEZ3bmRDQjNZVzUwSUhSdklIVnpaU0IyWVd4MVpVeHBibXNnWVc1a0lIWnBZMlVnZG1WeWMyRXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVmVnh1Wm5WdVkzUnBiMjRnWDJGemMyVnlkRlpoYkhWbFRHbHVheWhwYm5CMWRGQnliM0J6S1NCN1hHNGdJRjloYzNObGNuUlRhVzVuYkdWTWFXNXJLR2x1Y0hWMFVISnZjSE1wTzF4dUlDQWhLR2x1Y0hWMFVISnZjSE11ZG1Gc2RXVWdQVDBnYm5Wc2JDQW1KaUJwYm5CMWRGQnliM0J6TG05dVEyaGhibWRsSUQwOUlHNTFiR3dwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKME5oYm01dmRDQndjbTkyYVdSbElHRWdkbUZzZFdWTWFXNXJJR0Z1WkNCaElIWmhiSFZsSUc5eUlHOXVRMmhoYm1kbElHVjJaVzUwTGlCSlppQjViM1VnZDJGdWRDQW5JQ3NnSjNSdklIVnpaU0IyWVd4MVpTQnZjaUJ2YmtOb1lXNW5aU3dnZVc5MUlIQnliMkpoWW14NUlHUnZibHhjSjNRZ2QyRnVkQ0IwYnlCMWMyVWdkbUZzZFdWTWFXNXJMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1gyRnpjMlZ5ZEVOb1pXTnJaV1JNYVc1cktHbHVjSFYwVUhKdmNITXBJSHRjYmlBZ1gyRnpjMlZ5ZEZOcGJtZHNaVXhwYm1zb2FXNXdkWFJRY205d2N5azdYRzRnSUNFb2FXNXdkWFJRY205d2N5NWphR1ZqYTJWa0lEMDlJRzUxYkd3Z0ppWWdhVzV3ZFhSUWNtOXdjeTV2YmtOb1lXNW5aU0E5UFNCdWRXeHNLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZERZVzV1YjNRZ2NISnZkbWxrWlNCaElHTm9aV05yWldSTWFXNXJJR0Z1WkNCaElHTm9aV05yWldRZ2NISnZjR1Z5ZEhrZ2IzSWdiMjVEYUdGdVoyVWdaWFpsYm5RdUlDY2dLeUFuU1dZZ2VXOTFJSGRoYm5RZ2RHOGdkWE5sSUdOb1pXTnJaV1FnYjNJZ2IyNURhR0Z1WjJVc0lIbHZkU0J3Y205aVlXSnNlU0JrYjI1Y1hDZDBJSGRoYm5RZ2RHOGdKeUFySUNkMWMyVWdZMmhsWTJ0bFpFeHBibXNuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzU5WEc1Y2JuWmhjaUJ3Y205d1ZIbHdaWE1nUFNCN1hHNGdJSFpoYkhWbE9pQm1kVzVqZEdsdmJpQW9jSEp2Y0hNc0lIQnliM0JPWVcxbExDQmpiMjF3YjI1bGJuUk9ZVzFsS1NCN1hHNGdJQ0FnYVdZZ0tDRndjbTl3YzF0d2NtOXdUbUZ0WlYwZ2ZId2dhR0Z6VW1WaFpFOXViSGxXWVd4MVpWdHdjbTl3Y3k1MGVYQmxYU0I4ZkNCd2NtOXdjeTV2YmtOb1lXNW5aU0I4ZkNCd2NtOXdjeTV5WldGa1QyNXNlU0I4ZkNCd2NtOXdjeTVrYVhOaFlteGxaQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVaWGNnUlhKeWIzSW9KMWx2ZFNCd2NtOTJhV1JsWkNCaElHQjJZV3gxWldBZ2NISnZjQ0IwYnlCaElHWnZjbTBnWm1sbGJHUWdkMmwwYUc5MWRDQmhiaUFuSUNzZ0oyQnZia05vWVc1blpXQWdhR0Z1Wkd4bGNpNGdWR2hwY3lCM2FXeHNJSEpsYm1SbGNpQmhJSEpsWVdRdGIyNXNlU0JtYVdWc1pDNGdTV1lnSnlBcklDZDBhR1VnWm1sbGJHUWdjMmh2ZFd4a0lHSmxJRzExZEdGaWJHVWdkWE5sSUdCa1pXWmhkV3gwVm1Gc2RXVmdMaUJQZEdobGNuZHBjMlVzSUNjZ0t5QW5jMlYwSUdWcGRHaGxjaUJnYjI1RGFHRnVaMlZnSUc5eUlHQnlaV0ZrVDI1c2VXQXVKeWs3WEc0Z0lIMHNYRzRnSUdOb1pXTnJaV1E2SUdaMWJtTjBhVzl1SUNod2NtOXdjeXdnY0hKdmNFNWhiV1VzSUdOdmJYQnZibVZ1ZEU1aGJXVXBJSHRjYmlBZ0lDQnBaaUFvSVhCeWIzQnpXM0J5YjNCT1lXMWxYU0I4ZkNCd2NtOXdjeTV2YmtOb1lXNW5aU0I4ZkNCd2NtOXdjeTV5WldGa1QyNXNlU0I4ZkNCd2NtOXdjeTVrYVhOaFlteGxaQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVaWGNnUlhKeWIzSW9KMWx2ZFNCd2NtOTJhV1JsWkNCaElHQmphR1ZqYTJWa1lDQndjbTl3SUhSdklHRWdabTl5YlNCbWFXVnNaQ0IzYVhSb2IzVjBJR0Z1SUNjZ0t5QW5ZRzl1UTJoaGJtZGxZQ0JvWVc1a2JHVnlMaUJVYUdseklIZHBiR3dnY21WdVpHVnlJR0VnY21WaFpDMXZibXg1SUdacFpXeGtMaUJKWmlBbklDc2dKM1JvWlNCbWFXVnNaQ0J6YUc5MWJHUWdZbVVnYlhWMFlXSnNaU0IxYzJVZ1lHUmxabUYxYkhSRGFHVmphMlZrWUM0Z1QzUm9aWEozYVhObExDQW5JQ3NnSjNObGRDQmxhWFJvWlhJZ1lHOXVRMmhoYm1kbFlDQnZjaUJnY21WaFpFOXViSGxnTGljcE8xeHVJQ0I5TEZ4dUlDQnZia05vWVc1blpUb2dVbVZoWTNSUWNtOXdWSGx3WlhNdVpuVnVZMXh1ZlR0Y2JseHVkbUZ5SUd4dloyZGxaRlI1Y0dWR1lXbHNkWEpsY3lBOUlIdDlPMXh1Wm5WdVkzUnBiMjRnWjJWMFJHVmpiR0Z5WVhScGIyNUZjbkp2Y2tGa1pHVnVaSFZ0S0c5M2JtVnlLU0I3WEc0Z0lHbG1JQ2h2ZDI1bGNpa2dlMXh1SUNBZ0lIWmhjaUJ1WVcxbElEMGdiM2R1WlhJdVoyVjBUbUZ0WlNncE8xeHVJQ0FnSUdsbUlDaHVZVzFsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnSnlCRGFHVmpheUIwYUdVZ2NtVnVaR1Z5SUcxbGRHaHZaQ0J2WmlCZ0p5QXJJRzVoYldVZ0t5QW5ZQzRuTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdKeWM3WEc1OVhHNWNiaThxS2x4dUlDb2dVSEp2ZG1sa1pTQmhJR3hwYm10bFpDQmdkbUZzZFdWZ0lHRjBkSEpwWW5WMFpTQm1iM0lnWTI5dWRISnZiR3hsWkNCbWIzSnRjeTRnV1c5MUlITm9iM1ZzWkNCdWIzUWdkWE5sWEc0Z0tpQjBhR2x6SUc5MWRITnBaR1VnYjJZZ2RHaGxJRkpsWVdOMFJFOU5JR052Ym5SeWIyeHNaV1FnWm05eWJTQmpiMjF3YjI1bGJuUnpMbHh1SUNvdlhHNTJZWElnVEdsdWEyVmtWbUZzZFdWVmRHbHNjeUE5SUh0Y2JpQWdZMmhsWTJ0UWNtOXdWSGx3WlhNNklHWjFibU4wYVc5dUlDaDBZV2RPWVcxbExDQndjbTl3Y3l3Z2IzZHVaWElwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3Y205d1RtRnRaU0JwYmlCd2NtOXdWSGx3WlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d1ZIbHdaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQmxjbkp2Y2lBOUlIQnliM0JVZVhCbGMxdHdjbTl3VG1GdFpWMG9jSEp2Y0hNc0lIQnliM0JPWVcxbExDQjBZV2RPWVcxbExDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6TG5CeWIzQXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0dWeWNtOXlJR2x1YzNSaGJtTmxiMllnUlhKeWIzSWdKaVlnSVNobGNuSnZjaTV0WlhOellXZGxJR2x1SUd4dloyZGxaRlI1Y0dWR1lXbHNkWEpsY3lrcElIdGNiaUFnSUNBZ0lDQWdMeThnVDI1c2VTQnRiMjVwZEc5eUlIUm9hWE1nWm1GcGJIVnlaU0J2Ym1ObElHSmxZMkYxYzJVZ2RHaGxjbVVnZEdWdVpITWdkRzhnWW1VZ1lTQnNiM1FnYjJZZ2RHaGxYRzRnSUNBZ0lDQWdJQzh2SUhOaGJXVWdaWEp5YjNJdVhHNGdJQ0FnSUNBZ0lHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGMxdGxjbkp2Y2k1dFpYTnpZV2RsWFNBOUlIUnlkV1U3WEc1Y2JpQWdJQ0FnSUNBZ2RtRnlJR0ZrWkdWdVpIVnRJRDBnWjJWMFJHVmpiR0Z5WVhScGIyNUZjbkp2Y2tGa1pHVnVaSFZ0S0c5M2JtVnlLVHRjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkR1lXbHNaV1FnWm05eWJTQndjbTl3Vkhsd1pUb2dKWE1sY3ljc0lHVnljbTl5TG0xbGMzTmhaMlVzSUdGa1pHVnVaSFZ0S1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnBibkIxZEZCeWIzQnpJRkJ5YjNCeklHWnZjaUJtYjNKdElHTnZiWEJ2Ym1WdWRGeHVJQ0FnS2lCQWNtVjBkWEp1SUhzcWZTQmpkWEp5Wlc1MElIWmhiSFZsSUc5bUlIUm9aU0JwYm5CMWRDQmxhWFJvWlhJZ1puSnZiU0IyWVd4MVpTQndjbTl3SUc5eUlHeHBibXN1WEc0Z0lDQXFMMXh1SUNCblpYUldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tHbHVjSFYwVUhKdmNITXBJSHRjYmlBZ0lDQnBaaUFvYVc1d2RYUlFjbTl3Y3k1MllXeDFaVXhwYm1zcElIdGNiaUFnSUNBZ0lGOWhjM05sY25SV1lXeDFaVXhwYm1zb2FXNXdkWFJRY205d2N5azdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNXdkWFJRY205d2N5NTJZV3gxWlV4cGJtc3VkbUZzZFdVN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnBibkIxZEZCeWIzQnpMblpoYkhWbE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdhVzV3ZFhSUWNtOXdjeUJRY205d2N5Qm1iM0lnWm05eWJTQmpiMjF3YjI1bGJuUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN0tuMGdZM1Z5Y21WdWRDQmphR1ZqYTJWa0lITjBZWFIxY3lCdlppQjBhR1VnYVc1d2RYUWdaV2wwYUdWeUlHWnliMjBnWTJobFkydGxaQ0J3Y205d1hHNGdJQ0FxSUNBZ0lDQWdJQ0FnSUNBZ0lHOXlJR3hwYm1zdVhHNGdJQ0FxTDF4dUlDQm5aWFJEYUdWamEyVmtPaUJtZFc1amRHbHZiaUFvYVc1d2RYUlFjbTl3Y3lrZ2UxeHVJQ0FnSUdsbUlDaHBibkIxZEZCeWIzQnpMbU5vWldOclpXUk1hVzVyS1NCN1hHNGdJQ0FnSUNCZllYTnpaWEowUTJobFkydGxaRXhwYm1zb2FXNXdkWFJRY205d2N5azdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNXdkWFJRY205d2N5NWphR1ZqYTJWa1RHbHVheTUyWVd4MVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR2x1Y0hWMFVISnZjSE11WTJobFkydGxaRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdsdWNIVjBVSEp2Y0hNZ1VISnZjSE1nWm05eUlHWnZjbTBnWTI5dGNHOXVaVzUwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVM2x1ZEdobGRHbGpSWFpsYm5SOUlHVjJaVzUwSUdOb1lXNW5aU0JsZG1WdWRDQjBieUJvWVc1a2JHVmNiaUFnSUNvdlhHNGdJR1Y0WldOMWRHVlBia05vWVc1blpUb2dablZ1WTNScGIyNGdLR2x1Y0hWMFVISnZjSE1zSUdWMlpXNTBLU0I3WEc0Z0lDQWdhV1lnS0dsdWNIVjBVSEp2Y0hNdWRtRnNkV1ZNYVc1cktTQjdYRzRnSUNBZ0lDQmZZWE56WlhKMFZtRnNkV1ZNYVc1cktHbHVjSFYwVUhKdmNITXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHbHVjSFYwVUhKdmNITXVkbUZzZFdWTWFXNXJMbkpsY1hWbGMzUkRhR0Z1WjJVb1pYWmxiblF1ZEdGeVoyVjBMblpoYkhWbEtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHbHVjSFYwVUhKdmNITXVZMmhsWTJ0bFpFeHBibXNwSUh0Y2JpQWdJQ0FnSUY5aGMzTmxjblJEYUdWamEyVmtUR2x1YXlocGJuQjFkRkJ5YjNCektUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCcGJuQjFkRkJ5YjNCekxtTm9aV05yWldSTWFXNXJMbkpsY1hWbGMzUkRhR0Z1WjJVb1pYWmxiblF1ZEdGeVoyVjBMbU5vWldOclpXUXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9hVzV3ZFhSUWNtOXdjeTV2YmtOb1lXNW5aU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1Y0hWMFVISnZjSE11YjI1RGFHRnVaMlV1WTJGc2JDaDFibVJsWm1sdVpXUXNJR1YyWlc1MEtUdGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N6c2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBQb29sZWRDbGFzc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mXG4gKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG4gKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvXG4gKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXG4gKiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmlsZXMuXG4gKi9cbnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJvbSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pO1xuICB9XG59O1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTtcbiAgfVxufTtcblxudmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzKTtcbiAgfVxufTtcblxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpO1xuICB9XG59O1xuXG52YXIgZml2ZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0LCBhNSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCwgYTUpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSk7XG4gIH1cbn07XG5cbnZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGluc3RhbmNlLmRlc3RydWN0b3IoKTtcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5wb29sU2l6ZSkge1xuICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTtcbiAgfVxufTtcblxudmFyIERFRkFVTFRfUE9PTF9TSVpFID0gMTA7XG52YXIgREVGQVVMVF9QT09MRVIgPSBvbmVBcmd1bWVudFBvb2xlcjtcblxuLyoqXG4gKiBBdWdtZW50cyBgQ29weUNvbnN0cnVjdG9yYCB0byBiZSBhIHBvb2xhYmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzXG4gKiBpdHNlbGYgKHN0YXRpY2FsbHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0b3JcbiAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQgd2lsbCBsb29rIGZvciBhXG4gKiBwcm90b3R5cGljYWwgYGRlc3RydWN0b3JgIG9uIGluc3RhbmNlcyAob3B0aW9uYWwpLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG4gKi9cbnZhciBhZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcbiAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yO1xuICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTtcbiAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSO1xuICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7XG4gICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTtcbiAgfVxuICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjtcbiAgcmV0dXJuIE5ld0tsYXNzO1xufTtcblxudmFyIFBvb2xlZENsYXNzID0ge1xuICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcbiAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLFxuICB0d29Bcmd1bWVudFBvb2xlcjogdHdvQXJndW1lbnRQb29sZXIsXG4gIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIsXG4gIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyLFxuICBmaXZlQXJndW1lbnRQb29sZXI6IGZpdmVBcmd1bWVudFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVRzl2YkdWa1EyeGhjM011YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCUWIyOXNaV1JEYkdGemMxeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzR2S2lwY2JpQXFJRk4wWVhScFl5QndiMjlzWlhKekxpQlRaWFpsY21Gc0lHTjFjM1J2YlNCMlpYSnphVzl1Y3lCbWIzSWdaV0ZqYUNCd2IzUmxiblJwWVd3Z2JuVnRZbVZ5SUc5bVhHNGdLaUJoY21kMWJXVnVkSE11SUVFZ1kyOXRjR3hsZEdWc2VTQm5aVzVsY21saklIQnZiMnhsY2lCcGN5QmxZWE41SUhSdklHbHRjR3hsYldWdWRDd2dZblYwSUhkdmRXeGtYRzRnS2lCeVpYRjFhWEpsSUdGalkyVnpjMmx1WnlCMGFHVWdZR0Z5WjNWdFpXNTBjMkFnYjJKcVpXTjBMaUJKYmlCbFlXTm9JRzltSUhSb1pYTmxMQ0JnZEdocGMyQWdjbVZtWlhKeklIUnZYRzRnS2lCMGFHVWdRMnhoYzNNZ2FYUnpaV3htTENCdWIzUWdZVzRnYVc1emRHRnVZMlV1SUVsbUlHRnVlU0J2ZEdobGNuTWdZWEpsSUc1bFpXUmxaQ3dnYzJsdGNHeDVJR0ZrWkNCMGFHVnRYRzRnS2lCb1pYSmxMQ0J2Y2lCcGJpQjBhR1ZwY2lCdmQyNGdabWxzWlhNdVhHNGdLaTljYm5aaGNpQnZibVZCY21kMWJXVnVkRkJ2YjJ4bGNpQTlJR1oxYm1OMGFXOXVJQ2hqYjNCNVJtbGxiR1J6Um5KdmJTa2dlMXh1SUNCMllYSWdTMnhoYzNNZ1BTQjBhR2x6TzF4dUlDQnBaaUFvUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG14bGJtZDBhQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBZVzVqWlNBOUlFdHNZWE56TG1sdWMzUmhibU5sVUc5dmJDNXdiM0FvS1R0Y2JpQWdJQ0JMYkdGemN5NWpZV3hzS0dsdWMzUmhibU5sTENCamIzQjVSbWxsYkdSelJuSnZiU2s3WEc0Z0lDQWdjbVYwZFhKdUlHbHVjM1JoYm1ObE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dTMnhoYzNNb1kyOXdlVVpwWld4a2MwWnliMjBwTzF4dUlDQjlYRzU5TzF4dVhHNTJZWElnZEhkdlFYSm5kVzFsYm5SUWIyOXNaWElnUFNCbWRXNWpkR2x2YmlBb1lURXNJR0V5S1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR0V4TENCaE1pazdYRzRnSUNBZ2NtVjBkWEp1SUdsdWMzUmhibU5sTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1MyeGhjM01vWVRFc0lHRXlLVHRjYmlBZ2ZWeHVmVHRjYmx4dWRtRnlJSFJvY21WbFFYSm5kVzFsYm5SUWIyOXNaWElnUFNCbWRXNWpkR2x2YmlBb1lURXNJR0V5TENCaE15a2dlMXh1SUNCMllYSWdTMnhoYzNNZ1BTQjBhR2x6TzF4dUlDQnBaaUFvUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG14bGJtZDBhQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBZVzVqWlNBOUlFdHNZWE56TG1sdWMzUmhibU5sVUc5dmJDNXdiM0FvS1R0Y2JpQWdJQ0JMYkdGemN5NWpZV3hzS0dsdWMzUmhibU5sTENCaE1Td2dZVElzSUdFektUdGNiaUFnSUNCeVpYUjFjbTRnYVc1emRHRnVZMlU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCTGJHRnpjeWhoTVN3Z1lUSXNJR0V6S1R0Y2JpQWdmVnh1ZlR0Y2JseHVkbUZ5SUdadmRYSkJjbWQxYldWdWRGQnZiMnhsY2lBOUlHWjFibU4wYVc5dUlDaGhNU3dnWVRJc0lHRXpMQ0JoTkNrZ2UxeHVJQ0IyWVhJZ1MyeGhjM01nUFNCMGFHbHpPMXh1SUNCcFppQW9TMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbXhsYm1kMGFDa2dlMXh1SUNBZ0lIWmhjaUJwYm5OMFlXNWpaU0E5SUV0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkM1d2IzQW9LVHRjYmlBZ0lDQkxiR0Z6Y3k1allXeHNLR2x1YzNSaGJtTmxMQ0JoTVN3Z1lUSXNJR0V6TENCaE5DazdYRzRnSUNBZ2NtVjBkWEp1SUdsdWMzUmhibU5sTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1MyeGhjM01vWVRFc0lHRXlMQ0JoTXl3Z1lUUXBPMXh1SUNCOVhHNTlPMXh1WEc1MllYSWdabWwyWlVGeVozVnRaVzUwVUc5dmJHVnlJRDBnWm5WdVkzUnBiMjRnS0dFeExDQmhNaXdnWVRNc0lHRTBMQ0JoTlNrZ2UxeHVJQ0IyWVhJZ1MyeGhjM01nUFNCMGFHbHpPMXh1SUNCcFppQW9TMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbXhsYm1kMGFDa2dlMXh1SUNBZ0lIWmhjaUJwYm5OMFlXNWpaU0E5SUV0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkM1d2IzQW9LVHRjYmlBZ0lDQkxiR0Z6Y3k1allXeHNLR2x1YzNSaGJtTmxMQ0JoTVN3Z1lUSXNJR0V6TENCaE5Dd2dZVFVwTzF4dUlDQWdJSEpsZEhWeWJpQnBibk4wWVc1alpUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRXRzWVhOektHRXhMQ0JoTWl3Z1lUTXNJR0UwTENCaE5TazdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQnpkR0Z1WkdGeVpGSmxiR1ZoYzJWeUlEMGdablZ1WTNScGIyNGdLR2x1YzNSaGJtTmxLU0I3WEc0Z0lIWmhjaUJMYkdGemN5QTlJSFJvYVhNN1hHNGdJQ0VvYVc1emRHRnVZMlVnYVc1emRHRnVZMlZ2WmlCTGJHRnpjeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5WSEo1YVc1bklIUnZJSEpsYkdWaGMyVWdZVzRnYVc1emRHRnVZMlVnYVc1MGJ5QmhJSEJ2YjJ3Z2IyWWdZU0JrYVdabVpYSmxiblFnZEhsd1pTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJR2x1YzNSaGJtTmxMbVJsYzNSeWRXTjBiM0lvS1R0Y2JpQWdhV1lnS0V0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkM1c1pXNW5kR2dnUENCTGJHRnpjeTV3YjI5c1UybDZaU2tnZTF4dUlDQWdJRXRzWVhOekxtbHVjM1JoYm1ObFVHOXZiQzV3ZFhOb0tHbHVjM1JoYm1ObEtUdGNiaUFnZlZ4dWZUdGNibHh1ZG1GeUlFUkZSa0ZWVEZSZlVFOVBURjlUU1ZwRklEMGdNVEE3WEc1MllYSWdSRVZHUVZWTVZGOVFUMDlNUlZJZ1BTQnZibVZCY21kMWJXVnVkRkJ2YjJ4bGNqdGNibHh1THlvcVhHNGdLaUJCZFdkdFpXNTBjeUJnUTI5d2VVTnZibk4wY25WamRHOXlZQ0IwYnlCaVpTQmhJSEJ2YjJ4aFlteGxJR05zWVhOekxDQmhkV2R0Wlc1MGFXNW5JRzl1YkhrZ2RHaGxJR05zWVhOelhHNGdLaUJwZEhObGJHWWdLSE4wWVhScFkyRnNiSGtwSUc1dmRDQmhaR1JwYm1jZ1lXNTVJSEJ5YjNSdmRIbHdhV05oYkNCbWFXVnNaSE11SUVGdWVTQkRiM0I1UTI5dWMzUnlkV04wYjNKY2JpQXFJSGx2ZFNCbmFYWmxJSFJvYVhNZ2JXRjVJR2hoZG1VZ1lTQmdjRzl2YkZOcGVtVmdJSEJ5YjNCbGNuUjVMQ0JoYm1RZ2QybHNiQ0JzYjI5cklHWnZjaUJoWEc0Z0tpQndjbTkwYjNSNWNHbGpZV3dnWUdSbGMzUnlkV04wYjNKZ0lHOXVJR2x1YzNSaGJtTmxjeUFvYjNCMGFXOXVZV3dwTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUVOdmNIbERiMjV6ZEhKMVkzUnZjaUJEYjI1emRISjFZM1J2Y2lCMGFHRjBJR05oYmlCaVpTQjFjMlZrSUhSdklISmxjMlYwTGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdjRzl2YkdWeUlFTjFjM1J2YldsNllXSnNaU0J3YjI5c1pYSXVYRzRnS2k5Y2JuWmhjaUJoWkdSUWIyOXNhVzVuVkc4Z1BTQm1kVzVqZEdsdmJpQW9RMjl3ZVVOdmJuTjBjblZqZEc5eUxDQndiMjlzWlhJcElIdGNiaUFnZG1GeUlFNWxkMHRzWVhOeklEMGdRMjl3ZVVOdmJuTjBjblZqZEc5eU8xeHVJQ0JPWlhkTGJHRnpjeTVwYm5OMFlXNWpaVkJ2YjJ3Z1BTQmJYVHRjYmlBZ1RtVjNTMnhoYzNNdVoyVjBVRzl2YkdWa0lEMGdjRzl2YkdWeUlIeDhJRVJGUmtGVlRGUmZVRTlQVEVWU08xeHVJQ0JwWmlBb0lVNWxkMHRzWVhOekxuQnZiMnhUYVhwbEtTQjdYRzRnSUNBZ1RtVjNTMnhoYzNNdWNHOXZiRk5wZW1VZ1BTQkVSVVpCVlV4VVgxQlBUMHhmVTBsYVJUdGNiaUFnZlZ4dUlDQk9aWGRMYkdGemN5NXlaV3hsWVhObElEMGdjM1JoYm1SaGNtUlNaV3hsWVhObGNqdGNiaUFnY21WMGRYSnVJRTVsZDB0c1lYTnpPMXh1ZlR0Y2JseHVkbUZ5SUZCdmIyeGxaRU5zWVhOeklEMGdlMXh1SUNCaFpHUlFiMjlzYVc1blZHODZJR0ZrWkZCdmIyeHBibWRVYnl4Y2JpQWdiMjVsUVhKbmRXMWxiblJRYjI5c1pYSTZJRzl1WlVGeVozVnRaVzUwVUc5dmJHVnlMRnh1SUNCMGQyOUJjbWQxYldWdWRGQnZiMnhsY2pvZ2RIZHZRWEpuZFcxbGJuUlFiMjlzWlhJc1hHNGdJSFJvY21WbFFYSm5kVzFsYm5SUWIyOXNaWEk2SUhSb2NtVmxRWEpuZFcxbGJuUlFiMjlzWlhJc1hHNGdJR1p2ZFhKQmNtZDFiV1Z1ZEZCdmIyeGxjam9nWm05MWNrRnlaM1Z0Wlc1MFVHOXZiR1Z5TEZ4dUlDQm1hWFpsUVhKbmRXMWxiblJRYjI5c1pYSTZJR1pwZG1WQmNtZDFiV1Z1ZEZCdmIyeGxjbHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlFiMjlzWldSRGJHRnpjenNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGlkV2FybktleSA9ICdfZ2V0RE9NTm9kZURpZFdhcm4nO1xuXG52YXIgUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4gPSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJlZCBieSB0aGlzIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybiB7RE9NRWxlbWVudH0gVGhlIHJvb3Qgbm9kZSBvZiB0aGlzIGNvbXBvbmVudC5cbiAgICogQGZpbmFsXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIGdldERPTU5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0aGlzLmNvbnN0cnVjdG9yW2RpZFdhcm5LZXldLCAnJXMuZ2V0RE9NTm9kZSguLi4pIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJyArICdSZWFjdERPTS5maW5kRE9NTm9kZShpbnN0YW5jZSkgaW5zdGVhZC4nLCBSZWFjdEluc3RhbmNlTWFwLmdldCh0aGlzKS5nZXROYW1lKCkgfHwgdGhpcy50YWdOYW1lIHx8ICdVbmtub3duJykgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25zdHJ1Y3RvcltkaWRXYXJuS2V5XSA9IHRydWU7XG4gICAgcmV0dXJuIGZpbmRET01Ob2RlKHRoaXMpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0QnJvd3NlckNvbXBvbmVudE1peGluO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JDY205M2MyVnlRMjl0Y0c5dVpXNTBUV2w0YVc0dWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUW5KdmQzTmxja052YlhCdmJtVnVkRTFwZUdsdVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlUxaGNDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkpibk4wWVc1alpVMWhjQ2NwTzF4dVhHNTJZWElnWm1sdVpFUlBUVTV2WkdVZ1BTQnlaWEYxYVhKbEtDY3VMMlpwYm1SRVQwMU9iMlJsSnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVkbUZ5SUdScFpGZGhjbTVMWlhrZ1BTQW5YMmRsZEVSUFRVNXZaR1ZFYVdSWFlYSnVKenRjYmx4dWRtRnlJRkpsWVdOMFFuSnZkM05sY2tOdmJYQnZibVZ1ZEUxcGVHbHVJRDBnZTF4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QjBhR1VnUkU5TklHNXZaR1VnY21WdVpHVnlaV1FnWW5rZ2RHaHBjeUJqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQnlaWFIxY200Z2UwUlBUVVZzWlcxbGJuUjlJRlJvWlNCeWIyOTBJRzV2WkdVZ2IyWWdkR2hwY3lCamIyMXdiMjVsYm5RdVhHNGdJQ0FxSUVCbWFXNWhiRnh1SUNBZ0tpQkFjSEp2ZEdWamRHVmtYRzRnSUNBcUwxeHVJQ0JuWlhSRVQwMU9iMlJsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29kR2hwY3k1amIyNXpkSEoxWTNSdmNsdGthV1JYWVhKdVMyVjVYU3dnSnlWekxtZGxkRVJQVFU1dlpHVW9MaTR1S1NCcGN5QmtaWEJ5WldOaGRHVmtMaUJRYkdWaGMyVWdkWE5sSUNjZ0t5QW5VbVZoWTNSRVQwMHVabWx1WkVSUFRVNXZaR1VvYVc1emRHRnVZMlVwSUdsdWMzUmxZV1F1Snl3Z1VtVmhZM1JKYm5OMFlXNWpaVTFoY0M1blpYUW9kR2hwY3lrdVoyVjBUbUZ0WlNncElIeDhJSFJvYVhNdWRHRm5UbUZ0WlNCOGZDQW5WVzVyYm05M2JpY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSFJvYVhNdVkyOXVjM1J5ZFdOMGIzSmJaR2xrVjJGeWJrdGxlVjBnUFNCMGNuVmxPMXh1SUNBZ0lISmxkSFZ5YmlCbWFXNWtSRTlOVG05a1pTaDBhR2x6S1R0Y2JpQWdmVnh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVKeWIzZHpaWEpEYjIxd2IyNWxiblJOYVhocGJqc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENoaWxkUmVjb25jaWxlclxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xuXG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSkge1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgdmFyIGtleVVuaXF1ZSA9IGNoaWxkSW5zdGFuY2VzW25hbWVdID09PSB1bmRlZmluZWQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoa2V5VW5pcXVlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJywgbmFtZSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7XG4gICAgY2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCBudWxsKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZlxuICogY2hpbGRyZW4uIEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2hcbiAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi5cbiAqL1xudmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogR2VuZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNhc2VcbiAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGROb2RlcyBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICogQHJldHVybiB7P29iamVjdH0gQSBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgY2hpbGRJbnN0YW5jZXMgPSB7fTtcbiAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3RlZENoaWxkTm9kZXMsIGluc3RhbnRpYXRlQ2hpbGQsIGNoaWxkSW5zdGFuY2VzKTtcbiAgICByZXR1cm4gY2hpbGRJbnN0YW5jZXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9vYmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBhIHdheSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRlcmF0b3JzXG4gICAgLy8gaW5zdGVhZCBvZiBmb3IuLmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQgY2hlY2sgaWYgYW4gaXRlbSBoYXNcbiAgICAvLyBtb3ZlZC5cbiAgICAvLyBUT0RPOiBJZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28gdGhhdCB3ZVxuICAgIC8vIGNhbiBxdWlja2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC5cbiAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIG5hbWU7XG4gICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikge1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdO1xuICAgICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgdmFyIG5leHRDaGlsZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgbnVsbCk7XG4gICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZEluc3RhbmNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBVbm1vdW50IGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkge1xuICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGRyZW5bbmFtZV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cbiAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuKSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiByZW5kZXJlZENoaWxkcmVuKSB7XG4gICAgICBpZiAocmVuZGVyZWRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV07XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHJlbmRlcmVkQ2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRSZWNvbmNpbGVyO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UUXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVOb2FXeGtVbVZqYjI1amFXeGxjbHh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRkpsWTI5dVkybHNaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVW1WamIyNWphV3hsY2ljcE8xeHVYRzUyWVhJZ2FXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDY3BPMXh1ZG1GeUlITm9iM1ZzWkZWd1pHRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTl6YUc5MWJHUlZjR1JoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzRnUFNCeVpYRjFhWEpsS0NjdUwzUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNG5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1bWRXNWpkR2x2YmlCcGJuTjBZVzUwYVdGMFpVTm9hV3hrS0dOb2FXeGtTVzV6ZEdGdVkyVnpMQ0JqYUdsc1pDd2dibUZ0WlNrZ2UxeHVJQ0F2THlCWFpTQm1iM1Z1WkNCaElHTnZiWEJ2Ym1WdWRDQnBibk4wWVc1alpTNWNiaUFnZG1GeUlHdGxlVlZ1YVhGMVpTQTlJR05vYVd4a1NXNXpkR0Z1WTJWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUTdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvYTJWNVZXNXBjWFZsTENBblpteGhkSFJsYmtOb2FXeGtjbVZ1S0M0dUxpazZJRVZ1WTI5MWJuUmxjbVZrSUhSM2J5QmphR2xzWkhKbGJpQjNhWFJvSUhSb1pTQnpZVzFsSUd0bGVTd2dKeUFySUNkZ0pYTmdMaUJEYUdsc1pDQnJaWGx6SUcxMWMzUWdZbVVnZFc1cGNYVmxPeUIzYUdWdUlIUjNieUJqYUdsc1pISmxiaUJ6YUdGeVpTQmhJR3RsZVN3Z2IyNXNlU0FuSUNzZ0ozUm9aU0JtYVhKemRDQmphR2xzWkNCM2FXeHNJR0psSUhWelpXUXVKeXdnYm1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnYVdZZ0tHTm9hV3hrSUNFOUlHNTFiR3dnSmlZZ2EyVjVWVzVwY1hWbEtTQjdYRzRnSUNBZ1kyaHBiR1JKYm5OMFlXNWpaWE5iYm1GdFpWMGdQU0JwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLR05vYVd4a0xDQnVkV3hzS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxZV04wUTJocGJHUlNaV052Ym1OcGJHVnlJSEJ5YjNacFpHVnpJR2hsYkhCbGNuTWdabTl5SUdsdWFYUnBZV3hwZW1sdVp5QnZjaUIxY0dSaGRHbHVaeUJoSUhObGRDQnZabHh1SUNvZ1kyaHBiR1J5Wlc0dUlFbDBjeUJ2ZFhSd2RYUWdhWE1nYzNWcGRHRmliR1VnWm05eUlIQmhjM05wYm1jZ2FYUWdiMjUwYnlCU1pXRmpkRTExYkhScFEyaHBiR1FnZDJocFkyaGNiaUFxSUdSdlpYTWdaR2xtWm1Wa0lISmxiM0prWlhKcGJtY2dZVzVrSUdsdWMyVnlkR2x2Ymk1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUTJocGJHUlNaV052Ym1OcGJHVnlJRDBnZTF4dUlDQXZLaXBjYmlBZ0lDb2dSMlZ1WlhKaGRHVnpJR0VnWENKdGIzVnVkQ0JwYldGblpWd2lJR1p2Y2lCbFlXTm9JRzltSUhSb1pTQnpkWEJ3YkdsbFpDQmphR2xzWkhKbGJpNGdTVzRnZEdobElHTmhjMlZjYmlBZ0lDb2diMllnWUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWUN3Z1lTQnRiM1Z1ZENCcGJXRm5aU0JwY3lCaElITjBjbWx1WnlCdlppQnRZWEpyZFhBdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVZ6ZEdWa1EyaHBiR1JPYjJSbGN5Qk9aWE4wWldRZ1kyaHBiR1FnYldGd2N5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AyOWlhbVZqZEgwZ1FTQnpaWFFnYjJZZ1kyaHBiR1FnYVc1emRHRnVZMlZ6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdsdWMzUmhiblJwWVhSbFEyaHBiR1J5Wlc0NklHWjFibU4wYVc5dUlDaHVaWE4wWldSRGFHbHNaRTV2WkdWekxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJR2xtSUNodVpYTjBaV1JEYUdsc1pFNXZaR1Z6SUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JpQWdJQ0IyWVhJZ1kyaHBiR1JKYm5OMFlXNWpaWE1nUFNCN2ZUdGNiaUFnSUNCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUtHNWxjM1JsWkVOb2FXeGtUbTlrWlhNc0lHbHVjM1JoYm5ScFlYUmxRMmhwYkdRc0lHTm9hV3hrU1c1emRHRnVZMlZ6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdZMmhwYkdSSmJuTjBZVzVqWlhNN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlZ3WkdGMFpYTWdkR2hsSUhKbGJtUmxjbVZrSUdOb2FXeGtjbVZ1SUdGdVpDQnlaWFIxY201eklHRWdibVYzSUhObGRDQnZaaUJqYUdsc1pISmxiaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCd2NtVjJRMmhwYkdSeVpXNGdVSEpsZG1sdmRYTnNlU0JwYm1sMGFXRnNhWHBsWkNCelpYUWdiMllnWTJocGJHUnlaVzR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVY0ZEVOb2FXeGtjbVZ1SUVac1lYUWdZMmhwYkdRZ1pXeGxiV1Z1ZENCdFlYQnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCamIyNTBaWGgwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejl2WW1wbFkzUjlJRUVnYm1WM0lITmxkQ0J2WmlCamFHbHNaQ0JwYm5OMFlXNWpaWE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnZFhCa1lYUmxRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2h3Y21WMlEyaHBiR1J5Wlc0c0lHNWxlSFJEYUdsc1pISmxiaXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcElIdGNiaUFnSUNBdkx5QlhaU0JqZFhKeVpXNTBiSGtnWkc5dUozUWdhR0YyWlNCaElIZGhlU0IwYnlCMGNtRmpheUJ0YjNabGN5Qm9aWEpsSUdKMWRDQnBaaUIzWlNCMWMyVWdhWFJsY21GMGIzSnpYRzRnSUNBZ0x5OGdhVzV6ZEdWaFpDQnZaaUJtYjNJdUxtbHVJSGRsSUdOaGJpQjZhWEFnZEdobElHbDBaWEpoZEc5eWN5QmhibVFnWTJobFkyc2dhV1lnWVc0Z2FYUmxiU0JvWVhOY2JpQWdJQ0F2THlCdGIzWmxaQzVjYmlBZ0lDQXZMeUJVVDBSUE9pQkpaaUJ1YjNSb2FXNW5JR2hoY3lCamFHRnVaMlZrTENCeVpYUjFjbTRnZEdobElIQnlaWFpEYUdsc1pISmxiaUJ2WW1wbFkzUWdjMjhnZEdoaGRDQjNaVnh1SUNBZ0lDOHZJR05oYmlCeGRXbGphMng1SUdKaGFXeHZkWFFnYVdZZ2JtOTBhR2x1WnlCb1lYTWdZMmhoYm1kbFpDNWNiaUFnSUNCcFppQW9JVzVsZUhSRGFHbHNaSEpsYmlBbUppQWhjSEpsZGtOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlHNWhiV1U3WEc0Z0lDQWdabTl5SUNodVlXMWxJR2x1SUc1bGVIUkRhR2xzWkhKbGJpa2dlMXh1SUNBZ0lDQWdhV1lnS0NGdVpYaDBRMmhwYkdSeVpXNHVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMllYSWdjSEpsZGtOb2FXeGtJRDBnY0hKbGRrTm9hV3hrY21WdUlDWW1JSEJ5WlhaRGFHbHNaSEpsYmx0dVlXMWxYVHRjYmlBZ0lDQWdJSFpoY2lCd2NtVjJSV3hsYldWdWRDQTlJSEJ5WlhaRGFHbHNaQ0FtSmlCd2NtVjJRMmhwYkdRdVgyTjFjbkpsYm5SRmJHVnRaVzUwTzF4dUlDQWdJQ0FnZG1GeUlHNWxlSFJGYkdWdFpXNTBJRDBnYm1WNGRFTm9hV3hrY21WdVcyNWhiV1ZkTzF4dUlDQWdJQ0FnYVdZZ0tIQnlaWFpEYUdsc1pDQWhQU0J1ZFd4c0lDWW1JSE5vYjNWc1pGVndaR0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLSEJ5WlhaRmJHVnRaVzUwTENCdVpYaDBSV3hsYldWdWRDa3BJSHRjYmlBZ0lDQWdJQ0FnVW1WaFkzUlNaV052Ym1OcGJHVnlMbkpsWTJWcGRtVkRiMjF3YjI1bGJuUW9jSEpsZGtOb2FXeGtMQ0J1WlhoMFJXeGxiV1Z1ZEN3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0J1WlhoMFEyaHBiR1J5Wlc1YmJtRnRaVjBnUFNCd2NtVjJRMmhwYkdRN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCcFppQW9jSEpsZGtOb2FXeGtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5WdWJXOTFiblJEYjIxd2IyNWxiblFvY0hKbGRrTm9hV3hrTENCdVlXMWxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBdkx5QlVhR1VnWTJocGJHUWdiWFZ6ZENCaVpTQnBibk4wWVc1MGFXRjBaV1FnWW1WbWIzSmxJR2wwSjNNZ2JXOTFiblJsWkM1Y2JpQWdJQ0FnSUNBZ2RtRnlJRzVsZUhSRGFHbHNaRWx1YzNSaGJtTmxJRDBnYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2h1WlhoMFJXeGxiV1Z1ZEN3Z2JuVnNiQ2s3WEc0Z0lDQWdJQ0FnSUc1bGVIUkRhR2xzWkhKbGJsdHVZVzFsWFNBOUlHNWxlSFJEYUdsc1pFbHVjM1JoYm1ObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0F2THlCVmJtMXZkVzUwSUdOb2FXeGtjbVZ1SUhSb1lYUWdZWEpsSUc1dklHeHZibWRsY2lCd2NtVnpaVzUwTGx4dUlDQWdJR1p2Y2lBb2JtRnRaU0JwYmlCd2NtVjJRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJR2xtSUNod2NtVjJRMmhwYkdSeVpXNHVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnSmlZZ0lTaHVaWGgwUTJocGJHUnlaVzRnSmlZZ2JtVjRkRU5vYVd4a2NtVnVMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwS1NrZ2UxeHVJQ0FnSUNBZ0lDQlNaV0ZqZEZKbFkyOXVZMmxzWlhJdWRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZENod2NtVjJRMmhwYkdSeVpXNWJibUZ0WlYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdibVY0ZEVOb2FXeGtjbVZ1TzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlZibTF2ZFc1MGN5QmhiR3dnY21WdVpHVnlaV1FnWTJocGJHUnlaVzR1SUZSb2FYTWdjMmh2ZFd4a0lHSmxJSFZ6WldRZ2RHOGdZMnhsWVc0Z2RYQWdZMmhwYkdSeVpXNWNiaUFnSUNvZ2QyaGxiaUIwYUdseklHTnZiWEJ2Ym1WdWRDQnBjeUIxYm0xdmRXNTBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2NtVnVaR1Z5WldSRGFHbHNaSEpsYmlCUWNtVjJhVzkxYzJ4NUlHbHVhWFJwWVd4cGVtVmtJSE5sZENCdlppQmphR2xzWkhKbGJpNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQjFibTF2ZFc1MFEyaHBiR1J5Wlc0NklHWjFibU4wYVc5dUlDaHlaVzVrWlhKbFpFTm9hV3hrY21WdUtTQjdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2JtRnRaU0JwYmlCeVpXNWtaWEpsWkVOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNCcFppQW9jbVZ1WkdWeVpXUkRhR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjbVZ1WkdWeVpXUkRhR2xzWkNBOUlISmxibVJsY21Wa1EyaHBiR1J5Wlc1YmJtRnRaVjA3WEc0Z0lDQWdJQ0FnSUZKbFlXTjBVbVZqYjI1amFXeGxjaTUxYm0xdmRXNTBRMjl0Y0c5dVpXNTBLSEpsYm1SbGNtVmtRMmhwYkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q2xhc3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnQnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMnKTtcbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3ROb29wVXBkYXRlUXVldWUnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBrZXlNaXJyb3IgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlNaXJyb3InKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIE1JWElOU19LRVkgPSBrZXlPZih7IG1peGluczogbnVsbCB9KTtcblxuLyoqXG4gKiBQb2xpY2llcyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4gYFJlYWN0Q2xhc3NJbnRlcmZhY2VgLlxuICovXG52YXIgU3BlY1BvbGljeSA9IGtleU1pcnJvcih7XG4gIC8qKlxuICAgKiBUaGVzZSBtZXRob2RzIG1heSBiZSBkZWZpbmVkIG9ubHkgb25jZSBieSB0aGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBvciBtaXhpbi5cbiAgICovXG4gIERFRklORV9PTkNFOiBudWxsLFxuICAvKipcbiAgICogVGhlc2UgbWV0aG9kcyBtYXkgYmUgZGVmaW5lZCBieSBib3RoIHRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIGFuZCBtaXhpbnMuXG4gICAqIFN1YnNlcXVlbnQgZGVmaW5pdGlvbnMgd2lsbCBiZSBjaGFpbmVkLiBUaGVzZSBtZXRob2RzIG11c3QgcmV0dXJuIHZvaWQuXG4gICAqL1xuICBERUZJTkVfTUFOWTogbnVsbCxcbiAgLyoqXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIG92ZXJyaWRpbmcgdGhlIGJhc2UgY2xhc3MuXG4gICAqL1xuICBPVkVSUklERV9CQVNFOiBudWxsLFxuICAvKipcbiAgICogVGhlc2UgbWV0aG9kcyBhcmUgc2ltaWxhciB0byBERUZJTkVfTUFOWSwgZXhjZXB0IHdlIGFzc3VtZSB0aGV5IHJldHVyblxuICAgKiBvYmplY3RzLiBXZSB0cnkgdG8gbWVyZ2UgdGhlIGtleXMgb2YgdGhlIHJldHVybiB2YWx1ZXMgb2YgYWxsIHRoZSBtaXhlZCBpblxuICAgKiBmdW5jdGlvbnMuIElmIHRoZXJlIGlzIGEga2V5IGNvbmZsaWN0IHdlIHRocm93LlxuICAgKi9cbiAgREVGSU5FX01BTllfTUVSR0VEOiBudWxsXG59KTtcblxudmFyIGluamVjdGVkTWl4aW5zID0gW107XG5cbnZhciB3YXJuZWRTZXRQcm9wcyA9IGZhbHNlO1xuZnVuY3Rpb24gd2FyblNldFByb3BzKCkge1xuICBpZiAoIXdhcm5lZFNldFByb3BzKSB7XG4gICAgd2FybmVkU2V0UHJvcHMgPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnc2V0UHJvcHMoLi4uKSBhbmQgcmVwbGFjZVByb3BzKC4uLikgYXJlIGRlcHJlY2F0ZWQuICcgKyAnSW5zdGVhZCwgY2FsbCByZW5kZXIgYWdhaW4gYXQgdGhlIHRvcCBsZXZlbC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29tcG9zaXRlXG4gKiBvciBuYXRpdmUgY29tcG9uZW50cy5cbiAqXG4gKiBUbyBjcmVhdGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2AsIHBhc3MgYSBzcGVjaWZpY2F0aW9uIG9mXG4gKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG4gKiBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgeW91IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC5cbiAqXG4gKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICogICAgICAgcmV0dXJuIDxkaXY+SGVsbG8gV29ybGQ8L2Rpdj47XG4gKiAgICAgfVxuICogICB9KTtcbiAqXG4gKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG4gKiBzcGVjaWFsIG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUgYFJlYWN0Q2xhc3NJbnRlcmZhY2VgIGZvclxuICogbW9yZSB0aGUgY29tcHJlaGVuc2l2ZSBwcm90b2NvbC4gQW55IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgaW4gdGhlXG4gKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuXG4gKlxuICogQGludGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0Q2xhc3NJbnRlcmZhY2UgPSB7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7YXJyYXl9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgbWl4aW5zOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgb25cbiAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLlxuICAgKlxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIHN0YXRpY3M6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgcHJvcFR5cGVzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbnRleHRUeXBlczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjaGlsZENvbnRleHRUeXBlczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvLyA9PT09IERlZmluaXRpb24gbWV0aG9kcyA9PT09XG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvblxuICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9wIGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlbHlcbiAgICogb24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5zZXRTdGF0ZWAuXG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBnZXREZWZhdWx0UHJvcHM6IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VELFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIG9uY2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHVzZWRcbiAgICogYXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYHRoaXMuc3RhdGVgLlxuICAgKlxuICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAqICAgICByZXR1cm4ge1xuICAgKiAgICAgICBpc09uOiBmYWxzZSxcbiAgICogICAgICAgZm9vQmF6OiBuZXcgQmF6Rm9vKClcbiAgICogICAgIH1cbiAgICogICB9XG4gICAqXG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBnZXRJbml0aWFsU3RhdGU6IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VELFxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgZ2V0Q2hpbGRDb250ZXh0OiBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCxcblxuICAvKipcbiAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJvbSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZVxuICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCBzb1xuICAgKiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cbiAgICpcbiAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XG4gICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25hbWV9ITwvZGl2PjtcbiAgICogICB9XG4gICAqXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxuICAgKiBAbm9zaWRlZWZmZWN0c1xuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIHJlbmRlcjogU3BlY1BvbGljeS5ERUZJTkVfT05DRSxcblxuICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PVxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgY3JlYXRlZCBhbmQgYWJvdXQgdG8gYmUgbW91bnRlZC5cbiAgICogVGhpcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMsIGJ1dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNyZWF0ZWRcbiAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAuXG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50V2lsbE1vdW50OiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXG4gICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50RGlkTW91bnQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBhIHByb3AgdHJhbnNpdGlvbiBieSB1cGRhdGluZyB0aGVcbiAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLlxuICAgKlxuICAgKiAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dENvbnRleHQpIHtcbiAgICogICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQgPiB0aGlzLnByb3BzLmxpa2VDb3VudFxuICAgKiAgICAgfSk7XG4gICAqICAgfVxuICAgKlxuICAgKiBOT1RFOiBUaGVyZSBpcyBubyBlcXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4gQW4gaW5jb21pbmcgcHJvcFxuICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5nZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91XG4gICAqIG5lZWQgaXQsIHlvdSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogSW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzdWx0IG9mXG4gICAqIHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRlIGFuZC9vciBjb250ZXh0LlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBgcmV0dXJuIGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQgdGhlXG4gICAqIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBwcm9wcy9zdGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVpcmUgYSBjb21wb25lbnRcbiAgICogdXBkYXRlLlxuICAgKlxuICAgKiAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KSB7XG4gICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcbiAgICogICAgICAgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSkgfHxcbiAgICogICAgICAgIWVxdWFsKG5leHRDb250ZXh0LCB0aGlzLmNvbnRleHQpO1xuICAgKiAgIH1cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlLlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZTogU3BlY1BvbGljeS5ERUZJTkVfT05DRSxcblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxuICAgKiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2AsIGBuZXh0U3RhdGVgXG4gICAqIGFuZCBgbmV4dENvbnRleHRgLlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBhbiB1cGRhdGUgb2NjdXJzLlxuICAgKlxuICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50V2lsbFVwZGF0ZTogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICogYmVlbiB1cGRhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJldlByb3BzXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHRcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb21wb25lbnREaWRVcGRhdGU6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG4gICAqIGl0cyBET00gcmVwcmVzZW50YXRpb24gZGVzdHJveWVkLlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG4gICAqXG4gICAqIE5PVEU6IFRoZXJlIGlzIG5vIGBjb21wb25lbnREaWRVbm1vdW50YCBzaW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhhdmUgYmVlblxuICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb21wb25lbnRXaWxsVW5tb3VudDogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvLyA9PT09IEFkdmFuY2VkIG1ldGhvZHMgPT09PVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVwcmVzZW50YXRpb24uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IFNwZWNQb2xpY3kuT1ZFUlJJREVfQkFTRVxuXG59O1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy5cbiAqXG4gKiBBbHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uXG4gKiB3aGVuIGRlZmluaW5nIGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3RhdGljXG4gKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxuICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSBcInN0YXRpY3NcIiBrZXkgdW5kZXJcbiAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5lZC5cbiAqL1xudmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHtcbiAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHtcbiAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICB9LFxuICBtaXhpbnM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgbWl4aW5zKSB7XG4gICAgaWYgKG1peGlucykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjaGlsZENvbnRleHRUeXBlczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLmNoaWxkQ29udGV4dCk7XG4gICAgfVxuICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzID0gYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0VHlwZXMpO1xuICB9LFxuICBjb250ZXh0VHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLmNvbnRleHQpO1xuICAgIH1cbiAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMgPSBhc3NpZ24oe30sIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcywgY29udGV4dFR5cGVzKTtcbiAgfSxcbiAgLyoqXG4gICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xuICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cbiAgICovXG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtcbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsIGdldERlZmF1bHRQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERlZmF1bHRQcm9wcztcbiAgICB9XG4gIH0sXG4gIHByb3BUeXBlczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCk7XG4gICAgfVxuICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IGFzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuICB9LFxuICBzdGF0aWNzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG4gIH0sXG4gIGF1dG9iaW5kOiBmdW5jdGlvbiAoKSB7fSB9O1xuXG4vLyBub29wXG5mdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG4gIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHtcbiAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBpbnZhcmlhbnQgc28gY29tcG9uZW50c1xuICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBub3QgaW4gX19ERVZfX1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKHByb3RvLCBuYW1lKSB7XG4gIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV0gOiBudWxsO1xuXG4gIC8vIERpc2FsbG93IG92ZXJyaWRpbmcgb2YgYmFzZSBjbGFzcyBtZXRob2RzIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gIGlmIChSZWFjdENsYXNzTWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAhKHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuT1ZFUlJJREVfQkFTRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlICcgKyAnYCVzYCBmcm9tIHlvdXIgY2xhc3Mgc3BlY2lmaWNhdGlvbi4gRW5zdXJlIHRoYXQgeW91ciBtZXRob2QgbmFtZXMgJyArICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICBpZiAocHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAhKHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTlkgfHwgc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgJyArICd0byBhIG1peGluLicsIG5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIE1peGluIGhlbHBlciB3aGljaCBoYW5kbGVzIHBvbGljeSB2YWxpZGF0aW9uIGFuZCByZXNlcnZlZFxuICogc3BlY2lmaWNhdGlvbiBrZXlzIHdoZW4gYnVpbGRpbmcgUmVhY3QgY2xhc3NzZXMuXG4gKi9cbmZ1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7XG4gIGlmICghc3BlYykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gICEodHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdVxcJ3JlIGF0dGVtcHRpbmcgdG8gJyArICd1c2UgYSBjb21wb25lbnQgY2xhc3MgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICEhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHNwZWMpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdVxcJ3JlIGF0dGVtcHRpbmcgdG8gJyArICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4gIC8vIEJ5IGhhbmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVuc3VyZSB0aGUgc2FtZVxuICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJTkVfTUFOWSBwb2xpY3ksIHdoZXRoZXJcbiAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG4gIGlmIChzcGVjLmhhc093blByb3BlcnR5KE1JWElOU19LRVkpKSB7XG4gICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1Y3Rvciwgc3BlYy5taXhpbnMpO1xuICB9XG5cbiAgZm9yICh2YXIgbmFtZSBpbiBzcGVjKSB7XG4gICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xuICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcbiAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKHByb3RvLCBuYW1lKTtcblxuICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpcbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxuICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBtZXRob2RzIChpbiB0aGUgXCJpbnRlcmZhY2VcIikuXG4gICAgICAvLyAyLiBPdmVycmlkZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG4gICAgICB2YXIgaXNSZWFjdENsYXNzTWV0aG9kID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIHZhciBzaG91bGRBdXRvQmluZCA9IGlzRnVuY3Rpb24gJiYgIWlzUmVhY3RDbGFzc01ldGhvZCAmJiAhaXNBbHJlYWR5RGVmaW5lZCAmJiBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcblxuICAgICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7XG4gICAgICAgIGlmICghcHJvdG8uX19yZWFjdEF1dG9CaW5kTWFwKSB7XG4gICAgICAgICAgcHJvdG8uX19yZWFjdEF1dG9CaW5kTWFwID0ge307XG4gICAgICAgIH1cbiAgICAgICAgcHJvdG8uX19yZWFjdEF1dG9CaW5kTWFwW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTtcblxuICAgICAgICAgIC8vIFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlLlxuICAgICAgICAgICEoaXNSZWFjdENsYXNzTWV0aG9kICYmIChzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCB8fCBzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Iga2V5ICVzICcgKyAnd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLicsIHNwZWNQb2xpY3ksIG5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuICAgICAgICAgIC8vIG1ldGhvZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eSwgbWVyZ2luZyBpZiBhcHByb3ByaWF0ZS5cbiAgICAgICAgICBpZiAoc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQpIHtcbiAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTlkpIHtcbiAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEFkZCB2ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVscHMgd2hlbiBsb29raW5nXG4gICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVjLmRpc3BsYXlOYW1lICsgJ18nICsgbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgaWYgKCFzdGF0aWNzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAodmFyIG5hbWUgaW4gc3RhdGljcykge1xuICAgIHZhciBwcm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07XG4gICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgaXNSZXNlcnZlZCA9IChuYW1lIGluIFJFU0VSVkVEX1NQRUNfS0VZUyk7XG4gICAgISFpc1Jlc2VydmVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICsgJ3Byb3BlcnR5LCBgJXNgLCB0aGF0IHNob3VsZG5cXCd0IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAnICsgJ2FzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgJyArICdjb25zdHJ1Y3Rvci4nLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgaXNJbmhlcml0ZWQgPSAobmFtZSBpbiBDb25zdHJ1Y3Rvcik7XG4gICAgISFpc0luaGVyaXRlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgKyAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgJyArICdkdWUgdG8gYSBtaXhpbi4nLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBvYmplY3RzLCBidXQgdGhyb3cgaWYgYm90aCBjb250YWluIHRoZSBzYW1lIGtleS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb25lIFRoZSBmaXJzdCBvYmplY3QsIHdoaWNoIGlzIG11dGF0ZWQuXG4gKiBAcGFyYW0ge29iamVjdH0gdHdvIFRoZSBzZWNvbmQgb2JqZWN0XG4gKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRlciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMob25lLCB0d28pIHtcbiAgIShvbmUgJiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0d28gPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJnZSBub24tb2JqZWN0cy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgZm9yICh2YXIga2V5IGluIHR3bykge1xuICAgIGlmICh0d28uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgIShvbmVba2V5XSA9PT0gdW5kZWZpbmVkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgKyAnVHJpZWQgdG8gbWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3QgJyArICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcgKyAnd2l0aCBjbGFzaGluZyBrZXlzLicsIGtleSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9uZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFsdWVzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihvbmUsIHR3bykge1xuICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkUmVzdWx0KCkge1xuICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdmFyIGIgPSB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAoYSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYjtcbiAgICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHZhciBjID0ge307XG4gICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBhKTtcbiAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGIpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihvbmUsIHR3bykge1xuICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkge1xuICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG4vKipcbiAqIEJpbmRzIGEgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1ldGhvZCB0byBiZSBib3VuZC5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91bmQgbWV0aG9kLlxuICovXG5mdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpIHtcbiAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50KTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsO1xuICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lO1xuICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJpbmQ7XG4gICAgLyogZXNsaW50LWRpc2FibGUgYmxvY2stc2NvcGVkLXZhciwgbm8tdW5kZWYgKi9cbiAgICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24gKG5ld1RoaXMpIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgIC8vIGlnbm9yZSB0aGUgdmFsdWUgb2YgXCJ0aGlzXCIgdGhhdCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzb1xuICAgICAgLy8gbGV0J3Mgd2Fybi5cbiAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgKyAnY29tcG9uZW50IGluc3RhbmNlLiBTZWUgJXMnLCBjb21wb25lbnROYW1lKSA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgKyAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlzIGNhbGwuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gICAgICB9XG4gICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpO1xuICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IGFyZ3M7XG4gICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICB9O1xuICB9XG4gIHJldHVybiBib3VuZE1ldGhvZDtcbn1cblxuLyoqXG4gKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAqL1xuZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHtcbiAgZm9yICh2YXIgYXV0b0JpbmRLZXkgaW4gY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZE1hcCkge1xuICAgIGlmIChjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kTWFwLmhhc093blByb3BlcnR5KGF1dG9CaW5kS2V5KSkge1xuICAgICAgdmFyIG1ldGhvZCA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRNYXBbYXV0b0JpbmRLZXldO1xuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXG4gKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxuICovXG52YXIgUmVhY3RDbGFzc01peGluID0ge1xuXG4gIC8qKlxuICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICogdHlwZSBzaWduYXR1cmUgYW5kIHRoZSBvbmx5IHVzZSBjYXNlIGZvciB0aGlzLCBpcyB0byBhdm9pZCB0aGF0LlxuICAgKi9cbiAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAobmV3U3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUpO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50ZWQodGhpcyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFByb3BzIFN1YnNldCBvZiB0aGUgbmV4dCBwcm9wcy5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBwcm9wcyBhcmUgdXBkYXRlZC5cbiAgICogQGZpbmFsXG4gICAqIEBwdWJsaWNcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHNldFByb3BzOiBmdW5jdGlvbiAocGFydGlhbFByb3BzLCBjYWxsYmFjaykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuU2V0UHJvcHMoKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRQcm9wcyh0aGlzLCBwYXJ0aWFsUHJvcHMpO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGFsbCB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdQcm9wcyBTdWJzZXQgb2YgdGhlIG5leHQgcHJvcHMuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgcHJvcHMgYXJlIHVwZGF0ZWQuXG4gICAqIEBmaW5hbFxuICAgKiBAcHVibGljXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICByZXBsYWNlUHJvcHM6IGZ1bmN0aW9uIChuZXdQcm9wcywgY2FsbGJhY2spIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblNldFByb3BzKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVByb3BzKHRoaXMsIG5ld1Byb3BzKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2spO1xuICAgIH1cbiAgfVxufTtcblxudmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7fTtcbmFzc2lnbihSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENsYXNzTWl4aW4pO1xuXG4vKipcbiAqIE1vZHVsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRlIGNvbXBvbmVudHMuXG4gKlxuICogQGNsYXNzIFJlYWN0Q2xhc3NcbiAqL1xudmFyIFJlYWN0Q2xhc3MgPSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVuIGEgY2xhc3Mgc3BlY2lmaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lmaWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICAgKiBAcHVibGljXG4gICAqL1xuICBjcmVhdGVDbGFzczogZnVuY3Rpb24gKHNwZWMpIHtcbiAgICB2YXIgQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgb3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcbiAgICAgIC8vIGJ5IG1vY2tzIHRvIGFzc2VydCBvbiB3aGF0IGdldHMgbW91bnRlZC5cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLCAnU29tZXRoaW5nIGlzIGNhbGxpbmcgYSBSZWFjdCBjb21wb25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkgb3IgJyArICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcbiAgICAgIGlmICh0aGlzLl9fcmVhY3RBdXRvQmluZE1hcCkge1xuICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXG4gICAgICB0aGlzLnN0YXRlID0gbnVsbDtcblxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxuICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbiAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICAgIGlmICh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAndW5kZWZpbmVkJyAmJiB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuICAgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgISh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLCBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgfTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuXG4gICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVjSW50b0NvbXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7XG5cbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxuICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssXG4gICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtlbHkgYVxuICAgICAgLy8gbWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2UgdGhlIHN0YXRpYyBwcm9wZXJ0eSwgcHJvcGVydHlcbiAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLCBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gUmVhY3RDbGFzc0ludGVyZmFjZSkge1xuICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0pIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH0sXG5cbiAgaW5qZWN0aW9uOiB7XG4gICAgaW5qZWN0TWl4aW46IGZ1bmN0aW9uIChtaXhpbikge1xuICAgICAgaW5qZWN0ZWRNaXhpbnMucHVzaChtaXhpbik7XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDbGFzcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRGJHRnpjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JEYkdGemMxeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFEyOXRjRzl1Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTnZiWEJ2Ym1WdWRDY3BPMXh1ZG1GeUlGSmxZV04wUld4bGJXVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JGYkdWdFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3ljcE8xeHVkbUZ5SUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGN5Y3BPMXh1ZG1GeUlGSmxZV04wVG05dmNGVndaR0YwWlZGMVpYVmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRTV2YjNCVmNHUmhkR1ZSZFdWMVpTY3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ1pXMXdkSGxQWW1wbFkzUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlsYlhCMGVVOWlhbVZqZENjcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlHdGxlVTFwY25KdmNpQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMnRsZVUxcGNuSnZjaWNwTzF4dWRtRnlJR3RsZVU5bUlEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhMlY1VDJZbktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzUyWVhJZ1RVbFlTVTVUWDB0RldTQTlJR3RsZVU5bUtIc2diV2w0YVc1ek9pQnVkV3hzSUgwcE8xeHVYRzR2S2lwY2JpQXFJRkJ2YkdsamFXVnpJSFJvWVhRZ1pHVnpZM0pwWW1VZ2JXVjBhRzlrY3lCcGJpQmdVbVZoWTNSRGJHRnpjMGx1ZEdWeVptRmpaV0F1WEc0Z0tpOWNiblpoY2lCVGNHVmpVRzlzYVdONUlEMGdhMlY1VFdseWNtOXlLSHRjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aWE5sSUcxbGRHaHZaSE1nYldGNUlHSmxJR1JsWm1sdVpXUWdiMjVzZVNCdmJtTmxJR0o1SUhSb1pTQmpiR0Z6Y3lCemNHVmphV1pwWTJGMGFXOXVJRzl5SUcxcGVHbHVMbHh1SUNBZ0tpOWNiaUFnUkVWR1NVNUZYMDlPUTBVNklHNTFiR3dzWEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1Z6WlNCdFpYUm9iMlJ6SUcxaGVTQmlaU0JrWldacGJtVmtJR0o1SUdKdmRHZ2dkR2hsSUdOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0Z1lXNWtJRzFwZUdsdWN5NWNiaUFnSUNvZ1UzVmljMlZ4ZFdWdWRDQmtaV1pwYm1sMGFXOXVjeUIzYVd4c0lHSmxJR05vWVdsdVpXUXVJRlJvWlhObElHMWxkR2h2WkhNZ2JYVnpkQ0J5WlhSMWNtNGdkbTlwWkM1Y2JpQWdJQ292WEc0Z0lFUkZSa2xPUlY5TlFVNVpPaUJ1ZFd4c0xGeHVJQ0F2S2lwY2JpQWdJQ29nVkdobGMyVWdiV1YwYUc5a2N5QmhjbVVnYjNabGNuSnBaR2x1WnlCMGFHVWdZbUZ6WlNCamJHRnpjeTVjYmlBZ0lDb3ZYRzRnSUU5V1JWSlNTVVJGWDBKQlUwVTZJRzUxYkd3c1hHNGdJQzhxS2x4dUlDQWdLaUJVYUdWelpTQnRaWFJvYjJSeklHRnlaU0J6YVcxcGJHRnlJSFJ2SUVSRlJrbE9SVjlOUVU1WkxDQmxlR05sY0hRZ2QyVWdZWE56ZFcxbElIUm9aWGtnY21WMGRYSnVYRzRnSUNBcUlHOWlhbVZqZEhNdUlGZGxJSFJ5ZVNCMGJ5QnRaWEpuWlNCMGFHVWdhMlY1Y3lCdlppQjBhR1VnY21WMGRYSnVJSFpoYkhWbGN5QnZaaUJoYkd3Z2RHaGxJRzFwZUdWa0lHbHVYRzRnSUNBcUlHWjFibU4wYVc5dWN5NGdTV1lnZEdobGNtVWdhWE1nWVNCclpYa2dZMjl1Wm14cFkzUWdkMlVnZEdoeWIzY3VYRzRnSUNBcUwxeHVJQ0JFUlVaSlRrVmZUVUZPV1Y5TlJWSkhSVVE2SUc1MWJHeGNibjBwTzF4dVhHNTJZWElnYVc1cVpXTjBaV1JOYVhocGJuTWdQU0JiWFR0Y2JseHVkbUZ5SUhkaGNtNWxaRk5sZEZCeWIzQnpJRDBnWm1Gc2MyVTdYRzVtZFc1amRHbHZiaUIzWVhKdVUyVjBVSEp2Y0hNb0tTQjdYRzRnSUdsbUlDZ2hkMkZ5Ym1Wa1UyVjBVSEp2Y0hNcElIdGNiaUFnSUNCM1lYSnVaV1JUWlhSUWNtOXdjeUE5SUhSeWRXVTdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZHpaWFJRY205d2N5Z3VMaTRwSUdGdVpDQnlaWEJzWVdObFVISnZjSE1vTGk0dUtTQmhjbVVnWkdWd2NtVmpZWFJsWkM0Z0p5QXJJQ2RKYm5OMFpXRmtMQ0JqWVd4c0lISmxibVJsY2lCaFoyRnBiaUJoZENCMGFHVWdkRzl3SUd4bGRtVnNMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dRMjl0Y0c5emFYUmxJR052YlhCdmJtVnVkSE1nWVhKbElHaHBaMmhsY2kxc1pYWmxiQ0JqYjIxd2IyNWxiblJ6SUhSb1lYUWdZMjl0Y0c5elpTQnZkR2hsY2lCamIyMXdiM05wZEdWY2JpQXFJRzl5SUc1aGRHbDJaU0JqYjIxd2IyNWxiblJ6TGx4dUlDcGNiaUFxSUZSdklHTnlaV0YwWlNCaElHNWxkeUIwZVhCbElHOW1JR0JTWldGamRFTnNZWE56WUN3Z2NHRnpjeUJoSUhOd1pXTnBabWxqWVhScGIyNGdiMlpjYmlBcUlIbHZkWElnYm1WM0lHTnNZWE56SUhSdklHQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemMyQXVJRlJvWlNCdmJteDVJSEpsY1hWcGNtVnRaVzUwSUc5bUlIbHZkWElnWTJ4aGMzTmNiaUFxSUhOd1pXTnBabWxqWVhScGIyNGdhWE1nZEdoaGRDQjViM1VnYVcxd2JHVnRaVzUwSUdFZ1lISmxibVJsY21BZ2JXVjBhRzlrTGx4dUlDcGNiaUFxSUNBZ2RtRnlJRTE1UTI5dGNHOXVaVzUwSUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ29nSUNBZ0lISmxibVJsY2pvZ1puVnVZM1JwYjI0b0tTQjdYRzRnS2lBZ0lDQWdJQ0J5WlhSMWNtNGdQR1JwZGo1SVpXeHNieUJYYjNKc1pEd3ZaR2wyUGp0Y2JpQXFJQ0FnSUNCOVhHNGdLaUFnSUgwcE8xeHVJQ3BjYmlBcUlGUm9aU0JqYkdGemN5QnpjR1ZqYVdacFkyRjBhVzl1SUhOMWNIQnZjblJ6SUdFZ2MzQmxZMmxtYVdNZ2NISnZkRzlqYjJ3Z2IyWWdiV1YwYUc5a2N5QjBhR0YwSUdoaGRtVmNiaUFxSUhOd1pXTnBZV3dnYldWaGJtbHVaeUFvWlM1bkxpQmdjbVZ1WkdWeVlDa3VJRk5sWlNCZ1VtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpXQWdabTl5WEc0Z0tpQnRiM0psSUhSb1pTQmpiMjF3Y21Wb1pXNXphWFpsSUhCeWIzUnZZMjlzTGlCQmJua2diM1JvWlhJZ2NISnZjR1Z5ZEdsbGN5QmhibVFnYldWMGFHOWtjeUJwYmlCMGFHVmNiaUFxSUdOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0Z2QybHNiQ0JpWlNCaGRtRnBiR0ZpYkdVZ2IyNGdkR2hsSUhCeWIzUnZkSGx3WlM1Y2JpQXFYRzRnS2lCQWFXNTBaWEptWVdObElGSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVmNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpTQTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRVzRnWVhKeVlYa2diMllnVFdsNGFXNGdiMkpxWldOMGN5QjBieUJwYm1Oc2RXUmxJSGRvWlc0Z1pHVm1hVzVwYm1jZ2VXOTFjaUJqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQjBlWEJsSUh0aGNuSmhlWDFjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0J0YVhocGJuTTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxrc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGdUlHOWlhbVZqZENCamIyNTBZV2x1YVc1bklIQnliM0JsY25ScFpYTWdZVzVrSUcxbGRHaHZaSE1nZEdoaGRDQnphRzkxYkdRZ1ltVWdaR1ZtYVc1bFpDQnZibHh1SUNBZ0tpQjBhR1VnWTI5dGNHOXVaVzUwSjNNZ1kyOXVjM1J5ZFdOMGIzSWdhVzV6ZEdWaFpDQnZaaUJwZEhNZ2NISnZkRzkwZVhCbElDaHpkR0YwYVdNZ2JXVjBhRzlrY3lrdVhHNGdJQ0FxWEc0Z0lDQXFJRUIwZVhCbElIdHZZbXBsWTNSOVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqY3pvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1ZtYVc1cGRHbHZiaUJ2WmlCd2NtOXdJSFI1Y0dWeklHWnZjaUIwYUdseklHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhSNWNHVWdlMjlpYW1WamRIMWNiaUFnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FxTDF4dUlDQndjbTl3Vkhsd1pYTTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxrc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVSbFptbHVhWFJwYjI0Z2IyWWdZMjl1ZEdWNGRDQjBlWEJsY3lCbWIzSWdkR2hwY3lCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUIwZVhCbElIdHZZbXBsWTNSOVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ1kyOXVkR1Y0ZEZSNWNHVnpPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpXWnBibWwwYVc5dUlHOW1JR052Ym5SbGVIUWdkSGx3WlhNZ2RHaHBjeUJqYjIxd2IyNWxiblFnYzJWMGN5Qm1iM0lnYVhSeklHTm9hV3hrY21WdUxseHVJQ0FnS2x4dUlDQWdLaUJBZEhsd1pTQjdiMkpxWldOMGZWeHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHTm9hV3hrUTI5dWRHVjRkRlI1Y0dWek9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaTEZ4dVhHNGdJQzh2SUQwOVBUMGdSR1ZtYVc1cGRHbHZiaUJ0WlhSb2IyUnpJRDA5UFQxY2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0IzYUdWdUlIUm9aU0JqYjIxd2IyNWxiblFnYVhNZ2JXOTFiblJsWkM0Z1ZtRnNkV1Z6SUdsdUlIUm9aU0J0WVhCd2FXNW5JSGRwYkd3Z1ltVWdjMlYwSUc5dVhHNGdJQ0FxSUdCMGFHbHpMbkJ5YjNCellDQnBaaUIwYUdGMElIQnliM0FnYVhNZ2JtOTBJSE53WldOcFptbGxaQ0FvYVM1bExpQjFjMmx1WnlCaGJpQmdhVzVnSUdOb1pXTnJLUzVjYmlBZ0lDcGNiaUFnSUNvZ1ZHaHBjeUJ0WlhSb2IyUWdhWE1nYVc1MmIydGxaQ0JpWldadmNtVWdZR2RsZEVsdWFYUnBZV3hUZEdGMFpXQWdZVzVrSUhSb1pYSmxabTl5WlNCallXNXViM1FnY21Wc2VWeHVJQ0FnS2lCdmJpQmdkR2hwY3k1emRHRjBaV0FnYjNJZ2RYTmxJR0IwYUdsekxuTmxkRk4wWVhSbFlDNWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnliaUI3YjJKcVpXTjBmVnh1SUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNvdlhHNGdJR2RsZEVSbFptRjFiSFJRY205d2N6b2dVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1Y5TlJWSkhSVVFzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1ZG05clpXUWdiMjVqWlNCaVpXWnZjbVVnZEdobElHTnZiWEJ2Ym1WdWRDQnBjeUJ0YjNWdWRHVmtMaUJVYUdVZ2NtVjBkWEp1SUhaaGJIVmxJSGRwYkd3Z1ltVWdkWE5sWkZ4dUlDQWdLaUJoY3lCMGFHVWdhVzVwZEdsaGJDQjJZV3gxWlNCdlppQmdkR2hwY3k1emRHRjBaV0F1WEc0Z0lDQXFYRzRnSUNBcUlDQWdaMlYwU1c1cGRHbGhiRk4wWVhSbE9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDb2dJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQXFJQ0FnSUNBZ0lHbHpUMjQ2SUdaaGJITmxMRnh1SUNBZ0tpQWdJQ0FnSUNCbWIyOUNZWG82SUc1bGR5QkNZWHBHYjI4b0tWeHVJQ0FnS2lBZ0lDQWdmVnh1SUNBZ0tpQWdJSDFjYmlBZ0lDcGNiaUFnSUNvZ1FISmxkSFZ5YmlCN2IySnFaV04wZlZ4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdkbGRFbHVhWFJwWVd4VGRHRjBaVG9nVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dWOU5SVkpIUlVRc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTI5aWFtVmpkSDFjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0JuWlhSRGFHbHNaRU52Ym5SbGVIUTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxsZlRVVlNSMFZFTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWYzJWeklIQnliM0J6SUdaeWIyMGdZSFJvYVhNdWNISnZjSE5nSUdGdVpDQnpkR0YwWlNCbWNtOXRJR0IwYUdsekxuTjBZWFJsWUNCMGJ5QnlaVzVrWlhJZ2RHaGxYRzRnSUNBcUlITjBjblZqZEhWeVpTQnZaaUIwYUdVZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJPYnlCbmRXRnlZVzUwWldWeklHRnlaU0J0WVdSbElHRmliM1YwSUhkb1pXNGdiM0lnYUc5M0lHOW1kR1Z1SUhSb2FYTWdiV1YwYUc5a0lHbHpJR2x1ZG05clpXUXNJSE52WEc0Z0lDQXFJR2wwSUcxMWMzUWdibTkwSUdoaGRtVWdjMmxrWlNCbFptWmxZM1J6TGx4dUlDQWdLbHh1SUNBZ0tpQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQXFJQ0FnSUNCMllYSWdibUZ0WlNBOUlIUm9hWE11Y0hKdmNITXVibUZ0WlR0Y2JpQWdJQ29nSUNBZ0lISmxkSFZ5YmlBOFpHbDJQa2hsYkd4dkxDQjdibUZ0WlgwaFBDOWthWFkrTzF4dUlDQWdLaUFnSUgxY2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVbVZoWTNSRGIyMXdiMjVsYm5SOVhHNGdJQ0FxSUVCdWIzTnBaR1ZsWm1abFkzUnpYRzRnSUNBcUlFQnlaWEYxYVhKbFpGeHVJQ0FnS2k5Y2JpQWdjbVZ1WkdWeU9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOVBUa05GTEZ4dVhHNGdJQzh2SUQwOVBUMGdSR1ZzWldkaGRHVWdiV1YwYUc5a2N5QTlQVDA5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1ZG05clpXUWdkMmhsYmlCMGFHVWdZMjl0Y0c5dVpXNTBJR2x6SUdsdWFYUnBZV3hzZVNCamNtVmhkR1ZrSUdGdVpDQmhZbTkxZENCMGJ5QmlaU0J0YjNWdWRHVmtMbHh1SUNBZ0tpQlVhR2x6SUcxaGVTQm9ZWFpsSUhOcFpHVWdaV1ptWldOMGN5d2dZblYwSUdGdWVTQmxlSFJsY201aGJDQnpkV0p6WTNKcGNIUnBiMjV6SUc5eUlHUmhkR0VnWTNKbFlYUmxaRnh1SUNBZ0tpQmllU0IwYUdseklHMWxkR2h2WkNCdGRYTjBJR0psSUdOc1pXRnVaV1FnZFhBZ2FXNGdZR052YlhCdmJtVnVkRmRwYkd4VmJtMXZkVzUwWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0JqYjIxd2IyNWxiblJYYVd4c1RXOTFiblE2SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVkbTlyWldRZ2QyaGxiaUIwYUdVZ1kyOXRjRzl1Wlc1MElHaGhjeUJpWldWdUlHMXZkVzUwWldRZ1lXNWtJR2hoY3lCaElFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJpNWNiaUFnSUNvZ1NHOTNaWFpsY2l3Z2RHaGxjbVVnYVhNZ2JtOGdaM1ZoY21GdWRHVmxJSFJvWVhRZ2RHaGxJRVJQVFNCdWIyUmxJR2x6SUdsdUlIUm9aU0JrYjJOMWJXVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1ZYTmxJSFJvYVhNZ1lYTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdiM0JsY21GMFpTQnZiaUIwYUdVZ1JFOU5JSGRvWlc0Z2RHaGxJR052YlhCdmJtVnVkQ0JvWVhOY2JpQWdJQ29nWW1WbGJpQnRiM1Z1ZEdWa0lDaHBibWwwYVdGc2FYcGxaQ0JoYm1RZ2NtVnVaR1Z5WldRcElHWnZjaUIwYUdVZ1ptbHljM1FnZEdsdFpTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCeWIyOTBUbTlrWlNCRVQwMGdaV3hsYldWdWRDQnlaWEJ5WlhObGJuUnBibWNnZEdobElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FxTDF4dUlDQmpiMjF3YjI1bGJuUkVhV1JOYjNWdWREb2dVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1N4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0JpWldadmNtVWdkR2hsSUdOdmJYQnZibVZ1ZENCeVpXTmxhWFpsY3lCdVpYY2djSEp2Y0hNdVhHNGdJQ0FxWEc0Z0lDQXFJRlZ6WlNCMGFHbHpJR0Z6SUdGdUlHOXdjRzl5ZEhWdWFYUjVJSFJ2SUhKbFlXTjBJSFJ2SUdFZ2NISnZjQ0IwY21GdWMybDBhVzl1SUdKNUlIVndaR0YwYVc1bklIUm9aVnh1SUNBZ0tpQnpkR0YwWlNCMWMybHVaeUJnZEdocGN5NXpaWFJUZEdGMFpXQXVJRU4xY25KbGJuUWdjSEp2Y0hNZ1lYSmxJR0ZqWTJWemMyVmtJSFpwWVNCZ2RHaHBjeTV3Y205d2MyQXVYRzRnSUNBcVhHNGdJQ0FxSUNBZ1kyOXRjRzl1Wlc1MFYybHNiRkpsWTJWcGRtVlFjbTl3Y3pvZ1puVnVZM1JwYjI0b2JtVjRkRkJ5YjNCekxDQnVaWGgwUTI5dWRHVjRkQ2tnZTF4dUlDQWdLaUFnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3WEc0Z0lDQXFJQ0FnSUNBZ0lHeHBhMlZ6U1c1amNtVmhjMmx1WnpvZ2JtVjRkRkJ5YjNCekxteHBhMlZEYjNWdWRDQStJSFJvYVhNdWNISnZjSE11YkdsclpVTnZkVzUwWEc0Z0lDQXFJQ0FnSUNCOUtUdGNiaUFnSUNvZ0lDQjlYRzRnSUNBcVhHNGdJQ0FxSUU1UFZFVTZJRlJvWlhKbElHbHpJRzV2SUdWeGRXbDJZV3hsYm5RZ1lHTnZiWEJ2Ym1WdWRGZHBiR3hTWldObGFYWmxVM1JoZEdWZ0xpQkJiaUJwYm1OdmJXbHVaeUJ3Y205d1hHNGdJQ0FxSUhSeVlXNXphWFJwYjI0Z2JXRjVJR05oZFhObElHRWdjM1JoZEdVZ1kyaGhibWRsTENCaWRYUWdkR2hsSUc5d2NHOXphWFJsSUdseklHNXZkQ0IwY25WbExpQkpaaUI1YjNWY2JpQWdJQ29nYm1WbFpDQnBkQ3dnZVc5MUlHRnlaU0J3Y205aVlXSnNlU0JzYjI5cmFXNW5JR1p2Y2lCZ1kyOXRjRzl1Wlc1MFYybHNiRlZ3WkdGMFpXQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J1WlhoMFVISnZjSE5jYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0JqYjIxd2IyNWxiblJYYVd4c1VtVmpaV2wyWlZCeWIzQnpPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZrSUhkb2FXeGxJR1JsWTJsa2FXNW5JR2xtSUhSb1pTQmpiMjF3YjI1bGJuUWdjMmh2ZFd4a0lHSmxJSFZ3WkdGMFpXUWdZWE1nWVNCeVpYTjFiSFFnYjJaY2JpQWdJQ29nY21WalpXbDJhVzVuSUc1bGR5QndjbTl3Y3l3Z2MzUmhkR1VnWVc1a0wyOXlJR052Ym5SbGVIUXVYRzRnSUNBcVhHNGdJQ0FxSUZWelpTQjBhR2x6SUdGeklHRnVJRzl3Y0c5eWRIVnVhWFI1SUhSdklHQnlaWFIxY200Z1ptRnNjMlZnSUhkb1pXNGdlVzkxSjNKbElHTmxjblJoYVc0Z2RHaGhkQ0IwYUdWY2JpQWdJQ29nZEhKaGJuTnBkR2x2YmlCMGJ5QjBhR1VnYm1WM0lIQnliM0J6TDNOMFlYUmxMMk52Ym5SbGVIUWdkMmxzYkNCdWIzUWdjbVZ4ZFdseVpTQmhJR052YlhCdmJtVnVkRnh1SUNBZ0tpQjFjR1JoZEdVdVhHNGdJQ0FxWEc0Z0lDQXFJQ0FnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbE9pQm1kVzVqZEdsdmJpaHVaWGgwVUhKdmNITXNJRzVsZUhSVGRHRjBaU3dnYm1WNGRFTnZiblJsZUhRcElIdGNiaUFnSUNvZ0lDQWdJSEpsZEhWeWJpQWhaWEYxWVd3b2JtVjRkRkJ5YjNCekxDQjBhR2x6TG5CeWIzQnpLU0I4ZkZ4dUlDQWdLaUFnSUNBZ0lDQWhaWEYxWVd3b2JtVjRkRk4wWVhSbExDQjBhR2x6TG5OMFlYUmxLU0I4ZkZ4dUlDQWdLaUFnSUNBZ0lDQWhaWEYxWVd3b2JtVjRkRU52Ym5SbGVIUXNJSFJvYVhNdVkyOXVkR1Y0ZENrN1hHNGdJQ0FxSUNBZ2ZWeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdibVY0ZEZCeWIzQnpYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRk4wWVhSbFhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRFTnZiblJsZUhSY2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUIwYUdVZ1kyOXRjRzl1Wlc1MElITm9iM1ZzWkNCMWNHUmhkR1V1WEc0Z0lDQXFJRUJ2Y0hScGIyNWhiRnh1SUNBZ0tpOWNiaUFnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbE9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOVBUa05GTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm5admEyVmtJSGRvWlc0Z2RHaGxJR052YlhCdmJtVnVkQ0JwY3lCaFltOTFkQ0IwYnlCMWNHUmhkR1VnWkhWbElIUnZJR0VnZEhKaGJuTnBkR2x2YmlCbWNtOXRYRzRnSUNBcUlHQjBhR2x6TG5CeWIzQnpZQ3dnWUhSb2FYTXVjM1JoZEdWZ0lHRnVaQ0JnZEdocGN5NWpiMjUwWlhoMFlDQjBieUJnYm1WNGRGQnliM0J6WUN3Z1lHNWxlSFJUZEdGMFpXQmNiaUFnSUNvZ1lXNWtJR0J1WlhoMFEyOXVkR1Y0ZEdBdVhHNGdJQ0FxWEc0Z0lDQXFJRlZ6WlNCMGFHbHpJR0Z6SUdGdUlHOXdjRzl5ZEhWdWFYUjVJSFJ2SUhCbGNtWnZjbTBnY0hKbGNHRnlZWFJwYjI0Z1ltVm1iM0psSUdGdUlIVndaR0YwWlNCdlkyTjFjbk11WEc0Z0lDQXFYRzRnSUNBcUlFNVBWRVU2SUZsdmRTQXFLbU5oYm01dmRDb3FJSFZ6WlNCZ2RHaHBjeTV6WlhSVGRHRjBaU2dwWUNCcGJpQjBhR2x6SUcxbGRHaHZaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc1bGVIUlFjbTl3YzF4dUlDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJRzVsZUhSVGRHRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHNWxlSFJEYjI1MFpYaDBYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FxTDF4dUlDQmpiMjF3YjI1bGJuUlhhV3hzVlhCa1lYUmxPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZrSUhkb1pXNGdkR2hsSUdOdmJYQnZibVZ1ZENkeklFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJpQm9ZWE1nWW1WbGJpQjFjR1JoZEdWa0xseHVJQ0FnS2x4dUlDQWdLaUJWYzJVZ2RHaHBjeUJoY3lCaGJpQnZjSEJ2Y25SMWJtbDBlU0IwYnlCdmNHVnlZWFJsSUc5dUlIUm9aU0JFVDAwZ2QyaGxiaUIwYUdVZ1kyOXRjRzl1Wlc1MElHaGhjMXh1SUNBZ0tpQmlaV1Z1SUhWd1pHRjBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCd2NtVjJVSEp2Y0hOY2JpQWdJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0J3Y21WMlUzUmhkR1ZjYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQndjbVYyUTI5dWRHVjRkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJSEp2YjNST2IyUmxJRVJQVFNCbGJHVnRaVzUwSUhKbGNISmxjMlZ1ZEdsdVp5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJYQnZibVZ1ZEVScFpGVndaR0YwWlRvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzUyYjJ0bFpDQjNhR1Z1SUhSb1pTQmpiMjF3YjI1bGJuUWdhWE1nWVdKdmRYUWdkRzhnWW1VZ2NtVnRiM1psWkNCbWNtOXRJR2wwY3lCd1lYSmxiblFnWVc1a0lHaGhkbVZjYmlBZ0lDb2dhWFJ6SUVSUFRTQnlaWEJ5WlhObGJuUmhkR2x2YmlCa1pYTjBjbTk1WldRdVhHNGdJQ0FxWEc0Z0lDQXFJRlZ6WlNCMGFHbHpJR0Z6SUdGdUlHOXdjRzl5ZEhWdWFYUjVJSFJ2SUdSbFlXeHNiMk5oZEdVZ1lXNTVJR1Y0ZEdWeWJtRnNJSEpsYzI5MWNtTmxjeTVjYmlBZ0lDcGNiaUFnSUNvZ1RrOVVSVG9nVkdobGNtVWdhWE1nYm04Z1lHTnZiWEJ2Ym1WdWRFUnBaRlZ1Ylc5MWJuUmdJSE5wYm1ObElIbHZkWElnWTI5dGNHOXVaVzUwSUhkcGJHd2dhR0YyWlNCaVpXVnVYRzRnSUNBcUlHUmxjM1J5YjNsbFpDQmllU0IwYUdGMElIQnZhVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNvdlhHNGdJR052YlhCdmJtVnVkRmRwYkd4VmJtMXZkVzUwT2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpMRnh1WEc0Z0lDOHZJRDA5UFQwZ1FXUjJZVzVqWldRZ2JXVjBhRzlrY3lBOVBUMDlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndaR0YwWlhNZ2RHaGxJR052YlhCdmJtVnVkQ2R6SUdOMWNuSmxiblJzZVNCdGIzVnVkR1ZrSUVSUFRTQnlaWEJ5WlhObGJuUmhkR2x2Ymk1Y2JpQWdJQ3BjYmlBZ0lDb2dRbmtnWkdWbVlYVnNkQ3dnZEdocGN5QnBiWEJzWlcxbGJuUnpJRkpsWVdOMEozTWdjbVZ1WkdWeWFXNW5JR0Z1WkNCeVpXTnZibU5wYkdsaGRHbHZiaUJoYkdkdmNtbDBhRzB1WEc0Z0lDQXFJRk52Y0docGMzUnBZMkYwWldRZ1kyeHBaVzUwY3lCdFlYa2dkMmx6YUNCMGJ5QnZkbVZ5Y21sa1pTQjBhR2x6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2lCQWIzWmxjbkpwWkdGaWJHVmNiaUFnSUNvdlhHNGdJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWREb2dVM0JsWTFCdmJHbGplUzVQVmtWU1VrbEVSVjlDUVZORlhHNWNibjA3WEc1Y2JpOHFLbHh1SUNvZ1RXRndjR2x1WnlCbWNtOXRJR05zWVhOeklITndaV05wWm1sallYUnBiMjRnYTJWNWN5QjBieUJ6Y0dWamFXRnNJSEJ5YjJObGMzTnBibWNnWm5WdVkzUnBiMjV6TGx4dUlDcGNiaUFxSUVGc2RHaHZkV2RvSUhSb1pYTmxJR0Z5WlNCa1pXTnNZWEpsWkNCc2FXdGxJR2x1YzNSaGJtTmxJSEJ5YjNCbGNuUnBaWE1nYVc0Z2RHaGxJSE53WldOcFptbGpZWFJwYjI1Y2JpQXFJSGRvWlc0Z1pHVm1hVzVwYm1jZ1kyeGhjM05sY3lCMWMybHVaeUJnVW1WaFkzUXVZM0psWVhSbFEyeGhjM05nTENCMGFHVjVJR0Z5WlNCaFkzUjFZV3hzZVNCemRHRjBhV05jYmlBcUlHRnVaQ0JoY21VZ1lXTmpaWE56YVdKc1pTQnZiaUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSWdhVzV6ZEdWaFpDQnZaaUIwYUdVZ2NISnZkRzkwZVhCbExpQkVaWE53YVhSbFhHNGdLaUJpWldsdVp5QnpkR0YwYVdNc0lIUm9aWGtnYlhWemRDQmlaU0JrWldacGJtVmtJRzkxZEhOcFpHVWdiMllnZEdobElGd2ljM1JoZEdsamMxd2lJR3RsZVNCMWJtUmxjbHh1SUNvZ2QyaHBZMmdnWVd4c0lHOTBhR1Z5SUhOMFlYUnBZeUJ0WlhSb2IyUnpJR0Z5WlNCa1pXWnBibVZrTGx4dUlDb3ZYRzUyWVhJZ1VrVlRSVkpXUlVSZlUxQkZRMTlMUlZsVElEMGdlMXh1SUNCa2FYTndiR0Y1VG1GdFpUb2dablZ1WTNScGIyNGdLRU52Ym5OMGNuVmpkRzl5TENCa2FYTndiR0Y1VG1GdFpTa2dlMXh1SUNBZ0lFTnZibk4wY25WamRHOXlMbVJwYzNCc1lYbE9ZVzFsSUQwZ1pHbHpjR3hoZVU1aGJXVTdYRzRnSUgwc1hHNGdJRzFwZUdsdWN6b2dablZ1WTNScGIyNGdLRU52Ym5OMGNuVmpkRzl5TENCdGFYaHBibk1wSUh0Y2JpQWdJQ0JwWmlBb2JXbDRhVzV6S1NCN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHMXBlR2x1Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0J0YVhoVGNHVmpTVzUwYjBOdmJYQnZibVZ1ZENoRGIyNXpkSEoxWTNSdmNpd2diV2w0YVc1elcybGRLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpPaUJtZFc1amRHbHZiaUFvUTI5dWMzUnlkV04wYjNJc0lHTm9hV3hrUTI5dWRHVjRkRlI1Y0dWektTQjdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhaaGJHbGtZWFJsVkhsd1pVUmxaaWhEYjI1emRISjFZM1J2Y2l3Z1kyaHBiR1JEYjI1MFpYaDBWSGx3WlhNc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk11WTJocGJHUkRiMjUwWlhoMEtUdGNiaUFnSUNCOVhHNGdJQ0FnUTI5dWMzUnlkV04wYjNJdVkyaHBiR1JEYjI1MFpYaDBWSGx3WlhNZ1BTQmhjM05wWjI0b2UzMHNJRU52Ym5OMGNuVmpkRzl5TG1Ob2FXeGtRMjl1ZEdWNGRGUjVjR1Z6TENCamFHbHNaRU52Ym5SbGVIUlVlWEJsY3lrN1hHNGdJSDBzWEc0Z0lHTnZiblJsZUhSVWVYQmxjem9nWm5WdVkzUnBiMjRnS0VOdmJuTjBjblZqZEc5eUxDQmpiMjUwWlhoMFZIbHdaWE1wSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkbUZzYVdSaGRHVlVlWEJsUkdWbUtFTnZibk4wY25WamRHOXlMQ0JqYjI1MFpYaDBWSGx3WlhNc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk11WTI5dWRHVjRkQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lFTnZibk4wY25WamRHOXlMbU52Ym5SbGVIUlVlWEJsY3lBOUlHRnpjMmxuYmloN2ZTd2dRMjl1YzNSeWRXTjBiM0l1WTI5dWRHVjRkRlI1Y0dWekxDQmpiMjUwWlhoMFZIbHdaWE1wTzF4dUlDQjlMRnh1SUNBdktpcGNiaUFnSUNvZ1UzQmxZMmxoYkNCallYTmxJR2RsZEVSbFptRjFiSFJRY205d2N5QjNhR2xqYUNCemFHOTFiR1FnYlc5MlpTQnBiblJ2SUhOMFlYUnBZM01nWW5WMElISmxjWFZwY21WelhHNGdJQ0FxSUdGMWRHOXRZWFJwWXlCdFpYSm5hVzVuTGx4dUlDQWdLaTljYmlBZ1oyVjBSR1ZtWVhWc2RGQnliM0J6T2lCbWRXNWpkR2x2YmlBb1EyOXVjM1J5ZFdOMGIzSXNJR2RsZEVSbFptRjFiSFJRY205d2N5a2dlMXh1SUNBZ0lHbG1JQ2hEYjI1emRISjFZM1J2Y2k1blpYUkVaV1poZFd4MFVISnZjSE1wSUh0Y2JpQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxtZGxkRVJsWm1GMWJIUlFjbTl3Y3lBOUlHTnlaV0YwWlUxbGNtZGxaRkpsYzNWc2RFWjFibU4wYVc5dUtFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5d2daMlYwUkdWbVlYVnNkRkJ5YjNCektUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnUTI5dWMzUnlkV04wYjNJdVoyVjBSR1ZtWVhWc2RGQnliM0J6SUQwZ1oyVjBSR1ZtWVhWc2RGQnliM0J6TzF4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnY0hKdmNGUjVjR1Z6T2lCbWRXNWpkR2x2YmlBb1EyOXVjM1J5ZFdOMGIzSXNJSEJ5YjNCVWVYQmxjeWtnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQjJZV3hwWkdGMFpWUjVjR1ZFWldZb1EyOXVjM1J5ZFdOMGIzSXNJSEJ5YjNCVWVYQmxjeXdnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dWN5NXdjbTl3S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0l1Y0hKdmNGUjVjR1Z6SUQwZ1lYTnphV2R1S0h0OUxDQkRiMjV6ZEhKMVkzUnZjaTV3Y205d1ZIbHdaWE1zSUhCeWIzQlVlWEJsY3lrN1hHNGdJSDBzWEc0Z0lITjBZWFJwWTNNNklHWjFibU4wYVc5dUlDaERiMjV6ZEhKMVkzUnZjaXdnYzNSaGRHbGpjeWtnZTF4dUlDQWdJRzFwZUZOMFlYUnBZMU53WldOSmJuUnZRMjl0Y0c5dVpXNTBLRU52Ym5OMGNuVmpkRzl5TENCemRHRjBhV056S1R0Y2JpQWdmU3hjYmlBZ1lYVjBiMkpwYm1RNklHWjFibU4wYVc5dUlDZ3BJSHQ5SUgwN1hHNWNiaTh2SUc1dmIzQmNibVoxYm1OMGFXOXVJSFpoYkdsa1lYUmxWSGx3WlVSbFppaERiMjV6ZEhKMVkzUnZjaXdnZEhsd1pVUmxaaXdnYkc5allYUnBiMjRwSUh0Y2JpQWdabTl5SUNoMllYSWdjSEp2Y0U1aGJXVWdhVzRnZEhsd1pVUmxaaWtnZTF4dUlDQWdJR2xtSUNoMGVYQmxSR1ZtTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU2tnZTF4dUlDQWdJQ0FnTHk4Z2RYTmxJR0VnZDJGeWJtbHVaeUJwYm5OMFpXRmtJRzltSUdGdUlHbHVkbUZ5YVdGdWRDQnpieUJqYjIxd2IyNWxiblJ6WEc0Z0lDQWdJQ0F2THlCa2IyNG5kQ0J6YUc5M0lIVndJR2x1SUhCeWIyUWdZblYwSUc1dmRDQnBiaUJmWDBSRlZsOWZYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgwZVhCbGIyWWdkSGx3WlVSbFpsdHdjbTl3VG1GdFpWMGdQVDA5SUNkbWRXNWpkR2x2Ymljc0lDY2xjem9nSlhNZ2RIbHdaU0JnSlhOZ0lHbHpJR2x1ZG1Gc2FXUTdJR2wwSUcxMWMzUWdZbVVnWVNCbWRXNWpkR2x2Yml3Z2RYTjFZV3hzZVNCbWNtOXRJQ2NnS3lBblVtVmhZM1F1VUhKdmNGUjVjR1Z6TGljc0lFTnZibk4wY25WamRHOXlMbVJwYzNCc1lYbE9ZVzFsSUh4OElDZFNaV0ZqZEVOc1lYTnpKeXdnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE5iYkc5allYUnBiMjVkTENCd2NtOXdUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJSFpoYkdsa1lYUmxUV1YwYUc5a1QzWmxjbkpwWkdVb2NISnZkRzhzSUc1aGJXVXBJSHRjYmlBZ2RtRnlJSE53WldOUWIyeHBZM2tnUFNCU1pXRmpkRU5zWVhOelNXNTBaWEptWVdObExtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBJRDhnVW1WaFkzUkRiR0Z6YzBsdWRHVnlabUZqWlZ0dVlXMWxYU0E2SUc1MWJHdzdYRzVjYmlBZ0x5OGdSR2x6WVd4c2IzY2diM1psY25KcFpHbHVaeUJ2WmlCaVlYTmxJR05zWVhOeklHMWxkR2h2WkhNZ2RXNXNaWE56SUdWNGNHeHBZMmwwYkhrZ1lXeHNiM2RsWkM1Y2JpQWdhV1lnS0ZKbFlXTjBRMnhoYzNOTmFYaHBiaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNFb2MzQmxZMUJ2YkdsamVTQTlQVDBnVTNCbFkxQnZiR2xqZVM1UFZrVlNVa2xFUlY5Q1FWTkZLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxPaUJaYjNVZ1lYSmxJR0YwZEdWdGNIUnBibWNnZEc4Z2IzWmxjbkpwWkdVZ0p5QXJJQ2RnSlhOZ0lHWnliMjBnZVc5MWNpQmpiR0Z6Y3lCemNHVmphV1pwWTJGMGFXOXVMaUJGYm5OMWNtVWdkR2hoZENCNWIzVnlJRzFsZEdodlpDQnVZVzFsY3lBbklDc2dKMlJ2SUc1dmRDQnZkbVZ5YkdGd0lIZHBkR2dnVW1WaFkzUWdiV1YwYUc5a2N5NG5MQ0J1WVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNBdkx5QkVhWE5oYkd4dmR5QmtaV1pwYm1sdVp5QnRaWFJvYjJSeklHMXZjbVVnZEdoaGJpQnZibU5sSUhWdWJHVnpjeUJsZUhCc2FXTnBkR3g1SUdGc2JHOTNaV1F1WEc0Z0lHbG1JQ2h3Y205MGJ5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0VvYzNCbFkxQnZiR2xqZVNBOVBUMGdVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1NCOGZDQnpjR1ZqVUc5c2FXTjVJRDA5UFNCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpYMDFGVWtkRlJDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpUb2dXVzkxSUdGeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUdSbFptbHVaU0FuSUNzZ0oyQWxjMkFnYjI0Z2VXOTFjaUJqYjIxd2IyNWxiblFnYlc5eVpTQjBhR0Z1SUc5dVkyVXVJRlJvYVhNZ1kyOXVabXhwWTNRZ2JXRjVJR0psSUdSMVpTQW5JQ3NnSjNSdklHRWdiV2w0YVc0dUp5d2dibUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nVFdsNGFXNGdhR1ZzY0dWeUlIZG9hV05vSUdoaGJtUnNaWE1nY0c5c2FXTjVJSFpoYkdsa1lYUnBiMjRnWVc1a0lISmxjMlZ5ZG1Wa1hHNGdLaUJ6Y0dWamFXWnBZMkYwYVc5dUlHdGxlWE1nZDJobGJpQmlkV2xzWkdsdVp5QlNaV0ZqZENCamJHRnpjM05sY3k1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYldsNFUzQmxZMGx1ZEc5RGIyMXdiMjVsYm5Rb1EyOXVjM1J5ZFdOMGIzSXNJSE53WldNcElIdGNiaUFnYVdZZ0tDRnpjR1ZqS1NCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNWNiaUFnSVNoMGVYQmxiMllnYzNCbFl5QWhQVDBnSjJaMWJtTjBhVzl1SnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUkRiR0Z6Y3pvZ1dXOTFYRnduY21VZ1lYUjBaVzF3ZEdsdVp5QjBieUFuSUNzZ0ozVnpaU0JoSUdOdmJYQnZibVZ1ZENCamJHRnpjeUJoY3lCaElHMXBlR2x1TGlCSmJuTjBaV0ZrTENCcWRYTjBJSFZ6WlNCaElISmxaM1ZzWVhJZ2IySnFaV04wTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lTRlNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUW9jM0JsWXlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUkRiR0Z6Y3pvZ1dXOTFYRnduY21VZ1lYUjBaVzF3ZEdsdVp5QjBieUFuSUNzZ0ozVnpaU0JoSUdOdmJYQnZibVZ1ZENCaGN5QmhJRzFwZUdsdUxpQkpibk4wWldGa0xDQnFkWE4wSUhWelpTQmhJSEpsWjNWc1lYSWdiMkpxWldOMExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0IyWVhJZ2NISnZkRzhnUFNCRGIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVTdYRzVjYmlBZ0x5OGdRbmtnYUdGdVpHeHBibWNnYldsNGFXNXpJR0psWm05eVpTQmhibmtnYjNSb1pYSWdjSEp2Y0dWeWRHbGxjeXdnZDJVZ1pXNXpkWEpsSUhSb1pTQnpZVzFsWEc0Z0lDOHZJR05vWVdsdWFXNW5JRzl5WkdWeUlHbHpJR0Z3Y0d4cFpXUWdkRzhnYldWMGFHOWtjeUIzYVhSb0lFUkZSa2xPUlY5TlFVNVpJSEJ2YkdsamVTd2dkMmhsZEdobGNseHVJQ0F2THlCdGFYaHBibk1nWVhKbElHeHBjM1JsWkNCaVpXWnZjbVVnYjNJZ1lXWjBaWElnZEdobGMyVWdiV1YwYUc5a2N5QnBiaUIwYUdVZ2MzQmxZeTVjYmlBZ2FXWWdLSE53WldNdWFHRnpUM2R1VUhKdmNHVnlkSGtvVFVsWVNVNVRYMHRGV1NrcElIdGNiaUFnSUNCU1JWTkZVbFpGUkY5VFVFVkRYMHRGV1ZNdWJXbDRhVzV6S0VOdmJuTjBjblZqZEc5eUxDQnpjR1ZqTG0xcGVHbHVjeWs3WEc0Z0lIMWNibHh1SUNCbWIzSWdLSFpoY2lCdVlXMWxJR2x1SUhOd1pXTXBJSHRjYmlBZ0lDQnBaaUFvSVhOd1pXTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2twSUh0Y2JpQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodVlXMWxJRDA5UFNCTlNWaEpUbE5mUzBWWktTQjdYRzRnSUNBZ0lDQXZMeUJYWlNCb1lYWmxJR0ZzY21WaFpIa2dhR0Z1Wkd4bFpDQnRhWGhwYm5NZ2FXNGdZU0J6Y0dWamFXRnNJR05oYzJVZ1lXSnZkbVV1WEc0Z0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY0hKdmNHVnlkSGtnUFNCemNHVmpXMjVoYldWZE8xeHVJQ0FnSUhaaGJHbGtZWFJsVFdWMGFHOWtUM1psY25KcFpHVW9jSEp2ZEc4c0lHNWhiV1VwTzF4dVhHNGdJQ0FnYVdZZ0tGSkZVMFZTVmtWRVgxTlFSVU5mUzBWWlV5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnVWtWVFJWSldSVVJmVTFCRlExOUxSVmxUVzI1aGJXVmRLRU52Ym5OMGNuVmpkRzl5TENCd2NtOXdaWEowZVNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQzh2SUZObGRIVndJRzFsZEdodlpITWdiMjRnY0hKdmRHOTBlWEJsT2x4dUlDQWdJQ0FnTHk4Z1ZHaGxJR1p2Ykd4dmQybHVaeUJ0WlcxaVpYSWdiV1YwYUc5a2N5QnphRzkxYkdRZ2JtOTBJR0psSUdGMWRHOXRZWFJwWTJGc2JIa2dZbTkxYm1RNlhHNGdJQ0FnSUNBdkx5QXhMaUJGZUhCbFkzUmxaQ0JTWldGamRFTnNZWE56SUcxbGRHaHZaSE1nS0dsdUlIUm9aU0JjSW1sdWRHVnlabUZqWlZ3aUtTNWNiaUFnSUNBZ0lDOHZJREl1SUU5MlpYSnlhV1JrWlc0Z2JXVjBhRzlrY3lBb2RHaGhkQ0IzWlhKbElHMXBlR1ZrSUdsdUtTNWNiaUFnSUNBZ0lIWmhjaUJwYzFKbFlXTjBRMnhoYzNOTlpYUm9iMlFnUFNCU1pXRmpkRU5zWVhOelNXNTBaWEptWVdObExtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBPMXh1SUNBZ0lDQWdkbUZ5SUdselFXeHlaV0ZrZVVSbFptbHVaV1FnUFNCd2NtOTBieTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1R0Y2JpQWdJQ0FnSUhaaGNpQnBjMFoxYm1OMGFXOXVJRDBnZEhsd1pXOW1JSEJ5YjNCbGNuUjVJRDA5UFNBblpuVnVZM1JwYjI0bk8xeHVJQ0FnSUNBZ2RtRnlJSE5vYjNWc1pFRjFkRzlDYVc1a0lEMGdhWE5HZFc1amRHbHZiaUFtSmlBaGFYTlNaV0ZqZEVOc1lYTnpUV1YwYUc5a0lDWW1JQ0ZwYzBGc2NtVmhaSGxFWldacGJtVmtJQ1ltSUhOd1pXTXVZWFYwYjJKcGJtUWdJVDA5SUdaaGJITmxPMXh1WEc0Z0lDQWdJQ0JwWmlBb2MyaHZkV3hrUVhWMGIwSnBibVFwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z3Y205MGJ5NWZYM0psWVdOMFFYVjBiMEpwYm1STllYQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCd2NtOTBieTVmWDNKbFlXTjBRWFYwYjBKcGJtUk5ZWEFnUFNCN2ZUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J3Y205MGJ5NWZYM0psWVdOMFFYVjBiMEpwYm1STllYQmJibUZ0WlYwZ1BTQndjbTl3WlhKMGVUdGNiaUFnSUNBZ0lDQWdjSEp2ZEc5YmJtRnRaVjBnUFNCd2NtOXdaWEowZVR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMEZzY21WaFpIbEVaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlITndaV05RYjJ4cFkza2dQU0JTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sVzI1aGJXVmRPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdWR2hsYzJVZ1kyRnpaWE1nYzJodmRXeGtJR0ZzY21WaFpIa2dZbVVnWTJGMVoyaDBJR0o1SUhaaGJHbGtZWFJsVFdWMGFHOWtUM1psY25KcFpHVXVYRzRnSUNBZ0lDQWdJQ0FnSVNocGMxSmxZV04wUTJ4aGMzTk5aWFJvYjJRZ0ppWWdLSE53WldOUWIyeHBZM2tnUFQwOUlGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGxmVFVWU1IwVkVJSHg4SUhOd1pXTlFiMnhwWTNrZ1BUMDlJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxrcEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkU1pXRmpkRU5zWVhOek9pQlZibVY0Y0dWamRHVmtJSE53WldNZ2NHOXNhV041SUNWeklHWnZjaUJyWlhrZ0pYTWdKeUFySUNkM2FHVnVJRzFwZUdsdVp5QnBiaUJqYjIxd2IyNWxiblFnYzNCbFkzTXVKeXdnYzNCbFkxQnZiR2xqZVN3Z2JtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1JtOXlJRzFsZEdodlpITWdkMmhwWTJnZ1lYSmxJR1JsWm1sdVpXUWdiVzl5WlNCMGFHRnVJRzl1WTJVc0lHTmhiR3dnZEdobElHVjRhWE4wYVc1blhHNGdJQ0FnSUNBZ0lDQWdMeThnYldWMGFHOWtjeUJpWldadmNtVWdZMkZzYkdsdVp5QjBhR1VnYm1WM0lIQnliM0JsY25SNUxDQnRaWEpuYVc1bklHbG1JR0Z3Y0hKdmNISnBZWFJsTGx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h6Y0dWalVHOXNhV041SUQwOVBTQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaWDAxRlVrZEZSQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2ZEc5YmJtRnRaVjBnUFNCamNtVmhkR1ZOWlhKblpXUlNaWE4xYkhSR2RXNWpkR2x2Ymlod2NtOTBiMXR1WVcxbFhTd2djSEp2Y0dWeWRIa3BPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2MzQmxZMUJ2YkdsamVTQTlQVDBnVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZkRzliYm1GdFpWMGdQU0JqY21WaGRHVkRhR0ZwYm1Wa1JuVnVZM1JwYjI0b2NISnZkRzliYm1GdFpWMHNJSEJ5YjNCbGNuUjVLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjSEp2ZEc5YmJtRnRaVjBnUFNCd2NtOXdaWEowZVR0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1FXUmtJSFpsY21KdmMyVWdaR2x6Y0d4aGVVNWhiV1VnZEc4Z2RHaGxJR1oxYm1OMGFXOXVMQ0IzYUdsamFDQm9aV3h3Y3lCM2FHVnVJR3h2YjJ0cGJtZGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklHRjBJSEJ5YjJacGJHbHVaeUIwYjI5c2N5NWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NISnZjR1Z5ZEhrZ1BUMDlJQ2RtZFc1amRHbHZiaWNnSmlZZ2MzQmxZeTVrYVhOd2JHRjVUbUZ0WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtOTBiMXR1WVcxbFhTNWthWE53YkdGNVRtRnRaU0E5SUhOd1pXTXVaR2x6Y0d4aGVVNWhiV1VnS3lBblh5Y2dLeUJ1WVcxbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJ0YVhoVGRHRjBhV05UY0dWalNXNTBiME52YlhCdmJtVnVkQ2hEYjI1emRISjFZM1J2Y2l3Z2MzUmhkR2xqY3lrZ2UxeHVJQ0JwWmlBb0lYTjBZWFJwWTNNcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnWm05eUlDaDJZWElnYm1GdFpTQnBiaUJ6ZEdGMGFXTnpLU0I3WEc0Z0lDQWdkbUZ5SUhCeWIzQmxjblI1SUQwZ2MzUmhkR2xqYzF0dVlXMWxYVHRjYmlBZ0lDQnBaaUFvSVhOMFlYUnBZM011YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQnBjMUpsYzJWeWRtVmtJRDBnS0c1aGJXVWdhVzRnVWtWVFJWSldSVVJmVTFCRlExOUxSVmxUS1R0Y2JpQWdJQ0FoSVdselVtVnpaWEoyWldRZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUkRiR0Z6Y3pvZ1dXOTFJR0Z5WlNCaGRIUmxiWEIwYVc1bklIUnZJR1JsWm1sdVpTQmhJSEpsYzJWeWRtVmtJQ2NnS3lBbmNISnZjR1Z5ZEhrc0lHQWxjMkFzSUhSb1lYUWdjMmh2ZFd4a2JseGNKM1FnWW1VZ2IyNGdkR2hsSUZ3aWMzUmhkR2xqYzF3aUlHdGxlUzRnUkdWbWFXNWxJR2wwSUNjZ0t5QW5ZWE1nWVc0Z2FXNXpkR0Z1WTJVZ2NISnZjR1Z5ZEhrZ2FXNXpkR1ZoWkRzZ2FYUWdkMmxzYkNCemRHbHNiQ0JpWlNCaFkyTmxjM05wWW14bElHOXVJSFJvWlNBbklDc2dKMk52Ym5OMGNuVmpkRzl5TGljc0lHNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUJwYzBsdWFHVnlhWFJsWkNBOUlDaHVZVzFsSUdsdUlFTnZibk4wY25WamRHOXlLVHRjYmlBZ0lDQWhJV2x6U1c1b1pYSnBkR1ZrSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFEyeGhjM002SUZsdmRTQmhjbVVnWVhSMFpXMXdkR2x1WnlCMGJ5QmtaV1pwYm1VZ0p5QXJJQ2RnSlhOZ0lHOXVJSGx2ZFhJZ1kyOXRjRzl1Wlc1MElHMXZjbVVnZEdoaGJpQnZibU5sTGlCVWFHbHpJR052Ym1ac2FXTjBJRzFoZVNCaVpTQW5JQ3NnSjJSMVpTQjBieUJoSUcxcGVHbHVMaWNzSUc1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JEYjI1emRISjFZM1J2Y2x0dVlXMWxYU0E5SUhCeWIzQmxjblI1TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RXVnlaMlVnZEhkdklHOWlhbVZqZEhNc0lHSjFkQ0IwYUhKdmR5QnBaaUJpYjNSb0lHTnZiblJoYVc0Z2RHaGxJSE5oYldVZ2EyVjVMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnZibVVnVkdobElHWnBjbk4wSUc5aWFtVmpkQ3dnZDJocFkyZ2dhWE1nYlhWMFlYUmxaQzVjYmlBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCMGQyOGdWR2hsSUhObFkyOXVaQ0J2WW1wbFkzUmNiaUFxSUVCeVpYUjFjbTRnZTI5aWFtVmpkSDBnYjI1bElHRm1kR1Z5SUdsMElHaGhjeUJpWldWdUlHMTFkR0YwWldRZ2RHOGdZMjl1ZEdGcGJpQmxkbVZ5ZVhSb2FXNW5JR2x1SUhSM2J5NWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2JXVnlaMlZKYm5SdlYybDBhRTV2UkhWd2JHbGpZWFJsUzJWNWN5aHZibVVzSUhSM2J5a2dlMXh1SUNBaEtHOXVaU0FtSmlCMGQyOGdKaVlnZEhsd1pXOW1JRzl1WlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnZEhsd1pXOW1JSFIzYnlBOVBUMGdKMjlpYW1WamRDY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyMWxjbWRsU1c1MGIxZHBkR2hPYjBSMWNHeHBZMkYwWlV0bGVYTW9LVG9nUTJGdWJtOTBJRzFsY21kbElHNXZiaTF2WW1wbFkzUnpMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNCbWIzSWdLSFpoY2lCclpYa2dhVzRnZEhkdktTQjdYRzRnSUNBZ2FXWWdLSFIzYnk1b1lYTlBkMjVRY205d1pYSjBlU2hyWlhrcEtTQjdYRzRnSUNBZ0lDQWhLRzl1WlZ0clpYbGRJRDA5UFNCMWJtUmxabWx1WldRcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjIxbGNtZGxTVzUwYjFkcGRHaE9iMFIxY0d4cFkyRjBaVXRsZVhNb0tUb2dKeUFySUNkVWNtbGxaQ0IwYnlCdFpYSm5aU0IwZDI4Z2IySnFaV04wY3lCM2FYUm9JSFJvWlNCellXMWxJR3RsZVRvZ1lDVnpZQzRnVkdocGN5QmpiMjVtYkdsamRDQW5JQ3NnSjIxaGVTQmlaU0JrZFdVZ2RHOGdZU0J0YVhocGJqc2dhVzRnY0dGeWRHbGpkV3hoY2l3Z2RHaHBjeUJ0WVhrZ1ltVWdZMkYxYzJWa0lHSjVJSFIzYnlBbklDc2dKMmRsZEVsdWFYUnBZV3hUZEdGMFpTZ3BJRzl5SUdkbGRFUmxabUYxYkhSUWNtOXdjeWdwSUcxbGRHaHZaSE1nY21WMGRYSnVhVzVuSUc5aWFtVmpkSE1nSnlBcklDZDNhWFJvSUdOc1lYTm9hVzVuSUd0bGVYTXVKeXdnYTJWNUtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J2Ym1WYmEyVjVYU0E5SUhSM2IxdHJaWGxkTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdiMjVsTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElHbHVkbTlyWlhNZ2RIZHZJR1oxYm1OMGFXOXVjeUJoYm1RZ2JXVnlaMlZ6SUhSb1pXbHlJSEpsZEhWeWJpQjJZV3gxWlhNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ2IyNWxJRVoxYm1OMGFXOXVJSFJ2SUdsdWRtOXJaU0JtYVhKemRDNWNiaUFxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUhSM2J5QkdkVzVqZEdsdmJpQjBieUJwYm5admEyVWdjMlZqYjI1a0xseHVJQ29nUUhKbGRIVnliaUI3Wm5WdVkzUnBiMjU5SUVaMWJtTjBhVzl1SUhSb1lYUWdhVzUyYjJ0bGN5QjBhR1VnZEhkdklHRnlaM1Z0Wlc1MElHWjFibU4wYVc5dWN5NWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR055WldGMFpVMWxjbWRsWkZKbGMzVnNkRVoxYm1OMGFXOXVLRzl1WlN3Z2RIZHZLU0I3WEc0Z0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlCdFpYSm5aV1JTWlhOMWJIUW9LU0I3WEc0Z0lDQWdkbUZ5SUdFZ1BTQnZibVV1WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNCMllYSWdZaUE5SUhSM2J5NWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJR2xtSUNoaElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCaU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1lpQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1lUdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlHTWdQU0I3ZlR0Y2JpQWdJQ0J0WlhKblpVbHVkRzlYYVhSb1RtOUVkWEJzYVdOaGRHVkxaWGx6S0dNc0lHRXBPMXh1SUNBZ0lHMWxjbWRsU1c1MGIxZHBkR2hPYjBSMWNHeHBZMkYwWlV0bGVYTW9ZeXdnWWlrN1hHNGdJQ0FnY21WMGRYSnVJR003WEc0Z0lIMDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaElHWjFibU4wYVc5dUlIUm9ZWFFnYVc1MmIydGxjeUIwZDI4Z1puVnVZM1JwYjI1eklHRnVaQ0JwWjI1dmNtVnpJSFJvWldseUlISmxkSFZ5YmlCMllXeGxjeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0J2Ym1VZ1JuVnVZM1JwYjI0Z2RHOGdhVzUyYjJ0bElHWnBjbk4wTGx4dUlDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdkSGR2SUVaMWJtTjBhVzl1SUhSdklHbHVkbTlyWlNCelpXTnZibVF1WEc0Z0tpQkFjbVYwZFhKdUlIdG1kVzVqZEdsdmJuMGdSblZ1WTNScGIyNGdkR2hoZENCcGJuWnZhMlZ6SUhSb1pTQjBkMjhnWVhKbmRXMWxiblFnWm5WdVkzUnBiMjV6TGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsUTJoaGFXNWxaRVoxYm1OMGFXOXVLRzl1WlN3Z2RIZHZLU0I3WEc0Z0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlCamFHRnBibVZrUm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnYjI1bExtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lDQWdkSGR2TG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUgwN1hHNTlYRzVjYmk4cUtseHVJQ29nUW1sdVpITWdZU0J0WlhSb2IyUWdkRzhnZEdobElHTnZiWEJ2Ym1WdWRDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXRjRzl1Wlc1MElFTnZiWEJ2Ym1WdWRDQjNhRzl6WlNCdFpYUm9iMlFnYVhNZ1oyOXBibWNnZEc4Z1ltVWdZbTkxYm1RdVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0J0WlhSb2IyUWdUV1YwYUc5a0lIUnZJR0psSUdKdmRXNWtMbHh1SUNvZ1FISmxkSFZ5YmlCN1puVnVZM1JwYjI1OUlGUm9aU0JpYjNWdVpDQnRaWFJvYjJRdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKcGJtUkJkWFJ2UW1sdVpFMWxkR2h2WkNoamIyMXdiMjVsYm5Rc0lHMWxkR2h2WkNrZ2UxeHVJQ0IyWVhJZ1ltOTFibVJOWlhSb2IyUWdQU0J0WlhSb2IyUXVZbWx1WkNoamIyMXdiMjVsYm5RcE8xeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lHSnZkVzVrVFdWMGFHOWtMbDlmY21WaFkzUkNiM1Z1WkVOdmJuUmxlSFFnUFNCamIyMXdiMjVsYm5RN1hHNGdJQ0FnWW05MWJtUk5aWFJvYjJRdVgxOXlaV0ZqZEVKdmRXNWtUV1YwYUc5a0lEMGdiV1YwYUc5a08xeHVJQ0FnSUdKdmRXNWtUV1YwYUc5a0xsOWZjbVZoWTNSQ2IzVnVaRUZ5WjNWdFpXNTBjeUE5SUc1MWJHdzdYRzRnSUNBZ2RtRnlJR052YlhCdmJtVnVkRTVoYldVZ1BTQmpiMjF3YjI1bGJuUXVZMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVN1hHNGdJQ0FnZG1GeUlGOWlhVzVrSUQwZ1ltOTFibVJOWlhSb2IyUXVZbWx1WkR0Y2JpQWdJQ0F2S2lCbGMyeHBiblF0WkdsellXSnNaU0JpYkc5amF5MXpZMjl3WldRdGRtRnlMQ0J1YnkxMWJtUmxaaUFxTDF4dUlDQWdJR0p2ZFc1a1RXVjBhRzlrTG1KcGJtUWdQU0JtZFc1amRHbHZiaUFvYm1WM1ZHaHBjeWtnZTF4dUlDQWdJQ0FnWm05eUlDaDJZWElnWDJ4bGJpQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ3NJR0Z5WjNNZ1BTQkJjbkpoZVNoZmJHVnVJRDRnTVNBL0lGOXNaVzRnTFNBeElEb2dNQ2tzSUY5clpYa2dQU0F4T3lCZmEyVjVJRHdnWDJ4bGJqc2dYMnRsZVNzcktTQjdYRzRnSUNBZ0lDQWdJR0Z5WjNOYlgydGxlU0F0SURGZElEMGdZWEpuZFcxbGJuUnpXMTlyWlhsZE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQXZMeUJWYzJWeUlHbHpJSFJ5ZVdsdVp5QjBieUJpYVc1a0tDa2dZVzRnWVhWMGIySnZkVzVrSUcxbGRHaHZaRHNnZDJVZ1pXWm1aV04wYVhabGJIa2dkMmxzYkZ4dUlDQWdJQ0FnTHk4Z2FXZHViM0psSUhSb1pTQjJZV3gxWlNCdlppQmNJblJvYVhOY0lpQjBhR0YwSUhSb1pTQjFjMlZ5SUdseklIUnllV2x1WnlCMGJ5QjFjMlVzSUhOdlhHNGdJQ0FnSUNBdkx5QnNaWFFuY3lCM1lYSnVMbHh1SUNBZ0lDQWdhV1lnS0c1bGQxUm9hWE1nSVQwOUlHTnZiWEJ2Ym1WdWRDQW1KaUJ1WlhkVWFHbHpJQ0U5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblltbHVaQ2dwT2lCU1pXRmpkQ0JqYjIxd2IyNWxiblFnYldWMGFHOWtjeUJ0WVhrZ2IyNXNlU0JpWlNCaWIzVnVaQ0IwYnlCMGFHVWdKeUFySUNkamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVdUlGTmxaU0FsY3ljc0lHTnZiWEJ2Ym1WdWRFNWhiV1VwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDZ2hZWEpuY3k1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZGlhVzVrS0NrNklGbHZkU0JoY21VZ1ltbHVaR2x1WnlCaElHTnZiWEJ2Ym1WdWRDQnRaWFJvYjJRZ2RHOGdkR2hsSUdOdmJYQnZibVZ1ZEM0Z0p5QXJJQ2RTWldGamRDQmtiMlZ6SUhSb2FYTWdabTl5SUhsdmRTQmhkWFJ2YldGMGFXTmhiR3g1SUdsdUlHRWdhR2xuYUMxd1pYSm1iM0p0WVc1alpTQW5JQ3NnSjNkaGVTd2djMjhnZVc5MUlHTmhiaUJ6WVdabGJIa2djbVZ0YjNabElIUm9hWE1nWTJGc2JDNGdVMlZsSUNWekp5d2dZMjl0Y0c5dVpXNTBUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmliM1Z1WkUxbGRHaHZaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFpoY2lCeVpXSnZkVzVrVFdWMGFHOWtJRDBnWDJKcGJtUXVZWEJ3Ykhrb1ltOTFibVJOWlhSb2IyUXNJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lDQWdJQ0J5WldKdmRXNWtUV1YwYUc5a0xsOWZjbVZoWTNSQ2IzVnVaRU52Ym5SbGVIUWdQU0JqYjIxd2IyNWxiblE3WEc0Z0lDQWdJQ0J5WldKdmRXNWtUV1YwYUc5a0xsOWZjbVZoWTNSQ2IzVnVaRTFsZEdodlpDQTlJRzFsZEdodlpEdGNiaUFnSUNBZ0lISmxZbTkxYm1STlpYUm9iMlF1WDE5eVpXRmpkRUp2ZFc1a1FYSm5kVzFsYm5SeklEMGdZWEpuY3p0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ5WldKdmRXNWtUV1YwYUc5a08xeHVJQ0FnSUNBZ0x5b2daWE5zYVc1MExXVnVZV0pzWlNBcUwxeHVJQ0FnSUgwN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdKdmRXNWtUV1YwYUc5a08xeHVmVnh1WEc0dktpcGNiaUFxSUVKcGJtUnpJR0ZzYkNCaGRYUnZMV0p2ZFc1a0lHMWxkR2h2WkhNZ2FXNGdZU0JqYjIxd2IyNWxiblF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052YlhCdmJtVnVkQ0JEYjIxd2IyNWxiblFnZDJodmMyVWdiV1YwYUc5a0lHbHpJR2R2YVc1bklIUnZJR0psSUdKdmRXNWtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmlhVzVrUVhWMGIwSnBibVJOWlhSb2IyUnpLR052YlhCdmJtVnVkQ2tnZTF4dUlDQm1iM0lnS0haaGNpQmhkWFJ2UW1sdVpFdGxlU0JwYmlCamIyMXdiMjVsYm5RdVgxOXlaV0ZqZEVGMWRHOUNhVzVrVFdGd0tTQjdYRzRnSUNBZ2FXWWdLR052YlhCdmJtVnVkQzVmWDNKbFlXTjBRWFYwYjBKcGJtUk5ZWEF1YUdGelQzZHVVSEp2Y0dWeWRIa29ZWFYwYjBKcGJtUkxaWGtwS1NCN1hHNGdJQ0FnSUNCMllYSWdiV1YwYUc5a0lEMGdZMjl0Y0c5dVpXNTBMbDlmY21WaFkzUkJkWFJ2UW1sdVpFMWhjRnRoZFhSdlFtbHVaRXRsZVYwN1hHNGdJQ0FnSUNCamIyMXdiMjVsYm5SYllYVjBiMEpwYm1STFpYbGRJRDBnWW1sdVpFRjFkRzlDYVc1a1RXVjBhRzlrS0dOdmJYQnZibVZ1ZEN3Z2JXVjBhRzlrS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCQlpHUWdiVzl5WlNCMGJ5QjBhR1VnVW1WaFkzUkRiR0Z6Y3lCaVlYTmxJR05zWVhOekxpQlVhR1Z6WlNCaGNtVWdZV3hzSUd4bFoyRmplU0JtWldGMGRYSmxjeUJoYm1SY2JpQXFJSFJvWlhKbFptOXlaU0J1YjNRZ1lXeHlaV0ZrZVNCd1lYSjBJRzltSUhSb1pTQnRiMlJsY200Z1VtVmhZM1JEYjIxd2IyNWxiblF1WEc0Z0tpOWNiblpoY2lCU1pXRmpkRU5zWVhOelRXbDRhVzRnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSUFJFODZJRlJvYVhNZ2QybHNiQ0JpWlNCa1pYQnlaV05oZEdWa0lHSmxZMkYxYzJVZ2MzUmhkR1VnYzJodmRXeGtJR0ZzZDJGNWN5QnJaV1Z3SUdFZ1kyOXVjMmx6ZEdWdWRGeHVJQ0FnS2lCMGVYQmxJSE5wWjI1aGRIVnlaU0JoYm1RZ2RHaGxJRzl1YkhrZ2RYTmxJR05oYzJVZ1ptOXlJSFJvYVhNc0lHbHpJSFJ2SUdGMmIybGtJSFJvWVhRdVhHNGdJQ0FxTDF4dUlDQnlaWEJzWVdObFUzUmhkR1U2SUdaMWJtTjBhVzl1SUNodVpYZFRkR0YwWlN3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpWSmxjR3hoWTJWVGRHRjBaU2gwYUdsekxDQnVaWGRUZEdGMFpTazdYRzRnSUNBZ2FXWWdLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVOaGJHeGlZV05yS0hSb2FYTXNJR05oYkd4aVlXTnJLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOb1pXTnJjeUIzYUdWMGFHVnlJRzl5SUc1dmRDQjBhR2x6SUdOdmJYQnZjMmwwWlNCamIyMXdiMjVsYm5RZ2FYTWdiVzkxYm5SbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1ltOXZiR1ZoYm4wZ1ZISjFaU0JwWmlCdGIzVnVkR1ZrTENCbVlXeHpaU0J2ZEdobGNuZHBjMlV1WEc0Z0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxTDF4dUlDQnBjMDF2ZFc1MFpXUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWNHUmhkR1Z5TG1selRXOTFiblJsWkNoMGFHbHpLVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyVjBjeUJoSUhOMVluTmxkQ0J2WmlCMGFHVWdjSEp2Y0hNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQndZWEowYVdGc1VISnZjSE1nVTNWaWMyVjBJRzltSUhSb1pTQnVaWGgwSUhCeWIzQnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OW1kVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dRMkZzYkdWa0lHRm1kR1Z5SUhCeWIzQnpJR0Z5WlNCMWNHUmhkR1ZrTGx4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvZ1FIQjFZbXhwWTF4dUlDQWdLaUJBWkdWd2NtVmpZWFJsWkZ4dUlDQWdLaTljYmlBZ2MyVjBVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHdZWEowYVdGc1VISnZjSE1zSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSGRoY201VFpYUlFjbTl3Y3lncE8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlZObGRGQnliM0J6S0hSb2FYTXNJSEJoY25ScFlXeFFjbTl3Y3lrN1hHNGdJQ0FnYVdZZ0tHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVU5oYkd4aVlXTnJLSFJvYVhNc0lHTmhiR3hpWVdOcktUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsY0d4aFkyVWdZV3hzSUhSb1pTQndjbTl3Y3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHNWxkMUJ5YjNCeklGTjFZbk5sZENCdlppQjBhR1VnYm1WNGRDQndjbTl3Y3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVOaGJHeGxaQ0JoWm5SbGNpQndjbTl3Y3lCaGNtVWdkWEJrWVhSbFpDNWNiaUFnSUNvZ1FHWnBibUZzWEc0Z0lDQXFJRUJ3ZFdKc2FXTmNiaUFnSUNvZ1FHUmxjSEpsWTJGMFpXUmNiaUFnSUNvdlhHNGdJSEpsY0d4aFkyVlFjbTl3Y3pvZ1puVnVZM1JwYjI0Z0tHNWxkMUJ5YjNCekxDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCM1lYSnVVMlYwVUhKdmNITW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTUxY0dSaGRHVnlMbVZ1Y1hWbGRXVlNaWEJzWVdObFVISnZjSE1vZEdocGN5d2dibVYzVUhKdmNITXBPMXh1SUNBZ0lHbG1JQ2hqWVd4c1ltRmpheWtnZTF4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWeUxtVnVjWFZsZFdWRFlXeHNZbUZqYXloMGFHbHpMQ0JqWVd4c1ltRmpheWs3WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1WEc1MllYSWdVbVZoWTNSRGJHRnpjME52YlhCdmJtVnVkQ0E5SUdaMWJtTjBhVzl1SUNncElIdDlPMXh1WVhOemFXZHVLRkpsWVdOMFEyeGhjM05EYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTENCU1pXRmpkRU52YlhCdmJtVnVkQzV3Y205MGIzUjVjR1VzSUZKbFlXTjBRMnhoYzNOTmFYaHBiaWs3WEc1Y2JpOHFLbHh1SUNvZ1RXOWtkV3hsSUdadmNpQmpjbVZoZEdsdVp5QmpiMjF3YjNOcGRHVWdZMjl0Y0c5dVpXNTBjeTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdVbVZoWTNSRGJHRnpjMXh1SUNvdlhHNTJZWElnVW1WaFkzUkRiR0Z6Y3lBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaElHTnZiWEJ2YzJsMFpTQmpiMjF3YjI1bGJuUWdZMnhoYzNNZ1oybDJaVzRnWVNCamJHRnpjeUJ6Y0dWamFXWnBZMkYwYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjM0JsWXlCRGJHRnpjeUJ6Y0dWamFXWnBZMkYwYVc5dUlDaDNhR2xqYUNCdGRYTjBJR1JsWm1sdVpTQmdjbVZ1WkdWeVlDa3VYRzRnSUNBcUlFQnlaWFIxY200Z2UyWjFibU4wYVc5dWZTQkRiMjF3YjI1bGJuUWdZMjl1YzNSeWRXTjBiM0lnWm5WdVkzUnBiMjR1WEc0Z0lDQXFJRUJ3ZFdKc2FXTmNiaUFnSUNvdlhHNGdJR055WldGMFpVTnNZWE56T2lCbWRXNWpkR2x2YmlBb2MzQmxZeWtnZTF4dUlDQWdJSFpoY2lCRGIyNXpkSEoxWTNSdmNpQTlJR1oxYm1OMGFXOXVJQ2h3Y205d2N5d2dZMjl1ZEdWNGRDd2dkWEJrWVhSbGNpa2dlMXh1SUNBZ0lDQWdMeThnVkdocGN5QmpiMjV6ZEhKMVkzUnZjaUJwY3lCdmRtVnljbWxrWkdWdUlHSjVJRzF2WTJ0ekxpQlVhR1VnWVhKbmRXMWxiblFnYVhNZ2RYTmxaRnh1SUNBZ0lDQWdMeThnWW5rZ2JXOWphM01nZEc4Z1lYTnpaWEowSUc5dUlIZG9ZWFFnWjJWMGN5QnRiM1Z1ZEdWa0xseHVYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgwYUdseklHbHVjM1JoYm1ObGIyWWdRMjl1YzNSeWRXTjBiM0lzSUNkVGIyMWxkR2hwYm1jZ2FYTWdZMkZzYkdsdVp5QmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQmthWEpsWTNSc2VTNGdWWE5sSUdFZ1ptRmpkRzl5ZVNCdmNpQW5JQ3NnSjBwVFdDQnBibk4wWldGa0xpQlRaV1U2SUdoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGJHVm5ZV041Wm1GamRHOXllU2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQXZMeUJYYVhKbElIVndJR0YxZEc4dFltbHVaR2x1WjF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WDE5eVpXRmpkRUYxZEc5Q2FXNWtUV0Z3S1NCN1hHNGdJQ0FnSUNBZ0lHSnBibVJCZFhSdlFtbHVaRTFsZEdodlpITW9kR2hwY3lrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lIUm9hWE11Y0hKdmNITWdQU0J3Y205d2N6dGNiaUFnSUNBZ0lIUm9hWE11WTI5dWRHVjRkQ0E5SUdOdmJuUmxlSFE3WEc0Z0lDQWdJQ0IwYUdsekxuSmxabk1nUFNCbGJYQjBlVTlpYW1WamREdGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxjaUE5SUhWd1pHRjBaWElnZkh3Z1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVTdYRzVjYmlBZ0lDQWdJSFJvYVhNdWMzUmhkR1VnUFNCdWRXeHNPMXh1WEc0Z0lDQWdJQ0F2THlCU1pXRmpkRU5zWVhOelpYTWdaRzlsYzI0bmRDQm9ZWFpsSUdOdmJuTjBjblZqZEc5eWN5NGdTVzV6ZEdWaFpDd2dkR2hsZVNCMWMyVWdkR2hsWEc0Z0lDQWdJQ0F2THlCblpYUkpibWwwYVdGc1UzUmhkR1VnWVc1a0lHTnZiWEJ2Ym1WdWRGZHBiR3hOYjNWdWRDQnRaWFJvYjJSeklHWnZjaUJwYm1sMGFXRnNhWHBoZEdsdmJpNWNibHh1SUNBZ0lDQWdkbUZ5SUdsdWFYUnBZV3hUZEdGMFpTQTlJSFJvYVhNdVoyVjBTVzVwZEdsaGJGTjBZWFJsSUQ4Z2RHaHBjeTVuWlhSSmJtbDBhV0ZzVTNSaGRHVW9LU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJYWlNCaGJHeHZkeUJoZFhSdkxXMXZZMnR6SUhSdklIQnliMk5sWldRZ1lYTWdhV1lnZEdobGVTZHlaU0J5WlhSMWNtNXBibWNnYm5Wc2JDNWNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJwYm1sMGFXRnNVM1JoZEdVZ1BUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlIUm9hWE11WjJWMFNXNXBkR2xoYkZOMFlYUmxMbDlwYzAxdlkydEdkVzVqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklGUm9hWE1nYVhNZ2NISnZZbUZpYkhrZ1ltRmtJSEJ5WVdOMGFXTmxMaUJEYjI1emFXUmxjaUIzWVhKdWFXNW5JR2hsY21VZ1lXNWtYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1pHVndjbVZqWVhScGJtY2dkR2hwY3lCamIyNTJaVzVwWlc1alpTNWNiaUFnSUNBZ0lDQWdJQ0JwYm1sMGFXRnNVM1JoZEdVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBaEtIUjVjR1Z2WmlCcGJtbDBhV0ZzVTNSaGRHVWdQVDA5SUNkdlltcGxZM1FuSUNZbUlDRkJjbkpoZVM1cGMwRnljbUY1S0dsdWFYUnBZV3hUZEdGMFpTa3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0p5VnpMbWRsZEVsdWFYUnBZV3hUZEdGMFpTZ3BPaUJ0ZFhOMElISmxkSFZ5YmlCaGJpQnZZbXBsWTNRZ2IzSWdiblZzYkNjc0lFTnZibk4wY25WamRHOXlMbVJwYzNCc1lYbE9ZVzFsSUh4OElDZFNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZENjcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQ0FnZEdocGN5NXpkR0YwWlNBOUlHbHVhWFJwWVd4VGRHRjBaVHRjYmlBZ0lDQjlPMXh1SUNBZ0lFTnZibk4wY25WamRHOXlMbkJ5YjNSdmRIbHdaU0E5SUc1bGR5QlNaV0ZqZEVOc1lYTnpRMjl0Y0c5dVpXNTBLQ2s3WEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsTG1OdmJuTjBjblZqZEc5eUlEMGdRMjl1YzNSeWRXTjBiM0k3WEc1Y2JpQWdJQ0JwYm1wbFkzUmxaRTFwZUdsdWN5NW1iM0pGWVdOb0tHMXBlRk53WldOSmJuUnZRMjl0Y0c5dVpXNTBMbUpwYm1Rb2JuVnNiQ3dnUTI5dWMzUnlkV04wYjNJcEtUdGNibHh1SUNBZ0lHMXBlRk53WldOSmJuUnZRMjl0Y0c5dVpXNTBLRU52Ym5OMGNuVmpkRzl5TENCemNHVmpLVHRjYmx4dUlDQWdJQzh2SUVsdWFYUnBZV3hwZW1VZ2RHaGxJR1JsWm1GMWJIUlFjbTl3Y3lCd2NtOXdaWEowZVNCaFpuUmxjaUJoYkd3Z2JXbDRhVzV6SUdoaGRtVWdZbVZsYmlCdFpYSm5aV1F1WEc0Z0lDQWdhV1lnS0VOdmJuTjBjblZqZEc5eUxtZGxkRVJsWm1GMWJIUlFjbTl3Y3lrZ2UxeHVJQ0FnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVaR1ZtWVhWc2RGQnliM0J6SUQwZ1EyOXVjM1J5ZFdOMGIzSXVaMlYwUkdWbVlYVnNkRkJ5YjNCektDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUM4dklGUm9hWE1nYVhNZ1lTQjBZV2NnZEc4Z2FXNWthV05oZEdVZ2RHaGhkQ0IwYUdVZ2RYTmxJRzltSUhSb1pYTmxJRzFsZEdodlpDQnVZVzFsY3lCcGN5QnZheXhjYmlBZ0lDQWdJQzh2SUhOcGJtTmxJR2wwSjNNZ2RYTmxaQ0IzYVhSb0lHTnlaV0YwWlVOc1lYTnpMaUJKWmlCcGRDZHpJRzV2ZEN3Z2RHaGxiaUJwZENkeklHeHBhMlZzZVNCaFhHNGdJQ0FnSUNBdkx5QnRhWE4wWVd0bElITnZJSGRsSjJ4c0lIZGhjbTRnZVc5MUlIUnZJSFZ6WlNCMGFHVWdjM1JoZEdsaklIQnliM0JsY25SNUxDQndjbTl3WlhKMGVWeHVJQ0FnSUNBZ0x5OGdhVzVwZEdsaGJHbDZaWElnYjNJZ1kyOXVjM1J5ZFdOMGIzSWdjbVZ6Y0dWamRHbDJaV3g1TGx4dUlDQWdJQ0FnYVdZZ0tFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5a2dlMXh1SUNBZ0lDQWdJQ0JEYjI1emRISjFZM1J2Y2k1blpYUkVaV1poZFd4MFVISnZjSE11YVhOU1pXRmpkRU5zWVhOelFYQndjbTkyWldRZ1BTQjdmVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoRGIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXVaMlYwU1c1cGRHbGhiRk4wWVhSbEtTQjdYRzRnSUNBZ0lDQWdJRU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlM1blpYUkpibWwwYVdGc1UzUmhkR1V1YVhOU1pXRmpkRU5zWVhOelFYQndjbTkyWldRZ1BTQjdmVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQWhRMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsTG5KbGJtUmxjaUEvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZGpjbVZoZEdWRGJHRnpjeWd1TGk0cE9pQkRiR0Z6Y3lCemNHVmphV1pwWTJGMGFXOXVJRzExYzNRZ2FXMXdiR1Z0Wlc1MElHRWdZSEpsYm1SbGNtQWdiV1YwYUc5a0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaFEyOXVjM1J5ZFdOMGIzSXVjSEp2ZEc5MGVYQmxMbU52YlhCdmJtVnVkRk5vYjNWc1pGVndaR0YwWlN3Z0p5VnpJR2hoY3lCaElHMWxkR2h2WkNCallXeHNaV1FnSnlBcklDZGpiMjF3YjI1bGJuUlRhRzkxYkdSVmNHUmhkR1VvS1M0Z1JHbGtJSGx2ZFNCdFpXRnVJSE5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlNncFB5QW5JQ3NnSjFSb1pTQnVZVzFsSUdseklIQm9jbUZ6WldRZ1lYTWdZU0J4ZFdWemRHbHZiaUJpWldOaGRYTmxJSFJvWlNCbWRXNWpkR2x2YmlCcGN5QW5JQ3NnSjJWNGNHVmpkR1ZrSUhSdklISmxkSFZ5YmlCaElIWmhiSFZsTGljc0lITndaV011WkdsemNHeGhlVTVoYldVZ2ZId2dKMEVnWTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWdoUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbExtTnZiWEJ2Ym1WdWRGZHBiR3hTWldOcFpYWmxVSEp2Y0hNc0lDY2xjeUJvWVhNZ1lTQnRaWFJvYjJRZ1kyRnNiR1ZrSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBWMmxzYkZKbFkybGxkbVZRY205d2N5Z3BMaUJFYVdRZ2VXOTFJRzFsWVc0Z1kyOXRjRzl1Wlc1MFYybHNiRkpsWTJWcGRtVlFjbTl3Y3lncFB5Y3NJSE53WldNdVpHbHpjR3hoZVU1aGJXVWdmSHdnSjBFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVW1Wa2RXTmxJSFJwYldVZ2MzQmxiblFnWkc5cGJtY2diRzl2YTNWd2N5QmllU0J6WlhSMGFXNW5JSFJvWlhObElHOXVJSFJvWlNCd2NtOTBiM1I1Y0dVdVhHNGdJQ0FnWm05eUlDaDJZWElnYldWMGFHOWtUbUZ0WlNCcGJpQlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lVTnZibk4wY25WamRHOXlMbkJ5YjNSdmRIbHdaVnR0WlhSb2IyUk9ZVzFsWFNrZ2UxeHVJQ0FnSUNBZ0lDQkRiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1ZiYldWMGFHOWtUbUZ0WlYwZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQkRiMjV6ZEhKMVkzUnZjanRjYmlBZ2ZTeGNibHh1SUNCcGJtcGxZM1JwYjI0NklIdGNiaUFnSUNCcGJtcGxZM1JOYVhocGJqb2dablZ1WTNScGIyNGdLRzFwZUdsdUtTQjdYRzRnSUNBZ0lDQnBibXBsWTNSbFpFMXBlR2x1Y3k1d2RYTm9LRzFwZUdsdUtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFTnNZWE56T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gUmVhY3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIuXG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5cblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8qKlxuICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcbiAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxuICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVkLlxuICpcbiAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25lbnQgYXJndW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZlcmVudFxuICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXG4gKiBhc3NpZ25lZCB0byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAgICAgcHJvZHVjZSBuZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICAhKHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdmdW5jdGlvbicgfHwgcGFydGlhbFN0YXRlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgJyArICdmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0ZSAhPSBudWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVsbCBzdGF0ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB1bmRlZmluZWQ7XG4gIH1cbiAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAqXG4gKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICpcbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQSXMgdXNlZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlXG4gKiB3ZSB3b3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdyZSBub3QgZ29pbmcgdG8gbW92ZSB0aGVtIG92ZXIgdG8gdGhpc1xuICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcbiAgICBnZXRET01Ob2RlOiBbJ2dldERPTU5vZGUnLCAnVXNlIFJlYWN0RE9NLmZpbmRET01Ob2RlKGNvbXBvbmVudCkgaW5zdGVhZC4nXSxcbiAgICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG4gICAgcmVwbGFjZVByb3BzOiBbJ3JlcGxhY2VQcm9wcycsICdJbnN0ZWFkLCBjYWxsIHJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLiddLFxuICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddLFxuICAgIHNldFByb3BzOiBbJ3NldFByb3BzJywgJ0luc3RlYWQsIGNhbGwgcmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJ11cbiAgfTtcbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgdHJ5IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdENvbXBvbmVudC5wcm90b3R5cGUsIG1ldGhvZE5hbWUsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2YVNjcmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pIDogdW5kZWZpbmVkO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eSAoZXM1LXNoaW0vc2hhbSB0b28pXG4gICAgfVxuICB9O1xuICBmb3IgKHZhciBmbk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3duUHJvcGVydHkoZm5OYW1lKSkge1xuICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkRiMjF3YjI1bGJuUXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBRMjl0Y0c5dVpXNTBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNWNiblpoY2lCbGJYQjBlVTlpYW1WamRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMlZ0Y0hSNVQySnFaV04wSnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1THlvcVhHNGdLaUJDWVhObElHTnNZWE56SUdobGJIQmxjbk1nWm05eUlIUm9aU0IxY0dSaGRHbHVaeUJ6ZEdGMFpTQnZaaUJoSUdOdmJYQnZibVZ1ZEM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnVW1WaFkzUkRiMjF3YjI1bGJuUW9jSEp2Y0hNc0lHTnZiblJsZUhRc0lIVndaR0YwWlhJcElIdGNiaUFnZEdocGN5NXdjbTl3Y3lBOUlIQnliM0J6TzF4dUlDQjBhR2x6TG1OdmJuUmxlSFFnUFNCamIyNTBaWGgwTzF4dUlDQjBhR2x6TG5KbFpuTWdQU0JsYlhCMGVVOWlhbVZqZER0Y2JpQWdMeThnVjJVZ2FXNXBkR2xoYkdsNlpTQjBhR1VnWkdWbVlYVnNkQ0IxY0dSaGRHVnlJR0oxZENCMGFHVWdjbVZoYkNCdmJtVWdaMlYwY3lCcGJtcGxZM1JsWkNCaWVTQjBhR1ZjYmlBZ0x5OGdjbVZ1WkdWeVpYSXVYRzRnSUhSb2FYTXVkWEJrWVhSbGNpQTlJSFZ3WkdGMFpYSWdmSHdnVW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVN1hHNTlYRzVjYmxKbFlXTjBRMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaUzVwYzFKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnZTMwN1hHNWNiaThxS2x4dUlDb2dVMlYwY3lCaElITjFZbk5sZENCdlppQjBhR1VnYzNSaGRHVXVJRUZzZDJGNWN5QjFjMlVnZEdocGN5QjBieUJ0ZFhSaGRHVmNiaUFxSUhOMFlYUmxMaUJaYjNVZ2MyaHZkV3hrSUhSeVpXRjBJR0IwYUdsekxuTjBZWFJsWUNCaGN5QnBiVzExZEdGaWJHVXVYRzRnS2x4dUlDb2dWR2hsY21VZ2FYTWdibThnWjNWaGNtRnVkR1ZsSUhSb1lYUWdZSFJvYVhNdWMzUmhkR1ZnSUhkcGJHd2dZbVVnYVcxdFpXUnBZWFJsYkhrZ2RYQmtZWFJsWkN3Z2MyOWNiaUFxSUdGalkyVnpjMmx1WnlCZ2RHaHBjeTV6ZEdGMFpXQWdZV1owWlhJZ1kyRnNiR2x1WnlCMGFHbHpJRzFsZEdodlpDQnRZWGtnY21WMGRYSnVJSFJvWlNCdmJHUWdkbUZzZFdVdVhHNGdLbHh1SUNvZ1ZHaGxjbVVnYVhNZ2JtOGdaM1ZoY21GdWRHVmxJSFJvWVhRZ1kyRnNiSE1nZEc4Z1lITmxkRk4wWVhSbFlDQjNhV3hzSUhKMWJpQnplVzVqYUhKdmJtOTFjMng1TEZ4dUlDb2dZWE1nZEdobGVTQnRZWGtnWlhabGJuUjFZV3hzZVNCaVpTQmlZWFJqYUdWa0lIUnZaMlYwYUdWeUxpQWdXVzkxSUdOaGJpQndjbTkyYVdSbElHRnVJRzl3ZEdsdmJtRnNYRzRnS2lCallXeHNZbUZqYXlCMGFHRjBJSGRwYkd3Z1ltVWdaWGhsWTNWMFpXUWdkMmhsYmlCMGFHVWdZMkZzYkNCMGJ5QnpaWFJUZEdGMFpTQnBjeUJoWTNSMVlXeHNlVnh1SUNvZ1kyOXRjR3hsZEdWa0xseHVJQ3BjYmlBcUlGZG9aVzRnWVNCbWRXNWpkR2x2YmlCcGN5QndjbTkyYVdSbFpDQjBieUJ6WlhSVGRHRjBaU3dnYVhRZ2QybHNiQ0JpWlNCallXeHNaV1FnWVhRZ2MyOXRaU0J3YjJsdWRDQnBibHh1SUNvZ2RHaGxJR1oxZEhWeVpTQW9ibTkwSUhONWJtTm9jbTl1YjNWemJIa3BMaUJKZENCM2FXeHNJR0psSUdOaGJHeGxaQ0IzYVhSb0lIUm9aU0IxY0NCMGJ5QmtZWFJsWEc0Z0tpQmpiMjF3YjI1bGJuUWdZWEpuZFcxbGJuUnpJQ2h6ZEdGMFpTd2djSEp2Y0hNc0lHTnZiblJsZUhRcExpQlVhR1Z6WlNCMllXeDFaWE1nWTJGdUlHSmxJR1JwWm1abGNtVnVkRnh1SUNvZ1puSnZiU0IwYUdsekxpb2dZbVZqWVhWelpTQjViM1Z5SUdaMWJtTjBhVzl1SUcxaGVTQmlaU0JqWVd4c1pXUWdZV1owWlhJZ2NtVmpaV2wyWlZCeWIzQnpJR0oxZENCaVpXWnZjbVZjYmlBcUlITm9iM1ZzWkVOdmJYQnZibVZ1ZEZWd1pHRjBaU3dnWVc1a0lIUm9hWE1nYm1WM0lITjBZWFJsTENCd2NtOXdjeXdnWVc1a0lHTnZiblJsZUhRZ2QybHNiQ0J1YjNRZ2VXVjBJR0psWEc0Z0tpQmhjM05wWjI1bFpDQjBieUIwYUdsekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2IySnFaV04wZkdaMWJtTjBhVzl1ZlNCd1lYSjBhV0ZzVTNSaGRHVWdUbVY0ZENCd1lYSjBhV0ZzSUhOMFlYUmxJRzl5SUdaMWJtTjBhVzl1SUhSdlhHNGdLaUFnSUNBZ0lDQWdjSEp2WkhWalpTQnVaWGgwSUhCaGNuUnBZV3dnYzNSaGRHVWdkRzhnWW1VZ2JXVnlaMlZrSUhkcGRHZ2dZM1Z5Y21WdWRDQnpkR0YwWlM1Y2JpQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJEWVd4c1pXUWdZV1owWlhJZ2MzUmhkR1VnYVhNZ2RYQmtZWFJsWkM1Y2JpQXFJRUJtYVc1aGJGeHVJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDb3ZYRzVTWldGamRFTnZiWEJ2Ym1WdWRDNXdjbTkwYjNSNWNHVXVjMlYwVTNSaGRHVWdQU0JtZFc1amRHbHZiaUFvY0dGeWRHbGhiRk4wWVhSbExDQmpZV3hzWW1GamF5a2dlMXh1SUNBaEtIUjVjR1Z2WmlCd1lYSjBhV0ZzVTNSaGRHVWdQVDA5SUNkdlltcGxZM1FuSUh4OElIUjVjR1Z2WmlCd1lYSjBhV0ZzVTNSaGRHVWdQVDA5SUNkbWRXNWpkR2x2YmljZ2ZId2djR0Z5ZEdsaGJGTjBZWFJsSUQwOUlHNTFiR3dwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKM05sZEZOMFlYUmxLQzR1TGlrNklIUmhhMlZ6SUdGdUlHOWlhbVZqZENCdlppQnpkR0YwWlNCMllYSnBZV0pzWlhNZ2RHOGdkWEJrWVhSbElHOXlJR0VnSnlBcklDZG1kVzVqZEdsdmJpQjNhR2xqYUNCeVpYUjFjbTV6SUdGdUlHOWlhbVZqZENCdlppQnpkR0YwWlNCMllYSnBZV0pzWlhNdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIQmhjblJwWVd4VGRHRjBaU0FoUFNCdWRXeHNMQ0FuYzJWMFUzUmhkR1VvTGk0dUtUb2dXVzkxSUhCaGMzTmxaQ0JoYmlCMWJtUmxabWx1WldRZ2IzSWdiblZzYkNCemRHRjBaU0J2WW1wbFkzUTdJQ2NnS3lBbmFXNXpkR1ZoWkN3Z2RYTmxJR1p2Y21ObFZYQmtZWFJsS0NrdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnZEdocGN5NTFjR1JoZEdWeUxtVnVjWFZsZFdWVFpYUlRkR0YwWlNoMGFHbHpMQ0J3WVhKMGFXRnNVM1JoZEdVcE8xeHVJQ0JwWmlBb1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVTmhiR3hpWVdOcktIUm9hWE1zSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkdiM0pqWlhNZ1lXNGdkWEJrWVhSbExpQlVhR2x6SUhOb2IzVnNaQ0J2Ym14NUlHSmxJR2x1ZG05clpXUWdkMmhsYmlCcGRDQnBjeUJyYm05M2JpQjNhWFJvWEc0Z0tpQmpaWEowWVdsdWRIa2dkR2hoZENCM1pTQmhjbVVnS2lwdWIzUXFLaUJwYmlCaElFUlBUU0IwY21GdWMyRmpkR2x2Ymk1Y2JpQXFYRzRnS2lCWmIzVWdiV0Y1SUhkaGJuUWdkRzhnWTJGc2JDQjBhR2x6SUhkb1pXNGdlVzkxSUd0dWIzY2dkR2hoZENCemIyMWxJR1JsWlhCbGNpQmhjM0JsWTNRZ2IyWWdkR2hsWEc0Z0tpQmpiMjF3YjI1bGJuUW5jeUJ6ZEdGMFpTQm9ZWE1nWTJoaGJtZGxaQ0JpZFhRZ1lITmxkRk4wWVhSbFlDQjNZWE1nYm05MElHTmhiR3hsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSGRwYkd3Z2JtOTBJR2x1ZG05clpTQmdjMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsWUN3Z1luVjBJR2wwSUhkcGJHd2dhVzUyYjJ0bFhHNGdLaUJnWTI5dGNHOXVaVzUwVjJsc2JGVndaR0YwWldBZ1lXNWtJR0JqYjIxd2IyNWxiblJFYVdSVmNHUmhkR1ZnTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCRFlXeHNaV1FnWVdaMFpYSWdkWEJrWVhSbElHbHpJR052YlhCc1pYUmxMbHh1SUNvZ1FHWnBibUZzWEc0Z0tpQkFjSEp2ZEdWamRHVmtYRzRnS2k5Y2JsSmxZV04wUTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlM1bWIzSmpaVlZ3WkdGMFpTQTlJR1oxYm1OMGFXOXVJQ2hqWVd4c1ltRmpheWtnZTF4dUlDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVVp2Y21ObFZYQmtZWFJsS0hSb2FYTXBPMXh1SUNCcFppQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVU5oYkd4aVlXTnJLSFJvYVhNc0lHTmhiR3hpWVdOcktUdGNiaUFnZlZ4dWZUdGNibHh1THlvcVhHNGdLaUJFWlhCeVpXTmhkR1ZrSUVGUVNYTXVJRlJvWlhObElFRlFTWE1nZFhObFpDQjBieUJsZUdsemRDQnZiaUJqYkdGemMybGpJRkpsWVdOMElHTnNZWE56WlhNZ1luVjBJSE5wYm1ObFhHNGdLaUIzWlNCM2IzVnNaQ0JzYVd0bElIUnZJR1JsY0hKbFkyRjBaU0IwYUdWdExDQjNaU2R5WlNCdWIzUWdaMjlwYm1jZ2RHOGdiVzkyWlNCMGFHVnRJRzkyWlhJZ2RHOGdkR2hwYzF4dUlDb2diVzlrWlhKdUlHSmhjMlVnWTJ4aGMzTXVJRWx1YzNSbFlXUXNJSGRsSUdSbFptbHVaU0JoSUdkbGRIUmxjaUIwYUdGMElIZGhjbTV6SUdsbUlHbDBKM01nWVdOalpYTnpaV1F1WEc0Z0tpOWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUhaaGNpQmtaWEJ5WldOaGRHVmtRVkJKY3lBOUlIdGNiaUFnSUNCblpYUkVUMDFPYjJSbE9pQmJKMmRsZEVSUFRVNXZaR1VuTENBblZYTmxJRkpsWVdOMFJFOU5MbVpwYm1SRVQwMU9iMlJsS0dOdmJYQnZibVZ1ZENrZ2FXNXpkR1ZoWkM0blhTeGNiaUFnSUNCcGMwMXZkVzUwWldRNklGc25hWE5OYjNWdWRHVmtKeXdnSjBsdWMzUmxZV1FzSUcxaGEyVWdjM1Z5WlNCMGJ5QmpiR1ZoYmlCMWNDQnpkV0p6WTNKcGNIUnBiMjV6SUdGdVpDQndaVzVrYVc1bklISmxjWFZsYzNSeklHbHVJQ2NnS3lBblkyOXRjRzl1Wlc1MFYybHNiRlZ1Ylc5MWJuUWdkRzhnY0hKbGRtVnVkQ0J0WlcxdmNua2diR1ZoYTNNdUoxMHNYRzRnSUNBZ2NtVndiR0ZqWlZCeWIzQnpPaUJiSjNKbGNHeGhZMlZRY205d2N5Y3NJQ2RKYm5OMFpXRmtMQ0JqWVd4c0lISmxibVJsY2lCaFoyRnBiaUJoZENCMGFHVWdkRzl3SUd4bGRtVnNMaWRkTEZ4dUlDQWdJSEpsY0d4aFkyVlRkR0YwWlRvZ1d5ZHlaWEJzWVdObFUzUmhkR1VuTENBblVtVm1ZV04wYjNJZ2VXOTFjaUJqYjJSbElIUnZJSFZ6WlNCelpYUlRkR0YwWlNCcGJuTjBaV0ZrSUNoelpXVWdKeUFySUNkb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdlptRmpaV0p2YjJzdmNtVmhZM1F2YVhOemRXVnpMek15TXpZcExpZGRMRnh1SUNBZ0lITmxkRkJ5YjNCek9pQmJKM05sZEZCeWIzQnpKeXdnSjBsdWMzUmxZV1FzSUdOaGJHd2djbVZ1WkdWeUlHRm5ZV2x1SUdGMElIUm9aU0IwYjNBZ2JHVjJaV3d1SjExY2JpQWdmVHRjYmlBZ2RtRnlJR1JsWm1sdVpVUmxjSEpsWTJGMGFXOXVWMkZ5Ym1sdVp5QTlJR1oxYm1OMGFXOXVJQ2h0WlhSb2IyUk9ZVzFsTENCcGJtWnZLU0I3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaFNaV0ZqZEVOdmJYQnZibVZ1ZEM1d2NtOTBiM1I1Y0dVc0lHMWxkR2h2WkU1aGJXVXNJSHRjYmlBZ0lDQWdJQ0FnWjJWME9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDY2xjeWd1TGk0cElHbHpJR1JsY0hKbFkyRjBaV1FnYVc0Z2NHeGhhVzRnU21GMllWTmpjbWx3ZENCU1pXRmpkQ0JqYkdGemMyVnpMaUFsY3ljc0lHbHVabTliTUYwc0lHbHVabTliTVYwcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0hncElIdGNiaUFnSUNBZ0lDOHZJRWxGSUhkcGJHd2dabUZwYkNCdmJpQmtaV1pwYm1WUWNtOXdaWEowZVNBb1pYTTFMWE5vYVcwdmMyaGhiU0IwYjI4cFhHNGdJQ0FnZlZ4dUlDQjlPMXh1SUNCbWIzSWdLSFpoY2lCbWJrNWhiV1VnYVc0Z1pHVndjbVZqWVhSbFpFRlFTWE1wSUh0Y2JpQWdJQ0JwWmlBb1pHVndjbVZqWVhSbFpFRlFTWE11YUdGelQzZHVVSEp2Y0dWeWRIa29abTVPWVcxbEtTa2dlMXh1SUNBZ0lDQWdaR1ZtYVc1bFJHVndjbVZqWVhScGIyNVhZWEp1YVc1bktHWnVUbUZ0WlN3Z1pHVndjbVZqWVhSbFpFRlFTWE5iWm01T1lXMWxYU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkRiMjF3YjI1bGJuUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBpbmplY3RlZCA9IGZhbHNlO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGVudmlyb25tZW50IGRlcGVuZGVudCBjbGVhbnVwIGhvb2suIChzZXJ2ZXIgdnMuXG4gICAqIGJyb3dzZXIgZXRjKS4gRXhhbXBsZTogQSBicm93c2VyIHN5c3RlbSBjYWNoZXMgRE9NIG5vZGVzIGJhc2VkIG9uIGNvbXBvbmVudFxuICAgKiBJRCBhbmQgbXVzdCByZW1vdmUgdGhhdCBjYWNoZSBlbnRyeSB3aGVuIHRoaXMgaW5zdGFuY2UgaXMgdW5tb3VudGVkLlxuICAgKi9cbiAgdW5tb3VudElERnJvbUVudmlyb25tZW50OiBudWxsLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3Igc3dhcHBpbmcgb3V0IG1vdW50IGltYWdlcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAqIHRoZSB0cmVlLlxuICAgKi9cbiAgcmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDogbnVsbCxcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRhdGVzLiBXaWxsXG4gICAqIGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29tcG9uZW50cy5cbiAgICovXG4gIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IG51bGwsXG5cbiAgaW5qZWN0aW9uOiB7XG4gICAgaW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkge1xuICAgICAgISFpbmplY3RlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDogaW5qZWN0RW52aXJvbm1lbnQoKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnVubW91bnRJREZyb21FbnZpcm9ubWVudCA9IGVudmlyb25tZW50LnVubW91bnRJREZyb21FbnZpcm9ubWVudDtcbiAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRCA9IGVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMgPSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzO1xuICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkRiMjF3YjI1bGJuUkZiblpwY205dWJXVnVkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFMExUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JEYjIxd2IyNWxiblJGYm5acGNtOXViV1Z1ZEZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNTJZWElnYVc1cVpXTjBaV1FnUFNCbVlXeHpaVHRjYmx4dWRtRnlJRkpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUWdQU0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTl3ZEdsdmJtRnNiSGtnYVc1cVpXTjBZV0pzWlNCbGJuWnBjbTl1YldWdWRDQmtaWEJsYm1SbGJuUWdZMnhsWVc1MWNDQm9iMjlyTGlBb2MyVnlkbVZ5SUhaekxseHVJQ0FnS2lCaWNtOTNjMlZ5SUdWMFl5a3VJRVY0WVcxd2JHVTZJRUVnWW5KdmQzTmxjaUJ6ZVhOMFpXMGdZMkZqYUdWeklFUlBUU0J1YjJSbGN5QmlZWE5sWkNCdmJpQmpiMjF3YjI1bGJuUmNiaUFnSUNvZ1NVUWdZVzVrSUcxMWMzUWdjbVZ0YjNabElIUm9ZWFFnWTJGamFHVWdaVzUwY25rZ2QyaGxiaUIwYUdseklHbHVjM1JoYm1ObElHbHpJSFZ1Ylc5MWJuUmxaQzVjYmlBZ0lDb3ZYRzRnSUhWdWJXOTFiblJKUkVaeWIyMUZiblpwY205dWJXVnVkRG9nYm5Wc2JDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1QzQjBhVzl1WVd4c2VTQnBibXBsWTNSaFlteGxJR2h2YjJzZ1ptOXlJSE4zWVhCd2FXNW5JRzkxZENCdGIzVnVkQ0JwYldGblpYTWdhVzRnZEdobElHMXBaR1JzWlNCdlpseHVJQ0FnS2lCMGFHVWdkSEpsWlM1Y2JpQWdJQ292WEc0Z0lISmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRUo1U1VRNklHNTFiR3dzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTl3ZEdsdmJtRnNiSGtnYVc1cVpXTjBZV0pzWlNCb2IyOXJJR1p2Y2lCd2NtOWpaWE56YVc1bklHRWdjWFZsZFdVZ2IyWWdZMmhwYkdRZ2RYQmtZWFJsY3k0Z1YybHNiRnh1SUNBZ0tpQnNZWFJsY2lCdGIzWmxJR2x1ZEc4Z1RYVnNkR2xEYUdsc1pFTnZiWEJ2Ym1WdWRITXVYRzRnSUNBcUwxeHVJQ0J3Y205alpYTnpRMmhwYkdSeVpXNVZjR1JoZEdWek9pQnVkV3hzTEZ4dVhHNGdJR2x1YW1WamRHbHZiam9nZTF4dUlDQWdJR2x1YW1WamRFVnVkbWx5YjI1dFpXNTBPaUJtZFc1amRHbHZiaUFvWlc1MmFYSnZibTFsYm5RcElIdGNiaUFnSUNBZ0lDRWhhVzVxWldOMFpXUWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblE2SUdsdWFtVmpkRVZ1ZG1seWIyNXRaVzUwS0NrZ1kyRnVJRzl1YkhrZ1ltVWdZMkZzYkdWa0lHOXVZMlV1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdVbVZoWTNSRGIyMXdiMjVsYm5SRmJuWnBjbTl1YldWdWRDNTFibTF2ZFc1MFNVUkdjbTl0Ulc1MmFYSnZibTFsYm5RZ1BTQmxiblpwY205dWJXVnVkQzUxYm0xdmRXNTBTVVJHY205dFJXNTJhWEp2Ym0xbGJuUTdYRzRnSUNBZ0lDQlNaV0ZqZEVOdmJYQnZibVZ1ZEVWdWRtbHliMjV0Wlc1MExuSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRUo1U1VRZ1BTQmxiblpwY205dWJXVnVkQzV5WlhCc1lXTmxUbTlrWlZkcGRHaE5ZWEpyZFhCQ2VVbEVPMXh1SUNBZ0lDQWdVbVZoWTNSRGIyMXdiMjVsYm5SRmJuWnBjbTl1YldWdWRDNXdjbTlqWlhOelEyaHBiR1J5Wlc1VmNHUmhkR1Z6SUQwZ1pXNTJhWEp2Ym0xbGJuUXVjSEp2WTJWemMwTm9hV3hrY21WdVZYQmtZWFJsY3p0Y2JpQWdJQ0FnSUdsdWFtVmpkR1ZrSUQwZ2RISjFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRU52YlhCdmJtVnVkRVZ1ZG1seWIyNXRaVzUwT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9ucycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcycpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpIHtcbiAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwgbnVsbDtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gU3RhdGVsZXNzQ29tcG9uZW50KENvbXBvbmVudCkge31cblN0YXRlbGVzc0NvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gIHJldHVybiBDb21wb25lbnQodGhpcy5wcm9wcywgdGhpcy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIpO1xufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21wb3NpdGUgQ29tcG9uZW50IC0tLS0tLS0tLS0tLS0tLS0tLVxuICpcbiAqIC0gY29uc3RydWN0b3I6IEluaXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJldGFpbmVkLlxuICogICAtIGNvbXBvbmVudFdpbGxNb3VudFxuICogICAtIHJlbmRlclxuICogICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9yc11cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyXVxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlkTW91bnRdXG4gKiAgICAgLSBjb21wb25lbnREaWRNb3VudFxuICpcbiAqICAgICAgIFVwZGF0ZSBQaGFzZXM6XG4gKiAgICAgICAtIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVudCB1cGRhdGVkKVxuICogICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBkYXRlXG4gKiAgICAgICAgICAgLSByZW5kZXJcbiAqICAgICAgICAgICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNlc11cbiAqICAgICAgICAgLSBjb21wb25lbnREaWRVcGRhdGVcbiAqXG4gKiAgICAgLSBjb21wb25lbnRXaWxsVW5tb3VudFxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdXG4gKiAgIC0gW2NoaWxkcmVuIGRlc3Ryb3llZF1cbiAqIC0gKGRlc3Ryb3llZCk6IFRoZSBpbnN0YW5jZSBpcyBub3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0MuXG4gKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIEFuIGluY3JlbWVudGluZyBJRCBhc3NpZ25lZCB0byBlYWNoIGNvbXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXNcbiAqIHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBuZXh0TW91bnRJRCA9IDE7XG5cbi8qKlxuICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9XG4gKi9cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudE1peGluID0ge1xuXG4gIC8qKlxuICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZVxuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuXG4gICAgdGhpcy5fY29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5fbW91bnRPcmRlciA9IDA7XG4gICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcblxuICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBkYXRlUXVldWUuXG4gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSByb290SUQ7XG5cbiAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlzLl9wcm9jZXNzUHJvcHModGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMpO1xuICAgIHZhciBwdWJsaWNDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRleHQoY29udGV4dCk7XG5cbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHB1YmxpYyBjbGFzc1xuICAgIHZhciBpbnN0O1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cbiAgICAvLyBUaGlzIGlzIGEgd2F5IHRvIGRldGVjdCBpZiBDb21wb25lbnQgaXMgYSBzdGF0ZWxlc3MgYXJyb3cgZnVuY3Rpb25cbiAgICAvLyBjb21wb25lbnQsIHdoaWNoIGlzIG5vdCBuZXdhYmxlLiBJdCBtaWdodCBub3QgYmUgMTAwJSByZWxpYWJsZSBidXQgaXNcbiAgICAvLyBzb21ldGhpbmcgd2UgY2FuIGRvIHVudGlsIHdlIHN0YXJ0IGRldGVjdGluZyB0aGF0IENvbXBvbmVudCBleHRlbmRzXG4gICAgLy8gUmVhY3QuQ29tcG9uZW50LiBXZSBhbHJlYWR5IGFzc3VtZSB0aGF0IHR5cGVvZiBDb21wb25lbnQgPT09ICdmdW5jdGlvbicuXG4gICAgdmFyIGNhbkluc3RhbnRpYXRlID0gKCdwcm90b3R5cGUnIGluIENvbXBvbmVudCk7XG5cbiAgICBpZiAoY2FuSW5zdGFudGlhdGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluc3QgPSBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCBSZWFjdFVwZGF0ZVF1ZXVlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdCA9IG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIFJlYWN0VXBkYXRlUXVldWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2FuSW5zdGFudGlhdGUgfHwgaW5zdCA9PT0gbnVsbCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoaW5zdCkpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3Q7XG4gICAgICBpbnN0ID0gbmV3IFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCwgYnV0IGFkZCBhbiBlYXJseVxuICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBkZWJ1Z2dpbmdcbiAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSByZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTogeW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBkZWZpbmUgYHJlbmRlcmAsIHJldHVybmVkICcgKyAnbnVsbC9mYWxzZSBmcm9tIGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgb3IgdHJpZWQgdG8gcmVuZGVyIGFuICcgKyAnZWxlbWVudCB3aG9zZSB0eXBlIGlzIGEgZnVuY3Rpb24gdGhhdCBpc25cXCd0IGEgUmVhY3QgY29tcG9uZW50LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzdXBwb3J0IEVTNiBpbmhlcml0aW5nIGZyb20gUmVhY3QuQ29tcG9uZW50LCB0aGUgbW9kdWxlIHBhdHRlcm4sXG4gICAgICAgIC8vIGFuZCBzdGF0ZWxlc3MgY29tcG9uZW50cywgYnV0IG5vdCBFUzYgY2xhc3NlcyB0aGF0IGRvbid0IGV4dGVuZFxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCB8fCAhY2FuSW5zdGFudGlhdGUgfHwgIShpbnN0IGluc3RhbmNlb2YgQ29tcG9uZW50KSwgJyVzKC4uLik6IFJlYWN0IGNvbXBvbmVudCBjbGFzc2VzIG11c3QgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAgaW4gdGhlIGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3JcbiAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuXG4gICAgaW5zdC5wcm9wcyA9IHB1YmxpY1Byb3BzO1xuICAgIGluc3QuY29udGV4dCA9IHB1YmxpY0NvbnRleHQ7XG4gICAgaW5zdC5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgaW5zdC51cGRhdGVyID0gUmVhY3RVcGRhdGVRdWV1ZTtcblxuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdDtcblxuICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIGJhY2sgdG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG4gICAgUmVhY3RJbnN0YW5jZU1hcC5zZXQoaW5zdCwgdGhpcyk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gU2luY2UgcGxhaW4gSlMgY2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBzcGVjaWFsIGluaXRpYWxpemF0aW9uXG4gICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24gZXJyb3JzIGVhcmx5LiBUaGVyZWZvcmUsIHdlIGhhdmUgdG9cbiAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5zdGVhZC5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldEluaXRpYWxTdGF0ZSB8fCBpbnN0LmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldEluaXRpYWxTdGF0ZSB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdEaWQgeW91IG1lYW4gdG8gZGVmaW5lIGEgc3RhdGUgcHJvcGVydHkgaW5zdGVhZD8nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQcm9wcyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QucHJvcFR5cGVzLCAncHJvcFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5jb250ZXh0VHlwZXMsICdjb250ZXh0VHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhICcgKyAnc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBjb250ZXh0VHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3VudCAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRVbm1vdW50KCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAnRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdC5zdGF0ZTtcbiAgICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluc3Quc3RhdGUgPSBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgIH1cbiAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsTW91bnQpIHtcbiAgICAgIGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7XG4gICAgICAvLyBXaGVuIG1vdW50aW5nLCBjYWxscyB0byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxsTW91bnRgIHdpbGwgc2V0XG4gICAgICAvLyBgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWVgIHdpdGhvdXQgdHJpZ2dlcmluZyBhIHJlLXJlbmRlci5cbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSkge1xuICAgICAgICBpbnN0LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpbnN0LnByb3BzLCBpbnN0LmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vdCBhIHN0YXRlbGVzcyBjb21wb25lbnQsIHdlIG5vdyByZW5kZXJcbiAgICBpZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChyZW5kZXJlZEVsZW1lbnQpO1xuXG4gICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgcm9vdElELCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgaWYgKGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRNb3VudCwgaW5zdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCkge1xuICAgICAgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuICAgIH1cblxuICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuXG4gICAgLy8gUmVzZXQgcGVuZGluZyBmaWVsZHNcbiAgICAvLyBFdmVuIGlmIHRoaXMgY29tcG9uZW50IGlzIHNjaGVkdWxlZCBmb3IgYW5vdGhlciB1cGRhdGUgaW4gUmVhY3RVcGRhdGVzLFxuICAgIC8vIGl0IHdvdWxkIHN0aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0LlxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXG4gICAgLy8gVGhlc2UgZmllbGRzIGRvIG5vdCByZWFsbHkgbmVlZCB0byBiZSByZXNldCBzaW5jZSB0aGlzIG9iamVjdCBpcyBub1xuICAgIC8vIGxvbmdlciBhY2Nlc3NpYmxlLlxuICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBEZWxldGUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSB0byB0aGlzIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG4gICAgLy8gd2hpY2ggYWxsb3cgdGhlIGludGVybmFscyB0byBiZSBwcm9wZXJseSBjbGVhbmVkIHVwIGV2ZW4gaWYgdGhlIHVzZXJcbiAgICAvLyBsZWFrcyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNlLlxuICAgIFJlYWN0SW5zdGFuY2VNYXAucmVtb3ZlKGluc3QpO1xuXG4gICAgLy8gU29tZSBleGlzdGluZyBjb21wb25lbnRzIHJlbHkgb24gaW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVlblxuICAgIC8vIGRlc3Ryb3llZCAoaW4gZXZlbnQgaGFuZGxlcnMpLlxuICAgIC8vIFRPRE86IGluc3QucHJvcHMgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3QuY29udGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBgY29udGV4dFR5cGVzYFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX21hc2tDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0ID0gbnVsbDtcbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29udGV4dFR5cGVzID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcbiAgICBpZiAoIWNvbnRleHRUeXBlcykge1xuICAgICAgcmV0dXJuIGVtcHR5T2JqZWN0O1xuICAgIH1cbiAgICBtYXNrZWRDb250ZXh0ID0ge307XG4gICAgZm9yICh2YXIgY29udGV4dE5hbWUgaW4gY29udGV4dFR5cGVzKSB7XG4gICAgICBtYXNrZWRDb250ZXh0W2NvbnRleHROYW1lXSA9IGNvbnRleHRbY29udGV4dE5hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gbWFza2VkQ29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluXG4gICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNzZXJ0cyB0aGF0IHRoZXkgYXJlIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0ID0gdGhpcy5fbWFza0NvbnRleHQoY29udGV4dCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0VHlwZXMpIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQcm9wVHlwZXMoQ29tcG9uZW50LmNvbnRleHRUeXBlcywgbWFza2VkQ29udGV4dCwgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXJyZW50Q29udGV4dFxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQgJiYgaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcbiAgICBpZiAoY2hpbGRDb250ZXh0KSB7XG4gICAgICAhKHR5cGVvZiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKTogY2hpbGRDb250ZXh0VHlwZXMgbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvICcgKyAndXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJvcFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0LCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLmNoaWxkQ29udGV4dCk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuICAgICAgICAhKG5hbWUgaW4gQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKToga2V5IFwiJXNcIiBpcyBub3QgZGVmaW5lZCBpbiBjaGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwgY2hpbGRDb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgcHJvcHMgYnkgc2V0dGluZyBkZWZhdWx0IHZhbHVlcyBmb3IgdW5zcGVjaWZpZWQgcHJvcHMgYW5kXG4gICAqIGFzc2VydGluZyB0aGF0IHRoZSBwcm9wcyBhcmUgdmFsaWQuIERvZXMgbm90IG11dGF0ZSBpdHMgYXJndW1lbnQ7IHJldHVybnNcbiAgICogYSBuZXcgcHJvcHMgb2JqZWN0IHdpdGggZGVmYXVsdHMgbWVyZ2VkIGluLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UHJvcHNcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NQcm9wczogZnVuY3Rpb24gKG5ld1Byb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgICAgaWYgKENvbXBvbmVudC5wcm9wVHlwZXMpIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQcm9wVHlwZXMoQ29tcG9uZW50LnByb3BUeXBlcywgbmV3UHJvcHMsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdQcm9wcztcbiAgfSxcblxuICAvKipcbiAgICogQXNzZXJ0IHRoYXQgdGhlIHByb3BzIGFyZSB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcFR5cGVzIE1hcCBvZiBwcm9wIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uIChwcm9wVHlwZXMsIHByb3BzLCBsb2NhdGlvbikge1xuICAgIC8vIFRPRE86IFN0b3AgdmFsaWRhdGluZyBwcm9wIHR5cGVzIGhlcmUgYW5kIG9ubHkgdXNlIHRoZSBlbGVtZW50XG4gICAgLy8gdmFsaWRhdGlvbi5cbiAgICB2YXIgY29tcG9uZW50TmFtZSA9IHRoaXMuZ2V0TmFtZSgpO1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICAhKHR5cGVvZiBwcm9wVHlwZXNbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSAnICsgJ2Zyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gZXh0ZW5kIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgZXJyb3JzIGluXG4gICAgICAgICAgLy8gdG9wLWxldmVsIHJlbmRlciBjYWxscywgc28gSSdtIGFic3RyYWN0aW5nIGl0IGF3YXkgaW50b1xuICAgICAgICAgIC8vIGEgZnVuY3Rpb24gdG8gbWluaW1pemUgcmVmYWN0b3JpbmcgaW4gdGhlIGZ1dHVyZVxuICAgICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSh0aGlzKTtcblxuICAgICAgICAgIGlmIChsb2NhdGlvbiA9PT0gUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKSB7XG4gICAgICAgICAgICAvLyBQcmVmYWNlIGdpdmVzIHVzIHNvbWV0aGluZyB0byBibGFja2xpc3QgaW4gd2FybmluZyBtb2R1bGVcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgQ29udGV4dCBUeXBlczogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgcHJldkNvbnRleHQgPSB0aGlzLl9jb250ZXh0O1xuXG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICogSWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3IgYF9wZW5kaW5nRm9yY2VVcGRhdGVgXG4gICAqIGlzIHNldCwgdXBkYXRlIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbikge1xuICAgIGlmICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlzLl9wZW5kaW5nRWxlbWVudCB8fCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSAhPT0gbnVsbCB8fCB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2NvbnRleHQsIHRoaXMuX2NvbnRleHQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kXG4gICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFzc3VtaW5nIHRoZSB1cGRhdGUgaXNuJ3RcbiAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRhdGUgbGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTVxuICAgKiByZXByZXNlbnRhdGlvbiBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0UGFyZW50RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0LCBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIHZhciBuZXh0Q29udGV4dCA9IHRoaXMuX2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQgPyBpbnN0LmNvbnRleHQgOiB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICB2YXIgbmV4dFByb3BzO1xuXG4gICAgLy8gRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHByb3BzIHVwZGF0ZSB2ZXJzdXMgYSBzaW1wbGUgc3RhdGUgdXBkYXRlXG4gICAgaWYgKHByZXZQYXJlbnRFbGVtZW50ID09PSBuZXh0UGFyZW50RWxlbWVudCkge1xuICAgICAgLy8gU2tpcCBjaGVja2luZyBwcm9wIHR5cGVzIGFnYWluIC0tIHdlIGRvbid0IHJlYWQgaW5zdC5wcm9wcyB0byBhdm9pZFxuICAgICAgLy8gd2FybmluZyBmb3IgRE9NIGNvbXBvbmVudCBwcm9wcyBpbiB0aGlzIHVwZ3JhZGVcbiAgICAgIG5leHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50LnByb3BzO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0UHJvcHMgPSB0aGlzLl9wcm9jZXNzUHJvcHMobmV4dFBhcmVudEVsZW1lbnQucHJvcHMpO1xuICAgICAgLy8gQW4gdXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldFxuICAgICAgLy8gX3BlbmRpbmdTdGF0ZVF1ZXVlIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0YXRlIHVwZGF0ZXMgZ2V0c1xuICAgICAgLy8gaW1tZWRpYXRlbHkgcmVjb25jaWxlZCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGJhdGNoLlxuXG4gICAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7XG4gICAgICAgIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblxuICAgIHZhciBzaG91bGRVcGRhdGUgPSB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgfHwgIWluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlIHx8IGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIHNob3VsZFVwZGF0ZSAhPT0gJ3VuZGVmaW5lZCcsICclcy5zaG91bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVkIGluc3RlYWQgb2YgYSAnICsgJ2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1ZSBvciBmYWxzZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcbiAgICAgIC8vIFdpbGwgc2V0IGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC5cbiAgICAgIHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobmV4dFBhcmVudEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIG5leHRVbm1hc2tlZENvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQgdGhhdCBhIGNvbXBvbmVudCBzaG91bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudFxuICAgICAgLy8gdG8gc2V0IHByb3BzIGFuZCBzdGF0ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVwZGF0ZS5cbiAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7XG4gICAgICB0aGlzLl9jb250ZXh0ID0gbmV4dFVubWFza2VkQ29udGV4dDtcbiAgICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIF9wcm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciBxdWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlO1xuICAgIHZhciByZXBsYWNlID0gdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXG4gICAgaWYgKCFxdWV1ZSkge1xuICAgICAgcmV0dXJuIGluc3Quc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHJlcGxhY2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gcXVldWVbMF07XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IGFzc2lnbih7fSwgcmVwbGFjZSA/IHF1ZXVlWzBdIDogaW5zdC5zdGF0ZSk7XG4gICAgZm9yICh2YXIgaSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IHF1ZXVlW2ldO1xuICAgICAgYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09ICdmdW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4dCkgOiBwYXJ0aWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90aWZpZXMgZGVsZWdhdGUgbWV0aG9kcyBvZiB1cGRhdGUgYW5kXG4gICAqIHBlcmZvcm1zIHVwZGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQgZWxlbWVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4dCBvYmplY3QgdG8gc2V0IGFzIHN0YXRlLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0IE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHVubWFza2VkQ29udGV4dFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29tcG9uZW50RGlkVXBkYXRlKTtcbiAgICB2YXIgcHJldlByb3BzO1xuICAgIHZhciBwcmV2U3RhdGU7XG4gICAgdmFyIHByZXZDb250ZXh0O1xuICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcbiAgICAgIHByZXZQcm9wcyA9IGluc3QucHJvcHM7XG4gICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlO1xuICAgICAgcHJldkNvbnRleHQgPSBpbnN0LmNvbnRleHQ7XG4gICAgfVxuXG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZSkge1xuICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLl9jb250ZXh0ID0gdW5tYXNrZWRDb250ZXh0O1xuICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblxuICAgIHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpO1xuXG4gICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIGluc3QpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ2FsbCB0aGUgY29tcG9uZW50J3MgYHJlbmRlcmAgbWV0aG9kIGFuZCB1cGRhdGUgdGhlIERPTSBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF91cGRhdGVSZW5kZXJlZENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZDb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgIHZhciBwcmV2UmVuZGVyZWRFbGVtZW50ID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgbmV4dFJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNvbXBvbmVudEluc3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50LCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZXNlIHR3byBJRHMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lISBCdXQgbm90aGluZyBzaG91bGQgcmVseSBvbiB0aGF0LlxuICAgICAgdmFyIHRoaXNJRCA9IHRoaXMuX3Jvb3ROb2RlSUQ7XG4gICAgICB2YXIgcHJldkNvbXBvbmVudElEID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9yb290Tm9kZUlEO1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNvbXBvbmVudEluc3RhbmNlKTtcblxuICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRSZW5kZXJlZEVsZW1lbnQpO1xuICAgICAgdmFyIG5leHRNYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQsIHRoaXNJRCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuICAgICAgdGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRChwcmV2Q29tcG9uZW50SUQsIG5leHRNYXJrdXApO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgX3JlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50SUQsIG5leHRNYXJrdXApIHtcbiAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQocHJldkNvbXBvbmVudElELCBuZXh0TWFya3VwKTtcbiAgfSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIHJlbmRlcmVkQ29tcG9uZW50ID0gaW5zdC5yZW5kZXIoKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICBpZiAodHlwZW9mIHJlbmRlcmVkQ29tcG9uZW50ID09PSAndW5kZWZpbmVkJyAmJiBpbnN0LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZENvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVuZGVyZWRDb21wb25lbnQ7XG4gICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7XG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgICAhKFxuICAgIC8vIFRPRE86IEFuIGBpc1ZhbGlkTm9kZWAgZnVuY3Rpb24gd291bGQgcHJvYmFibHkgYmUgbW9yZSBhcHByb3ByaWF0ZVxuICAgIHJlbmRlcmVkQ29tcG9uZW50ID09PSBudWxsIHx8IHJlbmRlcmVkQ29tcG9uZW50ID09PSBmYWxzZSB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQocmVuZGVyZWRDb21wb25lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdENvbXBvbmVudCBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgJyArICdyZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiByZW5kZXJlZENvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogTGF6aWx5IGFsbG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS5cbiAgICogQHBhcmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXR0YWNoUmVmOiBmdW5jdGlvbiAocmVmLCBjb21wb25lbnQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGhhdmUgcmVmcy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHB1YmxpY0NvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwdWJsaWNDb21wb25lbnRJbnN0YW5jZSAhPSBudWxsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRlZCBieSAlcykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYsIGNvbXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIHJlZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0LnJlZnM7XG4gICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIgcmVmcyA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzO1xuICAgIGRlbGV0ZSByZWZzW3JlZl07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0XG4gICAqIGluIGVycm9yIG1lc3NhZ2VzLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXRcbiAgICogaXMgZXhwb3NlZCBieSByZWZzIGFuZCByZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0ZWxlc3NcbiAgICogY29tcG9uZW50cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICBpZiAoaW5zdCBpbnN0YW5jZW9mIFN0YXRlbGVzc0NvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnN0O1xuICB9LFxuXG4gIC8vIFN0dWJcbiAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGxcblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50TWl4aW4sICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIHtcbiAgbW91bnRDb21wb25lbnQ6ICdtb3VudENvbXBvbmVudCcsXG4gIHVwZGF0ZUNvbXBvbmVudDogJ3VwZGF0ZUNvbXBvbmVudCcsXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ICdfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50J1xufSk7XG5cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHtcblxuICBNaXhpbjogUmVhY3RDb21wb3NpdGVDb21wb25lbnRNaXhpblxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5SY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVOdmJYQnZibVZ1ZEVWdWRtbHliMjV0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SnlrN1hHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5RbktUdGNiblpoY2lCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVsdWMzUmhibU5sVFdGd0p5azdYRzUyWVhJZ1VtVmhZM1JRWlhKbUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQmxjbVluS1R0Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1eklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1ekp5azdYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Yms1aGJXVnpKeWs3WEc1MllYSWdVbVZoWTNSU1pXTnZibU5wYkdWeUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGSmxZMjl1WTJsc1pYSW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlZGMVpYVmxKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmxiWEIwZVU5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJWdGNIUjVUMkpxWldOMEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdjMmh2ZFd4a1ZYQmtZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDNOb2IzVnNaRlZ3WkdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVablZ1WTNScGIyNGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLR052YlhCdmJtVnVkQ2tnZTF4dUlDQjJZWElnYjNkdVpYSWdQU0JqYjIxd2IyNWxiblF1WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNpQjhmQ0J1ZFd4c08xeHVJQ0JwWmlBb2IzZHVaWElwSUh0Y2JpQWdJQ0IyWVhJZ2JtRnRaU0E5SUc5M2JtVnlMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQnBaaUFvYm1GdFpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY2dRMmhsWTJzZ2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRZ2IyWWdZQ2NnS3lCdVlXMWxJQ3NnSjJBdUp6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUNjbk8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCVGRHRjBaV3hsYzNORGIyMXdiMjVsYm5Rb1EyOXRjRzl1Wlc1MEtTQjdmVnh1VTNSaGRHVnNaWE56UTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlM1eVpXNWtaWElnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUhaaGNpQkRiMjF3YjI1bGJuUWdQU0JTWldGamRFbHVjM1JoYm1ObFRXRndMbWRsZENoMGFHbHpLUzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVkSGx3WlR0Y2JpQWdjbVYwZFhKdUlFTnZiWEJ2Ym1WdWRDaDBhR2x6TG5CeWIzQnpMQ0IwYUdsekxtTnZiblJsZUhRc0lIUm9hWE11ZFhCa1lYUmxjaWs3WEc1OU8xeHVYRzR2S2lwY2JpQXFJQzB0TFMwdExTMHRMUzB0TFMwdExTMHRMU0JVYUdVZ1RHbG1aUzFEZVdOc1pTQnZaaUJoSUVOdmJYQnZjMmwwWlNCRGIyMXdiMjVsYm5RZ0xTMHRMUzB0TFMwdExTMHRMUzB0TFMwdFhHNGdLbHh1SUNvZ0xTQmpiMjV6ZEhKMVkzUnZjam9nU1c1cGRHbGhiR2w2WVhScGIyNGdiMllnYzNSaGRHVXVJRlJvWlNCcGJuTjBZVzVqWlNCcGN5QnViM2NnY21WMFlXbHVaV1F1WEc0Z0tpQWdJQzBnWTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwWEc0Z0tpQWdJQzBnY21WdVpHVnlYRzRnS2lBZ0lDMGdXMk5vYVd4a2NtVnVKM01nWTI5dWMzUnlkV04wYjNKelhWeHVJQ29nSUNBZ0lDMGdXMk5vYVd4a2NtVnVKM01nWTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwSUdGdVpDQnlaVzVrWlhKZFhHNGdLaUFnSUNBZ0xTQmJZMmhwYkdSeVpXNG5jeUJqYjIxd2IyNWxiblJFYVdSTmIzVnVkRjFjYmlBcUlDQWdJQ0F0SUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwWEc0Z0tseHVJQ29nSUNBZ0lDQWdWWEJrWVhSbElGQm9ZWE5sY3pwY2JpQXFJQ0FnSUNBZ0lDMGdZMjl0Y0c5dVpXNTBWMmxzYkZKbFkyVnBkbVZRY205d2N5QW9iMjVzZVNCallXeHNaV1FnYVdZZ2NHRnlaVzUwSUhWd1pHRjBaV1FwWEc0Z0tpQWdJQ0FnSUNBdElITm9iM1ZzWkVOdmJYQnZibVZ1ZEZWd1pHRjBaVnh1SUNvZ0lDQWdJQ0FnSUNBdElHTnZiWEJ2Ym1WdWRGZHBiR3hWY0dSaGRHVmNiaUFxSUNBZ0lDQWdJQ0FnSUNBdElISmxibVJsY2x4dUlDb2dJQ0FnSUNBZ0lDQWdJQzBnVzJOb2FXeGtjbVZ1SjNNZ1kyOXVjM1J5ZFdOMGIzSnpJRzl5SUhKbFkyVnBkbVVnY0hKdmNITWdjR2hoYzJWelhWeHVJQ29nSUNBZ0lDQWdJQ0F0SUdOdmJYQnZibVZ1ZEVScFpGVndaR0YwWlZ4dUlDcGNiaUFxSUNBZ0lDQXRJR052YlhCdmJtVnVkRmRwYkd4VmJtMXZkVzUwWEc0Z0tpQWdJQ0FnTFNCYlkyaHBiR1J5Wlc0bmN5QmpiMjF3YjI1bGJuUlhhV3hzVlc1dGIzVnVkRjFjYmlBcUlDQWdMU0JiWTJocGJHUnlaVzRnWkdWemRISnZlV1ZrWFZ4dUlDb2dMU0FvWkdWemRISnZlV1ZrS1RvZ1ZHaGxJR2x1YzNSaGJtTmxJR2x6SUc1dmR5QmliR0Z1YXl3Z2NtVnNaV0Z6WldRZ1lua2dVbVZoWTNRZ1lXNWtJSEpsWVdSNUlHWnZjaUJIUXk1Y2JpQXFYRzRnS2lBdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMVnh1SUNvdlhHNWNiaThxS2x4dUlDb2dRVzRnYVc1amNtVnRaVzUwYVc1bklFbEVJR0Z6YzJsbmJtVmtJSFJ2SUdWaFkyZ2dZMjl0Y0c5dVpXNTBJSGRvWlc0Z2FYUWdhWE1nYlc5MWJuUmxaQzRnVkdocGN5QnBjMXh1SUNvZ2RYTmxaQ0IwYnlCbGJtWnZjbU5sSUhSb1pTQnZjbVJsY2lCcGJpQjNhR2xqYUNCZ1VtVmhZM1JWY0dSaGRHVnpZQ0IxY0dSaGRHVnpJR1JwY25SNUlHTnZiWEJ2Ym1WdWRITXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dWRtRnlJRzVsZUhSTmIzVnVkRWxFSUQwZ01UdGNibHh1THlvcVhHNGdLaUJBYkdWdVpITWdlMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pYMWNiaUFxTDF4dWRtRnlJRkpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MFRXbDRhVzRnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVKaGMyVWdZMjl1YzNSeWRXTjBiM0lnWm05eUlHRnNiQ0JqYjIxd2IzTnBkR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnWld4bGJXVnVkRnh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCamIyNXpkSEoxWTNRNklHWjFibU4wYVc5dUlDaGxiR1Z0Wlc1MEtTQjdYRzRnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUWdQU0JsYkdWdFpXNTBPMXh1SUNBZ0lIUm9hWE11WDNKdmIzUk9iMlJsU1VRZ1BTQnVkV3hzTzF4dUlDQWdJSFJvYVhNdVgybHVjM1JoYm1ObElEMGdiblZzYkR0Y2JseHVJQ0FnSUM4dklGTmxaU0JTWldGamRGVndaR0YwWlZGMVpYVmxYRzRnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaMFZzWlcxbGJuUWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZFRkR0YwWlZGMVpYVmxJRDBnYm5Wc2JEdGNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5VbVZ3YkdGalpWTjBZWFJsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdkR2hwY3k1ZmNHVnVaR2x1WjBadmNtTmxWWEJrWVhSbElEMGdabUZzYzJVN1hHNWNiaUFnSUNCMGFHbHpMbDl5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ0E5SUc1MWJHdzdYRzVjYmlBZ0lDQjBhR2x6TGw5amIyNTBaWGgwSUQwZ2JuVnNiRHRjYmlBZ0lDQjBhR2x6TGw5dGIzVnVkRTl5WkdWeUlEMGdNRHRjYmlBZ0lDQjBhR2x6TGw5MGIzQk1aWFpsYkZkeVlYQndaWElnUFNCdWRXeHNPMXh1WEc0Z0lDQWdMeThnVTJWbElGSmxZV04wVlhCa1lYUmxjeUJoYm1RZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlM1Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blEyRnNiR0poWTJ0eklEMGdiblZzYkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzVwZEdsaGJHbDZaWE1nZEdobElHTnZiWEJ2Ym1WdWRDd2djbVZ1WkdWeWN5QnRZWEpyZFhBc0lHRnVaQ0J5WldkcGMzUmxjbk1nWlhabGJuUWdiR2x6ZEdWdVpYSnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY205dmRFbEVJRVJQVFNCSlJDQnZaaUIwYUdVZ2NtOXZkQ0J1YjJSbExseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU4VW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQM04wY21sdVozMGdVbVZ1WkdWeVpXUWdiV0Z5YTNWd0lIUnZJR0psSUdsdWMyVnlkR1ZrSUdsdWRHOGdkR2hsSUVSUFRTNWNiaUFnSUNvZ1FHWnBibUZzWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnYlc5MWJuUkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h5YjI5MFNVUXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRDQTlJR052Ym5SbGVIUTdYRzRnSUNBZ2RHaHBjeTVmYlc5MWJuUlBjbVJsY2lBOUlHNWxlSFJOYjNWdWRFbEVLeXM3WEc0Z0lDQWdkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDQTlJSEp2YjNSSlJEdGNibHh1SUNBZ0lIWmhjaUJ3ZFdKc2FXTlFjbTl3Y3lBOUlIUm9hWE11WDNCeWIyTmxjM05RY205d2N5aDBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N5azdYRzRnSUNBZ2RtRnlJSEIxWW14cFkwTnZiblJsZUhRZ1BTQjBhR2x6TGw5d2NtOWpaWE56UTI5dWRHVjRkQ2hqYjI1MFpYaDBLVHRjYmx4dUlDQWdJSFpoY2lCRGIyMXdiMjVsYm5RZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzUwZVhCbE8xeHVYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaU0IwYUdVZ2NIVmliR2xqSUdOc1lYTnpYRzRnSUNBZ2RtRnlJR2x1YzNRN1hHNGdJQ0FnZG1GeUlISmxibVJsY21Wa1JXeGxiV1Z1ZER0Y2JseHVJQ0FnSUM4dklGUm9hWE1nYVhNZ1lTQjNZWGtnZEc4Z1pHVjBaV04wSUdsbUlFTnZiWEJ2Ym1WdWRDQnBjeUJoSUhOMFlYUmxiR1Z6Y3lCaGNuSnZkeUJtZFc1amRHbHZibHh1SUNBZ0lDOHZJR052YlhCdmJtVnVkQ3dnZDJocFkyZ2dhWE1nYm05MElHNWxkMkZpYkdVdUlFbDBJRzFwWjJoMElHNXZkQ0JpWlNBeE1EQWxJSEpsYkdsaFlteGxJR0oxZENCcGMxeHVJQ0FnSUM4dklITnZiV1YwYUdsdVp5QjNaU0JqWVc0Z1pHOGdkVzUwYVd3Z2QyVWdjM1JoY25RZ1pHVjBaV04wYVc1bklIUm9ZWFFnUTI5dGNHOXVaVzUwSUdWNGRHVnVaSE5jYmlBZ0lDQXZMeUJTWldGamRDNURiMjF3YjI1bGJuUXVJRmRsSUdGc2NtVmhaSGtnWVhOemRXMWxJSFJvWVhRZ2RIbHdaVzltSUVOdmJYQnZibVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeTVjYmlBZ0lDQjJZWElnWTJGdVNXNXpkR0Z1ZEdsaGRHVWdQU0FvSjNCeWIzUnZkSGx3WlNjZ2FXNGdRMjl0Y0c5dVpXNTBLVHRjYmx4dUlDQWdJR2xtSUNoallXNUpibk4wWVc1MGFXRjBaU2tnZTF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQ0E5SUhSb2FYTTdYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdhVzV6ZENBOUlHNWxkeUJEYjIxd2IyNWxiblFvY0hWaWJHbGpVSEp2Y0hNc0lIQjFZbXhwWTBOdmJuUmxlSFFzSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1VwTzF4dUlDQWdJQ0FnSUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUNBZ0lDQWdJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnBibk4wSUQwZ2JtVjNJRU52YlhCdmJtVnVkQ2h3ZFdKc2FXTlFjbTl3Y3l3Z2NIVmliR2xqUTI5dWRHVjRkQ3dnVW1WaFkzUlZjR1JoZEdWUmRXVjFaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGallXNUpibk4wWVc1MGFXRjBaU0I4ZkNCcGJuTjBJRDA5UFNCdWRXeHNJSHg4SUdsdWMzUWdQVDA5SUdaaGJITmxJSHg4SUZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENocGJuTjBLU2tnZTF4dUlDQWdJQ0FnY21WdVpHVnlaV1JGYkdWdFpXNTBJRDBnYVc1emREdGNiaUFnSUNBZ0lHbHVjM1FnUFNCdVpYY2dVM1JoZEdWc1pYTnpRMjl0Y0c5dVpXNTBLRU52YlhCdmJtVnVkQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDOHZJRlJvYVhNZ2QybHNiQ0IwYUhKdmR5QnNZWFJsY2lCcGJpQmZjbVZ1WkdWeVZtRnNhV1JoZEdWa1EyOXRjRzl1Wlc1MExDQmlkWFFnWVdSa0lHRnVJR1ZoY214NVhHNGdJQ0FnSUNBdkx5QjNZWEp1YVc1bklHNXZkeUIwYnlCb1pXeHdJR1JsWW5WbloybHVaMXh1SUNBZ0lDQWdhV1lnS0dsdWMzUXVjbVZ1WkdWeUlEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2NsY3lndUxpNHBPaUJPYnlCZ2NtVnVaR1Z5WUNCdFpYUm9iMlFnWm05MWJtUWdiMjRnZEdobElISmxkSFZ5Ym1Wa0lHTnZiWEJ2Ym1WdWRDQW5JQ3NnSjJsdWMzUmhibU5sT2lCNWIzVWdiV0Y1SUdoaGRtVWdabTl5WjI5MGRHVnVJSFJ2SUdSbFptbHVaU0JnY21WdVpHVnlZQ3dnY21WMGRYSnVaV1FnSnlBcklDZHVkV3hzTDJaaGJITmxJR1p5YjIwZ1lTQnpkR0YwWld4bGMzTWdZMjl0Y0c5dVpXNTBMQ0J2Y2lCMGNtbGxaQ0IwYnlCeVpXNWtaWElnWVc0Z0p5QXJJQ2RsYkdWdFpXNTBJSGRvYjNObElIUjVjR1VnYVhNZ1lTQm1kVzVqZEdsdmJpQjBhR0YwSUdsemJseGNKM1FnWVNCU1pXRmpkQ0JqYjIxd2IyNWxiblF1Snl3Z1EyOXRjRzl1Wlc1MExtUnBjM0JzWVhsT1lXMWxJSHg4SUVOdmJYQnZibVZ1ZEM1dVlXMWxJSHg4SUNkRGIyMXdiMjVsYm5RbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUZkbElITjFjSEJ2Y25RZ1JWTTJJR2x1YUdWeWFYUnBibWNnWm5KdmJTQlNaV0ZqZEM1RGIyMXdiMjVsYm5Rc0lIUm9aU0J0YjJSMWJHVWdjR0YwZEdWeWJpeGNiaUFnSUNBZ0lDQWdMeThnWVc1a0lITjBZWFJsYkdWemN5QmpiMjF3YjI1bGJuUnpMQ0JpZFhRZ2JtOTBJRVZUTmlCamJHRnpjMlZ6SUhSb1lYUWdaRzl1SjNRZ1pYaDBaVzVrWEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktFTnZiWEJ2Ym1WdWRDNXdjbTkwYjNSNWNHVWdKaVlnUTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlM1cGMxSmxZV04wUTI5dGNHOXVaVzUwSUh4OElDRmpZVzVKYm5OMFlXNTBhV0YwWlNCOGZDQWhLR2x1YzNRZ2FXNXpkR0Z1WTJWdlppQkRiMjF3YjI1bGJuUXBMQ0FuSlhNb0xpNHVLVG9nVW1WaFkzUWdZMjl0Y0c5dVpXNTBJR05zWVhOelpYTWdiWFZ6ZENCbGVIUmxibVFnVW1WaFkzUXVRMjl0Y0c5dVpXNTBMaWNzSUVOdmJYQnZibVZ1ZEM1a2FYTndiR0Y1VG1GdFpTQjhmQ0JEYjIxd2IyNWxiblF1Ym1GdFpTQjhmQ0FuUTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdWR2hsYzJVZ2MyaHZkV3hrSUdKbElITmxkQ0IxY0NCcGJpQjBhR1VnWTI5dWMzUnlkV04wYjNJc0lHSjFkQ0JoY3lCaElHTnZiblpsYm1sbGJtTmxJR1p2Y2x4dUlDQWdJQzh2SUhOcGJYQnNaWElnWTJ4aGMzTWdZV0p6ZEhKaFkzUnBiMjV6TENCM1pTQnpaWFFnZEdobGJTQjFjQ0JoWm5SbGNpQjBhR1VnWm1GamRDNWNiaUFnSUNCcGJuTjBMbkJ5YjNCeklEMGdjSFZpYkdsalVISnZjSE03WEc0Z0lDQWdhVzV6ZEM1amIyNTBaWGgwSUQwZ2NIVmliR2xqUTI5dWRHVjRkRHRjYmlBZ0lDQnBibk4wTG5KbFpuTWdQU0JsYlhCMGVVOWlhbVZqZER0Y2JpQWdJQ0JwYm5OMExuVndaR0YwWlhJZ1BTQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbE8xeHVYRzRnSUNBZ2RHaHBjeTVmYVc1emRHRnVZMlVnUFNCcGJuTjBPMXh1WEc0Z0lDQWdMeThnVTNSdmNtVWdZU0J5WldabGNtVnVZMlVnWm5KdmJTQjBhR1VnYVc1emRHRnVZMlVnWW1GamF5QjBieUIwYUdVZ2FXNTBaWEp1WVd3Z2NtVndjbVZ6Wlc1MFlYUnBiMjVjYmlBZ0lDQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0xuTmxkQ2hwYm5OMExDQjBhR2x6S1R0Y2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0F2THlCVGFXNWpaU0J3YkdGcGJpQktVeUJqYkdGemMyVnpJR0Z5WlNCa1pXWnBibVZrSUhkcGRHaHZkWFFnWVc1NUlITndaV05wWVd3Z2FXNXBkR2xoYkdsNllYUnBiMjVjYmlBZ0lDQWdJQzh2SUd4dloybGpMQ0IzWlNCallXNGdibTkwSUdOaGRHTm9JR052YlcxdmJpQmxjbkp2Y25NZ1pXRnliSGt1SUZSb1pYSmxabTl5WlN3Z2QyVWdhR0YyWlNCMGIxeHVJQ0FnSUNBZ0x5OGdZMkYwWTJnZ2RHaGxiU0JvWlhKbExDQmhkQ0JwYm1sMGFXRnNhWHBoZEdsdmJpQjBhVzFsTENCcGJuTjBaV0ZrTGx4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lXbHVjM1F1WjJWMFNXNXBkR2xoYkZOMFlYUmxJSHg4SUdsdWMzUXVaMlYwU1c1cGRHbGhiRk4wWVhSbExtbHpVbVZoWTNSRGJHRnpjMEZ3Y0hKdmRtVmtMQ0FuWjJWMFNXNXBkR2xoYkZOMFlYUmxJSGRoY3lCa1pXWnBibVZrSUc5dUlDVnpMQ0JoSUhCc1lXbHVJRXBoZG1GVFkzSnBjSFFnWTJ4aGMzTXVJQ2NnS3lBblZHaHBjeUJwY3lCdmJteDVJSE4xY0hCdmNuUmxaQ0JtYjNJZ1kyeGhjM05sY3lCamNtVmhkR1ZrSUhWemFXNW5JRkpsWVdOMExtTnlaV0YwWlVOc1lYTnpMaUFuSUNzZ0owUnBaQ0I1YjNVZ2JXVmhiaUIwYnlCa1pXWnBibVVnWVNCemRHRjBaU0J3Y205d1pYSjBlU0JwYm5OMFpXRmtQeWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkaElHTnZiWEJ2Ym1WdWRDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lXbHVjM1F1WjJWMFJHVm1ZWFZzZEZCeWIzQnpJSHg4SUdsdWMzUXVaMlYwUkdWbVlYVnNkRkJ5YjNCekxtbHpVbVZoWTNSRGJHRnpjMEZ3Y0hKdmRtVmtMQ0FuWjJWMFJHVm1ZWFZzZEZCeWIzQnpJSGRoY3lCa1pXWnBibVZrSUc5dUlDVnpMQ0JoSUhCc1lXbHVJRXBoZG1GVFkzSnBjSFFnWTJ4aGMzTXVJQ2NnS3lBblZHaHBjeUJwY3lCdmJteDVJSE4xY0hCdmNuUmxaQ0JtYjNJZ1kyeGhjM05sY3lCamNtVmhkR1ZrSUhWemFXNW5JRkpsWVdOMExtTnlaV0YwWlVOc1lYTnpMaUFuSUNzZ0oxVnpaU0JoSUhOMFlYUnBZeUJ3Y205d1pYSjBlU0IwYnlCa1pXWnBibVVnWkdWbVlYVnNkRkJ5YjNCeklHbHVjM1JsWVdRdUp5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMkVnWTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWdoYVc1emRDNXdjbTl3Vkhsd1pYTXNJQ2R3Y205d1ZIbHdaWE1nZDJGeklHUmxabWx1WldRZ1lYTWdZVzRnYVc1emRHRnVZMlVnY0hKdmNHVnlkSGtnYjI0Z0pYTXVJRlZ6WlNCaElITjBZWFJwWXlBbklDc2dKM0J5YjNCbGNuUjVJSFJ2SUdSbFptbHVaU0J3Y205d1ZIbHdaWE1nYVc1emRHVmhaQzRuTENCMGFHbHpMbWRsZEU1aGJXVW9LU0I4ZkNBbllTQmpiMjF3YjI1bGJuUW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRnBibk4wTG1OdmJuUmxlSFJVZVhCbGN5d2dKMk52Ym5SbGVIUlVlWEJsY3lCM1lYTWdaR1ZtYVc1bFpDQmhjeUJoYmlCcGJuTjBZVzVqWlNCd2NtOXdaWEowZVNCdmJpQWxjeTRnVlhObElHRWdKeUFySUNkemRHRjBhV01nY0hKdmNHVnlkSGtnZEc4Z1pHVm1hVzVsSUdOdmJuUmxlSFJVZVhCbGN5QnBibk4wWldGa0xpY3NJSFJvYVhNdVoyVjBUbUZ0WlNncElIeDhJQ2RoSUdOdmJYQnZibVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvZEhsd1pXOW1JR2x1YzNRdVkyOXRjRzl1Wlc1MFUyaHZkV3hrVlhCa1lYUmxJQ0U5UFNBblpuVnVZM1JwYjI0bkxDQW5KWE1nYUdGeklHRWdiV1YwYUc5a0lHTmhiR3hsWkNBbklDc2dKMk52YlhCdmJtVnVkRk5vYjNWc1pGVndaR0YwWlNncExpQkVhV1FnZVc5MUlHMWxZVzRnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbEtDay9JQ2NnS3lBblZHaGxJRzVoYldVZ2FYTWdjR2h5WVhObFpDQmhjeUJoSUhGMVpYTjBhVzl1SUdKbFkyRjFjMlVnZEdobElHWjFibU4wYVc5dUlHbHpJQ2NnS3lBblpYaHdaV04wWldRZ2RHOGdjbVYwZFhKdUlHRWdkbUZzZFdVdUp5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMEVnWTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgwZVhCbGIyWWdhVzV6ZEM1amIyMXdiMjVsYm5SRWFXUlZibTF2ZFc1MElDRTlQU0FuWm5WdVkzUnBiMjRuTENBbkpYTWdhR0Z6SUdFZ2JXVjBhRzlrSUdOaGJHeGxaQ0FuSUNzZ0oyTnZiWEJ2Ym1WdWRFUnBaRlZ1Ylc5MWJuUW9LUzRnUW5WMElIUm9aWEpsSUdseklHNXZJSE4xWTJnZ2JHbG1aV041WTJ4bElHMWxkR2h2WkM0Z0p5QXJJQ2RFYVdRZ2VXOTFJRzFsWVc0Z1kyOXRjRzl1Wlc1MFYybHNiRlZ1Ylc5MWJuUW9LVDhuTENCMGFHbHpMbWRsZEU1aGJXVW9LU0I4ZkNBblFTQmpiMjF3YjI1bGJuUW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIUjVjR1Z2WmlCcGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4U1pXTnBaWFpsVUhKdmNITWdJVDA5SUNkbWRXNWpkR2x2Ymljc0lDY2xjeUJvWVhNZ1lTQnRaWFJvYjJRZ1kyRnNiR1ZrSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBWMmxzYkZKbFkybGxkbVZRY205d2N5Z3BMaUJFYVdRZ2VXOTFJRzFsWVc0Z1kyOXRjRzl1Wlc1MFYybHNiRkpsWTJWcGRtVlFjbTl3Y3lncFB5Y3NJSFJvYVhNdVoyVjBUbUZ0WlNncElIeDhJQ2RCSUdOdmJYQnZibVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJwYm1sMGFXRnNVM1JoZEdVZ1BTQnBibk4wTG5OMFlYUmxPMXh1SUNBZ0lHbG1JQ2hwYm1sMGFXRnNVM1JoZEdVZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJQ0FnYVc1emRDNXpkR0YwWlNBOUlHbHVhWFJwWVd4VGRHRjBaU0E5SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUNFb2RIbHdaVzltSUdsdWFYUnBZV3hUZEdGMFpTQTlQVDBnSjI5aWFtVmpkQ2NnSmlZZ0lVRnljbUY1TG1selFYSnlZWGtvYVc1cGRHbGhiRk4wWVhSbEtTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbkpYTXVjM1JoZEdVNklHMTFjM1FnWW1VZ2MyVjBJSFJ2SUdGdUlHOWlhbVZqZENCdmNpQnVkV3hzSnl3Z2RHaHBjeTVuWlhST1lXMWxLQ2tnZkh3Z0oxSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdkR2hwY3k1ZmNHVnVaR2x1WjFOMFlYUmxVWFZsZFdVZ1BTQnVkV3hzTzF4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kU1pYQnNZV05sVTNSaGRHVWdQU0JtWVd4elpUdGNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5SbTl5WTJWVmNHUmhkR1VnUFNCbVlXeHpaVHRjYmx4dUlDQWdJR2xtSUNocGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4TmIzVnVkQ2tnZTF4dUlDQWdJQ0FnYVc1emRDNWpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUW9LVHRjYmlBZ0lDQWdJQzh2SUZkb1pXNGdiVzkxYm5ScGJtY3NJR05oYkd4eklIUnZJR0J6WlhSVGRHRjBaV0FnWW5rZ1lHTnZiWEJ2Ym1WdWRGZHBiR3hOYjNWdWRHQWdkMmxzYkNCelpYUmNiaUFnSUNBZ0lDOHZJR0IwYUdsekxsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpXQWdkMmwwYUc5MWRDQjBjbWxuWjJWeWFXNW5JR0VnY21VdGNtVnVaR1Z5TGx4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WDNCbGJtUnBibWRUZEdGMFpWRjFaWFZsS1NCN1hHNGdJQ0FnSUNBZ0lHbHVjM1F1YzNSaGRHVWdQU0IwYUdsekxsOXdjbTlqWlhOelVHVnVaR2x1WjFOMFlYUmxLR2x1YzNRdWNISnZjSE1zSUdsdWMzUXVZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdTV1lnYm05MElHRWdjM1JoZEdWc1pYTnpJR052YlhCdmJtVnVkQ3dnZDJVZ2JtOTNJSEpsYm1SbGNseHVJQ0FnSUdsbUlDaHlaVzVrWlhKbFpFVnNaVzFsYm5RZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJQ0FnY21WdVpHVnlaV1JGYkdWdFpXNTBJRDBnZEdocGN5NWZjbVZ1WkdWeVZtRnNhV1JoZEdWa1EyOXRjRzl1Wlc1MEtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTVmY21WdVpHVnlaV1JEYjIxd2IyNWxiblFnUFNCMGFHbHpMbDlwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLSEpsYm1SbGNtVmtSV3hsYldWdWRDazdYRzVjYmlBZ0lDQjJZWElnYldGeWEzVndJRDBnVW1WaFkzUlNaV052Ym1OcGJHVnlMbTF2ZFc1MFEyOXRjRzl1Wlc1MEtIUm9hWE11WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTENCeWIyOTBTVVFzSUhSeVlXNXpZV04wYVc5dUxDQjBhR2x6TGw5d2NtOWpaWE56UTJocGJHUkRiMjUwWlhoMEtHTnZiblJsZUhRcEtUdGNiaUFnSUNCcFppQW9hVzV6ZEM1amIyMXdiMjVsYm5SRWFXUk5iM1Z1ZENrZ2UxeHVJQ0FnSUNBZ2RISmhibk5oWTNScGIyNHVaMlYwVW1WaFkzUk5iM1Z1ZEZKbFlXUjVLQ2t1Wlc1eGRXVjFaU2hwYm5OMExtTnZiWEJ2Ym1WdWRFUnBaRTF2ZFc1MExDQnBibk4wS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiV0Z5YTNWd08xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWld4bFlYTmxjeUJoYm5rZ2NtVnpiM1Z5WTJWeklHRnNiRzlqWVhSbFpDQmllU0JnYlc5MWJuUkRiMjF3YjI1bGJuUmdMbHh1SUNBZ0tseHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0IxYm0xdmRXNTBRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1FnUFNCMGFHbHpMbDlwYm5OMFlXNWpaVHRjYmx4dUlDQWdJR2xtSUNocGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4VmJtMXZkVzUwS1NCN1hHNGdJQ0FnSUNCcGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4VmJtMXZkVzUwS0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnVW1WaFkzUlNaV052Ym1OcGJHVnlMblZ1Ylc5MWJuUkRiMjF3YjI1bGJuUW9kR2hwY3k1ZmNtVnVaR1Z5WldSRGIyMXdiMjVsYm5RcE8xeHVJQ0FnSUhSb2FYTXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBJRDBnYm5Wc2JEdGNiaUFnSUNCMGFHbHpMbDlwYm5OMFlXNWpaU0E5SUc1MWJHdzdYRzVjYmlBZ0lDQXZMeUJTWlhObGRDQndaVzVrYVc1bklHWnBaV3hrYzF4dUlDQWdJQzh2SUVWMlpXNGdhV1lnZEdocGN5QmpiMjF3YjI1bGJuUWdhWE1nYzJOb1pXUjFiR1ZrSUdadmNpQmhibTkwYUdWeUlIVndaR0YwWlNCcGJpQlNaV0ZqZEZWd1pHRjBaWE1zWEc0Z0lDQWdMeThnYVhRZ2QyOTFiR1FnYzNScGJHd2dZbVVnYVdkdWIzSmxaQ0JpWldOaGRYTmxJSFJvWlhObElHWnBaV3hrY3lCaGNtVWdjbVZ6WlhRdVhHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZFNaWEJzWVdObFUzUmhkR1VnUFNCbVlXeHpaVHRjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuUm05eVkyVlZjR1JoZEdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blEyRnNiR0poWTJ0eklEMGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blJXeGxiV1Z1ZENBOUlHNTFiR3c3WEc1Y2JpQWdJQ0F2THlCVWFHVnpaU0JtYVdWc1pITWdaRzhnYm05MElISmxZV3hzZVNCdVpXVmtJSFJ2SUdKbElISmxjMlYwSUhOcGJtTmxJSFJvYVhNZ2IySnFaV04wSUdseklHNXZYRzRnSUNBZ0x5OGdiRzl1WjJWeUlHRmpZMlZ6YzJsaWJHVXVYRzRnSUNBZ2RHaHBjeTVmWTI5dWRHVjRkQ0E5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVmY205dmRFNXZaR1ZKUkNBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZmRHOXdUR1YyWld4WGNtRndjR1Z5SUQwZ2JuVnNiRHRjYmx4dUlDQWdJQzh2SUVSbGJHVjBaU0IwYUdVZ2NtVm1aWEpsYm1ObElHWnliMjBnZEdobElHbHVjM1JoYm1ObElIUnZJSFJvYVhNZ2FXNTBaWEp1WVd3Z2NtVndjbVZ6Wlc1MFlYUnBiMjVjYmlBZ0lDQXZMeUIzYUdsamFDQmhiR3h2ZHlCMGFHVWdhVzUwWlhKdVlXeHpJSFJ2SUdKbElIQnliM0JsY214NUlHTnNaV0Z1WldRZ2RYQWdaWFpsYmlCcFppQjBhR1VnZFhObGNseHVJQ0FnSUM4dklHeGxZV3R6SUdFZ2NtVm1aWEpsYm1ObElIUnZJSFJvWlNCd2RXSnNhV01nYVc1emRHRnVZMlV1WEc0Z0lDQWdVbVZoWTNSSmJuTjBZVzVqWlUxaGNDNXlaVzF2ZG1Vb2FXNXpkQ2s3WEc1Y2JpQWdJQ0F2THlCVGIyMWxJR1Y0YVhOMGFXNW5JR052YlhCdmJtVnVkSE1nY21Wc2VTQnZiaUJwYm5OMExuQnliM0J6SUdWMlpXNGdZV1owWlhJZ2RHaGxlU2QyWlNCaVpXVnVYRzRnSUNBZ0x5OGdaR1Z6ZEhKdmVXVmtJQ2hwYmlCbGRtVnVkQ0JvWVc1a2JHVnljeWt1WEc0Z0lDQWdMeThnVkU5RVR6b2dhVzV6ZEM1d2NtOXdjeUE5SUc1MWJHdzdYRzRnSUNBZ0x5OGdWRTlFVHpvZ2FXNXpkQzV6ZEdGMFpTQTlJRzUxYkd3N1hHNGdJQ0FnTHk4Z1ZFOUVUem9nYVc1emRDNWpiMjUwWlhoMElEMGdiblZzYkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSbWxzZEdWeWN5QjBhR1VnWTI5dWRHVjRkQ0J2WW1wbFkzUWdkRzhnYjI1c2VTQmpiMjUwWVdsdUlHdGxlWE1nYzNCbFkybG1hV1ZrSUdsdVhHNGdJQ0FxSUdCamIyNTBaWGgwVkhsd1pYTmdYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JqYjI1MFpYaDBYRzRnSUNBcUlFQnlaWFIxY200Z2V6OXZZbXBsWTNSOVhHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFMMXh1SUNCZmJXRnphME52Ym5SbGVIUTZJR1oxYm1OMGFXOXVJQ2hqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkbUZ5SUcxaGMydGxaRU52Ym5SbGVIUWdQU0J1ZFd4c08xeHVJQ0FnSUhaaGNpQkRiMjF3YjI1bGJuUWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1MGVYQmxPMXh1SUNBZ0lIWmhjaUJqYjI1MFpYaDBWSGx3WlhNZ1BTQkRiMjF3YjI1bGJuUXVZMjl1ZEdWNGRGUjVjR1Z6TzF4dUlDQWdJR2xtSUNnaFkyOXVkR1Y0ZEZSNWNHVnpLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaVzF3ZEhsUFltcGxZM1E3WEc0Z0lDQWdmVnh1SUNBZ0lHMWhjMnRsWkVOdmJuUmxlSFFnUFNCN2ZUdGNiaUFnSUNCbWIzSWdLSFpoY2lCamIyNTBaWGgwVG1GdFpTQnBiaUJqYjI1MFpYaDBWSGx3WlhNcElIdGNiaUFnSUNBZ0lHMWhjMnRsWkVOdmJuUmxlSFJiWTI5dWRHVjRkRTVoYldWZElEMGdZMjl1ZEdWNGRGdGpiMjUwWlhoMFRtRnRaVjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdFlYTnJaV1JEYjI1MFpYaDBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCR2FXeDBaWEp6SUhSb1pTQmpiMjUwWlhoMElHOWlhbVZqZENCMGJ5QnZibXg1SUdOdmJuUmhhVzRnYTJWNWN5QnpjR1ZqYVdacFpXUWdhVzVjYmlBZ0lDb2dZR052Ym5SbGVIUlVlWEJsYzJBc0lHRnVaQ0JoYzNObGNuUnpJSFJvWVhRZ2RHaGxlU0JoY21VZ2RtRnNhV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCamIyNTBaWGgwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejl2WW1wbFkzUjlYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmZjSEp2WTJWemMwTnZiblJsZUhRNklHWjFibU4wYVc5dUlDaGpiMjUwWlhoMEtTQjdYRzRnSUNBZ2RtRnlJRzFoYzJ0bFpFTnZiblJsZUhRZ1BTQjBhR2x6TGw5dFlYTnJRMjl1ZEdWNGRDaGpiMjUwWlhoMEtUdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZG1GeUlFTnZiWEJ2Ym1WdWRDQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5SNWNHVTdYRzRnSUNBZ0lDQnBaaUFvUTI5dGNHOXVaVzUwTG1OdmJuUmxlSFJVZVhCbGN5a2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWphR1ZqYTFCeWIzQlVlWEJsY3loRGIyMXdiMjVsYm5RdVkyOXVkR1Y0ZEZSNWNHVnpMQ0J0WVhOclpXUkRiMjUwWlhoMExDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6TG1OdmJuUmxlSFFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRnphMlZrUTI5dWRHVjRkRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOMWNuSmxiblJEYjI1MFpYaDBYRzRnSUNBcUlFQnlaWFIxY200Z2UyOWlhbVZqZEgxY2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb3ZYRzRnSUY5d2NtOWpaWE56UTJocGJHUkRiMjUwWlhoME9pQm1kVzVqZEdsdmJpQW9ZM1Z5Y21WdWRFTnZiblJsZUhRcElIdGNiaUFnSUNCMllYSWdRMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWRIbHdaVHRjYmlBZ0lDQjJZWElnYVc1emRDQTlJSFJvYVhNdVgybHVjM1JoYm1ObE8xeHVJQ0FnSUhaaGNpQmphR2xzWkVOdmJuUmxlSFFnUFNCcGJuTjBMbWRsZEVOb2FXeGtRMjl1ZEdWNGRDQW1KaUJwYm5OMExtZGxkRU5vYVd4a1EyOXVkR1Y0ZENncE8xeHVJQ0FnSUdsbUlDaGphR2xzWkVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUNFb2RIbHdaVzltSUVOdmJYQnZibVZ1ZEM1amFHbHNaRU52Ym5SbGVIUlVlWEJsY3lBOVBUMGdKMjlpYW1WamRDY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0p5VnpMbWRsZEVOb2FXeGtRMjl1ZEdWNGRDZ3BPaUJqYUdsc1pFTnZiblJsZUhSVWVYQmxjeUJ0ZFhOMElHSmxJR1JsWm1sdVpXUWdhVzRnYjNKa1pYSWdkRzhnSnlBcklDZDFjMlVnWjJWMFEyaHBiR1JEYjI1MFpYaDBLQ2t1Snl3Z2RHaHBjeTVuWlhST1lXMWxLQ2tnZkh3Z0oxSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZlkyaGxZMnRRY205d1ZIbHdaWE1vUTI5dGNHOXVaVzUwTG1Ob2FXeGtRMjl1ZEdWNGRGUjVjR1Z6TENCamFHbHNaRU52Ym5SbGVIUXNJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdVkyaHBiR1JEYjI1MFpYaDBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJRzVoYldVZ2FXNGdZMmhwYkdSRGIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNBZ0lDRW9ibUZ0WlNCcGJpQkRiMjF3YjI1bGJuUXVZMmhwYkdSRGIyNTBaWGgwVkhsd1pYTXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0p5VnpMbWRsZEVOb2FXeGtRMjl1ZEdWNGRDZ3BPaUJyWlhrZ1hDSWxjMXdpSUdseklHNXZkQ0JrWldacGJtVmtJR2x1SUdOb2FXeGtRMjl1ZEdWNGRGUjVjR1Z6TGljc0lIUm9hWE11WjJWMFRtRnRaU2dwSUh4OElDZFNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZENjc0lHNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCaGMzTnBaMjRvZTMwc0lHTjFjbkpsYm5SRGIyNTBaWGgwTENCamFHbHNaRU52Ym5SbGVIUXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWTNWeWNtVnVkRU52Ym5SbGVIUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZCeWIyTmxjM05sY3lCd2NtOXdjeUJpZVNCelpYUjBhVzVuSUdSbFptRjFiSFFnZG1Gc2RXVnpJR1p2Y2lCMWJuTndaV05wWm1sbFpDQndjbTl3Y3lCaGJtUmNiaUFnSUNvZ1lYTnpaWEowYVc1bklIUm9ZWFFnZEdobElIQnliM0J6SUdGeVpTQjJZV3hwWkM0Z1JHOWxjeUJ1YjNRZ2JYVjBZWFJsSUdsMGN5QmhjbWQxYldWdWREc2djbVYwZFhKdWMxeHVJQ0FnS2lCaElHNWxkeUJ3Y205d2N5QnZZbXBsWTNRZ2QybDBhQ0JrWldaaGRXeDBjeUJ0WlhKblpXUWdhVzR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCdVpYZFFjbTl3YzF4dUlDQWdLaUJBY21WMGRYSnVJSHR2WW1wbFkzUjlYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmZjSEp2WTJWemMxQnliM0J6T2lCbWRXNWpkR2x2YmlBb2JtVjNVSEp2Y0hNcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZG1GeUlFTnZiWEJ2Ym1WdWRDQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5SNWNHVTdYRzRnSUNBZ0lDQnBaaUFvUTI5dGNHOXVaVzUwTG5CeWIzQlVlWEJsY3lrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5amFHVmphMUJ5YjNCVWVYQmxjeWhEYjIxd2IyNWxiblF1Y0hKdmNGUjVjR1Z6TENCdVpYZFFjbTl3Y3l3Z1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVjeTV3Y205d0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzVsZDFCeWIzQnpPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQmMzTmxjblFnZEdoaGRDQjBhR1VnY0hKdmNITWdZWEpsSUhaaGJHbGtYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J3Y205d1ZIbHdaWE1nVFdGd0lHOW1JSEJ5YjNBZ2JtRnRaU0IwYnlCaElGSmxZV04wVUhKdmNGUjVjR1ZjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlIQnliM0J6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnNiMk5oZEdsdmJpQmxMbWN1SUZ3aWNISnZjRndpTENCY0ltTnZiblJsZUhSY0lpd2dYQ0pqYUdsc1pDQmpiMjUwWlhoMFhDSmNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOWphR1ZqYTFCeWIzQlVlWEJsY3pvZ1puVnVZM1JwYjI0Z0tIQnliM0JVZVhCbGN5d2djSEp2Y0hNc0lHeHZZMkYwYVc5dUtTQjdYRzRnSUNBZ0x5OGdWRTlFVHpvZ1UzUnZjQ0IyWVd4cFpHRjBhVzVuSUhCeWIzQWdkSGx3WlhNZ2FHVnlaU0JoYm1RZ2IyNXNlU0IxYzJVZ2RHaGxJR1ZzWlcxbGJuUmNiaUFnSUNBdkx5QjJZV3hwWkdGMGFXOXVMbHh1SUNBZ0lIWmhjaUJqYjIxd2IyNWxiblJPWVcxbElEMGdkR2hwY3k1blpYUk9ZVzFsS0NrN1hHNGdJQ0FnWm05eUlDaDJZWElnY0hKdmNFNWhiV1VnYVc0Z2NISnZjRlI1Y0dWektTQjdYRzRnSUNBZ0lDQnBaaUFvY0hKdmNGUjVjR1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdaWEp5YjNJN1hHNGdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdWR2hwY3lCcGN5QnBiblJsYm5ScGIyNWhiR3g1SUdGdUlHbHVkbUZ5YVdGdWRDQjBhR0YwSUdkbGRITWdZMkYxWjJoMExpQkpkQ2R6SUhSb1pTQnpZVzFsWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdZbVZvWVhacGIzSWdZWE1nZDJsMGFHOTFkQ0IwYUdseklITjBZWFJsYldWdWRDQmxlR05sY0hRZ2QybDBhQ0JoSUdKbGRIUmxjaUJ0WlhOellXZGxMbHh1SUNBZ0lDQWdJQ0FnSUNFb2RIbHdaVzltSUhCeWIzQlVlWEJsYzF0d2NtOXdUbUZ0WlYwZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKeVZ6T2lBbGN5QjBlWEJsSUdBbGMyQWdhWE1nYVc1MllXeHBaRHNnYVhRZ2JYVnpkQ0JpWlNCaElHWjFibU4wYVc5dUxDQjFjM1ZoYkd4NUlDY2dLeUFuWm5KdmJTQlNaV0ZqZEM1UWNtOXdWSGx3WlhNdUp5d2dZMjl0Y0c5dVpXNTBUbUZ0WlNCOGZDQW5VbVZoWTNRZ1kyeGhjM01uTENCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsYzF0c2IyTmhkR2x2Ymwwc0lIQnliM0JPWVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUNBZ1pYSnliM0lnUFNCd2NtOXdWSGx3WlhOYmNISnZjRTVoYldWZEtIQnliM0J6TENCd2NtOXdUbUZ0WlN3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnYkc5allYUnBiMjRwTzF4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobGVDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdWeWNtOXlJRDBnWlhnN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0dWeWNtOXlJR2x1YzNSaGJtTmxiMllnUlhKeWIzSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlhaU0J0WVhrZ2QyRnVkQ0IwYnlCbGVIUmxibVFnZEdocGN5QnNiMmRwWXlCbWIzSWdjMmx0YVd4aGNpQmxjbkp2Y25NZ2FXNWNiaUFnSUNBZ0lDQWdJQ0F2THlCMGIzQXRiR1YyWld3Z2NtVnVaR1Z5SUdOaGJHeHpMQ0J6YnlCSkoyMGdZV0p6ZEhKaFkzUnBibWNnYVhRZ1lYZGhlU0JwYm5SdlhHNGdJQ0FnSUNBZ0lDQWdMeThnWVNCbWRXNWpkR2x2YmlCMGJ5QnRhVzVwYldsNlpTQnlaV1poWTNSdmNtbHVaeUJwYmlCMGFHVWdablYwZFhKbFhHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUdGa1pHVnVaSFZ0SUQwZ1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtIUm9hWE1wTzF4dVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0d4dlkyRjBhVzl1SUQwOVBTQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6TG5CeWIzQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRkJ5WldaaFkyVWdaMmwyWlhNZ2RYTWdjMjl0WlhSb2FXNW5JSFJ2SUdKc1lXTnJiR2x6ZENCcGJpQjNZWEp1YVc1bklHMXZaSFZzWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RHWVdsc1pXUWdRMjl0Y0c5emFYUmxJSEJ5YjNCVWVYQmxPaUFsY3lWekp5d2daWEp5YjNJdWJXVnpjMkZuWlN3Z1lXUmtaVzVrZFcwcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMFpoYVd4bFpDQkRiMjUwWlhoMElGUjVjR1Z6T2lBbGN5VnpKeXdnWlhKeWIzSXViV1Z6YzJGblpTd2dZV1JrWlc1a2RXMHBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0J5WldObGFYWmxRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvYm1WNGRFVnNaVzFsYm5Rc0lIUnlZVzV6WVdOMGFXOXVMQ0J1WlhoMFEyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQndjbVYyUld4bGJXVnVkQ0E5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1ME8xeHVJQ0FnSUhaaGNpQndjbVYyUTI5dWRHVjRkQ0E5SUhSb2FYTXVYMk52Ym5SbGVIUTdYRzVjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuUld4bGJXVnVkQ0E5SUc1MWJHdzdYRzVjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaVU52YlhCdmJtVnVkQ2gwY21GdWMyRmpkR2x2Yml3Z2NISmxka1ZzWlcxbGJuUXNJRzVsZUhSRmJHVnRaVzUwTENCd2NtVjJRMjl1ZEdWNGRDd2dibVY0ZEVOdmJuUmxlSFFwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpaaUJoYm5rZ2IyWWdZRjl3Wlc1a2FXNW5SV3hsYldWdWRHQXNJR0JmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1ZnTENCdmNpQmdYM0JsYm1ScGJtZEdiM0pqWlZWd1pHRjBaV0JjYmlBZ0lDb2dhWE1nYzJWMExDQjFjR1JoZEdVZ2RHaGxJR052YlhCdmJtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lIQmxjbVp2Y20xVmNHUmhkR1ZKWms1bFkyVnpjMkZ5ZVRvZ1puVnVZM1JwYjI0Z0tIUnlZVzV6WVdOMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM0JsYm1ScGJtZEZiR1Z0Wlc1MElDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lGSmxZV04wVW1WamIyNWphV3hsY2k1eVpXTmxhWFpsUTI5dGNHOXVaVzUwS0hSb2FYTXNJSFJvYVhNdVgzQmxibVJwYm1kRmJHVnRaVzUwSUh4OElIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMQ0IwY21GdWMyRmpkR2x2Yml3Z2RHaHBjeTVmWTI5dWRHVjRkQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM0JsYm1ScGJtZFRkR0YwWlZGMVpYVmxJQ0U5UFNCdWRXeHNJSHg4SUhSb2FYTXVYM0JsYm1ScGJtZEdiM0pqWlZWd1pHRjBaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWRGIyMXdiMjVsYm5Rb2RISmhibk5oWTNScGIyNHNJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTENCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDd2dkR2hwY3k1ZlkyOXVkR1Y0ZEN3Z2RHaHBjeTVmWTI5dWRHVjRkQ2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCUVpYSm1iM0p0SUdGdUlIVndaR0YwWlNCMGJ5QmhJRzF2ZFc1MFpXUWdZMjl0Y0c5dVpXNTBMaUJVYUdVZ1kyOXRjRzl1Wlc1MFYybHNiRkpsWTJWcGRtVlFjbTl3Y3lCaGJtUmNiaUFnSUNvZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxJRzFsZEdodlpITWdZWEpsSUdOaGJHeGxaQ3dnZEdobGJpQW9ZWE56ZFcxcGJtY2dkR2hsSUhWd1pHRjBaU0JwYzI0bmRGeHVJQ0FnS2lCemEybHdjR1ZrS1NCMGFHVWdjbVZ0WVdsdWFXNW5JSFZ3WkdGMFpTQnNhV1psWTNsamJHVWdiV1YwYUc5a2N5QmhjbVVnWTJGc2JHVmtJR0Z1WkNCMGFHVWdSRTlOWEc0Z0lDQXFJSEpsY0hKbGMyVnVkR0YwYVc5dUlHbHpJSFZ3WkdGMFpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVKNUlHUmxabUYxYkhRc0lIUm9hWE1nYVcxd2JHVnRaVzUwY3lCU1pXRmpkQ2R6SUhKbGJtUmxjbWx1WnlCaGJtUWdjbVZqYjI1amFXeHBZWFJwYjI0Z1lXeG5iM0pwZEdodExseHVJQ0FnS2lCVGIzQm9hWE4wYVdOaGRHVmtJR05zYVdWdWRITWdiV0Y1SUhkcGMyZ2dkRzhnYjNabGNuSnBaR1VnZEdocGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVmU0IwY21GdWMyRmpkR2x2Ymx4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ2NISmxkbEJoY21WdWRFVnNaVzFsYm5SY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHNWxlSFJRWVhKbGJuUkZiR1Z0Wlc1MFhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaUJBYjNabGNuSnBaR0ZpYkdWY2JpQWdJQ292WEc0Z0lIVndaR0YwWlVOdmJYQnZibVZ1ZERvZ1puVnVZM1JwYjI0Z0tIUnlZVzV6WVdOMGFXOXVMQ0J3Y21WMlVHRnlaVzUwUld4bGJXVnVkQ3dnYm1WNGRGQmhjbVZ1ZEVWc1pXMWxiblFzSUhCeVpYWlZibTFoYzJ0bFpFTnZiblJsZUhRc0lHNWxlSFJWYm0xaGMydGxaRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYVc1emRDQTlJSFJvYVhNdVgybHVjM1JoYm1ObE8xeHVYRzRnSUNBZ2RtRnlJRzVsZUhSRGIyNTBaWGgwSUQwZ2RHaHBjeTVmWTI5dWRHVjRkQ0E5UFQwZ2JtVjRkRlZ1YldGemEyVmtRMjl1ZEdWNGRDQS9JR2x1YzNRdVkyOXVkR1Y0ZENBNklIUm9hWE11WDNCeWIyTmxjM05EYjI1MFpYaDBLRzVsZUhSVmJtMWhjMnRsWkVOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCdVpYaDBVSEp2Y0hNN1hHNWNiaUFnSUNBdkx5QkVhWE4wYVc1bmRXbHphQ0JpWlhSM1pXVnVJR0VnY0hKdmNITWdkWEJrWVhSbElIWmxjbk4xY3lCaElITnBiWEJzWlNCemRHRjBaU0IxY0dSaGRHVmNiaUFnSUNCcFppQW9jSEpsZGxCaGNtVnVkRVZzWlcxbGJuUWdQVDA5SUc1bGVIUlFZWEpsYm5SRmJHVnRaVzUwS1NCN1hHNGdJQ0FnSUNBdkx5QlRhMmx3SUdOb1pXTnJhVzVuSUhCeWIzQWdkSGx3WlhNZ1lXZGhhVzRnTFMwZ2QyVWdaRzl1SjNRZ2NtVmhaQ0JwYm5OMExuQnliM0J6SUhSdklHRjJiMmxrWEc0Z0lDQWdJQ0F2THlCM1lYSnVhVzVuSUdadmNpQkVUMDBnWTI5dGNHOXVaVzUwSUhCeWIzQnpJR2x1SUhSb2FYTWdkWEJuY21Ga1pWeHVJQ0FnSUNBZ2JtVjRkRkJ5YjNCeklEMGdibVY0ZEZCaGNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJRzVsZUhSUWNtOXdjeUE5SUhSb2FYTXVYM0J5YjJObGMzTlFjbTl3Y3lodVpYaDBVR0Z5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjeWs3WEc0Z0lDQWdJQ0F2THlCQmJpQjFjR1JoZEdVZ2FHVnlaU0IzYVd4c0lITmphR1ZrZFd4bElHRnVJSFZ3WkdGMFpTQmlkWFFnYVcxdFpXUnBZWFJsYkhrZ2MyVjBYRzRnSUNBZ0lDQXZMeUJmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VnZDJocFkyZ2dkMmxzYkNCbGJuTjFjbVVnZEdoaGRDQmhibmtnYzNSaGRHVWdkWEJrWVhSbGN5Qm5aWFJ6WEc0Z0lDQWdJQ0F2THlCcGJXMWxaR2xoZEdWc2VTQnlaV052Ym1OcGJHVmtJR2x1YzNSbFlXUWdiMllnZDJGcGRHbHVaeUJtYjNJZ2RHaGxJRzVsZUhRZ1ltRjBZMmd1WEc1Y2JpQWdJQ0FnSUdsbUlDaHBibk4wTG1OdmJYQnZibVZ1ZEZkcGJHeFNaV05sYVhabFVISnZjSE1wSUh0Y2JpQWdJQ0FnSUNBZ2FXNXpkQzVqYjIxd2IyNWxiblJYYVd4c1VtVmpaV2wyWlZCeWIzQnpLRzVsZUhSUWNtOXdjeXdnYm1WNGRFTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQnVaWGgwVTNSaGRHVWdQU0IwYUdsekxsOXdjbTlqWlhOelVHVnVaR2x1WjFOMFlYUmxLRzVsZUhSUWNtOXdjeXdnYm1WNGRFTnZiblJsZUhRcE8xeHVYRzRnSUNBZ2RtRnlJSE5vYjNWc1pGVndaR0YwWlNBOUlIUm9hWE11WDNCbGJtUnBibWRHYjNKalpWVndaR0YwWlNCOGZDQWhhVzV6ZEM1emFHOTFiR1JEYjIxd2IyNWxiblJWY0dSaGRHVWdmSHdnYVc1emRDNXphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1VvYm1WNGRGQnliM0J6TENCdVpYaDBVM1JoZEdVc0lHNWxlSFJEYjI1MFpYaDBLVHRjYmx4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgwZVhCbGIyWWdjMmh2ZFd4a1ZYQmtZWFJsSUNFOVBTQW5kVzVrWldacGJtVmtKeXdnSnlWekxuTm9iM1ZzWkVOdmJYQnZibVZ1ZEZWd1pHRjBaU2dwT2lCU1pYUjFjbTVsWkNCMWJtUmxabWx1WldRZ2FXNXpkR1ZoWkNCdlppQmhJQ2NnS3lBblltOXZiR1ZoYmlCMllXeDFaUzRnVFdGclpTQnpkWEpsSUhSdklISmxkSFZ5YmlCMGNuVmxJRzl5SUdaaGJITmxMaWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHphRzkxYkdSVmNHUmhkR1VwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZEdiM0pqWlZWd1pHRjBaU0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdMeThnVjJsc2JDQnpaWFFnWUhSb2FYTXVjSEp2Y0hOZ0xDQmdkR2hwY3k1emRHRjBaV0FnWVc1a0lHQjBhR2x6TG1OdmJuUmxlSFJnTGx4dUlDQWdJQ0FnZEdocGN5NWZjR1Z5Wm05eWJVTnZiWEJ2Ym1WdWRGVndaR0YwWlNodVpYaDBVR0Z5Wlc1MFJXeGxiV1Z1ZEN3Z2JtVjRkRkJ5YjNCekxDQnVaWGgwVTNSaGRHVXNJRzVsZUhSRGIyNTBaWGgwTENCMGNtRnVjMkZqZEdsdmJpd2dibVY0ZEZWdWJXRnphMlZrUTI5dWRHVjRkQ2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDOHZJRWxtSUdsMEozTWdaR1YwWlhKdGFXNWxaQ0IwYUdGMElHRWdZMjl0Y0c5dVpXNTBJSE5vYjNWc1pDQnViM1FnZFhCa1lYUmxMQ0IzWlNCemRHbHNiQ0IzWVc1MFhHNGdJQ0FnSUNBdkx5QjBieUJ6WlhRZ2NISnZjSE1nWVc1a0lITjBZWFJsSUdKMWRDQjNaU0J6YUc5eWRHTjFkQ0IwYUdVZ2NtVnpkQ0J2WmlCMGFHVWdkWEJrWVhSbExseHVJQ0FnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUWdQU0J1WlhoMFVHRnlaVzUwUld4bGJXVnVkRHRjYmlBZ0lDQWdJSFJvYVhNdVgyTnZiblJsZUhRZ1BTQnVaWGgwVlc1dFlYTnJaV1JEYjI1MFpYaDBPMXh1SUNBZ0lDQWdhVzV6ZEM1d2NtOXdjeUE5SUc1bGVIUlFjbTl3Y3p0Y2JpQWdJQ0FnSUdsdWMzUXVjM1JoZEdVZ1BTQnVaWGgwVTNSaGRHVTdYRzRnSUNBZ0lDQnBibk4wTG1OdmJuUmxlSFFnUFNCdVpYaDBRMjl1ZEdWNGREdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdYM0J5YjJObGMzTlFaVzVrYVc1blUzUmhkR1U2SUdaMWJtTjBhVzl1SUNod2NtOXdjeXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBJRDBnZEdocGN5NWZhVzV6ZEdGdVkyVTdYRzRnSUNBZ2RtRnlJSEYxWlhWbElEMGdkR2hwY3k1ZmNHVnVaR2x1WjFOMFlYUmxVWFZsZFdVN1hHNGdJQ0FnZG1GeUlISmxjR3hoWTJVZ1BTQjBhR2x6TGw5d1pXNWthVzVuVW1Wd2JHRmpaVk4wWVhSbE8xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZFNaWEJzWVdObFUzUmhkR1VnUFNCbVlXeHpaVHRjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuVTNSaGRHVlJkV1YxWlNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JwWmlBb0lYRjFaWFZsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVc1emRDNXpkR0YwWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2NtVndiR0ZqWlNBbUppQnhkV1YxWlM1c1pXNW5kR2dnUFQwOUlERXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnhkV1YxWlZzd1hUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdibVY0ZEZOMFlYUmxJRDBnWVhOemFXZHVLSHQ5TENCeVpYQnNZV05sSUQ4Z2NYVmxkV1ZiTUYwZ09pQnBibk4wTG5OMFlYUmxLVHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnY21Wd2JHRmpaU0EvSURFZ09pQXdPeUJwSUR3Z2NYVmxkV1V1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lIWmhjaUJ3WVhKMGFXRnNJRDBnY1hWbGRXVmJhVjA3WEc0Z0lDQWdJQ0JoYzNOcFoyNG9ibVY0ZEZOMFlYUmxMQ0IwZVhCbGIyWWdjR0Z5ZEdsaGJDQTlQVDBnSjJaMWJtTjBhVzl1SnlBL0lIQmhjblJwWVd3dVkyRnNiQ2hwYm5OMExDQnVaWGgwVTNSaGRHVXNJSEJ5YjNCekxDQmpiMjUwWlhoMEtTQTZJSEJoY25ScFlXd3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCdVpYaDBVM1JoZEdVN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFsY21kbGN5QnVaWGNnY0hKdmNITWdZVzVrSUhOMFlYUmxMQ0J1YjNScFptbGxjeUJrWld4bFoyRjBaU0J0WlhSb2IyUnpJRzltSUhWd1pHRjBaU0JoYm1SY2JpQWdJQ29nY0dWeVptOXliWE1nZFhCa1lYUmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdibVY0ZEVWc1pXMWxiblFnVG1WNGRDQmxiR1Z0Wlc1MFhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J1WlhoMFVISnZjSE1nVG1WNGRDQndkV0pzYVdNZ2IySnFaV04wSUhSdklITmxkQ0JoY3lCd2NtOXdaWEowYVdWekxseHVJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUc1bGVIUlRkR0YwWlNCT1pYaDBJRzlpYW1WamRDQjBieUJ6WlhRZ1lYTWdjM1JoZEdVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRFTnZiblJsZUhRZ1RtVjRkQ0J3ZFdKc2FXTWdiMkpxWldOMElIUnZJSE5sZENCaGN5QmpiMjUwWlhoMExseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnZFc1dFlYTnJaV1JEYjI1MFpYaDBYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmZjR1Z5Wm05eWJVTnZiWEJ2Ym1WdWRGVndaR0YwWlRvZ1puVnVZM1JwYjI0Z0tHNWxlSFJGYkdWdFpXNTBMQ0J1WlhoMFVISnZjSE1zSUc1bGVIUlRkR0YwWlN3Z2JtVjRkRU52Ym5SbGVIUXNJSFJ5WVc1ellXTjBhVzl1TENCMWJtMWhjMnRsWkVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkQ0E5SUhSb2FYTXVYMmx1YzNSaGJtTmxPMXh1WEc0Z0lDQWdkbUZ5SUdoaGMwTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpTQTlJRUp2YjJ4bFlXNG9hVzV6ZEM1amIyMXdiMjVsYm5SRWFXUlZjR1JoZEdVcE8xeHVJQ0FnSUhaaGNpQndjbVYyVUhKdmNITTdYRzRnSUNBZ2RtRnlJSEJ5WlhaVGRHRjBaVHRjYmlBZ0lDQjJZWElnY0hKbGRrTnZiblJsZUhRN1hHNGdJQ0FnYVdZZ0tHaGhjME52YlhCdmJtVnVkRVJwWkZWd1pHRjBaU2tnZTF4dUlDQWdJQ0FnY0hKbGRsQnliM0J6SUQwZ2FXNXpkQzV3Y205d2N6dGNiaUFnSUNBZ0lIQnlaWFpUZEdGMFpTQTlJR2x1YzNRdWMzUmhkR1U3WEc0Z0lDQWdJQ0J3Y21WMlEyOXVkR1Y0ZENBOUlHbHVjM1F1WTI5dWRHVjRkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYVc1emRDNWpiMjF3YjI1bGJuUlhhV3hzVlhCa1lYUmxLU0I3WEc0Z0lDQWdJQ0JwYm5OMExtTnZiWEJ2Ym1WdWRGZHBiR3hWY0dSaGRHVW9ibVY0ZEZCeWIzQnpMQ0J1WlhoMFUzUmhkR1VzSUc1bGVIUkRiMjUwWlhoMEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDQTlJRzVsZUhSRmJHVnRaVzUwTzF4dUlDQWdJSFJvYVhNdVgyTnZiblJsZUhRZ1BTQjFibTFoYzJ0bFpFTnZiblJsZUhRN1hHNGdJQ0FnYVc1emRDNXdjbTl3Y3lBOUlHNWxlSFJRY205d2N6dGNiaUFnSUNCcGJuTjBMbk4wWVhSbElEMGdibVY0ZEZOMFlYUmxPMXh1SUNBZ0lHbHVjM1F1WTI5dWRHVjRkQ0E5SUc1bGVIUkRiMjUwWlhoME8xeHVYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxVbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUW9kSEpoYm5OaFkzUnBiMjRzSUhWdWJXRnphMlZrUTI5dWRHVjRkQ2s3WEc1Y2JpQWdJQ0JwWmlBb2FHRnpRMjl0Y0c5dVpXNTBSR2xrVlhCa1lYUmxLU0I3WEc0Z0lDQWdJQ0IwY21GdWMyRmpkR2x2Ymk1blpYUlNaV0ZqZEUxdmRXNTBVbVZoWkhrb0tTNWxibkYxWlhWbEtHbHVjM1F1WTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsTG1KcGJtUW9hVzV6ZEN3Z2NISmxkbEJ5YjNCekxDQndjbVYyVTNSaGRHVXNJSEJ5WlhaRGIyNTBaWGgwS1N3Z2FXNXpkQ2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRFlXeHNJSFJvWlNCamIyMXdiMjVsYm5RbmN5QmdjbVZ1WkdWeVlDQnRaWFJvYjJRZ1lXNWtJSFZ3WkdGMFpTQjBhR1VnUkU5TklHRmpZMjl5WkdsdVoyeDVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1gzVndaR0YwWlZKbGJtUmxjbVZrUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnY0hKbGRrTnZiWEJ2Ym1WdWRFbHVjM1JoYm1ObElEMGdkR2hwY3k1ZmNtVnVaR1Z5WldSRGIyMXdiMjVsYm5RN1hHNGdJQ0FnZG1GeUlIQnlaWFpTWlc1a1pYSmxaRVZzWlcxbGJuUWdQU0J3Y21WMlEyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVdVgyTjFjbkpsYm5SRmJHVnRaVzUwTzF4dUlDQWdJSFpoY2lCdVpYaDBVbVZ1WkdWeVpXUkZiR1Z0Wlc1MElEMGdkR2hwY3k1ZmNtVnVaR1Z5Vm1Gc2FXUmhkR1ZrUTI5dGNHOXVaVzUwS0NrN1hHNGdJQ0FnYVdZZ0tITm9iM1ZzWkZWd1pHRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEtIQnlaWFpTWlc1a1pYSmxaRVZzWlcxbGJuUXNJRzVsZUhSU1pXNWtaWEpsWkVWc1pXMWxiblFwS1NCN1hHNGdJQ0FnSUNCU1pXRmpkRkpsWTI5dVkybHNaWEl1Y21WalpXbDJaVU52YlhCdmJtVnVkQ2h3Y21WMlEyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVc0lHNWxlSFJTWlc1a1pYSmxaRVZzWlcxbGJuUXNJSFJ5WVc1ellXTjBhVzl1TENCMGFHbHpMbDl3Y205alpYTnpRMmhwYkdSRGIyNTBaWGgwS0dOdmJuUmxlSFFwS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnVkdobGMyVWdkSGR2SUVsRWN5QmhjbVVnWVdOMGRXRnNiSGtnZEdobElITmhiV1VoSUVKMWRDQnViM1JvYVc1bklITm9iM1ZzWkNCeVpXeDVJRzl1SUhSb1lYUXVYRzRnSUNBZ0lDQjJZWElnZEdocGMwbEVJRDBnZEdocGN5NWZjbTl2ZEU1dlpHVkpSRHRjYmlBZ0lDQWdJSFpoY2lCd2NtVjJRMjl0Y0c5dVpXNTBTVVFnUFNCd2NtVjJRMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXVYM0p2YjNST2IyUmxTVVE3WEc0Z0lDQWdJQ0JTWldGamRGSmxZMjl1WTJsc1pYSXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRDaHdjbVYyUTI5dGNHOXVaVzUwU1c1emRHRnVZMlVwTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDl5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ0E5SUhSb2FYTXVYMmx1YzNSaGJuUnBZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9ibVY0ZEZKbGJtUmxjbVZrUld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0IyWVhJZ2JtVjRkRTFoY210MWNDQTlJRkpsWVdOMFVtVmpiMjVqYVd4bGNpNXRiM1Z1ZEVOdmJYQnZibVZ1ZENoMGFHbHpMbDl5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ3dnZEdocGMwbEVMQ0IwY21GdWMyRmpkR2x2Yml3Z2RHaHBjeTVmY0hKdlkyVnpjME5vYVd4a1EyOXVkR1Y0ZENoamIyNTBaWGgwS1NrN1hHNGdJQ0FnSUNCMGFHbHpMbDl5WlhCc1lXTmxUbTlrWlZkcGRHaE5ZWEpyZFhCQ2VVbEVLSEJ5WlhaRGIyMXdiMjVsYm5SSlJDd2dibVY0ZEUxaGNtdDFjQ2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FxTDF4dUlDQmZjbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3UW5sSlJEb2dablZ1WTNScGIyNGdLSEJ5WlhaRGIyMXdiMjVsYm5SSlJDd2dibVY0ZEUxaGNtdDFjQ2tnZTF4dUlDQWdJRkpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUXVjbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3UW5sSlJDaHdjbVYyUTI5dGNHOXVaVzUwU1VRc0lHNWxlSFJOWVhKcmRYQXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FxTDF4dUlDQmZjbVZ1WkdWeVZtRnNhV1JoZEdWa1EyOXRjRzl1Wlc1MFYybDBhRzkxZEU5M2JtVnlUM0pEYjI1MFpYaDBPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1FnUFNCMGFHbHpMbDlwYm5OMFlXNWpaVHRjYmlBZ0lDQjJZWElnY21WdVpHVnlaV1JEYjIxd2IyNWxiblFnUFNCcGJuTjBMbkpsYm1SbGNpZ3BPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBdkx5QlhaU0JoYkd4dmR5QmhkWFJ2TFcxdlkydHpJSFJ2SUhCeWIyTmxaV1FnWVhNZ2FXWWdkR2hsZVNkeVpTQnlaWFIxY201cGJtY2diblZzYkM1Y2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NtVnVaR1Z5WldSRGIyMXdiMjVsYm5RZ1BUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlHbHVjM1F1Y21WdVpHVnlMbDlwYzAxdlkydEdkVzVqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0F2THlCVWFHbHpJR2x6SUhCeWIySmhZbXg1SUdKaFpDQndjbUZqZEdsalpTNGdRMjl1YzJsa1pYSWdkMkZ5Ym1sdVp5Qm9aWEpsSUdGdVpGeHVJQ0FnSUNBZ0lDQXZMeUJrWlhCeVpXTmhkR2x1WnlCMGFHbHpJR052Ym5abGJtbGxibU5sTGx4dUlDQWdJQ0FnSUNCeVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOUlHNTFiR3c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlISmxibVJsY21Wa1EyOXRjRzl1Wlc1ME8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBY0hKcGRtRjBaVnh1SUNBZ0tpOWNiaUFnWDNKbGJtUmxjbFpoYkdsa1lYUmxaRU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhaaGNpQnlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWREdGNiaUFnSUNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwZ2RHaHBjenRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnY21WdVpHVnlaV1JEYjIxd2IyNWxiblFnUFNCMGFHbHpMbDl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUlhhWFJvYjNWMFQzZHVaWEpQY2tOdmJuUmxlSFFvS1R0Y2JpQWdJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJQ0FnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQ0E5SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUNFb1hHNGdJQ0FnTHk4Z1ZFOUVUem9nUVc0Z1lHbHpWbUZzYVdST2IyUmxZQ0JtZFc1amRHbHZiaUIzYjNWc1pDQndjbTlpWVdKc2VTQmlaU0J0YjNKbElHRndjSEp2Y0hKcFlYUmxYRzRnSUNBZ2NtVnVaR1Z5WldSRGIyMXdiMjVsYm5RZ1BUMDlJRzUxYkd3Z2ZId2djbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUWdQVDA5SUdaaGJITmxJSHg4SUZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENoeVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENrcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSnlWekxuSmxibVJsY2lncE9pQkJJSFpoYkdsa0lGSmxZV04wUTI5dGNHOXVaVzUwSUcxMWMzUWdZbVVnY21WMGRYSnVaV1F1SUZsdmRTQnRZWGtnYUdGMlpTQW5JQ3NnSjNKbGRIVnlibVZrSUhWdVpHVm1hVzVsWkN3Z1lXNGdZWEp5WVhrZ2IzSWdjMjl0WlNCdmRHaGxjaUJwYm5aaGJHbGtJRzlpYW1WamRDNG5MQ0IwYUdsekxtZGxkRTVoYldVb0tTQjhmQ0FuVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUW5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnY21WMGRYSnVJSEpsYm1SbGNtVmtRMjl0Y0c5dVpXNTBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCTVlYcHBiSGtnWVd4c2IyTmhkR1Z6SUhSb1pTQnlaV1p6SUc5aWFtVmpkQ0JoYm1RZ2MzUnZjbVZ6SUdCamIyMXdiMjVsYm5SZ0lHRnpJR0J5WldaZ0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjbVZtSUZKbFptVnlaVzVqWlNCdVlXMWxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBJRU52YlhCdmJtVnVkQ0IwYnlCemRHOXlaU0JoY3lCZ2NtVm1ZQzVjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFMMXh1SUNCaGRIUmhZMmhTWldZNklHWjFibU4wYVc5dUlDaHlaV1lzSUdOdmJYQnZibVZ1ZENrZ2UxeHVJQ0FnSUhaaGNpQnBibk4wSUQwZ2RHaHBjeTVuWlhSUWRXSnNhV05KYm5OMFlXNWpaU2dwTzF4dUlDQWdJQ0VvYVc1emRDQWhQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkVGRHRjBaV3hsYzNNZ1puVnVZM1JwYjI0Z1kyOXRjRzl1Wlc1MGN5QmpZVzV1YjNRZ2FHRjJaU0J5WldaekxpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0IyWVhJZ2NIVmliR2xqUTI5dGNHOXVaVzUwU1c1emRHRnVZMlVnUFNCamIyMXdiMjVsYm5RdVoyVjBVSFZpYkdsalNXNXpkR0Z1WTJVb0tUdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRFNWhiV1VnUFNCamIyMXdiMjVsYm5RZ0ppWWdZMjl0Y0c5dVpXNTBMbWRsZEU1aGJXVWdQeUJqYjIxd2IyNWxiblF1WjJWMFRtRnRaU2dwSURvZ0oyRWdZMjl0Y0c5dVpXNTBKenRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hCMVlteHBZME52YlhCdmJtVnVkRWx1YzNSaGJtTmxJQ0U5SUc1MWJHd3NJQ2RUZEdGMFpXeGxjM01nWm5WdVkzUnBiMjRnWTI5dGNHOXVaVzUwY3lCallXNXViM1FnWW1VZ1oybDJaVzRnY21WbWN5QW5JQ3NnSnloVFpXVWdjbVZtSUZ3aUpYTmNJaUJwYmlBbGN5QmpjbVZoZEdWa0lHSjVJQ1Z6S1M0Z0p5QXJJQ2RCZEhSbGJYQjBjeUIwYnlCaFkyTmxjM01nZEdocGN5QnlaV1lnZDJsc2JDQm1ZV2xzTGljc0lISmxaaXdnWTI5dGNHOXVaVzUwVG1GdFpTd2dkR2hwY3k1blpYUk9ZVzFsS0NrcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdjbVZtY3lBOUlHbHVjM1F1Y21WbWN5QTlQVDBnWlcxd2RIbFBZbXBsWTNRZ1B5QnBibk4wTG5KbFpuTWdQU0I3ZlNBNklHbHVjM1F1Y21WbWN6dGNiaUFnSUNCeVpXWnpXM0psWmwwZ1BTQndkV0pzYVdORGIyMXdiMjVsYm5SSmJuTjBZVzVqWlR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1YwWVdOb1pYTWdZU0J5WldabGNtVnVZMlVnYm1GdFpTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEpsWmlCT1lXMWxJSFJ2SUdSbGNtVm1aWEpsYm1ObExseHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNvdlhHNGdJR1JsZEdGamFGSmxaam9nWm5WdVkzUnBiMjRnS0hKbFppa2dlMXh1SUNBZ0lIWmhjaUJ5WldaeklEMGdkR2hwY3k1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncExuSmxabk03WEc0Z0lDQWdaR1ZzWlhSbElISmxabk5iY21WbVhUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElHRWdkR1Y0ZENCa1pYTmpjbWx3ZEdsdmJpQnZaaUIwYUdVZ1kyOXRjRzl1Wlc1MElIUm9ZWFFnWTJGdUlHSmxJSFZ6WldRZ2RHOGdhV1JsYm5ScFpua2dhWFJjYmlBZ0lDb2dhVzRnWlhKeWIzSWdiV1Z6YzJGblpYTXVYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ1ZHaGxJRzVoYldVZ2IzSWdiblZzYkM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCblpYUk9ZVzFsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RtRnlJSFI1Y0dVZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzUwZVhCbE8xeHVJQ0FnSUhaaGNpQmpiMjV6ZEhKMVkzUnZjaUE5SUhSb2FYTXVYMmx1YzNSaGJtTmxJQ1ltSUhSb2FYTXVYMmx1YzNSaGJtTmxMbU52Ym5OMGNuVmpkRzl5TzF4dUlDQWdJSEpsZEhWeWJpQjBlWEJsTG1ScGMzQnNZWGxPWVcxbElIeDhJR052Ym5OMGNuVmpkRzl5SUNZbUlHTnZibk4wY25WamRHOXlMbVJwYzNCc1lYbE9ZVzFsSUh4OElIUjVjR1V1Ym1GdFpTQjhmQ0JqYjI1emRISjFZM1J2Y2lBbUppQmpiMjV6ZEhKMVkzUnZjaTV1WVcxbElIeDhJRzUxYkd3N1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdjSFZpYkdsamJIa2dZV05qWlhOemFXSnNaU0J5WlhCeVpYTmxiblJoZEdsdmJpQnZaaUIwYUdseklHTnZiWEJ2Ym1WdWRDQXRJR2t1WlM0Z2QyaGhkRnh1SUNBZ0tpQnBjeUJsZUhCdmMyVmtJR0o1SUhKbFpuTWdZVzVrSUhKbGRIVnlibVZrSUdKNUlISmxibVJsY2k0Z1EyRnVJR0psSUc1MWJHd2dabTl5SUhOMFlYUmxiR1Z6YzF4dUlDQWdLaUJqYjIxd2IyNWxiblJ6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2RHaGxJSEIxWW14cFl5QmpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdaMlYwVUhWaWJHbGpTVzV6ZEdGdVkyVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkQ0E5SUhSb2FYTXVYMmx1YzNSaGJtTmxPMXh1SUNBZ0lHbG1JQ2hwYm5OMElHbHVjM1JoYm1ObGIyWWdVM1JoZEdWc1pYTnpRMjl0Y0c5dVpXNTBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHbHVjM1E3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdVM1IxWWx4dUlDQmZhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWREb2diblZzYkZ4dVhHNTlPMXh1WEc1U1pXRmpkRkJsY21ZdWJXVmhjM1Z5WlUxbGRHaHZaSE1vVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUk5hWGhwYml3Z0oxSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSnl3Z2UxeHVJQ0J0YjNWdWRFTnZiWEJ2Ym1WdWREb2dKMjF2ZFc1MFEyOXRjRzl1Wlc1MEp5eGNiaUFnZFhCa1lYUmxRMjl0Y0c5dVpXNTBPaUFuZFhCa1lYUmxRMjl0Y0c5dVpXNTBKeXhjYmlBZ1gzSmxibVJsY2xaaGJHbGtZWFJsWkVOdmJYQnZibVZ1ZERvZ0oxOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5RblhHNTlLVHRjYmx4dWRtRnlJRkpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MElEMGdlMXh1WEc0Z0lFMXBlR2x1T2lCU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkRTFwZUdsdVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblE3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01cbiAqL1xuXG4vKiBnbG9iYWxzIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0Q29tcG9uZW50Jyk7XG52YXIgUmVhY3REZWZhdWx0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRJbmplY3Rpb24nKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGZpbmRET01Ob2RlID0gcmVxdWlyZSgnLi9maW5kRE9NTm9kZScpO1xudmFyIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyID0gcmVxdWlyZSgnLi9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cblJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtcblxudmFyIHJlbmRlciA9IFJlYWN0UGVyZi5tZWFzdXJlKCdSZWFjdCcsICdyZW5kZXInLCBSZWFjdE1vdW50LnJlbmRlcik7XG5cbnZhciBSZWFjdCA9IHtcbiAgZmluZERPTU5vZGU6IGZpbmRET01Ob2RlLFxuICByZW5kZXI6IHJlbmRlcixcbiAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogUmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlLFxuICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24sXG5cbiAgLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4gIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMsXG4gIHVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lclxufTtcblxuLy8gSW5qZWN0IHRoZSBydW50aW1lIGludG8gYSBkZXZ0b29scyBnbG9iYWwgaG9vayByZWdhcmRsZXNzIG9mIGJyb3dzZXIuXG4vLyBBbGxvd3MgZm9yIGRlYnVnZ2luZyB3aGVuIHRoZSBob29rIGlzIGluamVjdGVkIG9uIHRoZSBwYWdlLlxuLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cbmlmICh0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtcbiAgICBDdXJyZW50T3duZXI6IFJlYWN0Q3VycmVudE93bmVyLFxuICAgIEluc3RhbmNlSGFuZGxlczogUmVhY3RJbnN0YW5jZUhhbmRsZXMsXG4gICAgTW91bnQ6IFJlYWN0TW91bnQsXG4gICAgUmVjb25jaWxlcjogUmVhY3RSZWNvbmNpbGVyLFxuICAgIFRleHRDb21wb25lbnQ6IFJlYWN0RE9NVGV4dENvbXBvbmVudFxuICB9KTtcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbiAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiB3aW5kb3cudG9wID09PSB3aW5kb3cuc2VsZikge1xuXG4gICAgLy8gRmlyc3QgY2hlY2sgaWYgZGV2dG9vbHMgaXMgbm90IGluc3RhbGxlZFxuICAgIGlmICh0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gSWYgd2UncmUgaW4gQ2hyb21lIG9yIEZpcmVmb3gsIHByb3ZpZGUgYSBkb3dubG9hZCBsaW5rIGlmIG5vdCBpbnN0YWxsZWQuXG4gICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUnKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWRnZScpID09PSAtMSB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+IC0xKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoJ0Rvd25sb2FkIHRoZSBSZWFjdCBEZXZUb29scyBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWRldnRvb2xzJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgd2UncmUgaW4gSUU4LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkgbW9kZSBhbmQgcHJvdmlkZVxuICAgIC8vIGluZm9ybWF0aW9uIG9uIHByZXZlbnRpbmcgY29tcGF0aWJpbGl0eSBtb2RlXG4gICAgdmFyIGllQ29tcGF0aWJpbGl0eU1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgODtcblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlNb2RlLCAnSW50ZXJuZXQgRXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7IHBsZWFzZSBhZGQgdGhlICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9XCJYLVVBLUNvbXBhdGlibGVcIiBjb250ZW50PVwiSUU9ZWRnZVwiIC8+JykgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgZXhwZWN0ZWRGZWF0dXJlcyA9IFtcbiAgICAvLyBzaGltc1xuICAgIEFycmF5LmlzQXJyYXksIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgQXJyYXkucHJvdG90eXBlLmZvckVhY2gsIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLCBBcnJheS5wcm90b3R5cGUubWFwLCBEYXRlLm5vdywgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsIE9iamVjdC5rZXlzLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCBTdHJpbmcucHJvdG90eXBlLnRyaW0sXG5cbiAgICAvLyBzaGFtc1xuICAgIE9iamVjdC5jcmVhdGUsIE9iamVjdC5mcmVlemVdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWV4cGVjdGVkRmVhdHVyZXNbaV0pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignT25lIG9yIG1vcmUgRVM1IHNoaW0vc2hhbXMgZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLXBvbHlmaWxscycpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMHVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFUlBUVnh1SUNvdlhHNWNiaThxSUdkc2IySmhiSE1nWDE5U1JVRkRWRjlFUlZaVVQwOU1VMTlIVEU5Q1FVeGZTRTlQUzE5ZktpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlKeWs3WEc1MllYSWdVbVZoWTNSRVQwMVVaWGgwUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblFuS1R0Y2JuWmhjaUJTWldGamRFUmxabUYxYkhSSmJtcGxZM1JwYjI0Z1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJHVm1ZWFZzZEVsdWFtVmpkR2x2YmljcE8xeHVkbUZ5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3ljcE8xeHVkbUZ5SUZKbFlXTjBUVzkxYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRXOTFiblFuS1R0Y2JuWmhjaUJTWldGamRGQmxjbVlnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUdWeVppY3BPMXh1ZG1GeUlGSmxZV04wVW1WamIyNWphV3hsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSU1pXTnZibU5wYkdWeUp5azdYRzUyWVhJZ1VtVmhZM1JWY0dSaGRHVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpYTW5LVHRjYm5aaGNpQlNaV0ZqZEZabGNuTnBiMjRnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVm1WeWMybHZiaWNwTzF4dVhHNTJZWElnWm1sdVpFUlBUVTV2WkdVZ1BTQnlaWEYxYVhKbEtDY3VMMlpwYm1SRVQwMU9iMlJsSnlrN1hHNTJZWElnY21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWElnUFNCeVpYRjFhWEpsS0NjdUwzSmxibVJsY2xOMVluUnlaV1ZKYm5SdlEyOXVkR0ZwYm1WeUp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1VW1WaFkzUkVaV1poZFd4MFNXNXFaV04wYVc5dUxtbHVhbVZqZENncE8xeHVYRzUyWVhJZ2NtVnVaR1Z5SUQwZ1VtVmhZM1JRWlhKbUxtMWxZWE4xY21Vb0oxSmxZV04wSnl3Z0ozSmxibVJsY2ljc0lGSmxZV04wVFc5MWJuUXVjbVZ1WkdWeUtUdGNibHh1ZG1GeUlGSmxZV04wSUQwZ2UxeHVJQ0JtYVc1a1JFOU5UbTlrWlRvZ1ptbHVaRVJQVFU1dlpHVXNYRzRnSUhKbGJtUmxjam9nY21WdVpHVnlMRnh1SUNCMWJtMXZkVzUwUTI5dGNHOXVaVzUwUVhST2IyUmxPaUJTWldGamRFMXZkVzUwTG5WdWJXOTFiblJEYjIxd2IyNWxiblJCZEU1dlpHVXNYRzRnSUhabGNuTnBiMjQ2SUZKbFlXTjBWbVZ5YzJsdmJpeGNibHh1SUNBdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCallXMWxiR05oYzJVZ0tpOWNiaUFnZFc1emRHRmliR1ZmWW1GMFkyaGxaRlZ3WkdGMFpYTTZJRkpsWVdOMFZYQmtZWFJsY3k1aVlYUmphR1ZrVlhCa1lYUmxjeXhjYmlBZ2RXNXpkR0ZpYkdWZmNtVnVaR1Z5VTNWaWRISmxaVWx1ZEc5RGIyNTBZV2x1WlhJNklISmxibVJsY2xOMVluUnlaV1ZKYm5SdlEyOXVkR0ZwYm1WeVhHNTlPMXh1WEc0dkx5QkpibXBsWTNRZ2RHaGxJSEoxYm5ScGJXVWdhVzUwYnlCaElHUmxkblJ2YjJ4eklHZHNiMkpoYkNCb2IyOXJJSEpsWjJGeVpHeGxjM01nYjJZZ1luSnZkM05sY2k1Y2JpOHZJRUZzYkc5M2N5Qm1iM0lnWkdWaWRXZG5hVzVuSUhkb1pXNGdkR2hsSUdodmIyc2dhWE1nYVc1cVpXTjBaV1FnYjI0Z2RHaGxJSEJoWjJVdVhHNHZLaUJsYzJ4cGJuUXRaVzVoWW14bElHTmhiV1ZzWTJGelpTQXFMMXh1YVdZZ0tIUjVjR1Z2WmlCZlgxSkZRVU5VWDBSRlZsUlBUMHhUWDBkTVQwSkJURjlJVDA5TFgxOGdJVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSFI1Y0dWdlppQmZYMUpGUVVOVVgwUkZWbFJQVDB4VFgwZE1UMEpCVEY5SVQwOUxYMTh1YVc1cVpXTjBJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUY5ZlVrVkJRMVJmUkVWV1ZFOVBURk5mUjB4UFFrRk1YMGhQVDB0Zlh5NXBibXBsWTNRb2UxeHVJQ0FnSUVOMWNuSmxiblJQZDI1bGNqb2dVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXNYRzRnSUNBZ1NXNXpkR0Z1WTJWSVlXNWtiR1Z6T2lCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5eGNiaUFnSUNCTmIzVnVkRG9nVW1WaFkzUk5iM1Z1ZEN4Y2JpQWdJQ0JTWldOdmJtTnBiR1Z5T2lCU1pXRmpkRkpsWTI5dVkybHNaWElzWEc0Z0lDQWdWR1Y0ZEVOdmJYQnZibVZ1ZERvZ1VtVmhZM1JFVDAxVVpYaDBRMjl0Y0c5dVpXNTBYRzRnSUgwcE8xeHVmVnh1WEc1cFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQjJZWElnUlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOUZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQ2NwTzF4dUlDQnBaaUFvUlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RdVkyRnVWWE5sUkU5TklDWW1JSGRwYm1SdmR5NTBiM0FnUFQwOUlIZHBibVJ2ZHk1elpXeG1LU0I3WEc1Y2JpQWdJQ0F2THlCR2FYSnpkQ0JqYUdWamF5QnBaaUJrWlhaMGIyOXNjeUJwY3lCdWIzUWdhVzV6ZEdGc2JHVmtYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmZYMUpGUVVOVVgwUkZWbFJQVDB4VFgwZE1UMEpCVEY5SVQwOUxYMThnUFQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0F2THlCSlppQjNaU2R5WlNCcGJpQkRhSEp2YldVZ2IzSWdSbWx5WldadmVDd2djSEp2ZG1sa1pTQmhJR1J2ZDI1c2IyRmtJR3hwYm1zZ2FXWWdibTkwSUdsdWMzUmhiR3hsWkM1Y2JpQWdJQ0FnSUdsbUlDaHVZWFpwWjJGMGIzSXVkWE5sY2tGblpXNTBMbWx1WkdWNFQyWW9KME5vY205dFpTY3BJRDRnTFRFZ0ppWWdibUYyYVdkaGRHOXlMblZ6WlhKQloyVnVkQzVwYm1SbGVFOW1LQ2RGWkdkbEp5a2dQVDA5SUMweElIeDhJRzVoZG1sbllYUnZjaTUxYzJWeVFXZGxiblF1YVc1a1pYaFBaaWduUm1seVpXWnZlQ2NwSUQ0Z0xURXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVrWldKMVp5Z25SRzkzYm14dllXUWdkR2hsSUZKbFlXTjBJRVJsZGxSdmIyeHpJR1p2Y2lCaElHSmxkSFJsY2lCa1pYWmxiRzl3YldWdWRDQmxlSEJsY21sbGJtTmxPaUFuSUNzZ0oyaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRaR1YyZEc5dmJITW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJKWmlCM1pTZHlaU0JwYmlCSlJUZ3NJR05vWldOcklIUnZJSE5sWlNCcFppQjNaU0JoY21VZ2FXNGdZMjl0Y0dGMGFXSnBiR2wwZVNCdGIyUmxJR0Z1WkNCd2NtOTJhV1JsWEc0Z0lDQWdMeThnYVc1bWIzSnRZWFJwYjI0Z2IyNGdjSEpsZG1WdWRHbHVaeUJqYjIxd1lYUnBZbWxzYVhSNUlHMXZaR1ZjYmlBZ0lDQjJZWElnYVdWRGIyMXdZWFJwWW1sc2FYUjVUVzlrWlNBOUlHUnZZM1Z0Wlc1MExtUnZZM1Z0Wlc1MFRXOWtaU0FtSmlCa2IyTjFiV1Z1ZEM1a2IyTjFiV1Z1ZEUxdlpHVWdQQ0E0TzF4dVhHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lXbGxRMjl0Y0dGMGFXSnBiR2wwZVUxdlpHVXNJQ2RKYm5SbGNtNWxkQ0JGZUhCc2IzSmxjaUJwY3lCeWRXNXVhVzVuSUdsdUlHTnZiWEJoZEdsaWFXeHBkSGtnYlc5a1pUc2djR3hsWVhObElHRmtaQ0IwYUdVZ0p5QXJJQ2RtYjJ4c2IzZHBibWNnZEdGbklIUnZJSGx2ZFhJZ1NGUk5UQ0IwYnlCd2NtVjJaVzUwSUhSb2FYTWdabkp2YlNCb1lYQndaVzVwYm1jNklDY2dLeUFuUEcxbGRHRWdhSFIwY0MxbGNYVnBkajFjSWxndFZVRXRRMjl0Y0dGMGFXSnNaVndpSUdOdmJuUmxiblE5WENKSlJUMWxaR2RsWENJZ0x6NG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhaaGNpQmxlSEJsWTNSbFpFWmxZWFIxY21WeklEMGdXMXh1SUNBZ0lDOHZJSE5vYVcxelhHNGdJQ0FnUVhKeVlYa3VhWE5CY25KaGVTd2dRWEp5WVhrdWNISnZkRzkwZVhCbExtVjJaWEo1TENCQmNuSmhlUzV3Y205MGIzUjVjR1V1Wm05eVJXRmphQ3dnUVhKeVlYa3VjSEp2ZEc5MGVYQmxMbWx1WkdWNFQyWXNJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXRZWEFzSUVSaGRHVXVibTkzTENCR2RXNWpkR2x2Ymk1d2NtOTBiM1I1Y0dVdVltbHVaQ3dnVDJKcVpXTjBMbXRsZVhNc0lGTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWMzQnNhWFFzSUZOMGNtbHVaeTV3Y205MGIzUjVjR1V1ZEhKcGJTeGNibHh1SUNBZ0lDOHZJSE5vWVcxelhHNGdJQ0FnVDJKcVpXTjBMbU55WldGMFpTd2dUMkpxWldOMExtWnlaV1Y2WlYwN1hHNWNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHVjRjR1ZqZEdWa1JtVmhkSFZ5WlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR2xtSUNnaFpYaHdaV04wWldSR1pXRjBkWEpsYzF0cFhTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVZ5Y205eUtDZFBibVVnYjNJZ2JXOXlaU0JGVXpVZ2MyaHBiUzl6YUdGdGN5QmxlSEJsWTNSbFpDQmllU0JTWldGamRDQmhjbVVnYm05MElHRjJZV2xzWVdKc1pUb2dKeUFySUNkb2RIUndjem92TDJaaUxtMWxMM0psWVdOMExYZGhjbTVwYm1jdGNHOXNlV1pwYkd4ekp5azdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NQ29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbi8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEF1dG9Gb2N1c1V0aWxzID0gcmVxdWlyZSgnLi9BdXRvRm9jdXNVdGlscycpO1xudmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RE9NQnV0dG9uID0gcmVxdWlyZSgnLi9SZWFjdERPTUJ1dHRvbicpO1xudmFyIFJlYWN0RE9NSW5wdXQgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW5wdXQnKTtcbnZhciBSZWFjdERPTU9wdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01PcHRpb24nKTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3QnKTtcbnZhciBSZWFjdERPTVRleHRhcmVhID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRhcmVhJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcbnZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkZWxldGVMaXN0ZW5lciA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5kZWxldGVMaXN0ZW5lcjtcbnZhciBsaXN0ZW5UbyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5saXN0ZW5UbztcbnZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblxuLy8gRm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4gYmUgdHJlYXRlZCBhcyBjb250ZW50LlxudmFyIENPTlRFTlRfVFlQRVMgPSB7ICdzdHJpbmcnOiB0cnVlLCAnbnVtYmVyJzogdHJ1ZSB9O1xuXG52YXIgU1RZTEUgPSBrZXlPZih7IHN0eWxlOiBudWxsIH0pO1xuXG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBmYWxzZTtcbnRyeSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3Rlc3QnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7XG4gIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTtcbn0gY2F0Y2ggKGUpIHt9XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShpbnRlcm5hbEluc3RhbmNlKSB7XG4gIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgdmFyIG93bmVyID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG4gICAgaWYgKG93bmVyKSB7XG4gICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHJldHVybiAnIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAnICsgbmFtZSArICdgLic7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxudmFyIGxlZ2FjeVByb3BzRGVzY3JpcHRvcjtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGxlZ2FjeVByb3BzRGVzY3JpcHRvciA9IHtcbiAgICBwcm9wczoge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RET01Db21wb25lbnQ6IERvIG5vdCBhY2Nlc3MgLnByb3BzIG9mIGEgRE9NIG5vZGU7IGluc3RlYWQsICcgKyAncmVjcmVhdGUgdGhlIHByb3BzIGFzIGByZW5kZXJgIGRpZCBvcmlnaW5hbGx5IG9yIHJlYWQgdGhlIERPTSAnICsgJ3Byb3BlcnRpZXMvYXR0cmlidXRlcyBkaXJlY3RseSBmcm9tIHRoaXMgbm9kZSAoZS5nLiwgJyArICd0aGlzLnJlZnMuYm94LmNsYXNzTmFtZSkuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbGVnYWN5R2V0RE9NTm9kZSgpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5nZXRET01Ob2RlKCkgb2YgYSBET00gbm9kZTsgJyArICdpbnN0ZWFkLCB1c2UgdGhlIG5vZGUgZGlyZWN0bHkuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeUlzTW91bnRlZCgpIHtcbiAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAuaXNNb3VudGVkKCkgb2YgYSBET00gbm9kZS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gISFjb21wb25lbnQ7XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeVNldFN0YXRlRXRjKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb21wb25lbnQgPSB0aGlzLl9yZWFjdEludGVybmFsQ29tcG9uZW50O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RET01Db21wb25lbnQ6IERvIG5vdCBhY2Nlc3MgLnNldFN0YXRlKCksIC5yZXBsYWNlU3RhdGUoKSwgb3IgJyArICcuZm9yY2VVcGRhdGUoKSBvZiBhIERPTSBub2RlLiBUaGlzIGlzIGEgbm8tb3AuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVnYWN5U2V0UHJvcHMocGFydGlhbFByb3BzLCBjYWxsYmFjaykge1xuICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5zZXRQcm9wcygpIG9mIGEgRE9NIG5vZGUuICcgKyAnSW5zdGVhZCwgY2FsbCBSZWFjdERPTS5yZW5kZXIgYWdhaW4gYXQgdGhlIHRvcCBsZXZlbC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoIWNvbXBvbmVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRQcm9wc0ludGVybmFsKGNvbXBvbmVudCwgcGFydGlhbFByb3BzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChjb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWdhY3lSZXBsYWNlUHJvcHMocGFydGlhbFByb3BzLCBjYWxsYmFjaykge1xuICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5yZXBsYWNlUHJvcHMoKSBvZiBhIERPTSBub2RlLiAnICsgJ0luc3RlYWQsIGNhbGwgUmVhY3RET00ucmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKCFjb21wb25lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlUmVwbGFjZVByb3BzSW50ZXJuYWwoY29tcG9uZW50LCBwYXJ0aWFsUHJvcHMpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFja0ludGVybmFsKGNvbXBvbmVudCwgY2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZyaWVuZGx5U3RyaW5naWZ5KG9iaikge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gJ1snICsgb2JqLm1hcChmcmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhaXJzID0gW107XG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgdmFyIGtleUVzY2FwZWQgPSAvXlthLXokX11bXFx3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09OLnN0cmluZ2lmeShrZXkpO1xuICAgICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShvYmpba2V5XSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gJ3snICsgcGFpcnMuam9pbignLCAnKSArICd9JztcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICdbZnVuY3Rpb24gb2JqZWN0XSc7XG4gIH1cbiAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5IGluIHRoYXQgdW5kZWZpbmVkIGJlY2F1c2VzIHVuZGVmaW5lZCBhbmQgdGhhdFxuICAvLyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuICByZXR1cm4gU3RyaW5nKG9iaik7XG59XG5cbnZhciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkge1xuICBpZiAoc3R5bGUxID09IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHNoYWxsb3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgdmFyIG93bmVyTmFtZTtcbiAgaWYgKG93bmVyKSB7XG4gICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICB9XG5cbiAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lO1xuXG4gIGlmIChzdHlsZU11dGF0aW9uV2FybmluZy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0eWxlTXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IHByb3BzXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBwcm9wcykge1xuICBpZiAoIXByb3BzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIE5vdGUgdGhlIHVzZSBvZiBgPT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHZvaWRFbGVtZW50VGFnc1tjb21wb25lbnQuX3RhZ10pIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBub3QgaGF2ZSBgY2hpbGRyZW5gIG9yICcgKyAndXNlIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7XG4gICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgISh0eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmICdfX2h0bWwnIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiAnICsgJ1BsZWFzZSB2aXNpdCBodHRwczovL2ZiLm1lL3JlYWN0LWludmFyaWFudC1kYW5nZXJvdXNseS1zZXQtaW5uZXItaHRtbCAnICsgJ2ZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDogdW5kZWZpbmVkO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFwcm9wcy5jb250ZW50RWRpdGFibGUgfHwgcHJvcHMuY2hpbGRyZW4gPT0gbnVsbCwgJ0EgY29tcG9uZW50IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkgJyArICdSZWFjdC4gSXQgaXMgbm93IHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gZ3VhcmFudGVlIHRoYXQgbm9uZSBvZiAnICsgJ3Rob3NlIG5vZGVzIGFyZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQgb3IgZHVwbGljYXRlZC4gVGhpcyBpcyAnICsgJ3Byb2JhYmx5IG5vdCBpbnRlbnRpb25hbC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxuICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCAnICsgJ25vdCBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcXCdlbVxcJ319IHdoZW4gJyArICd1c2luZyBKU1guJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBlbnF1ZXVlUHV0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIElFOCBoYXMgbm8gQVBJIGZvciBldmVudCBjYXB0dXJpbmcgYW5kIHRoZSBgb25TY3JvbGxgIGV2ZW50IGRvZXNuJ3RcbiAgICAvLyBidWJibGUuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSwgJ1RoaXMgYnJvd3NlciBkb2VzblxcJ3Qgc3VwcG9ydCB0aGUgYG9uU2Nyb2xsYCBldmVudCcpIDogdW5kZWZpbmVkO1xuICB9XG4gIHZhciBjb250YWluZXIgPSBSZWFjdE1vdW50LmZpbmRSZWFjdENvbnRhaW5lckZvcklEKGlkKTtcbiAgaWYgKGNvbnRhaW5lcikge1xuICAgIHZhciBkb2MgPSBjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFID8gY29udGFpbmVyLm93bmVyRG9jdW1lbnQgOiBjb250YWluZXI7XG4gICAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9jKTtcbiAgfVxuICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHB1dExpc3RlbmVyLCB7XG4gICAgaWQ6IGlkLFxuICAgIHJlZ2lzdHJhdGlvbk5hbWU6IHJlZ2lzdHJhdGlvbk5hbWUsXG4gICAgbGlzdGVuZXI6IGxpc3RlbmVyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwdXRMaXN0ZW5lcigpIHtcbiAgdmFyIGxpc3RlbmVyVG9QdXQgPSB0aGlzO1xuICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIucHV0TGlzdGVuZXIobGlzdGVuZXJUb1B1dC5pZCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTtcbn1cblxuLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0XG4vLyBtYWludGFpbiBhIGxpc3QgcmF0aGVyIHRoYW4gY3JlYXRlIGEgYHRyYXBCdWJibGVkRXZlbnRgIGZvciBlYWNoXG52YXIgbWVkaWFFdmVudHMgPSB7XG4gIHRvcEFib3J0OiAnYWJvcnQnLFxuICB0b3BDYW5QbGF5OiAnY2FucGxheScsXG4gIHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLFxuICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJyxcbiAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLFxuICB0b3BFbmNyeXB0ZWQ6ICdlbmNyeXB0ZWQnLFxuICB0b3BFbmRlZDogJ2VuZGVkJyxcbiAgdG9wRXJyb3I6ICdlcnJvcicsXG4gIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJyxcbiAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScsXG4gIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsXG4gIHRvcFBhdXNlOiAncGF1c2UnLFxuICB0b3BQbGF5OiAncGxheScsXG4gIHRvcFBsYXlpbmc6ICdwbGF5aW5nJyxcbiAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG4gIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxcbiAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcbiAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLFxuICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG4gIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcbiAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLFxuICB0b3BXYWl0aW5nOiAnd2FpdGluZydcbn07XG5cbmZ1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9jYWwoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBudWxsLlxuICAhaW5zdC5fcm9vdE5vZGVJRCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNdXN0IGJlIG1vdW50ZWQgdG8gdHJhcCBldmVudHMnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKGluc3QuX3Jvb3ROb2RlSUQpO1xuICAhbm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHN3aXRjaCAoaW5zdC5fdGFnKSB7XG4gICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BMb2FkLCAnbG9hZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICBjYXNlICdhdWRpbyc6XG5cbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTtcbiAgICAgIC8vIGNyZWF0ZSBsaXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVudFxuICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVudHMpIHtcbiAgICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkge1xuICAgICAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzW2V2ZW50XSwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaW1nJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BFcnJvciwgJ2Vycm9yJywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wTG9hZCwgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmb3JtJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BSZXNldCwgJ3Jlc2V0Jywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wU3VibWl0LCAnc3VibWl0Jywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gbW91bnRSZWFkeUlucHV0V3JhcHBlcigpIHtcbiAgUmVhY3RET01JbnB1dC5tb3VudFJlYWR5V3JhcHBlcih0aGlzKTtcbn1cblxuZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIoKSB7XG4gIFJlYWN0RE9NU2VsZWN0LnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpO1xufVxuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIHNob3VsZCBvbWl0IHRoZWlyIGNsb3NlIHRhZy4gV2Uga2VlcCBhIHdoaXRlbGlzdCBmb3Jcbi8vIHRob3NlIHNwZWNpYWwgY2FzZWQgdGFncy5cblxudmFyIG9taXR0ZWRDbG9zZVRhZ3MgPSB7XG4gICdhcmVhJzogdHJ1ZSxcbiAgJ2Jhc2UnOiB0cnVlLFxuICAnYnInOiB0cnVlLFxuICAnY29sJzogdHJ1ZSxcbiAgJ2VtYmVkJzogdHJ1ZSxcbiAgJ2hyJzogdHJ1ZSxcbiAgJ2ltZyc6IHRydWUsXG4gICdpbnB1dCc6IHRydWUsXG4gICdrZXlnZW4nOiB0cnVlLFxuICAnbGluayc6IHRydWUsXG4gICdtZXRhJzogdHJ1ZSxcbiAgJ3BhcmFtJzogdHJ1ZSxcbiAgJ3NvdXJjZSc6IHRydWUsXG4gICd0cmFjayc6IHRydWUsXG4gICd3YnInOiB0cnVlXG59O1xuXG4vLyBOT1RFOiBtZW51aXRlbSdzIGNsb3NlIHRhZyBzaG91bGQgYmUgb21pdHRlZCwgYnV0IHRoYXQgY2F1c2VzIHByb2JsZW1zLlxudmFyIG5ld2xpbmVFYXRpbmdUYWdzID0ge1xuICAnbGlzdGluZyc6IHRydWUsXG4gICdwcmUnOiB0cnVlLFxuICAndGV4dGFyZWEnOiB0cnVlXG59O1xuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIGNhbm5vdCBoYXZlIGNoaWxkcmVuLiBUaGlzIGhhcyB0aGUgc2FtZSBwdXJwb3NlIGFzXG4vLyBgb21pdHRlZENsb3NlVGFnc2AgZXhjZXB0IHRoYXQgYG1lbnVpdGVtYCBzaG91bGQgc3RpbGwgaGF2ZSBpdHMgY2xvc2luZyB0YWcuXG5cbnZhciB2b2lkRWxlbWVudFRhZ3MgPSBhc3NpZ24oe1xuICAnbWVudWl0ZW0nOiB0cnVlXG59LCBvbWl0dGVkQ2xvc2VUYWdzKTtcblxuLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeVxuLy8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG5cbnZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEtWjpfXFwuXFwtXFxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9O1xudmFyIGhhc093blByb3BlcnR5ID0gKHt9KS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKSB7XG4gIGlmICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRUYWdDYWNoZSwgdGFnKSkge1xuICAgICFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQgdGFnOiAlcycsIHRhZykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NDaGlsZENvbnRleHREZXYoY29udGV4dCwgaW5zdCkge1xuICAvLyBQYXNzIGRvd24gb3VyIHRhZyBuYW1lIHRvIGNoaWxkIGNvbXBvbmVudHMgZm9yIHZhbGlkYXRpb24gcHVycG9zZXNcbiAgY29udGV4dCA9IGFzc2lnbih7fSwgY29udGV4dCk7XG4gIHZhciBpbmZvID0gY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV07XG4gIGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8oaW5mbywgaW5zdC5fdGFnLCBpbnN0KTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7XG4gIHJldHVybiB0YWdOYW1lLmluZGV4T2YoJy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFzcyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlclxuICogUmVhY3QgY29tcG9uZW50cy4gSXQgYWNjZXB0cyBldmVudCBsaXN0ZW5lcnMgYW5kIERPTSBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiB2YWxpZCBhY2NvcmRpbmcgdG8gYERPTVByb3BlcnR5YC5cbiAqXG4gKiAgLSBFdmVudCBsaXN0ZW5lcnM6IGBvbkNsaWNrYCwgYG9uTW91c2VEb3duYCwgZXRjLlxuICogIC0gRE9NIHByb3BlcnRpZXM6IGBjbGFzc05hbWVgLCBgbmFtZWAsIGB0aXRsZWAsIGV0Yy5cbiAqXG4gKiBUaGUgYHN0eWxlYCBwcm9wZXJ0eSBmdW5jdGlvbnMgZGlmZmVyZW50bHkgZnJvbSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBhblxuICogb2JqZWN0IG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yIFJlYWN0RE9NQ29tcG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdE11bHRpQ2hpbGRcbiAqL1xuZnVuY3Rpb24gUmVhY3RET01Db21wb25lbnQodGFnKSB7XG4gIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZyk7XG4gIHRoaXMuX3RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtcbiAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG51bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG4gIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcyA9IG51bGw7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ID0gbnVsbDtcbiAgICB0aGlzLl9wcm9jZXNzZWRDb250ZXh0RGV2ID0gbnVsbDtcbiAgfVxufVxuXG5SZWFjdERPTUNvbXBvbmVudC5kaXNwbGF5TmFtZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cblJlYWN0RE9NQ29tcG9uZW50Lk1peGluID0ge1xuXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyByb290IHRhZyBtYXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmRcbiAgICogaXMgbm90IGlkZW1wb3RlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIFRoZSByb290IERPTSBJRCBmb3IgdGhpcyBub2RlLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLlxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChyb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IHJvb3RJRDtcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBjYXNlICdpbWcnOlxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgICAgICBsaXN0ZW5lcnM6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NQnV0dG9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIFJlYWN0RE9NSW5wdXQubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTUlucHV0LmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICBSZWFjdERPTU9wdGlvbi5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBSZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgY29udGV4dCA9IFJlYWN0RE9NU2VsZWN0LnByb2Nlc3NDaGlsZENvbnRleHQodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgUmVhY3RET01UZXh0YXJlYS5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0TmF0aXZlUHJvcHModGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldKSB7XG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0aGlzLl90YWcsIHRoaXMsIGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ID0gY29udGV4dDtcbiAgICAgIHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXYgPSBwcm9jZXNzQ2hpbGRDb250ZXh0RGV2KGNvbnRleHQsIHRoaXMpO1xuICAgICAgY29udGV4dCA9IHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXY7XG4gICAgfVxuXG4gICAgdmFyIG1vdW50SW1hZ2U7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gY29udGV4dFtSZWFjdE1vdW50Lm93bmVyRG9jdW1lbnRDb250ZXh0S2V5XTtcbiAgICAgIHZhciBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRyaWJ1dGVGb3JJRChlbCwgdGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAvLyBQb3B1bGF0ZSBub2RlIGNhY2hlXG4gICAgICBSZWFjdE1vdW50LmdldElEKGVsKTtcbiAgICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoe30sIHByb3BzLCB0cmFuc2FjdGlvbiwgZWwpO1xuICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgZWwpO1xuICAgICAgbW91bnRJbWFnZSA9IGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdGFnT3BlbiA9IHRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3BzKTtcbiAgICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhpcy5fdGFnXSkge1xuICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICcvPic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyArIHRhZ0NvbnRlbnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSArICc+JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKG1vdW50UmVhZHlJbnB1dFdyYXBwZXIsIHRoaXMpO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gbW91bnRJbWFnZTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy5cbiAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvblxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5pbmcgdGFnLlxuICAgKi9cbiAgX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMpIHtcbiAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5zYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gU2VlIGBfdXBkYXRlRE9NUHJvcGVydGllc2AuIHN0eWxlIGJsb2NrXG4gICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9wVmFsdWUgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IGFzc2lnbih7fSwgcHJvcHMuc3R5bGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1hcmt1cCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkge1xuICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya3VwKSB7XG4gICAgICAgICAgcmV0ICs9ICcgJyArIG1hcmt1cDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBzdGF0aWMgcGFnZXMsIG5vIG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBjaGVja3N1bS4gU2F2ZXMgbG90cyBvZlxuICAgIC8vIGJ5dGVzLlxuICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICB2YXIgbWFya3VwRm9ySUQgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9ySUQodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgcmV0dXJuIHJldCArICcgJyArIG1hcmt1cEZvcklEO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIGNvbnRlbnQgYmV0d2VlbiB0aGUgdGFncy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFya3VwLlxuICAgKi9cbiAgX2NyZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgcmV0ID0gJyc7XG5cbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIHJldCA9IGlubmVySFRNTC5fX2h0bWw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlXG4gICAgICAgIHJldCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcihjb250ZW50VG9Vc2UpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgcmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZXdsaW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcXG4nKSB7XG4gICAgICAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZXNlIHRhZ3MgaWYgaXQncyBhIG5ld2xpbmVcbiAgICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuICAgICAgLy8gYSBuZXdsaW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5IGZvclxuICAgICAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJeXFxuXCIgd2l0aCBcIlxcclxcblwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG4gICAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cbiAgICAgIC8vIFNlZTogUGFyc2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcbiAgICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5PlxuICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSxcblxuICBfY3JlYXRlSW5pdGlhbENoaWxkcmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBlbCkge1xuICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGluZyB6ZXJvL2ZhbHNlLlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcbiAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChpbm5lckhUTUwuX19odG1sICE9IG51bGwpIHtcbiAgICAgICAgc2V0SW5uZXJIVE1MKGVsLCBpbm5lckhUTUwuX19odG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG4gICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgLy8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcbiAgICAgICAgc2V0VGV4dENvbnRlbnQoZWwsIGNvbnRlbnRUb1VzZSk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZWwuYXBwZW5kQ2hpbGQobW91bnRJbWFnZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyBhIG5leHQgZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50O1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBuYXRpdmUgRE9NIGNvbXBvbmVudCBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCBhbmRcbiAgICogYXR0YWNoZWQgdG8gdGhlIERPTS4gUmVjb25jaWxlcyB0aGUgcm9vdCBET00gbm9kZSwgdGhlbiByZWN1cnNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJldkVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKiBAb3ZlcnJpZGFibGVcbiAgICovXG4gIHVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpIHtcbiAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1lbnQucHJvcHM7XG4gICAgdmFyIG5leHRQcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NQnV0dG9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NQnV0dG9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXROYXRpdmVQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0TmF0aXZlUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJlYWN0RE9NVGV4dGFyZWEudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXROYXRpdmVQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyByZWZlcmVuY2UtZXF1YWwgdG8gdGhlIG9sZCBvbmUsIHBhc3MgZG93biB0aGUgc2FtZVxuICAgICAgLy8gcHJvY2Vzc2VkIG9iamVjdCBzbyB0aGUgdXBkYXRlIGJhaWxvdXQgaW4gUmVhY3RSZWNvbmNpbGVyIGJlaGF2ZXNcbiAgICAgIC8vIGNvcnJlY3RseSAoYW5kIGlkZW50aWNhbGx5IGluIGRldiBhbmQgcHJvZCkuIFNlZSAjNTAwNS5cbiAgICAgIGlmICh0aGlzLl91bnByb2Nlc3NlZENvbnRleHREZXYgIT09IGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldiA9IHByb2Nlc3NDaGlsZENvbnRleHREZXYoY29udGV4dCwgdGhpcyk7XG4gICAgICB9XG4gICAgICBjb250ZXh0ID0gdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldjtcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIG51bGwpO1xuICAgIHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cbiAgICBpZiAoIWNhbkRlZmluZVByb3BlcnR5ICYmIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcykge1xuICAgICAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzLnByb3BzID0gbmV4dFByb3BzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICAvLyA8c2VsZWN0PiB2YWx1ZSB1cGRhdGUgbmVlZHMgdG8gb2NjdXIgYWZ0ZXIgPG9wdGlvbj4gY2hpbGRyZW5cbiAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyLCB0aGlzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmRcbiAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0XG4gICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1YWxseVxuICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzXG4gICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uXG4gICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIF91cGRhdGVET01Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBub2RlKSB7XG4gICAgdmFyIHByb3BLZXk7XG4gICAgdmFyIHN0eWxlTmFtZTtcbiAgICB2YXIgc3R5bGVVcGRhdGVzO1xuICAgIGZvciAocHJvcEtleSBpbiBsYXN0UHJvcHMpIHtcbiAgICAgIGlmIChuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgIWxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICB2YXIgbGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7XG4gICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RTdHlsZSkge1xuICAgICAgICAgIGlmIChsYXN0U3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAobGFzdFByb3BzW3Byb3BLZXldKSB7XG4gICAgICAgICAgLy8gT25seSBjYWxsIGRlbGV0ZUxpc3RlbmVyIGlmIHRoZXJlIHdhcyBhIGxpc3RlbmVyIHByZXZpb3VzbHkgb3JcbiAgICAgICAgICAvLyBlbHNlIHdpbGxEZWxldGVMaXN0ZW5lciBnZXRzIGNhbGxlZCB3aGVuIHRoZXJlIHdhc24ndCBhY3R1YWxseSBhXG4gICAgICAgICAgLy8gbGlzdGVuZXIgKGUuZy4sIG9uQ2xpY2s9e251bGx9KVxuICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMuX3Jvb3ROb2RlSUQsIHByb3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICAgICAgfVxuICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChwcm9wS2V5IGluIG5leHRQcm9wcykge1xuICAgICAgdmFyIG5leHRQcm9wID0gbmV4dFByb3BzW3Byb3BLZXldO1xuICAgICAgdmFyIGxhc3RQcm9wID0gcHJvcEtleSA9PT0gU1RZTEUgPyB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA6IGxhc3RQcm9wc1twcm9wS2V5XTtcbiAgICAgIGlmICghbmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8IG5leHRQcm9wID09PSBsYXN0UHJvcCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICBpZiAobmV4dFByb3ApIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBuZXh0UHJvcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IGFzc2lnbih7fSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdFByb3ApIHtcbiAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9wYCBidXQgbm90IG9uIGBuZXh0UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFByb3ApIHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVXBkYXRlIHN0eWxlcyB0aGF0IGNoYW5nZWQgc2luY2UgYGxhc3RQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJvcCkge1xuICAgICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgbGFzdFByb3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkge1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVsaWVzIG9uIGB1cGRhdGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxlVXBkYXRlc2AuXG4gICAgICAgICAgc3R5bGVVcGRhdGVzID0gbmV4dFByb3A7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKG5leHRQcm9wKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMuX3Jvb3ROb2RlSUQsIHByb3BLZXksIG5leHRQcm9wLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAobGFzdFByb3ApIHtcbiAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIG5leHRQcm9wcykpIHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICAgICAgfVxuICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUobm9kZSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHByb3BlcnR5XG4gICAgICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGluc3RlYWQgb2YgaW5hZHZlcnRhbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzXG4gICAgICAgIC8vIGJyaW5ncyB1cyBpbiBsaW5lIHdpdGggdGhlIHNhbWUgYmVoYXZpb3Igd2UgaGF2ZSBvbiBpbml0aWFsIHJlbmRlci5cbiAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5LCBuZXh0UHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0eWxlVXBkYXRlcykge1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICB9XG4gICAgICBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JTdHlsZXMobm9kZSwgc3R5bGVVcGRhdGVzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFmZmVjdCB0aGVcbiAgICogY2hpbGRyZW4gY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICovXG4gIF91cGRhdGVET01DaGlsZHJlbjogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIGxhc3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgIHZhciBuZXh0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIG5leHRQcm9wcy5jaGlsZHJlbl0gPyBuZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXG4gICAgdmFyIGxhc3RIdG1sID0gbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG4gICAgdmFyIG5leHRIdG1sID0gbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG5cbiAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuICAgIHZhciBsYXN0Q2hpbGRyZW4gPSBsYXN0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IGxhc3RQcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgbmV4dENoaWxkcmVuID0gbmV4dENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBuZXh0UHJvcHMuY2hpbGRyZW47XG5cbiAgICAvLyBJZiB3ZSdyZSBzd2l0Y2hpbmcgZnJvbSBjaGlsZHJlbiB0byBjb250ZW50L2h0bWwgb3IgdmljZSB2ZXJzYSwgcmVtb3ZlXG4gICAgLy8gdGhlIG9sZCBjb250ZW50XG4gICAgdmFyIGxhc3RIYXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8fCBsYXN0SHRtbCAhPSBudWxsO1xuICAgIHZhciBuZXh0SGFzQ29udGVudE9ySHRtbCA9IG5leHRDb250ZW50ICE9IG51bGwgfHwgbmV4dEh0bWwgIT0gbnVsbDtcbiAgICBpZiAobGFzdENoaWxkcmVuICE9IG51bGwgJiYgbmV4dENoaWxkcmVuID09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAobGFzdEhhc0NvbnRlbnRPckh0bWwgJiYgIW5leHRIYXNDb250ZW50T3JIdG1sKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dENvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0Q29udGVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dEh0bWwgIT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RIdG1sICE9PSBuZXh0SHRtbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1hcmt1cCgnJyArIG5leHRIdG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRDaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIGV2ZW50IHJlZ2lzdHJhdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9tXG4gICAqIHRoZSBET00uIFRoYXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgY2FzZSAnaW1nJzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztcbiAgICAgICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnNbaV0ucmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBSZWFjdERPTUlucHV0LnVubW91bnRXcmFwcGVyKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbXBvbmVudHMgbGlrZSA8aHRtbD4gPGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZFxuICAgICAgICAgKiBlYXNpbHkgaW4gYSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZlciBpdCdzIHZhbHVhYmxlIHRvIGJlIGFibGUgdG9cbiAgICAgICAgICogdGFrZSBhZHZhbnRhZ2Ugb2YgUmVhY3QncyByZWNvbmNpbGlhdGlvbiBmb3Igc3R5bGluZyBhbmQgPHRpdGxlPlxuICAgICAgICAgKiBtYW5hZ2VtZW50LiBTbyB3ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMgY2FzZXMuXG4gICAgICAgICAqL1xuICAgICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50LiBCZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzICcgKyAnaW1wb3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxldmVsIGNvbXBvbmVudHMgKGVnIDxodG1sPiwgJyArICc8aGVhZD4sIGFuZCA8Ym9keT4pIHJlbGlhYmx5IGFuZCBlZmZpY2llbnRseS4gVG8gZml4IHRoaXMsIGhhdmUgYSAnICsgJ3NpbmdsZSB0b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlICcgKyAnZWxlbWVudHMuJywgdGhpcy5fdGFnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudW5tb3VudENoaWxkcmVuKCk7XG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDtcbiAgICBpZiAodGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgbm9kZSA9IHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcztcbiAgICAgIG5vZGUuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQgPSBudWxsO1xuICAgICAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzID0gbnVsbDtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcykge1xuICAgICAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG5cbiAgICAgIG5vZGUuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQgPSB0aGlzO1xuICAgICAgbm9kZS5nZXRET01Ob2RlID0gbGVnYWN5R2V0RE9NTm9kZTtcbiAgICAgIG5vZGUuaXNNb3VudGVkID0gbGVnYWN5SXNNb3VudGVkO1xuICAgICAgbm9kZS5zZXRTdGF0ZSA9IGxlZ2FjeVNldFN0YXRlRXRjO1xuICAgICAgbm9kZS5yZXBsYWNlU3RhdGUgPSBsZWdhY3lTZXRTdGF0ZUV0YztcbiAgICAgIG5vZGUuZm9yY2VVcGRhdGUgPSBsZWdhY3lTZXRTdGF0ZUV0YztcbiAgICAgIG5vZGUuc2V0UHJvcHMgPSBsZWdhY3lTZXRQcm9wcztcbiAgICAgIG5vZGUucmVwbGFjZVByb3BzID0gbGVnYWN5UmVwbGFjZVByb3BzO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhub2RlLCBsZWdhY3lQcm9wc0Rlc2NyaXB0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZUNvbXBvbmVudCB3aWxsIHVwZGF0ZSB0aGlzIHByb3BlcnR5IG9uIHN1YnNlcXVlbnQgcmVuZGVyc1xuICAgICAgICAgIG5vZGUucHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdXBkYXRlQ29tcG9uZW50IHdpbGwgdXBkYXRlIHRoaXMgcHJvcGVydHkgb24gc3Vic2VxdWVudCByZW5kZXJzXG4gICAgICAgIG5vZGUucHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzID0gbm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcztcbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoUmVhY3RET01Db21wb25lbnQsICdSZWFjdERPTUNvbXBvbmVudCcsIHtcbiAgbW91bnRDb21wb25lbnQ6ICdtb3VudENvbXBvbmVudCcsXG4gIHVwZGF0ZUNvbXBvbmVudDogJ3VwZGF0ZUNvbXBvbmVudCdcbn0pO1xuXG5hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJvdG90eXBlLCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMURiMjF3YjI1bGJuUXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmk4cUlHZHNiMkpoYkNCb1lYTlBkMjVRY205d1pYSjBlVHAwY25WbElDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFRjFkRzlHYjJOMWMxVjBhV3h6SUQwZ2NtVnhkV2x5WlNnbkxpOUJkWFJ2Um05amRYTlZkR2xzY3ljcE8xeHVkbUZ5SUVOVFUxQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5QTlJSEpsY1hWcGNtVW9KeTR2UTFOVFVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekp5azdYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIa2dQU0J5WlhGMWFYSmxLQ2N1TDBSUFRWQnliM0JsY25SNUp5azdYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpJRDBnY21WeGRXbHlaU2duTGk5RVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTW5LVHRjYm5aaGNpQkZkbVZ1ZEVOdmJuTjBZVzUwY3lBOUlISmxjWFZwY21Vb0p5NHZSWFpsYm5SRGIyNXpkR0Z1ZEhNbktUdGNiblpoY2lCU1pXRmpkRUp5YjNkelpYSkZkbVZ1ZEVWdGFYUjBaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2ljcE8xeHVkbUZ5SUZKbFlXTjBRMjl0Y0c5dVpXNTBRbkp2ZDNObGNrVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkRUp5YjNkelpYSkZiblpwY205dWJXVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFJFOU5RblYwZEc5dUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVUoxZEhSdmJpY3BPMXh1ZG1GeUlGSmxZV04wUkU5TlNXNXdkWFFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUkU5TlNXNXdkWFFuS1R0Y2JuWmhjaUJTWldGamRFUlBUVTl3ZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFQY0hScGIyNG5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRWTmxiR1ZqZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVQwMVRaV3hsWTNRbktUdGNiblpoY2lCU1pXRmpkRVJQVFZSbGVIUmhjbVZoSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSUFRWUmxlSFJoY21WaEp5azdYRzUyWVhJZ1VtVmhZM1JOYjNWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5iM1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBUWFZzZEdsRGFHbHNaQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOZFd4MGFVTm9hV3hrSnlrN1hHNTJZWElnVW1WaFkzUlFaWEptSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZCbGNtWW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlZGMVpYVmxKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmxjMk5oY0dWVVpYaDBRMjl1ZEdWdWRFWnZja0p5YjNkelpYSWdQU0J5WlhGMWFYSmxLQ2N1TDJWelkyRndaVlJsZUhSRGIyNTBaVzUwUm05eVFuSnZkM05sY2ljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlHbHpSWFpsYm5SVGRYQndiM0owWldRZ1BTQnlaWEYxYVhKbEtDY3VMMmx6UlhabGJuUlRkWEJ3YjNKMFpXUW5LVHRjYm5aaGNpQnJaWGxQWmlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwydGxlVTltSnlrN1hHNTJZWElnYzJWMFNXNXVaWEpJVkUxTUlEMGdjbVZ4ZFdseVpTZ25MaTl6WlhSSmJtNWxja2hVVFV3bktUdGNiblpoY2lCelpYUlVaWGgwUTI5dWRHVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmMyVjBWR1Y0ZEVOdmJuUmxiblFuS1R0Y2JuWmhjaUJ6YUdGc2JHOTNSWEYxWVd3Z1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXphR0ZzYkc5M1JYRjFZV3duS1R0Y2JuWmhjaUIyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWNnUFNCeVpYRjFhWEpsS0NjdUwzWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVp5Y3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm5aaGNpQmtaV3hsZEdWTWFYTjBaVzVsY2lBOUlGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1a1pXeGxkR1ZNYVhOMFpXNWxjanRjYm5aaGNpQnNhWE4wWlc1VWJ5QTlJRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNXNhWE4wWlc1VWJ6dGNiblpoY2lCeVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjeUE5SUZKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaTV5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN6dGNibHh1THk4Z1JtOXlJSEYxYVdOcmJIa2diV0YwWTJocGJtY2dZMmhwYkdSeVpXNGdkSGx3WlN3Z2RHOGdkR1Z6ZENCcFppQmpZVzRnWW1VZ2RISmxZWFJsWkNCaGN5QmpiMjUwWlc1MExseHVkbUZ5SUVOUFRsUkZUbFJmVkZsUVJWTWdQU0I3SUNkemRISnBibWNuT2lCMGNuVmxMQ0FuYm5WdFltVnlKem9nZEhKMVpTQjlPMXh1WEc1MllYSWdVMVJaVEVVZ1BTQnJaWGxQWmloN0lITjBlV3hsT2lCdWRXeHNJSDBwTzF4dVhHNTJZWElnUlV4RlRVVk9WRjlPVDBSRlgxUlpVRVVnUFNBeE8xeHVYRzUyWVhJZ1kyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrZ1BTQm1ZV3h6WlR0Y2JuUnllU0I3WEc0Z0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2g3ZlN3Z0ozUmxjM1FuTENCN0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2UzMGdmU2s3WEc0Z0lHTmhia1JsWm1sdVpWQnliM0JsY25SNUlEMGdkSEoxWlR0Y2JuMGdZMkYwWTJnZ0tHVXBJSHQ5WEc1Y2JtWjFibU4wYVc5dUlHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaHBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUdsbUlDaHBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ2RtRnlJRzkzYm1WeUlEMGdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZZM1Z5Y21WdWRFVnNaVzFsYm5RdVgyOTNibVZ5SUh4OElHNTFiR3c3WEc0Z0lDQWdhV1lnS0c5M2JtVnlLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JtRnRaU0E5SUc5M2JtVnlMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFuSUZSb2FYTWdSRTlOSUc1dlpHVWdkMkZ6SUhKbGJtUmxjbVZrSUdKNUlHQW5JQ3NnYm1GdFpTQXJJQ2RnTGljN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUFuSnp0Y2JuMWNibHh1ZG1GeUlHeGxaMkZqZVZCeWIzQnpSR1Z6WTNKcGNIUnZjanRjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lHeGxaMkZqZVZCeWIzQnpSR1Z6WTNKcGNIUnZjaUE5SUh0Y2JpQWdJQ0J3Y205d2N6b2dlMXh1SUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQm5aWFE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUTdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVW1WaFkzUkVUMDFEYjIxd2IyNWxiblE2SUVSdklHNXZkQ0JoWTJObGMzTWdMbkJ5YjNCeklHOW1JR0VnUkU5TklHNXZaR1U3SUdsdWMzUmxZV1FzSUNjZ0t5QW5jbVZqY21WaGRHVWdkR2hsSUhCeWIzQnpJR0Z6SUdCeVpXNWtaWEpnSUdScFpDQnZjbWxuYVc1aGJHeDVJRzl5SUhKbFlXUWdkR2hsSUVSUFRTQW5JQ3NnSjNCeWIzQmxjblJwWlhNdllYUjBjbWxpZFhSbGN5QmthWEpsWTNSc2VTQm1jbTl0SUhSb2FYTWdibTlrWlNBb1pTNW5MaXdnSnlBcklDZDBhR2x6TG5KbFpuTXVZbTk0TG1Oc1lYTnpUbUZ0WlNrdUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpiMjF3YjI1bGJuUXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuQnliM0J6TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2JHVm5ZV041UjJWMFJFOU5UbTlrWlNncElIdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQjJZWElnWTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVmY21WaFkzUkpiblJsY201aGJFTnZiWEJ2Ym1WdWREdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxSmxZV04wUkU5TlEyOXRjRzl1Wlc1ME9pQkVieUJ1YjNRZ1lXTmpaWE56SUM1blpYUkVUMDFPYjJSbEtDa2diMllnWVNCRVQwMGdibTlrWlRzZ0p5QXJJQ2RwYm5OMFpXRmtMQ0IxYzJVZ2RHaGxJRzV2WkdVZ1pHbHlaV04wYkhrdUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlIUm9hWE03WEc1OVhHNWNibVoxYm1OMGFXOXVJR3hsWjJGamVVbHpUVzkxYm5SbFpDZ3BJSHRjYmlBZ2RtRnlJR052YlhCdmJtVnVkQ0E5SUhSb2FYTXVYM0psWVdOMFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5RN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWREb2dSRzhnYm05MElHRmpZMlZ6Y3lBdWFYTk5iM1Z1ZEdWa0tDa2diMllnWVNCRVQwMGdibTlrWlM0bGN5Y3NJR2RsZEVSbFkyeGhjbUYwYVc5dVJYSnliM0pCWkdSbGJtUjFiU2hqYjIxd2IyNWxiblFwS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dUlDQnlaWFIxY200Z0lTRmpiMjF3YjI1bGJuUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHeGxaMkZqZVZObGRGTjBZWFJsUlhSaktDa2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSFpoY2lCamIyMXdiMjVsYm5RZ1BTQjBhR2x6TGw5eVpXRmpkRWx1ZEdWeWJtRnNRMjl0Y0c5dVpXNTBPMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5VbVZoWTNSRVQwMURiMjF3YjI1bGJuUTZJRVJ2SUc1dmRDQmhZMk5sYzNNZ0xuTmxkRk4wWVhSbEtDa3NJQzV5WlhCc1lXTmxVM1JoZEdVb0tTd2diM0lnSnlBcklDY3VabTl5WTJWVmNHUmhkR1VvS1NCdlppQmhJRVJQVFNCdWIyUmxMaUJVYUdseklHbHpJR0VnYm04dGIzQXVKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2JHVm5ZV041VTJWMFVISnZjSE1vY0dGeWRHbGhiRkJ5YjNCekxDQmpZV3hzWW1GamF5a2dlMXh1SUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZjbVZoWTNSSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZER0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxSmxZV04wUkU5TlEyOXRjRzl1Wlc1ME9pQkVieUJ1YjNRZ1lXTmpaWE56SUM1elpYUlFjbTl3Y3lncElHOW1JR0VnUkU5TklHNXZaR1V1SUNjZ0t5QW5TVzV6ZEdWaFpDd2dZMkZzYkNCU1pXRmpkRVJQVFM1eVpXNWtaWElnWVdkaGFXNGdZWFFnZEdobElIUnZjQ0JzWlhabGJDNGxjeWNzSUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNoamIyMXdiMjVsYm5RcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVJQ0JwWmlBb0lXTnZiWEJ2Ym1WdWRDa2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTG1WdWNYVmxkV1ZUWlhSUWNtOXdjMGx1ZEdWeWJtRnNLR052YlhCdmJtVnVkQ3dnY0dGeWRHbGhiRkJ5YjNCektUdGNiaUFnYVdZZ0tHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlM1bGJuRjFaWFZsUTJGc2JHSmhZMnRKYm5SbGNtNWhiQ2hqYjIxd2IyNWxiblFzSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnNaV2RoWTNsU1pYQnNZV05sVUhKdmNITW9jR0Z5ZEdsaGJGQnliM0J6TENCallXeHNZbUZqYXlrZ2UxeHVJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdkR2hwY3k1ZmNtVmhZM1JKYm5SbGNtNWhiRU52YlhCdmJtVnVkRHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjFKbFlXTjBSRTlOUTI5dGNHOXVaVzUwT2lCRWJ5QnViM1FnWVdOalpYTnpJQzV5WlhCc1lXTmxVSEp2Y0hNb0tTQnZaaUJoSUVSUFRTQnViMlJsTGlBbklDc2dKMGx1YzNSbFlXUXNJR05oYkd3Z1VtVmhZM1JFVDAwdWNtVnVaR1Z5SUdGbllXbHVJR0YwSUhSb1pTQjBiM0FnYkdWMlpXd3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnYVdZZ0tDRmpiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlM1bGJuRjFaWFZsVW1Wd2JHRmpaVkJ5YjNCelNXNTBaWEp1WVd3b1kyOXRjRzl1Wlc1MExDQndZWEowYVdGc1VISnZjSE1wTzF4dUlDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0JTWldGamRGVndaR0YwWlZGMVpYVmxMbVZ1Y1hWbGRXVkRZV3hzWW1GamEwbHVkR1Z5Ym1Gc0tHTnZiWEJ2Ym1WdWRDd2dZMkZzYkdKaFkyc3BPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUdaeWFXVnVaR3g1VTNSeWFXNW5hV1o1S0c5aWFpa2dlMXh1SUNCcFppQW9kSGx3Wlc5bUlHOWlhaUE5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNodlltb3BLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKMXNuSUNzZ2IySnFMbTFoY0NobWNtbGxibVJzZVZOMGNtbHVaMmxtZVNrdWFtOXBiaWduTENBbktTQXJJQ2RkSnp0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkbUZ5SUhCaGFYSnpJRDBnVzEwN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCclpYa2dhVzRnYjJKcUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2IySnFMQ0JyWlhrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlHdGxlVVZ6WTJGd1pXUWdQU0F2WGx0aExYb2tYMTFiWEZ4M0pGOWRLaVF2YVM1MFpYTjBLR3RsZVNrZ1B5QnJaWGtnT2lCS1UwOU9Mbk4wY21sdVoybG1lU2hyWlhrcE8xeHVJQ0FnSUNBZ0lDQWdJSEJoYVhKekxuQjFjMmdvYTJWNVJYTmpZWEJsWkNBcklDYzZJQ2NnS3lCbWNtbGxibVJzZVZOMGNtbHVaMmxtZVNodlltcGJhMlY1WFNrcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z0ozc25JQ3NnY0dGcGNuTXVhbTlwYmlnbkxDQW5LU0FySUNkOUp6dGNiaUFnSUNCOVhHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JRzlpYWlBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQnlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYjJKcUtUdGNiaUFnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnYjJKcUlEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2RiWm5WdVkzUnBiMjRnYjJKcVpXTjBYU2M3WEc0Z0lIMWNiaUFnTHk4Z1JHbG1abVZ5Y3lCbWNtOXRJRXBUVDA0dWMzUnlhVzVuYVdaNUlHbHVJSFJvWVhRZ2RXNWtaV1pwYm1Wa0lHSmxZMkYxYzJWeklIVnVaR1ZtYVc1bFpDQmhibVFnZEdoaGRGeHVJQ0F2THlCcGJtWWdZVzVrSUc1aGJpQmtiMjRuZENCaVpXTnZiV1VnYm5Wc2JGeHVJQ0J5WlhSMWNtNGdVM1J5YVc1bktHOWlhaWs3WEc1OVhHNWNiblpoY2lCemRIbHNaVTExZEdGMGFXOXVWMkZ5Ym1sdVp5QTlJSHQ5TzF4dVhHNW1kVzVqZEdsdmJpQmphR1ZqYTBGdVpGZGhjbTVHYjNKTmRYUmhkR1ZrVTNSNWJHVW9jM1I1YkdVeExDQnpkSGxzWlRJc0lHTnZiWEJ2Ym1WdWRDa2dlMXh1SUNCcFppQW9jM1I1YkdVeElEMDlJRzUxYkd3Z2ZId2djM1I1YkdVeUlEMDlJRzUxYkd3cElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnYVdZZ0tITm9ZV3hzYjNkRmNYVmhiQ2h6ZEhsc1pURXNJSE4wZVd4bE1pa3BJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmx4dUlDQjJZWElnWTI5dGNHOXVaVzUwVG1GdFpTQTlJR052YlhCdmJtVnVkQzVmZEdGbk8xeHVJQ0IyWVhJZ2IzZHVaWElnUFNCamIyMXdiMjVsYm5RdVgyTjFjbkpsYm5SRmJHVnRaVzUwTGw5dmQyNWxjanRjYmlBZ2RtRnlJRzkzYm1WeVRtRnRaVHRjYmlBZ2FXWWdLRzkzYm1WeUtTQjdYRzRnSUNBZ2IzZHVaWEpPWVcxbElEMGdiM2R1WlhJdVoyVjBUbUZ0WlNncE8xeHVJQ0I5WEc1Y2JpQWdkbUZ5SUdoaGMyZ2dQU0J2ZDI1bGNrNWhiV1VnS3lBbmZDY2dLeUJqYjIxd2IyNWxiblJPWVcxbE8xeHVYRzRnSUdsbUlDaHpkSGxzWlUxMWRHRjBhVzl1VjJGeWJtbHVaeTVvWVhOUGQyNVFjbTl3WlhKMGVTaG9ZWE5vS1NrZ2UxeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVYRzRnSUhOMGVXeGxUWFYwWVhScGIyNVhZWEp1YVc1blcyaGhjMmhkSUQwZ2RISjFaVHRjYmx4dUlDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMkFsYzJBZ2QyRnpJSEJoYzNObFpDQmhJSE4wZVd4bElHOWlhbVZqZENCMGFHRjBJR2hoY3lCd2NtVjJhVzkxYzJ4NUlHSmxaVzRnYlhWMFlYUmxaQzRnSnlBcklDZE5kWFJoZEdsdVp5QmdjM1I1YkdWZ0lHbHpJR1JsY0hKbFkyRjBaV1F1SUVOdmJuTnBaR1Z5SUdOc2IyNXBibWNnYVhRZ1ltVm1iM0psYUdGdVpDNGdRMmhsWTJzZ0p5QXJJQ2QwYUdVZ1lISmxibVJsY21BZ0pYTXVJRkJ5WlhacGIzVnpJSE4wZVd4bE9pQWxjeTRnVFhWMFlYUmxaQ0J6ZEhsc1pUb2dKWE11Snl3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnYjNkdVpYSWdQeUFuYjJZZ1lDY2dLeUJ2ZDI1bGNrNWhiV1VnS3lBbllDY2dPaUFuZFhOcGJtY2dQQ2NnS3lCamIyMXdiMjVsYm5ST1lXMWxJQ3NnSno0bkxDQm1jbWxsYm1Sc2VWTjBjbWx1WjJsbWVTaHpkSGxzWlRFcExDQm1jbWxsYm1Sc2VWTjBjbWx1WjJsbWVTaHpkSGxzWlRJcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXRjRzl1Wlc1MFhHNGdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJSEJ5YjNCelhHNGdLaTljYm1aMWJtTjBhVzl1SUdGemMyVnlkRlpoYkdsa1VISnZjSE1vWTI5dGNHOXVaVzUwTENCd2NtOXdjeWtnZTF4dUlDQnBaaUFvSVhCeWIzQnpLU0I3WEc0Z0lDQWdjbVYwZFhKdU8xeHVJQ0I5WEc0Z0lDOHZJRTV2ZEdVZ2RHaGxJSFZ6WlNCdlppQmdQVDFnSUhkb2FXTm9JR05vWldOcmN5Qm1iM0lnYm5Wc2JDQnZjaUIxYm1SbFptbHVaV1F1WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnYVdZZ0tIWnZhV1JGYkdWdFpXNTBWR0ZuYzF0amIyMXdiMjVsYm5RdVgzUmhaMTBwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIQnliM0J6TG1Ob2FXeGtjbVZ1SUQwOUlHNTFiR3dnSmlZZ2NISnZjSE11WkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVd2dQVDBnYm5Wc2JDd2dKeVZ6SUdseklHRWdkbTlwWkNCbGJHVnRaVzUwSUhSaFp5QmhibVFnYlhWemRDQnViM1FnYUdGMlpTQmdZMmhwYkdSeVpXNWdJRzl5SUNjZ0t5QW5kWE5sSUdCd2NtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRHQXVKWE1uTENCamIyMXdiMjVsYm5RdVgzUmhaeXdnWTI5dGNHOXVaVzUwTGw5amRYSnlaVzUwUld4bGJXVnVkQzVmYjNkdVpYSWdQeUFuSUVOb1pXTnJJSFJvWlNCeVpXNWtaWElnYldWMGFHOWtJRzltSUNjZ0t5QmpiMjF3YjI1bGJuUXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExsOXZkMjVsY2k1blpYUk9ZVzFsS0NrZ0t5QW5MaWNnT2lBbkp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJR2xtSUNod2NtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lTaHdjbTl3Y3k1amFHbHNaSEpsYmlBOVBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2REWVc0Z2IyNXNlU0J6WlhRZ2IyNWxJRzltSUdCamFHbHNaSEpsYm1BZ2IzSWdZSEJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNWUM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJU2gwZVhCbGIyWWdjSEp2Y0hNdVpHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXdnUFQwOUlDZHZZbXBsWTNRbklDWW1JQ2RmWDJoMGJXd25JR2x1SUhCeWIzQnpMbVJoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTUtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkZ2NISnZjSE11WkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVeGdJRzExYzNRZ1ltVWdhVzRnZEdobElHWnZjbTBnWUh0ZlgyaDBiV3c2SUM0dUxuMWdMaUFuSUNzZ0oxQnNaV0Z6WlNCMmFYTnBkQ0JvZEhSd2N6b3ZMMlppTG0xbEwzSmxZV04wTFdsdWRtRnlhV0Z1ZEMxa1lXNW5aWEp2ZFhOc2VTMXpaWFF0YVc1dVpYSXRhSFJ0YkNBbklDc2dKMlp2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1TGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSEJ5YjNCekxtbHVibVZ5U0ZSTlRDQTlQU0J1ZFd4c0xDQW5SR2x5WldOMGJIa2djMlYwZEdsdVp5QndjbTl3WlhKMGVTQmdhVzV1WlhKSVZFMU1ZQ0JwY3lCdWIzUWdjR1Z5YldsMGRHVmtMaUFuSUNzZ0owWnZjaUJ0YjNKbElHbHVabTl5YldGMGFXOXVMQ0JzYjI5cmRYQWdaRzlqZFcxbGJuUmhkR2x2YmlCdmJpQmdaR0Z1WjJWeWIzVnpiSGxUWlhSSmJtNWxja2hVVFV4Z0xpY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGd2NtOXdjeTVqYjI1MFpXNTBSV1JwZEdGaWJHVWdmSHdnY0hKdmNITXVZMmhwYkdSeVpXNGdQVDBnYm5Wc2JDd2dKMEVnWTI5dGNHOXVaVzUwSUdseklHQmpiMjUwWlc1MFJXUnBkR0ZpYkdWZ0lHRnVaQ0JqYjI1MFlXbHVjeUJnWTJocGJHUnlaVzVnSUcxaGJtRm5aV1FnWW5rZ0p5QXJJQ2RTWldGamRDNGdTWFFnYVhNZ2JtOTNJSGx2ZFhJZ2NtVnpjRzl1YzJsaWFXeHBkSGtnZEc4Z1ozVmhjbUZ1ZEdWbElIUm9ZWFFnYm05dVpTQnZaaUFuSUNzZ0ozUm9iM05sSUc1dlpHVnpJR0Z5WlNCMWJtVjRjR1ZqZEdWa2JIa2diVzlrYVdacFpXUWdiM0lnWkhWd2JHbGpZWFJsWkM0Z1ZHaHBjeUJwY3lBbklDc2dKM0J5YjJKaFlteDVJRzV2ZENCcGJuUmxiblJwYjI1aGJDNG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNBaEtIQnliM0J6TG5OMGVXeGxJRDA5SUc1MWJHd2dmSHdnZEhsd1pXOW1JSEJ5YjNCekxuTjBlV3hsSUQwOVBTQW5iMkpxWldOMEp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblZHaGxJR0J6ZEhsc1pXQWdjSEp2Y0NCbGVIQmxZM1J6SUdFZ2JXRndjR2x1WnlCbWNtOXRJSE4wZVd4bElIQnliM0JsY25ScFpYTWdkRzhnZG1Gc2RXVnpMQ0FuSUNzZ0oyNXZkQ0JoSUhOMGNtbHVaeTRnUm05eUlHVjRZVzF3YkdVc0lITjBlV3hsUFh0N2JXRnlaMmx1VW1sbmFIUTZJSE53WVdOcGJtY2dLeUJjWENkbGJWeGNKMzE5SUhkb1pXNGdKeUFySUNkMWMybHVaeUJLVTFndUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmxibkYxWlhWbFVIVjBUR2x6ZEdWdVpYSW9hV1FzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VzSUd4cGMzUmxibVZ5TENCMGNtRnVjMkZqZEdsdmJpa2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQzh2SUVsRk9DQm9ZWE1nYm04Z1FWQkpJR1p2Y2lCbGRtVnVkQ0JqWVhCMGRYSnBibWNnWVc1a0lIUm9aU0JnYjI1VFkzSnZiR3hnSUdWMlpXNTBJR1J2WlhOdUozUmNiaUFnSUNBdkx5QmlkV0ppYkdVdVhHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNBaFBUMGdKMjl1VTJOeWIyeHNKeUI4ZkNCcGMwVjJaVzUwVTNWd2NHOXlkR1ZrS0NkelkzSnZiR3duTENCMGNuVmxLU3dnSjFSb2FYTWdZbkp2ZDNObGNpQmtiMlZ6Ymx4Y0ozUWdjM1Z3Y0c5eWRDQjBhR1VnWUc5dVUyTnliMnhzWUNCbGRtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc0Z0lIWmhjaUJqYjI1MFlXbHVaWElnUFNCU1pXRmpkRTF2ZFc1MExtWnBibVJTWldGamRFTnZiblJoYVc1bGNrWnZja2xFS0dsa0tUdGNiaUFnYVdZZ0tHTnZiblJoYVc1bGNpa2dlMXh1SUNBZ0lIWmhjaUJrYjJNZ1BTQmpiMjUwWVdsdVpYSXVibTlrWlZSNWNHVWdQVDA5SUVWTVJVMUZUbFJmVGs5RVJWOVVXVkJGSUQ4Z1kyOXVkR0ZwYm1WeUxtOTNibVZ5Ukc5amRXMWxiblFnT2lCamIyNTBZV2x1WlhJN1hHNGdJQ0FnYkdsemRHVnVWRzhvY21WbmFYTjBjbUYwYVc5dVRtRnRaU3dnWkc5aktUdGNiaUFnZlZ4dUlDQjBjbUZ1YzJGamRHbHZiaTVuWlhSU1pXRmpkRTF2ZFc1MFVtVmhaSGtvS1M1bGJuRjFaWFZsS0hCMWRFeHBjM1JsYm1WeUxDQjdYRzRnSUNBZ2FXUTZJR2xrTEZ4dUlDQWdJSEpsWjJsemRISmhkR2x2Yms1aGJXVTZJSEpsWjJsemRISmhkR2x2Yms1aGJXVXNYRzRnSUNBZ2JHbHpkR1Z1WlhJNklHeHBjM1JsYm1WeVhHNGdJSDBwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJ3ZFhSTWFYTjBaVzVsY2lncElIdGNiaUFnZG1GeUlHeHBjM1JsYm1WeVZHOVFkWFFnUFNCMGFHbHpPMXh1SUNCU1pXRmpkRUp5YjNkelpYSkZkbVZ1ZEVWdGFYUjBaWEl1Y0hWMFRHbHpkR1Z1WlhJb2JHbHpkR1Z1WlhKVWIxQjFkQzVwWkN3Z2JHbHpkR1Z1WlhKVWIxQjFkQzV5WldkcGMzUnlZWFJwYjI1T1lXMWxMQ0JzYVhOMFpXNWxjbFJ2VUhWMExteHBjM1JsYm1WeUtUdGNibjFjYmx4dUx5OGdWR2hsY21VZ1lYSmxJSE52SUcxaGJua2diV1ZrYVdFZ1pYWmxiblJ6TENCcGRDQnRZV3RsY3lCelpXNXpaU0IwYnlCcWRYTjBYRzR2THlCdFlXbHVkR0ZwYmlCaElHeHBjM1FnY21GMGFHVnlJSFJvWVc0Z1kzSmxZWFJsSUdFZ1lIUnlZWEJDZFdKaWJHVmtSWFpsYm5SZ0lHWnZjaUJsWVdOb1hHNTJZWElnYldWa2FXRkZkbVZ1ZEhNZ1BTQjdYRzRnSUhSdmNFRmliM0owT2lBbllXSnZjblFuTEZ4dUlDQjBiM0JEWVc1UWJHRjVPaUFuWTJGdWNHeGhlU2NzWEc0Z0lIUnZjRU5oYmxCc1lYbFVhSEp2ZFdkb09pQW5ZMkZ1Y0d4aGVYUm9jbTkxWjJnbkxGeHVJQ0IwYjNCRWRYSmhkR2x2YmtOb1lXNW5aVG9nSjJSMWNtRjBhVzl1WTJoaGJtZGxKeXhjYmlBZ2RHOXdSVzF3ZEdsbFpEb2dKMlZ0Y0hScFpXUW5MRnh1SUNCMGIzQkZibU55ZVhCMFpXUTZJQ2RsYm1OeWVYQjBaV1FuTEZ4dUlDQjBiM0JGYm1SbFpEb2dKMlZ1WkdWa0p5eGNiaUFnZEc5d1JYSnliM0k2SUNkbGNuSnZjaWNzWEc0Z0lIUnZjRXh2WVdSbFpFUmhkR0U2SUNkc2IyRmtaV1JrWVhSaEp5eGNiaUFnZEc5d1RHOWhaR1ZrVFdWMFlXUmhkR0U2SUNkc2IyRmtaV1J0WlhSaFpHRjBZU2NzWEc0Z0lIUnZjRXh2WVdSVGRHRnlkRG9nSjJ4dllXUnpkR0Z5ZENjc1hHNGdJSFJ2Y0ZCaGRYTmxPaUFuY0dGMWMyVW5MRnh1SUNCMGIzQlFiR0Y1T2lBbmNHeGhlU2NzWEc0Z0lIUnZjRkJzWVhscGJtYzZJQ2R3YkdGNWFXNW5KeXhjYmlBZ2RHOXdVSEp2WjNKbGMzTTZJQ2R3Y205bmNtVnpjeWNzWEc0Z0lIUnZjRkpoZEdWRGFHRnVaMlU2SUNkeVlYUmxZMmhoYm1kbEp5eGNiaUFnZEc5d1UyVmxhMlZrT2lBbmMyVmxhMlZrSnl4Y2JpQWdkRzl3VTJWbGEybHVaem9nSjNObFpXdHBibWNuTEZ4dUlDQjBiM0JUZEdGc2JHVmtPaUFuYzNSaGJHeGxaQ2NzWEc0Z0lIUnZjRk4xYzNCbGJtUTZJQ2R6ZFhOd1pXNWtKeXhjYmlBZ2RHOXdWR2x0WlZWd1pHRjBaVG9nSjNScGJXVjFjR1JoZEdVbkxGeHVJQ0IwYjNCV2IyeDFiV1ZEYUdGdVoyVTZJQ2QyYjJ4MWJXVmphR0Z1WjJVbkxGeHVJQ0IwYjNCWFlXbDBhVzVuT2lBbmQyRnBkR2x1WnlkY2JuMDdYRzVjYm1aMWJtTjBhVzl1SUhSeVlYQkNkV0ppYkdWa1JYWmxiblJ6VEc5allXd29LU0I3WEc0Z0lIWmhjaUJwYm5OMElEMGdkR2hwY3p0Y2JpQWdMeThnU1dZZ1lTQmpiMjF3YjI1bGJuUWdjbVZ1WkdWeWN5QjBieUJ1ZFd4c0lHOXlJR2xtSUdGdWIzUm9aWElnWTI5dGNHOXVaVzUwSUdaaGRHRnNjeUJoYm1RZ1kyRjFjMlZ6WEc0Z0lDOHZJSFJvWlNCemRHRjBaU0J2WmlCMGFHVWdkSEpsWlNCMGJ5QmlaU0JqYjNKeWRYQjBaV1FzSUdCdWIyUmxZQ0JvWlhKbElHTmhiaUJpWlNCdWRXeHNMbHh1SUNBaGFXNXpkQzVmY205dmRFNXZaR1ZKUkNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2ROZFhOMElHSmxJRzF2ZFc1MFpXUWdkRzhnZEhKaGNDQmxkbVZ1ZEhNbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIWmhjaUJ1YjJSbElEMGdVbVZoWTNSTmIzVnVkQzVuWlhST2IyUmxLR2x1YzNRdVgzSnZiM1JPYjJSbFNVUXBPMXh1SUNBaGJtOWtaU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZDBjbUZ3UW5WaVlteGxaRVYyWlc1MEtDNHVMaWs2SUZKbGNYVnBjbVZ6SUc1dlpHVWdkRzhnWW1VZ2NtVnVaR1Z5WldRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJSE4zYVhSamFDQW9hVzV6ZEM1ZmRHRm5LU0I3WEc0Z0lDQWdZMkZ6WlNBbmFXWnlZVzFsSnpwY2JpQWdJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1c2FYTjBaVzVsY25NZ1BTQmJVbVZoWTNSQ2NtOTNjMlZ5UlhabGJuUkZiV2wwZEdWeUxuUnlZWEJDZFdKaWJHVmtSWFpsYm5Rb1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JNYjJGa0xDQW5iRzloWkNjc0lHNXZaR1VwWFR0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjNacFpHVnZKenBjYmlBZ0lDQmpZWE5sSUNkaGRXUnBieWM2WEc1Y2JpQWdJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1c2FYTjBaVzVsY25NZ1BTQmJYVHRjYmlBZ0lDQWdJQzh2SUdOeVpXRjBaU0JzYVhOMFpXNWxjaUJtYjNJZ1pXRmphQ0J0WldScFlTQmxkbVZ1ZEZ4dUlDQWdJQ0FnWm05eUlDaDJZWElnWlhabGJuUWdhVzRnYldWa2FXRkZkbVZ1ZEhNcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0cxbFpHbGhSWFpsYm5SekxtaGhjMDkzYmxCeWIzQmxjblI1S0dWMlpXNTBLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXNhWE4wWlc1bGNuTXVjSFZ6YUNoU1pXRmpkRUp5YjNkelpYSkZkbVZ1ZEVWdGFYUjBaWEl1ZEhKaGNFSjFZbUpzWldSRmRtVnVkQ2hGZG1WdWRFTnZibk4wWVc1MGN5NTBiM0JNWlhabGJGUjVjR1Z6VzJWMlpXNTBYU3dnYldWa2FXRkZkbVZ1ZEhOYlpYWmxiblJkTENCdWIyUmxLU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmFXMW5KenBjYmlBZ0lDQWdJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzVzYVhOMFpXNWxjbk1nUFNCYlVtVmhZM1JDY205M2MyVnlSWFpsYm5SRmJXbDBkR1Z5TG5SeVlYQkNkV0ppYkdWa1JYWmxiblFvUlhabGJuUkRiMjV6ZEdGdWRITXVkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkZjbkp2Y2l3Z0oyVnljbTl5Snl3Z2JtOWtaU2tzSUZKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaTUwY21Gd1FuVmlZbXhsWkVWMlpXNTBLRVYyWlc1MFEyOXVjM1JoYm5SekxuUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1RHOWhaQ3dnSjJ4dllXUW5MQ0J1YjJSbEtWMDdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZG1iM0p0SnpwY2JpQWdJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1c2FYTjBaVzVsY25NZ1BTQmJVbVZoWTNSQ2NtOTNjMlZ5UlhabGJuUkZiV2wwZEdWeUxuUnlZWEJDZFdKaWJHVmtSWFpsYm5Rb1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JTWlhObGRDd2dKM0psYzJWMEp5d2dibTlrWlNrc0lGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1MGNtRndRblZpWW14bFpFVjJaVzUwS0VWMlpXNTBRMjl1YzNSaGJuUnpMblJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdVM1ZpYldsMExDQW5jM1ZpYldsMEp5d2dibTlrWlNsZE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2JXOTFiblJTWldGa2VVbHVjSFYwVjNKaGNIQmxjaWdwSUh0Y2JpQWdVbVZoWTNSRVQwMUpibkIxZEM1dGIzVnVkRkpsWVdSNVYzSmhjSEJsY2loMGFHbHpLVHRjYm4xY2JseHVablZ1WTNScGIyNGdjRzl6ZEZWd1pHRjBaVk5sYkdWamRGZHlZWEJ3WlhJb0tTQjdYRzRnSUZKbFlXTjBSRTlOVTJWc1pXTjBMbkJ2YzNSVmNHUmhkR1ZYY21Gd2NHVnlLSFJvYVhNcE8xeHVmVnh1WEc0dkx5QkdiM0lnU0ZSTlRDd2dZMlZ5ZEdGcGJpQjBZV2R6SUhOb2IzVnNaQ0J2YldsMElIUm9aV2x5SUdOc2IzTmxJSFJoWnk0Z1YyVWdhMlZsY0NCaElIZG9hWFJsYkdsemRDQm1iM0pjYmk4dklIUm9iM05sSUhOd1pXTnBZV3dnWTJGelpXUWdkR0ZuY3k1Y2JseHVkbUZ5SUc5dGFYUjBaV1JEYkc5elpWUmhaM01nUFNCN1hHNGdJQ2RoY21WaEp6b2dkSEoxWlN4Y2JpQWdKMkpoYzJVbk9pQjBjblZsTEZ4dUlDQW5ZbkluT2lCMGNuVmxMRnh1SUNBblkyOXNKem9nZEhKMVpTeGNiaUFnSjJWdFltVmtKem9nZEhKMVpTeGNiaUFnSjJoeUp6b2dkSEoxWlN4Y2JpQWdKMmx0WnljNklIUnlkV1VzWEc0Z0lDZHBibkIxZENjNklIUnlkV1VzWEc0Z0lDZHJaWGxuWlc0bk9pQjBjblZsTEZ4dUlDQW5iR2x1YXljNklIUnlkV1VzWEc0Z0lDZHRaWFJoSnpvZ2RISjFaU3hjYmlBZ0ozQmhjbUZ0SnpvZ2RISjFaU3hjYmlBZ0ozTnZkWEpqWlNjNklIUnlkV1VzWEc0Z0lDZDBjbUZqYXljNklIUnlkV1VzWEc0Z0lDZDNZbkluT2lCMGNuVmxYRzU5TzF4dVhHNHZMeUJPVDFSRk9pQnRaVzUxYVhSbGJTZHpJR05zYjNObElIUmhaeUJ6YUc5MWJHUWdZbVVnYjIxcGRIUmxaQ3dnWW5WMElIUm9ZWFFnWTJGMWMyVnpJSEJ5YjJKc1pXMXpMbHh1ZG1GeUlHNWxkMnhwYm1WRllYUnBibWRVWVdkeklEMGdlMXh1SUNBbmJHbHpkR2x1WnljNklIUnlkV1VzWEc0Z0lDZHdjbVVuT2lCMGNuVmxMRnh1SUNBbmRHVjRkR0Z5WldFbk9pQjBjblZsWEc1OU8xeHVYRzR2THlCR2IzSWdTRlJOVEN3Z1kyVnlkR0ZwYmlCMFlXZHpJR05oYm01dmRDQm9ZWFpsSUdOb2FXeGtjbVZ1TGlCVWFHbHpJR2hoY3lCMGFHVWdjMkZ0WlNCd2RYSndiM05sSUdGelhHNHZMeUJnYjIxcGRIUmxaRU5zYjNObFZHRm5jMkFnWlhoalpYQjBJSFJvWVhRZ1lHMWxiblZwZEdWdFlDQnphRzkxYkdRZ2MzUnBiR3dnYUdGMlpTQnBkSE1nWTJ4dmMybHVaeUIwWVdjdVhHNWNiblpoY2lCMmIybGtSV3hsYldWdWRGUmhaM01nUFNCaGMzTnBaMjRvZTF4dUlDQW5iV1Z1ZFdsMFpXMG5PaUIwY25WbFhHNTlMQ0J2YldsMGRHVmtRMnh2YzJWVVlXZHpLVHRjYmx4dUx5OGdWMlVnWVdOalpYQjBJR0Z1ZVNCMFlXY2dkRzhnWW1VZ2NtVnVaR1Z5WldRZ1luVjBJSE5wYm1ObElIUm9hWE1nWjJWMGN5QnBibXBsWTNSbFpDQnBiblJ2SUdGeVltbDBjbUZ5ZVZ4dUx5OGdTRlJOVEN3Z2QyVWdkMkZ1ZENCMGJ5QnRZV3RsSUhOMWNtVWdkR2hoZENCcGRDZHpJR0VnYzJGbVpTQjBZV2N1WEc0dkx5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlTUlVNdGVHMXNMeU5PVkMxT1lXMWxYRzVjYm5aaGNpQldRVXhKUkY5VVFVZGZVa1ZIUlZnZ1BTQXZYbHRoTFhwQkxWcGRXMkV0ZWtFdFdqcGZYRnd1WEZ3dFhGeGtYU29rTHpzZ0x5OGdVMmx0Y0d4cFptbGxaQ0J6ZFdKelpYUmNiblpoY2lCMllXeHBaR0YwWldSVVlXZERZV05vWlNBOUlIdDlPMXh1ZG1GeUlHaGhjMDkzYmxCeWIzQmxjblI1SUQwZ0tIdDlLUzVvWVhOUGQyNVFjbTl3WlhKMGVUdGNibHh1Wm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1ZFWVc1blpYSnZkWE5VWVdjb2RHRm5LU0I3WEc0Z0lHbG1JQ2doYUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoMllXeHBaR0YwWldSVVlXZERZV05vWlN3Z2RHRm5LU2tnZTF4dUlDQWdJQ0ZXUVV4SlJGOVVRVWRmVWtWSFJWZ3VkR1Z6ZENoMFlXY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owbHVkbUZzYVdRZ2RHRm5PaUFsY3ljc0lIUmhaeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhaaGJHbGtZWFJsWkZSaFowTmhZMmhsVzNSaFoxMGdQU0IwY25WbE8xeHVJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJSEJ5YjJObGMzTkRhR2xzWkVOdmJuUmxlSFJFWlhZb1kyOXVkR1Y0ZEN3Z2FXNXpkQ2tnZTF4dUlDQXZMeUJRWVhOeklHUnZkMjRnYjNWeUlIUmhaeUJ1WVcxbElIUnZJR05vYVd4a0lHTnZiWEJ2Ym1WdWRITWdabTl5SUhaaGJHbGtZWFJwYjI0Z2NIVnljRzl6WlhOY2JpQWdZMjl1ZEdWNGRDQTlJR0Z6YzJsbmJpaDdmU3dnWTI5dWRHVjRkQ2s3WEc0Z0lIWmhjaUJwYm1adklEMGdZMjl1ZEdWNGRGdDJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VZVzVqWlhOMGIzSkpibVp2UTI5dWRHVjRkRXRsZVYwN1hHNGdJR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZElEMGdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MblZ3WkdGMFpXUkJibU5sYzNSdmNrbHVabThvYVc1bWJ5d2dhVzV6ZEM1ZmRHRm5MQ0JwYm5OMEtUdGNiaUFnY21WMGRYSnVJR052Ym5SbGVIUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHbHpRM1Z6ZEc5dFEyOXRjRzl1Wlc1MEtIUmhaMDVoYldVc0lIQnliM0J6S1NCN1hHNGdJSEpsZEhWeWJpQjBZV2RPWVcxbExtbHVaR1Y0VDJZb0p5MG5LU0ErUFNBd0lIeDhJSEJ5YjNCekxtbHpJQ0U5SUc1MWJHdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaElHNWxkeUJTWldGamRDQmpiR0Z6Y3lCMGFHRjBJR2x6SUdsa1pXMXdiM1JsYm5RZ1lXNWtJR05oY0dGaWJHVWdiMllnWTI5dWRHRnBibWx1WnlCdmRHaGxjbHh1SUNvZ1VtVmhZM1FnWTI5dGNHOXVaVzUwY3k0Z1NYUWdZV05qWlhCMGN5QmxkbVZ1ZENCc2FYTjBaVzVsY25NZ1lXNWtJRVJQVFNCd2NtOXdaWEowYVdWeklIUm9ZWFFnWVhKbFhHNGdLaUIyWVd4cFpDQmhZMk52Y21ScGJtY2dkRzhnWUVSUFRWQnliM0JsY25SNVlDNWNiaUFxWEc0Z0tpQWdMU0JGZG1WdWRDQnNhWE4wWlc1bGNuTTZJR0J2YmtOc2FXTnJZQ3dnWUc5dVRXOTFjMlZFYjNkdVlDd2daWFJqTGx4dUlDb2dJQzBnUkU5TklIQnliM0JsY25ScFpYTTZJR0JqYkdGemMwNWhiV1ZnTENCZ2JtRnRaV0FzSUdCMGFYUnNaV0FzSUdWMFl5NWNiaUFxWEc0Z0tpQlVhR1VnWUhOMGVXeGxZQ0J3Y205d1pYSjBlU0JtZFc1amRHbHZibk1nWkdsbVptVnlaVzUwYkhrZ1puSnZiU0IwYUdVZ1JFOU5JRUZRU1M0Z1NYUWdZV05qWlhCMGN5QmhibHh1SUNvZ2IySnFaV04wSUcxaGNIQnBibWNnYjJZZ2MzUjViR1VnY0hKdmNHVnlkR2xsY3lCMGJ5QjJZV3gxWlhNdVhHNGdLbHh1SUNvZ1FHTnZibk4wY25WamRHOXlJRkpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBYRzRnS2lCQVpYaDBaVzVrY3lCU1pXRmpkRTExYkhScFEyaHBiR1JjYmlBcUwxeHVablZ1WTNScGIyNGdVbVZoWTNSRVQwMURiMjF3YjI1bGJuUW9kR0ZuS1NCN1hHNGdJSFpoYkdsa1lYUmxSR0Z1WjJWeWIzVnpWR0ZuS0hSaFp5azdYRzRnSUhSb2FYTXVYM1JoWnlBOUlIUmhaeTUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0IwYUdsekxsOXlaVzVrWlhKbFpFTm9hV3hrY21WdUlEMGdiblZzYkR0Y2JpQWdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaU0E5SUc1MWJHdzdYRzRnSUhSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdWRGIzQjVJRDBnYm5Wc2JEdGNiaUFnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0E5SUc1MWJHdzdYRzRnSUhSb2FYTXVYM2R5WVhCd1pYSlRkR0YwWlNBOUlHNTFiR3c3WEc0Z0lIUm9hWE11WDNSdmNFeGxkbVZzVjNKaGNIQmxjaUE5SUc1MWJHdzdYRzRnSUhSb2FYTXVYMjV2WkdWWGFYUm9UR1ZuWVdONVVISnZjR1Z5ZEdsbGN5QTlJRzUxYkd3N1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2RHaHBjeTVmZFc1d2NtOWpaWE56WldSRGIyNTBaWGgwUkdWMklEMGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxsOXdjbTlqWlhOelpXUkRiMjUwWlhoMFJHVjJJRDBnYm5Wc2JEdGNiaUFnZlZ4dWZWeHVYRzVTWldGamRFUlBUVU52YlhCdmJtVnVkQzVrYVhOd2JHRjVUbUZ0WlNBOUlDZFNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRDYzdYRzVjYmxKbFlXTjBSRTlOUTI5dGNHOXVaVzUwTGsxcGVHbHVJRDBnZTF4dVhHNGdJR052Ym5OMGNuVmpkRG9nWm5WdVkzUnBiMjRnS0dWc1pXMWxiblFwSUh0Y2JpQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZENBOUlHVnNaVzFsYm5RN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsYm1WeVlYUmxjeUJ5YjI5MElIUmhaeUJ0WVhKcmRYQWdkR2hsYmlCeVpXTjFjbk5sY3k0Z1ZHaHBjeUJ0WlhSb2IyUWdhR0Z6SUhOcFpHVWdaV1ptWldOMGN5QmhibVJjYmlBZ0lDb2dhWE1nYm05MElHbGtaVzF3YjNSbGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjbTl2ZEVsRUlGUm9aU0J5YjI5MElFUlBUU0JKUkNCbWIzSWdkR2hwY3lCdWIyUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OFVtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052Ym5SbGVIUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCVWFHVWdZMjl0Y0hWMFpXUWdiV0Z5YTNWd0xseHVJQ0FnS2k5Y2JpQWdiVzkxYm5SRGIyMXdiMjVsYm5RNklHWjFibU4wYVc5dUlDaHliMjkwU1VRc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDQTlJSEp2YjNSSlJEdGNibHh1SUNBZ0lIWmhjaUJ3Y205d2N5QTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpPMXh1WEc0Z0lDQWdjM2RwZEdOb0lDaDBhR2x6TGw5MFlXY3BJSHRjYmlBZ0lDQWdJR05oYzJVZ0oybG1jbUZ0WlNjNlhHNGdJQ0FnSUNCallYTmxJQ2RwYldjbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWm05eWJTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMmFXUmxieWM2WEc0Z0lDQWdJQ0JqWVhObElDZGhkV1JwYnljNlhHNGdJQ0FnSUNBZ0lIUm9hWE11WDNkeVlYQndaWEpUZEdGMFpTQTlJSHRjYmlBZ0lDQWdJQ0FnSUNCc2FYTjBaVzVsY25NNklHNTFiR3hjYmlBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ2RISmhibk5oWTNScGIyNHVaMlYwVW1WaFkzUk5iM1Z1ZEZKbFlXUjVLQ2t1Wlc1eGRXVjFaU2gwY21Gd1FuVmlZbXhsWkVWMlpXNTBjMHh2WTJGc0xDQjBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZGlkWFIwYjI0bk9seHVJQ0FnSUNBZ0lDQndjbTl3Y3lBOUlGSmxZV04wUkU5TlFuVjBkRzl1TG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lIQnliM0J6TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZHBibkIxZENjNlhHNGdJQ0FnSUNBZ0lGSmxZV04wUkU5TlNXNXdkWFF1Ylc5MWJuUlhjbUZ3Y0dWeUtIUm9hWE1zSUhCeWIzQnpMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnY0hKdmNITWdQU0JTWldGamRFUlBUVWx1Y0hWMExtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJSEJ5YjNCekxDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2R2Y0hScGIyNG5PbHh1SUNBZ0lDQWdJQ0JTWldGamRFUlBUVTl3ZEdsdmJpNXRiM1Z1ZEZkeVlYQndaWElvZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQndjbTl3Y3lBOUlGSmxZV04wUkU5TlQzQjBhVzl1TG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lIQnliM0J6TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZHpaV3hsWTNRbk9seHVJQ0FnSUNBZ0lDQlNaV0ZqZEVSUFRWTmxiR1ZqZEM1dGIzVnVkRmR5WVhCd1pYSW9kR2hwY3l3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCd2NtOXdjeUE5SUZKbFlXTjBSRTlOVTJWc1pXTjBMbWRsZEU1aGRHbDJaVkJ5YjNCektIUm9hWE1zSUhCeWIzQnpMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnWTI5dWRHVjRkQ0E5SUZKbFlXTjBSRTlOVTJWc1pXTjBMbkJ5YjJObGMzTkRhR2xzWkVOdmJuUmxlSFFvZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKM1JsZUhSaGNtVmhKenBjYmlBZ0lDQWdJQ0FnVW1WaFkzUkVUMDFVWlhoMFlYSmxZUzV0YjNWdWRGZHlZWEJ3WlhJb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0J3Y205d2N5QTlJRkpsWVdOMFJFOU5WR1Y0ZEdGeVpXRXVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNWNiaUFnSUNCaGMzTmxjblJXWVd4cFpGQnliM0J6S0hSb2FYTXNJSEJ5YjNCektUdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHTnZiblJsZUhSYmRtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bkxtRnVZMlZ6ZEc5eVNXNW1iME52Ym5SbGVIUkxaWGxkS1NCN1hHNGdJQ0FnSUNBZ0lIWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVp5aDBhR2x6TGw5MFlXY3NJSFJvYVhNc0lHTnZiblJsZUhSYmRtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bkxtRnVZMlZ6ZEc5eVNXNW1iME52Ym5SbGVIUkxaWGxkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmRXNXdjbTlqWlhOelpXUkRiMjUwWlhoMFJHVjJJRDBnWTI5dWRHVjRkRHRjYmlBZ0lDQWdJSFJvYVhNdVgzQnliMk5sYzNObFpFTnZiblJsZUhSRVpYWWdQU0J3Y205alpYTnpRMmhwYkdSRGIyNTBaWGgwUkdWMktHTnZiblJsZUhRc0lIUm9hWE1wTzF4dUlDQWdJQ0FnWTI5dWRHVjRkQ0E5SUhSb2FYTXVYM0J5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFk3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUcxdmRXNTBTVzFoWjJVN1hHNGdJQ0FnYVdZZ0tIUnlZVzV6WVdOMGFXOXVMblZ6WlVOeVpXRjBaVVZzWlcxbGJuUXBJSHRjYmlBZ0lDQWdJSFpoY2lCdmQyNWxja1J2WTNWdFpXNTBJRDBnWTI5dWRHVjRkRnRTWldGamRFMXZkVzUwTG05M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVYVHRjYmlBZ0lDQWdJSFpoY2lCbGJDQTlJRzkzYm1WeVJHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2gwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1MGVYQmxLVHRjYmlBZ0lDQWdJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1elpYUkJkSFJ5YVdKMWRHVkdiM0pKUkNobGJDd2dkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzRnSUNBZ0lDQXZMeUJRYjNCMWJHRjBaU0J1YjJSbElHTmhZMmhsWEc0Z0lDQWdJQ0JTWldGamRFMXZkVzUwTG1kbGRFbEVLR1ZzS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYM1Z3WkdGMFpVUlBUVkJ5YjNCbGNuUnBaWE1vZTMwc0lIQnliM0J6TENCMGNtRnVjMkZqZEdsdmJpd2daV3dwTzF4dUlDQWdJQ0FnZEdocGN5NWZZM0psWVhSbFNXNXBkR2xoYkVOb2FXeGtjbVZ1S0hSeVlXNXpZV04wYVc5dUxDQndjbTl3Y3l3Z1kyOXVkR1Y0ZEN3Z1pXd3BPMXh1SUNBZ0lDQWdiVzkxYm5SSmJXRm5aU0E5SUdWc08xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IyWVhJZ2RHRm5UM0JsYmlBOUlIUm9hWE11WDJOeVpXRjBaVTl3Wlc1VVlXZE5ZWEpyZFhCQmJtUlFkWFJNYVhOMFpXNWxjbk1vZEhKaGJuTmhZM1JwYjI0c0lIQnliM0J6S1R0Y2JpQWdJQ0FnSUhaaGNpQjBZV2REYjI1MFpXNTBJRDBnZEdocGN5NWZZM0psWVhSbFEyOXVkR1Z1ZEUxaGNtdDFjQ2gwY21GdWMyRmpkR2x2Yml3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnYVdZZ0tDRjBZV2REYjI1MFpXNTBJQ1ltSUc5dGFYUjBaV1JEYkc5elpWUmhaM05iZEdocGN5NWZkR0ZuWFNrZ2UxeHVJQ0FnSUNBZ0lDQnRiM1Z1ZEVsdFlXZGxJRDBnZEdGblQzQmxiaUFySUNjdlBpYzdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnRiM1Z1ZEVsdFlXZGxJRDBnZEdGblQzQmxiaUFySUNjK0p5QXJJSFJoWjBOdmJuUmxiblFnS3lBblBDOG5JQ3NnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWRIbHdaU0FySUNjK0p6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCemQybDBZMmdnS0hSb2FYTXVYM1JoWnlrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0FuYVc1d2RYUW5PbHh1SUNBZ0lDQWdJQ0IwY21GdWMyRmpkR2x2Ymk1blpYUlNaV0ZqZEUxdmRXNTBVbVZoWkhrb0tTNWxibkYxWlhWbEtHMXZkVzUwVW1WaFpIbEpibkIxZEZkeVlYQndaWElzSUhSb2FYTXBPMXh1SUNBZ0lDQWdMeThnWm1Gc2JITWdkR2h5YjNWbmFGeHVJQ0FnSUNBZ1kyRnpaU0FuWW5WMGRHOXVKenBjYmlBZ0lDQWdJR05oYzJVZ0ozTmxiR1ZqZENjNlhHNGdJQ0FnSUNCallYTmxJQ2QwWlhoMFlYSmxZU2M2WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbTl3Y3k1aGRYUnZSbTlqZFhNcElIdGNiaUFnSUNBZ0lDQWdJQ0IwY21GdWMyRmpkR2x2Ymk1blpYUlNaV0ZqZEUxdmRXNTBVbVZoWkhrb0tTNWxibkYxWlhWbEtFRjFkRzlHYjJOMWMxVjBhV3h6TG1adlkzVnpSRTlOUTI5dGNHOXVaVzUwTENCMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JXOTFiblJKYldGblpUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJ0WVhKcmRYQWdabTl5SUhSb1pTQnZjR1Z1SUhSaFp5QmhibVFnWVd4c0lHRjBkSEpwWW5WMFpYTXVYRzRnSUNBcVhHNGdJQ0FxSUZSb2FYTWdiV1YwYUc5a0lHaGhjeUJ6YVdSbElHVm1abVZqZEhNZ1ltVmpZWFZ6WlNCbGRtVnVkSE1nWjJWMElISmxaMmx6ZEdWeVpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVsMFpYSmhkR2x1WnlCdmRtVnlJRzlpYW1WamRDQndjbTl3WlhKMGFXVnpJR2x6SUdaaGMzUmxjaUIwYUdGdUlHbDBaWEpoZEdsdVp5QnZkbVZ5SUdGeWNtRjVjeTVjYmlBZ0lDb2dRSE5sWlNCb2RIUndPaTh2YW5Od1pYSm1MbU52YlM5dlltb3Rkbk10WVhKeUxXbDBaWEpoZEdsdmJseHVJQ0FnS2x4dUlDQWdLaUJBY0hKcGRtRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OFVtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJ5YjNCelhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnVFdGeWEzVndJRzltSUc5d1pXNXBibWNnZEdGbkxseHVJQ0FnS2k5Y2JpQWdYMk55WldGMFpVOXdaVzVVWVdkTllYSnJkWEJCYm1SUWRYUk1hWE4wWlc1bGNuTTZJR1oxYm1OMGFXOXVJQ2gwY21GdWMyRmpkR2x2Yml3Z2NISnZjSE1wSUh0Y2JpQWdJQ0IyWVhJZ2NtVjBJRDBnSnp3bklDc2dkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1ZEhsd1pUdGNibHh1SUNBZ0lHWnZjaUFvZG1GeUlIQnliM0JMWlhrZ2FXNGdjSEp2Y0hNcElIdGNiaUFnSUNBZ0lHbG1JQ2doY0hKdmNITXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRXRsZVNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjJZWElnY0hKdmNGWmhiSFZsSUQwZ2NISnZjSE5iY0hKdmNFdGxlVjA3WEc0Z0lDQWdJQ0JwWmlBb2NISnZjRlpoYkhWbElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvY21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRXRsZVNrcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hCeWIzQldZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1Z1Y1hWbGRXVlFkWFJNYVhOMFpXNWxjaWgwYUdsekxsOXliMjkwVG05a1pVbEVMQ0J3Y205d1MyVjVMQ0J3Y205d1ZtRnNkV1VzSUhSeVlXNXpZV04wYVc5dUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hCeWIzQkxaWGtnUFQwOUlGTlVXVXhGS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hCeWIzQldZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVTJWbElHQmZkWEJrWVhSbFJFOU5VSEp2Y0dWeWRHbGxjMkF1SUhOMGVXeGxJR0pzYjJOclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdVZ1BTQndjbTl3Vm1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205d1ZtRnNkV1VnUFNCMGFHbHpMbDl3Y21WMmFXOTFjMU4wZVd4bFEyOXdlU0E5SUdGemMybG5iaWg3ZlN3Z2NISnZjSE11YzNSNWJHVXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQndjbTl3Vm1Gc2RXVWdQU0JEVTFOUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdVkzSmxZWFJsVFdGeWEzVndSbTl5VTNSNWJHVnpLSEJ5YjNCV1lXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2RtRnlJRzFoY210MWNDQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxsOTBZV2NnSVQwZ2JuVnNiQ0FtSmlCcGMwTjFjM1J2YlVOdmJYQnZibVZ1ZENoMGFHbHpMbDkwWVdjc0lIQnliM0J6S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzFoY210MWNDQTlJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1amNtVmhkR1ZOWVhKcmRYQkdiM0pEZFhOMGIyMUJkSFJ5YVdKMWRHVW9jSEp2Y0V0bGVTd2djSEp2Y0ZaaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCdFlYSnJkWEFnUFNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVZM0psWVhSbFRXRnlhM1Z3Um05eVVISnZjR1Z5ZEhrb2NISnZjRXRsZVN3Z2NISnZjRlpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb2JXRnlhM1Z3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwSUNzOUlDY2dKeUFySUcxaGNtdDFjRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUVadmNpQnpkR0YwYVdNZ2NHRm5aWE1zSUc1dklHNWxaV1FnZEc4Z2NIVjBJRkpsWVdOMElFbEVJR0Z1WkNCamFHVmphM04xYlM0Z1UyRjJaWE1nYkc5MGN5QnZabHh1SUNBZ0lDOHZJR0o1ZEdWekxseHVJQ0FnSUdsbUlDaDBjbUZ1YzJGamRHbHZiaTV5Wlc1a1pYSlViMU4wWVhScFkwMWhjbXQxY0NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdiV0Z5YTNWd1JtOXlTVVFnUFNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVZM0psWVhSbFRXRnlhM1Z3Um05eVNVUW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzRnSUNBZ2NtVjBkWEp1SUhKbGRDQXJJQ2NnSnlBcklHMWhjbXQxY0VadmNrbEVPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUcxaGNtdDFjQ0JtYjNJZ2RHaGxJR052Ym5SbGJuUWdZbVYwZDJWbGJpQjBhR1VnZEdGbmN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZGSmxZV04wVTJWeWRtVnlVbVZ1WkdWeWFXNW5WSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J3Y205d2MxeHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dWRHVjRkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFTnZiblJsYm5RZ2JXRnlhM1Z3TGx4dUlDQWdLaTljYmlBZ1gyTnlaV0YwWlVOdmJuUmxiblJOWVhKcmRYQTZJR1oxYm1OMGFXOXVJQ2gwY21GdWMyRmpkR2x2Yml3Z2NISnZjSE1zSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2NtVjBJRDBnSnljN1hHNWNiaUFnSUNBdkx5QkpiblJsYm5ScGIyNWhiQ0IxYzJVZ2IyWWdJVDBnZEc4Z1lYWnZhV1FnWTJGMFkyaHBibWNnZW1WeWJ5OW1ZV3h6WlM1Y2JpQWdJQ0IyWVhJZ2FXNXVaWEpJVkUxTUlEMGdjSEp2Y0hNdVpHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXc3WEc0Z0lDQWdhV1lnS0dsdWJtVnlTRlJOVENBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCcFppQW9hVzV1WlhKSVZFMU1MbDlmYUhSdGJDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSEpsZENBOUlHbHVibVZ5U0ZSTlRDNWZYMmgwYld3N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFpoY2lCamIyNTBaVzUwVkc5VmMyVWdQU0JEVDA1VVJVNVVYMVJaVUVWVFczUjVjR1Z2WmlCd2NtOXdjeTVqYUdsc1pISmxibDBnUHlCd2NtOXdjeTVqYUdsc1pISmxiaUE2SUc1MWJHdzdYRzRnSUNBZ0lDQjJZWElnWTJocGJHUnlaVzVVYjFWelpTQTlJR052Ym5SbGJuUlViMVZ6WlNBaFBTQnVkV3hzSUQ4Z2JuVnNiQ0E2SUhCeWIzQnpMbU5vYVd4a2NtVnVPMXh1SUNBZ0lDQWdhV1lnS0dOdmJuUmxiblJVYjFWelpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUZSUFJFODZJRlpoYkdsa1lYUmxJSFJvWVhRZ2RHVjRkQ0JwY3lCaGJHeHZkMlZrSUdGeklHRWdZMmhwYkdRZ2IyWWdkR2hwY3lCdWIyUmxYRzRnSUNBZ0lDQWdJSEpsZENBOUlHVnpZMkZ3WlZSbGVIUkRiMjUwWlc1MFJtOXlRbkp2ZDNObGNpaGpiMjUwWlc1MFZHOVZjMlVwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoamFHbHNaSEpsYmxSdlZYTmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHMXZkVzUwU1cxaFoyVnpJRDBnZEdocGN5NXRiM1Z1ZEVOb2FXeGtjbVZ1S0dOb2FXeGtjbVZ1Vkc5VmMyVXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBJRDBnYlc5MWJuUkpiV0ZuWlhNdWFtOXBiaWduSnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNodVpYZHNhVzVsUldGMGFXNW5WR0ZuYzF0MGFHbHpMbDkwWVdkZElDWW1JSEpsZEM1amFHRnlRWFFvTUNrZ1BUMDlJQ2RjWEc0bktTQjdYRzRnSUNBZ0lDQXZMeUIwWlhoMEwyaDBiV3dnYVdkdWIzSmxjeUIwYUdVZ1ptbHljM1FnWTJoaGNtRmpkR1Z5SUdsdUlIUm9aWE5sSUhSaFozTWdhV1lnYVhRbmN5QmhJRzVsZDJ4cGJtVmNiaUFnSUNBZ0lDOHZJRkJ5WldabGNpQjBieUJpY21WaGF5QmhjSEJzYVdOaGRHbHZiaTk0Yld3Z2IzWmxjaUIwWlhoMEwyaDBiV3dnS0dadmNpQnViM2NwSUdKNUlHRmtaR2x1WjF4dUlDQWdJQ0FnTHk4Z1lTQnVaWGRzYVc1bElITndaV05wWm1sallXeHNlU0IwYnlCblpYUWdaV0YwWlc0Z1lua2dkR2hsSUhCaGNuTmxjaTRnS0VGc2RHVnlibUYwWld4NUlHWnZjbHh1SUNBZ0lDQWdMeThnZEdWNGRHRnlaV0Z6TENCeVpYQnNZV05wYm1jZ1hDSmVYRnh1WENJZ2QybDBhQ0JjSWx4Y2NseGNibHdpSUdSdlpYTnVKM1FnWjJWMElHVmhkR1Z1TENCaGJtUWdkR2hsSUdacGNuTjBYRzRnSUNBZ0lDQXZMeUJjWEhJZ2FYTWdibTl5YldGc2FYcGxaQ0J2ZFhRZ1lua2dTRlJOVEZSbGVIUkJjbVZoUld4bGJXVnVkQ04yWVd4MVpTNHBYRzRnSUNBZ0lDQXZMeUJUWldVNklEeG9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlvZEcxc0xYQnZiSGxuYkc5MEx5TnVaWGRzYVc1bGN5MXBiaTEwWlhoMFlYSmxZUzFoYm1RdGNISmxQbHh1SUNBZ0lDQWdMeThnVTJWbE9pQThhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2YUhSdGJEVXZjM2x1ZEdGNExtaDBiV3dqWld4bGJXVnVkQzF5WlhOMGNtbGpkR2x2Ym5NK1hHNGdJQ0FnSUNBdkx5QlRaV1U2SUR4b2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOW9kRzFzTlM5emVXNTBZWGd1YUhSdGJDTnVaWGRzYVc1bGN6NWNiaUFnSUNBZ0lDOHZJRk5sWlRvZ1VHRnljMmx1WnlCdlppQmNJblJsZUhSaGNtVmhYQ0lnWENKc2FYTjBhVzVuWENJZ1lXNWtJRndpY0hKbFhDSWdaV3hsYldWdWRITmNiaUFnSUNBZ0lDOHZJQ0JtY205dElEeG9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlvZEcxc05TOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNWliMlI1UGx4dUlDQWdJQ0FnY21WMGRYSnVJQ2RjWEc0bklDc2djbVYwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JmWTNKbFlYUmxTVzVwZEdsaGJFTm9hV3hrY21WdU9pQm1kVzVqZEdsdmJpQW9kSEpoYm5OaFkzUnBiMjRzSUhCeWIzQnpMQ0JqYjI1MFpYaDBMQ0JsYkNrZ2UxeHVJQ0FnSUM4dklFbHVkR1Z1ZEdsdmJtRnNJSFZ6WlNCdlppQWhQU0IwYnlCaGRtOXBaQ0JqWVhSamFHbHVaeUI2WlhKdkwyWmhiSE5sTGx4dUlDQWdJSFpoY2lCcGJtNWxja2hVVFV3Z1BTQndjbTl3Y3k1a1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5URHRjYmlBZ0lDQnBaaUFvYVc1dVpYSklWRTFNSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdsbUlDaHBibTVsY2toVVRVd3VYMTlvZEcxc0lDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdjMlYwU1c1dVpYSklWRTFNS0dWc0xDQnBibTVsY2toVVRVd3VYMTlvZEcxc0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZG1GeUlHTnZiblJsYm5SVWIxVnpaU0E5SUVOUFRsUkZUbFJmVkZsUVJWTmJkSGx3Wlc5bUlIQnliM0J6TG1Ob2FXeGtjbVZ1WFNBL0lIQnliM0J6TG1Ob2FXeGtjbVZ1SURvZ2JuVnNiRHRjYmlBZ0lDQWdJSFpoY2lCamFHbHNaSEpsYmxSdlZYTmxJRDBnWTI5dWRHVnVkRlJ2VlhObElDRTlJRzUxYkd3Z1B5QnVkV3hzSURvZ2NISnZjSE11WTJocGJHUnlaVzQ3WEc0Z0lDQWdJQ0JwWmlBb1kyOXVkR1Z1ZEZSdlZYTmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1ZFOUVUem9nVm1Gc2FXUmhkR1VnZEdoaGRDQjBaWGgwSUdseklHRnNiRzkzWldRZ1lYTWdZU0JqYUdsc1pDQnZaaUIwYUdseklHNXZaR1ZjYmlBZ0lDQWdJQ0FnYzJWMFZHVjRkRU52Ym5SbGJuUW9aV3dzSUdOdmJuUmxiblJVYjFWelpTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR05vYVd4a2NtVnVWRzlWYzJVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnYlc5MWJuUkpiV0ZuWlhNZ1BTQjBhR2x6TG0xdmRXNTBRMmhwYkdSeVpXNG9ZMmhwYkdSeVpXNVViMVZ6WlN3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUcxdmRXNTBTVzFoWjJWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pXd3VZWEJ3Wlc1a1EyaHBiR1FvYlc5MWJuUkpiV0ZuWlhOYmFWMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pXTmxhWFpsY3lCaElHNWxlSFFnWld4bGJXVnVkQ0JoYm1RZ2RYQmtZWFJsY3lCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHNWxlSFJGYkdWdFpXNTBYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym54U1pXRmpkRk5sY25abGNsSmxibVJsY21sdVoxUnlZVzV6WVdOMGFXOXVmU0IwY21GdWMyRmpkR2x2Ymx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdZMjl1ZEdWNGRGeHVJQ0FnS2k5Y2JpQWdjbVZqWldsMlpVTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLRzVsZUhSRmJHVnRaVzUwTENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJ3Y21WMlJXeGxiV1Z1ZENBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBPMXh1SUNBZ0lIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBJRDBnYm1WNGRFVnNaVzFsYm5RN1hHNGdJQ0FnZEdocGN5NTFjR1JoZEdWRGIyMXdiMjVsYm5Rb2RISmhibk5oWTNScGIyNHNJSEJ5WlhaRmJHVnRaVzUwTENCdVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdWNGRDazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaWE1nWVNCdVlYUnBkbVVnUkU5TklHTnZiWEJ2Ym1WdWRDQmhablJsY2lCcGRDQm9ZWE1nWVd4eVpXRmtlU0JpWldWdUlHRnNiRzlqWVhSbFpDQmhibVJjYmlBZ0lDb2dZWFIwWVdOb1pXUWdkRzhnZEdobElFUlBUUzRnVW1WamIyNWphV3hsY3lCMGFHVWdjbTl2ZENCRVQwMGdibTlrWlN3Z2RHaGxiaUJ5WldOMWNuTmxjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdjSEpsZGtWc1pXMWxiblJjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVWc1pXMWxiblI5SUc1bGVIUkZiR1Z0Wlc1MFhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaUJBYjNabGNuSnBaR0ZpYkdWY2JpQWdJQ292WEc0Z0lIVndaR0YwWlVOdmJYQnZibVZ1ZERvZ1puVnVZM1JwYjI0Z0tIUnlZVzV6WVdOMGFXOXVMQ0J3Y21WMlJXeGxiV1Z1ZEN3Z2JtVjRkRVZzWlcxbGJuUXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYkdGemRGQnliM0J6SUQwZ2NISmxka1ZzWlcxbGJuUXVjSEp2Y0hNN1hHNGdJQ0FnZG1GeUlHNWxlSFJRY205d2N5QTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpPMXh1WEc0Z0lDQWdjM2RwZEdOb0lDaDBhR2x6TGw5MFlXY3BJSHRjYmlBZ0lDQWdJR05oYzJVZ0oySjFkSFJ2YmljNlhHNGdJQ0FnSUNBZ0lHeGhjM1JRY205d2N5QTlJRkpsWVdOMFJFOU5RblYwZEc5dUxtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJR3hoYzNSUWNtOXdjeWs3WEc0Z0lDQWdJQ0FnSUc1bGVIUlFjbTl3Y3lBOUlGSmxZV04wUkU5TlFuVjBkRzl1TG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lHNWxlSFJRY205d2N5azdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0FuYVc1d2RYUW5PbHh1SUNBZ0lDQWdJQ0JTWldGamRFUlBUVWx1Y0hWMExuVndaR0YwWlZkeVlYQndaWElvZEdocGN5azdYRzRnSUNBZ0lDQWdJR3hoYzNSUWNtOXdjeUE5SUZKbFlXTjBSRTlOU1c1d2RYUXVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnYkdGemRGQnliM0J6S1R0Y2JpQWdJQ0FnSUNBZ2JtVjRkRkJ5YjNCeklEMGdVbVZoWTNSRVQwMUpibkIxZEM1blpYUk9ZWFJwZG1WUWNtOXdjeWgwYUdsekxDQnVaWGgwVUhKdmNITXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjI5d2RHbHZiaWM2WEc0Z0lDQWdJQ0FnSUd4aGMzUlFjbTl3Y3lBOUlGSmxZV04wUkU5TlQzQjBhVzl1TG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lHeGhjM1JRY205d2N5azdYRzRnSUNBZ0lDQWdJRzVsZUhSUWNtOXdjeUE5SUZKbFlXTjBSRTlOVDNCMGFXOXVMbWRsZEU1aGRHbDJaVkJ5YjNCektIUm9hWE1zSUc1bGVIUlFjbTl3Y3lrN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5jMlZzWldOMEp6cGNiaUFnSUNBZ0lDQWdiR0Z6ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFUWld4bFkzUXVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnYkdGemRGQnliM0J6S1R0Y2JpQWdJQ0FnSUNBZ2JtVjRkRkJ5YjNCeklEMGdVbVZoWTNSRVQwMVRaV3hsWTNRdVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2dibVY0ZEZCeWIzQnpLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkMFpYaDBZWEpsWVNjNlhHNGdJQ0FnSUNBZ0lGSmxZV04wUkU5TlZHVjRkR0Z5WldFdWRYQmtZWFJsVjNKaGNIQmxjaWgwYUdsektUdGNiaUFnSUNBZ0lDQWdiR0Z6ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFVWlhoMFlYSmxZUzVuWlhST1lYUnBkbVZRY205d2N5aDBhR2x6TENCc1lYTjBVSEp2Y0hNcE8xeHVJQ0FnSUNBZ0lDQnVaWGgwVUhKdmNITWdQU0JTWldGamRFUlBUVlJsZUhSaGNtVmhMbWRsZEU1aGRHbDJaVkJ5YjNCektIUm9hWE1zSUc1bGVIUlFjbTl3Y3lrN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJKWmlCMGFHVWdZMjl1ZEdWNGRDQnBjeUJ5WldabGNtVnVZMlV0WlhGMVlXd2dkRzhnZEdobElHOXNaQ0J2Ym1Vc0lIQmhjM01nWkc5M2JpQjBhR1VnYzJGdFpWeHVJQ0FnSUNBZ0x5OGdjSEp2WTJWemMyVmtJRzlpYW1WamRDQnpieUIwYUdVZ2RYQmtZWFJsSUdKaGFXeHZkWFFnYVc0Z1VtVmhZM1JTWldOdmJtTnBiR1Z5SUdKbGFHRjJaWE5jYmlBZ0lDQWdJQzh2SUdOdmNuSmxZM1JzZVNBb1lXNWtJR2xrWlc1MGFXTmhiR3g1SUdsdUlHUmxkaUJoYm1RZ2NISnZaQ2t1SUZObFpTQWpOVEF3TlM1Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TGw5MWJuQnliMk5sYzNObFpFTnZiblJsZUhSRVpYWWdJVDA5SUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmZFc1d2NtOWpaWE56WldSRGIyNTBaWGgwUkdWMklEMGdZMjl1ZEdWNGREdGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmNISnZZMlZ6YzJWa1EyOXVkR1Y0ZEVSbGRpQTlJSEJ5YjJObGMzTkRhR2xzWkVOdmJuUmxlSFJFWlhZb1kyOXVkR1Y0ZEN3Z2RHaHBjeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JqYjI1MFpYaDBJRDBnZEdocGN5NWZjSEp2WTJWemMyVmtRMjl1ZEdWNGRFUmxkanRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmhjM05sY25SV1lXeHBaRkJ5YjNCektIUm9hWE1zSUc1bGVIUlFjbTl3Y3lrN1hHNGdJQ0FnZEdocGN5NWZkWEJrWVhSbFJFOU5VSEp2Y0dWeWRHbGxjeWhzWVhOMFVISnZjSE1zSUc1bGVIUlFjbTl3Y3l3Z2RISmhibk5oWTNScGIyNHNJRzUxYkd3cE8xeHVJQ0FnSUhSb2FYTXVYM1Z3WkdGMFpVUlBUVU5vYVd4a2NtVnVLR3hoYzNSUWNtOXdjeXdnYm1WNGRGQnliM0J6TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzVjYmlBZ0lDQnBaaUFvSVdOaGJrUmxabWx1WlZCeWIzQmxjblI1SUNZbUlIUm9hWE11WDI1dlpHVlhhWFJvVEdWbllXTjVVSEp2Y0dWeWRHbGxjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZibTlrWlZkcGRHaE1aV2RoWTNsUWNtOXdaWEowYVdWekxuQnliM0J6SUQwZ2JtVjRkRkJ5YjNCek8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDBhR2x6TGw5MFlXY2dQVDA5SUNkelpXeGxZM1FuS1NCN1hHNGdJQ0FnSUNBdkx5QThjMlZzWldOMFBpQjJZV3gxWlNCMWNHUmhkR1VnYm1WbFpITWdkRzhnYjJOamRYSWdZV1owWlhJZ1BHOXdkR2x2Ymo0Z1kyaHBiR1J5Wlc1Y2JpQWdJQ0FnSUM4dklISmxZMjl1WTJsc2FXRjBhVzl1WEc0Z0lDQWdJQ0IwY21GdWMyRmpkR2x2Ymk1blpYUlNaV0ZqZEUxdmRXNTBVbVZoWkhrb0tTNWxibkYxWlhWbEtIQnZjM1JWY0dSaGRHVlRaV3hsWTNSWGNtRndjR1Z5TENCMGFHbHpLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbFkyOXVZMmxzWlhNZ2RHaGxJSEJ5YjNCbGNuUnBaWE1nWW5rZ1pHVjBaV04wYVc1bklHUnBabVpsY21WdVkyVnpJR2x1SUhCeWIzQmxjblI1SUhaaGJIVmxjeUJoYm1SY2JpQWdJQ29nZFhCa1lYUnBibWNnZEdobElFUlBUU0JoY3lCdVpXTmxjM05oY25rdUlGUm9hWE1nWm5WdVkzUnBiMjRnYVhNZ2NISnZZbUZpYkhrZ2RHaGxJSE5wYm1kc1pTQnRiM04wWEc0Z0lDQXFJR055YVhScFkyRnNJSEJoZEdnZ1ptOXlJSEJsY21admNtMWhibU5sSUc5d2RHbHRhWHBoZEdsdmJpNWNiaUFnSUNwY2JpQWdJQ29nVkU5RVR6b2dRbVZ1WTJodFlYSnJJSGRvWlhSb1pYSWdZMmhsWTJ0cGJtY2dabTl5SUdOb1lXNW5aV1FnZG1Gc2RXVnpJR2x1SUcxbGJXOXllU0JoWTNSMVlXeHNlVnh1SUNBZ0tpQWdJQ0FnSUNCcGJYQnliM1psY3lCd1pYSm1iM0p0WVc1alpTQW9aWE53WldOcFlXeHNlU0J6ZEdGMGFXTmhiR3g1SUhCdmMybDBhVzl1WldRZ1pXeGxiV1Z1ZEhNcExseHVJQ0FnS2lCVVQwUlBPaUJDWlc1amFHMWhjbXNnZEdobElHVm1abVZqZEhNZ2IyWWdjSFYwZEdsdVp5QjBhR2x6SUdGMElIUm9aU0IwYjNBZ2MybHVZMlVnT1RrbElHOW1JSEJ5YjNCelhHNGdJQ0FxSUNBZ0lDQWdJR1J2SUc1dmRDQmphR0Z1WjJVZ1ptOXlJR0VnWjJsMlpXNGdjbVZqYjI1amFXeHBZWFJwYjI0dVhHNGdJQ0FxSUZSUFJFODZJRUpsYm1Ob2JXRnlheUJoY21WaGN5QjBhR0YwSUdOaGJpQmlaU0JwYlhCeWIzWmxaQ0IzYVhSb0lHTmhZMmhwYm1jdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3Y21sMllYUmxYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCc1lYTjBVSEp2Y0hOY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzVsZUhSUWNtOXdjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN1AwUlBUVVZzWlcxbGJuUjlJRzV2WkdWY2JpQWdJQ292WEc0Z0lGOTFjR1JoZEdWRVQwMVFjbTl3WlhKMGFXVnpPaUJtZFc1amRHbHZiaUFvYkdGemRGQnliM0J6TENCdVpYaDBVSEp2Y0hNc0lIUnlZVzV6WVdOMGFXOXVMQ0J1YjJSbEtTQjdYRzRnSUNBZ2RtRnlJSEJ5YjNCTFpYazdYRzRnSUNBZ2RtRnlJSE4wZVd4bFRtRnRaVHRjYmlBZ0lDQjJZWElnYzNSNWJHVlZjR1JoZEdWek8xeHVJQ0FnSUdadmNpQW9jSEp2Y0V0bGVTQnBiaUJzWVhOMFVISnZjSE1wSUh0Y2JpQWdJQ0FnSUdsbUlDaHVaWGgwVUhKdmNITXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRXRsZVNrZ2ZId2dJV3hoYzNSUWNtOXdjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3UzJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNod2NtOXdTMlY1SUQwOVBTQlRWRmxNUlNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnYkdGemRGTjBlV3hsSUQwZ2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pVTnZjSGs3WEc0Z0lDQWdJQ0FnSUdadmNpQW9jM1I1YkdWT1lXMWxJR2x1SUd4aGMzUlRkSGxzWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoc1lYTjBVM1I1YkdVdWFHRnpUM2R1VUhKdmNHVnlkSGtvYzNSNWJHVk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVlZjR1JoZEdWeklEMGdjM1I1YkdWVmNHUmhkR1Z6SUh4OElIdDlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUjViR1ZWY0dSaGRHVnpXM04wZVd4bFRtRnRaVjBnUFNBbkp6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pVTnZjSGtnUFNCdWRXeHNPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2NtOXdTMlY1S1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYkdGemRGQnliM0J6VzNCeWIzQkxaWGxkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVDI1c2VTQmpZV3hzSUdSbGJHVjBaVXhwYzNSbGJtVnlJR2xtSUhSb1pYSmxJSGRoY3lCaElHeHBjM1JsYm1WeUlIQnlaWFpwYjNWemJIa2diM0pjYmlBZ0lDQWdJQ0FnSUNBdkx5QmxiSE5sSUhkcGJHeEVaV3hsZEdWTWFYTjBaVzVsY2lCblpYUnpJR05oYkd4bFpDQjNhR1Z1SUhSb1pYSmxJSGRoYzI0bmRDQmhZM1IxWVd4c2VTQmhYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2JHbHpkR1Z1WlhJZ0tHVXVaeTRzSUc5dVEyeHBZMnM5ZTI1MWJHeDlLVnh1SUNBZ0lDQWdJQ0FnSUdSbGJHVjBaVXhwYzNSbGJtVnlLSFJvYVhNdVgzSnZiM1JPYjJSbFNVUXNJSEJ5YjNCTFpYa3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0VSUFRWQnliM0JsY25SNUxuQnliM0JsY25ScFpYTmJjSEp2Y0V0bGVWMGdmSHdnUkU5TlVISnZjR1Z5ZEhrdWFYTkRkWE4wYjIxQmRIUnlhV0oxZEdVb2NISnZjRXRsZVNrcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGdWIyUmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JtOWtaU0E5SUZKbFlXTjBUVzkxYm5RdVoyVjBUbTlrWlNoMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11WkdWc1pYUmxWbUZzZFdWR2IzSlFjbTl3WlhKMGVTaHViMlJsTENCd2NtOXdTMlY1S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdabTl5SUNod2NtOXdTMlY1SUdsdUlHNWxlSFJRY205d2N5a2dlMXh1SUNBZ0lDQWdkbUZ5SUc1bGVIUlFjbTl3SUQwZ2JtVjRkRkJ5YjNCelczQnliM0JMWlhsZE8xeHVJQ0FnSUNBZ2RtRnlJR3hoYzNSUWNtOXdJRDBnY0hKdmNFdGxlU0E5UFQwZ1UxUlpURVVnUHlCMGFHbHpMbDl3Y21WMmFXOTFjMU4wZVd4bFEyOXdlU0E2SUd4aGMzUlFjbTl3YzF0d2NtOXdTMlY1WFR0Y2JpQWdJQ0FnSUdsbUlDZ2hibVY0ZEZCeWIzQnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JMWlhrcElIeDhJRzVsZUhSUWNtOXdJRDA5UFNCc1lYTjBVSEp2Y0NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2h3Y205d1MyVjVJRDA5UFNCVFZGbE1SU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9ibVY0ZEZCeWIzQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMmhsWTJ0QmJtUlhZWEp1Um05eVRYVjBZWFJsWkZOMGVXeGxLSFJvYVhNdVgzQnlaWFpwYjNWelUzUjViR1ZEYjNCNUxDQjBhR2x6TGw5d2NtVjJhVzkxYzFOMGVXeGxMQ0IwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdVZ1BTQnVaWGgwVUhKdmNEdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2JtVjRkRkJ5YjNBZ1BTQjBhR2x6TGw5d2NtVjJhVzkxYzFOMGVXeGxRMjl3ZVNBOUlHRnpjMmxuYmloN2ZTd2dibVY0ZEZCeWIzQXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdWRGIzQjVJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb2JHRnpkRkJ5YjNBcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCVmJuTmxkQ0J6ZEhsc1pYTWdiMjRnWUd4aGMzUlFjbTl3WUNCaWRYUWdibTkwSUc5dUlHQnVaWGgwVUhKdmNHQXVYRzRnSUNBZ0lDQWdJQ0FnWm05eUlDaHpkSGxzWlU1aGJXVWdhVzRnYkdGemRGQnliM0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc1lYTjBVSEp2Y0M1b1lYTlBkMjVRY205d1pYSjBlU2h6ZEhsc1pVNWhiV1VwSUNZbUlDZ2hibVY0ZEZCeWIzQWdmSHdnSVc1bGVIUlFjbTl3TG1oaGMwOTNibEJ5YjNCbGNuUjVLSE4wZVd4bFRtRnRaU2twS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxWWEJrWVhSbGN5QTlJSE4wZVd4bFZYQmtZWFJsY3lCOGZDQjdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdWVmNHUmhkR1Z6VzNOMGVXeGxUbUZ0WlYwZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdWWEJrWVhSbElITjBlV3hsY3lCMGFHRjBJR05vWVc1blpXUWdjMmx1WTJVZ1lHeGhjM1JRY205d1lDNWNiaUFnSUNBZ0lDQWdJQ0JtYjNJZ0tITjBlV3hsVG1GdFpTQnBiaUJ1WlhoMFVISnZjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c1bGVIUlFjbTl3TG1oaGMwOTNibEJ5YjNCbGNuUjVLSE4wZVd4bFRtRnRaU2tnSmlZZ2JHRnpkRkJ5YjNCYmMzUjViR1ZPWVcxbFhTQWhQVDBnYm1WNGRGQnliM0JiYzNSNWJHVk9ZVzFsWFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVlZ3WkdGMFpYTWdQU0J6ZEhsc1pWVndaR0YwWlhNZ2ZId2dlMzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFZYQmtZWFJsYzF0emRIbHNaVTVoYldWZElEMGdibVY0ZEZCeWIzQmJjM1I1YkdWT1lXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdVbVZzYVdWeklHOXVJR0IxY0dSaGRHVlRkSGxzWlhOQ2VVbEVZQ0J1YjNRZ2JYVjBZWFJwYm1jZ1lITjBlV3hsVlhCa1lYUmxjMkF1WEc0Z0lDQWdJQ0FnSUNBZ2MzUjViR1ZWY0dSaGRHVnpJRDBnYm1WNGRGQnliM0E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0V0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHNWxlSFJRY205d0tTQjdYRzRnSUNBZ0lDQWdJQ0FnWlc1eGRXVjFaVkIxZEV4cGMzUmxibVZ5S0hSb2FYTXVYM0p2YjNST2IyUmxTVVFzSUhCeWIzQkxaWGtzSUc1bGVIUlFjbTl3TENCMGNtRnVjMkZqZEdsdmJpazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvYkdGemRGQnliM0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmtaV3hsZEdWTWFYTjBaVzVsY2loMGFHbHpMbDl5YjI5MFRtOWtaVWxFTENCd2NtOXdTMlY1S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBjME4xYzNSdmJVTnZiWEJ2Ym1WdWRDaDBhR2x6TGw5MFlXY3NJRzVsZUhSUWNtOXdjeWtwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z1YjJSbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYm05a1pTQTlJRkpsWVdOMFRXOTFiblF1WjJWMFRtOWtaU2gwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVjMlYwVm1Gc2RXVkdiM0pCZEhSeWFXSjFkR1VvYm05a1pTd2djSEp2Y0V0bGVTd2dibVY0ZEZCeWIzQXBPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hFVDAxUWNtOXdaWEowZVM1d2NtOXdaWEowYVdWelczQnliM0JMWlhsZElIeDhJRVJQVFZCeWIzQmxjblI1TG1selEzVnpkRzl0UVhSMGNtbGlkWFJsS0hCeWIzQkxaWGtwS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doYm05a1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUc1dlpHVWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0x5OGdTV1lnZDJVbmNtVWdkWEJrWVhScGJtY2dkRzhnYm5Wc2JDQnZjaUIxYm1SbFptbHVaV1FzSUhkbElITm9iM1ZzWkNCeVpXMXZkbVVnZEdobElIQnliM0JsY25SNVhHNGdJQ0FnSUNBZ0lDOHZJR1p5YjIwZ2RHaGxJRVJQVFNCdWIyUmxJR2x1YzNSbFlXUWdiMllnYVc1aFpIWmxjblJoYm5Sc2VTQnpaWFIwYVc1bklIUnZJR0VnYzNSeWFXNW5MaUJVYUdselhHNGdJQ0FnSUNBZ0lDOHZJR0p5YVc1bmN5QjFjeUJwYmlCc2FXNWxJSGRwZEdnZ2RHaGxJSE5oYldVZ1ltVm9ZWFpwYjNJZ2QyVWdhR0YyWlNCdmJpQnBibWwwYVdGc0lISmxibVJsY2k1Y2JpQWdJQ0FnSUNBZ2FXWWdLRzVsZUhSUWNtOXdJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnSUNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVjMlYwVm1Gc2RXVkdiM0pRY205d1pYSjBlU2h1YjJSbExDQndjbTl3UzJWNUxDQnVaWGgwVUhKdmNDazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekxtUmxiR1YwWlZaaGJIVmxSbTl5VUhKdmNHVnlkSGtvYm05a1pTd2djSEp2Y0V0bGVTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSE4wZVd4bFZYQmtZWFJsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0Z1YjJSbEtTQjdYRzRnSUNBZ0lDQWdJRzV2WkdVZ1BTQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQkRVMU5RY205d1pYSjBlVTl3WlhKaGRHbHZibk11YzJWMFZtRnNkV1ZHYjNKVGRIbHNaWE1vYm05a1pTd2djM1I1YkdWVmNHUmhkR1Z6S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxZMjl1WTJsc1pYTWdkR2hsSUdOb2FXeGtjbVZ1SUhkcGRHZ2dkR2hsSUhaaGNtbHZkWE1nY0hKdmNHVnlkR2xsY3lCMGFHRjBJR0ZtWm1WamRDQjBhR1ZjYmlBZ0lDb2dZMmhwYkdSeVpXNGdZMjl1ZEdWdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR3hoYzNSUWNtOXdjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2JtVjRkRkJ5YjNCelhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052Ym5SbGVIUmNiaUFnSUNvdlhHNGdJRjkxY0dSaGRHVkVUMDFEYUdsc1pISmxiam9nWm5WdVkzUnBiMjRnS0d4aGMzUlFjbTl3Y3l3Z2JtVjRkRkJ5YjNCekxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCc1lYTjBRMjl1ZEdWdWRDQTlJRU5QVGxSRlRsUmZWRmxRUlZOYmRIbHdaVzltSUd4aGMzUlFjbTl3Y3k1amFHbHNaSEpsYmwwZ1B5QnNZWE4wVUhKdmNITXVZMmhwYkdSeVpXNGdPaUJ1ZFd4c08xeHVJQ0FnSUhaaGNpQnVaWGgwUTI5dWRHVnVkQ0E5SUVOUFRsUkZUbFJmVkZsUVJWTmJkSGx3Wlc5bUlHNWxlSFJRY205d2N5NWphR2xzWkhKbGJsMGdQeUJ1WlhoMFVISnZjSE11WTJocGJHUnlaVzRnT2lCdWRXeHNPMXh1WEc0Z0lDQWdkbUZ5SUd4aGMzUklkRzFzSUQwZ2JHRnpkRkJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNSUNZbUlHeGhjM1JRY205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEM1ZlgyaDBiV3c3WEc0Z0lDQWdkbUZ5SUc1bGVIUklkRzFzSUQwZ2JtVjRkRkJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNSUNZbUlHNWxlSFJRY205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEM1ZlgyaDBiV3c3WEc1Y2JpQWdJQ0F2THlCT2IzUmxJSFJvWlNCMWMyVWdiMllnWUNFOVlDQjNhR2xqYUNCamFHVmphM01nWm05eUlHNTFiR3dnYjNJZ2RXNWtaV1pwYm1Wa0xseHVJQ0FnSUhaaGNpQnNZWE4wUTJocGJHUnlaVzRnUFNCc1lYTjBRMjl1ZEdWdWRDQWhQU0J1ZFd4c0lEOGdiblZzYkNBNklHeGhjM1JRY205d2N5NWphR2xzWkhKbGJqdGNiaUFnSUNCMllYSWdibVY0ZEVOb2FXeGtjbVZ1SUQwZ2JtVjRkRU52Ym5SbGJuUWdJVDBnYm5Wc2JDQS9JRzUxYkd3Z09pQnVaWGgwVUhKdmNITXVZMmhwYkdSeVpXNDdYRzVjYmlBZ0lDQXZMeUJKWmlCM1pTZHlaU0J6ZDJsMFkyaHBibWNnWm5KdmJTQmphR2xzWkhKbGJpQjBieUJqYjI1MFpXNTBMMmgwYld3Z2IzSWdkbWxqWlNCMlpYSnpZU3dnY21WdGIzWmxYRzRnSUNBZ0x5OGdkR2hsSUc5c1pDQmpiMjUwWlc1MFhHNGdJQ0FnZG1GeUlHeGhjM1JJWVhORGIyNTBaVzUwVDNKSWRHMXNJRDBnYkdGemRFTnZiblJsYm5RZ0lUMGdiblZzYkNCOGZDQnNZWE4wU0hSdGJDQWhQU0J1ZFd4c08xeHVJQ0FnSUhaaGNpQnVaWGgwU0dGelEyOXVkR1Z1ZEU5eVNIUnRiQ0E5SUc1bGVIUkRiMjUwWlc1MElDRTlJRzUxYkd3Z2ZId2dibVY0ZEVoMGJXd2dJVDBnYm5Wc2JEdGNiaUFnSUNCcFppQW9iR0Z6ZEVOb2FXeGtjbVZ1SUNFOUlHNTFiR3dnSmlZZ2JtVjRkRU5vYVd4a2NtVnVJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsUTJocGJHUnlaVzRvYm5Wc2JDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYkdGemRFaGhjME52Ym5SbGJuUlBja2gwYld3Z0ppWWdJVzVsZUhSSVlYTkRiMjUwWlc1MFQzSklkRzFzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWUmxlSFJEYjI1MFpXNTBLQ2NuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JtVjRkRU52Ym5SbGJuUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0d4aGMzUkRiMjUwWlc1MElDRTlQU0J1WlhoMFEyOXVkR1Z1ZENrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaVlJsZUhSRGIyNTBaVzUwS0NjbklDc2dibVY0ZEVOdmJuUmxiblFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvYm1WNGRFaDBiV3dnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHeGhjM1JJZEcxc0lDRTlQU0J1WlhoMFNIUnRiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpVMWhjbXQxY0Nnbkp5QXJJRzVsZUhSSWRHMXNLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzVsZUhSRGFHbHNaSEpsYmlBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpVTm9hV3hrY21WdUtHNWxlSFJEYUdsc1pISmxiaXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1Z6ZEhKdmVYTWdZV3hzSUdWMlpXNTBJSEpsWjJsemRISmhkR2x2Ym5NZ1ptOXlJSFJvYVhNZ2FXNXpkR0Z1WTJVdUlFUnZaWE1nYm05MElISmxiVzkyWlNCbWNtOXRYRzRnSUNBcUlIUm9aU0JFVDAwdUlGUm9ZWFFnYlhWemRDQmlaU0JrYjI1bElHSjVJSFJvWlNCd1lYSmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdkVzV0YjNWdWRFTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSE4zYVhSamFDQW9kR2hwY3k1ZmRHRm5LU0I3WEc0Z0lDQWdJQ0JqWVhObElDZHBabkpoYldVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYVcxbkp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJadmNtMG5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmRtbGtaVzhuT2x4dUlDQWdJQ0FnWTJGelpTQW5ZWFZrYVc4bk9seHVJQ0FnSUNBZ0lDQjJZWElnYkdsemRHVnVaWEp6SUQwZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbExteHBjM1JsYm1WeWN6dGNiaUFnSUNBZ0lDQWdhV1lnS0d4cGMzUmxibVZ5Y3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYkdsemRHVnVaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FYTjBaVzVsY25OYmFWMHVjbVZ0YjNabEtDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5hVzV3ZFhRbk9seHVJQ0FnSUNBZ0lDQlNaV0ZqZEVSUFRVbHVjSFYwTG5WdWJXOTFiblJYY21Gd2NHVnlLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKMmgwYld3bk9seHVJQ0FnSUNBZ1kyRnpaU0FuYUdWaFpDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkaWIyUjVKenBjYmlBZ0lDQWdJQ0FnTHlvcVhHNGdJQ0FnSUNBZ0lDQXFJRU52YlhCdmJtVnVkSE1nYkdsclpTQThhSFJ0YkQ0Z1BHaGxZV1ErSUdGdVpDQThZbTlrZVQ0Z1kyRnVKM1FnWW1VZ2NtVnRiM1psWkNCdmNpQmhaR1JsWkZ4dUlDQWdJQ0FnSUNBZ0tpQmxZWE5wYkhrZ2FXNGdZU0JqY205emN5MWljbTkzYzJWeUlIZGhlU3dnYUc5M1pYWmxjaUJwZENkeklIWmhiSFZoWW14bElIUnZJR0psSUdGaWJHVWdkRzljYmlBZ0lDQWdJQ0FnSUNvZ2RHRnJaU0JoWkhaaGJuUmhaMlVnYjJZZ1VtVmhZM1FuY3lCeVpXTnZibU5wYkdsaGRHbHZiaUJtYjNJZ2MzUjViR2x1WnlCaGJtUWdQSFJwZEd4bFBseHVJQ0FnSUNBZ0lDQWdLaUJ0WVc1aFoyVnRaVzUwTGlCVGJ5QjNaU0JxZFhOMElHUnZZM1Z0Wlc1MElHbDBJR0Z1WkNCMGFISnZkeUJwYmlCa1lXNW5aWEp2ZFhNZ1kyRnpaWE11WEc0Z0lDQWdJQ0FnSUNBcUwxeHVJQ0FnSUNBZ0lDQWhabUZzYzJVZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUENWelBpQjBjbWxsWkNCMGJ5QjFibTF2ZFc1MExpQkNaV05oZFhObElHOW1JR055YjNOekxXSnliM2R6WlhJZ2NYVnBjbXR6SUdsMElHbHpJQ2NnS3lBbmFXMXdiM056YVdKc1pTQjBieUIxYm0xdmRXNTBJSE52YldVZ2RHOXdMV3hsZG1Wc0lHTnZiWEJ2Ym1WdWRITWdLR1ZuSUR4b2RHMXNQaXdnSnlBcklDYzhhR1ZoWkQ0c0lHRnVaQ0E4WW05a2VUNHBJSEpsYkdsaFlteDVJR0Z1WkNCbFptWnBZMmxsYm5Sc2VTNGdWRzhnWm1sNElIUm9hWE1zSUdoaGRtVWdZU0FuSUNzZ0ozTnBibWRzWlNCMGIzQXRiR1YyWld3Z1kyOXRjRzl1Wlc1MElIUm9ZWFFnYm1WMlpYSWdkVzV0YjNWdWRITWdjbVZ1WkdWeUlIUm9aWE5sSUNjZ0t5QW5aV3hsYldWdWRITXVKeXdnZEdocGN5NWZkR0ZuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVkVzV0YjNWdWRFTm9hV3hrY21WdUtDazdYRzRnSUNBZ1VtVmhZM1JDY205M2MyVnlSWFpsYm5SRmJXbDBkR1Z5TG1SbGJHVjBaVUZzYkV4cGMzUmxibVZ5Y3loMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0JTWldGamRFTnZiWEJ2Ym1WdWRFSnliM2R6WlhKRmJuWnBjbTl1YldWdWRDNTFibTF2ZFc1MFNVUkdjbTl0Ulc1MmFYSnZibTFsYm5Rb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrN1hHNGdJQ0FnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0E5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbElEMGdiblZzYkR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JtOWtaU0E5SUhSb2FYTXVYMjV2WkdWWGFYUm9UR1ZuWVdONVVISnZjR1Z5ZEdsbGN6dGNiaUFnSUNBZ0lHNXZaR1V1WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdaMlYwVUhWaWJHbGpTVzV6ZEdGdVkyVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11WDI1dlpHVlhhWFJvVEdWbllXTjVVSEp2Y0dWeWRHbGxjeWtnZTF4dUlDQWdJQ0FnZG1GeUlHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrN1hHNWNiaUFnSUNBZ0lHNXZaR1V1WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUWdQU0IwYUdsek8xeHVJQ0FnSUNBZ2JtOWtaUzVuWlhSRVQwMU9iMlJsSUQwZ2JHVm5ZV041UjJWMFJFOU5UbTlrWlR0Y2JpQWdJQ0FnSUc1dlpHVXVhWE5OYjNWdWRHVmtJRDBnYkdWbllXTjVTWE5OYjNWdWRHVmtPMXh1SUNBZ0lDQWdibTlrWlM1elpYUlRkR0YwWlNBOUlHeGxaMkZqZVZObGRGTjBZWFJsUlhSak8xeHVJQ0FnSUNBZ2JtOWtaUzV5WlhCc1lXTmxVM1JoZEdVZ1BTQnNaV2RoWTNsVFpYUlRkR0YwWlVWMFl6dGNiaUFnSUNBZ0lHNXZaR1V1Wm05eVkyVlZjR1JoZEdVZ1BTQnNaV2RoWTNsVFpYUlRkR0YwWlVWMFl6dGNiaUFnSUNBZ0lHNXZaR1V1YzJWMFVISnZjSE1nUFNCc1pXZGhZM2xUWlhSUWNtOXdjenRjYmlBZ0lDQWdJRzV2WkdVdWNtVndiR0ZqWlZCeWIzQnpJRDBnYkdWbllXTjVVbVZ3YkdGalpWQnliM0J6TzF4dVhHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWh1YjJSbExDQnNaV2RoWTNsUWNtOXdjMFJsYzJOeWFYQjBiM0lwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWRDQjNhV3hzSUhWd1pHRjBaU0IwYUdseklIQnliM0JsY25SNUlHOXVJSE4xWW5ObGNYVmxiblFnY21WdVpHVnljMXh1SUNBZ0lDQWdJQ0FnSUc1dlpHVXVjSEp2Y0hNZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdMeThnZFhCa1lYUmxRMjl0Y0c5dVpXNTBJSGRwYkd3Z2RYQmtZWFJsSUhSb2FYTWdjSEp2Y0dWeWRIa2diMjRnYzNWaWMyVnhkV1Z1ZENCeVpXNWtaWEp6WEc0Z0lDQWdJQ0FnSUc1dlpHVXVjSEp2Y0hNZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkR2hwY3k1ZmJtOWtaVmRwZEdoTVpXZGhZM2xRY205d1pYSjBhV1Z6SUQwZ2JtOWtaVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMjV2WkdWWGFYUm9UR1ZuWVdONVVISnZjR1Z5ZEdsbGN6dGNiaUFnZlZ4dVhHNTlPMXh1WEc1U1pXRmpkRkJsY21ZdWJXVmhjM1Z5WlUxbGRHaHZaSE1vVW1WaFkzUkVUMDFEYjIxd2IyNWxiblFzSUNkU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZENjc0lIdGNiaUFnYlc5MWJuUkRiMjF3YjI1bGJuUTZJQ2R0YjNWdWRFTnZiWEJ2Ym1WdWRDY3NYRzRnSUhWd1pHRjBaVU52YlhCdmJtVnVkRG9nSjNWd1pHRjBaVU52YlhCdmJtVnVkQ2RjYm4wcE8xeHVYRzVoYzNOcFoyNG9VbVZoWTNSRVQwMURiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxMQ0JTWldGamRFUlBUVU52YlhCdmJtVnVkQzVOYVhocGJpd2dVbVZoWTNSTmRXeDBhVU5vYVd4a0xrMXBlR2x1S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWREc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUZhY3Rvcmllc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG5cbnZhciBtYXBPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9tYXBPYmplY3QnKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1MIHRhZyBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRhZyBuYW1lIChlLmcuIGBkaXZgKS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURPTUZhY3RvcnkodGFnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5KHRhZyk7XG4gIH1cbiAgcmV0dXJuIFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5KHRhZyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQgSFRNTCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5cbiAqIFRoaXMgaXMgYWxzbyBhY2Nlc3NpYmxlIHZpYSBgUmVhY3QuRE9NYC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IG1hcE9iamVjdCh7XG4gIGE6ICdhJyxcbiAgYWJicjogJ2FiYnInLFxuICBhZGRyZXNzOiAnYWRkcmVzcycsXG4gIGFyZWE6ICdhcmVhJyxcbiAgYXJ0aWNsZTogJ2FydGljbGUnLFxuICBhc2lkZTogJ2FzaWRlJyxcbiAgYXVkaW86ICdhdWRpbycsXG4gIGI6ICdiJyxcbiAgYmFzZTogJ2Jhc2UnLFxuICBiZGk6ICdiZGknLFxuICBiZG86ICdiZG8nLFxuICBiaWc6ICdiaWcnLFxuICBibG9ja3F1b3RlOiAnYmxvY2txdW90ZScsXG4gIGJvZHk6ICdib2R5JyxcbiAgYnI6ICdicicsXG4gIGJ1dHRvbjogJ2J1dHRvbicsXG4gIGNhbnZhczogJ2NhbnZhcycsXG4gIGNhcHRpb246ICdjYXB0aW9uJyxcbiAgY2l0ZTogJ2NpdGUnLFxuICBjb2RlOiAnY29kZScsXG4gIGNvbDogJ2NvbCcsXG4gIGNvbGdyb3VwOiAnY29sZ3JvdXAnLFxuICBkYXRhOiAnZGF0YScsXG4gIGRhdGFsaXN0OiAnZGF0YWxpc3QnLFxuICBkZDogJ2RkJyxcbiAgZGVsOiAnZGVsJyxcbiAgZGV0YWlsczogJ2RldGFpbHMnLFxuICBkZm46ICdkZm4nLFxuICBkaWFsb2c6ICdkaWFsb2cnLFxuICBkaXY6ICdkaXYnLFxuICBkbDogJ2RsJyxcbiAgZHQ6ICdkdCcsXG4gIGVtOiAnZW0nLFxuICBlbWJlZDogJ2VtYmVkJyxcbiAgZmllbGRzZXQ6ICdmaWVsZHNldCcsXG4gIGZpZ2NhcHRpb246ICdmaWdjYXB0aW9uJyxcbiAgZmlndXJlOiAnZmlndXJlJyxcbiAgZm9vdGVyOiAnZm9vdGVyJyxcbiAgZm9ybTogJ2Zvcm0nLFxuICBoMTogJ2gxJyxcbiAgaDI6ICdoMicsXG4gIGgzOiAnaDMnLFxuICBoNDogJ2g0JyxcbiAgaDU6ICdoNScsXG4gIGg2OiAnaDYnLFxuICBoZWFkOiAnaGVhZCcsXG4gIGhlYWRlcjogJ2hlYWRlcicsXG4gIGhncm91cDogJ2hncm91cCcsXG4gIGhyOiAnaHInLFxuICBodG1sOiAnaHRtbCcsXG4gIGk6ICdpJyxcbiAgaWZyYW1lOiAnaWZyYW1lJyxcbiAgaW1nOiAnaW1nJyxcbiAgaW5wdXQ6ICdpbnB1dCcsXG4gIGluczogJ2lucycsXG4gIGtiZDogJ2tiZCcsXG4gIGtleWdlbjogJ2tleWdlbicsXG4gIGxhYmVsOiAnbGFiZWwnLFxuICBsZWdlbmQ6ICdsZWdlbmQnLFxuICBsaTogJ2xpJyxcbiAgbGluazogJ2xpbmsnLFxuICBtYWluOiAnbWFpbicsXG4gIG1hcDogJ21hcCcsXG4gIG1hcms6ICdtYXJrJyxcbiAgbWVudTogJ21lbnUnLFxuICBtZW51aXRlbTogJ21lbnVpdGVtJyxcbiAgbWV0YTogJ21ldGEnLFxuICBtZXRlcjogJ21ldGVyJyxcbiAgbmF2OiAnbmF2JyxcbiAgbm9zY3JpcHQ6ICdub3NjcmlwdCcsXG4gIG9iamVjdDogJ29iamVjdCcsXG4gIG9sOiAnb2wnLFxuICBvcHRncm91cDogJ29wdGdyb3VwJyxcbiAgb3B0aW9uOiAnb3B0aW9uJyxcbiAgb3V0cHV0OiAnb3V0cHV0JyxcbiAgcDogJ3AnLFxuICBwYXJhbTogJ3BhcmFtJyxcbiAgcGljdHVyZTogJ3BpY3R1cmUnLFxuICBwcmU6ICdwcmUnLFxuICBwcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgcTogJ3EnLFxuICBycDogJ3JwJyxcbiAgcnQ6ICdydCcsXG4gIHJ1Ynk6ICdydWJ5JyxcbiAgczogJ3MnLFxuICBzYW1wOiAnc2FtcCcsXG4gIHNjcmlwdDogJ3NjcmlwdCcsXG4gIHNlY3Rpb246ICdzZWN0aW9uJyxcbiAgc2VsZWN0OiAnc2VsZWN0JyxcbiAgc21hbGw6ICdzbWFsbCcsXG4gIHNvdXJjZTogJ3NvdXJjZScsXG4gIHNwYW46ICdzcGFuJyxcbiAgc3Ryb25nOiAnc3Ryb25nJyxcbiAgc3R5bGU6ICdzdHlsZScsXG4gIHN1YjogJ3N1YicsXG4gIHN1bW1hcnk6ICdzdW1tYXJ5JyxcbiAgc3VwOiAnc3VwJyxcbiAgdGFibGU6ICd0YWJsZScsXG4gIHRib2R5OiAndGJvZHknLFxuICB0ZDogJ3RkJyxcbiAgdGV4dGFyZWE6ICd0ZXh0YXJlYScsXG4gIHRmb290OiAndGZvb3QnLFxuICB0aDogJ3RoJyxcbiAgdGhlYWQ6ICd0aGVhZCcsXG4gIHRpbWU6ICd0aW1lJyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHRyOiAndHInLFxuICB0cmFjazogJ3RyYWNrJyxcbiAgdTogJ3UnLFxuICB1bDogJ3VsJyxcbiAgJ3Zhcic6ICd2YXInLFxuICB2aWRlbzogJ3ZpZGVvJyxcbiAgd2JyOiAnd2JyJyxcblxuICAvLyBTVkdcbiAgY2lyY2xlOiAnY2lyY2xlJyxcbiAgY2xpcFBhdGg6ICdjbGlwUGF0aCcsXG4gIGRlZnM6ICdkZWZzJyxcbiAgZWxsaXBzZTogJ2VsbGlwc2UnLFxuICBnOiAnZycsXG4gIGltYWdlOiAnaW1hZ2UnLFxuICBsaW5lOiAnbGluZScsXG4gIGxpbmVhckdyYWRpZW50OiAnbGluZWFyR3JhZGllbnQnLFxuICBtYXNrOiAnbWFzaycsXG4gIHBhdGg6ICdwYXRoJyxcbiAgcGF0dGVybjogJ3BhdHRlcm4nLFxuICBwb2x5Z29uOiAncG9seWdvbicsXG4gIHBvbHlsaW5lOiAncG9seWxpbmUnLFxuICByYWRpYWxHcmFkaWVudDogJ3JhZGlhbEdyYWRpZW50JyxcbiAgcmVjdDogJ3JlY3QnLFxuICBzdG9wOiAnc3RvcCcsXG4gIHN2ZzogJ3N2ZycsXG4gIHRleHQ6ICd0ZXh0JyxcbiAgdHNwYW46ICd0c3BhbidcblxufSwgY3JlYXRlRE9NRmFjdG9yeSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01GYWN0b3JpZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkVUMDFHWVdOMGIzSnBaWE11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlJtRmpkRzl5YVdWelhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MFZtRnNhV1JoZEc5eUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJbktUdGNibHh1ZG1GeUlHMWhjRTlpYW1WamRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMjFoY0U5aWFtVmpkQ2NwTzF4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlNCaElHWmhZM1J2Y25rZ2RHaGhkQ0JqY21WaGRHVnpJRWhVVFV3Z2RHRm5JR1ZzWlcxbGJuUnpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBZV2NnVkdGbklHNWhiV1VnS0dVdVp5NGdZR1JwZG1BcExseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdZM0psWVhSbFJFOU5SbUZqZEc5eWVTaDBZV2NwSUh0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCeVpYUjFjbTRnVW1WaFkzUkZiR1Z0Wlc1MFZtRnNhV1JoZEc5eUxtTnlaV0YwWlVaaFkzUnZjbmtvZEdGbktUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z1VtVmhZM1JGYkdWdFpXNTBMbU55WldGMFpVWmhZM1J2Y25rb2RHRm5LVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdiV0Z3Y0dsdVp5Qm1jbTl0SUhOMWNIQnZjblJsWkNCSVZFMU1JSFJoWjNNZ2RHOGdZRkpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBZQ0JqYkdGemMyVnpMbHh1SUNvZ1ZHaHBjeUJwY3lCaGJITnZJR0ZqWTJWemMybGliR1VnZG1saElHQlNaV0ZqZEM1RVQwMWdMbHh1SUNwY2JpQXFJRUJ3ZFdKc2FXTmNiaUFxTDF4dWRtRnlJRkpsWVdOMFJFOU5SbUZqZEc5eWFXVnpJRDBnYldGd1QySnFaV04wS0h0Y2JpQWdZVG9nSjJFbkxGeHVJQ0JoWW1KeU9pQW5ZV0ppY2ljc1hHNGdJR0ZrWkhKbGMzTTZJQ2RoWkdSeVpYTnpKeXhjYmlBZ1lYSmxZVG9nSjJGeVpXRW5MRnh1SUNCaGNuUnBZMnhsT2lBbllYSjBhV05zWlNjc1hHNGdJR0Z6YVdSbE9pQW5ZWE5wWkdVbkxGeHVJQ0JoZFdScGJ6b2dKMkYxWkdsdkp5eGNiaUFnWWpvZ0oySW5MRnh1SUNCaVlYTmxPaUFuWW1GelpTY3NYRzRnSUdKa2FUb2dKMkprYVNjc1hHNGdJR0prYnpvZ0oySmtieWNzWEc0Z0lHSnBaem9nSjJKcFp5Y3NYRzRnSUdKc2IyTnJjWFZ2ZEdVNklDZGliRzlqYTNGMWIzUmxKeXhjYmlBZ1ltOWtlVG9nSjJKdlpIa25MRnh1SUNCaWNqb2dKMkp5Snl4Y2JpQWdZblYwZEc5dU9pQW5ZblYwZEc5dUp5eGNiaUFnWTJGdWRtRnpPaUFuWTJGdWRtRnpKeXhjYmlBZ1kyRndkR2x2YmpvZ0oyTmhjSFJwYjI0bkxGeHVJQ0JqYVhSbE9pQW5ZMmwwWlNjc1hHNGdJR052WkdVNklDZGpiMlJsSnl4Y2JpQWdZMjlzT2lBblkyOXNKeXhjYmlBZ1kyOXNaM0p2ZFhBNklDZGpiMnhuY205MWNDY3NYRzRnSUdSaGRHRTZJQ2RrWVhSaEp5eGNiaUFnWkdGMFlXeHBjM1E2SUNka1lYUmhiR2x6ZENjc1hHNGdJR1JrT2lBblpHUW5MRnh1SUNCa1pXdzZJQ2RrWld3bkxGeHVJQ0JrWlhSaGFXeHpPaUFuWkdWMFlXbHNjeWNzWEc0Z0lHUm1iam9nSjJSbWJpY3NYRzRnSUdScFlXeHZaem9nSjJScFlXeHZaeWNzWEc0Z0lHUnBkam9nSjJScGRpY3NYRzRnSUdSc09pQW5aR3duTEZ4dUlDQmtkRG9nSjJSMEp5eGNiaUFnWlcwNklDZGxiU2NzWEc0Z0lHVnRZbVZrT2lBblpXMWlaV1FuTEZ4dUlDQm1hV1ZzWkhObGREb2dKMlpwWld4a2MyVjBKeXhjYmlBZ1ptbG5ZMkZ3ZEdsdmJqb2dKMlpwWjJOaGNIUnBiMjRuTEZ4dUlDQm1hV2QxY21VNklDZG1hV2QxY21VbkxGeHVJQ0JtYjI5MFpYSTZJQ2RtYjI5MFpYSW5MRnh1SUNCbWIzSnRPaUFuWm05eWJTY3NYRzRnSUdneE9pQW5hREVuTEZ4dUlDQm9Nam9nSjJneUp5eGNiaUFnYURNNklDZG9NeWNzWEc0Z0lHZzBPaUFuYURRbkxGeHVJQ0JvTlRvZ0oyZzFKeXhjYmlBZ2FEWTZJQ2RvTmljc1hHNGdJR2hsWVdRNklDZG9aV0ZrSnl4Y2JpQWdhR1ZoWkdWeU9pQW5hR1ZoWkdWeUp5eGNiaUFnYUdkeWIzVndPaUFuYUdkeWIzVndKeXhjYmlBZ2FISTZJQ2RvY2ljc1hHNGdJR2gwYld3NklDZG9kRzFzSnl4Y2JpQWdhVG9nSjJrbkxGeHVJQ0JwWm5KaGJXVTZJQ2RwWm5KaGJXVW5MRnh1SUNCcGJXYzZJQ2RwYldjbkxGeHVJQ0JwYm5CMWREb2dKMmx1Y0hWMEp5eGNiaUFnYVc1ek9pQW5hVzV6Snl4Y2JpQWdhMkprT2lBbmEySmtKeXhjYmlBZ2EyVjVaMlZ1T2lBbmEyVjVaMlZ1Snl4Y2JpQWdiR0ZpWld3NklDZHNZV0psYkNjc1hHNGdJR3hsWjJWdVpEb2dKMnhsWjJWdVpDY3NYRzRnSUd4cE9pQW5iR2tuTEZ4dUlDQnNhVzVyT2lBbmJHbHVheWNzWEc0Z0lHMWhhVzQ2SUNkdFlXbHVKeXhjYmlBZ2JXRndPaUFuYldGd0p5eGNiaUFnYldGeWF6b2dKMjFoY21zbkxGeHVJQ0J0Wlc1MU9pQW5iV1Z1ZFNjc1hHNGdJRzFsYm5WcGRHVnRPaUFuYldWdWRXbDBaVzBuTEZ4dUlDQnRaWFJoT2lBbmJXVjBZU2NzWEc0Z0lHMWxkR1Z5T2lBbmJXVjBaWEluTEZ4dUlDQnVZWFk2SUNkdVlYWW5MRnh1SUNCdWIzTmpjbWx3ZERvZ0oyNXZjMk55YVhCMEp5eGNiaUFnYjJKcVpXTjBPaUFuYjJKcVpXTjBKeXhjYmlBZ2IydzZJQ2R2YkNjc1hHNGdJRzl3ZEdkeWIzVndPaUFuYjNCMFozSnZkWEFuTEZ4dUlDQnZjSFJwYjI0NklDZHZjSFJwYjI0bkxGeHVJQ0J2ZFhSd2RYUTZJQ2R2ZFhSd2RYUW5MRnh1SUNCd09pQW5jQ2NzWEc0Z0lIQmhjbUZ0T2lBbmNHRnlZVzBuTEZ4dUlDQndhV04wZFhKbE9pQW5jR2xqZEhWeVpTY3NYRzRnSUhCeVpUb2dKM0J5WlNjc1hHNGdJSEJ5YjJkeVpYTnpPaUFuY0hKdlozSmxjM01uTEZ4dUlDQnhPaUFuY1Njc1hHNGdJSEp3T2lBbmNuQW5MRnh1SUNCeWREb2dKM0owSnl4Y2JpQWdjblZpZVRvZ0ozSjFZbmtuTEZ4dUlDQnpPaUFuY3ljc1hHNGdJSE5oYlhBNklDZHpZVzF3Snl4Y2JpQWdjMk55YVhCME9pQW5jMk55YVhCMEp5eGNiaUFnYzJWamRHbHZiam9nSjNObFkzUnBiMjRuTEZ4dUlDQnpaV3hsWTNRNklDZHpaV3hsWTNRbkxGeHVJQ0J6YldGc2JEb2dKM050WVd4c0p5eGNiaUFnYzI5MWNtTmxPaUFuYzI5MWNtTmxKeXhjYmlBZ2MzQmhiam9nSjNOd1lXNG5MRnh1SUNCemRISnZibWM2SUNkemRISnZibWNuTEZ4dUlDQnpkSGxzWlRvZ0ozTjBlV3hsSnl4Y2JpQWdjM1ZpT2lBbmMzVmlKeXhjYmlBZ2MzVnRiV0Z5ZVRvZ0ozTjFiVzFoY25rbkxGeHVJQ0J6ZFhBNklDZHpkWEFuTEZ4dUlDQjBZV0pzWlRvZ0ozUmhZbXhsSnl4Y2JpQWdkR0p2WkhrNklDZDBZbTlrZVNjc1hHNGdJSFJrT2lBbmRHUW5MRnh1SUNCMFpYaDBZWEpsWVRvZ0ozUmxlSFJoY21WaEp5eGNiaUFnZEdadmIzUTZJQ2QwWm05dmRDY3NYRzRnSUhSb09pQW5kR2duTEZ4dUlDQjBhR1ZoWkRvZ0ozUm9aV0ZrSnl4Y2JpQWdkR2x0WlRvZ0ozUnBiV1VuTEZ4dUlDQjBhWFJzWlRvZ0ozUnBkR3hsSnl4Y2JpQWdkSEk2SUNkMGNpY3NYRzRnSUhSeVlXTnJPaUFuZEhKaFkyc25MRnh1SUNCMU9pQW5kU2NzWEc0Z0lIVnNPaUFuZFd3bkxGeHVJQ0FuZG1GeUp6b2dKM1poY2ljc1hHNGdJSFpwWkdWdk9pQW5kbWxrWlc4bkxGeHVJQ0IzWW5JNklDZDNZbkluTEZ4dVhHNGdJQzh2SUZOV1IxeHVJQ0JqYVhKamJHVTZJQ2RqYVhKamJHVW5MRnh1SUNCamJHbHdVR0YwYURvZ0oyTnNhWEJRWVhSb0p5eGNiaUFnWkdWbWN6b2dKMlJsWm5NbkxGeHVJQ0JsYkd4cGNITmxPaUFuWld4c2FYQnpaU2NzWEc0Z0lHYzZJQ2RuSnl4Y2JpQWdhVzFoWjJVNklDZHBiV0ZuWlNjc1hHNGdJR3hwYm1VNklDZHNhVzVsSnl4Y2JpQWdiR2x1WldGeVIzSmhaR2xsYm5RNklDZHNhVzVsWVhKSGNtRmthV1Z1ZENjc1hHNGdJRzFoYzJzNklDZHRZWE5ySnl4Y2JpQWdjR0YwYURvZ0ozQmhkR2duTEZ4dUlDQndZWFIwWlhKdU9pQW5jR0YwZEdWeWJpY3NYRzRnSUhCdmJIbG5iMjQ2SUNkd2IyeDVaMjl1Snl4Y2JpQWdjRzlzZVd4cGJtVTZJQ2R3YjJ4NWJHbHVaU2NzWEc0Z0lISmhaR2xoYkVkeVlXUnBaVzUwT2lBbmNtRmthV0ZzUjNKaFpHbGxiblFuTEZ4dUlDQnlaV04wT2lBbmNtVmpkQ2NzWEc0Z0lITjBiM0E2SUNkemRHOXdKeXhjYmlBZ2MzWm5PaUFuYzNabkp5eGNiaUFnZEdWNGREb2dKM1JsZUhRbkxGeHVJQ0IwYzNCaGJqb2dKM1J6Y0dGdUoxeHVYRzU5TENCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRVWmhZM1J2Y21sbGN6c2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUlET3BlcmF0aW9uc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBFcnJvcnMgZm9yIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHVwZGF0ZWQgd2l0aCBgdXBkYXRlUHJvcGVydHlCeUlEKClgLlxuICpcbiAqIEB0eXBlIHtvYmplY3R9XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlMgPSB7XG4gIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIHNldCB1c2luZyBgdXBkYXRlSW5uZXJIVE1MQnlJRCgpYC4nLFxuICBzdHlsZTogJ2BzdHlsZWAgbXVzdCBiZSBzZXQgdXNpbmcgYHVwZGF0ZVN0eWxlc0J5SUQoKWAuJ1xufTtcblxuLyoqXG4gKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2VzcyB1cGRhdGVzIHRvIERPTSBub2Rlcy5cbiAqL1xudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0ge1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgRE9NIG5vZGUgd2l0aCBuZXcgcHJvcGVydHkgdmFsdWVzLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG9cbiAgICogdXBkYXRlIERPTSBwcm9wZXJ0aWVzIGluIGBET01Qcm9wZXJ0eWAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgbm9kZSB0byB1cGRhdGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEEgdmFsaWQgcHJvcGVydHkgbmFtZSwgc2VlIGBET01Qcm9wZXJ0eWAuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgTmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1cGRhdGVQcm9wZXJ0eUJ5SUQ6IGZ1bmN0aW9uIChpZCwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpZCk7XG4gICAgISFJTlZBTElEX1BST1BFUlRZX0VSUk9SUy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVQcm9wZXJ0eUJ5SUQoLi4uKTogJXMnLCBJTlZBTElEX1BST1BFUlRZX0VSUk9SU1tuYW1lXSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHByb3BlcnR5XG4gICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5zdGVhZCBvZiBpbmFkdmVydGFudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24gaW5pdGlhbCByZW5kZXIuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgbmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIERPTSBub2RlIHRoYXQgZXhpc3RzIGluIHRoZSBkb2N1bWVudCB3aXRoIG1hcmt1cC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIGNoaWxkIHRvIGJlIHJlcGxhY2VkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIERhbmdlcm91cyBtYXJrdXAgdG8gaW5qZWN0IGluIHBsYWNlIG9mIGNoaWxkLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7RGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwfVxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEOiBmdW5jdGlvbiAoaWQsIG1hcmt1cCkge1xuICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKGlkKTtcbiAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAobm9kZSwgbWFya3VwKTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge2FycmF5PHN0cmluZz59IG1hcmt1cCBMaXN0IG9mIG1hcmt1cCBzdHJpbmdzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogZnVuY3Rpb24gKHVwZGF0ZXMsIG1hcmt1cCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXBkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdXBkYXRlc1tpXS5wYXJlbnROb2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHVwZGF0ZXNbaV0ucGFyZW50SUQpO1xuICAgIH1cbiAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1VwZGF0ZXModXBkYXRlcywgbWFya3VwKTtcbiAgfVxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0RE9NSURPcGVyYXRpb25zLCAnUmVhY3RET01JRE9wZXJhdGlvbnMnLCB7XG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDogJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRCcsXG4gIGRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogJ2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcydcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JFVDAxSlJFOXdaWEpoZEdsdmJuTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkVUMDFKUkU5d1pYSmhkR2x2Ym5OY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdSRTlOUTJocGJHUnlaVzVQY0dWeVlYUnBiMjV6SUQwZ2NtVnhkV2x5WlNnbkxpOUVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk1uS1R0Y2JuWmhjaUJFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMFJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3ljcE8xeHVkbUZ5SUZKbFlXTjBUVzkxYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRXOTFiblFuS1R0Y2JuWmhjaUJTWldGamRGQmxjbVlnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUdWeVppY3BPMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dSWEp5YjNKeklHWnZjaUJ3Y205d1pYSjBhV1Z6SUhSb1lYUWdjMmh2ZFd4a0lHNXZkQ0JpWlNCMWNHUmhkR1ZrSUhkcGRHZ2dZSFZ3WkdGMFpWQnliM0JsY25SNVFubEpSQ2dwWUM1Y2JpQXFYRzRnS2lCQWRIbHdaU0I3YjJKcVpXTjBmVnh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1ZG1GeUlFbE9Wa0ZNU1VSZlVGSlBVRVZTVkZsZlJWSlNUMUpUSUQwZ2UxeHVJQ0JrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlREb2dKMkJrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRHQWdiWFZ6ZENCaVpTQnpaWFFnZFhOcGJtY2dZSFZ3WkdGMFpVbHVibVZ5U0ZSTlRFSjVTVVFvS1dBdUp5eGNiaUFnYzNSNWJHVTZJQ2RnYzNSNWJHVmdJRzExYzNRZ1ltVWdjMlYwSUhWemFXNW5JR0IxY0dSaGRHVlRkSGxzWlhOQ2VVbEVLQ2xnTGlkY2JuMDdYRzVjYmk4cUtseHVJQ29nVDNCbGNtRjBhVzl1Y3lCMWMyVmtJSFJ2SUhCeWIyTmxjM01nZFhCa1lYUmxjeUIwYnlCRVQwMGdibTlrWlhNdVhHNGdLaTljYm5aaGNpQlNaV0ZqZEVSUFRVbEVUM0JsY21GMGFXOXVjeUE5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVlhCa1lYUmxjeUJoSUVSUFRTQnViMlJsSUhkcGRHZ2dibVYzSUhCeWIzQmxjblI1SUhaaGJIVmxjeTRnVkdocGN5QnphRzkxYkdRZ2IyNXNlU0JpWlNCMWMyVmtJSFJ2WEc0Z0lDQXFJSFZ3WkdGMFpTQkVUMDBnY0hKdmNHVnlkR2xsY3lCcGJpQmdSRTlOVUhKdmNHVnlkSGxnTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdTVVFnYjJZZ2RHaGxJRzV2WkdVZ2RHOGdkWEJrWVhSbExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYm1GdFpTQkJJSFpoYkdsa0lIQnliM0JsY25SNUlHNWhiV1VzSUhObFpTQmdSRTlOVUhKdmNHVnlkSGxnTGx4dUlDQWdLaUJBY0dGeVlXMGdleXA5SUhaaGJIVmxJRTVsZHlCMllXeDFaU0J2WmlCMGFHVWdjSEp2Y0dWeWRIa3VYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdkWEJrWVhSbFVISnZjR1Z5ZEhsQ2VVbEVPaUJtZFc1amRHbHZiaUFvYVdRc0lHNWhiV1VzSUhaaGJIVmxLU0I3WEc0Z0lDQWdkbUZ5SUc1dlpHVWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvYVdRcE8xeHVJQ0FnSUNFaFNVNVdRVXhKUkY5UVVrOVFSVkpVV1Y5RlVsSlBVbE11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuZFhCa1lYUmxVSEp2Y0dWeWRIbENlVWxFS0M0dUxpazZJQ1Z6Snl3Z1NVNVdRVXhKUkY5UVVrOVFSVkpVV1Y5RlVsSlBVbE5iYm1GdFpWMHBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUM4dklFbG1JSGRsSjNKbElIVndaR0YwYVc1bklIUnZJRzUxYkd3Z2IzSWdkVzVrWldacGJtVmtMQ0IzWlNCemFHOTFiR1FnY21WdGIzWmxJSFJvWlNCd2NtOXdaWEowZVZ4dUlDQWdJQzh2SUdaeWIyMGdkR2hsSUVSUFRTQnViMlJsSUdsdWMzUmxZV1FnYjJZZ2FXNWhaSFpsY25SaGJuUnNlU0J6WlhSMGFXNW5JSFJ2SUdFZ2MzUnlhVzVuTGlCVWFHbHpYRzRnSUNBZ0x5OGdZbkpwYm1keklIVnpJR2x1SUd4cGJtVWdkMmwwYUNCMGFHVWdjMkZ0WlNCaVpXaGhkbWx2Y2lCM1pTQm9ZWFpsSUc5dUlHbHVhWFJwWVd3Z2NtVnVaR1Z5TGx4dUlDQWdJR2xtSUNoMllXeDFaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWMyVjBWbUZzZFdWR2IzSlFjbTl3WlhKMGVTaHViMlJsTENCdVlXMWxMQ0IyWVd4MVpTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NWtaV3hsZEdWV1lXeDFaVVp2Y2xCeWIzQmxjblI1S0c1dlpHVXNJRzVoYldVcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ3YkdGalpYTWdZU0JFVDAwZ2JtOWtaU0IwYUdGMElHVjRhWE4wY3lCcGJpQjBhR1VnWkc5amRXMWxiblFnZDJsMGFDQnRZWEpyZFhBdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnBaQ0JKUkNCdlppQmphR2xzWkNCMGJ5QmlaU0J5WlhCc1lXTmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMWhjbXQxY0NCRVlXNW5aWEp2ZFhNZ2JXRnlhM1Z3SUhSdklHbHVhbVZqZENCcGJpQndiR0ZqWlNCdlppQmphR2xzWkM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFJRUJ6WldVZ2UwUmhibWRsY2k1a1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjSDFjYmlBZ0lDb3ZYRzRnSUdSaGJtZGxjbTkxYzJ4NVVtVndiR0ZqWlU1dlpHVlhhWFJvVFdGeWEzVndRbmxKUkRvZ1puVnVZM1JwYjI0Z0tHbGtMQ0J0WVhKcmRYQXBJSHRjYmlBZ0lDQjJZWElnYm05a1pTQTlJRkpsWVdOMFRXOTFiblF1WjJWMFRtOWtaU2hwWkNrN1hHNGdJQ0FnUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1ekxtUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3S0c1dlpHVXNJRzFoY210MWNDazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaWE1nWVNCamIyMXdiMjVsYm5RbmN5QmphR2xzWkhKbGJpQmllU0J3Y205alpYTnphVzVuSUdFZ2MyVnlhV1Z6SUc5bUlIVndaR0YwWlhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdZWEp5WVhrOGIySnFaV04wUG4wZ2RYQmtZWFJsY3lCTWFYTjBJRzltSUhWd1pHRjBaU0JqYjI1bWFXZDFjbUYwYVc5dWN5NWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aGNuSmhlVHh6ZEhKcGJtYytmU0J0WVhKcmRYQWdUR2x6ZENCdlppQnRZWEpyZFhBZ2MzUnlhVzVuY3k1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCa1lXNW5aWEp2ZFhOc2VWQnliMk5sYzNORGFHbHNaSEpsYmxWd1pHRjBaWE02SUdaMWJtTjBhVzl1SUNoMWNHUmhkR1Z6TENCdFlYSnJkWEFwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUhWd1pHRjBaWE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lIVndaR0YwWlhOYmFWMHVjR0Z5Wlc1MFRtOWtaU0E5SUZKbFlXTjBUVzkxYm5RdVoyVjBUbTlrWlNoMWNHUmhkR1Z6VzJsZExuQmhjbVZ1ZEVsRUtUdGNiaUFnSUNCOVhHNGdJQ0FnUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1ekxuQnliMk5sYzNOVmNHUmhkR1Z6S0hWd1pHRjBaWE1zSUcxaGNtdDFjQ2s3WEc0Z0lIMWNibjA3WEc1Y2JsSmxZV04wVUdWeVppNXRaV0Z6ZFhKbFRXVjBhRzlrY3loU1pXRmpkRVJQVFVsRVQzQmxjbUYwYVc5dWN5d2dKMUpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6Snl3Z2UxeHVJQ0JrWVc1blpYSnZkWE5zZVZKbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNFSjVTVVE2SUNka1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRUo1U1VRbkxGeHVJQ0JrWVc1blpYSnZkWE5zZVZCeWIyTmxjM05EYUdsc1pISmxibFZ3WkdGMFpYTTZJQ2RrWVc1blpYSnZkWE5zZVZCeWIyTmxjM05EYUdsc1pISmxibFZ3WkdGMFpYTW5YRzU5S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRVbEVUM0JsY21GMGFXOXVjenNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01JbnB1dFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdERPTUlET3BlcmF0aW9ucycpO1xudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgaW5zdGFuY2VzQnlSZWFjdElEID0ge307XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBvcHRpb25hbFxuICogcHJvcHM6IGBjaGVja2VkYCwgYHZhbHVlYCwgYGRlZmF1bHRDaGVja2VkYCwgYW5kIGBkZWZhdWx0VmFsdWVgLlxuICpcbiAqIElmIGBjaGVja2VkYCBvciBgdmFsdWVgIGFyZSBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zXG4gKiB0aGF0IGFmZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBvciB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC5cbiAqXG4gKiBJZiB0aGV5IGFyZSBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgbm90XG4gKiB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBwcm9wcyBtdXN0IGNoYW5nZSBpbiBvcmRlciBmb3JcbiAqIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG4gKlxuICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFsaXplZCBhcyB1bmNoZWNrZWQgKG9yIGBkZWZhdWx0Q2hlY2tlZGApXG4gKiB3aXRoIGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVsdFZhbHVlYCkuXG4gKlxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEyL1dELWh0bWw1LTIwMTIxMDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0bWxcbiAqL1xudmFyIFJlYWN0RE9NSW5wdXQgPSB7XG4gIGdldE5hdGl2ZVByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICB2YXIgY2hlY2tlZCA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZChwcm9wcyk7XG5cbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBkZWZhdWx0Q2hlY2tlZDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2YWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIGNoZWNrZWQ6IGNoZWNrZWQgIT0gbnVsbCA/IGNoZWNrZWQgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsXG4gICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmF0aXZlUHJvcHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgIGluaXRpYWxDaGVja2VkOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCB8fCBmYWxzZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogZGVmYXVsdFZhbHVlICE9IG51bGwgPyBkZWZhdWx0VmFsdWUgOiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuICAgIH07XG4gIH0sXG5cbiAgbW91bnRSZWFkeVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gQ2FuJ3QgYmUgaW4gbW91bnRXcmFwcGVyIG9yIGVsc2Ugc2VydmVyIHJlbmRlcmluZyBsZWFrcy5cbiAgICBpbnN0YW5jZXNCeVJlYWN0SURbaW5zdC5fcm9vdE5vZGVJRF0gPSBpbnN0O1xuICB9LFxuXG4gIHVubW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0SURbaW5zdC5fcm9vdE5vZGVJRF07XG4gIH0sXG5cbiAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIFRPRE86IFNob3VsZG4ndCB0aGlzIGJlIGdldENoZWNrZWQocHJvcHMpP1xuICAgIHZhciBjaGVja2VkID0gcHJvcHMuY2hlY2tlZDtcbiAgICBpZiAoY2hlY2tlZCAhPSBudWxsKSB7XG4gICAgICBSZWFjdERPTUlET3BlcmF0aW9ucy51cGRhdGVQcm9wZXJ0eUJ5SUQoaW5zdC5fcm9vdE5vZGVJRCwgJ2NoZWNrZWQnLCBjaGVja2VkIHx8IGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIFJlYWN0RE9NSURPcGVyYXRpb25zLnVwZGF0ZVByb3BlcnR5QnlJRChpbnN0Ll9yb290Tm9kZUlELCAndmFsdWUnLCAnJyArIHZhbHVlKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblxuICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0ZXMgaGF2ZSBwcm9wYWdhdGVkLCB3aGljaFxuICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBjb250cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTtcblxuICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmIChwcm9wcy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkge1xuICAgIHZhciByb290Tm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICB2YXIgcXVlcnlSb290ID0gcm9vdE5vZGU7XG5cbiAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHtcbiAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9vdC5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9uLW51bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCxcbiAgICAvLyBidXQgdGhhdCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNvIHRyeSB1c2luZ1xuICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3QgY2hpbGRyZW5cbiAgICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMgdGhhdCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZVxuICAgIC8vIHRoZSBpbnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3QgdXNlIHRoZSBnbG9iYWxcbiAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhpbmcuXG4gICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBlPVwicmFkaW9cIl0nKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBvdGhlck5vZGUgPSBncm91cFtpXTtcbiAgICAgIGlmIChvdGhlck5vZGUgPT09IHJvb3ROb2RlIHx8IG90aGVyTm9kZS5mb3JtICE9PSByb290Tm9kZS5mb3JtKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIHJhZGlvIGJ1dHRvbnMgcmVuZGVyZWQgYnkgZGlmZmVyZW50IGNvcGllcyBvZiBSZWFjdFxuICAgICAgLy8gYW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVkIGludG8gdGhlIHNhbWUgZm9ybSAoc2FtZSBhcyAjMTkzOSkuXG4gICAgICAvLyBUaGF0J3MgcHJvYmFibHkgb2theTsgd2UgZG9uJ3Qgc3VwcG9ydCBpdCBqdXN0IGFzIHdlIGRvbid0IHN1cHBvcnRcbiAgICAgIC8vIG1peGluZyBSZWFjdCB3aXRoIG5vbi1SZWFjdC5cbiAgICAgIHZhciBvdGhlcklEID0gUmVhY3RNb3VudC5nZXRJRChvdGhlck5vZGUpO1xuICAgICAgIW90aGVySUQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8gaW5wdXRzIHdpdGggdGhlICcgKyAnc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBvcnRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgb3RoZXJJbnN0YW5jZSA9IGluc3RhbmNlc0J5UmVhY3RJRFtvdGhlcklEXTtcbiAgICAgICFvdGhlckluc3RhbmNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6IFVua25vd24gcmFkaW8gYnV0dG9uIElEICVzLicsIG90aGVySUQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIC8vIElmIHRoaXMgaXMgYSBjb250cm9sbGVkIHJhZGlvIGJ1dHRvbiBncm91cCwgZm9yY2luZyB0aGUgaW5wdXQgdGhhdFxuICAgICAgLy8gd2FzIHByZXZpb3VzbHkgY2hlY2tlZCB0byB1cGRhdGUgd2lsbCBjYXVzZSBpdCB0byBiZSBjb21lIHJlLWNoZWNrZWRcbiAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLlxuICAgICAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIG90aGVySW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlucHV0O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JFVDAxSmJuQjFkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkVUMDFKYm5CMWRGeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSUFRVbEVUM0JsY21GMGFXOXVjeWNwTzF4dWRtRnlJRXhwYm10bFpGWmhiSFZsVlhScGJITWdQU0J5WlhGMWFYSmxLQ2N1TDB4cGJtdGxaRlpoYkhWbFZYUnBiSE1uS1R0Y2JuWmhjaUJTWldGamRFMXZkVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEUxdmRXNTBKeWs3WEc1MllYSWdVbVZoWTNSVmNHUmhkR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaWE1uS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEVsRUlEMGdlMzA3WEc1Y2JtWjFibU4wYVc5dUlHWnZjbU5sVlhCa1lYUmxTV1pOYjNWdWRHVmtLQ2tnZTF4dUlDQnBaaUFvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2tnZTF4dUlDQWdJQzh2SUVSUFRTQmpiMjF3YjI1bGJuUWdhWE1nYzNScGJHd2diVzkxYm5SbFpEc2dkWEJrWVhSbFhHNGdJQ0FnVW1WaFkzUkVUMDFKYm5CMWRDNTFjR1JoZEdWWGNtRndjR1Z5S0hSb2FYTXBPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCaGJpQThhVzV3ZFhRK0lHNWhkR2wyWlNCamIyMXdiMjVsYm5RZ2RHaGhkQ0JoYkd4dmQzTWdjMlYwZEdsdVp5QjBhR1Z6WlNCdmNIUnBiMjVoYkZ4dUlDb2djSEp2Y0hNNklHQmphR1ZqYTJWa1lDd2dZSFpoYkhWbFlDd2dZR1JsWm1GMWJIUkRhR1ZqYTJWa1lDd2dZVzVrSUdCa1pXWmhkV3gwVm1Gc2RXVmdMbHh1SUNwY2JpQXFJRWxtSUdCamFHVmphMlZrWUNCdmNpQmdkbUZzZFdWZ0lHRnlaU0J1YjNRZ2MzVndjR3hwWldRZ0tHOXlJRzUxYkd3dmRXNWtaV1pwYm1Wa0tTd2dkWE5sY2lCaFkzUnBiMjV6WEc0Z0tpQjBhR0YwSUdGbVptVmpkQ0IwYUdVZ1kyaGxZMnRsWkNCemRHRjBaU0J2Y2lCMllXeDFaU0IzYVd4c0lIUnlhV2RuWlhJZ2RYQmtZWFJsY3lCMGJ5QjBhR1VnWld4bGJXVnVkQzVjYmlBcVhHNGdLaUJKWmlCMGFHVjVJR0Z5WlNCemRYQndiR2xsWkNBb1lXNWtJRzV2ZENCdWRXeHNMM1Z1WkdWbWFXNWxaQ2tzSUhSb1pTQnlaVzVrWlhKbFpDQmxiR1Z0Wlc1MElIZHBiR3dnYm05MFhHNGdLaUIwY21sbloyVnlJSFZ3WkdGMFpYTWdkRzhnZEdobElHVnNaVzFsYm5RdUlFbHVjM1JsWVdRc0lIUm9aU0J3Y205d2N5QnRkWE4wSUdOb1lXNW5aU0JwYmlCdmNtUmxjaUJtYjNKY2JpQXFJSFJvWlNCeVpXNWtaWEpsWkNCbGJHVnRaVzUwSUhSdklHSmxJSFZ3WkdGMFpXUXVYRzRnS2x4dUlDb2dWR2hsSUhKbGJtUmxjbVZrSUdWc1pXMWxiblFnZDJsc2JDQmlaU0JwYm1sMGFXRnNhWHBsWkNCaGN5QjFibU5vWldOclpXUWdLRzl5SUdCa1pXWmhkV3gwUTJobFkydGxaR0FwWEc0Z0tpQjNhWFJvSUdGdUlHVnRjSFI1SUhaaGJIVmxJQ2h2Y2lCZ1pHVm1ZWFZzZEZaaGJIVmxZQ2t1WEc0Z0tseHVJQ29nUUhObFpTQm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTh5TURFeUwxZEVMV2gwYld3MUxUSXdNVEl4TURJMUwzUm9aUzFwYm5CMWRDMWxiR1Z0Wlc1MExtaDBiV3hjYmlBcUwxeHVkbUZ5SUZKbFlXTjBSRTlOU1c1d2RYUWdQU0I3WEc0Z0lHZGxkRTVoZEdsMlpWQnliM0J6T2lCbWRXNWpkR2x2YmlBb2FXNXpkQ3dnY0hKdmNITXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnZG1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbWRsZEZaaGJIVmxLSEJ5YjNCektUdGNiaUFnSUNCMllYSWdZMmhsWTJ0bFpDQTlJRXhwYm10bFpGWmhiSFZsVlhScGJITXVaMlYwUTJobFkydGxaQ2h3Y205d2N5azdYRzVjYmlBZ0lDQjJZWElnYm1GMGFYWmxVSEp2Y0hNZ1BTQmhjM05wWjI0b2UzMHNJSEJ5YjNCekxDQjdYRzRnSUNBZ0lDQmtaV1poZFd4MFEyaGxZMnRsWkRvZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUNBZ1pHVm1ZWFZzZEZaaGJIVmxPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0IyWVd4MVpUb2dkbUZzZFdVZ0lUMGdiblZzYkNBL0lIWmhiSFZsSURvZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExtbHVhWFJwWVd4V1lXeDFaU3hjYmlBZ0lDQWdJR05vWldOclpXUTZJR05vWldOclpXUWdJVDBnYm5Wc2JDQS9JR05vWldOclpXUWdPaUJwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1V1YVc1cGRHbGhiRU5vWldOclpXUXNYRzRnSUNBZ0lDQnZia05vWVc1blpUb2dhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbTl1UTJoaGJtZGxYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2JtRjBhWFpsVUhKdmNITTdYRzRnSUgwc1hHNWNiaUFnYlc5MWJuUlhjbUZ3Y0dWeU9pQm1kVzVqZEdsdmJpQW9hVzV6ZEN3Z2NISnZjSE1wSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5NWphR1ZqYTFCeWIzQlVlWEJsY3lnbmFXNXdkWFFuTENCd2NtOXdjeXdnYVc1emRDNWZZM1Z5Y21WdWRFVnNaVzFsYm5RdVgyOTNibVZ5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ1pHVm1ZWFZzZEZaaGJIVmxJRDBnY0hKdmNITXVaR1ZtWVhWc2RGWmhiSFZsTzF4dUlDQWdJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaU0E5SUh0Y2JpQWdJQ0FnSUdsdWFYUnBZV3hEYUdWamEyVmtPaUJ3Y205d2N5NWtaV1poZFd4MFEyaGxZMnRsWkNCOGZDQm1ZV3h6WlN4Y2JpQWdJQ0FnSUdsdWFYUnBZV3hXWVd4MVpUb2daR1ZtWVhWc2RGWmhiSFZsSUNFOUlHNTFiR3dnUHlCa1pXWmhkV3gwVm1Gc2RXVWdPaUJ1ZFd4c0xGeHVJQ0FnSUNBZ2IyNURhR0Z1WjJVNklGOW9ZVzVrYkdWRGFHRnVaMlV1WW1sdVpDaHBibk4wS1Z4dUlDQWdJSDA3WEc0Z0lIMHNYRzVjYmlBZ2JXOTFiblJTWldGa2VWZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wS1NCN1hHNGdJQ0FnTHk4Z1EyRnVKM1FnWW1VZ2FXNGdiVzkxYm5SWGNtRndjR1Z5SUc5eUlHVnNjMlVnYzJWeWRtVnlJSEpsYm1SbGNtbHVaeUJzWldGcmN5NWNiaUFnSUNCcGJuTjBZVzVqWlhOQ2VWSmxZV04wU1VSYmFXNXpkQzVmY205dmRFNXZaR1ZKUkYwZ1BTQnBibk4wTzF4dUlDQjlMRnh1WEc0Z0lIVnViVzkxYm5SWGNtRndjR1Z5T2lCbWRXNWpkR2x2YmlBb2FXNXpkQ2tnZTF4dUlDQWdJR1JsYkdWMFpTQnBibk4wWVc1alpYTkNlVkpsWVdOMFNVUmJhVzV6ZEM1ZmNtOXZkRTV2WkdWSlJGMDdYRzRnSUgwc1hHNWNiaUFnZFhCa1lYUmxWM0poY0hCbGNqb2dablZ1WTNScGIyNGdLR2x1YzNRcElIdGNiaUFnSUNCMllYSWdjSEp2Y0hNZ1BTQnBibk4wTGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNibHh1SUNBZ0lDOHZJRlJQUkU4NklGTm9iM1ZzWkc0bmRDQjBhR2x6SUdKbElHZGxkRU5vWldOclpXUW9jSEp2Y0hNcFAxeHVJQ0FnSUhaaGNpQmphR1ZqYTJWa0lEMGdjSEp2Y0hNdVkyaGxZMnRsWkR0Y2JpQWdJQ0JwWmlBb1kyaGxZMnRsWkNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCU1pXRmpkRVJQVFVsRVQzQmxjbUYwYVc5dWN5NTFjR1JoZEdWUWNtOXdaWEowZVVKNVNVUW9hVzV6ZEM1ZmNtOXZkRTV2WkdWSlJDd2dKMk5vWldOclpXUW5MQ0JqYUdWamEyVmtJSHg4SUdaaGJITmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnZG1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbWRsZEZaaGJIVmxLSEJ5YjNCektUdGNiaUFnSUNCcFppQW9kbUZzZFdVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0x5OGdRMkZ6ZENCZ2RtRnNkV1ZnSUhSdklHRWdjM1J5YVc1bklIUnZJR1Z1YzNWeVpTQjBhR1VnZG1Gc2RXVWdhWE1nYzJWMElHTnZjbkpsWTNSc2VTNGdWMmhwYkdWY2JpQWdJQ0FnSUM4dklHSnliM2R6WlhKeklIUjVjR2xqWVd4c2VTQmtieUIwYUdseklHRnpJRzVsWTJWemMyRnllU3dnYW5Oa2IyMGdaRzlsYzI0bmRDNWNiaUFnSUNBZ0lGSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpMblZ3WkdGMFpWQnliM0JsY25SNVFubEpSQ2hwYm5OMExsOXliMjkwVG05a1pVbEVMQ0FuZG1Gc2RXVW5MQ0FuSnlBcklIWmhiSFZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JtWjFibU4wYVc5dUlGOW9ZVzVrYkdWRGFHRnVaMlVvWlhabGJuUXBJSHRjYmlBZ2RtRnlJSEJ5YjNCeklEMGdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1Y0hKdmNITTdYRzVjYmlBZ2RtRnlJSEpsZEhWeWJsWmhiSFZsSUQwZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3k1bGVHVmpkWFJsVDI1RGFHRnVaMlVvY0hKdmNITXNJR1YyWlc1MEtUdGNibHh1SUNBdkx5QklaWEpsSUhkbElIVnpaU0JoYzJGd0lIUnZJSGRoYVhRZ2RXNTBhV3dnWVd4c0lIVndaR0YwWlhNZ2FHRjJaU0J3Y205d1lXZGhkR1ZrTENCM2FHbGphRnh1SUNBdkx5QnBjeUJwYlhCdmNuUmhiblFnZDJobGJpQjFjMmx1WnlCamIyNTBjbTlzYkdWa0lHTnZiWEJ2Ym1WdWRITWdkMmwwYUdsdUlHeGhlV1Z5Y3pwY2JpQWdMeThnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJaaFkyVmliMjlyTDNKbFlXTjBMMmx6YzNWbGN5OHhOams0WEc0Z0lGSmxZV04wVlhCa1lYUmxjeTVoYzJGd0tHWnZjbU5sVlhCa1lYUmxTV1pOYjNWdWRHVmtMQ0IwYUdsektUdGNibHh1SUNCMllYSWdibUZ0WlNBOUlIQnliM0J6TG01aGJXVTdYRzRnSUdsbUlDaHdjbTl3Y3k1MGVYQmxJRDA5UFNBbmNtRmthVzhuSUNZbUlHNWhiV1VnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJSFpoY2lCeWIyOTBUbTlrWlNBOUlGSmxZV04wVFc5MWJuUXVaMlYwVG05a1pTaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUtUdGNiaUFnSUNCMllYSWdjWFZsY25sU2IyOTBJRDBnY205dmRFNXZaR1U3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9jWFZsY25sU2IyOTBMbkJoY21WdWRFNXZaR1VwSUh0Y2JpQWdJQ0FnSUhGMVpYSjVVbTl2ZENBOUlIRjFaWEo1VW05dmRDNXdZWEpsYm5ST2IyUmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRWxtSUdCeWIyOTBUbTlrWlM1bWIzSnRZQ0IzWVhNZ2JtOXVMVzUxYkd3c0lIUm9aVzRnZDJVZ1kyOTFiR1FnZEhKNUlHQm1iM0p0TG1Wc1pXMWxiblJ6WUN4Y2JpQWdJQ0F2THlCaWRYUWdkR2hoZENCemIyMWxkR2x0WlhNZ1ltVm9ZWFpsY3lCemRISmhibWRsYkhrZ2FXNGdTVVU0TGlCWFpTQmpiM1ZzWkNCaGJITnZJSFJ5ZVNCMWMybHVaMXh1SUNBZ0lDOHZJR0JtYjNKdExtZGxkRVZzWlcxbGJuUnpRbmxPWVcxbFlDd2dZblYwSUhSb1lYUWdkMmxzYkNCdmJteDVJSEpsZEhWeWJpQmthWEpsWTNRZ1kyaHBiR1J5Wlc1Y2JpQWdJQ0F2THlCaGJtUWdkMjl1SjNRZ2FXNWpiSFZrWlNCcGJuQjFkSE1nZEdoaGRDQjFjMlVnZEdobElFaFVUVXcxSUdCbWIzSnRQV0FnWVhSMGNtbGlkWFJsTGlCVGFXNWpaVnh1SUNBZ0lDOHZJSFJvWlNCcGJuQjFkQ0J0YVdkb2RDQnViM1FnWlhabGJpQmlaU0JwYmlCaElHWnZjbTBzSUd4bGRDZHpJR3AxYzNRZ2RYTmxJSFJvWlNCbmJHOWlZV3hjYmlBZ0lDQXZMeUJnY1hWbGNubFRaV3hsWTNSdmNrRnNiR0FnZEc4Z1pXNXpkWEpsSUhkbElHUnZiaWQwSUcxcGMzTWdZVzU1ZEdocGJtY3VYRzRnSUNBZ2RtRnlJR2R5YjNWd0lEMGdjWFZsY25sU2IyOTBMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29KMmx1Y0hWMFcyNWhiV1U5SnlBcklFcFRUMDR1YzNSeWFXNW5hV1o1S0NjbklDc2dibUZ0WlNrZ0t5QW5YVnQwZVhCbFBWd2ljbUZrYVc5Y0lsMG5LVHRjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnWjNKdmRYQXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQnZkR2hsY2s1dlpHVWdQU0JuY205MWNGdHBYVHRjYmlBZ0lDQWdJR2xtSUNodmRHaGxjazV2WkdVZ1BUMDlJSEp2YjNST2IyUmxJSHg4SUc5MGFHVnlUbTlrWlM1bWIzSnRJQ0U5UFNCeWIyOTBUbTlrWlM1bWIzSnRLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnTHk4Z1ZHaHBjeUIzYVd4c0lIUm9jbTkzSUdsbUlISmhaR2x2SUdKMWRIUnZibk1nY21WdVpHVnlaV1FnWW5rZ1pHbG1abVZ5Wlc1MElHTnZjR2xsY3lCdlppQlNaV0ZqZEZ4dUlDQWdJQ0FnTHk4Z1lXNWtJSFJvWlNCellXMWxJRzVoYldVZ1lYSmxJSEpsYm1SbGNtVmtJR2x1ZEc4Z2RHaGxJSE5oYldVZ1ptOXliU0FvYzJGdFpTQmhjeUFqTVRrek9Ta3VYRzRnSUNBZ0lDQXZMeUJVYUdGMEozTWdjSEp2WW1GaWJIa2diMnRoZVRzZ2QyVWdaRzl1SjNRZ2MzVndjRzl5ZENCcGRDQnFkWE4wSUdGeklIZGxJR1J2YmlkMElITjFjSEJ2Y25SY2JpQWdJQ0FnSUM4dklHMXBlR2x1WnlCU1pXRmpkQ0IzYVhSb0lHNXZiaTFTWldGamRDNWNiaUFnSUNBZ0lIWmhjaUJ2ZEdobGNrbEVJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUkpSQ2h2ZEdobGNrNXZaR1VwTzF4dUlDQWdJQ0FnSVc5MGFHVnlTVVFnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5VbVZoWTNSRVQwMUpibkIxZERvZ1RXbDRhVzVuSUZKbFlXTjBJR0Z1WkNCdWIyNHRVbVZoWTNRZ2NtRmthVzhnYVc1d2RYUnpJSGRwZEdnZ2RHaGxJQ2NnS3lBbmMyRnRaU0JnYm1GdFpXQWdhWE1nYm05MElITjFjSEJ2Y25SbFpDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCMllYSWdiM1JvWlhKSmJuTjBZVzVqWlNBOUlHbHVjM1JoYm1ObGMwSjVVbVZoWTNSSlJGdHZkR2hsY2tsRVhUdGNiaUFnSUNBZ0lDRnZkR2hsY2tsdWMzUmhibU5sSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFJFOU5TVzV3ZFhRNklGVnVhMjV2ZDI0Z2NtRmthVzhnWW5WMGRHOXVJRWxFSUNWekxpY3NJRzkwYUdWeVNVUXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUM4dklFbG1JSFJvYVhNZ2FYTWdZU0JqYjI1MGNtOXNiR1ZrSUhKaFpHbHZJR0oxZEhSdmJpQm5jbTkxY0N3Z1ptOXlZMmx1WnlCMGFHVWdhVzV3ZFhRZ2RHaGhkRnh1SUNBZ0lDQWdMeThnZDJGeklIQnlaWFpwYjNWemJIa2dZMmhsWTJ0bFpDQjBieUIxY0dSaGRHVWdkMmxzYkNCallYVnpaU0JwZENCMGJ5QmlaU0JqYjIxbElISmxMV05vWldOclpXUmNiaUFnSUNBZ0lDOHZJR0Z6SUdGd2NISnZjSEpwWVhSbExseHVJQ0FnSUNBZ1VtVmhZM1JWY0dSaGRHVnpMbUZ6WVhBb1ptOXlZMlZWY0dSaGRHVkpaazF2ZFc1MFpXUXNJRzkwYUdWeVNXNXpkR0Z1WTJVcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCeVpYUjFjbTVXWVd4MVpUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRVJQVFVsdWNIVjBPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01PcHRpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdENoaWxkcmVuID0gcmVxdWlyZSgnLi9SZWFjdENoaWxkcmVuJyk7XG52YXIgUmVhY3RET01TZWxlY3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0Jyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgdmFsdWVDb250ZXh0S2V5ID0gUmVhY3RET01TZWxlY3QudmFsdWVDb250ZXh0S2V5O1xuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gbmF0aXZlIGNvbXBvbmVudCB0aGF0IHdhcm5zIHdoZW4gYHNlbGVjdGVkYCBpcyBzZXQuXG4gKi9cbnZhciBSZWFjdERPTU9wdGlvbiA9IHtcbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgYHNlbGVjdGVkYCBpbiA8b3B0aW9uPi5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVsbCwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIExvb2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0ZWQnIHZpYSBjb250ZXh0XG4gICAgdmFyIHNlbGVjdFZhbHVlID0gY29udGV4dFt2YWx1ZUNvbnRleHRLZXldO1xuXG4gICAgLy8gSWYgY29udGV4dCBrZXkgaXMgbnVsbCAoZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFmdGVyIGluaXRpYWwgbW91bnQpXG4gICAgLy8gb3IgbWlzc2luZyAoZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRcbiAgICB2YXIgc2VsZWN0ZWQgPSBudWxsO1xuICAgIGlmIChzZWxlY3RWYWx1ZSAhPSBudWxsKSB7XG4gICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0VmFsdWUpKSB7XG4gICAgICAgIC8vIG11bHRpcGxlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoJycgKyBzZWxlY3RWYWx1ZVtpXSA9PT0gJycgKyBwcm9wcy52YWx1ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09ICcnICsgcHJvcHMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQgfTtcbiAgfSxcblxuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIG5hdGl2ZVByb3BzID0gYXNzaWduKHsgc2VsZWN0ZWQ6IHVuZGVmaW5lZCwgY2hpbGRyZW46IHVuZGVmaW5lZCB9LCBwcm9wcyk7XG5cbiAgICAvLyBSZWFkIHN0YXRlIG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRlcyB2YWx1ZVxuICAgIC8vIG1hbnVhbGx5OyB3ZSBuZWVkIHRoZSBpbml0aWFsIHN0YXRlIG9ubHkgZm9yIHNlcnZlciByZW5kZXJpbmdcbiAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkICE9IG51bGwpIHtcbiAgICAgIG5hdGl2ZVByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0gJyc7XG5cbiAgICAvLyBGbGF0dGVuIGNoaWxkcmVuIGFuZCB3YXJuIGlmIHRoZXkgYXJlbid0IHN0cmluZ3Mgb3IgbnVtYmVycztcbiAgICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxuICAgIFJlYWN0Q2hpbGRyZW4uZm9yRWFjaChwcm9wcy5jaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ09ubHkgc3RyaW5ncyBhbmQgbnVtYmVycyBhcmUgc3VwcG9ydGVkIGFzIDxvcHRpb24+IGNoaWxkcmVuLicpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbmF0aXZlUHJvcHMuY2hpbGRyZW4gPSBjb250ZW50O1xuICAgIHJldHVybiBuYXRpdmVQcm9wcztcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NT3B0aW9uO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JFVDAxUGNIUnBiMjR1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFUlBUVTl3ZEdsdmJseHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFEyaHBiR1J5Wlc0Z1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyaHBiR1J5Wlc0bktUdGNiblpoY2lCU1pXRmpkRVJQVFZObGJHVmpkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFVDAxVFpXeGxZM1FuS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUIyWVd4MVpVTnZiblJsZUhSTFpYa2dQU0JTWldGamRFUlBUVk5sYkdWamRDNTJZV3gxWlVOdmJuUmxlSFJMWlhrN1hHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJoYmlBOGIzQjBhVzl1UGlCdVlYUnBkbVVnWTI5dGNHOXVaVzUwSUhSb1lYUWdkMkZ5Ym5NZ2QyaGxiaUJnYzJWc1pXTjBaV1JnSUdseklITmxkQzVjYmlBcUwxeHVkbUZ5SUZKbFlXTjBSRTlOVDNCMGFXOXVJRDBnZTF4dUlDQnRiM1Z1ZEZkeVlYQndaWEk2SUdaMWJtTjBhVzl1SUNocGJuTjBMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDOHZJRlJQUkU4Z0tIbDFibWR6ZEdWeWN5azZJRkpsYlc5MlpTQnpkWEJ3YjNKMElHWnZjaUJnYzJWc1pXTjBaV1JnSUdsdUlEeHZjSFJwYjI0K0xseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1Wnlod2NtOXdjeTV6Wld4bFkzUmxaQ0E5UFNCdWRXeHNMQ0FuVlhObElIUm9aU0JnWkdWbVlYVnNkRlpoYkhWbFlDQnZjaUJnZG1Gc2RXVmdJSEJ5YjNCeklHOXVJRHh6Wld4bFkzUStJR2x1YzNSbFlXUWdiMllnSnlBcklDZHpaWFIwYVc1bklHQnpaV3hsWTNSbFpHQWdiMjRnUEc5d2RHbHZiajR1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdURzl2YXlCMWNDQjNhR1YwYUdWeUlIUm9hWE1nYjNCMGFXOXVJR2x6SUNkelpXeGxZM1JsWkNjZ2RtbGhJR052Ym5SbGVIUmNiaUFnSUNCMllYSWdjMlZzWldOMFZtRnNkV1VnUFNCamIyNTBaWGgwVzNaaGJIVmxRMjl1ZEdWNGRFdGxlVjA3WEc1Y2JpQWdJQ0F2THlCSlppQmpiMjUwWlhoMElHdGxlU0JwY3lCdWRXeHNJQ2hsTG1jdUxDQnVieUJ6Y0dWamFXWnBaV1FnZG1Gc2RXVWdiM0lnWVdaMFpYSWdhVzVwZEdsaGJDQnRiM1Z1ZENsY2JpQWdJQ0F2THlCdmNpQnRhWE56YVc1bklDaGxMbWN1TENCbWIzSWdQR1JoZEdGc2FYTjBQaWtzSUhkbElHUnZiaWQwSUdOb1lXNW5aU0J3Y205d2N5NXpaV3hsWTNSbFpGeHVJQ0FnSUhaaGNpQnpaV3hsWTNSbFpDQTlJRzUxYkd3N1hHNGdJQ0FnYVdZZ0tITmxiR1ZqZEZaaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSE5sYkdWamRHVmtJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaHpaV3hsWTNSV1lXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdiWFZzZEdsd2JHVmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J6Wld4bFkzUldZV3gxWlM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ25KeUFySUhObGJHVmpkRlpoYkhWbFcybGRJRDA5UFNBbkp5QXJJSEJ5YjNCekxuWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Wld4bFkzUmxaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lITmxiR1ZqZEdWa0lEMGdKeWNnS3lCelpXeGxZM1JXWVd4MVpTQTlQVDBnSnljZ0t5QndjbTl3Y3k1MllXeDFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVWdQU0I3SUhObGJHVmpkR1ZrT2lCelpXeGxZM1JsWkNCOU8xeHVJQ0I5TEZ4dVhHNGdJR2RsZEU1aGRHbDJaVkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9hVzV6ZEN3Z2NISnZjSE1zSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2JtRjBhWFpsVUhKdmNITWdQU0JoYzNOcFoyNG9leUJ6Wld4bFkzUmxaRG9nZFc1a1pXWnBibVZrTENCamFHbHNaSEpsYmpvZ2RXNWtaV1pwYm1Wa0lIMHNJSEJ5YjNCektUdGNibHh1SUNBZ0lDOHZJRkpsWVdRZ2MzUmhkR1VnYjI1c2VTQm1jbTl0SUdsdWFYUnBZV3dnYlc5MWJuUWdZbVZqWVhWelpTQThjMlZzWldOMFBpQjFjR1JoZEdWeklIWmhiSFZsWEc0Z0lDQWdMeThnYldGdWRXRnNiSGs3SUhkbElHNWxaV1FnZEdobElHbHVhWFJwWVd3Z2MzUmhkR1VnYjI1c2VTQm1iM0lnYzJWeWRtVnlJSEpsYm1SbGNtbHVaMXh1SUNBZ0lHbG1JQ2hwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1V1YzJWc1pXTjBaV1FnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYm1GMGFYWmxVSEp2Y0hNdWMyVnNaV04wWldRZ1BTQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXVjMlZzWldOMFpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJR052Ym5SbGJuUWdQU0FuSnp0Y2JseHVJQ0FnSUM4dklFWnNZWFIwWlc0Z1kyaHBiR1J5Wlc0Z1lXNWtJSGRoY200Z2FXWWdkR2hsZVNCaGNtVnVKM1FnYzNSeWFXNW5jeUJ2Y2lCdWRXMWlaWEp6TzF4dUlDQWdJQzh2SUdsdWRtRnNhV1FnZEhsd1pYTWdZWEpsSUdsbmJtOXlaV1F1WEc0Z0lDQWdVbVZoWTNSRGFHbHNaSEpsYmk1bWIzSkZZV05vS0hCeWIzQnpMbU5vYVd4a2NtVnVMQ0JtZFc1amRHbHZiaUFvWTJocGJHUXBJSHRjYmlBZ0lDQWdJR2xtSUNoamFHbHNaQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnWTJocGJHUWdQVDA5SUNkemRISnBibWNuSUh4OElIUjVjR1Z2WmlCamFHbHNaQ0E5UFQwZ0oyNTFiV0psY2ljcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdWdWRDQXJQU0JqYUdsc1pEdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5UMjVzZVNCemRISnBibWR6SUdGdVpDQnVkVzFpWlhKeklHRnlaU0J6ZFhCd2IzSjBaV1FnWVhNZ1BHOXdkR2x2Ymo0Z1kyaHBiR1J5Wlc0dUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0J1WVhScGRtVlFjbTl3Y3k1amFHbHNaSEpsYmlBOUlHTnZiblJsYm5RN1hHNGdJQ0FnY21WMGRYSnVJRzVoZEdsMlpWQnliM0J6TzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRVQwMVBjSFJwYjI0N0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NU2VsZWN0XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHZhbHVlQ29udGV4dEtleSA9ICdfX1JlYWN0RE9NU2VsZWN0X3ZhbHVlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblxuZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEICYmIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHVwZGF0ZU9wdGlvbnModGhpcywgcHJvcHMsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbnZhciB2YWx1ZVByb3BOYW1lcyA9IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVlJ107XG5cbi8qKlxuICogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcykge1xuICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBvd25lcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldO1xuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmICcgKyAnYG11bHRpcGxlYCBpcyB0cnVlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyICcgKyAndmFsdWUgaWYgYG11bHRpcGxlYCBpcyBmYWxzZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBpbnN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG11bHRpcGxlXG4gKiBAcGFyYW0geyp9IHByb3BWYWx1ZSBBIHN0cmluZ2FibGUgKHdpdGggYG11bHRpcGxlYCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVsdGlwbGUsIHByb3BWYWx1ZSkge1xuICB2YXIgc2VsZWN0ZWRWYWx1ZSwgaTtcbiAgdmFyIG9wdGlvbnMgPSBSZWFjdE1vdW50LmdldE5vZGUoaW5zdC5fcm9vdE5vZGVJRCkub3B0aW9ucztcblxuICBpZiAobXVsdGlwbGUpIHtcbiAgICBzZWxlY3RlZFZhbHVlID0ge307XG4gICAgZm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgc2VsZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTtcbiAgICAgIGlmIChvcHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIERvIG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNuJ3QgY29uc2lzdGVudCBhY3Jvc3MgYWxsXG4gICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy5cbiAgICBzZWxlY3RlZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7XG4gICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDxzZWxlY3Q+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCBhbGxvd3Mgb3B0aW9uYWxseSBzZXR0aW5nIHRoZVxuICogcHJvcHMgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFsc2UsIHRoZSBwcm9wIG11c3QgYmUgYVxuICogc3RyaW5nYWJsZS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGUgcHJvcCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ2FibGVzLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGNoYW5nZSB0aGVcbiAqIHNlbGVjdGVkIG9wdGlvbiB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgcmVuZGVyZWQgb3B0aW9ucy5cbiAqXG4gKiBJZiBpdCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBvcHRpb25zIHdpbGwgbm90XG4gKiB1cGRhdGUgaW4gcmVzcG9uc2UgdG8gdXNlciBhY3Rpb25zLiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluXG4gKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIG9wdGlvbnMgdG8gdXBkYXRlLlxuICpcbiAqIElmIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCBhbnkgb3B0aW9ucyB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZXMgd2lsbCBiZVxuICogc2VsZWN0ZWQuXG4gKi9cbnZhciBSZWFjdERPTVNlbGVjdCA9IHtcbiAgdmFsdWVDb250ZXh0S2V5OiB2YWx1ZUNvbnRleHRLZXksXG5cbiAgZ2V0TmF0aXZlUHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgIHJldHVybiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuICAgIH0pO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAgICAgIHdhc011bHRpcGxlOiBCb29sZWFuKHByb3BzLm11bHRpcGxlKVxuICAgIH07XG4gIH0sXG5cbiAgcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgLy8gUGFzcyBkb3duIGluaXRpYWwgdmFsdWUgc28gaW5pdGlhbCBnZW5lcmF0ZWQgbWFya3VwIGhhcyBjb3JyZWN0XG4gICAgLy8gYHNlbGVjdGVkYCBhdHRyaWJ1dGVzXG4gICAgdmFyIGNoaWxkQ29udGV4dCA9IGFzc2lnbih7fSwgY29udGV4dCk7XG4gICAgY2hpbGRDb250ZXh0W3ZhbHVlQ29udGV4dEtleV0gPSBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO1xuICAgIHJldHVybiBjaGlsZENvbnRleHQ7XG4gIH0sXG5cbiAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0IHBhc3NcbiAgICAvLyB0aGUgY29udGV4dCB2YWx1ZSBkb3duXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA9IHVuZGVmaW5lZDtcblxuICAgIHZhciB3YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSBCb29sZWFuKHByb3BzLm11bHRpcGxlKTtcblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAod2FzTXVsdGlwbGUgIT09IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpKSB7XG4gICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgcmVhcHBseSBgZGVmYXVsdFZhbHVlYCBpZiBgbXVsdGlwbGVgIGlzIHRvZ2dsZWQuXG4gICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJldmVydCB0aGUgc2VsZWN0IGJhY2sgdG8gaXRzIGRlZmF1bHQgdW5zZWxlY3RlZCBzdGF0ZS5cbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMubXVsdGlwbGUgPyBbXSA6ICcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSB0cnVlO1xuICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMVRaV3hsWTNRdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFUlBUVk5sYkdWamRGeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRXhwYm10bFpGWmhiSFZsVlhScGJITWdQU0J5WlhGMWFYSmxLQ2N1TDB4cGJtdGxaRlpoYkhWbFZYUnBiSE1uS1R0Y2JuWmhjaUJTWldGamRFMXZkVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEUxdmRXNTBKeWs3WEc1MllYSWdVbVZoWTNSVmNHUmhkR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaWE1uS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUIyWVd4MVpVTnZiblJsZUhSTFpYa2dQU0FuWDE5U1pXRmpkRVJQVFZObGJHVmpkRjkyWVd4MVpTUW5JQ3NnVFdGMGFDNXlZVzVrYjIwb0tTNTBiMU4wY21sdVp5Z3pOaWt1YzJ4cFkyVW9NaWs3WEc1Y2JtWjFibU4wYVc5dUlIVndaR0YwWlU5d2RHbHZibk5KWmxCbGJtUnBibWRWY0dSaGRHVkJibVJOYjNWdWRHVmtLQ2tnZTF4dUlDQnBaaUFvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0FtSmlCMGFHbHpMbDkzY21Gd2NHVnlVM1JoZEdVdWNHVnVaR2x1WjFWd1pHRjBaU2tnZTF4dUlDQWdJSFJvYVhNdVgzZHlZWEJ3WlhKVGRHRjBaUzV3Wlc1a2FXNW5WWEJrWVhSbElEMGdabUZzYzJVN1hHNWNiaUFnSUNCMllYSWdjSEp2Y0hNZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNCMllYSWdkbUZzZFdVZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtZGxkRlpoYkhWbEtIQnliM0J6S1R0Y2JseHVJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCMWNHUmhkR1ZQY0hScGIyNXpLSFJvYVhNc0lIQnliM0J6TENCMllXeDFaU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNodmQyNWxjaWtnZTF4dUlDQnBaaUFvYjNkdVpYSXBJSHRjYmlBZ0lDQjJZWElnYm1GdFpTQTlJRzkzYm1WeUxtZGxkRTVoYldVb0tUdGNiaUFnSUNCcFppQW9ibUZ0WlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjZ1EyaGxZMnNnZEdobElISmxibVJsY2lCdFpYUm9iMlFnYjJZZ1lDY2dLeUJ1WVcxbElDc2dKMkF1Snp0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJQ2NuTzF4dWZWeHVYRzUyWVhJZ2RtRnNkV1ZRY205d1RtRnRaWE1nUFNCYkozWmhiSFZsSnl3Z0oyUmxabUYxYkhSV1lXeDFaU2RkTzF4dVhHNHZLaXBjYmlBcUlGWmhiR2xrWVhScGIyNGdablZ1WTNScGIyNGdabTl5SUdCMllXeDFaV0FnWVc1a0lHQmtaV1poZFd4MFZtRnNkV1ZnTGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1kyaGxZMnRUWld4bFkzUlFjbTl3Vkhsd1pYTW9hVzV6ZEN3Z2NISnZjSE1wSUh0Y2JpQWdkbUZ5SUc5M2JtVnlJRDBnYVc1emRDNWZZM1Z5Y21WdWRFVnNaVzFsYm5RdVgyOTNibVZ5TzF4dUlDQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtTm9aV05yVUhKdmNGUjVjR1Z6S0NkelpXeGxZM1FuTENCd2NtOXdjeXdnYjNkdVpYSXBPMXh1WEc0Z0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dkbUZzZFdWUWNtOXdUbUZ0WlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQjJZWElnY0hKdmNFNWhiV1VnUFNCMllXeDFaVkJ5YjNCT1lXMWxjMXRwWFR0Y2JpQWdJQ0JwWmlBb2NISnZjSE5iY0hKdmNFNWhiV1ZkSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvY0hKdmNITXViWFZzZEdsd2JHVXBJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0VGeWNtRjVMbWx6UVhKeVlYa29jSEp2Y0hOYmNISnZjRTVoYldWZEtTd2dKMVJvWlNCZ0pYTmdJSEJ5YjNBZ2MzVndjR3hwWldRZ2RHOGdQSE5sYkdWamRENGdiWFZ6ZENCaVpTQmhiaUJoY25KaGVTQnBaaUFuSUNzZ0oyQnRkV3gwYVhCc1pXQWdhWE1nZEhKMVpTNGxjeWNzSUhCeWIzQk9ZVzFsTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb2IzZHVaWElwS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lVRnljbUY1TG1selFYSnlZWGtvY0hKdmNITmJjSEp2Y0U1aGJXVmRLU3dnSjFSb1pTQmdKWE5nSUhCeWIzQWdjM1Z3Y0d4cFpXUWdkRzhnUEhObGJHVmpkRDRnYlhWemRDQmlaU0JoSUhOallXeGhjaUFuSUNzZ0ozWmhiSFZsSUdsbUlHQnRkV3gwYVhCc1pXQWdhWE1nWm1Gc2MyVXVKWE1uTENCd2NtOXdUbUZ0WlN3Z1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtHOTNibVZ5S1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRIMGdhVzV6ZEZ4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQnRkV3gwYVhCc1pWeHVJQ29nUUhCaGNtRnRJSHNxZlNCd2NtOXdWbUZzZFdVZ1FTQnpkSEpwYm1kaFlteGxJQ2gzYVhSb0lHQnRkV3gwYVhCc1pXQXNJR0VnYkdsemRDQnZaaUJ6ZEhKcGJtZGhZbXhsY3lrdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQjFjR1JoZEdWUGNIUnBiMjV6S0dsdWMzUXNJRzExYkhScGNHeGxMQ0J3Y205d1ZtRnNkV1VwSUh0Y2JpQWdkbUZ5SUhObGJHVmpkR1ZrVm1Gc2RXVXNJR2s3WEc0Z0lIWmhjaUJ2Y0hScGIyNXpJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0dsdWMzUXVYM0p2YjNST2IyUmxTVVFwTG05d2RHbHZibk03WEc1Y2JpQWdhV1lnS0cxMWJIUnBjR3hsS1NCN1hHNGdJQ0FnYzJWc1pXTjBaV1JXWVd4MVpTQTlJSHQ5TzF4dUlDQWdJR1p2Y2lBb2FTQTlJREE3SUdrZ1BDQndjbTl3Vm1Gc2RXVXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhObGJHVmpkR1ZrVm1Gc2RXVmJKeWNnS3lCd2NtOXdWbUZzZFdWYmFWMWRJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNGdJQ0FnWm05eUlDaHBJRDBnTURzZ2FTQThJRzl3ZEdsdmJuTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQnpaV3hsWTNSbFpDQTlJSE5sYkdWamRHVmtWbUZzZFdVdWFHRnpUM2R1VUhKdmNHVnlkSGtvYjNCMGFXOXVjMXRwWFM1MllXeDFaU2s3WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1YzF0cFhTNXpaV3hsWTNSbFpDQWhQVDBnYzJWc1pXTjBaV1FwSUh0Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1YzF0cFhTNXpaV3hsWTNSbFpDQTlJSE5sYkdWamRHVmtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQXZMeUJFYnlCdWIzUWdjMlYwSUdCelpXeGxZM1F1ZG1Gc2RXVmdJR0Z6SUdWNFlXTjBJR0psYUdGMmFXOXlJR2x6YmlkMElHTnZibk5wYzNSbGJuUWdZV055YjNOeklHRnNiRnh1SUNBZ0lDOHZJR0p5YjNkelpYSnpJR1p2Y2lCaGJHd2dZMkZ6WlhNdVhHNGdJQ0FnYzJWc1pXTjBaV1JXWVd4MVpTQTlJQ2NuSUNzZ2NISnZjRlpoYkhWbE8xeHVJQ0FnSUdadmNpQW9hU0E5SURBN0lHa2dQQ0J2Y0hScGIyNXpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9iM0IwYVc5dWMxdHBYUzUyWVd4MVpTQTlQVDBnYzJWc1pXTjBaV1JXWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpXMmxkTG5ObGJHVmpkR1ZrSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lHOXdkR2x2Ym5OYk1GMHVjMlZzWldOMFpXUWdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdZU0E4YzJWc1pXTjBQaUJ1WVhScGRtVWdZMjl0Y0c5dVpXNTBJSFJvWVhRZ1lXeHNiM2R6SUc5d2RHbHZibUZzYkhrZ2MyVjBkR2x1WnlCMGFHVmNiaUFxSUhCeWIzQnpJR0IyWVd4MVpXQWdZVzVrSUdCa1pXWmhkV3gwVm1Gc2RXVmdMaUJKWmlCZ2JYVnNkR2x3YkdWZ0lHbHpJR1poYkhObExDQjBhR1VnY0hKdmNDQnRkWE4wSUdKbElHRmNiaUFxSUhOMGNtbHVaMkZpYkdVdUlFbG1JR0J0ZFd4MGFYQnNaV0FnYVhNZ2RISjFaU3dnZEdobElIQnliM0FnYlhWemRDQmlaU0JoYmlCaGNuSmhlU0J2WmlCemRISnBibWRoWW14bGN5NWNiaUFxWEc0Z0tpQkpaaUJnZG1Gc2RXVmdJR2x6SUc1dmRDQnpkWEJ3YkdsbFpDQW9iM0lnYm5Wc2JDOTFibVJsWm1sdVpXUXBMQ0IxYzJWeUlHRmpkR2x2Ym5NZ2RHaGhkQ0JqYUdGdVoyVWdkR2hsWEc0Z0tpQnpaV3hsWTNSbFpDQnZjSFJwYjI0Z2QybHNiQ0IwY21sbloyVnlJSFZ3WkdGMFpYTWdkRzhnZEdobElISmxibVJsY21Wa0lHOXdkR2x2Ym5NdVhHNGdLbHh1SUNvZ1NXWWdhWFFnYVhNZ2MzVndjR3hwWldRZ0tHRnVaQ0J1YjNRZ2JuVnNiQzkxYm1SbFptbHVaV1FwTENCMGFHVWdjbVZ1WkdWeVpXUWdiM0IwYVc5dWN5QjNhV3hzSUc1dmRGeHVJQ29nZFhCa1lYUmxJR2x1SUhKbGMzQnZibk5sSUhSdklIVnpaWElnWVdOMGFXOXVjeTRnU1c1emRHVmhaQ3dnZEdobElHQjJZV3gxWldBZ2NISnZjQ0J0ZFhOMElHTm9ZVzVuWlNCcGJseHVJQ29nYjNKa1pYSWdabTl5SUhSb1pTQnlaVzVrWlhKbFpDQnZjSFJwYjI1eklIUnZJSFZ3WkdGMFpTNWNiaUFxWEc0Z0tpQkpaaUJnWkdWbVlYVnNkRlpoYkhWbFlDQnBjeUJ3Y205MmFXUmxaQ3dnWVc1NUlHOXdkR2x2Ym5NZ2QybDBhQ0IwYUdVZ2MzVndjR3hwWldRZ2RtRnNkV1Z6SUhkcGJHd2dZbVZjYmlBcUlITmxiR1ZqZEdWa0xseHVJQ292WEc1MllYSWdVbVZoWTNSRVQwMVRaV3hsWTNRZ1BTQjdYRzRnSUhaaGJIVmxRMjl1ZEdWNGRFdGxlVG9nZG1Gc2RXVkRiMjUwWlhoMFMyVjVMRnh1WEc0Z0lHZGxkRTVoZEdsMlpWQnliM0J6T2lCbWRXNWpkR2x2YmlBb2FXNXpkQ3dnY0hKdmNITXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQnlaWFIxY200Z1lYTnphV2R1S0h0OUxDQndjbTl3Y3l3Z2UxeHVJQ0FnSUNBZ2IyNURhR0Z1WjJVNklHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXZia05vWVc1blpTeGNiaUFnSUNBZ0lIWmhiSFZsT2lCMWJtUmxabWx1WldSY2JpQWdJQ0I5S1R0Y2JpQWdmU3hjYmx4dUlDQnRiM1Z1ZEZkeVlYQndaWEk2SUdaMWJtTjBhVzl1SUNocGJuTjBMQ0J3Y205d2N5a2dlMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCamFHVmphMU5sYkdWamRGQnliM0JVZVhCbGN5aHBibk4wTENCd2NtOXdjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhaaGJIVmxJRDBnVEdsdWEyVmtWbUZzZFdWVmRHbHNjeTVuWlhSV1lXeDFaU2h3Y205d2N5azdYRzRnSUNBZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbElEMGdlMXh1SUNBZ0lDQWdjR1Z1WkdsdVoxVndaR0YwWlRvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0JwYm1sMGFXRnNWbUZzZFdVNklIWmhiSFZsSUNFOUlHNTFiR3dnUHlCMllXeDFaU0E2SUhCeWIzQnpMbVJsWm1GMWJIUldZV3gxWlN4Y2JpQWdJQ0FnSUc5dVEyaGhibWRsT2lCZmFHRnVaR3hsUTJoaGJtZGxMbUpwYm1Rb2FXNXpkQ2tzWEc0Z0lDQWdJQ0IzWVhOTmRXeDBhWEJzWlRvZ1FtOXZiR1ZoYmlod2NtOXdjeTV0ZFd4MGFYQnNaU2xjYmlBZ0lDQjlPMXh1SUNCOUxGeHVYRzRnSUhCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhRNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQzh2SUZCaGMzTWdaRzkzYmlCcGJtbDBhV0ZzSUhaaGJIVmxJSE52SUdsdWFYUnBZV3dnWjJWdVpYSmhkR1ZrSUcxaGNtdDFjQ0JvWVhNZ1kyOXljbVZqZEZ4dUlDQWdJQzh2SUdCelpXeGxZM1JsWkdBZ1lYUjBjbWxpZFhSbGMxeHVJQ0FnSUhaaGNpQmphR2xzWkVOdmJuUmxlSFFnUFNCaGMzTnBaMjRvZTMwc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUdOb2FXeGtRMjl1ZEdWNGRGdDJZV3gxWlVOdmJuUmxlSFJMWlhsZElEMGdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbWx1YVhScFlXeFdZV3gxWlR0Y2JpQWdJQ0J5WlhSMWNtNGdZMmhwYkdSRGIyNTBaWGgwTzF4dUlDQjlMRnh1WEc0Z0lIQnZjM1JWY0dSaGRHVlhjbUZ3Y0dWeU9pQm1kVzVqZEdsdmJpQW9hVzV6ZENrZ2UxeHVJQ0FnSUhaaGNpQndjbTl3Y3lBOUlHbHVjM1F1WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCek8xeHVYRzRnSUNBZ0x5OGdRV1owWlhJZ2RHaGxJR2x1YVhScFlXd2diVzkxYm5Rc0lIZGxJR052Ym5SeWIyd2djMlZzWldOMFpXUXRibVZ6Y3lCdFlXNTFZV3hzZVNCemJ5QmtiMjRuZENCd1lYTnpYRzRnSUNBZ0x5OGdkR2hsSUdOdmJuUmxlSFFnZG1Gc2RXVWdaRzkzYmx4dUlDQWdJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzVwYm1sMGFXRnNWbUZzZFdVZ1BTQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQjJZWElnZDJGelRYVnNkR2x3YkdVZ1BTQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXVkMkZ6VFhWc2RHbHdiR1U3WEc0Z0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbmRoYzAxMWJIUnBjR3hsSUQwZ1FtOXZiR1ZoYmlod2NtOXdjeTV0ZFd4MGFYQnNaU2s3WEc1Y2JpQWdJQ0IyWVhJZ2RtRnNkV1VnUFNCTWFXNXJaV1JXWVd4MVpWVjBhV3h6TG1kbGRGWmhiSFZsS0hCeWIzQnpLVHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbkJsYm1ScGJtZFZjR1JoZEdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUhWd1pHRjBaVTl3ZEdsdmJuTW9hVzV6ZEN3Z1FtOXZiR1ZoYmlod2NtOXdjeTV0ZFd4MGFYQnNaU2tzSUhaaGJIVmxLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSGRoYzAxMWJIUnBjR3hsSUNFOVBTQkNiMjlzWldGdUtIQnliM0J6TG0xMWJIUnBjR3hsS1NrZ2UxeHVJQ0FnSUNBZ0x5OGdSbTl5SUhOcGJYQnNhV05wZEhrc0lISmxZWEJ3YkhrZ1lHUmxabUYxYkhSV1lXeDFaV0FnYVdZZ1lHMTFiSFJwY0d4bFlDQnBjeUIwYjJkbmJHVmtMbHh1SUNBZ0lDQWdhV1lnS0hCeWIzQnpMbVJsWm1GMWJIUldZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lIVndaR0YwWlU5d2RHbHZibk1vYVc1emRDd2dRbTl2YkdWaGJpaHdjbTl3Y3k1dGRXeDBhWEJzWlNrc0lIQnliM0J6TG1SbFptRjFiSFJXWVd4MVpTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJTWlhabGNuUWdkR2hsSUhObGJHVmpkQ0JpWVdOcklIUnZJR2wwY3lCa1pXWmhkV3gwSUhWdWMyVnNaV04wWldRZ2MzUmhkR1V1WEc0Z0lDQWdJQ0FnSUhWd1pHRjBaVTl3ZEdsdmJuTW9hVzV6ZEN3Z1FtOXZiR1ZoYmlod2NtOXdjeTV0ZFd4MGFYQnNaU2tzSUhCeWIzQnpMbTExYkhScGNHeGxJRDhnVzEwZ09pQW5KeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1WEc1bWRXNWpkR2x2YmlCZmFHRnVaR3hsUTJoaGJtZGxLR1YyWlc1MEtTQjdYRzRnSUhaaGNpQndjbTl3Y3lBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCek8xeHVJQ0IyWVhJZ2NtVjBkWEp1Vm1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbVY0WldOMWRHVlBia05vWVc1blpTaHdjbTl3Y3l3Z1pYWmxiblFwTzF4dVhHNGdJSFJvYVhNdVgzZHlZWEJ3WlhKVGRHRjBaUzV3Wlc1a2FXNW5WWEJrWVhSbElEMGdkSEoxWlR0Y2JpQWdVbVZoWTNSVmNHUmhkR1Z6TG1GellYQW9kWEJrWVhSbFQzQjBhVzl1YzBsbVVHVnVaR2x1WjFWd1pHRjBaVUZ1WkUxdmRXNTBaV1FzSUhSb2FYTXBPMXh1SUNCeVpYUjFjbTRnY21WMGRYSnVWbUZzZFdVN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkVUMDFUWld4bFkzUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTVRleHRDb21wb25lbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyJyk7XG52YXIgc2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3NldFRleHRDb250ZW50Jyk7XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcblxuLyoqXG4gKiBUZXh0IG5vZGVzIHZpb2xhdGUgYSBjb3VwbGUgYXNzdW1wdGlvbnMgdGhhdCBSZWFjdCBtYWtlcyBhYm91dCBjb21wb25lbnRzOlxuICpcbiAqICAtIFdoZW4gbW91bnRpbmcgdGV4dCBpbnRvIHRoZSBET00sIGFkamFjZW50IHRleHQgbm9kZXMgYXJlIG1lcmdlZC5cbiAqICAtIFRleHQgbm9kZXMgY2Fubm90IGJlIGFzc2lnbmVkIGEgUmVhY3Qgcm9vdCBJRC5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIHdyYXAgc3RyaW5ncyBpbiBlbGVtZW50cyBzbyB0aGF0IHRoZXkgY2FuIHVuZGVyZ29cbiAqIHRoZSBzYW1lIHJlY29uY2lsaWF0aW9uIHRoYXQgaXMgYXBwbGllZCB0byBlbGVtZW50cy5cbiAqXG4gKiBUT0RPOiBJbnZlc3RpZ2F0ZSByZXByZXNlbnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9NIHdpdGggdGV4dCBub2Rlcy5cbiAqXG4gKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdENvbXBvbmVudFxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgLy8gVGhpcyBjb25zdHJ1Y3RvciBhbmQgaXRzIGFyZ3VtZW50IGlzIGN1cnJlbnRseSB1c2VkIGJ5IG1vY2tzLlxufTtcblxuYXNzaWduKFJlYWN0RE9NVGV4dENvbXBvbmVudC5wcm90b3R5cGUsIHtcblxuICAvKipcbiAgICogQHBhcmFtIHtSZWFjdFRleHR9IHRleHRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyByZWFsbHkgYSBSZWFjdFRleHQgKFJlYWN0Tm9kZSksIG5vdCBhIFJlYWN0RWxlbWVudFxuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gdGV4dDtcbiAgICB0aGlzLl9zdHJpbmdUZXh0ID0gJycgKyB0ZXh0O1xuXG4gICAgLy8gUHJvcGVydGllc1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICAgIHRoaXMuX21vdW50SW5kZXggPSAwO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBtYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLiBUaGlzIG5vZGUgaXMgbm90IGludGVuZGVkIHRvIGhhdmVcbiAgICogYW55IGZlYXR1cmVzIGJlc2lkZXMgY29udGFpbmluZyB0ZXh0IGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChyb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSkge1xuICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcoJ3NwYW4nLCBudWxsLCBjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IHJvb3RJRDtcbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBjb250ZXh0W1JlYWN0TW91bnQub3duZXJEb2N1bWVudENvbnRleHRLZXldO1xuICAgICAgdmFyIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9ySUQoZWwsIHJvb3RJRCk7XG4gICAgICAvLyBQb3B1bGF0ZSBub2RlIGNhY2hlXG4gICAgICBSZWFjdE1vdW50LmdldElEKGVsKTtcbiAgICAgIHNldFRleHRDb250ZW50KGVsLCB0aGlzLl9zdHJpbmdUZXh0KTtcbiAgICAgIHJldHVybiBlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGVzY2FwZWRUZXh0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRoaXMuX3N0cmluZ1RleHQpO1xuXG4gICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgICAgLy8gTm9ybWFsbHkgd2UnZCB3cmFwIHRoaXMgaW4gYSBgc3BhbmAgZm9yIHRoZSByZWFzb25zIHN0YXRlZCBhYm92ZSwgYnV0XG4gICAgICAgIC8vIHNpbmNlIHRoaXMgaXMgYSBzaXR1YXRpb24gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBvdmVyIChzdGF0aWMgcGFnZXMpLFxuICAgICAgICAvLyB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgdGV4dCBhcyBpdCBpcy5cbiAgICAgICAgcmV0dXJuIGVzY2FwZWRUZXh0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJzxzcGFuICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9ySUQocm9vdElEKSArICc+JyArIGVzY2FwZWRUZXh0ICsgJzwvc3Bhbj4nO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGlzIGNvbXBvbmVudCBieSB1cGRhdGluZyB0aGUgdGV4dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0VGV4dH0gbmV4dFRleHQgVGhlIG5leHQgdGV4dCBjb250ZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dFRleHQsIHRyYW5zYWN0aW9uKSB7XG4gICAgaWYgKG5leHRUZXh0ICE9PSB0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0VGV4dDtcbiAgICAgIHZhciBuZXh0U3RyaW5nVGV4dCA9ICcnICsgbmV4dFRleHQ7XG4gICAgICBpZiAobmV4dFN0cmluZ1RleHQgIT09IHRoaXMuX3N0cmluZ1RleHQpIHtcbiAgICAgICAgLy8gVE9ETzogU2F2ZSB0aGlzIGFzIHBlbmRpbmcgcHJvcHMgYW5kIHVzZSBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnlcbiAgICAgICAgLy8gYW5kL29yIHVwZGF0ZUNvbXBvbmVudCB0byBkbyB0aGUgYWN0dWFsIHVwZGF0ZSBmb3IgY29uc2lzdGVuY3kgd2l0aFxuICAgICAgICAvLyBvdGhlciBjb21wb25lbnQgdHlwZXM/XG4gICAgICAgIHRoaXMuX3N0cmluZ1RleHQgPSBuZXh0U3RyaW5nVGV4dDtcbiAgICAgICAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy51cGRhdGVUZXh0Q29udGVudChub2RlLCBuZXh0U3RyaW5nVGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQodGhpcy5fcm9vdE5vZGVJRCk7XG4gIH1cblxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0Q29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JFVDAxVVpYaDBRMjl0Y0c5dVpXNTBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlZHVjRkRU52YlhCdmJtVnVkRnh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCRVQwMURhR2xzWkhKbGJrOXdaWEpoZEdsdmJuTWdQU0J5WlhGMWFYSmxLQ2N1TDBSUFRVTm9hV3hrY21WdVQzQmxjbUYwYVc5dWN5Y3BPMXh1ZG1GeUlFUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeUE5SUhKbGNYVnBjbVVvSnk0dlJFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpKeWs3WEc1MllYSWdVbVZoWTNSRGIyMXdiMjVsYm5SQ2NtOTNjMlZ5Ulc1MmFYSnZibTFsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyOXRjRzl1Wlc1MFFuSnZkM05sY2tWdWRtbHliMjV0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JOYjNWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5iM1Z1ZENjcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnWlhOallYQmxWR1Y0ZEVOdmJuUmxiblJHYjNKQ2NtOTNjMlZ5SUQwZ2NtVnhkV2x5WlNnbkxpOWxjMk5oY0dWVVpYaDBRMjl1ZEdWdWRFWnZja0p5YjNkelpYSW5LVHRjYm5aaGNpQnpaWFJVWlhoMFEyOXVkR1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZjMlYwVkdWNGRFTnZiblJsYm5RbktUdGNiblpoY2lCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQnlaWEYxYVhKbEtDY3VMM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWNwTzF4dVhHNHZLaXBjYmlBcUlGUmxlSFFnYm05a1pYTWdkbWx2YkdGMFpTQmhJR052ZFhCc1pTQmhjM04xYlhCMGFXOXVjeUIwYUdGMElGSmxZV04wSUcxaGEyVnpJR0ZpYjNWMElHTnZiWEJ2Ym1WdWRITTZYRzRnS2x4dUlDb2dJQzBnVjJobGJpQnRiM1Z1ZEdsdVp5QjBaWGgwSUdsdWRHOGdkR2hsSUVSUFRTd2dZV1JxWVdObGJuUWdkR1Y0ZENCdWIyUmxjeUJoY21VZ2JXVnlaMlZrTGx4dUlDb2dJQzBnVkdWNGRDQnViMlJsY3lCallXNXViM1FnWW1VZ1lYTnphV2R1WldRZ1lTQlNaV0ZqZENCeWIyOTBJRWxFTGx4dUlDcGNiaUFxSUZSb2FYTWdZMjl0Y0c5dVpXNTBJR2x6SUhWelpXUWdkRzhnZDNKaGNDQnpkSEpwYm1keklHbHVJR1ZzWlcxbGJuUnpJSE52SUhSb1lYUWdkR2hsZVNCallXNGdkVzVrWlhKbmIxeHVJQ29nZEdobElITmhiV1VnY21WamIyNWphV3hwWVhScGIyNGdkR2hoZENCcGN5QmhjSEJzYVdWa0lIUnZJR1ZzWlcxbGJuUnpMbHh1SUNwY2JpQXFJRlJQUkU4NklFbHVkbVZ6ZEdsbllYUmxJSEpsY0hKbGMyVnVkR2x1WnlCU1pXRmpkQ0JqYjIxd2IyNWxiblJ6SUdsdUlIUm9aU0JFVDAwZ2QybDBhQ0IwWlhoMElHNXZaR1Z6TGx4dUlDcGNiaUFxSUVCamJHRnpjeUJTWldGamRFUlBUVlJsZUhSRGIyMXdiMjVsYm5SY2JpQXFJRUJsZUhSbGJtUnpJRkpsWVdOMFEyOXRjRzl1Wlc1MFhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVkbUZ5SUZKbFlXTjBSRTlOVkdWNGRFTnZiWEJ2Ym1WdWRDQTlJR1oxYm1OMGFXOXVJQ2h3Y205d2N5a2dlMXh1SUNBdkx5QlVhR2x6SUdOdmJuTjBjblZqZEc5eUlHRnVaQ0JwZEhNZ1lYSm5kVzFsYm5RZ2FYTWdZM1Z5Y21WdWRHeDVJSFZ6WldRZ1lua2diVzlqYTNNdVhHNTlPMXh1WEc1aGMzTnBaMjRvVW1WaFkzUkVUMDFVWlhoMFEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTd2dlMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVkdWNGRIMGdkR1Y0ZEZ4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZERvZ1puVnVZM1JwYjI0Z0tIUmxlSFFwSUh0Y2JpQWdJQ0F2THlCVVQwUlBPaUJVYUdseklHbHpJSEpsWVd4c2VTQmhJRkpsWVdOMFZHVjRkQ0FvVW1WaFkzUk9iMlJsS1N3Z2JtOTBJR0VnVW1WaFkzUkZiR1Z0Wlc1MFhHNGdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RZ1BTQjBaWGgwTzF4dUlDQWdJSFJvYVhNdVgzTjBjbWx1WjFSbGVIUWdQU0FuSnlBcklIUmxlSFE3WEc1Y2JpQWdJQ0F2THlCUWNtOXdaWEowYVdWelhHNGdJQ0FnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0E5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVmYlc5MWJuUkpibVJsZUNBOUlEQTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nZEdobElHMWhjbXQxY0NCbWIzSWdkR2hwY3lCMFpYaDBJRzV2WkdVdUlGUm9hWE1nYm05a1pTQnBjeUJ1YjNRZ2FXNTBaVzVrWldRZ2RHOGdhR0YyWlZ4dUlDQWdLaUJoYm5rZ1ptVmhkSFZ5WlhNZ1ltVnphV1JsY3lCamIyNTBZV2x1YVc1bklIUmxlSFFnWTI5dWRHVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKdmIzUkpSQ0JFVDAwZ1NVUWdiMllnZEdobElISnZiM1FnYm05a1pTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1ZkZKbFlXTjBVMlZ5ZG1WeVVtVnVaR1Z5YVc1blZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdUV0Z5YTNWd0lHWnZjaUIwYUdseklIUmxlSFFnYm05a1pTNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQnRiM1Z1ZEVOdmJYQnZibVZ1ZERvZ1puVnVZM1JwYjI0Z0tISnZiM1JKUkN3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2FXWWdLR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZEtTQjdYRzRnSUNBZ0lDQWdJSFpoYkdsa1lYUmxSRTlOVG1WemRHbHVaeWduYzNCaGJpY3NJRzUxYkd3c0lHTnZiblJsZUhSYmRtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bkxtRnVZMlZ6ZEc5eVNXNW1iME52Ym5SbGVIUkxaWGxkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxsOXliMjkwVG05a1pVbEVJRDBnY205dmRFbEVPMXh1SUNBZ0lHbG1JQ2gwY21GdWMyRmpkR2x2Ymk1MWMyVkRjbVZoZEdWRmJHVnRaVzUwS1NCN1hHNGdJQ0FnSUNCMllYSWdiM2R1WlhKRWIyTjFiV1Z1ZENBOUlHTnZiblJsZUhSYlVtVmhZM1JOYjNWdWRDNXZkMjVsY2tSdlkzVnRaVzUwUTI5dWRHVjRkRXRsZVYwN1hHNGdJQ0FnSUNCMllYSWdaV3dnUFNCdmQyNWxja1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb0ozTndZVzRuS1R0Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NXpaWFJCZEhSeWFXSjFkR1ZHYjNKSlJDaGxiQ3dnY205dmRFbEVLVHRjYmlBZ0lDQWdJQzh2SUZCdmNIVnNZWFJsSUc1dlpHVWdZMkZqYUdWY2JpQWdJQ0FnSUZKbFlXTjBUVzkxYm5RdVoyVjBTVVFvWld3cE8xeHVJQ0FnSUNBZ2MyVjBWR1Y0ZEVOdmJuUmxiblFvWld3c0lIUm9hWE11WDNOMGNtbHVaMVJsZUhRcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUdWc08xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IyWVhJZ1pYTmpZWEJsWkZSbGVIUWdQU0JsYzJOaGNHVlVaWGgwUTI5dWRHVnVkRVp2Y2tKeWIzZHpaWElvZEdocGN5NWZjM1J5YVc1blZHVjRkQ2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaDBjbUZ1YzJGamRHbHZiaTV5Wlc1a1pYSlViMU4wWVhScFkwMWhjbXQxY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJPYjNKdFlXeHNlU0IzWlNka0lIZHlZWEFnZEdocGN5QnBiaUJoSUdCemNHRnVZQ0JtYjNJZ2RHaGxJSEpsWVhOdmJuTWdjM1JoZEdWa0lHRmliM1psTENCaWRYUmNiaUFnSUNBZ0lDQWdMeThnYzJsdVkyVWdkR2hwY3lCcGN5QmhJSE5wZEhWaGRHbHZiaUIzYUdWeVpTQlNaV0ZqZENCM2IyNG5kQ0IwWVd0bElHOTJaWElnS0hOMFlYUnBZeUJ3WVdkbGN5a3NYRzRnSUNBZ0lDQWdJQzh2SUhkbElHTmhiaUJ6YVcxd2JIa2djbVYwZFhKdUlIUm9aU0IwWlhoMElHRnpJR2wwSUdsekxseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pYTmpZWEJsWkZSbGVIUTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQW5QSE53WVc0Z0p5QXJJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1amNtVmhkR1ZOWVhKcmRYQkdiM0pKUkNoeWIyOTBTVVFwSUNzZ0p6NG5JQ3NnWlhOallYQmxaRlJsZUhRZ0t5QW5QQzl6Y0dGdVBpYzdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWY0dSaGRHVnpJSFJvYVhNZ1kyOXRjRzl1Wlc1MElHSjVJSFZ3WkdGMGFXNW5JSFJvWlNCMFpYaDBJR052Ym5SbGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlVaWGgwZlNCdVpYaDBWR1Y0ZENCVWFHVWdibVY0ZENCMFpYaDBJR052Ym5SbGJuUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lISmxZMlZwZG1WRGIyMXdiMjVsYm5RNklHWjFibU4wYVc5dUlDaHVaWGgwVkdWNGRDd2dkSEpoYm5OaFkzUnBiMjRwSUh0Y2JpQWdJQ0JwWmlBb2JtVjRkRlJsZUhRZ0lUMDlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDQTlJRzVsZUhSVVpYaDBPMXh1SUNBZ0lDQWdkbUZ5SUc1bGVIUlRkSEpwYm1kVVpYaDBJRDBnSnljZ0t5QnVaWGgwVkdWNGREdGNiaUFnSUNBZ0lHbG1JQ2h1WlhoMFUzUnlhVzVuVkdWNGRDQWhQVDBnZEdocGN5NWZjM1J5YVc1blZHVjRkQ2tnZTF4dUlDQWdJQ0FnSUNBdkx5QlVUMFJQT2lCVFlYWmxJSFJvYVhNZ1lYTWdjR1Z1WkdsdVp5QndjbTl3Y3lCaGJtUWdkWE5sSUhCbGNtWnZjbTFWY0dSaGRHVkpaazVsWTJWemMyRnllVnh1SUNBZ0lDQWdJQ0F2THlCaGJtUXZiM0lnZFhCa1lYUmxRMjl0Y0c5dVpXNTBJSFJ2SUdSdklIUm9aU0JoWTNSMVlXd2dkWEJrWVhSbElHWnZjaUJqYjI1emFYTjBaVzVqZVNCM2FYUm9YRzRnSUNBZ0lDQWdJQzh2SUc5MGFHVnlJR052YlhCdmJtVnVkQ0IwZVhCbGN6OWNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmMzUnlhVzVuVkdWNGRDQTlJRzVsZUhSVGRISnBibWRVWlhoME8xeHVJQ0FnSUNBZ0lDQjJZWElnYm05a1pTQTlJRkpsWVdOMFRXOTFiblF1WjJWMFRtOWtaU2gwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ0lDQWdJQ0FnUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1ekxuVndaR0YwWlZSbGVIUkRiMjUwWlc1MEtHNXZaR1VzSUc1bGVIUlRkSEpwYm1kVVpYaDBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnZFc1dGIzVnVkRU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUZKbFlXTjBRMjl0Y0c5dVpXNTBRbkp2ZDNObGNrVnVkbWx5YjI1dFpXNTBMblZ1Ylc5MWJuUkpSRVp5YjIxRmJuWnBjbTl1YldWdWRDaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUtUdGNiaUFnZlZ4dVhHNTlLVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRVJQVFZSbGVIUkRiMjF3YjI1bGJuUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTVRleHRhcmVhXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdERPTUlET3BlcmF0aW9ucycpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtcbiAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcbiAgICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZVxuICAgIFJlYWN0RE9NVGV4dGFyZWEudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYSA8dGV4dGFyZWE+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmRcbiAqIGBkZWZhdWx0VmFsdWVgLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzXG4gKiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG4gKlxuICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0IHRoZVxuICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGxcbiAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3BcbiAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRlbnQgKGRlcHJlY2F0ZWQpLlxuICovXG52YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcbiAgZ2V0TmF0aXZlUHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgICEocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5vdCBtYWtlIHNlbnNlIG9uIDx0ZXh0YXJlYT4uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQWx3YXlzIHNldCBjaGlsZHJlbiB0byB0aGUgc2FtZSB0aGluZy4gSW4gSUU5LCB0aGUgc2VsZWN0aW9uIHJhbmdlIHdpbGxcbiAgICAvLyBnZXQgcmVzZXQgaWYgYHRleHRDb250ZW50YCBpcyBtdXRhdGVkLlxuICAgIHZhciBuYXRpdmVQcm9wcyA9IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGNoaWxkcmVuOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5hdGl2ZVByb3BzO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3RleHRhcmVhJywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgY2hpbGRyZW4gY29udGVudCBpbiA8dGV4dGFyZWE+LlxuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgJyArICdjaGlsZHJlbiBvbiA8dGV4dGFyZWE+LicpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgIShkZWZhdWx0VmFsdWUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0YXJlYT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAhKGNoaWxkcmVuLmxlbmd0aCA8PSAxKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBvbmUgY2hpbGQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuWzBdO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdFZhbHVlID09IG51bGwpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgIC8vIFdlIHNhdmUgdGhlIGluaXRpYWwgdmFsdWUgc28gdGhhdCBgUmVhY3RET01Db21wb25lbnRgIGRvZXNuJ3QgdXBkYXRlXG4gICAgICAvLyBgdGV4dENvbnRlbnRgICh1bm5lY2Vzc2FyeSBzaW5jZSB3ZSB1cGRhdGUgdmFsdWUpLlxuICAgICAgLy8gVGhlIGluaXRpYWwgdmFsdWUgY2FuIGJlIGEgYm9vbGVhbiBvciBvYmplY3Qgc28gdGhhdCdzIHdoeSBpdCdzXG4gICAgICAvLyBmb3JjZWQgdG8gYmUgYSBzdHJpbmcuXG4gICAgICBpbml0aWFsVmFsdWU6ICcnICsgKHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZSksXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpXG4gICAgfTtcbiAgfSxcblxuICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAvLyBDYXN0IGB2YWx1ZWAgdG8gYSBzdHJpbmcgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZVxuICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgUmVhY3RET01JRE9wZXJhdGlvbnMudXBkYXRlUHJvcGVydHlCeUlEKGluc3QuX3Jvb3ROb2RlSUQsICd2YWx1ZScsICcnICsgdmFsdWUpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcbiAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0YXJlYTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMVVaWGgwWVhKbFlTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlZHVjRkR0Z5WldGY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQk1hVzVyWldSV1lXeDFaVlYwYVd4eklEMGdjbVZ4ZFdseVpTZ25MaTlNYVc1clpXUldZV3gxWlZWMGFXeHpKeWs3WEc1MllYSWdVbVZoWTNSRVQwMUpSRTl3WlhKaGRHbHZibk1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpKeWs3WEc1MllYSWdVbVZoWTNSVmNHUmhkR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaWE1uS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNibVoxYm1OMGFXOXVJR1p2Y21ObFZYQmtZWFJsU1daTmIzVnVkR1ZrS0NrZ2UxeHVJQ0JwWmlBb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrZ2UxeHVJQ0FnSUM4dklFUlBUU0JqYjIxd2IyNWxiblFnYVhNZ2MzUnBiR3dnYlc5MWJuUmxaRHNnZFhCa1lYUmxYRzRnSUNBZ1VtVmhZM1JFVDAxVVpYaDBZWEpsWVM1MWNHUmhkR1ZYY21Gd2NHVnlLSFJvYVhNcE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJoSUR4MFpYaDBZWEpsWVQ0Z2JtRjBhWFpsSUdOdmJYQnZibVZ1ZENCMGFHRjBJR0ZzYkc5M2N5QnpaWFIwYVc1bklHQjJZV3gxWldBc0lHRnVaRnh1SUNvZ1lHUmxabUYxYkhSV1lXeDFaV0F1SUZSb2FYTWdaR2xtWm1WeWN5Qm1jbTl0SUhSb1pTQjBjbUZrYVhScGIyNWhiQ0JFVDAwZ1FWQkpJR0psWTJGMWMyVWdkbUZzZFdVZ2FYTmNiaUFxSUhWemRXRnNiSGtnYzJWMElHRnpJRkJEUkVGVVFTQmphR2xzWkhKbGJpNWNiaUFxWEc0Z0tpQkpaaUJnZG1Gc2RXVmdJR2x6SUc1dmRDQnpkWEJ3YkdsbFpDQW9iM0lnYm5Wc2JDOTFibVJsWm1sdVpXUXBMQ0IxYzJWeUlHRmpkR2x2Ym5NZ2RHaGhkQ0JoWm1abFkzUWdkR2hsWEc0Z0tpQjJZV3gxWlNCM2FXeHNJSFJ5YVdkblpYSWdkWEJrWVhSbGN5QjBieUIwYUdVZ1pXeGxiV1Z1ZEM1Y2JpQXFYRzRnS2lCSlppQmdkbUZzZFdWZ0lHbHpJSE4xY0hCc2FXVmtJQ2hoYm1RZ2JtOTBJRzUxYkd3dmRXNWtaV1pwYm1Wa0tTd2dkR2hsSUhKbGJtUmxjbVZrSUdWc1pXMWxiblFnZDJsc2JGeHVJQ29nYm05MElIUnlhV2RuWlhJZ2RYQmtZWFJsY3lCMGJ5QjBhR1VnWld4bGJXVnVkQzRnU1c1emRHVmhaQ3dnZEdobElHQjJZV3gxWldBZ2NISnZjQ0J0ZFhOMElHTm9ZVzVuWlNCcGJseHVJQ29nYjNKa1pYSWdabTl5SUhSb1pTQnlaVzVrWlhKbFpDQmxiR1Z0Wlc1MElIUnZJR0psSUhWd1pHRjBaV1F1WEc0Z0tseHVJQ29nVkdobElISmxibVJsY21Wa0lHVnNaVzFsYm5RZ2QybHNiQ0JpWlNCcGJtbDBhV0ZzYVhwbFpDQjNhWFJvSUdGdUlHVnRjSFI1SUhaaGJIVmxMQ0IwYUdVZ2NISnZjRnh1SUNvZ1lHUmxabUYxYkhSV1lXeDFaV0FnYVdZZ2MzQmxZMmxtYVdWa0xDQnZjaUIwYUdVZ1kyaHBiR1J5Wlc0Z1kyOXVkR1Z1ZENBb1pHVndjbVZqWVhSbFpDa3VYRzRnS2k5Y2JuWmhjaUJTWldGamRFUlBUVlJsZUhSaGNtVmhJRDBnZTF4dUlDQm5aWFJPWVhScGRtVlFjbTl3Y3pvZ1puVnVZM1JwYjI0Z0tHbHVjM1FzSUhCeWIzQnpMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJU2h3Y205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVENBOVBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RnWkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVeGdJR1J2WlhNZ2JtOTBJRzFoYTJVZ2MyVnVjMlVnYjI0Z1BIUmxlSFJoY21WaFBpNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBdkx5QkJiSGRoZVhNZ2MyVjBJR05vYVd4a2NtVnVJSFJ2SUhSb1pTQnpZVzFsSUhSb2FXNW5MaUJKYmlCSlJUa3NJSFJvWlNCelpXeGxZM1JwYjI0Z2NtRnVaMlVnZDJsc2JGeHVJQ0FnSUM4dklHZGxkQ0J5WlhObGRDQnBaaUJnZEdWNGRFTnZiblJsYm5SZ0lHbHpJRzExZEdGMFpXUXVYRzRnSUNBZ2RtRnlJRzVoZEdsMlpWQnliM0J6SUQwZ1lYTnphV2R1S0h0OUxDQndjbTl3Y3l3Z2UxeHVJQ0FnSUNBZ1pHVm1ZWFZzZEZaaGJIVmxPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0IyWVd4MVpUb2dkVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdZMmhwYkdSeVpXNDZJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzVwYm1sMGFXRnNWbUZzZFdVc1hHNGdJQ0FnSUNCdmJrTm9ZVzVuWlRvZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExtOXVRMmhoYm1kbFhHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnYm1GMGFYWmxVSEp2Y0hNN1hHNGdJSDBzWEc1Y2JpQWdiVzkxYm5SWGNtRndjR1Z5T2lCbWRXNWpkR2x2YmlBb2FXNXpkQ3dnY0hKdmNITXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3k1amFHVmphMUJ5YjNCVWVYQmxjeWduZEdWNGRHRnlaV0VuTENCd2NtOXdjeXdnYVc1emRDNWZZM1Z5Y21WdWRFVnNaVzFsYm5RdVgyOTNibVZ5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ1pHVm1ZWFZzZEZaaGJIVmxJRDBnY0hKdmNITXVaR1ZtWVhWc2RGWmhiSFZsTzF4dUlDQWdJQzh2SUZSUFJFOGdLSGwxYm1kemRHVnljeWs2SUZKbGJXOTJaU0J6ZFhCd2IzSjBJR1p2Y2lCamFHbHNaSEpsYmlCamIyNTBaVzUwSUdsdUlEeDBaWGgwWVhKbFlUNHVYRzRnSUNBZ2RtRnlJR05vYVd4a2NtVnVJRDBnY0hKdmNITXVZMmhwYkdSeVpXNDdYRzRnSUNBZ2FXWWdLR05vYVd4a2NtVnVJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVlhObElIUm9aU0JnWkdWbVlYVnNkRlpoYkhWbFlDQnZjaUJnZG1Gc2RXVmdJSEJ5YjNCeklHbHVjM1JsWVdRZ2IyWWdjMlYwZEdsdVp5QW5JQ3NnSjJOb2FXeGtjbVZ1SUc5dUlEeDBaWGgwWVhKbFlUNHVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBaEtHUmxabUYxYkhSV1lXeDFaU0E5UFNCdWRXeHNLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEpaaUI1YjNVZ2MzVndjR3g1SUdCa1pXWmhkV3gwVm1Gc2RXVmdJRzl1SUdFZ1BIUmxlSFJoY21WaFBpd2daRzhnYm05MElIQmhjM01nWTJocGJHUnlaVzR1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29ZMmhwYkdSeVpXNHBLU0I3WEc0Z0lDQWdJQ0FnSUNFb1kyaHBiR1J5Wlc0dWJHVnVaM1JvSUR3OUlERXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0p6eDBaWGgwWVhKbFlUNGdZMkZ1SUc5dWJIa2dhR0YyWlNCaGRDQnRiM04wSUc5dVpTQmphR2xzWkM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUdOb2FXeGtjbVZ1SUQwZ1kyaHBiR1J5Wlc1Yk1GMDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR1JsWm1GMWJIUldZV3gxWlNBOUlDY25JQ3NnWTJocGJHUnlaVzQ3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hrWldaaGRXeDBWbUZzZFdVZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ1pHVm1ZWFZzZEZaaGJIVmxJRDBnSnljN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCMllXeDFaU0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WjJWMFZtRnNkV1VvY0hKdmNITXBPMXh1WEc0Z0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxJRDBnZTF4dUlDQWdJQ0FnTHk4Z1YyVWdjMkYyWlNCMGFHVWdhVzVwZEdsaGJDQjJZV3gxWlNCemJ5QjBhR0YwSUdCU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZEdBZ1pHOWxjMjRuZENCMWNHUmhkR1ZjYmlBZ0lDQWdJQzh2SUdCMFpYaDBRMjl1ZEdWdWRHQWdLSFZ1Ym1WalpYTnpZWEo1SUhOcGJtTmxJSGRsSUhWd1pHRjBaU0IyWVd4MVpTa3VYRzRnSUNBZ0lDQXZMeUJVYUdVZ2FXNXBkR2xoYkNCMllXeDFaU0JqWVc0Z1ltVWdZU0JpYjI5c1pXRnVJRzl5SUc5aWFtVmpkQ0J6YnlCMGFHRjBKM01nZDJoNUlHbDBKM05jYmlBZ0lDQWdJQzh2SUdadmNtTmxaQ0IwYnlCaVpTQmhJSE4wY21sdVp5NWNiaUFnSUNBZ0lHbHVhWFJwWVd4V1lXeDFaVG9nSnljZ0t5QW9kbUZzZFdVZ0lUMGdiblZzYkNBL0lIWmhiSFZsSURvZ1pHVm1ZWFZzZEZaaGJIVmxLU3hjYmlBZ0lDQWdJRzl1UTJoaGJtZGxPaUJmYUdGdVpHeGxRMmhoYm1kbExtSnBibVFvYVc1emRDbGNiaUFnSUNCOU8xeHVJQ0I5TEZ4dVhHNGdJSFZ3WkdGMFpWZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wS1NCN1hHNGdJQ0FnZG1GeUlIQnliM0J6SUQwZ2FXNXpkQzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNGdJQ0FnZG1GeUlIWmhiSFZsSUQwZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3k1blpYUldZV3gxWlNod2NtOXdjeWs3WEc0Z0lDQWdhV1lnS0haaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQzh2SUVOaGMzUWdZSFpoYkhWbFlDQjBieUJoSUhOMGNtbHVaeUIwYnlCbGJuTjFjbVVnZEdobElIWmhiSFZsSUdseklITmxkQ0JqYjNKeVpXTjBiSGt1SUZkb2FXeGxYRzRnSUNBZ0lDQXZMeUJpY205M2MyVnljeUIwZVhCcFkyRnNiSGtnWkc4Z2RHaHBjeUJoY3lCdVpXTmxjM05oY25rc0lHcHpaRzl0SUdSdlpYTnVKM1F1WEc0Z0lDQWdJQ0JTWldGamRFUlBUVWxFVDNCbGNtRjBhVzl1Y3k1MWNHUmhkR1ZRY205d1pYSjBlVUo1U1VRb2FXNXpkQzVmY205dmRFNXZaR1ZKUkN3Z0ozWmhiSFZsSnl3Z0p5Y2dLeUIyWVd4MVpTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVtZFc1amRHbHZiaUJmYUdGdVpHeGxRMmhoYm1kbEtHVjJaVzUwS1NCN1hHNGdJSFpoY2lCd2NtOXdjeUE5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuQnliM0J6TzF4dUlDQjJZWElnY21WMGRYSnVWbUZzZFdVZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtVjRaV04xZEdWUGJrTm9ZVzVuWlNod2NtOXdjeXdnWlhabGJuUXBPMXh1SUNCU1pXRmpkRlZ3WkdGMFpYTXVZWE5oY0NobWIzSmpaVlZ3WkdGMFpVbG1UVzkxYm5SbFpDd2dkR2hwY3lrN1hHNGdJSEpsZEhWeWJpQnlaWFIxY201V1lXeDFaVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRWUmxlSFJoY21WaE95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERlZmF1bHRJbmplY3Rpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luJyk7XG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0NoYW5nZUV2ZW50UGx1Z2luJyk7XG52YXIgQ2xpZW50UmVhY3RSb290SW5kZXggPSByZXF1aXJlKCcuL0NsaWVudFJlYWN0Um9vdEluZGV4Jyk7XG52YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSByZXF1aXJlKCcuL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyJyk7XG52YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9FbnRlckxlYXZlRXZlbnRQbHVnaW4nKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0gcmVxdWlyZSgnLi9IVE1MRE9NUHJvcGVydHlDb25maWcnKTtcbnZhciBSZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbiA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4nKTtcbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRDb21wb25lbnQnKTtcbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRMaXN0ZW5lcicpO1xudmFyIFJlYWN0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluamVjdGlvbicpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJyk7XG52YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL1NlbGVjdEV2ZW50UGx1Z2luJyk7XG52YXIgU2VydmVyUmVhY3RSb290SW5kZXggPSByZXF1aXJlKCcuL1NlcnZlclJlYWN0Um9vdEluZGV4Jyk7XG52YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL1NpbXBsZUV2ZW50UGx1Z2luJyk7XG52YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSByZXF1aXJlKCcuL1NWR0RPTVByb3BlcnR5Q29uZmlnJyk7XG5cbnZhciBhbHJlYWR5SW5qZWN0ZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gaW5qZWN0KCkge1xuICBpZiAoYWxyZWFkeUluamVjdGVkKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBjdXJyZW50bHkgdHJ1ZSBiZWNhdXNlIHRoZXNlIGluamVjdGlvbnMgYXJlIHNoYXJlZCBiZXR3ZWVuXG4gICAgLy8gdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciBwYWNrYWdlLiBUaGV5IHNob3VsZCBiZSBidWlsdCBpbmRlcGVuZGVudGx5XG4gICAgLy8gYW5kIG5vdCBzaGFyZSBhbnkgaW5qZWN0aW9uIHN0YXRlLiBUaGVuIHRoaXMgcHJvYmxlbSB3aWxsIGJlIHNvbHZlZC5cbiAgICByZXR1cm47XG4gIH1cbiAgYWxyZWFkeUluamVjdGVkID0gdHJ1ZTtcblxuICBSZWFjdEluamVjdGlvbi5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyKFJlYWN0RXZlbnRMaXN0ZW5lcik7XG5cbiAgLyoqXG4gICAqIEluamVjdCBtb2R1bGVzIGZvciByZXNvbHZpbmcgRE9NIGhpZXJhcmNoeSBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuICAgKi9cbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcihEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcik7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEluc3RhbmNlSGFuZGxlKFJlYWN0SW5zdGFuY2VIYW5kbGVzKTtcbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0TW91bnQoUmVhY3RNb3VudCk7XG5cbiAgLyoqXG4gICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdpbnMgaW5jbHVkZWQgYnkgZGVmYXVsdCAod2l0aG91dCBoYXZpbmcgdG8gcmVxdWlyZVxuICAgKiB0aGVtKS5cbiAgICovXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7XG4gICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1Z2luLFxuICAgIEVudGVyTGVhdmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLFxuICAgIENoYW5nZUV2ZW50UGx1Z2luOiBDaGFuZ2VFdmVudFBsdWdpbixcbiAgICBTZWxlY3RFdmVudFBsdWdpbjogU2VsZWN0RXZlbnRQbHVnaW4sXG4gICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRFdmVudFBsdWdpblxuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5OYXRpdmVDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKFJlYWN0RE9NQ29tcG9uZW50KTtcblxuICBSZWFjdEluamVjdGlvbi5OYXRpdmVDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ2xhc3MuaW5qZWN0TWl4aW4oUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4pO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKEhUTUxET01Qcm9wZXJ0eUNvbmZpZyk7XG4gIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKFNWR0RPTVByb3BlcnR5Q29uZmlnKTtcblxuICBSZWFjdEluamVjdGlvbi5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudCgnbm9zY3JpcHQnKTtcblxuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uUm9vdEluZGV4LmluamVjdENyZWF0ZVJlYWN0Um9vdEluZGV4KEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IENsaWVudFJlYWN0Um9vdEluZGV4LmNyZWF0ZVJlYWN0Um9vdEluZGV4IDogU2VydmVyUmVhY3RSb290SW5kZXguY3JlYXRlUmVhY3RSb290SW5kZXgpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgdXJsID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmIHx8ICcnO1xuICAgIGlmICgvWz8mXXJlYWN0X3BlcmZcXGIvLnRlc3QodXJsKSkge1xuICAgICAgdmFyIFJlYWN0RGVmYXVsdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdFBlcmYnKTtcbiAgICAgIFJlYWN0RGVmYXVsdFBlcmYuc3RhcnQoKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluamVjdDogaW5qZWN0XG59O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JFWldaaGRXeDBTVzVxWldOMGFXOXVMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFJHVm1ZWFZzZEVsdWFtVmpkR2x2Ymx4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFSmxabTl5WlVsdWNIVjBSWFpsYm5SUWJIVm5hVzRnUFNCeVpYRjFhWEpsS0NjdUwwSmxabTl5WlVsdWNIVjBSWFpsYm5SUWJIVm5hVzRuS1R0Y2JuWmhjaUJEYUdGdVoyVkZkbVZ1ZEZCc2RXZHBiaUE5SUhKbGNYVnBjbVVvSnk0dlEyaGhibWRsUlhabGJuUlFiSFZuYVc0bktUdGNiblpoY2lCRGJHbGxiblJTWldGamRGSnZiM1JKYm1SbGVDQTlJSEpsY1hWcGNtVW9KeTR2UTJ4cFpXNTBVbVZoWTNSU2IyOTBTVzVrWlhnbktUdGNiblpoY2lCRVpXWmhkV3gwUlhabGJuUlFiSFZuYVc1UGNtUmxjaUE5SUhKbGNYVnBjbVVvSnk0dlJHVm1ZWFZzZEVWMlpXNTBVR3gxWjJsdVQzSmtaWEluS1R0Y2JuWmhjaUJGYm5SbGNreGxZWFpsUlhabGJuUlFiSFZuYVc0Z1BTQnlaWEYxYVhKbEtDY3VMMFZ1ZEdWeVRHVmhkbVZGZG1WdWRGQnNkV2RwYmljcE8xeHVkbUZ5SUVWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZSWGhsWTNWMGFXOXVSVzUyYVhKdmJtMWxiblFuS1R0Y2JuWmhjaUJJVkUxTVJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjZ1BTQnlaWEYxYVhKbEtDY3VMMGhVVFV4RVQwMVFjbTl3WlhKMGVVTnZibVpwWnljcE8xeHVkbUZ5SUZKbFlXTjBRbkp2ZDNObGNrTnZiWEJ2Ym1WdWRFMXBlR2x1SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVKeWIzZHpaWEpEYjIxd2IyNWxiblJOYVhocGJpY3BPMXh1ZG1GeUlGSmxZV04wUTI5dGNHOXVaVzUwUW5KdmQzTmxja1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOdmJYQnZibVZ1ZEVKeWIzZHpaWEpGYm5acGNtOXViV1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSR1ZtWVhWc2RFSmhkR05vYVc1blUzUnlZWFJsWjNrZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJHVm1ZWFZzZEVKaGRHTm9hVzVuVTNSeVlYUmxaM2tuS1R0Y2JuWmhjaUJTWldGamRFUlBUVU52YlhCdmJtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFVDAxRGIyMXdiMjVsYm5RbktUdGNiblpoY2lCU1pXRmpkRVJQVFZSbGVIUkRiMjF3YjI1bGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSRTlOVkdWNGRFTnZiWEJ2Ym1WdWRDY3BPMXh1ZG1GeUlGSmxZV04wUlhabGJuUk1hWE4wWlc1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZkbVZ1ZEV4cGMzUmxibVZ5SnlrN1hHNTJZWElnVW1WaFkzUkpibXBsWTNScGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBTVzVxWldOMGFXOXVKeWs3WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpKeWs3WEc1MllYSWdVbVZoWTNSTmIzVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOYjNWdWRDY3BPMXh1ZG1GeUlGSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0Z1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNG5LVHRjYm5aaGNpQlRaV3hsWTNSRmRtVnVkRkJzZFdkcGJpQTlJSEpsY1hWcGNtVW9KeTR2VTJWc1pXTjBSWFpsYm5SUWJIVm5hVzRuS1R0Y2JuWmhjaUJUWlhKMlpYSlNaV0ZqZEZKdmIzUkpibVJsZUNBOUlISmxjWFZwY21Vb0p5NHZVMlZ5ZG1WeVVtVmhZM1JTYjI5MFNXNWtaWGduS1R0Y2JuWmhjaUJUYVcxd2JHVkZkbVZ1ZEZCc2RXZHBiaUE5SUhKbGNYVnBjbVVvSnk0dlUybHRjR3hsUlhabGJuUlFiSFZuYVc0bktUdGNiblpoY2lCVFZrZEVUMDFRY205d1pYSjBlVU52Ym1acFp5QTlJSEpsY1hWcGNtVW9KeTR2VTFaSFJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjbktUdGNibHh1ZG1GeUlHRnNjbVZoWkhsSmJtcGxZM1JsWkNBOUlHWmhiSE5sTzF4dVhHNW1kVzVqZEdsdmJpQnBibXBsWTNRb0tTQjdYRzRnSUdsbUlDaGhiSEpsWVdSNVNXNXFaV04wWldRcElIdGNiaUFnSUNBdkx5QlVUMFJQT2lCVWFHbHpJR2x6SUdOMWNuSmxiblJzZVNCMGNuVmxJR0psWTJGMWMyVWdkR2hsYzJVZ2FXNXFaV04wYVc5dWN5QmhjbVVnYzJoaGNtVmtJR0psZEhkbFpXNWNiaUFnSUNBdkx5QjBhR1VnWTJ4cFpXNTBJR0Z1WkNCMGFHVWdjMlZ5ZG1WeUlIQmhZMnRoWjJVdUlGUm9aWGtnYzJodmRXeGtJR0psSUdKMWFXeDBJR2x1WkdWd1pXNWtaVzUwYkhsY2JpQWdJQ0F2THlCaGJtUWdibTkwSUhOb1lYSmxJR0Z1ZVNCcGJtcGxZM1JwYjI0Z2MzUmhkR1V1SUZSb1pXNGdkR2hwY3lCd2NtOWliR1Z0SUhkcGJHd2dZbVVnYzI5c2RtVmtMbHh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCaGJISmxZV1I1U1c1cVpXTjBaV1FnUFNCMGNuVmxPMXh1WEc0Z0lGSmxZV04wU1c1cVpXTjBhVzl1TGtWMlpXNTBSVzFwZEhSbGNpNXBibXBsWTNSU1pXRmpkRVYyWlc1MFRHbHpkR1Z1WlhJb1VtVmhZM1JGZG1WdWRFeHBjM1JsYm1WeUtUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNXFaV04wSUcxdlpIVnNaWE1nWm05eUlISmxjMjlzZG1sdVp5QkVUMDBnYUdsbGNtRnlZMmg1SUdGdVpDQndiSFZuYVc0Z2IzSmtaWEpwYm1jdVhHNGdJQ0FxTDF4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RmRtVnVkRkJzZFdkcGJraDFZaTVwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeUtFUmxabUYxYkhSRmRtVnVkRkJzZFdkcGJrOXlaR1Z5S1R0Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVJYWmxiblJRYkhWbmFXNUlkV0l1YVc1cVpXTjBTVzV6ZEdGdVkyVklZVzVrYkdVb1VtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTXBPMXh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVGZG1WdWRGQnNkV2RwYmtoMVlpNXBibXBsWTNSTmIzVnVkQ2hTWldGamRFMXZkVzUwS1R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVTI5dFpTQnBiWEJ2Y25SaGJuUWdaWFpsYm5RZ2NHeDFaMmx1Y3lCcGJtTnNkV1JsWkNCaWVTQmtaV1poZFd4MElDaDNhWFJvYjNWMElHaGhkbWx1WnlCMGJ5QnlaWEYxYVhKbFhHNGdJQ0FxSUhSb1pXMHBMbHh1SUNBZ0tpOWNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVSWFpsYm5SUWJIVm5hVzVJZFdJdWFXNXFaV04wUlhabGJuUlFiSFZuYVc1elFubE9ZVzFsS0h0Y2JpQWdJQ0JUYVcxd2JHVkZkbVZ1ZEZCc2RXZHBiam9nVTJsdGNHeGxSWFpsYm5SUWJIVm5hVzRzWEc0Z0lDQWdSVzUwWlhKTVpXRjJaVVYyWlc1MFVHeDFaMmx1T2lCRmJuUmxja3hsWVhabFJYWmxiblJRYkhWbmFXNHNYRzRnSUNBZ1EyaGhibWRsUlhabGJuUlFiSFZuYVc0NklFTm9ZVzVuWlVWMlpXNTBVR3gxWjJsdUxGeHVJQ0FnSUZObGJHVmpkRVYyWlc1MFVHeDFaMmx1T2lCVFpXeGxZM1JGZG1WdWRGQnNkV2RwYml4Y2JpQWdJQ0JDWldadmNtVkpibkIxZEVWMlpXNTBVR3gxWjJsdU9pQkNaV1p2Y21WSmJuQjFkRVYyWlc1MFVHeDFaMmx1WEc0Z0lIMHBPMXh1WEc0Z0lGSmxZV04wU1c1cVpXTjBhVzl1TGs1aGRHbDJaVU52YlhCdmJtVnVkQzVwYm1wbFkzUkhaVzVsY21salEyOXRjRzl1Wlc1MFEyeGhjM01vVW1WaFkzUkVUMDFEYjIxd2IyNWxiblFwTzF4dVhHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxrNWhkR2wyWlVOdmJYQnZibVZ1ZEM1cGJtcGxZM1JVWlhoMFEyOXRjRzl1Wlc1MFEyeGhjM01vVW1WaFkzUkVUMDFVWlhoMFEyOXRjRzl1Wlc1MEtUdGNibHh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVEYkdGemN5NXBibXBsWTNSTmFYaHBiaWhTWldGamRFSnliM2R6WlhKRGIyMXdiMjVsYm5STmFYaHBiaWs3WEc1Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVJFOU5VSEp2Y0dWeWRIa3VhVzVxWldOMFJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjb1NGUk5URVJQVFZCeWIzQmxjblI1UTI5dVptbG5LVHRjYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1UkU5TlVISnZjR1Z5ZEhrdWFXNXFaV04wUkU5TlVISnZjR1Z5ZEhsRGIyNW1hV2NvVTFaSFJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjcE8xeHVYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMa1Z0Y0hSNVEyOXRjRzl1Wlc1MExtbHVhbVZqZEVWdGNIUjVRMjl0Y0c5dVpXNTBLQ2R1YjNOamNtbHdkQ2NwTzF4dVhHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxsVndaR0YwWlhNdWFXNXFaV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0b1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2YmlrN1hHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxsVndaR0YwWlhNdWFXNXFaV04wUW1GMFkyaHBibWRUZEhKaGRHVm5lU2hTWldGamRFUmxabUYxYkhSQ1lYUmphR2x1WjFOMGNtRjBaV2Q1S1R0Y2JseHVJQ0JTWldGamRFbHVhbVZqZEdsdmJpNVNiMjkwU1c1a1pYZ3VhVzVxWldOMFEzSmxZWFJsVW1WaFkzUlNiMjkwU1c1a1pYZ29SWGhsWTNWMGFXOXVSVzUyYVhKdmJtMWxiblF1WTJGdVZYTmxSRTlOSUQ4Z1EyeHBaVzUwVW1WaFkzUlNiMjkwU1c1a1pYZ3VZM0psWVhSbFVtVmhZM1JTYjI5MFNXNWtaWGdnT2lCVFpYSjJaWEpTWldGamRGSnZiM1JKYm1SbGVDNWpjbVZoZEdWU1pXRmpkRkp2YjNSSmJtUmxlQ2s3WEc1Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVEyOXRjRzl1Wlc1MExtbHVhbVZqZEVWdWRtbHliMjV0Wlc1MEtGSmxZV04wUTI5dGNHOXVaVzUwUW5KdmQzTmxja1Z1ZG1seWIyNXRaVzUwS1R0Y2JseHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIWmhjaUIxY213Z1BTQkZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQzVqWVc1VmMyVkVUMDBnSmlZZ2QybHVaRzkzTG14dlkyRjBhVzl1TG1oeVpXWWdmSHdnSnljN1hHNGdJQ0FnYVdZZ0tDOWJQeVpkY21WaFkzUmZjR1Z5Wmx4Y1lpOHVkR1Z6ZENoMWNtd3BLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1VtVmhZM1JFWldaaGRXeDBVR1Z5WmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVpXWmhkV3gwVUdWeVppY3BPMXh1SUNBZ0lDQWdVbVZoWTNSRVpXWmhkV3gwVUdWeVppNXpkR0Z5ZENncE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlIdGNiaUFnYVc1cVpXTjBPaUJwYm1wbFkzUmNibjA3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFbGVtZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydmb3InXSgncmVhY3QuZWxlbWVudCcpIHx8IDB4ZWFjNztcblxudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7fSk7XG4gICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0cnVlO1xuICB9IGNhdGNoICh4KSB7XG4gICAgLy8gSUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3BlcnR5XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgUmVhY3QgZWxlbWVudHMuIFRoaXMgaXMgb25seSB1c2VkIHRvIG1ha2UgdGhpc1xuICogd29yayB3aXRoIGEgZHluYW1pYyBpbnN0YW5jZW9mIGNoZWNrLiBOb3RoaW5nIHNob3VsZCBsaXZlIG9uIHRoaXMgcHJvdG90eXBlLlxuICpcbiAqIEBwYXJhbSB7Kn0gdHlwZVxuICogQHBhcmFtIHsqfSBrZXlcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXG4gKiBAcGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXNcbiAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2VcbiAqIGNhbiB3YXJuLiBXZSB3YW50IHRvIGdldCByaWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93XG4gKiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJlIG5vXG4gKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG4gKiBAcGFyYW0geyp9IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90aGVyd2lzZSlcbiAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0geyp9IG93bmVyXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7XG4gICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuXG4gICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiByZWYsXG4gICAgcHJvcHM6IHByb3BzLFxuXG4gICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cbiAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXG4gICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9yZSBzbyB0aGF0IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC5cbiAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXG4gICAgLy8gY29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXG4gICAgZWxlbWVudC5fc3RvcmUgPSB7fTtcblxuICAgIC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cbiAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNlbGZcbiAgICAgIH0pO1xuICAgICAgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcbiAgICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogc291cmNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICBlbGVtZW50Ll9zZWxmID0gc2VsZjtcbiAgICAgIGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTtcbiAgICB9XG4gICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcbiAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5SZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTtcblxuICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG4gIHZhciBwcm9wcyA9IHt9O1xuXG4gIHZhciBrZXkgPSBudWxsO1xuICB2YXIgcmVmID0gbnVsbDtcbiAgdmFyIHNlbGYgPSBudWxsO1xuICB2YXIgc291cmNlID0gbnVsbDtcblxuICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICByZWYgPSBjb25maWcucmVmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLnJlZjtcbiAgICBrZXkgPSBjb25maWcua2V5ID09PSB1bmRlZmluZWQgPyBudWxsIDogJycgKyBjb25maWcua2V5O1xuICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjtcbiAgICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zb3VyY2U7XG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzW3Byb3BOYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbn07XG5cblJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgdmFyIGZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5cGUpO1xuICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5kIHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmVcbiAgLy8gZWFzaWx5IGFjY2Vzc2VkIG9uIGVsZW1lbnRzLiBFLmcuIGA8Rm9vIC8+LnR5cGUgPT09IEZvb2AuXG4gIC8vIFRoaXMgc2hvdWxkIG5vdCBiZSBuYW1lZCBgY29uc3RydWN0b3JgIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgZnVuY3Rpb25cbiAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVuIGJlIGEgY29uc3RydWN0b3IuXG4gIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3NlZFxuICBmYWN0b3J5LnR5cGUgPSB0eXBlO1xuICByZXR1cm4gZmFjdG9yeTtcbn07XG5cblJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwgbmV3S2V5KSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVudC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7XG5cbiAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59O1xuXG5SZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlUHJvcHMgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwgbmV3UHJvcHMpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBvbGRFbGVtZW50LmtleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG5ld1Byb3BzKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIElmIHRoZSBrZXkgb24gdGhlIG9yaWdpbmFsIGlzIHZhbGlkLCB0aGVuIHRoZSBjbG9uZSBpcyB2YWxpZFxuICAgIG5ld0VsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IG9sZEVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZDtcbiAgfVxuXG4gIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTtcblxuICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29waWVkXG4gIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgZWxlbWVudC5wcm9wcyk7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIga2V5ID0gZWxlbWVudC5rZXk7XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAgLy8gU2VsZiBpcyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHByZXNlcnZlZC5cbiAgdmFyIHNlbGYgPSBlbGVtZW50Ll9zZWxmO1xuICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXG4gIC8vIHRyYW5zcGlsZXIsIGFuZCB0aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGVcbiAgLy8gdHJ1ZSBvd25lci5cbiAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtcblxuICAvLyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuXG4gIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIGlmIChjb25maWcucmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5rZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAgIH1cbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuICogQGZpbmFsXG4gKi9cblJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JGYkdWdFpXNTBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TkMweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBSV3hsYldWdWRGeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU4xY25KbGJuUlBkMjVsY2ljcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNWNiaTh2SUZSb1pTQlRlVzFpYjJ3Z2RYTmxaQ0IwYnlCMFlXY2dkR2hsSUZKbFlXTjBSV3hsYldWdWRDQjBlWEJsTGlCSlppQjBhR1Z5WlNCcGN5QnVieUJ1WVhScGRtVWdVM2x0WW05c1hHNHZMeUJ1YjNJZ2NHOXNlV1pwYkd3c0lIUm9aVzRnWVNCd2JHRnBiaUJ1ZFcxaVpYSWdhWE1nZFhObFpDQm1iM0lnY0dWeVptOXliV0Z1WTJVdVhHNTJZWElnVWtWQlExUmZSVXhGVFVWT1ZGOVVXVkJGSUQwZ2RIbHdaVzltSUZONWJXSnZiQ0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUJUZVcxaWIyeGJKMlp2Y2lkZElDWW1JRk41YldKdmJGc25abTl5SjEwb0ozSmxZV04wTG1Wc1pXMWxiblFuS1NCOGZDQXdlR1ZoWXpjN1hHNWNiblpoY2lCU1JWTkZVbFpGUkY5UVVrOVFVeUE5SUh0Y2JpQWdhMlY1T2lCMGNuVmxMRnh1SUNCeVpXWTZJSFJ5ZFdVc1hHNGdJRjlmYzJWc1pqb2dkSEoxWlN4Y2JpQWdYMTl6YjNWeVkyVTZJSFJ5ZFdWY2JuMDdYRzVjYm5aaGNpQmpZVzVFWldacGJtVlFjbTl3WlhKMGVTQTlJR1poYkhObE8xeHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnZEhKNUlIdGNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29lMzBzSUNkNEp5d2dlMzBwTzF4dUlDQWdJR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVJRDBnZEhKMVpUdGNiaUFnZlNCallYUmphQ0FvZUNrZ2UxeHVJQ0FnSUM4dklFbEZJSGRwYkd3Z1ptRnBiQ0J2YmlCa1pXWnBibVZRY205d1pYSjBlVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUW1GelpTQmpiMjV6ZEhKMVkzUnZjaUJtYjNJZ1lXeHNJRkpsWVdOMElHVnNaVzFsYm5SekxpQlVhR2x6SUdseklHOXViSGtnZFhObFpDQjBieUJ0WVd0bElIUm9hWE5jYmlBcUlIZHZjbXNnZDJsMGFDQmhJR1I1Ym1GdGFXTWdhVzV6ZEdGdVkyVnZaaUJqYUdWamF5NGdUbTkwYUdsdVp5QnphRzkxYkdRZ2JHbDJaU0J2YmlCMGFHbHpJSEJ5YjNSdmRIbHdaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdleXA5SUhSNWNHVmNiaUFxSUVCd1lYSmhiU0I3S24wZ2EyVjVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaM3h2WW1wbFkzUjlJSEpsWmx4dUlDb2dRSEJoY21GdElIc3FmU0J6Wld4bUlFRWdLblJsYlhCdmNtRnllU29nYUdWc2NHVnlJSFJ2SUdSbGRHVmpkQ0J3YkdGalpYTWdkMmhsY21VZ1lIUm9hWE5nSUdselhHNGdLaUJrYVdabVpYSmxiblFnWm5KdmJTQjBhR1VnWUc5M2JtVnlZQ0IzYUdWdUlGSmxZV04wTG1OeVpXRjBaVVZzWlcxbGJuUWdhWE1nWTJGc2JHVmtMQ0J6YnlCMGFHRjBJSGRsWEc0Z0tpQmpZVzRnZDJGeWJpNGdWMlVnZDJGdWRDQjBieUJuWlhRZ2NtbGtJRzltSUc5M2JtVnlJR0Z1WkNCeVpYQnNZV05sSUhOMGNtbHVaeUJnY21WbVlITWdkMmwwYUNCaGNuSnZkMXh1SUNvZ1puVnVZM1JwYjI1ekxDQmhibVFnWVhNZ2JHOXVaeUJoY3lCZ2RHaHBjMkFnWVc1a0lHOTNibVZ5SUdGeVpTQjBhR1VnYzJGdFpTd2dkR2hsY21VZ2QybHNiQ0JpWlNCdWIxeHVJQ29nWTJoaGJtZGxJR2x1SUdKbGFHRjJhVzl5TGx4dUlDb2dRSEJoY21GdElIc3FmU0J6YjNWeVkyVWdRVzRnWVc1dWIzUmhkR2x2YmlCdlltcGxZM1FnS0dGa1pHVmtJR0o1SUdFZ2RISmhibk53YVd4bGNpQnZjaUJ2ZEdobGNuZHBjMlVwWEc0Z0tpQnBibVJwWTJGMGFXNW5JR1pwYkdWdVlXMWxMQ0JzYVc1bElHNTFiV0psY2l3Z1lXNWtMMjl5SUc5MGFHVnlJR2x1Wm05eWJXRjBhVzl1TGx4dUlDb2dRSEJoY21GdElIc3FmU0J2ZDI1bGNseHVJQ29nUUhCaGNtRnRJSHNxZlNCd2NtOXdjMXh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblFnUFNCbWRXNWpkR2x2YmlBb2RIbHdaU3dnYTJWNUxDQnlaV1lzSUhObGJHWXNJSE52ZFhKalpTd2diM2R1WlhJc0lIQnliM0J6S1NCN1hHNGdJSFpoY2lCbGJHVnRaVzUwSUQwZ2UxeHVJQ0FnSUM4dklGUm9hWE1nZEdGbklHRnNiRzkzSUhWeklIUnZJSFZ1YVhGMVpXeDVJR2xrWlc1MGFXWjVJSFJvYVhNZ1lYTWdZU0JTWldGamRDQkZiR1Z0Wlc1MFhHNGdJQ0FnSkNSMGVYQmxiMlk2SUZKRlFVTlVYMFZNUlUxRlRsUmZWRmxRUlN4Y2JseHVJQ0FnSUM4dklFSjFhV3gwTFdsdUlIQnliM0JsY25ScFpYTWdkR2hoZENCaVpXeHZibWNnYjI0Z2RHaGxJR1ZzWlcxbGJuUmNiaUFnSUNCMGVYQmxPaUIwZVhCbExGeHVJQ0FnSUd0bGVUb2dhMlY1TEZ4dUlDQWdJSEpsWmpvZ2NtVm1MRnh1SUNBZ0lIQnliM0J6T2lCd2NtOXdjeXhjYmx4dUlDQWdJQzh2SUZKbFkyOXlaQ0IwYUdVZ1kyOXRjRzl1Wlc1MElISmxjM0J2Ym5OcFlteGxJR1p2Y2lCamNtVmhkR2x1WnlCMGFHbHpJR1ZzWlcxbGJuUXVYRzRnSUNBZ1gyOTNibVZ5T2lCdmQyNWxjbHh1SUNCOU8xeHVYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdMeThnVkdobElIWmhiR2xrWVhScGIyNGdabXhoWnlCcGN5QmpkWEp5Wlc1MGJIa2diWFYwWVhScGRtVXVJRmRsSUhCMWRDQnBkQ0J2Ymx4dUlDQWdJQzh2SUdGdUlHVjRkR1Z5Ym1Gc0lHSmhZMnRwYm1jZ2MzUnZjbVVnYzI4Z2RHaGhkQ0IzWlNCallXNGdabkpsWlhwbElIUm9aU0IzYUc5c1pTQnZZbXBsWTNRdVhHNGdJQ0FnTHk4Z1ZHaHBjeUJqWVc0Z1ltVWdjbVZ3YkdGalpXUWdkMmwwYUNCaElGZGxZV3ROWVhBZ2IyNWpaU0IwYUdWNUlHRnlaU0JwYlhCc1pXMWxiblJsWkNCcGJseHVJQ0FnSUM4dklHTnZiVzF2Ym14NUlIVnpaV1FnWkdWMlpXeHZjRzFsYm5RZ1pXNTJhWEp2Ym0xbGJuUnpMbHh1SUNBZ0lHVnNaVzFsYm5RdVgzTjBiM0psSUQwZ2UzMDdYRzVjYmlBZ0lDQXZMeUJVYnlCdFlXdGxJR052YlhCaGNtbHVaeUJTWldGamRFVnNaVzFsYm5SeklHVmhjMmxsY2lCbWIzSWdkR1Z6ZEdsdVp5QndkWEp3YjNObGN5d2dkMlVnYldGclpWeHVJQ0FnSUM4dklIUm9aU0IyWVd4cFpHRjBhVzl1SUdac1lXY2dibTl1TFdWdWRXMWxjbUZpYkdVZ0tIZG9aWEpsSUhCdmMzTnBZbXhsTENCM2FHbGphQ0J6YUc5MWJHUmNiaUFnSUNBdkx5QnBibU5zZFdSbElHVjJaWEo1SUdWdWRtbHliMjV0Wlc1MElIZGxJSEoxYmlCMFpYTjBjeUJwYmlrc0lITnZJSFJvWlNCMFpYTjBJR1p5WVcxbGQyOXlhMXh1SUNBZ0lDOHZJR2xuYm05eVpYTWdhWFF1WEc0Z0lDQWdhV1lnS0dOaGJrUmxabWx1WlZCeWIzQmxjblI1S1NCN1hHNGdJQ0FnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29aV3hsYldWdWRDNWZjM1J2Y21Vc0lDZDJZV3hwWkdGMFpXUW5MQ0I3WEc0Z0lDQWdJQ0FnSUdOdmJtWnBaM1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQjNjbWwwWVdKc1pUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ2RtRnNkV1U2SUdaaGJITmxYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQzh2SUhObGJHWWdZVzVrSUhOdmRYSmpaU0JoY21VZ1JFVldJRzl1YkhrZ2NISnZjR1Z5ZEdsbGN5NWNiaUFnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hsYkdWdFpXNTBMQ0FuWDNObGJHWW5MQ0I3WEc0Z0lDQWdJQ0FnSUdOdmJtWnBaM1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQjNjbWwwWVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lIWmhiSFZsT2lCelpXeG1YRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQzh2SUZSM2J5QmxiR1Z0Wlc1MGN5QmpjbVZoZEdWa0lHbHVJSFIzYnlCa2FXWm1aWEpsYm5RZ2NHeGhZMlZ6SUhOb2IzVnNaQ0JpWlNCamIyNXphV1JsY21Wa1hHNGdJQ0FnSUNBdkx5QmxjWFZoYkNCbWIzSWdkR1Z6ZEdsdVp5QndkWEp3YjNObGN5QmhibVFnZEdobGNtVm1iM0psSUhkbElHaHBaR1VnYVhRZ1puSnZiU0JsYm5WdFpYSmhkR2x2Ymk1Y2JpQWdJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaGxiR1Z0Wlc1MExDQW5YM052ZFhKalpTY3NJSHRjYmlBZ0lDQWdJQ0FnWTI5dVptbG5kWEpoWW14bE9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ1pXNTFiV1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lIZHlhWFJoWW14bE9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ2RtRnNkV1U2SUhOdmRYSmpaVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHVnNaVzFsYm5RdVgzTjBiM0psTG5aaGJHbGtZWFJsWkNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnWld4bGJXVnVkQzVmYzJWc1ppQTlJSE5sYkdZN1hHNGdJQ0FnSUNCbGJHVnRaVzUwTGw5emIzVnlZMlVnUFNCemIzVnlZMlU3WEc0Z0lDQWdmVnh1SUNBZ0lFOWlhbVZqZEM1bWNtVmxlbVVvWld4bGJXVnVkQzV3Y205d2N5azdYRzRnSUNBZ1QySnFaV04wTG1aeVpXVjZaU2hsYkdWdFpXNTBLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJsYkdWdFpXNTBPMXh1ZlR0Y2JseHVVbVZoWTNSRmJHVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUWdQU0JtZFc1amRHbHZiaUFvZEhsd1pTd2dZMjl1Wm1sbkxDQmphR2xzWkhKbGJpa2dlMXh1SUNCMllYSWdjSEp2Y0U1aGJXVTdYRzVjYmlBZ0x5OGdVbVZ6WlhKMlpXUWdibUZ0WlhNZ1lYSmxJR1Y0ZEhKaFkzUmxaRnh1SUNCMllYSWdjSEp2Y0hNZ1BTQjdmVHRjYmx4dUlDQjJZWElnYTJWNUlEMGdiblZzYkR0Y2JpQWdkbUZ5SUhKbFppQTlJRzUxYkd3N1hHNGdJSFpoY2lCelpXeG1JRDBnYm5Wc2JEdGNiaUFnZG1GeUlITnZkWEpqWlNBOUlHNTFiR3c3WEc1Y2JpQWdhV1lnS0dOdmJtWnBaeUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdjbVZtSUQwZ1kyOXVabWxuTG5KbFppQTlQVDBnZFc1a1pXWnBibVZrSUQ4Z2JuVnNiQ0E2SUdOdmJtWnBaeTV5WldZN1hHNGdJQ0FnYTJWNUlEMGdZMjl1Wm1sbkxtdGxlU0E5UFQwZ2RXNWtaV1pwYm1Wa0lEOGdiblZzYkNBNklDY25JQ3NnWTI5dVptbG5MbXRsZVR0Y2JpQWdJQ0J6Wld4bUlEMGdZMjl1Wm1sbkxsOWZjMlZzWmlBOVBUMGdkVzVrWldacGJtVmtJRDhnYm5Wc2JDQTZJR052Ym1acFp5NWZYM05sYkdZN1hHNGdJQ0FnYzI5MWNtTmxJRDBnWTI5dVptbG5MbDlmYzI5MWNtTmxJRDA5UFNCMWJtUmxabWx1WldRZ1B5QnVkV3hzSURvZ1kyOXVabWxuTGw5ZmMyOTFjbU5sTzF4dUlDQWdJQzh2SUZKbGJXRnBibWx1WnlCd2NtOXdaWEowYVdWeklHRnlaU0JoWkdSbFpDQjBieUJoSUc1bGR5QndjbTl3Y3lCdlltcGxZM1JjYmlBZ0lDQm1iM0lnS0hCeWIzQk9ZVzFsSUdsdUlHTnZibVpwWnlrZ2UxeHVJQ0FnSUNBZ2FXWWdLR052Ym1acFp5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2NtOXdUbUZ0WlNrZ0ppWWdJVkpGVTBWU1ZrVkVYMUJTVDFCVExtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQndjbTl3YzF0d2NtOXdUbUZ0WlYwZ1BTQmpiMjVtYVdkYmNISnZjRTVoYldWZE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHZJRU5vYVd4a2NtVnVJR05oYmlCaVpTQnRiM0psSUhSb1lXNGdiMjVsSUdGeVozVnRaVzUwTENCaGJtUWdkR2h2YzJVZ1lYSmxJSFJ5WVc1elptVnljbVZrSUc5dWRHOWNiaUFnTHk4Z2RHaGxJRzVsZDJ4NUlHRnNiRzlqWVhSbFpDQndjbTl3Y3lCdlltcGxZM1F1WEc0Z0lIWmhjaUJqYUdsc1pISmxia3hsYm1kMGFDQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dMU0F5TzF4dUlDQnBaaUFvWTJocGJHUnlaVzVNWlc1bmRHZ2dQVDA5SURFcElIdGNiaUFnSUNCd2NtOXdjeTVqYUdsc1pISmxiaUE5SUdOb2FXeGtjbVZ1TzF4dUlDQjlJR1ZzYzJVZ2FXWWdLR05vYVd4a2NtVnVUR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJSFpoY2lCamFHbHNaRUZ5Y21GNUlEMGdRWEp5WVhrb1kyaHBiR1J5Wlc1TVpXNW5kR2dwTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnWTJocGJHUnlaVzVNWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyaHBiR1JCY25KaGVWdHBYU0E5SUdGeVozVnRaVzUwYzF0cElDc2dNbDA3WEc0Z0lDQWdmVnh1SUNBZ0lIQnliM0J6TG1Ob2FXeGtjbVZ1SUQwZ1kyaHBiR1JCY25KaGVUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGMyOXNkbVVnWkdWbVlYVnNkQ0J3Y205d2MxeHVJQ0JwWmlBb2RIbHdaU0FtSmlCMGVYQmxMbVJsWm1GMWJIUlFjbTl3Y3lrZ2UxeHVJQ0FnSUhaaGNpQmtaV1poZFd4MFVISnZjSE1nUFNCMGVYQmxMbVJsWm1GMWJIUlFjbTl3Y3p0Y2JpQWdJQ0JtYjNJZ0tIQnliM0JPWVcxbElHbHVJR1JsWm1GMWJIUlFjbTl3Y3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQndjbTl3YzF0d2NtOXdUbUZ0WlYwZ1BUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBZ0lIQnliM0J6VzNCeWIzQk9ZVzFsWFNBOUlHUmxabUYxYkhSUWNtOXdjMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJRkpsWVdOMFJXeGxiV1Z1ZENoMGVYQmxMQ0JyWlhrc0lISmxaaXdnYzJWc1ppd2djMjkxY21ObExDQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MExDQndjbTl3Y3lrN1hHNTlPMXh1WEc1U1pXRmpkRVZzWlcxbGJuUXVZM0psWVhSbFJtRmpkRzl5ZVNBOUlHWjFibU4wYVc5dUlDaDBlWEJsS1NCN1hHNGdJSFpoY2lCbVlXTjBiM0o1SUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5RdVltbHVaQ2h1ZFd4c0xDQjBlWEJsS1R0Y2JpQWdMeThnUlhod2IzTmxJSFJvWlNCMGVYQmxJRzl1SUhSb1pTQm1ZV04wYjNKNUlHRnVaQ0IwYUdVZ2NISnZkRzkwZVhCbElITnZJSFJvWVhRZ2FYUWdZMkZ1SUdKbFhHNGdJQzh2SUdWaGMybHNlU0JoWTJObGMzTmxaQ0J2YmlCbGJHVnRaVzUwY3k0Z1JTNW5MaUJnUEVadmJ5QXZQaTUwZVhCbElEMDlQU0JHYjI5Z0xseHVJQ0F2THlCVWFHbHpJSE5vYjNWc1pDQnViM1FnWW1VZ2JtRnRaV1FnWUdOdmJuTjBjblZqZEc5eVlDQnphVzVqWlNCMGFHbHpJRzFoZVNCdWIzUWdZbVVnZEdobElHWjFibU4wYVc5dVhHNGdJQzh2SUhSb1lYUWdZM0psWVhSbFpDQjBhR1VnWld4bGJXVnVkQ3dnWVc1a0lHbDBJRzFoZVNCdWIzUWdaWFpsYmlCaVpTQmhJR052Ym5OMGNuVmpkRzl5TGx4dUlDQXZMeUJNWldkaFkza2dhRzl2YXlCVVQwUlBPaUJYWVhKdUlHbG1JSFJvYVhNZ2FYTWdZV05qWlhOelpXUmNiaUFnWm1GamRHOXllUzUwZVhCbElEMGdkSGx3WlR0Y2JpQWdjbVYwZFhKdUlHWmhZM1J2Y25rN1hHNTlPMXh1WEc1U1pXRmpkRVZzWlcxbGJuUXVZMnh2Ym1WQmJtUlNaWEJzWVdObFMyVjVJRDBnWm5WdVkzUnBiMjRnS0c5c1pFVnNaVzFsYm5Rc0lHNWxkMHRsZVNrZ2UxeHVJQ0IyWVhJZ2JtVjNSV3hsYldWdWRDQTlJRkpsWVdOMFJXeGxiV1Z1ZENodmJHUkZiR1Z0Wlc1MExuUjVjR1VzSUc1bGQwdGxlU3dnYjJ4a1JXeGxiV1Z1ZEM1eVpXWXNJRzlzWkVWc1pXMWxiblF1WDNObGJHWXNJRzlzWkVWc1pXMWxiblF1WDNOdmRYSmpaU3dnYjJ4a1JXeGxiV1Z1ZEM1ZmIzZHVaWElzSUc5c1pFVnNaVzFsYm5RdWNISnZjSE1wTzF4dVhHNGdJSEpsZEhWeWJpQnVaWGRGYkdWdFpXNTBPMXh1ZlR0Y2JseHVVbVZoWTNSRmJHVnRaVzUwTG1Oc2IyNWxRVzVrVW1Wd2JHRmpaVkJ5YjNCeklEMGdablZ1WTNScGIyNGdLRzlzWkVWc1pXMWxiblFzSUc1bGQxQnliM0J6S1NCN1hHNGdJSFpoY2lCdVpYZEZiR1Z0Wlc1MElEMGdVbVZoWTNSRmJHVnRaVzUwS0c5c1pFVnNaVzFsYm5RdWRIbHdaU3dnYjJ4a1JXeGxiV1Z1ZEM1clpYa3NJRzlzWkVWc1pXMWxiblF1Y21WbUxDQnZiR1JGYkdWdFpXNTBMbDl6Wld4bUxDQnZiR1JGYkdWdFpXNTBMbDl6YjNWeVkyVXNJRzlzWkVWc1pXMWxiblF1WDI5M2JtVnlMQ0J1WlhkUWNtOXdjeWs3WEc1Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBdkx5QkpaaUIwYUdVZ2EyVjVJRzl1SUhSb1pTQnZjbWxuYVc1aGJDQnBjeUIyWVd4cFpDd2dkR2hsYmlCMGFHVWdZMnh2Ym1VZ2FYTWdkbUZzYVdSY2JpQWdJQ0J1WlhkRmJHVnRaVzUwTGw5emRHOXlaUzUyWVd4cFpHRjBaV1FnUFNCdmJHUkZiR1Z0Wlc1MExsOXpkRzl5WlM1MllXeHBaR0YwWldRN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2JtVjNSV3hsYldWdWREdGNibjA3WEc1Y2JsSmxZV04wUld4bGJXVnVkQzVqYkc5dVpVVnNaVzFsYm5RZ1BTQm1kVzVqZEdsdmJpQW9aV3hsYldWdWRDd2dZMjl1Wm1sbkxDQmphR2xzWkhKbGJpa2dlMXh1SUNCMllYSWdjSEp2Y0U1aGJXVTdYRzVjYmlBZ0x5OGdUM0pwWjJsdVlXd2djSEp2Y0hNZ1lYSmxJR052Y0dsbFpGeHVJQ0IyWVhJZ2NISnZjSE1nUFNCaGMzTnBaMjRvZTMwc0lHVnNaVzFsYm5RdWNISnZjSE1wTzF4dVhHNGdJQzh2SUZKbGMyVnlkbVZrSUc1aGJXVnpJR0Z5WlNCbGVIUnlZV04wWldSY2JpQWdkbUZ5SUd0bGVTQTlJR1ZzWlcxbGJuUXVhMlY1TzF4dUlDQjJZWElnY21WbUlEMGdaV3hsYldWdWRDNXlaV1k3WEc0Z0lDOHZJRk5sYkdZZ2FYTWdjSEpsYzJWeWRtVmtJSE5wYm1ObElIUm9aU0J2ZDI1bGNpQnBjeUJ3Y21WelpYSjJaV1F1WEc0Z0lIWmhjaUJ6Wld4bUlEMGdaV3hsYldWdWRDNWZjMlZzWmp0Y2JpQWdMeThnVTI5MWNtTmxJR2x6SUhCeVpYTmxjblpsWkNCemFXNWpaU0JqYkc5dVpVVnNaVzFsYm5RZ2FYTWdkVzVzYVd0bGJIa2dkRzhnWW1VZ2RHRnlaMlYwWldRZ1lua2dZVnh1SUNBdkx5QjBjbUZ1YzNCcGJHVnlMQ0JoYm1RZ2RHaGxJRzl5YVdkcGJtRnNJSE52ZFhKalpTQnBjeUJ3Y205aVlXSnNlU0JoSUdKbGRIUmxjaUJwYm1ScFkyRjBiM0lnYjJZZ2RHaGxYRzRnSUM4dklIUnlkV1VnYjNkdVpYSXVYRzRnSUhaaGNpQnpiM1Z5WTJVZ1BTQmxiR1Z0Wlc1MExsOXpiM1Z5WTJVN1hHNWNiaUFnTHk4Z1QzZHVaWElnZDJsc2JDQmlaU0J3Y21WelpYSjJaV1FzSUhWdWJHVnpjeUJ5WldZZ2FYTWdiM1psY25KcFpHUmxibHh1SUNCMllYSWdiM2R1WlhJZ1BTQmxiR1Z0Wlc1MExsOXZkMjVsY2p0Y2JseHVJQ0JwWmlBb1kyOXVabWxuSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0JwWmlBb1kyOXVabWxuTG5KbFppQWhQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNBdkx5QlRhV3hsYm5Sc2VTQnpkR1ZoYkNCMGFHVWdjbVZtSUdaeWIyMGdkR2hsSUhCaGNtVnVkQzVjYmlBZ0lDQWdJSEpsWmlBOUlHTnZibVpwWnk1eVpXWTdYRzRnSUNBZ0lDQnZkMjVsY2lBOUlGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoamIyNW1hV2N1YTJWNUlDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUd0bGVTQTlJQ2NuSUNzZ1kyOXVabWxuTG10bGVUdGNiaUFnSUNCOVhHNGdJQ0FnTHk4Z1VtVnRZV2x1YVc1bklIQnliM0JsY25ScFpYTWdiM1psY25KcFpHVWdaWGhwYzNScGJtY2djSEp2Y0hOY2JpQWdJQ0JtYjNJZ0tIQnliM0JPWVcxbElHbHVJR052Ym1acFp5a2dlMXh1SUNBZ0lDQWdhV1lnS0dOdmJtWnBaeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3VG1GdFpTa2dKaVlnSVZKRlUwVlNWa1ZFWDFCU1QxQlRMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0J3Y205d2MxdHdjbTl3VG1GdFpWMGdQU0JqYjI1bWFXZGJjSEp2Y0U1aGJXVmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzh2SUVOb2FXeGtjbVZ1SUdOaGJpQmlaU0J0YjNKbElIUm9ZVzRnYjI1bElHRnlaM1Z0Wlc1MExDQmhibVFnZEdodmMyVWdZWEpsSUhSeVlXNXpabVZ5Y21Wa0lHOXVkRzljYmlBZ0x5OGdkR2hsSUc1bGQyeDVJR0ZzYkc5allYUmxaQ0J3Y205d2N5QnZZbXBsWTNRdVhHNGdJSFpoY2lCamFHbHNaSEpsYmt4bGJtZDBhQ0E5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnTFNBeU8xeHVJQ0JwWmlBb1kyaHBiR1J5Wlc1TVpXNW5kR2dnUFQwOUlERXBJSHRjYmlBZ0lDQndjbTl3Y3k1amFHbHNaSEpsYmlBOUlHTm9hV3hrY21WdU8xeHVJQ0I5SUdWc2MyVWdhV1lnS0dOb2FXeGtjbVZ1VEdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUhaaGNpQmphR2xzWkVGeWNtRjVJRDBnUVhKeVlYa29ZMmhwYkdSeVpXNU1aVzVuZEdncE8xeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1kyaHBiR1J5Wlc1TVpXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMmhwYkdSQmNuSmhlVnRwWFNBOUlHRnlaM1Z0Wlc1MGMxdHBJQ3NnTWwwN1hHNGdJQ0FnZlZ4dUlDQWdJSEJ5YjNCekxtTm9hV3hrY21WdUlEMGdZMmhwYkdSQmNuSmhlVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJTWldGamRFVnNaVzFsYm5Rb1pXeGxiV1Z1ZEM1MGVYQmxMQ0JyWlhrc0lISmxaaXdnYzJWc1ppd2djMjkxY21ObExDQnZkMjVsY2l3Z2NISnZjSE1wTzF4dWZUdGNibHh1THlvcVhHNGdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJRzlpYW1WamRGeHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUJnYjJKcVpXTjBZQ0JwY3lCaElIWmhiR2xrSUdOdmJYQnZibVZ1ZEM1Y2JpQXFJRUJtYVc1aGJGeHVJQ292WEc1U1pXRmpkRVZzWlcxbGJuUXVhWE5XWVd4cFpFVnNaVzFsYm5RZ1BTQm1kVzVqZEdsdmJpQW9iMkpxWldOMEtTQjdYRzRnSUhKbGRIVnliaUIwZVhCbGIyWWdiMkpxWldOMElEMDlQU0FuYjJKcVpXTjBKeUFtSmlCdlltcGxZM1FnSVQwOUlHNTFiR3dnSmlZZ2IySnFaV04wTGlRa2RIbHdaVzltSUQwOVBTQlNSVUZEVkY5RlRFVk5SVTVVWDFSWlVFVTdYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUld4bGJXVnVkRHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFbGVtZW50VmFsaWRhdG9yXG4gKi9cblxuLyoqXG4gKiBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCBhIGVsZW1lbnQgZmFjdG9yeVxuICogd2hpY2ggdmFsaWRhdGVzIHRoZSBwcm9wcyBwYXNzZWQgdG8gdGhlIGVsZW1lbnQuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmVcbiAqIHVzZWQgb25seSBpbiBERVYgYW5kIGNvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgc3RhdGljIHR5cGUgY2hlY2tlciBmb3IgbGFuZ3VhZ2VzXG4gKiB0aGF0IHN1cHBvcnQgaXQuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25zJyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzJyk7XG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG5cbnZhciBnZXRJdGVyYXRvckZuID0gcmVxdWlyZSgnLi9nZXRJdGVyYXRvckZuJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkge1xuICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cbiAqIHVwZGF0ZXMuXG4gKi9cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuXG4vKipcbiAqIFdhcm4gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC5cbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXG4gKiBoYXZlIGEgXCJrZXlcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gIGlmICghZWxlbWVudC5fc3RvcmUgfHwgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkIHx8IGVsZW1lbnQua2V5ICE9IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcblxuICB2YXIgYWRkZW5kYSA9IGdldEFkZGVuZGFGb3JLZXlVc2UoJ3VuaXF1ZUtleScsIGVsZW1lbnQsIHBhcmVudFR5cGUpO1xuICBpZiAoYWRkZW5kYSA9PT0gbnVsbCkge1xuICAgIC8vIHdlIGFscmVhZHkgc2hvd2VkIHRoZSB3YXJuaW5nXG4gICAgcmV0dXJuO1xuICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRWFjaCBjaGlsZCBpbiBhbiBhcnJheSBvciBpdGVyYXRvciBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzJXMnLCBhZGRlbmRhLnBhcmVudE9yT3duZXIgfHwgJycsIGFkZGVuZGEuY2hpbGRPd25lciB8fCAnJywgYWRkZW5kYS51cmwgfHwgJycpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFNoYXJlZCB3YXJuaW5nIGFuZCBtb25pdG9yaW5nIGNvZGUgZm9yIHRoZSBrZXkgd2FybmluZ3MuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVR5cGUgQSBrZXkgdXNlZCBmb3IgZGUtZHVwaW5nIHdhcm5pbmdzLlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgQ29tcG9uZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuXG4gKiBAcmV0dXJucyB7P29iamVjdH0gQSBzZXQgb2YgYWRkZW5kYSB0byB1c2UgaW4gdGhlIHdhcm5pbmcgbWVzc2FnZSwgb3IgbnVsbFxuICogaWYgdGhlIHdhcm5pbmcgaGFzIGFscmVhZHkgYmVlbiBzaG93biBiZWZvcmUgKGFuZCBzaG91bGRuJ3QgYmUgc2hvd24gYWdhaW4pLlxuICovXG5mdW5jdGlvbiBnZXRBZGRlbmRhRm9yS2V5VXNlKG1lc3NhZ2VUeXBlLCBlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICBpZiAoIWFkZGVuZHVtKSB7XG4gICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XG4gICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgIGFkZGVuZHVtID0gJyBDaGVjayB0aGUgdG9wLWxldmVsIHJlbmRlciBjYWxsIHVzaW5nIDwnICsgcGFyZW50TmFtZSArICc+Lic7XG4gICAgfVxuICB9XG5cbiAgdmFyIG1lbW9pemVyID0gb3duZXJIYXNLZXlVc2VXYXJuaW5nW21lc3NhZ2VUeXBlXSB8fCAob3duZXJIYXNLZXlVc2VXYXJuaW5nW21lc3NhZ2VUeXBlXSA9IHt9KTtcbiAgaWYgKG1lbW9pemVyW2FkZGVuZHVtXSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIG1lbW9pemVyW2FkZGVuZHVtXSA9IHRydWU7XG5cbiAgdmFyIGFkZGVuZGEgPSB7XG4gICAgcGFyZW50T3JPd25lcjogYWRkZW5kdW0sXG4gICAgdXJsOiAnIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLFxuICAgIGNoaWxkT3duZXI6IG51bGxcbiAgfTtcblxuICAvLyBVc3VhbGx5IHRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBvZmZlbmRlciwgYnV0IGlmIGl0IGFjY2VwdHMgY2hpbGRyZW4gYXMgYVxuICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cbiAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5fb3duZXIgJiYgZWxlbWVudC5fb3duZXIgIT09IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICAvLyBHaXZlIHRoZSBjb21wb25lbnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhpcyBjaGlsZC5cbiAgICBhZGRlbmRhLmNoaWxkT3duZXIgPSAnIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tICcgKyBlbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLic7XG4gIH1cblxuICByZXR1cm4gYWRkZW5kYTtcbn1cblxuLyoqXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcbiAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHtcbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTtcbiAgICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLlxuICAgIGlmIChub2RlLl9zdG9yZSkge1xuICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAobm9kZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcbiAgICAvLyBFbnRyeSBpdGVyYXRvcnMgcHJvdmlkZSBpbXBsaWNpdCBrZXlzLlxuICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChub2RlKTtcbiAgICAgICAgdmFyIHN0ZXA7XG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KHN0ZXAudmFsdWUsIHBhcmVudFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSBwcm9wcyBhcmUgdmFsaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICogQHBhcmFtIHtvYmplY3R9IHByb3BUeXBlcyBNYXAgb2YgcHJvcCBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyhjb21wb25lbnROYW1lLCBwcm9wVHlwZXMsIHByb3BzLCBsb2NhdGlvbikge1xuICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHtcbiAgICBpZiAocHJvcFR5cGVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgdmFyIGVycm9yO1xuICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICEodHlwZW9mIHByb3BUeXBlc1twcm9wTmFtZV0gPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHByb3BOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIGVycm9yID0gZXg7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghZXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSwgdHlwZW9mIGVycm9yKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhbiBlbGVtZW50LCB2YWxpZGF0ZSB0aGF0IGl0cyBwcm9wcyBmb2xsb3cgdGhlIHByb3BUeXBlcyBkZWZpbml0aW9uLFxuICogcHJvdmlkZWQgYnkgdGhlIHR5cGUuXG4gKlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCkge1xuICB2YXIgY29tcG9uZW50Q2xhc3MgPSBlbGVtZW50LnR5cGU7XG4gIGlmICh0eXBlb2YgY29tcG9uZW50Q2xhc3MgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG5hbWUgPSBjb21wb25lbnRDbGFzcy5kaXNwbGF5TmFtZSB8fCBjb21wb25lbnRDbGFzcy5uYW1lO1xuICBpZiAoY29tcG9uZW50Q2xhc3MucHJvcFR5cGVzKSB7XG4gICAgY2hlY2tQcm9wVHlwZXMobmFtZSwgY29tcG9uZW50Q2xhc3MucHJvcFR5cGVzLCBlbGVtZW50LnByb3BzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLnByb3ApO1xuICB9XG4gIGlmICh0eXBlb2YgY29tcG9uZW50Q2xhc3MuZ2V0RGVmYXVsdFByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoY29tcG9uZW50Q2xhc3MuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAnZ2V0RGVmYXVsdFByb3BzIGlzIG9ubHkgdXNlZCBvbiBjbGFzc2ljIFJlYWN0LmNyZWF0ZUNsYXNzICcgKyAnZGVmaW5pdGlvbnMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSBuYW1lZCBgZGVmYXVsdFByb3BzYCBpbnN0ZWFkLicpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbnZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSB7XG5cbiAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24gKHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIHZhciB2YWxpZFR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbic7XG4gICAgLy8gV2Ugd2FybiBpbiB0aGlzIGNhc2UgYnV0IGRvbid0IHRocm93LiBXZSBleHBlY3QgdGhlIGVsZW1lbnQgY3JlYXRpb24gdG9cbiAgICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHZhbGlkVHlwZSwgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQ6IHR5cGUgc2hvdWxkIG5vdCBiZSBudWxsLCB1bmRlZmluZWQsIGJvb2xlYW4sIG9yICcgKyAnbnVtYmVyLiBJdCBzaG91bGQgYmUgYSBzdHJpbmcgKGZvciBET00gZWxlbWVudHMpIG9yIGEgUmVhY3RDbGFzcyAnICsgJyhmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgLy8gVGhlIHJlc3VsdCBjYW4gYmUgbnVsbGlzaCBpZiBhIG1vY2sgb3IgYSBjdXN0b20gZnVuY3Rpb24gaXMgdXNlZC5cbiAgICAvLyBUT0RPOiBEcm9wIHRoaXMgd2hlbiB0aGVzZSBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgYXMgdGhlIHR5cGUgYXJndW1lbnQuXG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgICAvLyBkb2Vzbid0IGV4cGVjdCBhIG5vbi1zdHJpbmcvZnVuY3Rpb24gdHlwZSBhbmQgY2FuIHRocm93IGNvbmZ1c2luZyBlcnJvcnMuXG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBleGNlcHRpb24gYmVoYXZpb3IgdG8gZGlmZmVyIGJldHdlZW4gZGV2IGFuZCBwcm9kLlxuICAgIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gICAgLy8gZml4ZWQsIHRoZSBrZXkgd2FybmluZ3Mgd2lsbCBhcHBlYXIuKVxuICAgIGlmICh2YWxpZFR5cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGFyZ3VtZW50c1tpXSwgdHlwZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCk7XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfSxcblxuICBjcmVhdGVGYWN0b3J5OiBmdW5jdGlvbiAodHlwZSkge1xuICAgIHZhciB2YWxpZGF0ZWRGYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcbiAgICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWRcbiAgICB2YWxpZGF0ZWRGYWN0b3J5LnR5cGUgPSB0eXBlO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0ZWRGYWN0b3J5LCAndHlwZScsIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFjdG9yeS50eXBlIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB0aGUgY2xhc3MgZGlyZWN0bHkgJyArICdiZWZvcmUgcGFzc2luZyBpdCB0byBjcmVhdGVGYWN0b3J5LicpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0eXBlJywge1xuICAgICAgICAgICAgICB2YWx1ZTogdHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHkgKGVzNS1zaGltL3NoYW0gdG9vKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5O1xuICB9LFxuXG4gIGNsb25lRWxlbWVudDogZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlwZSk7XG4gICAgfVxuICAgIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpO1xuICAgIHJldHVybiBuZXdFbGVtZW50O1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UUXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0pjYmlBcUwxeHVYRzR2S2lwY2JpQXFJRkpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2lCd2NtOTJhV1JsY3lCaElIZHlZWEJ3WlhJZ1lYSnZkVzVrSUdFZ1pXeGxiV1Z1ZENCbVlXTjBiM0o1WEc0Z0tpQjNhR2xqYUNCMllXeHBaR0YwWlhNZ2RHaGxJSEJ5YjNCeklIQmhjM05sWkNCMGJ5QjBhR1VnWld4bGJXVnVkQzRnVkdocGN5QnBjeUJwYm5SbGJtUmxaQ0IwYnlCaVpWeHVJQ29nZFhObFpDQnZibXg1SUdsdUlFUkZWaUJoYm1RZ1kyOTFiR1FnWW1VZ2NtVndiR0ZqWldRZ1lua2dZU0J6ZEdGMGFXTWdkSGx3WlNCamFHVmphMlZ5SUdadmNpQnNZVzVuZFdGblpYTmNiaUFxSUhSb1lYUWdjM1Z3Y0c5eWRDQnBkQzVjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRVZzWlcxbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSV3hsYldWdWRDY3BPMXh1ZG1GeUlGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk1uS1R0Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhNbktUdGNiblpoY2lCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSW5LVHRjYmx4dWRtRnlJR2RsZEVsMFpYSmhkRzl5Um00Z1BTQnlaWEYxYVhKbEtDY3VMMmRsZEVsMFpYSmhkRzl5Um00bktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1bWRXNWpkR2x2YmlCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb0tTQjdYRzRnSUdsbUlDaFNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MEtTQjdYRzRnSUNBZ2RtRnlJRzVoYldVZ1BTQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MExtZGxkRTVoYldVb0tUdGNiaUFnSUNCcFppQW9ibUZ0WlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjZ1EyaGxZMnNnZEdobElISmxibVJsY2lCdFpYUm9iMlFnYjJZZ1lDY2dLeUJ1WVcxbElDc2dKMkF1Snp0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJQ2NuTzF4dWZWeHVYRzR2S2lwY2JpQXFJRmRoY200Z2FXWWdkR2hsY21VbmN5QnVieUJyWlhrZ1pYaHdiR2xqYVhSc2VTQnpaWFFnYjI0Z1pIbHVZVzFwWXlCaGNuSmhlWE1nYjJZZ1kyaHBiR1J5Wlc0Z2IzSmNiaUFxSUc5aWFtVmpkQ0JyWlhseklHRnlaU0J1YjNRZ2RtRnNhV1F1SUZSb2FYTWdZV3hzYjNkeklIVnpJSFJ2SUd0bFpYQWdkSEpoWTJzZ2IyWWdZMmhwYkdSeVpXNGdZbVYwZDJWbGJseHVJQ29nZFhCa1lYUmxjeTVjYmlBcUwxeHVkbUZ5SUc5M2JtVnlTR0Z6UzJWNVZYTmxWMkZ5Ym1sdVp5QTlJSHQ5TzF4dVhHNTJZWElnYkc5bloyVmtWSGx3WlVaaGFXeDFjbVZ6SUQwZ2UzMDdYRzVjYmk4cUtseHVJQ29nVjJGeWJpQnBaaUIwYUdVZ1pXeGxiV1Z1ZENCa2IyVnpiaWQwSUdoaGRtVWdZVzRnWlhod2JHbGphWFFnYTJWNUlHRnpjMmxuYm1Wa0lIUnZJR2wwTGx4dUlDb2dWR2hwY3lCbGJHVnRaVzUwSUdseklHbHVJR0Z1SUdGeWNtRjVMaUJVYUdVZ1lYSnlZWGtnWTI5MWJHUWdaM0p2ZHlCaGJtUWdjMmh5YVc1cklHOXlJR0psWEc0Z0tpQnlaVzl5WkdWeVpXUXVJRUZzYkNCamFHbHNaSEpsYmlCMGFHRjBJR2hoZG1WdUozUWdZV3h5WldGa2VTQmlaV1Z1SUhaaGJHbGtZWFJsWkNCaGNtVWdjbVZ4ZFdseVpXUWdkRzljYmlBcUlHaGhkbVVnWVNCY0ltdGxlVndpSUhCeWIzQmxjblI1SUdGemMybG5ibVZrSUhSdklHbDBMbHh1SUNwY2JpQXFJRUJwYm5SbGNtNWhiRnh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJR1ZzWlcxbGJuUWdSV3hsYldWdWRDQjBhR0YwSUhKbGNYVnBjbVZ6SUdFZ2EyVjVMbHh1SUNvZ1FIQmhjbUZ0SUhzcWZTQndZWEpsYm5SVWVYQmxJR1ZzWlcxbGJuUW5jeUJ3WVhKbGJuUW5jeUIwZVhCbExseHVJQ292WEc1bWRXNWpkR2x2YmlCMllXeHBaR0YwWlVWNGNHeHBZMmwwUzJWNUtHVnNaVzFsYm5Rc0lIQmhjbVZ1ZEZSNWNHVXBJSHRjYmlBZ2FXWWdLQ0ZsYkdWdFpXNTBMbDl6ZEc5eVpTQjhmQ0JsYkdWdFpXNTBMbDl6ZEc5eVpTNTJZV3hwWkdGMFpXUWdmSHdnWld4bGJXVnVkQzVyWlhrZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVJQ0JsYkdWdFpXNTBMbDl6ZEc5eVpTNTJZV3hwWkdGMFpXUWdQU0IwY25WbE8xeHVYRzRnSUhaaGNpQmhaR1JsYm1SaElEMGdaMlYwUVdSa1pXNWtZVVp2Y2t0bGVWVnpaU2duZFc1cGNYVmxTMlY1Snl3Z1pXeGxiV1Z1ZEN3Z2NHRnlaVzUwVkhsd1pTazdYRzRnSUdsbUlDaGhaR1JsYm1SaElEMDlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0x5OGdkMlVnWVd4eVpXRmtlU0J6YUc5M1pXUWdkR2hsSUhkaGNtNXBibWRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZEZZV05vSUdOb2FXeGtJR2x1SUdGdUlHRnljbUY1SUc5eUlHbDBaWEpoZEc5eUlITm9iM1ZzWkNCb1lYWmxJR0VnZFc1cGNYVmxJRndpYTJWNVhDSWdjSEp2Y0M0bklDc2dKeVZ6SlhNbGN5Y3NJR0ZrWkdWdVpHRXVjR0Z5Wlc1MFQzSlBkMjVsY2lCOGZDQW5KeXdnWVdSa1pXNWtZUzVqYUdsc1pFOTNibVZ5SUh4OElDY25MQ0JoWkdSbGJtUmhMblZ5YkNCOGZDQW5KeWtnT2lCMWJtUmxabWx1WldRN1hHNTlYRzVjYmk4cUtseHVJQ29nVTJoaGNtVmtJSGRoY201cGJtY2dZVzVrSUcxdmJtbDBiM0pwYm1jZ1kyOWtaU0JtYjNJZ2RHaGxJR3RsZVNCM1lYSnVhVzVuY3k1Y2JpQXFYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnRaWE56WVdkbFZIbHdaU0JCSUd0bGVTQjFjMlZrSUdadmNpQmtaUzFrZFhCcGJtY2dkMkZ5Ym1sdVozTXVYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdaV3hsYldWdWRDQkRiMjF3YjI1bGJuUWdkR2hoZENCeVpYRjFhWEpsY3lCaElHdGxlUzVjYmlBcUlFQndZWEpoYlNCN0tuMGdjR0Z5Wlc1MFZIbHdaU0JsYkdWdFpXNTBKM01nY0dGeVpXNTBKM01nZEhsd1pTNWNiaUFxSUVCeVpYUjFjbTV6SUhzL2IySnFaV04wZlNCQklITmxkQ0J2WmlCaFpHUmxibVJoSUhSdklIVnpaU0JwYmlCMGFHVWdkMkZ5Ym1sdVp5QnRaWE56WVdkbExDQnZjaUJ1ZFd4c1hHNGdLaUJwWmlCMGFHVWdkMkZ5Ym1sdVp5Qm9ZWE1nWVd4eVpXRmtlU0JpWldWdUlITm9iM2R1SUdKbFptOXlaU0FvWVc1a0lITm9iM1ZzWkc0bmRDQmlaU0J6YUc5M2JpQmhaMkZwYmlrdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdkbGRFRmtaR1Z1WkdGR2IzSkxaWGxWYzJVb2JXVnpjMkZuWlZSNWNHVXNJR1ZzWlcxbGJuUXNJSEJoY21WdWRGUjVjR1VwSUh0Y2JpQWdkbUZ5SUdGa1pHVnVaSFZ0SUQwZ1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtDazdYRzRnSUdsbUlDZ2hZV1JrWlc1a2RXMHBJSHRjYmlBZ0lDQjJZWElnY0dGeVpXNTBUbUZ0WlNBOUlIUjVjR1Z2WmlCd1lYSmxiblJVZVhCbElEMDlQU0FuYzNSeWFXNW5KeUEvSUhCaGNtVnVkRlI1Y0dVZ09pQndZWEpsYm5SVWVYQmxMbVJwYzNCc1lYbE9ZVzFsSUh4OElIQmhjbVZ1ZEZSNWNHVXVibUZ0WlR0Y2JpQWdJQ0JwWmlBb2NHRnlaVzUwVG1GdFpTa2dlMXh1SUNBZ0lDQWdZV1JrWlc1a2RXMGdQU0FuSUVOb1pXTnJJSFJvWlNCMGIzQXRiR1YyWld3Z2NtVnVaR1Z5SUdOaGJHd2dkWE5wYm1jZ1BDY2dLeUJ3WVhKbGJuUk9ZVzFsSUNzZ0p6NHVKenRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0IyWVhJZ2JXVnRiMmw2WlhJZ1BTQnZkMjVsY2toaGMwdGxlVlZ6WlZkaGNtNXBibWRiYldWemMyRm5aVlI1Y0dWZElIeDhJQ2h2ZDI1bGNraGhjMHRsZVZWelpWZGhjbTVwYm1kYmJXVnpjMkZuWlZSNWNHVmRJRDBnZTMwcE8xeHVJQ0JwWmlBb2JXVnRiMmw2WlhKYllXUmtaVzVrZFcxZEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JpQWdiV1Z0YjJsNlpYSmJZV1JrWlc1a2RXMWRJRDBnZEhKMVpUdGNibHh1SUNCMllYSWdZV1JrWlc1a1lTQTlJSHRjYmlBZ0lDQndZWEpsYm5SUGNrOTNibVZ5T2lCaFpHUmxibVIxYlN4Y2JpQWdJQ0IxY213NklDY2dVMlZsSUdoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGQyRnlibWx1WnkxclpYbHpJR1p2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1TGljc1hHNGdJQ0FnWTJocGJHUlBkMjVsY2pvZ2JuVnNiRnh1SUNCOU8xeHVYRzRnSUM4dklGVnpkV0ZzYkhrZ2RHaGxJR04xY25KbGJuUWdiM2R1WlhJZ2FYTWdkR2hsSUc5bVptVnVaR1Z5TENCaWRYUWdhV1lnYVhRZ1lXTmpaWEIwY3lCamFHbHNaSEpsYmlCaGN5QmhYRzRnSUM4dklIQnliM0JsY25SNUxDQnBkQ0J0WVhrZ1ltVWdkR2hsSUdOeVpXRjBiM0lnYjJZZ2RHaGxJR05vYVd4a0lIUm9ZWFFuY3lCeVpYTndiMjV6YVdKc1pTQm1iM0pjYmlBZ0x5OGdZWE56YVdkdWFXNW5JR2wwSUdFZ2EyVjVMbHh1SUNCcFppQW9aV3hsYldWdWRDQW1KaUJsYkdWdFpXNTBMbDl2ZDI1bGNpQW1KaUJsYkdWdFpXNTBMbDl2ZDI1bGNpQWhQVDBnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQ2tnZTF4dUlDQWdJQzh2SUVkcGRtVWdkR2hsSUdOdmJYQnZibVZ1ZENCMGFHRjBJRzl5YVdkcGJtRnNiSGtnWTNKbFlYUmxaQ0IwYUdseklHTm9hV3hrTGx4dUlDQWdJR0ZrWkdWdVpHRXVZMmhwYkdSUGQyNWxjaUE5SUNjZ1NYUWdkMkZ6SUhCaGMzTmxaQ0JoSUdOb2FXeGtJR1p5YjIwZ0p5QXJJR1ZzWlcxbGJuUXVYMjkzYm1WeUxtZGxkRTVoYldVb0tTQXJJQ2N1Snp0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCaFpHUmxibVJoTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVZ1YzNWeVpTQjBhR0YwSUdWMlpYSjVJR1ZzWlcxbGJuUWdaV2wwYUdWeUlHbHpJSEJoYzNObFpDQnBiaUJoSUhOMFlYUnBZeUJzYjJOaGRHbHZiaXdnYVc0Z1lXNWNiaUFxSUdGeWNtRjVJSGRwZEdnZ1lXNGdaWGh3YkdsamFYUWdhMlY1Y3lCd2NtOXdaWEowZVNCa1pXWnBibVZrTENCdmNpQnBiaUJoYmlCdlltcGxZM1FnYkdsMFpYSmhiRnh1SUNvZ2QybDBhQ0IyWVd4cFpDQnJaWGtnY0hKdmNHVnlkSGt1WEc0Z0tseHVJQ29nUUdsdWRHVnlibUZzWEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wVG05a1pYMGdibTlrWlNCVGRHRjBhV05oYkd4NUlIQmhjM05sWkNCamFHbHNaQ0J2WmlCaGJua2dkSGx3WlM1Y2JpQXFJRUJ3WVhKaGJTQjdLbjBnY0dGeVpXNTBWSGx3WlNCdWIyUmxKM01nY0dGeVpXNTBKM01nZEhsd1pTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RtRnNhV1JoZEdWRGFHbHNaRXRsZVhNb2JtOWtaU3dnY0dGeVpXNTBWSGx3WlNrZ2UxeHVJQ0JwWmlBb2RIbHdaVzltSUc1dlpHVWdJVDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNGdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLRzV2WkdVcEtTQjdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnViMlJsTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnWTJocGJHUWdQU0J1YjJSbFcybGRPMXh1SUNBZ0lDQWdhV1lnS0ZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENoamFHbHNaQ2twSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdWRmVIQnNhV05wZEV0bGVTaGphR2xzWkN3Z2NHRnlaVzUwVkhsd1pTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0ZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENodWIyUmxLU2tnZTF4dUlDQWdJQzh2SUZSb2FYTWdaV3hsYldWdWRDQjNZWE1nY0dGemMyVmtJR2x1SUdFZ2RtRnNhV1FnYkc5allYUnBiMjR1WEc0Z0lDQWdhV1lnS0c1dlpHVXVYM04wYjNKbEtTQjdYRzRnSUNBZ0lDQnViMlJsTGw5emRHOXlaUzUyWVd4cFpHRjBaV1FnUFNCMGNuVmxPMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNodWIyUmxLU0I3WEc0Z0lDQWdkbUZ5SUdsMFpYSmhkRzl5Um00Z1BTQm5aWFJKZEdWeVlYUnZja1p1S0c1dlpHVXBPMXh1SUNBZ0lDOHZJRVZ1ZEhKNUlHbDBaWEpoZEc5eWN5QndjbTkyYVdSbElHbHRjR3hwWTJsMElHdGxlWE11WEc0Z0lDQWdhV1lnS0dsMFpYSmhkRzl5Um00cElIdGNiaUFnSUNBZ0lHbG1JQ2hwZEdWeVlYUnZja1p1SUNFOVBTQnViMlJsTG1WdWRISnBaWE1wSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR2wwWlhKaGRHOXlJRDBnYVhSbGNtRjBiM0pHYmk1allXeHNLRzV2WkdVcE8xeHVJQ0FnSUNBZ0lDQjJZWElnYzNSbGNEdGNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tDRW9jM1JsY0NBOUlHbDBaWEpoZEc5eUxtNWxlSFFvS1NrdVpHOXVaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hTWldGamRFVnNaVzFsYm5RdWFYTldZV3hwWkVWc1pXMWxiblFvYzNSbGNDNTJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGJHbGtZWFJsUlhod2JHbGphWFJMWlhrb2MzUmxjQzUyWVd4MVpTd2djR0Z5Wlc1MFZIbHdaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dRWE56WlhKMElIUm9ZWFFnZEdobElIQnliM0J6SUdGeVpTQjJZV3hwWkZ4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JqYjIxd2IyNWxiblJPWVcxbElFNWhiV1VnYjJZZ2RHaGxJR052YlhCdmJtVnVkQ0JtYjNJZ1pYSnliM0lnYldWemMyRm5aWE11WEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NISnZjRlI1Y0dWeklFMWhjQ0J2WmlCd2NtOXdJRzVoYldVZ2RHOGdZU0JTWldGamRGQnliM0JVZVhCbFhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjSEp2Y0hOY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnNiMk5oZEdsdmJpQmxMbWN1SUZ3aWNISnZjRndpTENCY0ltTnZiblJsZUhSY0lpd2dYQ0pqYUdsc1pDQmpiMjUwWlhoMFhDSmNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR05vWldOclVISnZjRlI1Y0dWektHTnZiWEJ2Ym1WdWRFNWhiV1VzSUhCeWIzQlVlWEJsY3l3Z2NISnZjSE1zSUd4dlkyRjBhVzl1S1NCN1hHNGdJR1p2Y2lBb2RtRnlJSEJ5YjNCT1lXMWxJR2x1SUhCeWIzQlVlWEJsY3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTl3Vkhsd1pYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQjJZWElnWlhKeWIzSTdYRzRnSUNBZ0lDQXZMeUJRY205d0lIUjVjR1VnZG1Gc2FXUmhkR2x2YmlCdFlYa2dkR2h5YjNjdUlFbHVJR05oYzJVZ2RHaGxlU0JrYnl3Z2QyVWdaRzl1SjNRZ2QyRnVkQ0IwYjF4dUlDQWdJQ0FnTHk4Z1ptRnBiQ0IwYUdVZ2NtVnVaR1Z5SUhCb1lYTmxJSGRvWlhKbElHbDBJR1JwWkc0bmRDQm1ZV2xzSUdKbFptOXlaUzRnVTI4Z2QyVWdiRzluSUdsMExseHVJQ0FnSUNBZ0x5OGdRV1owWlhJZ2RHaGxjMlVnYUdGMlpTQmlaV1Z1SUdOc1pXRnVaV1FnZFhBc0lIZGxKMnhzSUd4bGRDQjBhR1Z0SUhSb2NtOTNMbHh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWR2hwY3lCcGN5QnBiblJsYm5ScGIyNWhiR3g1SUdGdUlHbHVkbUZ5YVdGdWRDQjBhR0YwSUdkbGRITWdZMkYxWjJoMExpQkpkQ2R6SUhSb1pTQnpZVzFsWEc0Z0lDQWdJQ0FnSUM4dklHSmxhR0YyYVc5eUlHRnpJSGRwZEdodmRYUWdkR2hwY3lCemRHRjBaVzFsYm5RZ1pYaGpaWEIwSUhkcGRHZ2dZU0JpWlhSMFpYSWdiV1Z6YzJGblpTNWNiaUFnSUNBZ0lDQWdJU2gwZVhCbGIyWWdjSEp2Y0ZSNWNHVnpXM0J5YjNCT1lXMWxYU0E5UFQwZ0oyWjFibU4wYVc5dUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbkpYTTZJQ1Z6SUhSNWNHVWdZQ1Z6WUNCcGN5QnBiblpoYkdsa095QnBkQ0J0ZFhOMElHSmxJR0VnWm5WdVkzUnBiMjRzSUhWemRXRnNiSGtnWm5KdmJTQW5JQ3NnSjFKbFlXTjBMbEJ5YjNCVWVYQmxjeTRuTENCamIyMXdiMjVsYm5ST1lXMWxJSHg4SUNkU1pXRmpkQ0JqYkdGemN5Y3NJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Yms1aGJXVnpXMnh2WTJGMGFXOXVYU3dnY0hKdmNFNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdaWEp5YjNJZ1BTQndjbTl3Vkhsd1pYTmJjSEp2Y0U1aGJXVmRLSEJ5YjNCekxDQndjbTl3VG1GdFpTd2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2JHOWpZWFJwYjI0cE8xeHVJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pYZ3BJSHRjYmlBZ0lDQWdJQ0FnWlhKeWIzSWdQU0JsZUR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRmxjbkp2Y2lCOGZDQmxjbkp2Y2lCcGJuTjBZVzVqWlc5bUlFVnljbTl5TENBbkpYTTZJSFI1Y0dVZ2MzQmxZMmxtYVdOaGRHbHZiaUJ2WmlBbGN5QmdKWE5nSUdseklHbHVkbUZzYVdRN0lIUm9aU0IwZVhCbElHTm9aV05yWlhJZ0p5QXJJQ2RtZFc1amRHbHZiaUJ0ZFhOMElISmxkSFZ5YmlCZ2JuVnNiR0FnYjNJZ1lXNGdZRVZ5Y205eVlDQmlkWFFnY21WMGRYSnVaV1FnWVNBbGN5NGdKeUFySUNkWmIzVWdiV0Y1SUdoaGRtVWdabTl5WjI5MGRHVnVJSFJ2SUhCaGMzTWdZVzRnWVhKbmRXMWxiblFnZEc4Z2RHaGxJSFI1Y0dVZ1kyaGxZMnRsY2lBbklDc2dKMk55WldGMGIzSWdLR0Z5Y21GNVQyWXNJR2x1YzNSaGJtTmxUMllzSUc5aWFtVmpkRTltTENCdmJtVlBaaXdnYjI1bFQyWlVlWEJsTENCaGJtUWdKeUFySUNkemFHRndaU0JoYkd3Z2NtVnhkV2x5WlNCaGJpQmhjbWQxYldWdWRDa3VKeXdnWTI5dGNHOXVaVzUwVG1GdFpTQjhmQ0FuVW1WaFkzUWdZMnhoYzNNbkxDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGMxdHNiMk5oZEdsdmJsMHNJSEJ5YjNCT1lXMWxMQ0IwZVhCbGIyWWdaWEp5YjNJcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdhV1lnS0dWeWNtOXlJR2x1YzNSaGJtTmxiMllnUlhKeWIzSWdKaVlnSVNobGNuSnZjaTV0WlhOellXZGxJR2x1SUd4dloyZGxaRlI1Y0dWR1lXbHNkWEpsY3lrcElIdGNiaUFnSUNBZ0lDQWdMeThnVDI1c2VTQnRiMjVwZEc5eUlIUm9hWE1nWm1GcGJIVnlaU0J2Ym1ObElHSmxZMkYxYzJVZ2RHaGxjbVVnZEdWdVpITWdkRzhnWW1VZ1lTQnNiM1FnYjJZZ2RHaGxYRzRnSUNBZ0lDQWdJQzh2SUhOaGJXVWdaWEp5YjNJdVhHNGdJQ0FnSUNBZ0lHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGMxdGxjbkp2Y2k1dFpYTnpZV2RsWFNBOUlIUnlkV1U3WEc1Y2JpQWdJQ0FnSUNBZ2RtRnlJR0ZrWkdWdVpIVnRJRDBnWjJWMFJHVmpiR0Z5WVhScGIyNUZjbkp2Y2tGa1pHVnVaSFZ0S0NrN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5SbUZwYkdWa0lIQnliM0JVZVhCbE9pQWxjeVZ6Snl3Z1pYSnliM0l1YldWemMyRm5aU3dnWVdSa1pXNWtkVzBwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFZHBkbVZ1SUdGdUlHVnNaVzFsYm5Rc0lIWmhiR2xrWVhSbElIUm9ZWFFnYVhSeklIQnliM0J6SUdadmJHeHZkeUIwYUdVZ2NISnZjRlI1Y0dWeklHUmxabWx1YVhScGIyNHNYRzRnS2lCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZEhsd1pTNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnWld4bGJXVnVkRnh1SUNvdlhHNW1kVzVqZEdsdmJpQjJZV3hwWkdGMFpWQnliM0JVZVhCbGN5aGxiR1Z0Wlc1MEtTQjdYRzRnSUhaaGNpQmpiMjF3YjI1bGJuUkRiR0Z6Y3lBOUlHVnNaVzFsYm5RdWRIbHdaVHRjYmlBZ2FXWWdLSFI1Y0dWdlppQmpiMjF3YjI1bGJuUkRiR0Z6Y3lBaFBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQjJZWElnYm1GdFpTQTlJR052YlhCdmJtVnVkRU5zWVhOekxtUnBjM0JzWVhsT1lXMWxJSHg4SUdOdmJYQnZibVZ1ZEVOc1lYTnpMbTVoYldVN1hHNGdJR2xtSUNoamIyMXdiMjVsYm5SRGJHRnpjeTV3Y205d1ZIbHdaWE1wSUh0Y2JpQWdJQ0JqYUdWamExQnliM0JVZVhCbGN5aHVZVzFsTENCamIyMXdiMjVsYm5SRGJHRnpjeTV3Y205d1ZIbHdaWE1zSUdWc1pXMWxiblF1Y0hKdmNITXNJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdWNISnZjQ2s3WEc0Z0lIMWNiaUFnYVdZZ0tIUjVjR1Z2WmlCamIyMXdiMjVsYm5SRGJHRnpjeTVuWlhSRVpXWmhkV3gwVUhKdmNITWdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aGpiMjF3YjI1bGJuUkRiR0Z6Y3k1blpYUkVaV1poZFd4MFVISnZjSE11YVhOU1pXRmpkRU5zWVhOelFYQndjbTkyWldRc0lDZG5aWFJFWldaaGRXeDBVSEp2Y0hNZ2FYTWdiMjVzZVNCMWMyVmtJRzl1SUdOc1lYTnphV01nVW1WaFkzUXVZM0psWVhSbFEyeGhjM01nSnlBcklDZGtaV1pwYm1sMGFXOXVjeTRnVlhObElHRWdjM1JoZEdsaklIQnliM0JsY25SNUlHNWhiV1ZrSUdCa1pXWmhkV3gwVUhKdmNITmdJR2x1YzNSbFlXUXVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYm4xY2JseHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpQTlJSHRjYmx4dUlDQmpjbVZoZEdWRmJHVnRaVzUwT2lCbWRXNWpkR2x2YmlBb2RIbHdaU3dnY0hKdmNITXNJR05vYVd4a2NtVnVLU0I3WEc0Z0lDQWdkbUZ5SUhaaGJHbGtWSGx3WlNBOUlIUjVjR1Z2WmlCMGVYQmxJRDA5UFNBbmMzUnlhVzVuSnlCOGZDQjBlWEJsYjJZZ2RIbHdaU0E5UFQwZ0oyWjFibU4wYVc5dUp6dGNiaUFnSUNBdkx5QlhaU0IzWVhKdUlHbHVJSFJvYVhNZ1kyRnpaU0JpZFhRZ1pHOXVKM1FnZEdoeWIzY3VJRmRsSUdWNGNHVmpkQ0IwYUdVZ1pXeGxiV1Z1ZENCamNtVmhkR2x2YmlCMGIxeHVJQ0FnSUM4dklITjFZMk5sWldRZ1lXNWtJSFJvWlhKbElIZHBiR3dnYkdsclpXeDVJR0psSUdWeWNtOXljeUJwYmlCeVpXNWtaWEl1WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvZG1Gc2FXUlVlWEJsTENBblVtVmhZM1F1WTNKbFlYUmxSV3hsYldWdWREb2dkSGx3WlNCemFHOTFiR1FnYm05MElHSmxJRzUxYkd3c0lIVnVaR1ZtYVc1bFpDd2dZbTl2YkdWaGJpd2diM0lnSnlBcklDZHVkVzFpWlhJdUlFbDBJSE5vYjNWc1pDQmlaU0JoSUhOMGNtbHVaeUFvWm05eUlFUlBUU0JsYkdWdFpXNTBjeWtnYjNJZ1lTQlNaV0ZqZEVOc1lYTnpJQ2NnS3lBbktHWnZjaUJqYjIxd2IzTnBkR1VnWTI5dGNHOXVaVzUwY3lrdUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvS1NrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQjJZWElnWld4bGJXVnVkQ0E5SUZKbFlXTjBSV3hsYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwTG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzVjYmlBZ0lDQXZMeUJVYUdVZ2NtVnpkV3gwSUdOaGJpQmlaU0J1ZFd4c2FYTm9JR2xtSUdFZ2JXOWpheUJ2Y2lCaElHTjFjM1J2YlNCbWRXNWpkR2x2YmlCcGN5QjFjMlZrTGx4dUlDQWdJQzh2SUZSUFJFODZJRVJ5YjNBZ2RHaHBjeUIzYUdWdUlIUm9aWE5sSUdGeVpTQnVieUJzYjI1blpYSWdZV3hzYjNkbFpDQmhjeUIwYUdVZ2RIbHdaU0JoY21kMWJXVnVkQzVjYmlBZ0lDQnBaaUFvWld4bGJXVnVkQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaV3hsYldWdWREdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QlRhMmx3SUd0bGVTQjNZWEp1YVc1bklHbG1JSFJvWlNCMGVYQmxJR2x6YmlkMElIWmhiR2xrSUhOcGJtTmxJRzkxY2lCclpYa2dkbUZzYVdSaGRHbHZiaUJzYjJkcFkxeHVJQ0FnSUM4dklHUnZaWE51SjNRZ1pYaHdaV04wSUdFZ2JtOXVMWE4wY21sdVp5OW1kVzVqZEdsdmJpQjBlWEJsSUdGdVpDQmpZVzRnZEdoeWIzY2dZMjl1Wm5WemFXNW5JR1Z5Y205eWN5NWNiaUFnSUNBdkx5QlhaU0JrYjI0bmRDQjNZVzUwSUdWNFkyVndkR2x2YmlCaVpXaGhkbWx2Y2lCMGJ5QmthV1ptWlhJZ1ltVjBkMlZsYmlCa1pYWWdZVzVrSUhCeWIyUXVYRzRnSUNBZ0x5OGdLRkpsYm1SbGNtbHVaeUIzYVd4c0lIUm9jbTkzSUhkcGRHZ2dZU0JvWld4d1puVnNJRzFsYzNOaFoyVWdZVzVrSUdGeklITnZiMjRnWVhNZ2RHaGxJSFI1Y0dVZ2FYTmNiaUFnSUNBdkx5Qm1hWGhsWkN3Z2RHaGxJR3RsZVNCM1lYSnVhVzVuY3lCM2FXeHNJR0Z3Y0dWaGNpNHBYRzRnSUNBZ2FXWWdLSFpoYkdsa1ZIbHdaU2tnZTF4dUlDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlESTdJR2tnUENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2FXUmhkR1ZEYUdsc1pFdGxlWE1vWVhKbmRXMWxiblJ6VzJsZExDQjBlWEJsS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVd4cFpHRjBaVkJ5YjNCVWVYQmxjeWhsYkdWdFpXNTBLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQmxiR1Z0Wlc1ME8xeHVJQ0I5TEZ4dVhHNGdJR055WldGMFpVWmhZM1J2Y25rNklHWjFibU4wYVc5dUlDaDBlWEJsS1NCN1hHNGdJQ0FnZG1GeUlIWmhiR2xrWVhSbFpFWmhZM1J2Y25rZ1BTQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0l1WTNKbFlYUmxSV3hsYldWdWRDNWlhVzVrS0c1MWJHd3NJSFI1Y0dVcE8xeHVJQ0FnSUM4dklFeGxaMkZqZVNCb2IyOXJJRlJQUkU4NklGZGhjbTRnYVdZZ2RHaHBjeUJwY3lCaFkyTmxjM05sWkZ4dUlDQWdJSFpoYkdsa1lYUmxaRVpoWTNSdmNua3VkSGx3WlNBOUlIUjVjR1U3WEc1Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSFpoYkdsa1lYUmxaRVpoWTNSdmNua3NJQ2QwZVhCbEp5d2dlMXh1SUNBZ0lDQWdJQ0FnSUdWdWRXMWxjbUZpYkdVNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkR1lXTjBiM0o1TG5SNWNHVWdhWE1nWkdWd2NtVmpZWFJsWkM0Z1FXTmpaWE56SUhSb1pTQmpiR0Z6Y3lCa2FYSmxZM1JzZVNBbklDc2dKMkpsWm05eVpTQndZWE56YVc1bklHbDBJSFJ2SUdOeVpXRjBaVVpoWTNSdmNua3VKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2RHaHBjeXdnSjNSNWNHVW5MQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbE9pQjBlWEJsWEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGVYQmxPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlJR05oZEdOb0lDaDRLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFbEZJSGRwYkd3Z1ptRnBiQ0J2YmlCa1pXWnBibVZRY205d1pYSjBlU0FvWlhNMUxYTm9hVzB2YzJoaGJTQjBiMjhwWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIWmhiR2xrWVhSbFpFWmhZM1J2Y25rN1hHNGdJSDBzWEc1Y2JpQWdZMnh2Ym1WRmJHVnRaVzUwT2lCbWRXNWpkR2x2YmlBb1pXeGxiV1Z1ZEN3Z2NISnZjSE1zSUdOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnZG1GeUlHNWxkMFZzWlcxbGJuUWdQU0JTWldGamRFVnNaVzFsYm5RdVkyeHZibVZGYkdWdFpXNTBMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlESTdJR2tnUENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJSFpoYkdsa1lYUmxRMmhwYkdSTFpYbHpLR0Z5WjNWdFpXNTBjMXRwWFN3Z2JtVjNSV3hsYldWdWRDNTBlWEJsS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkbUZzYVdSaGRHVlFjbTl3Vkhsd1pYTW9ibVYzUld4bGJXVnVkQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkMFZzWlcxbGJuUTdYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEVycm9yVXRpbHNcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2F1Z2h0RXJyb3IgPSBudWxsO1xuXG4vKipcbiAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGVycm9ycyB0aGF0IGhhcHBlbnMgd2l0aGluIGl0LlxuICpcbiAqIEBwYXJhbSB7P1N0cmluZ30gbmFtZSBvZiB0aGUgZ3VhcmQgdG8gdXNlIGZvciBsb2dnaW5nIG9yIGRlYnVnZ2luZ1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlXG4gKiBAcGFyYW0geyp9IGEgRmlyc3QgYXJndW1lbnRcbiAqIEBwYXJhbSB7Kn0gYiBTZWNvbmQgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gaW52b2tlR3VhcmRlZENhbGxiYWNrKG5hbWUsIGZ1bmMsIGEsIGIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnVuYyhhLCBiKTtcbiAgfSBjYXRjaCAoeCkge1xuICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuICAgICAgY2F1Z2h0RXJyb3IgPSB4O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbnZhciBSZWFjdEVycm9yVXRpbHMgPSB7XG4gIGludm9rZUd1YXJkZWRDYWxsYmFjazogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIGJ5IFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhlIGV2ZW50XG4gICAqIGhhbmRsZXIgYXJlIHN1cmUgdG8gYmUgcmV0aHJvd24gYnkgcmV0aHJvd0NhdWdodEVycm9yLlxuICAgKi9cbiAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssXG5cbiAgLyoqXG4gICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3VhcmRlZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3aGljaFxuICAgKiB3ZSB3aWxsIHJldGhyb3cgdG8gYmUgaGFuZGxlZCBieSB0aGUgdG9wIGxldmVsIGVycm9yIGhhbmRsZXIuXG4gICAqL1xuICByZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2F1Z2h0RXJyb3IpIHtcbiAgICAgIHZhciBlcnJvciA9IGNhdWdodEVycm9yO1xuICAgICAgY2F1Z2h0RXJyb3IgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvKipcbiAgICogVG8gaGVscCBkZXZlbG9wbWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3JhdGlvbiBieSBzaW11bGF0aW5nIGFcbiAgICogcmVhbCBicm93c2VyIGV2ZW50LlxuICAgKi9cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpO1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFtZSwgZnVuYywgYSwgYikge1xuICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBhLCBiKTtcbiAgICAgIGZha2VOb2RlLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgYm91bmRGdW5jLCBmYWxzZSk7XG4gICAgICBmYWtlTm9kZS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChuYW1lKSk7XG4gICAgICBmYWtlTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGJvdW5kRnVuYywgZmFsc2UpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVycm9yVXRpbHM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkZjbkp2Y2xWMGFXeHpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkZjbkp2Y2xWMGFXeHpYRzRnS2lCQWRIbHdaV05vWldOcmMxeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR05oZFdkb2RFVnljbTl5SUQwZ2JuVnNiRHRjYmx4dUx5b3FYRzRnS2lCRFlXeHNJR0VnWm5WdVkzUnBiMjRnZDJocGJHVWdaM1ZoY21ScGJtY2dZV2RoYVc1emRDQmxjbkp2Y25NZ2RHaGhkQ0JvWVhCd1pXNXpJSGRwZEdocGJpQnBkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlejlUZEhKcGJtZDlJRzVoYldVZ2IyWWdkR2hsSUdkMVlYSmtJSFJ2SUhWelpTQm1iM0lnYkc5bloybHVaeUJ2Y2lCa1pXSjFaMmRwYm1kY2JpQXFJRUJ3WVhKaGJTQjdSblZ1WTNScGIyNTlJR1oxYm1NZ1ZHaGxJR1oxYm1OMGFXOXVJSFJ2SUdsdWRtOXJaVnh1SUNvZ1FIQmhjbUZ0SUhzcWZTQmhJRVpwY25OMElHRnlaM1Z0Wlc1MFhHNGdLaUJBY0dGeVlXMGdleXA5SUdJZ1UyVmpiMjVrSUdGeVozVnRaVzUwWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x1ZG05clpVZDFZWEprWldSRFlXeHNZbUZqYXlodVlXMWxMQ0JtZFc1akxDQmhMQ0JpS1NCN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1Nb1lTd2dZaWs3WEc0Z0lIMGdZMkYwWTJnZ0tIZ3BJSHRjYmlBZ0lDQnBaaUFvWTJGMVoyaDBSWEp5YjNJZ1BUMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHTmhkV2RvZEVWeWNtOXlJRDBnZUR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dWZWeHVYRzUyWVhJZ1VtVmhZM1JGY25KdmNsVjBhV3h6SUQwZ2UxeHVJQ0JwYm5admEyVkhkV0Z5WkdWa1EyRnNiR0poWTJzNklHbHVkbTlyWlVkMVlYSmtaV1JEWVd4c1ltRmpheXhjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzUyYjJ0bFpDQmllU0JTWldGamRGUmxjM1JWZEdsc2N5NVRhVzExYkdGMFpTQnpieUIwYUdGMElHRnVlU0JsY25KdmNuTWdkR2h5YjNkdUlHSjVJSFJvWlNCbGRtVnVkRnh1SUNBZ0tpQm9ZVzVrYkdWeUlHRnlaU0J6ZFhKbElIUnZJR0psSUhKbGRHaHliM2R1SUdKNUlISmxkR2h5YjNkRFlYVm5hSFJGY25KdmNpNWNiaUFnSUNvdlhHNGdJR2x1ZG05clpVZDFZWEprWldSRFlXeHNZbUZqYTFkcGRHaERZWFJqYURvZ2FXNTJiMnRsUjNWaGNtUmxaRU5oYkd4aVlXTnJMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVkWEpwYm1jZ1pYaGxZM1YwYVc5dUlHOW1JR2QxWVhKa1pXUWdablZ1WTNScGIyNXpJSGRsSUhkcGJHd2dZMkZ3ZEhWeVpTQjBhR1VnWm1seWMzUWdaWEp5YjNJZ2QyaHBZMmhjYmlBZ0lDb2dkMlVnZDJsc2JDQnlaWFJvY205M0lIUnZJR0psSUdoaGJtUnNaV1FnWW5rZ2RHaGxJSFJ2Y0NCc1pYWmxiQ0JsY25KdmNpQm9ZVzVrYkdWeUxseHVJQ0FnS2k5Y2JpQWdjbVYwYUhKdmQwTmhkV2RvZEVWeWNtOXlPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnYVdZZ0tHTmhkV2RvZEVWeWNtOXlLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1pYSnliM0lnUFNCallYVm5hSFJGY25KdmNqdGNiaUFnSUNBZ0lHTmhkV2RvZEVWeWNtOXlJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIUm9jbTkzSUdWeWNtOXlPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZUdGNibHh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0x5b3FYRzRnSUNBcUlGUnZJR2hsYkhBZ1pHVjJaV3h2Y0cxbGJuUWdkMlVnWTJGdUlHZGxkQ0JpWlhSMFpYSWdaR1YyZEc5dmJITWdhVzUwWldkeVlYUnBiMjRnWW5rZ2MybHRkV3hoZEdsdVp5QmhYRzRnSUNBcUlISmxZV3dnWW5KdmQzTmxjaUJsZG1WdWRDNWNiaUFnSUNvdlhHNGdJR2xtSUNoMGVYQmxiMllnZDJsdVpHOTNJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5QW1KaUIwZVhCbGIyWWdkMmx1Wkc5M0xtUnBjM0JoZEdOb1JYWmxiblFnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnZEhsd1pXOW1JRVYyWlc1MElEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnZG1GeUlHWmhhMlZPYjJSbElEMGdaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnbmNtVmhZM1FuS1R0Y2JpQWdJQ0JTWldGamRFVnljbTl5VlhScGJITXVhVzUyYjJ0bFIzVmhjbVJsWkVOaGJHeGlZV05ySUQwZ1puVnVZM1JwYjI0Z0tHNWhiV1VzSUdaMWJtTXNJR0VzSUdJcElIdGNiaUFnSUNBZ0lIWmhjaUJpYjNWdVpFWjFibU1nUFNCbWRXNWpMbUpwYm1Rb2JuVnNiQ3dnWVN3Z1lpazdYRzRnSUNBZ0lDQm1ZV3RsVG05a1pTNWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtHNWhiV1VzSUdKdmRXNWtSblZ1WXl3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnWm1GclpVNXZaR1V1WkdsemNHRjBZMmhGZG1WdWRDaHVaWGNnUlhabGJuUW9ibUZ0WlNrcE8xeHVJQ0FnSUNBZ1ptRnJaVTV2WkdVdWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpaHVZVzFsTENCaWIzVnVaRVoxYm1Nc0lHWmhiSE5sS1R0Y2JpQWdJQ0I5TzF4dUlDQjlYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JGY25KdmNsVjBhV3h6T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0SW5zdGFuY2VIYW5kbGVzXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Um9vdEluZGV4ID0gcmVxdWlyZSgnLi9SZWFjdFJvb3RJbmRleCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU0VQQVJBVE9SX0xFTkdUSCA9IFNFUEFSQVRPUi5sZW5ndGg7XG5cbi8qKlxuICogTWF4aW11bSBkZXB0aCBvZiB0cmF2ZXJzYWxzIGJlZm9yZSB3ZSBjb25zaWRlciB0aGUgcG9zc2liaWxpdHkgb2YgYSBiYWQgSUQuXG4gKi9cbnZhciBNQVhfVFJFRV9ERVBUSCA9IDEwMDAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBET00gSUQgcHJlZml4IHRvIHVzZSB3aGVuIG1vdW50aW5nIFJlYWN0IGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEEgdW5pcXVlIGludGVnZXJcbiAqIEByZXR1cm4ge3N0cmluZ30gUmVhY3Qgcm9vdCBJRC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXRSZWFjdFJvb3RJRFN0cmluZyhpbmRleCkge1xuICByZXR1cm4gU0VQQVJBVE9SICsgaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGNoYXJhY3RlciBpbiB0aGUgc3VwcGxpZWQgSUQgaXMgYSBzZXBhcmF0b3Igb3IgdGhlIGVuZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQSBSZWFjdCBET00gSUQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggb2YgdGhlIGNoYXJhY3RlciB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBhIHNlcGFyYXRvciBvciBlbmQgb2YgdGhlIElELlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gaXNCb3VuZGFyeShpZCwgaW5kZXgpIHtcbiAgcmV0dXJuIGlkLmNoYXJBdChpbmRleCkgPT09IFNFUEFSQVRPUiB8fCBpbmRleCA9PT0gaWQubGVuZ3RoO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc3VwcGxpZWQgc3RyaW5nIGlzIGEgdmFsaWQgUmVhY3QgRE9NIElELlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBBIFJlYWN0IERPTSBJRCwgbWF5YmUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBSZWFjdCBET00gSUQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkSUQoaWQpIHtcbiAgcmV0dXJuIGlkID09PSAnJyB8fCBpZC5jaGFyQXQoMCkgPT09IFNFUEFSQVRPUiAmJiBpZC5jaGFyQXQoaWQubGVuZ3RoIC0gMSkgIT09IFNFUEFSQVRPUjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGZpcnN0IElEIGlzIGFuIGFuY2VzdG9yIG9mIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgSUQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFuY2VzdG9ySURcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjZW5kYW50SURcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYGFuY2VzdG9ySURgIGlzIGFuIGFuY2VzdG9yIG9mIGBkZXNjZW5kYW50SURgLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGlzQW5jZXN0b3JJRE9mKGFuY2VzdG9ySUQsIGRlc2NlbmRhbnRJRCkge1xuICByZXR1cm4gZGVzY2VuZGFudElELmluZGV4T2YoYW5jZXN0b3JJRCkgPT09IDAgJiYgaXNCb3VuZGFyeShkZXNjZW5kYW50SUQsIGFuY2VzdG9ySUQubGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwYXJlbnQgSUQgb2YgdGhlIHN1cHBsaWVkIFJlYWN0IERPTSBJRCwgYGlkYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgYSBjb21wb25lbnQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IElEIG9mIHRoZSBwYXJlbnQsIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudElEKGlkKSB7XG4gIHJldHVybiBpZCA/IGlkLnN1YnN0cigwLCBpZC5sYXN0SW5kZXhPZihTRVBBUkFUT1IpKSA6ICcnO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgRE9NIElEIG9uIHRoZSB0cmVlIHBhdGggZnJvbSB0aGUgc3VwcGxpZWQgYGFuY2VzdG9ySURgIHRvIHRoZVxuICogc3VwcGxpZWQgYGRlc3RpbmF0aW9uSURgLiBJZiB0aGV5IGFyZSBlcXVhbCwgdGhlIElEIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbmNlc3RvcklEIElEIG9mIGFuIGFuY2VzdG9yIG5vZGUgb2YgYGRlc3RpbmF0aW9uSURgLlxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3RpbmF0aW9uSUQgSUQgb2YgdGhlIGRlc3RpbmF0aW9uIG5vZGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5leHQgSUQgb24gdGhlIHBhdGggZnJvbSBgYW5jZXN0b3JJRGAgdG8gYGRlc3RpbmF0aW9uSURgLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZ2V0TmV4dERlc2NlbmRhbnRJRChhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSB7XG4gICEoaXNWYWxpZElEKGFuY2VzdG9ySUQpICYmIGlzVmFsaWRJRChkZXN0aW5hdGlvbklEKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0TmV4dERlc2NlbmRhbnRJRCglcywgJXMpOiBSZWNlaXZlZCBhbiBpbnZhbGlkIFJlYWN0IERPTSBJRC4nLCBhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICFpc0FuY2VzdG9ySURPZihhbmNlc3RvcklELCBkZXN0aW5hdGlvbklEKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROZXh0RGVzY2VuZGFudElEKC4uLik6IFJlYWN0IGhhcyBtYWRlIGFuIGludmFsaWQgYXNzdW1wdGlvbiBhYm91dCAnICsgJ3RoZSBET00gaGllcmFyY2h5LiBFeHBlY3RlZCBgJXNgIHRvIGJlIGFuIGFuY2VzdG9yIG9mIGAlc2AuJywgYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAoYW5jZXN0b3JJRCA9PT0gZGVzdGluYXRpb25JRCkge1xuICAgIHJldHVybiBhbmNlc3RvcklEO1xuICB9XG4gIC8vIFNraXAgb3ZlciB0aGUgYW5jZXN0b3IgYW5kIHRoZSBpbW1lZGlhdGUgc2VwYXJhdG9yLiBUcmF2ZXJzZSB1bnRpbCB3ZSBoaXRcbiAgLy8gYW5vdGhlciBzZXBhcmF0b3Igb3Igd2UgcmVhY2ggdGhlIGVuZCBvZiBgZGVzdGluYXRpb25JRGAuXG4gIHZhciBzdGFydCA9IGFuY2VzdG9ySUQubGVuZ3RoICsgU0VQQVJBVE9SX0xFTkdUSDtcbiAgdmFyIGk7XG4gIGZvciAoaSA9IHN0YXJ0OyBpIDwgZGVzdGluYXRpb25JRC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0JvdW5kYXJ5KGRlc3RpbmF0aW9uSUQsIGkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlc3RpbmF0aW9uSUQuc3Vic3RyKDAsIGkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIElEIG9mIHR3byBJRHMuXG4gKlxuICogVXNpbmcgdGhpcyBJRCBzY2hlbWUsIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBJRCBpcyB0aGUgbG9uZ2VzdCBjb21tb25cbiAqIHByZWZpeCBvZiB0aGUgdHdvIElEcyB0aGF0IGltbWVkaWF0ZWx5IHByZWNlZGVkIGEgXCJtYXJrZXJcIiBpbiBib3RoIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG9uZUlEXG4gKiBAcGFyYW0ge3N0cmluZ30gdHdvSURcbiAqIEByZXR1cm4ge3N0cmluZ30gTmVhcmVzdCBjb21tb24gYW5jZXN0b3IgSUQsIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm9uZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRChvbmVJRCwgdHdvSUQpIHtcbiAgdmFyIG1pbkxlbmd0aCA9IE1hdGgubWluKG9uZUlELmxlbmd0aCwgdHdvSUQubGVuZ3RoKTtcbiAgaWYgKG1pbkxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICB2YXIgbGFzdENvbW1vbk1hcmtlckluZGV4ID0gMDtcbiAgLy8gVXNlIGA8PWAgdG8gdHJhdmVyc2UgdW50aWwgdGhlIFwiRU9MXCIgb2YgdGhlIHNob3J0ZXIgc3RyaW5nLlxuICBmb3IgKHZhciBpID0gMDsgaSA8PSBtaW5MZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0JvdW5kYXJ5KG9uZUlELCBpKSAmJiBpc0JvdW5kYXJ5KHR3b0lELCBpKSkge1xuICAgICAgbGFzdENvbW1vbk1hcmtlckluZGV4ID0gaTtcbiAgICB9IGVsc2UgaWYgKG9uZUlELmNoYXJBdChpKSAhPT0gdHdvSUQuY2hhckF0KGkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdmFyIGxvbmdlc3RDb21tb25JRCA9IG9uZUlELnN1YnN0cigwLCBsYXN0Q29tbW9uTWFya2VySW5kZXgpO1xuICAhaXNWYWxpZElEKGxvbmdlc3RDb21tb25JRCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklEKCVzLCAlcyk6IEV4cGVjdGVkIGEgdmFsaWQgUmVhY3QgRE9NIElEOiAlcycsIG9uZUlELCB0d29JRCwgbG9uZ2VzdENvbW1vbklEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBsb25nZXN0Q29tbW9uSUQ7XG59XG5cbi8qKlxuICogVHJhdmVyc2VzIHRoZSBwYXJlbnQgcGF0aCBiZXR3ZWVuIHR3byBJRHMgKGVpdGhlciB1cCBvciBkb3duKS4gVGhlIElEcyBtdXN0XG4gKiBub3QgYmUgdGhlIHNhbWUsIGFuZCB0aGVyZSBtdXN0IGV4aXN0IGEgcGFyZW50IHBhdGggYmV0d2VlbiB0aGVtLiBJZiB0aGVcbiAqIGNhbGxiYWNrIHJldHVybnMgYGZhbHNlYCwgdHJhdmVyc2FsIGlzIHN0b3BwZWQuXG4gKlxuICogQHBhcmFtIHs/c3RyaW5nfSBzdGFydCBJRCBhdCB3aGljaCB0byBzdGFydCB0cmF2ZXJzYWwuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHN0b3AgSUQgYXQgd2hpY2ggdG8gZW5kIHRyYXZlcnNhbC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZSBlYWNoIElEIHdpdGguXG4gKiBAcGFyYW0geyp9IGFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGguXG4gKiBAcGFyYW0gez9ib29sZWFufSBza2lwRmlyc3QgV2hldGhlciBvciBub3QgdG8gc2tpcCB0aGUgZmlyc3Qgbm9kZS5cbiAqIEBwYXJhbSB7P2Jvb2xlYW59IHNraXBMYXN0IFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdGhlIGxhc3Qgbm9kZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlUGFyZW50UGF0aChzdGFydCwgc3RvcCwgY2IsIGFyZywgc2tpcEZpcnN0LCBza2lwTGFzdCkge1xuICBzdGFydCA9IHN0YXJ0IHx8ICcnO1xuICBzdG9wID0gc3RvcCB8fCAnJztcbiAgIShzdGFydCAhPT0gc3RvcCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndHJhdmVyc2VQYXJlbnRQYXRoKC4uLik6IENhbm5vdCB0cmF2ZXJzZSBmcm9tIGFuZCB0byB0aGUgc2FtZSBJRCwgYCVzYC4nLCBzdGFydCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB2YXIgdHJhdmVyc2VVcCA9IGlzQW5jZXN0b3JJRE9mKHN0b3AsIHN0YXJ0KTtcbiAgISh0cmF2ZXJzZVVwIHx8IGlzQW5jZXN0b3JJRE9mKHN0YXJ0LCBzdG9wKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndHJhdmVyc2VQYXJlbnRQYXRoKCVzLCAlcywgLi4uKTogQ2Fubm90IHRyYXZlcnNlIGZyb20gdHdvIElEcyB0aGF0IGRvICcgKyAnbm90IGhhdmUgYSBwYXJlbnQgcGF0aC4nLCBzdGFydCwgc3RvcCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAvLyBUcmF2ZXJzZSBmcm9tIGBzdGFydGAgdG8gYHN0b3BgIG9uZSBkZXB0aCBhdCBhIHRpbWUuXG4gIHZhciBkZXB0aCA9IDA7XG4gIHZhciB0cmF2ZXJzZSA9IHRyYXZlcnNlVXAgPyBnZXRQYXJlbnRJRCA6IGdldE5leHREZXNjZW5kYW50SUQ7XG4gIGZvciAodmFyIGlkID0gc3RhcnQ7OyAvKiB1bnRpbCBicmVhayAqL2lkID0gdHJhdmVyc2UoaWQsIHN0b3ApKSB7XG4gICAgdmFyIHJldDtcbiAgICBpZiAoKCFza2lwRmlyc3QgfHwgaWQgIT09IHN0YXJ0KSAmJiAoIXNraXBMYXN0IHx8IGlkICE9PSBzdG9wKSkge1xuICAgICAgcmV0ID0gY2IoaWQsIHRyYXZlcnNlVXAsIGFyZyk7XG4gICAgfVxuICAgIGlmIChyZXQgPT09IGZhbHNlIHx8IGlkID09PSBzdG9wKSB7XG4gICAgICAvLyBPbmx5IGJyZWFrIC8vYWZ0ZXIvLyB2aXNpdGluZyBgc3RvcGAuXG4gICAgICBicmVhaztcbiAgICB9XG4gICAgIShkZXB0aCsrIDwgTUFYX1RSRUVfREVQVEgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXZlcnNlUGFyZW50UGF0aCglcywgJXMsIC4uLik6IERldGVjdGVkIGFuIGluZmluaXRlIGxvb3Agd2hpbGUgJyArICd0cmF2ZXJzaW5nIHRoZSBSZWFjdCBET00gSUQgdHJlZS4gVGhpcyBtYXkgYmUgZHVlIHRvIG1hbGZvcm1lZCBJRHM6ICVzJywgc3RhcnQsIHN0b3AsIGlkKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNYW5hZ2VzIHRoZSBJRHMgYXNzaWduZWQgdG8gRE9NIHJlcHJlc2VudGF0aW9ucyBvZiBSZWFjdCBjb21wb25lbnRzLiBUaGlzXG4gKiB1c2VzIGEgc3BlY2lmaWMgc2NoZW1lIGluIG9yZGVyIHRvIHRyYXZlcnNlIHRoZSBET00gZWZmaWNpZW50bHkgKGUuZy4gaW5cbiAqIG9yZGVyIHRvIHNpbXVsYXRlIGV2ZW50cykuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJlYWN0IHJvb3QgSURcbiAgICogQHJldHVybiB7c3RyaW5nfSBBIFJlYWN0IHJvb3QgSUQuXG4gICAqL1xuICBjcmVhdGVSZWFjdFJvb3RJRDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRSZWFjdFJvb3RJRFN0cmluZyhSZWFjdFJvb3RJbmRleC5jcmVhdGVSZWFjdFJvb3RJbmRleCgpKTtcbiAgfSxcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJlYWN0IElEIGJ5IGpvaW5pbmcgYSByb290IElEIHdpdGggYSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIFJvb3QgSUQgb2YgYSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBBIGNvbXBvbmVudCdzIG5hbWUgKGFzIGZsYXR0ZW5lZCBjaGlsZHJlbikuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQSBSZWFjdCBJRC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjcmVhdGVSZWFjdElEOiBmdW5jdGlvbiAocm9vdElELCBuYW1lKSB7XG4gICAgcmV0dXJuIHJvb3RJRCArIG5hbWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIERPTSBJRCBvZiB0aGUgUmVhY3QgY29tcG9uZW50IHRoYXQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgdGhhdFxuICAgKiBjb250YWlucyB0aGUgUmVhY3QgY29tcG9uZW50IHdpdGggdGhlIHN1cHBsaWVkIERPTSBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIERPTSBJRCBvZiBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7P3N0cmluZ30gRE9NIElEIG9mIHRoZSBSZWFjdCBjb21wb25lbnQgdGhhdCBpcyB0aGUgcm9vdC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIGlmIChpZCAmJiBpZC5jaGFyQXQoMCkgPT09IFNFUEFSQVRPUiAmJiBpZC5sZW5ndGggPiAxKSB7XG4gICAgICB2YXIgaW5kZXggPSBpZC5pbmRleE9mKFNFUEFSQVRPUiwgMSk7XG4gICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGlkLnN1YnN0cigwLCBpbmRleCkgOiBpZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgSUQgaGllcmFyY2h5IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJRHMgdGhhdFxuICAgKiBzaG91bGQgd291bGQgcmVjZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91c2VMZWF2ZWAgZXZlbnQuXG4gICAqXG4gICAqIE5PVEU6IERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgb24gdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGJlY2F1c2VcbiAgICogbm90aGluZyBcImVudGVyZWRcIiBvciBcImxlZnRcIiB0aGF0IGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZWF2ZUlEIElEIGJlaW5nIGxlZnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRlcklEIElEIGJlaW5nIGVudGVyZWQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZSBvbiBlYWNoIGVudGVyZWQvbGVmdCBJRC5cbiAgICogQHBhcmFtIHsqfSB1cEFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGggb24gbGVmdCBJRHMuXG4gICAqIEBwYXJhbSB7Kn0gZG93bkFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGggb24gZW50ZXJlZCBJRHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAobGVhdmVJRCwgZW50ZXJJRCwgY2IsIHVwQXJnLCBkb3duQXJnKSB7XG4gICAgdmFyIGFuY2VzdG9ySUQgPSBnZXRGaXJzdENvbW1vbkFuY2VzdG9ySUQobGVhdmVJRCwgZW50ZXJJRCk7XG4gICAgaWYgKGFuY2VzdG9ySUQgIT09IGxlYXZlSUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aChsZWF2ZUlELCBhbmNlc3RvcklELCBjYiwgdXBBcmcsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKGFuY2VzdG9ySUQgIT09IGVudGVySUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aChhbmNlc3RvcklELCBlbnRlcklELCBjYiwgZG93bkFyZywgdHJ1ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIHRyYXZlcnNhbCBoYXBwZW5zIG9uIElEcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBET00uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRJRCBJRCBvZiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIENhbGxiYWNrIHRvIGludm9rZS5cbiAgICogQHBhcmFtIHsqfSBhcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXZlcnNlVHdvUGhhc2U6IGZ1bmN0aW9uICh0YXJnZXRJRCwgY2IsIGFyZykge1xuICAgIGlmICh0YXJnZXRJRCkge1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKCcnLCB0YXJnZXRJRCwgY2IsIGFyZywgdHJ1ZSwgZmFsc2UpO1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKHRhcmdldElELCAnJywgY2IsIGFyZywgZmFsc2UsIHRydWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2FtZSBhcyBgdHJhdmVyc2VUd29QaGFzZWAgYnV0IHNraXBzIHRoZSBgdGFyZ2V0SURgLlxuICAgKi9cbiAgdHJhdmVyc2VUd29QaGFzZVNraXBUYXJnZXQ6IGZ1bmN0aW9uICh0YXJnZXRJRCwgY2IsIGFyZykge1xuICAgIGlmICh0YXJnZXRJRCkge1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKCcnLCB0YXJnZXRJRCwgY2IsIGFyZywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICB0cmF2ZXJzZVBhcmVudFBhdGgodGFyZ2V0SUQsICcnLCBjYiwgYXJnLCB0cnVlLCB0cnVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlIGEgbm9kZSBJRCwgY2FsbGluZyB0aGUgc3VwcGxpZWQgYGNiYCBmb3IgZWFjaCBhbmNlc3RvciBJRC4gRm9yXG4gICAqIGV4YW1wbGUsIHBhc3NpbmcgYC4wLiRyb3ctMC4xYCB3b3VsZCByZXN1bHQgaW4gYGNiYCBnZXR0aW5nIGNhbGxlZFxuICAgKiB3aXRoIGAuMGAsIGAuMC4kcm93LTBgLCBhbmQgYC4wLiRyb3ctMC4xYC5cbiAgICpcbiAgICogTk9URTogVGhpcyB0cmF2ZXJzYWwgaGFwcGVucyBvbiBJRHMgd2l0aG91dCB0b3VjaGluZyB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0SUQgSUQgb2YgdGhlIHRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gYXJnIEFyZ3VtZW50IHRvIGludm9rZSB0aGUgY2FsbGJhY2sgd2l0aC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmF2ZXJzZUFuY2VzdG9yczogZnVuY3Rpb24gKHRhcmdldElELCBjYiwgYXJnKSB7XG4gICAgdHJhdmVyc2VQYXJlbnRQYXRoKCcnLCB0YXJnZXRJRCwgY2IsIGFyZywgdHJ1ZSwgZmFsc2UpO1xuICB9LFxuXG4gIGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRDogZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklELFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZ2V0TmV4dERlc2NlbmRhbnRJRDogZ2V0TmV4dERlc2NlbmRhbnRJRCxcblxuICBpc0FuY2VzdG9ySURPZjogaXNBbmNlc3RvcklET2YsXG5cbiAgU0VQQVJBVE9SOiBTRVBBUkFUT1JcblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3RhbmNlSGFuZGxlcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsYzF4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEZKdmIzUkpibVJsZUNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSU2IyOTBTVzVrWlhnbktUdGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNTJZWElnVTBWUVFWSkJWRTlTSUQwZ0p5NG5PMXh1ZG1GeUlGTkZVRUZTUVZSUFVsOU1SVTVIVkVnZ1BTQlRSVkJCVWtGVVQxSXViR1Z1WjNSb08xeHVYRzR2S2lwY2JpQXFJRTFoZUdsdGRXMGdaR1Z3ZEdnZ2IyWWdkSEpoZG1WeWMyRnNjeUJpWldadmNtVWdkMlVnWTI5dWMybGtaWElnZEdobElIQnZjM05wWW1sc2FYUjVJRzltSUdFZ1ltRmtJRWxFTGx4dUlDb3ZYRzUyWVhJZ1RVRllYMVJTUlVWZlJFVlFWRWdnUFNBeE1EQXdNRHRjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1JFOU5JRWxFSUhCeVpXWnBlQ0IwYnlCMWMyVWdkMmhsYmlCdGIzVnVkR2x1WnlCU1pXRmpkQ0JqYjIxd2IyNWxiblJ6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JwYm1SbGVDQkJJSFZ1YVhGMVpTQnBiblJsWjJWeVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkpsWVdOMElISnZiM1FnU1VRdVhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwVW1WaFkzUlNiMjkwU1VSVGRISnBibWNvYVc1a1pYZ3BJSHRjYmlBZ2NtVjBkWEp1SUZORlVFRlNRVlJQVWlBcklHbHVaR1Y0TG5SdlUzUnlhVzVuS0RNMktUdGNibjFjYmx4dUx5b3FYRzRnS2lCRGFHVmphM01nYVdZZ1lTQmphR0Z5WVdOMFpYSWdhVzRnZEdobElITjFjSEJzYVdWa0lFbEVJR2x6SUdFZ2MyVndZWEpoZEc5eUlHOXlJSFJvWlNCbGJtUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRUVnVW1WaFkzUWdSRTlOSUVsRUxseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR2x1WkdWNElFbHVaR1Y0SUc5bUlIUm9aU0JqYUdGeVlXTjBaWElnZEc4Z1kyaGxZMnN1WEc0Z0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlIUm9aU0JqYUdGeVlXTjBaWElnYVhNZ1lTQnpaWEJoY21GMGIzSWdiM0lnWlc1a0lHOW1JSFJvWlNCSlJDNWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x6UW05MWJtUmhjbmtvYVdRc0lHbHVaR1Y0S1NCN1hHNGdJSEpsZEhWeWJpQnBaQzVqYUdGeVFYUW9hVzVrWlhncElEMDlQU0JUUlZCQlVrRlVUMUlnZkh3Z2FXNWtaWGdnUFQwOUlHbGtMbXhsYm1kMGFEdGNibjFjYmx4dUx5b3FYRzRnS2lCRGFHVmphM01nYVdZZ2RHaGxJSE4xY0hCc2FXVmtJSE4wY21sdVp5QnBjeUJoSUhaaGJHbGtJRkpsWVdOMElFUlBUU0JKUkM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1FTQlNaV0ZqZENCRVQwMGdTVVFzSUcxaGVXSmxMbHh1SUNvZ1FISmxkSFZ5YmlCN1ltOXZiR1ZoYm4wZ1ZISjFaU0JwWmlCMGFHVWdjM1J5YVc1bklHbHpJR0VnZG1Gc2FXUWdVbVZoWTNRZ1JFOU5JRWxFTGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FYTldZV3hwWkVsRUtHbGtLU0I3WEc0Z0lISmxkSFZ5YmlCcFpDQTlQVDBnSnljZ2ZId2dhV1F1WTJoaGNrRjBLREFwSUQwOVBTQlRSVkJCVWtGVVQxSWdKaVlnYVdRdVkyaGhja0YwS0dsa0xteGxibWQwYUNBdElERXBJQ0U5UFNCVFJWQkJVa0ZVVDFJN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJobFkydHpJR2xtSUhSb1pTQm1hWEp6ZENCSlJDQnBjeUJoYmlCaGJtTmxjM1J2Y2lCdlppQnZjaUJsY1hWaGJDQjBieUIwYUdVZ2MyVmpiMjVrSUVsRUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCaGJtTmxjM1J2Y2tsRVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaR1Z6WTJWdVpHRnVkRWxFWEc0Z0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlHQmhibU5sYzNSdmNrbEVZQ0JwY3lCaGJpQmhibU5sYzNSdmNpQnZaaUJnWkdWelkyVnVaR0Z1ZEVsRVlDNWNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJwYzBGdVkyVnpkRzl5U1VSUFppaGhibU5sYzNSdmNrbEVMQ0JrWlhOalpXNWtZVzUwU1VRcElIdGNiaUFnY21WMGRYSnVJR1JsYzJObGJtUmhiblJKUkM1cGJtUmxlRTltS0dGdVkyVnpkRzl5U1VRcElEMDlQU0F3SUNZbUlHbHpRbTkxYm1SaGNua29aR1Z6WTJWdVpHRnVkRWxFTENCaGJtTmxjM1J2Y2tsRUxteGxibWQwYUNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWMGN5QjBhR1VnY0dGeVpXNTBJRWxFSUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0JTWldGamRDQkVUMDBnU1VRc0lHQnBaR0F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR2xrSUVsRUlHOW1JR0VnWTI5dGNHOXVaVzUwTGx4dUlDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkpSQ0J2WmlCMGFHVWdjR0Z5Wlc1MExDQnZjaUJoYmlCbGJYQjBlU0J6ZEhKcGJtY3VYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSUVlYSmxiblJKUkNocFpDa2dlMXh1SUNCeVpYUjFjbTRnYVdRZ1B5QnBaQzV6ZFdKemRISW9NQ3dnYVdRdWJHRnpkRWx1WkdWNFQyWW9VMFZRUVZKQlZFOVNLU2tnT2lBbkp6dGNibjFjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCdVpYaDBJRVJQVFNCSlJDQnZiaUIwYUdVZ2RISmxaU0J3WVhSb0lHWnliMjBnZEdobElITjFjSEJzYVdWa0lHQmhibU5sYzNSdmNrbEVZQ0IwYnlCMGFHVmNiaUFxSUhOMWNIQnNhV1ZrSUdCa1pYTjBhVzVoZEdsdmJrbEVZQzRnU1dZZ2RHaGxlU0JoY21VZ1pYRjFZV3dzSUhSb1pTQkpSQ0JwY3lCeVpYUjFjbTVsWkM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWVc1alpYTjBiM0pKUkNCSlJDQnZaaUJoYmlCaGJtTmxjM1J2Y2lCdWIyUmxJRzltSUdCa1pYTjBhVzVoZEdsdmJrbEVZQzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCa1pYTjBhVzVoZEdsdmJrbEVJRWxFSUc5bUlIUm9aU0JrWlhOMGFXNWhkR2x2YmlCdWIyUmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCT1pYaDBJRWxFSUc5dUlIUm9aU0J3WVhSb0lHWnliMjBnWUdGdVkyVnpkRzl5U1VSZ0lIUnZJR0JrWlhOMGFXNWhkR2x2YmtsRVlDNWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEU1bGVIUkVaWE5qWlc1a1lXNTBTVVFvWVc1alpYTjBiM0pKUkN3Z1pHVnpkR2x1WVhScGIyNUpSQ2tnZTF4dUlDQWhLR2x6Vm1Gc2FXUkpSQ2hoYm1ObGMzUnZja2xFS1NBbUppQnBjMVpoYkdsa1NVUW9aR1Z6ZEdsdVlYUnBiMjVKUkNrcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJkbGRFNWxlSFJFWlhOalpXNWtZVzUwU1VRb0pYTXNJQ1Z6S1RvZ1VtVmpaV2wyWldRZ1lXNGdhVzUyWVd4cFpDQlNaV0ZqZENCRVQwMGdTVVF1Snl3Z1lXNWpaWE4wYjNKSlJDd2daR1Z6ZEdsdVlYUnBiMjVKUkNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBaGFYTkJibU5sYzNSdmNrbEVUMllvWVc1alpYTjBiM0pKUkN3Z1pHVnpkR2x1WVhScGIyNUpSQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5aMlYwVG1WNGRFUmxjMk5sYm1SaGJuUkpSQ2d1TGk0cE9pQlNaV0ZqZENCb1lYTWdiV0ZrWlNCaGJpQnBiblpoYkdsa0lHRnpjM1Z0Y0hScGIyNGdZV0p2ZFhRZ0p5QXJJQ2QwYUdVZ1JFOU5JR2hwWlhKaGNtTm9lUzRnUlhod1pXTjBaV1FnWUNWellDQjBieUJpWlNCaGJpQmhibU5sYzNSdmNpQnZaaUJnSlhOZ0xpY3NJR0Z1WTJWemRHOXlTVVFzSUdSbGMzUnBibUYwYVc5dVNVUXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdhV1lnS0dGdVkyVnpkRzl5U1VRZ1BUMDlJR1JsYzNScGJtRjBhVzl1U1VRcElIdGNiaUFnSUNCeVpYUjFjbTRnWVc1alpYTjBiM0pKUkR0Y2JpQWdmVnh1SUNBdkx5QlRhMmx3SUc5MlpYSWdkR2hsSUdGdVkyVnpkRzl5SUdGdVpDQjBhR1VnYVcxdFpXUnBZWFJsSUhObGNHRnlZWFJ2Y2k0Z1ZISmhkbVZ5YzJVZ2RXNTBhV3dnZDJVZ2FHbDBYRzRnSUM4dklHRnViM1JvWlhJZ2MyVndZWEpoZEc5eUlHOXlJSGRsSUhKbFlXTm9JSFJvWlNCbGJtUWdiMllnWUdSbGMzUnBibUYwYVc5dVNVUmdMbHh1SUNCMllYSWdjM1JoY25RZ1BTQmhibU5sYzNSdmNrbEVMbXhsYm1kMGFDQXJJRk5GVUVGU1FWUlBVbDlNUlU1SFZFZzdYRzRnSUhaaGNpQnBPMXh1SUNCbWIzSWdLR2tnUFNCemRHRnlkRHNnYVNBOElHUmxjM1JwYm1GMGFXOXVTVVF1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNCcFppQW9hWE5DYjNWdVpHRnllU2hrWlhOMGFXNWhkR2x2YmtsRUxDQnBLU2tnZTF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCa1pYTjBhVzVoZEdsdmJrbEVMbk4xWW5OMGNpZ3dMQ0JwS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJIWlhSeklIUm9aU0J1WldGeVpYTjBJR052YlcxdmJpQmhibU5sYzNSdmNpQkpSQ0J2WmlCMGQyOGdTVVJ6TGx4dUlDcGNiaUFxSUZWemFXNW5JSFJvYVhNZ1NVUWdjMk5vWlcxbExDQjBhR1VnYm1WaGNtVnpkQ0JqYjIxdGIyNGdZVzVqWlhOMGIzSWdTVVFnYVhNZ2RHaGxJR3h2Ym1kbGMzUWdZMjl0Ylc5dVhHNGdLaUJ3Y21WbWFYZ2diMllnZEdobElIUjNieUJKUkhNZ2RHaGhkQ0JwYlcxbFpHbGhkR1ZzZVNCd2NtVmpaV1JsWkNCaElGd2liV0Z5YTJWeVhDSWdhVzRnWW05MGFDQnpkSEpwYm1kekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdmJtVkpSRnh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSM2IwbEVYRzRnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUU1bFlYSmxjM1FnWTI5dGJXOXVJR0Z1WTJWemRHOXlJRWxFTENCdmNpQjBhR1VnWlcxd2RIa2djM1J5YVc1bklHbG1JRzV2Ym1VdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJHYVhKemRFTnZiVzF2YmtGdVkyVnpkRzl5U1VRb2IyNWxTVVFzSUhSM2IwbEVLU0I3WEc0Z0lIWmhjaUJ0YVc1TVpXNW5kR2dnUFNCTllYUm9MbTFwYmlodmJtVkpSQzVzWlc1bmRHZ3NJSFIzYjBsRUxteGxibWQwYUNrN1hHNGdJR2xtSUNodGFXNU1aVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lIMWNiaUFnZG1GeUlHeGhjM1JEYjIxdGIyNU5ZWEpyWlhKSmJtUmxlQ0E5SURBN1hHNGdJQzh2SUZWelpTQmdQRDFnSUhSdklIUnlZWFpsY25ObElIVnVkR2xzSUhSb1pTQmNJa1ZQVEZ3aUlHOW1JSFJvWlNCemFHOXlkR1Z5SUhOMGNtbHVaeTVjYmlBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BEMGdiV2x1VEdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNCcFppQW9hWE5DYjNWdVpHRnllU2h2Ym1WSlJDd2dhU2tnSmlZZ2FYTkNiM1Z1WkdGeWVTaDBkMjlKUkN3Z2FTa3BJSHRjYmlBZ0lDQWdJR3hoYzNSRGIyMXRiMjVOWVhKclpYSkpibVJsZUNBOUlHazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHZibVZKUkM1amFHRnlRWFFvYVNrZ0lUMDlJSFIzYjBsRUxtTm9ZWEpCZENocEtTa2dlMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhaaGNpQnNiMjVuWlhOMFEyOXRiVzl1U1VRZ1BTQnZibVZKUkM1emRXSnpkSElvTUN3Z2JHRnpkRU52YlcxdmJrMWhjbXRsY2tsdVpHVjRLVHRjYmlBZ0lXbHpWbUZzYVdSSlJDaHNiMjVuWlhOMFEyOXRiVzl1U1VRcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJkbGRFWnBjbk4wUTI5dGJXOXVRVzVqWlhOMGIzSkpSQ2dsY3l3Z0pYTXBPaUJGZUhCbFkzUmxaQ0JoSUhaaGJHbGtJRkpsWVdOMElFUlBUU0JKUkRvZ0pYTW5MQ0J2Ym1WSlJDd2dkSGR2U1VRc0lHeHZibWRsYzNSRGIyMXRiMjVKUkNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCeVpYUjFjbTRnYkc5dVoyVnpkRU52YlcxdmJrbEVPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGUnlZWFpsY25ObGN5QjBhR1VnY0dGeVpXNTBJSEJoZEdnZ1ltVjBkMlZsYmlCMGQyOGdTVVJ6SUNobGFYUm9aWElnZFhBZ2IzSWdaRzkzYmlrdUlGUm9aU0JKUkhNZ2JYVnpkRnh1SUNvZ2JtOTBJR0psSUhSb1pTQnpZVzFsTENCaGJtUWdkR2hsY21VZ2JYVnpkQ0JsZUdsemRDQmhJSEJoY21WdWRDQndZWFJvSUdKbGRIZGxaVzRnZEdobGJTNGdTV1lnZEdobFhHNGdLaUJqWVd4c1ltRmpheUJ5WlhSMWNtNXpJR0JtWVd4elpXQXNJSFJ5WVhabGNuTmhiQ0JwY3lCemRHOXdjR1ZrTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UDNOMGNtbHVaMzBnYzNSaGNuUWdTVVFnWVhRZ2QyaHBZMmdnZEc4Z2MzUmhjblFnZEhKaGRtVnljMkZzTGx4dUlDb2dRSEJoY21GdElIcy9jM1J5YVc1bmZTQnpkRzl3SUVsRUlHRjBJSGRvYVdOb0lIUnZJR1Z1WkNCMGNtRjJaWEp6WVd3dVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0JqWWlCRFlXeHNZbUZqYXlCMGJ5QnBiblp2YTJVZ1pXRmphQ0JKUkNCM2FYUm9MbHh1SUNvZ1FIQmhjbUZ0SUhzcWZTQmhjbWNnUVhKbmRXMWxiblFnZEc4Z2FXNTJiMnRsSUhSb1pTQmpZV3hzWW1GamF5QjNhWFJvTGx4dUlDb2dRSEJoY21GdElIcy9ZbTl2YkdWaGJuMGdjMnRwY0VacGNuTjBJRmRvWlhSb1pYSWdiM0lnYm05MElIUnZJSE5yYVhBZ2RHaGxJR1pwY25OMElHNXZaR1V1WEc0Z0tpQkFjR0Z5WVcwZ2V6OWliMjlzWldGdWZTQnphMmx3VEdGemRDQlhhR1YwYUdWeUlHOXlJRzV2ZENCMGJ5QnphMmx3SUhSb1pTQnNZWE4wSUc1dlpHVXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUIwY21GMlpYSnpaVkJoY21WdWRGQmhkR2dvYzNSaGNuUXNJSE4wYjNBc0lHTmlMQ0JoY21jc0lITnJhWEJHYVhKemRDd2djMnRwY0V4aGMzUXBJSHRjYmlBZ2MzUmhjblFnUFNCemRHRnlkQ0I4ZkNBbkp6dGNiaUFnYzNSdmNDQTlJSE4wYjNBZ2ZId2dKeWM3WEc0Z0lDRW9jM1JoY25RZ0lUMDlJSE4wYjNBcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNndUxpNHBPaUJEWVc1dWIzUWdkSEpoZG1WeWMyVWdabkp2YlNCaGJtUWdkRzhnZEdobElITmhiV1VnU1VRc0lHQWxjMkF1Snl3Z2MzUmhjblFwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZG1GeUlIUnlZWFpsY25ObFZYQWdQU0JwYzBGdVkyVnpkRzl5U1VSUFppaHpkRzl3TENCemRHRnlkQ2s3WEc0Z0lDRW9kSEpoZG1WeWMyVlZjQ0I4ZkNCcGMwRnVZMlZ6ZEc5eVNVUlBaaWh6ZEdGeWRDd2djM1J2Y0NrcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNnbGN5d2dKWE1zSUM0dUxpazZJRU5oYm01dmRDQjBjbUYyWlhKelpTQm1jbTl0SUhSM2J5QkpSSE1nZEdoaGRDQmtieUFuSUNzZ0oyNXZkQ0JvWVhabElHRWdjR0Z5Wlc1MElIQmhkR2d1Snl3Z2MzUmhjblFzSUhOMGIzQXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdMeThnVkhKaGRtVnljMlVnWm5KdmJTQmdjM1JoY25SZ0lIUnZJR0J6ZEc5d1lDQnZibVVnWkdWd2RHZ2dZWFFnWVNCMGFXMWxMbHh1SUNCMllYSWdaR1Z3ZEdnZ1BTQXdPMXh1SUNCMllYSWdkSEpoZG1WeWMyVWdQU0IwY21GMlpYSnpaVlZ3SUQ4Z1oyVjBVR0Z5Wlc1MFNVUWdPaUJuWlhST1pYaDBSR1Z6WTJWdVpHRnVkRWxFTzF4dUlDQm1iM0lnS0haaGNpQnBaQ0E5SUhOMFlYSjBPenNnTHlvZ2RXNTBhV3dnWW5KbFlXc2dLaTlwWkNBOUlIUnlZWFpsY25ObEtHbGtMQ0J6ZEc5d0tTa2dlMXh1SUNBZ0lIWmhjaUJ5WlhRN1hHNGdJQ0FnYVdZZ0tDZ2hjMnRwY0VacGNuTjBJSHg4SUdsa0lDRTlQU0J6ZEdGeWRDa2dKaVlnS0NGemEybHdUR0Z6ZENCOGZDQnBaQ0FoUFQwZ2MzUnZjQ2twSUh0Y2JpQWdJQ0FnSUhKbGRDQTlJR05pS0dsa0xDQjBjbUYyWlhKelpWVndMQ0JoY21jcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2NtVjBJRDA5UFNCbVlXeHpaU0I4ZkNCcFpDQTlQVDBnYzNSdmNDa2dlMXh1SUNBZ0lDQWdMeThnVDI1c2VTQmljbVZoYXlBdkwyRm1kR1Z5THk4Z2RtbHphWFJwYm1jZ1lITjBiM0JnTGx4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVJQ0FnSUNFb1pHVndkR2dyS3lBOElFMUJXRjlVVWtWRlgwUkZVRlJJS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2QwY21GMlpYSnpaVkJoY21WdWRGQmhkR2dvSlhNc0lDVnpMQ0F1TGk0cE9pQkVaWFJsWTNSbFpDQmhiaUJwYm1acGJtbDBaU0JzYjI5d0lIZG9hV3hsSUNjZ0t5QW5kSEpoZG1WeWMybHVaeUIwYUdVZ1VtVmhZM1FnUkU5TklFbEVJSFJ5WldVdUlGUm9hWE1nYldGNUlHSmxJR1IxWlNCMGJ5QnRZV3htYjNKdFpXUWdTVVJ6T2lBbGN5Y3NJSE4wWVhKMExDQnpkRzl3TENCcFpDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RXRnVZV2RsY3lCMGFHVWdTVVJ6SUdGemMybG5ibVZrSUhSdklFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJuTWdiMllnVW1WaFkzUWdZMjl0Y0c5dVpXNTBjeTRnVkdocGMxeHVJQ29nZFhObGN5QmhJSE53WldOcFptbGpJSE5qYUdWdFpTQnBiaUJ2Y21SbGNpQjBieUIwY21GMlpYSnpaU0IwYUdVZ1JFOU5JR1ZtWm1samFXVnVkR3g1SUNobExtY3VJR2x1WEc0Z0tpQnZjbVJsY2lCMGJ5QnphVzExYkdGMFpTQmxkbVZ1ZEhNcExseHVJQ3BjYmlBcUlFQnBiblJsY201aGJGeHVJQ292WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1nUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuTjBjblZqZEhNZ1lTQlNaV0ZqZENCeWIyOTBJRWxFWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdRU0JTWldGamRDQnliMjkwSUVsRUxseHVJQ0FnS2k5Y2JpQWdZM0psWVhSbFVtVmhZM1JTYjI5MFNVUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaMlYwVW1WaFkzUlNiMjkwU1VSVGRISnBibWNvVW1WaFkzUlNiMjkwU1c1a1pYZ3VZM0psWVhSbFVtVmhZM1JTYjI5MFNXNWtaWGdvS1NrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU52Ym5OMGNuVmpkSE1nWVNCU1pXRmpkQ0JKUkNCaWVTQnFiMmx1YVc1bklHRWdjbTl2ZENCSlJDQjNhWFJvSUdFZ2JtRnRaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKdmIzUkpSQ0JTYjI5MElFbEVJRzltSUdFZ2NHRnlaVzUwSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzVoYldVZ1FTQmpiMjF3YjI1bGJuUW5jeUJ1WVcxbElDaGhjeUJtYkdGMGRHVnVaV1FnWTJocGJHUnlaVzRwTGx4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRUVnVW1WaFkzUWdTVVF1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWTNKbFlYUmxVbVZoWTNSSlJEb2dablZ1WTNScGIyNGdLSEp2YjNSSlJDd2dibUZ0WlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ5YjI5MFNVUWdLeUJ1WVcxbE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhSeklIUm9aU0JFVDAwZ1NVUWdiMllnZEdobElGSmxZV04wSUdOdmJYQnZibVZ1ZENCMGFHRjBJR2x6SUhSb1pTQnliMjkwSUc5bUlIUm9aU0IwY21WbElIUm9ZWFJjYmlBZ0lDb2dZMjl1ZEdGcGJuTWdkR2hsSUZKbFlXTjBJR052YlhCdmJtVnVkQ0IzYVhSb0lIUm9aU0J6ZFhCd2JHbGxaQ0JFVDAwZ1NVUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCRVQwMGdTVVFnYjJZZ1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZXo5emRISnBibWQ5SUVSUFRTQkpSQ0J2WmlCMGFHVWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElIUm9ZWFFnYVhNZ2RHaGxJSEp2YjNRdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1oyVjBVbVZoWTNSU2IyOTBTVVJHY205dFRtOWtaVWxFT2lCbWRXNWpkR2x2YmlBb2FXUXBJSHRjYmlBZ0lDQnBaaUFvYVdRZ0ppWWdhV1F1WTJoaGNrRjBLREFwSUQwOVBTQlRSVkJCVWtGVVQxSWdKaVlnYVdRdWJHVnVaM1JvSUQ0Z01Ta2dlMXh1SUNBZ0lDQWdkbUZ5SUdsdVpHVjRJRDBnYVdRdWFXNWtaWGhQWmloVFJWQkJVa0ZVVDFJc0lERXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHbHVaR1Y0SUQ0Z0xURWdQeUJwWkM1emRXSnpkSElvTUN3Z2FXNWtaWGdwSURvZ2FXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJVY21GMlpYSnpaWE1nZEdobElFbEVJR2hwWlhKaGNtTm9lU0JoYm1RZ2FXNTJiMnRsY3lCMGFHVWdjM1Z3Y0d4cFpXUWdZR05pWUNCdmJpQmhibmtnU1VSeklIUm9ZWFJjYmlBZ0lDb2djMmh2ZFd4a0lIZHZkV3hrSUhKbFkyVnBkbVVnWVNCZ2JXOTFjMlZGYm5SbGNtQWdiM0lnWUcxdmRYTmxUR1ZoZG1WZ0lHVjJaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQk9UMVJGT2lCRWIyVnpJRzV2ZENCcGJuWnZhMlVnZEdobElHTmhiR3hpWVdOcklHOXVJSFJvWlNCdVpXRnlaWE4wSUdOdmJXMXZiaUJoYm1ObGMzUnZjaUJpWldOaGRYTmxYRzRnSUNBcUlHNXZkR2hwYm1jZ1hDSmxiblJsY21Wa1hDSWdiM0lnWENKc1pXWjBYQ0lnZEdoaGRDQmxiR1Z0Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiR1ZoZG1WSlJDQkpSQ0JpWldsdVp5QnNaV1owTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaVzUwWlhKSlJDQkpSQ0JpWldsdVp5QmxiblJsY21Wa0xseHVJQ0FnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCallpQkRZV3hzWW1GamF5QjBieUJwYm5admEyVWdiMjRnWldGamFDQmxiblJsY21Wa0wyeGxablFnU1VRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ2RYQkJjbWNnUVhKbmRXMWxiblFnZEc4Z2FXNTJiMnRsSUhSb1pTQmpZV3hzWW1GamF5QjNhWFJvSUc5dUlHeGxablFnU1VSekxseHVJQ0FnS2lCQWNHRnlZVzBnZXlwOUlHUnZkMjVCY21jZ1FYSm5kVzFsYm5RZ2RHOGdhVzUyYjJ0bElIUm9aU0JqWVd4c1ltRmpheUIzYVhSb0lHOXVJR1Z1ZEdWeVpXUWdTVVJ6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUhSeVlYWmxjbk5sUlc1MFpYSk1aV0YyWlRvZ1puVnVZM1JwYjI0Z0tHeGxZWFpsU1VRc0lHVnVkR1Z5U1VRc0lHTmlMQ0IxY0VGeVp5d2daRzkzYmtGeVp5a2dlMXh1SUNBZ0lIWmhjaUJoYm1ObGMzUnZja2xFSUQwZ1oyVjBSbWx5YzNSRGIyMXRiMjVCYm1ObGMzUnZja2xFS0d4bFlYWmxTVVFzSUdWdWRHVnlTVVFwTzF4dUlDQWdJR2xtSUNoaGJtTmxjM1J2Y2tsRUlDRTlQU0JzWldGMlpVbEVLU0I3WEc0Z0lDQWdJQ0IwY21GMlpYSnpaVkJoY21WdWRGQmhkR2dvYkdWaGRtVkpSQ3dnWVc1alpYTjBiM0pKUkN3Z1kySXNJSFZ3UVhKbkxDQm1ZV3h6WlN3Z2RISjFaU2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hoYm1ObGMzUnZja2xFSUNFOVBTQmxiblJsY2tsRUtTQjdYRzRnSUNBZ0lDQjBjbUYyWlhKelpWQmhjbVZ1ZEZCaGRHZ29ZVzVqWlhOMGIzSkpSQ3dnWlc1MFpYSkpSQ3dnWTJJc0lHUnZkMjVCY21jc0lIUnlkV1VzSUdaaGJITmxLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZOcGJYVnNZWFJsY3lCMGFHVWdkSEpoZG1WeWMyRnNJRzltSUdFZ2RIZHZMWEJvWVhObExDQmpZWEIwZFhKbEwySjFZbUpzWlNCbGRtVnVkQ0JrYVhOd1lYUmphQzVjYmlBZ0lDcGNiaUFnSUNvZ1RrOVVSVG9nVkdocGN5QjBjbUYyWlhKellXd2dhR0Z3Y0dWdWN5QnZiaUJKUkhNZ2QybDBhRzkxZENCMGIzVmphR2x1WnlCMGFHVWdSRTlOTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHRnlaMlYwU1VRZ1NVUWdiMllnZEdobElIUmhjbWRsZENCdWIyUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQmpZaUJEWVd4c1ltRmpheUIwYnlCcGJuWnZhMlV1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdLbjBnWVhKbklFRnlaM1Z0Wlc1MElIUnZJR2x1ZG05clpTQjBhR1VnWTJGc2JHSmhZMnNnZDJsMGFDNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQjBjbUYyWlhKelpWUjNiMUJvWVhObE9pQm1kVzVqZEdsdmJpQW9kR0Z5WjJWMFNVUXNJR05pTENCaGNtY3BJSHRjYmlBZ0lDQnBaaUFvZEdGeVoyVjBTVVFwSUh0Y2JpQWdJQ0FnSUhSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNnbkp5d2dkR0Z5WjJWMFNVUXNJR05pTENCaGNtY3NJSFJ5ZFdVc0lHWmhiSE5sS1R0Y2JpQWdJQ0FnSUhSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNoMFlYSm5aWFJKUkN3Z0p5Y3NJR05pTENCaGNtY3NJR1poYkhObExDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmhiV1VnWVhNZ1lIUnlZWFpsY25ObFZIZHZVR2hoYzJWZ0lHSjFkQ0J6YTJsd2N5QjBhR1VnWUhSaGNtZGxkRWxFWUM1Y2JpQWdJQ292WEc0Z0lIUnlZWFpsY25ObFZIZHZVR2hoYzJWVGEybHdWR0Z5WjJWME9pQm1kVzVqZEdsdmJpQW9kR0Z5WjJWMFNVUXNJR05pTENCaGNtY3BJSHRjYmlBZ0lDQnBaaUFvZEdGeVoyVjBTVVFwSUh0Y2JpQWdJQ0FnSUhSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNnbkp5d2dkR0Z5WjJWMFNVUXNJR05pTENCaGNtY3NJSFJ5ZFdVc0lIUnlkV1VwTzF4dUlDQWdJQ0FnZEhKaGRtVnljMlZRWVhKbGJuUlFZWFJvS0hSaGNtZGxkRWxFTENBbkp5d2dZMklzSUdGeVp5d2dkSEoxWlN3Z2RISjFaU2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWNtRjJaWEp6WlNCaElHNXZaR1VnU1VRc0lHTmhiR3hwYm1jZ2RHaGxJSE4xY0hCc2FXVmtJR0JqWW1BZ1ptOXlJR1ZoWTJnZ1lXNWpaWE4wYjNJZ1NVUXVJRVp2Y2x4dUlDQWdLaUJsZUdGdGNHeGxMQ0J3WVhOemFXNW5JR0F1TUM0a2NtOTNMVEF1TVdBZ2QyOTFiR1FnY21WemRXeDBJR2x1SUdCalltQWdaMlYwZEdsdVp5QmpZV3hzWldSY2JpQWdJQ29nZDJsMGFDQmdMakJnTENCZ0xqQXVKSEp2ZHkwd1lDd2dZVzVrSUdBdU1DNGtjbTkzTFRBdU1XQXVYRzRnSUNBcVhHNGdJQ0FxSUU1UFZFVTZJRlJvYVhNZ2RISmhkbVZ5YzJGc0lHaGhjSEJsYm5NZ2IyNGdTVVJ6SUhkcGRHaHZkWFFnZEc5MVkyaHBibWNnZEdobElFUlBUUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSaGNtZGxkRWxFSUVsRUlHOW1JSFJvWlNCMFlYSm5aWFFnYm05a1pTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1kySWdRMkZzYkdKaFkyc2dkRzhnYVc1MmIydGxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5cDlJR0Z5WnlCQmNtZDFiV1Z1ZENCMGJ5QnBiblp2YTJVZ2RHaGxJR05oYkd4aVlXTnJJSGRwZEdndVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2RISmhkbVZ5YzJWQmJtTmxjM1J2Y25NNklHWjFibU4wYVc5dUlDaDBZWEpuWlhSSlJDd2dZMklzSUdGeVp5a2dlMXh1SUNBZ0lIUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDZ25KeXdnZEdGeVoyVjBTVVFzSUdOaUxDQmhjbWNzSUhSeWRXVXNJR1poYkhObEtUdGNiaUFnZlN4Y2JseHVJQ0JuWlhSR2FYSnpkRU52YlcxdmJrRnVZMlZ6ZEc5eVNVUTZJR2RsZEVacGNuTjBRMjl0Ylc5dVFXNWpaWE4wYjNKSlJDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1JYaHdiM05sWkNCbWIzSWdkVzVwZENCMFpYTjBhVzVuTGx4dUlDQWdLaUJBY0hKcGRtRjBaVnh1SUNBZ0tpOWNiaUFnWDJkbGRFNWxlSFJFWlhOalpXNWtZVzUwU1VRNklHZGxkRTVsZUhSRVpYTmpaVzVrWVc1MFNVUXNYRzVjYmlBZ2FYTkJibU5sYzNSdmNrbEVUMlk2SUdselFXNWpaWE4wYjNKSlJFOW1MRnh1WEc0Z0lGTkZVRUZTUVZSUFVqb2dVMFZRUVZKQlZFOVNYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE03SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RJc29tb3JwaGljXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZHJlbicpO1xudmFyIFJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudCcpO1xudmFyIFJlYWN0Q2xhc3MgPSByZXF1aXJlKCcuL1JlYWN0Q2xhc3MnKTtcbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IHJlcXVpcmUoJy4vUmVhY3RET01GYWN0b3JpZXMnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG52YXIgUmVhY3RQcm9wVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzJyk7XG52YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIG9ubHlDaGlsZCA9IHJlcXVpcmUoJy4vb25seUNoaWxkJyk7XG5cbnZhciBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG52YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xudmFyIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudDtcbiAgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5O1xuICBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY2xvbmVFbGVtZW50O1xufVxuXG52YXIgUmVhY3QgPSB7XG5cbiAgLy8gTW9kZXJuXG5cbiAgQ2hpbGRyZW46IHtcbiAgICBtYXA6IFJlYWN0Q2hpbGRyZW4ubWFwLFxuICAgIGZvckVhY2g6IFJlYWN0Q2hpbGRyZW4uZm9yRWFjaCxcbiAgICBjb3VudDogUmVhY3RDaGlsZHJlbi5jb3VudCxcbiAgICB0b0FycmF5OiBSZWFjdENoaWxkcmVuLnRvQXJyYXksXG4gICAgb25seTogb25seUNoaWxkXG4gIH0sXG5cbiAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LFxuICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcyxcbiAgY3JlYXRlQ2xhc3M6IFJlYWN0Q2xhc3MuY3JlYXRlQ2xhc3MsXG4gIGNyZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICAvLyBDdXJyZW50bHkgYSBub29wLiBXaWxsIGJlIHVzZWQgdG8gdmFsaWRhdGUgYW5kIHRyYWNlIG1peGlucy5cbiAgICByZXR1cm4gbWl4aW47XG4gIH0sXG5cbiAgLy8gVGhpcyBsb29rcyBET00gc3BlY2lmaWMgYnV0IHRoZXNlIGFyZSBhY3R1YWxseSBpc29tb3JwaGljIGhlbHBlcnNcbiAgLy8gc2luY2UgdGhleSBhcmUganVzdCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLlxuICBET006IFJlYWN0RE9NRmFjdG9yaWVzLFxuXG4gIHZlcnNpb246IFJlYWN0VmVyc2lvbixcblxuICAvLyBIb29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcgZWxzZS5cbiAgX19zcHJlYWQ6IGFzc2lnblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSSmMyOXRiM0p3YUdsakxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSSmMyOXRiM0p3YUdsalhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRGFHbHNaSEpsYmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGFHbHNaSEpsYmljcE8xeHVkbUZ5SUZKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFEyeGhjM01nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTJ4aGMzTW5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRVWmhZM1J2Y21sbGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFHWVdOMGIzSnBaWE1uS1R0Y2JuWmhjaUJTWldGamRFVnNaVzFsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJXeGxiV1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MFZtRnNhV1JoZEc5eUp5azdYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUhKdmNGUjVjR1Z6SnlrN1hHNTJZWElnVW1WaFkzUldaWEp6YVc5dUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGWmxjbk5wYjI0bktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUc5dWJIbERhR2xzWkNBOUlISmxjWFZwY21Vb0p5NHZiMjVzZVVOb2FXeGtKeWs3WEc1Y2JuWmhjaUJqY21WaGRHVkZiR1Z0Wlc1MElEMGdVbVZoWTNSRmJHVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUTdYRzUyWVhJZ1kzSmxZWFJsUm1GamRHOXllU0E5SUZKbFlXTjBSV3hsYldWdWRDNWpjbVZoZEdWR1lXTjBiM0o1TzF4dWRtRnlJR05zYjI1bFJXeGxiV1Z1ZENBOUlGSmxZV04wUld4bGJXVnVkQzVqYkc5dVpVVnNaVzFsYm5RN1hHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUdOeVpXRjBaVVZzWlcxbGJuUWdQU0JTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJdVkzSmxZWFJsUld4bGJXVnVkRHRjYmlBZ1kzSmxZWFJsUm1GamRHOXllU0E5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpNWpjbVZoZEdWR1lXTjBiM0o1TzF4dUlDQmpiRzl1WlVWc1pXMWxiblFnUFNCU1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSXVZMnh2Ym1WRmJHVnRaVzUwTzF4dWZWeHVYRzUyWVhJZ1VtVmhZM1FnUFNCN1hHNWNiaUFnTHk4Z1RXOWtaWEp1WEc1Y2JpQWdRMmhwYkdSeVpXNDZJSHRjYmlBZ0lDQnRZWEE2SUZKbFlXTjBRMmhwYkdSeVpXNHViV0Z3TEZ4dUlDQWdJR1p2Y2tWaFkyZzZJRkpsWVdOMFEyaHBiR1J5Wlc0dVptOXlSV0ZqYUN4Y2JpQWdJQ0JqYjNWdWREb2dVbVZoWTNSRGFHbHNaSEpsYmk1amIzVnVkQ3hjYmlBZ0lDQjBiMEZ5Y21GNU9pQlNaV0ZqZEVOb2FXeGtjbVZ1TG5SdlFYSnlZWGtzWEc0Z0lDQWdiMjVzZVRvZ2IyNXNlVU5vYVd4a1hHNGdJSDBzWEc1Y2JpQWdRMjl0Y0c5dVpXNTBPaUJTWldGamRFTnZiWEJ2Ym1WdWRDeGNibHh1SUNCamNtVmhkR1ZGYkdWdFpXNTBPaUJqY21WaGRHVkZiR1Z0Wlc1MExGeHVJQ0JqYkc5dVpVVnNaVzFsYm5RNklHTnNiMjVsUld4bGJXVnVkQ3hjYmlBZ2FYTldZV3hwWkVWc1pXMWxiblE2SUZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZEN4Y2JseHVJQ0F2THlCRGJHRnpjMmxqWEc1Y2JpQWdVSEp2Y0ZSNWNHVnpPaUJTWldGamRGQnliM0JVZVhCbGN5eGNiaUFnWTNKbFlYUmxRMnhoYzNNNklGSmxZV04wUTJ4aGMzTXVZM0psWVhSbFEyeGhjM01zWEc0Z0lHTnlaV0YwWlVaaFkzUnZjbms2SUdOeVpXRjBaVVpoWTNSdmNua3NYRzRnSUdOeVpXRjBaVTFwZUdsdU9pQm1kVzVqZEdsdmJpQW9iV2w0YVc0cElIdGNiaUFnSUNBdkx5QkRkWEp5Wlc1MGJIa2dZU0J1YjI5d0xpQlhhV3hzSUdKbElIVnpaV1FnZEc4Z2RtRnNhV1JoZEdVZ1lXNWtJSFJ5WVdObElHMXBlR2x1Y3k1Y2JpQWdJQ0J5WlhSMWNtNGdiV2w0YVc0N1hHNGdJSDBzWEc1Y2JpQWdMeThnVkdocGN5QnNiMjlyY3lCRVQwMGdjM0JsWTJsbWFXTWdZblYwSUhSb1pYTmxJR0Z5WlNCaFkzUjFZV3hzZVNCcGMyOXRiM0p3YUdsaklHaGxiSEJsY25OY2JpQWdMeThnYzJsdVkyVWdkR2hsZVNCaGNtVWdhblZ6ZENCblpXNWxjbUYwYVc1bklFUlBUU0J6ZEhKcGJtZHpMbHh1SUNCRVQwMDZJRkpsWVdOMFJFOU5SbUZqZEc5eWFXVnpMRnh1WEc0Z0lIWmxjbk5wYjI0NklGSmxZV04wVm1WeWMybHZiaXhjYmx4dUlDQXZMeUJJYjI5cklHWnZjaUJLVTFnZ2MzQnlaV0ZrTENCa2IyNG5kQ0IxYzJVZ2RHaHBjeUJtYjNJZ1lXNTVkR2hwYm1jZ1pXeHpaUzVjYmlBZ1gxOXpjSEpsWVdRNklHRnpjMmxuYmx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamREc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE1vdW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01GZWF0dXJlRmxhZ3MnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeSA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5Jyk7XG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VIYW5kbGVzJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSByZXF1aXJlKCcuL1JlYWN0TWFya3VwQ2hlY2tzdW0nKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgY29udGFpbnNOb2RlID0gcmVxdWlyZSgnZmJqcy9saWIvY29udGFpbnNOb2RlJyk7XG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7XG52YXIgbm9kZUNhY2hlID0ge307XG5cbnZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG52YXIgRE9DX05PREVfVFlQRSA9IDk7XG52YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7XG5cbnZhciBvd25lckRvY3VtZW50Q29udGV4dEtleSA9ICdfX1JlYWN0TW91bnRfb3duZXJEb2N1bWVudCQnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cbi8qKiBNYXBwaW5nIGZyb20gcmVhY3RSb290SUQgdG8gUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLiAqL1xudmFyIGluc3RhbmNlc0J5UmVhY3RSb290SUQgPSB7fTtcblxuLyoqIE1hcHBpbmcgZnJvbSByZWFjdFJvb3RJRCB0byBgY29udGFpbmVyYCBub2Rlcy4gKi9cbnZhciBjb250YWluZXJzQnlSZWFjdFJvb3RJRCA9IHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvKiogX19ERVZfXy1vbmx5IG1hcHBpbmcgZnJvbSByZWFjdFJvb3RJRCB0byByb290IGVsZW1lbnRzLiAqL1xuICB2YXIgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRCA9IHt9O1xufVxuXG4vLyBVc2VkIHRvIHN0b3JlIGJyZWFkdGgtZmlyc3Qgc2VhcmNoIHN0YXRlIGluIGZpbmRDb21wb25lbnRSb290LlxudmFyIGZpbmRDb21wb25lbnRSb290UmV1c2FibGVBcnJheSA9IFtdO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gKiB0aGF0J3Mgbm90IGNvbW1vbiBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gc3RyaW5ncy5cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHdoZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2VcbiAqL1xuZnVuY3Rpb24gZmlyc3REaWZmZXJlbmNlSW5kZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuICB2YXIgbWluTGVuID0gTWF0aC5taW4oc3RyaW5nMS5sZW5ndGgsIHN0cmluZzIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5MZW47IGkrKykge1xuICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5jaGFyQXQoaSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5nMS5sZW5ndGggPT09IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFpblxuICogYSBSZWFjdCBjb21wb25lbnRcbiAqIEByZXR1cm4gez8qfSBET00gZWxlbWVudCB0aGF0IG1heSBoYXZlIHRoZSByZWFjdFJvb3QgSUQsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgaWYgKCFjb250YWluZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluIGEgUmVhY3QgY29tcG9uZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gQSBcInJlYWN0Um9vdFwiIElELCBpZiBhIFJlYWN0IGNvbXBvbmVudCBpcyByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKSB7XG4gIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICByZXR1cm4gcm9vdEVsZW1lbnQgJiYgUmVhY3RNb3VudC5nZXRJRChyb290RWxlbWVudCk7XG59XG5cbi8qKlxuICogQWNjZXNzaW5nIG5vZGVbQVRUUl9OQU1FXSBvciBjYWxsaW5nIGdldEF0dHJpYnV0ZShBVFRSX05BTUUpIG9uIGEgZm9ybVxuICogZWxlbWVudCBjYW4gcmV0dXJuIGl0cyBjb250cm9sIHdob3NlIG5hbWUgb3IgSUQgZXF1YWxzIEFUVFJfTkFNRS4gQWxsXG4gKiBET00gbm9kZXMgc3VwcG9ydCBgZ2V0QXR0cmlidXRlTm9kZWAgYnV0IHRoaXMgY2FuIGFsc28gZ2V0IGNhbGxlZCBvblxuICogb3RoZXIgb2JqZWN0cyBzbyBqdXN0IHJldHVybiAnJyBpZiB3ZSdyZSBnaXZlbiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhXG4gKiBET00gbm9kZSAoc3VjaCBhcyB3aW5kb3cpLlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR8RE9NV2luZG93fERPTURvY3VtZW50fERPTVRleHROb2RlfSBub2RlIERPTSBub2RlLlxuICogQHJldHVybiB7c3RyaW5nfSBJRCBvZiB0aGUgc3VwcGxpZWQgYGRvbU5vZGVgLlxuICovXG5mdW5jdGlvbiBnZXRJRChub2RlKSB7XG4gIHZhciBpZCA9IGludGVybmFsR2V0SUQobm9kZSk7XG4gIGlmIChpZCkge1xuICAgIGlmIChub2RlQ2FjaGUuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICB2YXIgY2FjaGVkID0gbm9kZUNhY2hlW2lkXTtcbiAgICAgIGlmIChjYWNoZWQgIT09IG5vZGUpIHtcbiAgICAgICAgISFpc1ZhbGlkKGNhY2hlZCwgaWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0TW91bnQ6IFR3byB2YWxpZCBidXQgdW5lcXVhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGAlc2A6ICVzJywgQVRUUl9OQU1FLCBpZCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIG5vZGVDYWNoZVtpZF0gPSBub2RlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlQ2FjaGVbaWRdID0gbm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaWQ7XG59XG5cbmZ1bmN0aW9uIGludGVybmFsR2V0SUQobm9kZSkge1xuICAvLyBJZiBub2RlIGlzIHNvbWV0aGluZyBsaWtlIGEgd2luZG93LCBkb2N1bWVudCwgb3IgdGV4dCBub2RlLCBub25lIG9mXG4gIC8vIHdoaWNoIHN1cHBvcnQgYXR0cmlidXRlcyBvciBhIC5nZXRBdHRyaWJ1dGUgbWV0aG9kLCBncmFjZWZ1bGx5IHJldHVyblxuICAvLyB0aGUgZW1wdHkgc3RyaW5nLCBhcyBpZiB0aGUgYXR0cmlidXRlIHdlcmUgbWlzc2luZy5cbiAgcmV0dXJuIG5vZGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSB8fCAnJztcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBSZWFjdC1zcGVjaWZpYyBJRCBvZiB0aGUgZ2l2ZW4gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgVGhlIERPTSBub2RlIHdob3NlIElEIHdpbGwgYmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSB2YWx1ZSBvZiB0aGUgSUQgYXR0cmlidXRlLlxuICovXG5mdW5jdGlvbiBzZXRJRChub2RlLCBpZCkge1xuICB2YXIgb2xkSUQgPSBpbnRlcm5hbEdldElEKG5vZGUpO1xuICBpZiAob2xkSUQgIT09IGlkKSB7XG4gICAgZGVsZXRlIG5vZGVDYWNoZVtvbGRJRF07XG4gIH1cbiAgbm9kZS5zZXRBdHRyaWJ1dGUoQVRUUl9OQU1FLCBpZCk7XG4gIG5vZGVDYWNoZVtpZF0gPSBub2RlO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIFJlYWN0LWdlbmVyYXRlZCBET00gSUQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIEEgUmVhY3QtZ2VuZXJhdGVkIERPTSBJRC5cbiAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IERPTSBub2RlIHdpdGggdGhlIHN1cHBsZWQgYGlkYC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXROb2RlKGlkKSB7XG4gIGlmICghbm9kZUNhY2hlLmhhc093blByb3BlcnR5KGlkKSB8fCAhaXNWYWxpZChub2RlQ2FjaGVbaWRdLCBpZCkpIHtcbiAgICBub2RlQ2FjaGVbaWRdID0gUmVhY3RNb3VudC5maW5kUmVhY3ROb2RlQnlJRChpZCk7XG4gIH1cbiAgcmV0dXJuIG5vZGVDYWNoZVtpZF07XG59XG5cbi8qKlxuICogRmluZHMgdGhlIG5vZGUgd2l0aCB0aGUgc3VwcGxpZWQgcHVibGljIFJlYWN0IGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSB7Kn0gaW5zdGFuY2UgQSBwdWJsaWMgUmVhY3QgaW5zdGFuY2UuXG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gRE9NIG5vZGUgd2l0aCB0aGUgc3VwcGxlZCBgaWRgLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgdmFyIGlkID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdGFuY2UpLl9yb290Tm9kZUlEO1xuICBpZiAoUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5LmlzTnVsbENvbXBvbmVudElEKGlkKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghbm9kZUNhY2hlLmhhc093blByb3BlcnR5KGlkKSB8fCAhaXNWYWxpZChub2RlQ2FjaGVbaWRdLCBpZCkpIHtcbiAgICBub2RlQ2FjaGVbaWRdID0gUmVhY3RNb3VudC5maW5kUmVhY3ROb2RlQnlJRChpZCk7XG4gIH1cbiAgcmV0dXJuIG5vZGVDYWNoZVtpZF07XG59XG5cbi8qKlxuICogQSBub2RlIGlzIFwidmFsaWRcIiBpZiBpdCBpcyBjb250YWluZWQgYnkgYSBjdXJyZW50bHkgbW91bnRlZCBjb250YWluZXIuXG4gKlxuICogVGhpcyBtZWFucyB0aGF0IHRoZSBub2RlIGRvZXMgbm90IGhhdmUgdG8gYmUgY29udGFpbmVkIGJ5IGEgZG9jdW1lbnQgaW5cbiAqIG9yZGVyIHRvIGJlIGNvbnNpZGVyZWQgdmFsaWQuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBleHBlY3RlZCBJRCBvZiB0aGUgbm9kZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIG5vZGUgaXMgY29udGFpbmVkIGJ5IGEgbW91bnRlZCBjb250YWluZXIuXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQobm9kZSwgaWQpIHtcbiAgaWYgKG5vZGUpIHtcbiAgICAhKGludGVybmFsR2V0SUQobm9kZSkgPT09IGlkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdE1vdW50OiBVbmV4cGVjdGVkIG1vZGlmaWNhdGlvbiBvZiBgJXNgJywgQVRUUl9OQU1FKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgY29udGFpbmVyID0gUmVhY3RNb3VudC5maW5kUmVhY3RDb250YWluZXJGb3JJRChpZCk7XG4gICAgaWYgKGNvbnRhaW5lciAmJiBjb250YWluc05vZGUoY29udGFpbmVyLCBub2RlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENhdXNlcyB0aGUgY2FjaGUgdG8gZm9yZ2V0IGFib3V0IG9uZSBSZWFjdC1zcGVjaWZpYyBJRC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIElEIHRvIGZvcmdldC5cbiAqL1xuZnVuY3Rpb24gcHVyZ2VJRChpZCkge1xuICBkZWxldGUgbm9kZUNhY2hlW2lkXTtcbn1cblxudmFyIGRlZXBlc3ROb2RlU29GYXIgPSBudWxsO1xuZnVuY3Rpb24gZmluZERlZXBlc3RDYWNoZWRBbmNlc3RvckltcGwoYW5jZXN0b3JJRCkge1xuICB2YXIgYW5jZXN0b3IgPSBub2RlQ2FjaGVbYW5jZXN0b3JJRF07XG4gIGlmIChhbmNlc3RvciAmJiBpc1ZhbGlkKGFuY2VzdG9yLCBhbmNlc3RvcklEKSkge1xuICAgIGRlZXBlc3ROb2RlU29GYXIgPSBhbmNlc3RvcjtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIG5vZGUgaXNuJ3QgcG9wdWxhdGVkIGluIHRoZSBjYWNoZSwgc28gcHJlc3VtYWJseSBub25lIG9mIGl0c1xuICAgIC8vIGRlc2NlbmRhbnRzIGFyZS4gQnJlYWsgb3V0IG9mIHRoZSBsb29wLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZGVlcGVzdCBjYWNoZWQgbm9kZSB3aG9zZSBJRCBpcyBhIHByZWZpeCBvZiBgdGFyZ2V0SURgLlxuICovXG5mdW5jdGlvbiBmaW5kRGVlcGVzdENhY2hlZEFuY2VzdG9yKHRhcmdldElEKSB7XG4gIGRlZXBlc3ROb2RlU29GYXIgPSBudWxsO1xuICBSZWFjdEluc3RhbmNlSGFuZGxlcy50cmF2ZXJzZUFuY2VzdG9ycyh0YXJnZXRJRCwgZmluZERlZXBlc3RDYWNoZWRBbmNlc3RvckltcGwpO1xuXG4gIHZhciBmb3VuZE5vZGUgPSBkZWVwZXN0Tm9kZVNvRmFyO1xuICBkZWVwZXN0Tm9kZVNvRmFyID0gbnVsbDtcbiAgcmV0dXJuIGZvdW5kTm9kZTtcbn1cblxuLyoqXG4gKiBNb3VudHMgdGhpcyBjb21wb25lbnQgYW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuICovXG5mdW5jdGlvbiBtb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCByb290SUQsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIGlmIChSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgY29udGV4dCA9IGFzc2lnbih7fSwgY29udGV4dCk7XG4gICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAgICAgY29udGV4dFtvd25lckRvY3VtZW50Q29udGV4dEtleV0gPSBjb250YWluZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHRbb3duZXJEb2N1bWVudENvbnRleHRLZXldID0gY29udGFpbmVyLm93bmVyRG9jdW1lbnQ7XG4gICAgfVxuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGNvbnRleHQgPT09IGVtcHR5T2JqZWN0KSB7XG4gICAgICBjb250ZXh0ID0ge307XG4gICAgfVxuICAgIHZhciB0YWcgPSBjb250YWluZXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKG51bGwsIHRhZywgbnVsbCk7XG4gIH1cbiAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gIGNvbXBvbmVudEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gY29tcG9uZW50SW5zdGFuY2U7XG4gIFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9kZShtYXJrdXAsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBCYXRjaGVkIG1vdW50LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuICovXG5mdW5jdGlvbiBiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZShjb21wb25lbnRJbnN0YW5jZSwgcm9vdElELCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZChcbiAgLyogZm9yY2VIVE1MICovc2hvdWxkUmV1c2VNYXJrdXApO1xuICB0cmFuc2FjdGlvbi5wZXJmb3JtKG1vdW50Q29tcG9uZW50SW50b05vZGUsIG51bGwsIGNvbXBvbmVudEluc3RhbmNlLCByb290SUQsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcbiAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG59XG5cbi8qKlxuICogVW5tb3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVubW91bnQgZnJvbS5cbiAqIEBmaW5hbFxuICogQGludGVybmFsXG4gKiBAc2VlIHtSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGV9XG4gKi9cbmZ1bmN0aW9uIHVubW91bnRDb21wb25lbnRGcm9tTm9kZShpbnN0YW5jZSwgY29udGFpbmVyKSB7XG4gIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlKTtcblxuICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG4gICAgY29udGFpbmVyID0gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2VtcHR5aW5nLWEtbm9kZVxuICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgfVxufVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGhhcyBhIGRpcmVjdCBSZWFjdC1yZW5kZXJlZCBjaGlsZCB0aGF0IGlzXG4gKiBub3QgYSBSZWFjdCByb290IGVsZW1lbnQuIFVzZWZ1bCBmb3Igd2FybmluZyBpbiBgcmVuZGVyYCxcbiAqIGB1bm1vdW50Q29tcG9uZW50QXROb2RlYCwgZXRjLlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBlbGVtZW50IGNvbnRhaW5zIGEgZGlyZWN0IGNoaWxkIHRoYXQgd2FzXG4gKiByZW5kZXJlZCBieSBSZWFjdCBidXQgaXMgbm90IGEgcm9vdCBlbGVtZW50LlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGhhc05vblJvb3RSZWFjdENoaWxkKG5vZGUpIHtcbiAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQobm9kZSk7XG4gIHJldHVybiByZWFjdFJvb3RJRCA/IHJlYWN0Um9vdElEICE9PSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQocmVhY3RSb290SUQpIDogZmFsc2U7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgKGRlZXBlc3QpIGFuY2VzdG9yIG9mIGEgbm9kZSB3aGljaCBpcyByZW5kZXJlZCBieSB0aGlzIGNvcHlcbiAqIG9mIFJlYWN0LlxuICovXG5mdW5jdGlvbiBmaW5kRmlyc3RSZWFjdERPTUltcGwobm9kZSkge1xuICAvLyBUaGlzIG5vZGUgbWlnaHQgYmUgZnJvbSBhbm90aGVyIFJlYWN0IGluc3RhbmNlLCBzbyB3ZSBtYWtlIHN1cmUgbm90IHRvXG4gIC8vIGV4YW1pbmUgdGhlIG5vZGUgY2FjaGUgaGVyZVxuICBmb3IgKDsgbm9kZSAmJiBub2RlLnBhcmVudE5vZGUgIT09IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHtcbiAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgLy8gTm90IGEgRE9NRWxlbWVudCwgdGhlcmVmb3JlIG5vdCBhIFJlYWN0IGNvbXBvbmVudFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBub2RlSUQgPSBpbnRlcm5hbEdldElEKG5vZGUpO1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKG5vZGVJRCk7XG5cbiAgICAvLyBJZiBjb250YWluZXJzQnlSZWFjdFJvb3RJRCBjb250YWlucyB0aGUgY29udGFpbmVyIHdlIGZpbmQgYnkgY3Jhd2xpbmcgdXBcbiAgICAvLyB0aGUgdHJlZSwgd2Uga25vdyB0aGF0IHRoaXMgaW5zdGFuY2Ugb2YgUmVhY3QgcmVuZGVyZWQgdGhlIG5vZGUuXG4gICAgLy8gbmIuIGlzVmFsaWQncyBzdHJhdGVneSAod2l0aCBjb250YWluc05vZGUpIGRvZXMgbm90IHdvcmsgYmVjYXVzZSByZW5kZXJcbiAgICAvLyB0cmVlcyBtYXkgYmUgbmVzdGVkIGFuZCB3ZSBkb24ndCB3YW50IGEgZmFsc2UgcG9zaXRpdmUgaW4gdGhhdCBjYXNlLlxuICAgIHZhciBjdXJyZW50ID0gbm9kZTtcbiAgICB2YXIgbGFzdElEO1xuICAgIGRvIHtcbiAgICAgIGxhc3RJRCA9IGludGVybmFsR2V0SUQoY3VycmVudCk7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xuICAgICAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBUaGUgcGFzc2VkLWluIG5vZGUgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgY29udGFpbmVyIGl0IHdhc1xuICAgICAgICAvLyBvcmlnaW5hbGx5IHJlbmRlcmVkIGludG8uXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKGxhc3RJRCAhPT0gcmVhY3RSb290SUQpO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvblxuICogY29tcG9zaXRlcyBpbnN0ZWFkIG9mIGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50c1xuICogaGVyZS5cbiAqL1xudmFyIFRvcExldmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHt9O1xuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBUb3BMZXZlbFdyYXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcbn1cblRvcExldmVsV3JhcHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzLnByb3BzIGlzIGFjdHVhbGx5IGEgUmVhY3RFbGVtZW50XG4gIHJldHVybiB0aGlzLnByb3BzO1xufTtcblxuLyoqXG4gKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBSZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcgaXRzXG4gKiByZXByZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5kIGluc2VydGluZyB0aGVtIGludG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuXG4gKlxuICogICBSZWFjdE1vdW50LnJlbmRlcihcbiAqICAgICBjb21wb25lbnQsXG4gKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpXG4gKiAgICk7XG4gKlxuICogICA8ZGl2IGlkPVwiY29udGFpbmVyXCI+ICAgICAgICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29udGFpbmVyYC5cbiAqICAgICA8ZGl2IGRhdGEtcmVhY3RpZD1cIi4zXCI+ICAgICAgICAgICAgICA8LS0gUmVuZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0XG4gKiAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuXG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICpcbiAqIEluc2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1lbnQgcmVuZGVyZWQgaXMgdGhlIFwicmVhY3RSb290XCIuXG4gKi9cbnZhciBSZWFjdE1vdW50ID0ge1xuXG4gIFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLFxuXG4gIC8qKiBFeHBvc2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgKiovXG4gIF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9vdElELFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgaG9vayBwcm92aWRlZCB0byBzdXBwb3J0IHJlbmRlcmluZyBSZWFjdCBjb21wb25lbnRzIHdoaWxlXG4gICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3RcbiAgICogY2hhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAgYmVpbmcgcmVuZGVyZWQgaW50by5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVuZGVyQ2FsbGJhY2sgVGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuXG4gICAqL1xuICBzY3JvbGxNb25pdG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykge1xuICAgIHJlbmRlckNhbGxiYWNrKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRha2UgYSBjb21wb25lbnQgdGhhdCdzIGFscmVhZHkgbW91bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFscmVhZHkgaW4gdGhlIERPTVxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRlclxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqL1xuICBfdXBkYXRlUm9vdENvbXBvbmVudDogZnVuY3Rpb24gKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgUmVhY3RNb3VudC5zY3JvbGxNb25pdG9yKGNvbnRhaW5lciwgZnVuY3Rpb24gKCkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50KTtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFja0ludGVybmFsKHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBSZWNvcmQgdGhlIHJvb3QgZWxlbWVudCBpbiBjYXNlIGl0IGxhdGVyIGdldHMgdHJhbnNwbGFudGVkLlxuICAgICAgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtnZXRSZWFjdFJvb3RJRChjb250YWluZXIpXSA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcmV2Q29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGNvbXBvbmVudCBpbnRvIHRoZSBpbnN0YW5jZSBtYXAgYW5kIHN0YXJ0cyBzY3JvbGwgdmFsdWVcbiAgICogbW9uaXRvcmluZ1xuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEByZXR1cm4ge3N0cmluZ30gcmVhY3RSb290IElEIHByZWZpeFxuICAgKi9cbiAgX3JlZ2lzdGVyQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dENvbXBvbmVudCwgY29udGFpbmVyKSB7XG4gICAgIShjb250YWluZXIgJiYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnX3JlZ2lzdGVyQ29tcG9uZW50KC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO1xuXG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RNb3VudC5yZWdpc3RlckNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIGluc3RhbmNlc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gbmV4dENvbXBvbmVudDtcbiAgICByZXR1cm4gcmVhY3RSb290SUQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlciBhIG5ldyBjb21wb25lbnQgaW50byB0aGUgRE9NLlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgaWYgd2Ugc2hvdWxkIHNraXAgdGhlIG1hcmt1cCBpbnNlcnRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IG5leHRDb21wb25lbnRcbiAgICovXG4gIF9yZW5kZXJOZXdSb290Q29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgbnVsbCk7XG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RNb3VudC5fcmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lcik7XG5cbiAgICAvLyBUaGUgaW5pdGlhbCByZW5kZXIgaXMgc3luY2hyb25vdXMgYnV0IGFueSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZ1xuICAgIC8vIHJlbmRlcmluZywgaW4gY29tcG9uZW50V2lsbE1vdW50IG9yIGNvbXBvbmVudERpZE1vdW50LCB3aWxsIGJlIGJhdGNoZWRcbiAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYmF0Y2hpbmcgc3RyYXRlZ3kuXG5cbiAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUsIGNvbXBvbmVudEluc3RhbmNlLCByZWFjdFJvb3RJRCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gUmVjb3JkIHRoZSByb290IGVsZW1lbnQgaW4gY2FzZSBpdCBsYXRlciBnZXRzIHRyYW5zcGxhbnRlZC5cbiAgICAgIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4gICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwYXJlbnRDb21wb25lbnQgVGhlIGNvbmNlcHR1YWwgcGFyZW50IG9mIHRoaXMgcmVuZGVyIHRyZWUuXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgICEocGFyZW50Q29tcG9uZW50ICE9IG51bGwgJiYgcGFyZW50Q29tcG9uZW50Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUgYSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICAhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhbiBlbGVtZW50IHN0cmluZywgbWFrZSBzdXJlIHRvIGluc3RhbnRpYXRlICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNvbXBvbmVudCBjbGFzcywgbWFrZSBzdXJlIHRvIGluc3RhbnRpYXRlICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOlxuICAgIC8vIENoZWNrIGlmIGl0IHF1YWNrcyBsaWtlIGFuIGVsZW1lbnRcbiAgICBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IG5ldyBSZWFjdEVsZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBuZXh0RWxlbWVudCk7XG5cbiAgICB2YXIgcHJldkNvbXBvbmVudCA9IGluc3RhbmNlc0J5UmVhY3RSb290SURbZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKV07XG5cbiAgICBpZiAocHJldkNvbXBvbmVudCkge1xuICAgICAgdmFyIHByZXZXcmFwcGVkRWxlbWVudCA9IHByZXZDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldldyYXBwZWRFbGVtZW50LnByb3BzO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0TW91bnQuX3VwZGF0ZVJvb3RDb21wb25lbnQocHJldkNvbXBvbmVudCwgbmV4dFdyYXBwZWRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZShjb250YWluZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgdmFyIGNvbnRhaW5lckhhc1JlYWN0TWFya3VwID0gcmVhY3RSb290RWxlbWVudCAmJiAhIWludGVybmFsR2V0SUQocmVhY3RSb290RWxlbWVudCk7XG4gICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsICdyZW5kZXIoLi4uKTogUmVwbGFjaW5nIFJlYWN0LXJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSBuZXcgcm9vdCAnICsgJ2NvbXBvbmVudC4gSWYgeW91IGludGVuZGVkIHRvIHVwZGF0ZSB0aGUgY2hpbGRyZW4gb2YgdGhpcyBub2RlLCAnICsgJ3lvdSBzaG91bGQgaW5zdGVhZCBoYXZlIHRoZSBleGlzdGluZyBjaGlsZHJlbiB1cGRhdGUgdGhlaXIgc3RhdGUgJyArICdhbmQgcmVuZGVyIHRoZSBuZXcgY29tcG9uZW50cyBpbnN0ZWFkIG9mIGNhbGxpbmcgUmVhY3RET00ucmVuZGVyLicpIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoIWNvbnRhaW5lckhhc1JlYWN0TWFya3VwIHx8IHJlYWN0Um9vdEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgdmFyIHJvb3RFbGVtZW50U2libGluZyA9IHJlYWN0Um9vdEVsZW1lbnQ7XG4gICAgICAgIHdoaWxlIChyb290RWxlbWVudFNpYmxpbmcpIHtcbiAgICAgICAgICBpZiAoaW50ZXJuYWxHZXRJRChyb290RWxlbWVudFNpYmxpbmcpKSB7XG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3JlbmRlcigpOiBUYXJnZXQgbm9kZSBoYXMgbWFya3VwIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgdGhlcmUgJyArICdhcmUgdW5yZWxhdGVkIG5vZGVzIGFzIHdlbGwuIFRoaXMgaXMgbW9zdCBjb21tb25seSBjYXVzZWQgYnkgJyArICd3aGl0ZS1zcGFjZSBpbnNlcnRlZCBhcm91bmQgc2VydmVyLXJlbmRlcmVkIG1hcmt1cC4nKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByb290RWxlbWVudFNpYmxpbmcgPSByb290RWxlbWVudFNpYmxpbmcubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkUmV1c2VNYXJrdXAgPSBjb250YWluZXJIYXNSZWFjdE1hcmt1cCAmJiAhcHJldkNvbXBvbmVudCAmJiAhY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQ7XG4gICAgdmFyIGNvbXBvbmVudCA9IFJlYWN0TW91bnQuX3JlbmRlck5ld1Jvb3RDb21wb25lbnQobmV4dFdyYXBwZWRFbGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBwYXJlbnRDb21wb25lbnQgIT0gbnVsbCA/IHBhcmVudENvbXBvbmVudC5fcmVhY3RJbnRlcm5hbEluc3RhbmNlLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHBhcmVudENvbXBvbmVudC5fcmVhY3RJbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0KSA6IGVtcHR5T2JqZWN0KS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoY29tcG9uZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICAgKlxuICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbFxuICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGVcbiAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJgLlxuICAgKi9cbiAgcmVuZGVyOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIobnVsbCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjb250YWluZXIgbm9kZSBpbnRvIHdoaWNoIFJlYWN0IGNvbXBvbmVudHMgd2lsbCBiZSByZW5kZXJlZC5cbiAgICogVGhpcyBhbHNvIGNyZWF0ZXMgdGhlIFwicmVhY3RSb290XCIgSUQgdGhhdCB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBlbGVtZW50XG4gICAqIHJlbmRlcmVkIHdpdGhpbi5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgYXMgYSBjb250YWluZXIuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFwicmVhY3RSb290XCIgSUQgb2YgZWxlbWVudHMgcmVuZGVyZWQgd2l0aGluLlxuICAgKi9cbiAgcmVnaXN0ZXJDb250YWluZXI6IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICB2YXIgcmVhY3RSb290SUQgPSBnZXRSZWFjdFJvb3RJRChjb250YWluZXIpO1xuICAgIGlmIChyZWFjdFJvb3RJRCkge1xuICAgICAgLy8gSWYgb25lIGV4aXN0cywgbWFrZSBzdXJlIGl0IGlzIGEgdmFsaWQgXCJyZWFjdFJvb3RcIiBJRC5cbiAgICAgIHJlYWN0Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKHJlYWN0Um9vdElEKTtcbiAgICB9XG4gICAgaWYgKCFyZWFjdFJvb3RJRCkge1xuICAgICAgLy8gTm8gdmFsaWQgXCJyZWFjdFJvb3RcIiBJRCBmb3VuZCwgY3JlYXRlIG9uZS5cbiAgICAgIHJlYWN0Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RSb290SUQoKTtcbiAgICB9XG4gICAgY29udGFpbmVyc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gY29udGFpbmVyO1xuICAgIHJldHVybiByZWFjdFJvb3RJRDtcbiAgfSxcblxuICAvKipcbiAgICogVW5tb3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhlIGBjb250YWluZXJgLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWluaW5nIGEgUmVhY3QgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgY29tcG9uZW50IHdhcyBmb3VuZCBpbiBhbmQgdW5tb3VudGVkIGZyb21cbiAgICogICAgICAgICAgICAgICAgICAgYGNvbnRhaW5lcmBcbiAgICovXG4gIHVubW91bnRDb21wb25lbnRBdE5vZGU6IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJpY3RseSBzcGVha2luZywgdW5tb3VudGluZyB3b24ndCBjYXVzZSBhXG4gICAgLy8gcmVuZGVyIGJ1dCB3ZSBzdGlsbCBkb24ndCBleHBlY3QgdG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLilcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1cGRhdGVzIGZyb20gcmVuZGVyICcgKyAnaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcblxuICAgICEoY29udGFpbmVyICYmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgcmVhY3RSb290SUQgPSBnZXRSZWFjdFJvb3RJRChjb250YWluZXIpO1xuICAgIHZhciBjb21wb25lbnQgPSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgYmVpbmcgdW5tb3VudGVkIHdhcyByZW5kZXJlZCBieSBSZWFjdCwgYnV0IGlzbid0IGFcbiAgICAgIC8vIHJvb3Qgbm9kZS5cbiAgICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjb250YWluZXIgaXRzZWxmIGlzIGEgUmVhY3Qgcm9vdCBub2RlLlxuICAgICAgdmFyIGNvbnRhaW5lcklEID0gaW50ZXJuYWxHZXRJRChjb250YWluZXIpO1xuICAgICAgdmFyIGlzQ29udGFpbmVyUmVhY3RSb290ID0gY29udGFpbmVySUQgJiYgY29udGFpbmVySUQgPT09IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChjb250YWluZXJJRCk7XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91XFwncmUgYXR0ZW1wdGluZyB0byB1bm1vdW50ICcgKyAnd2FzIHJlbmRlcmVkIGJ5IFJlYWN0IGFuZCBpcyBub3QgYSB0b3AtbGV2ZWwgY29udGFpbmVyLiAlcycsIGlzQ29udGFpbmVyUmVhY3RSb290ID8gJ1lvdSBtYXkgaGF2ZSBhY2NpZGVudGFsbHkgcGFzc2VkIGluIGEgUmVhY3Qgcm9vdCBub2RlIGluc3RlYWQgJyArICdvZiBpdHMgY29udGFpbmVyLicgOiAnSW5zdGVhZCwgaGF2ZSB0aGUgcGFyZW50IGNvbXBvbmVudCB1cGRhdGUgaXRzIHN0YXRlIGFuZCAnICsgJ3JlcmVuZGVyIGluIG9yZGVyIHRvIHJlbW92ZSB0aGlzIGNvbXBvbmVudC4nKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXModW5tb3VudENvbXBvbmVudEZyb21Ob2RlLCBjb21wb25lbnQsIGNvbnRhaW5lcik7XG4gICAgZGVsZXRlIGluc3RhbmNlc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuICAgIGRlbGV0ZSBjb250YWluZXJzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGRlbGV0ZSByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBjb250YWlucyBSZWFjdCBjb21wb25lbnQgdG8gd2hpY2ggdGhlXG4gICAqIHN1cHBsaWVkIERPTSBgaWRgIGJlbG9uZ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgSUQgb2YgYW4gZWxlbWVudCByZW5kZXJlZCBieSBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7P0RPTUVsZW1lbnR9IERPTSBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGBpZGAuXG4gICAqL1xuICBmaW5kUmVhY3RDb250YWluZXJGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKGlkKTtcbiAgICB2YXIgY29udGFpbmVyID0gY29udGFpbmVyc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciByb290RWxlbWVudCA9IHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuICAgICAgaWYgKHJvb3RFbGVtZW50ICYmIHJvb3RFbGVtZW50LnBhcmVudE5vZGUgIT09IGNvbnRhaW5lcikge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhcbiAgICAgICAgLy8gQ2FsbCBpbnRlcm5hbEdldElEIGhlcmUgYmVjYXVzZSBnZXRJRCBjYWxscyBpc1ZhbGlkIHdoaWNoIGNhbGxzXG4gICAgICAgIC8vIGZpbmRSZWFjdENvbnRhaW5lckZvcklEICh0aGlzIGZ1bmN0aW9uKS5cbiAgICAgICAgaW50ZXJuYWxHZXRJRChyb290RWxlbWVudCkgPT09IHJlYWN0Um9vdElELCAnUmVhY3RNb3VudDogUm9vdCBlbGVtZW50IElEIGRpZmZlcmVkIGZyb20gcmVhY3RSb290SUQuJykgOiB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBjb250YWluZXJDaGlsZCA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICBpZiAoY29udGFpbmVyQ2hpbGQgJiYgcmVhY3RSb290SUQgPT09IGludGVybmFsR2V0SUQoY29udGFpbmVyQ2hpbGQpKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGNvbnRhaW5lciBoYXMgYSBuZXcgY2hpbGQgd2l0aCB0aGUgc2FtZSBJRCBhcyB0aGUgb2xkXG4gICAgICAgICAgLy8gcm9vdCBlbGVtZW50LCB0aGVuIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdIGlzXG4gICAgICAgICAgLy8ganVzdCBzdGFsZSBhbmQgbmVlZHMgdG8gYmUgdXBkYXRlZC4gVGhlIGNhc2UgdGhhdCBkZXNlcnZlcyBhXG4gICAgICAgICAgLy8gd2FybmluZyBpcyB3aGVuIHRoZSBjb250YWluZXIgaXMgZW1wdHkuXG4gICAgICAgICAgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF0gPSBjb250YWluZXJDaGlsZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0TW91bnQ6IFJvb3QgZWxlbWVudCBoYXMgYmVlbiByZW1vdmVkIGZyb20gaXRzIG9yaWdpbmFsICcgKyAnY29udGFpbmVyLiBOZXcgY29udGFpbmVyOiAlcycsIHJvb3RFbGVtZW50LnBhcmVudE5vZGUpIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfSxcblxuICAvKipcbiAgICogRmluZHMgYW4gZWxlbWVudCByZW5kZXJlZCBieSBSZWFjdCB3aXRoIHRoZSBzdXBwbGllZCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIGEgRE9NIG5vZGUgaW4gdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7RE9NRWxlbWVudH0gUm9vdCBET00gbm9kZSBvZiB0aGUgUmVhY3QgY29tcG9uZW50LlxuICAgKi9cbiAgZmluZFJlYWN0Tm9kZUJ5SUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciByZWFjdFJvb3QgPSBSZWFjdE1vdW50LmZpbmRSZWFjdENvbnRhaW5lckZvcklEKGlkKTtcbiAgICByZXR1cm4gUmVhY3RNb3VudC5maW5kQ29tcG9uZW50Um9vdChyZWFjdFJvb3QsIGlkKTtcbiAgfSxcblxuICAvKipcbiAgICogVHJhdmVyc2VzIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhlIHN1cHBsaWVkIG5vZGUgdG8gZmluZCBhIG5vZGUgdGhhdCBpcyBhXG4gICAqIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIFJlYWN0IGNvbXBvbmVudCByZW5kZXJlZCBieSB0aGlzIGNvcHkgb2YgUmVhY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gbm9kZVxuICAgKiBAcmV0dXJuIHs/RE9NRXZlbnRUYXJnZXR9XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0Rmlyc3RSZWFjdERPTTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gZmluZEZpcnN0UmVhY3RET01JbXBsKG5vZGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaW5kcyBhIG5vZGUgd2l0aCB0aGUgc3VwcGxpZWQgYHRhcmdldElEYCBpbnNpZGUgb2YgdGhlIHN1cHBsaWVkXG4gICAqIGBhbmNlc3Rvck5vZGVgLiAgRXhwbG9pdHMgdGhlIElEIG5hbWluZyBzY2hlbWUgdG8gcGVyZm9ybSB0aGUgc2VhcmNoXG4gICAqIHF1aWNrbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IGFuY2VzdG9yTm9kZSBTZWFyY2ggZnJvbSB0aGlzIHJvb3QuXG4gICAqIEBwYXJhcm0ge3N0cmluZ30gdGFyZ2V0SUQgSUQgb2YgdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIHtET01FdmVudFRhcmdldH0gRE9NIG5vZGUgd2l0aCB0aGUgc3VwcGxpZWQgYHRhcmdldElEYC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBmaW5kQ29tcG9uZW50Um9vdDogZnVuY3Rpb24gKGFuY2VzdG9yTm9kZSwgdGFyZ2V0SUQpIHtcbiAgICB2YXIgZmlyc3RDaGlsZHJlbiA9IGZpbmRDb21wb25lbnRSb290UmV1c2FibGVBcnJheTtcbiAgICB2YXIgY2hpbGRJbmRleCA9IDA7XG5cbiAgICB2YXIgZGVlcGVzdEFuY2VzdG9yID0gZmluZERlZXBlc3RDYWNoZWRBbmNlc3Rvcih0YXJnZXRJRCkgfHwgYW5jZXN0b3JOb2RlO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBvbiB0aGUgbmV4dCBsaW5lOyBnaXZlIGFuIGVhcmx5IHdhcm5pbmdcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRlZXBlc3RBbmNlc3RvciAhPSBudWxsLCAnUmVhY3QgY2FuXFwndCBmaW5kIHRoZSByb290IGNvbXBvbmVudCBub2RlIGZvciBkYXRhLXJlYWN0aWQgdmFsdWUgJyArICdgJXNgLiBJZiB5b3VcXCdyZSBzZWVpbmcgdGhpcyBtZXNzYWdlLCBpdCBwcm9iYWJseSBtZWFucyB0aGF0ICcgKyAneW91XFwndmUgbG9hZGVkIHR3byBjb3BpZXMgb2YgUmVhY3Qgb24gdGhlIHBhZ2UuIEF0IHRoaXMgdGltZSwgb25seSAnICsgJ2Egc2luZ2xlIGNvcHkgb2YgUmVhY3QgY2FuIGJlIGxvYWRlZCBhdCBhIHRpbWUuJywgdGFyZ2V0SUQpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZpcnN0Q2hpbGRyZW5bMF0gPSBkZWVwZXN0QW5jZXN0b3IuZmlyc3RDaGlsZDtcbiAgICBmaXJzdENoaWxkcmVuLmxlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoY2hpbGRJbmRleCA8IGZpcnN0Q2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQgPSBmaXJzdENoaWxkcmVuW2NoaWxkSW5kZXgrK107XG4gICAgICB2YXIgdGFyZ2V0Q2hpbGQ7XG5cbiAgICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgICB2YXIgY2hpbGRJRCA9IFJlYWN0TW91bnQuZ2V0SUQoY2hpbGQpO1xuICAgICAgICBpZiAoY2hpbGRJRCkge1xuICAgICAgICAgIC8vIEV2ZW4gaWYgd2UgZmluZCB0aGUgbm9kZSB3ZSdyZSBsb29raW5nIGZvciwgd2UgZmluaXNoIGxvb3BpbmdcbiAgICAgICAgICAvLyB0aHJvdWdoIGl0cyBzaWJsaW5ncyB0byBlbnN1cmUgdGhleSdyZSBjYWNoZWQgc28gdGhhdCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgLy8gdG8gcmV2aXNpdCB0aGlzIG5vZGUgYWdhaW4uIE90aGVyd2lzZSwgd2UgbWFrZSBuXjIgY2FsbHMgdG8gZ2V0SURcbiAgICAgICAgICAvLyB3aGVuIHZpc2l0aW5nIHRoZSBtYW55IGNoaWxkcmVuIG9mIGEgc2luZ2xlIG5vZGUgaW4gb3JkZXIuXG5cbiAgICAgICAgICBpZiAodGFyZ2V0SUQgPT09IGNoaWxkSUQpIHtcbiAgICAgICAgICAgIHRhcmdldENoaWxkID0gY2hpbGQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChSZWFjdEluc3RhbmNlSGFuZGxlcy5pc0FuY2VzdG9ySURPZihjaGlsZElELCB0YXJnZXRJRCkpIHtcbiAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBjaGlsZCB3aG9zZSBJRCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgZ2l2ZW4gSUQsXG4gICAgICAgICAgICAvLyB0aGVuIHdlIGNhbiBiZSBzdXJlIHRoYXQgd2Ugb25seSB3YW50IHRvIHNlYXJjaCB0aGUgc3VidHJlZVxuICAgICAgICAgICAgLy8gcm9vdGVkIGF0IHRoaXMgY2hpbGQsIHNvIHdlIGNhbiB0aHJvdyBvdXQgdGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgICAgICAvLyBzZWFyY2ggc3RhdGUuXG4gICAgICAgICAgICBmaXJzdENoaWxkcmVuLmxlbmd0aCA9IGNoaWxkSW5kZXggPSAwO1xuICAgICAgICAgICAgZmlyc3RDaGlsZHJlbi5wdXNoKGNoaWxkLmZpcnN0Q2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGNoaWxkIGhhZCBubyBJRCwgdGhlbiB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgaXQgd2FzXG4gICAgICAgICAgLy8gaW5qZWN0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgYnJvd3NlciwgYXMgd2hlbiBhIGA8dGFibGU+YFxuICAgICAgICAgIC8vIGVsZW1lbnQgc3Byb3V0cyBhbiBleHRyYSBgPHRib2R5PmAgY2hpbGQgYXMgYSBzaWRlIGVmZmVjdCBvZlxuICAgICAgICAgIC8vIGAuaW5uZXJIVE1MYCBwYXJzaW5nLiBPcHRpbWlzdGljYWxseSBjb250aW51ZSBkb3duIHRoaXNcbiAgICAgICAgICAvLyBicmFuY2gsIGJ1dCBub3QgYmVmb3JlIGV4YW1pbmluZyB0aGUgb3RoZXIgc2libGluZ3MuXG4gICAgICAgICAgZmlyc3RDaGlsZHJlbi5wdXNoKGNoaWxkLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZztcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldENoaWxkKSB7XG4gICAgICAgIC8vIEVtcHR5aW5nIGZpcnN0Q2hpbGRyZW4vZmluZENvbXBvbmVudFJvb3RSZXVzYWJsZUFycmF5IGlzXG4gICAgICAgIC8vIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCBidXQgaXQgaGVscHMgdGhlIEdDIHJlY2xhaW1cbiAgICAgICAgLy8gYW55IG5vZGVzIHRoYXQgd2VyZSBsZWZ0IGF0IHRoZSBlbmQgb2YgdGhlIHNlYXJjaC5cbiAgICAgICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSAwO1xuXG4gICAgICAgIHJldHVybiB0YXJnZXRDaGlsZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmaXJzdENoaWxkcmVuLmxlbmd0aCA9IDA7XG5cbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZmluZENvbXBvbmVudFJvb3QoLi4uLCAlcyk6IFVuYWJsZSB0byBmaW5kIGVsZW1lbnQuIFRoaXMgcHJvYmFibHkgJyArICdtZWFucyB0aGUgRE9NIHdhcyB1bmV4cGVjdGVkbHkgbXV0YXRlZCAoZS5nLiwgYnkgdGhlIGJyb3dzZXIpLCAnICsgJ3VzdWFsbHkgZHVlIHRvIGZvcmdldHRpbmcgYSA8dGJvZHk+IHdoZW4gdXNpbmcgdGFibGVzLCBuZXN0aW5nIHRhZ3MgJyArICdsaWtlIDxmb3JtPiwgPHA+LCBvciA8YT4sIG9yIHVzaW5nIG5vbi1TVkcgZWxlbWVudHMgaW4gYW4gPHN2Zz4gJyArICdwYXJlbnQuICcgKyAnVHJ5IGluc3BlY3RpbmcgdGhlIGNoaWxkIG5vZGVzIG9mIHRoZSBlbGVtZW50IHdpdGggUmVhY3QgSUQgYCVzYC4nLCB0YXJnZXRJRCwgUmVhY3RNb3VudC5nZXRJRChhbmNlc3Rvck5vZGUpKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH0sXG5cbiAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVuY3Rpb24gKG1hcmt1cCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rpb24pIHtcbiAgICAhKGNvbnRhaW5lciAmJiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtb3VudENvbXBvbmVudEludG9Ob2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IHZhbGlkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChzaG91bGRSZXVzZU1hcmt1cCkge1xuICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgICBpZiAoUmVhY3RNYXJrdXBDaGVja3N1bS5jYW5SZXVzZU1hcmt1cChtYXJrdXAsIHJvb3RFbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuICAgICAgICByb290RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuXG4gICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUsIGNoZWNrc3VtKTtcblxuICAgICAgICB2YXIgbm9ybWFsaXplZE1hcmt1cCA9IG1hcmt1cDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0cmlldmVkIGZyb20gdGhlIERPTSwgdmFyaW91cyBub3JtYWxpemF0aW9uc1xuICAgICAgICAgIC8vIHdpbGwgaGF2ZSBvY2N1cnJlZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBIZXJlLFxuICAgICAgICAgIC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmVyXG4gICAgICAgICAgLy8gdHlwZSB0byBwZXJmb3JtIHRoZSBzYW1lIG5vcm1hbGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuXG4gICAgICAgICAgdmFyIG5vcm1hbGl6ZXI7XG4gICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3VwO1xuICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vcm1hbGl6ZXIpO1xuICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQud3JpdGUobWFya3VwKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9ybWFsaXplZE1hcmt1cCwgcm9vdE1hcmt1cCk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0gJyAoY2xpZW50KSAnICsgbm9ybWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKSArICdcXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7XG5cbiAgICAgICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50IHVzaW5nICcgKyAnc2VydmVyIHJlbmRlcmluZyBidXQgdGhlIGNoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIHVzdWFsbHkgJyArICdtZWFucyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJlbnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gJyArICd0aGUgY2xpZW50IGZyb20gdGhlIG9uZSBvbiB0aGUgc2VydmVyLCBvciB5b3VyIHJlbmRlcigpICcgKyAnbWV0aG9kcyBhcmUgaW1wdXJlLiBSZWFjdCBjYW5ub3QgaGFuZGxlIHRoaXMgY2FzZSBkdWUgdG8gJyArICdjcm9zcy1icm93c2VyIHF1aXJrcyBieSByZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSAnICsgJ3Nob3VsZCBsb29rIGZvciBlbnZpcm9ubWVudCBkZXBlbmRlbnQgY29kZSBpbiB5b3VyIGNvbXBvbmVudHMgJyArICdhbmQgZW5zdXJlIHRoZSBwcm9wcyBhcmUgdGhlIHNhbWUgY2xpZW50IGFuZCBzZXJ2ZXIgc2lkZTpcXG4lcycsIGRpZmZlcmVuY2UpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3QgYXR0ZW1wdGVkIHRvIHJldXNlIG1hcmt1cCBpbiBhIGNvbnRhaW5lciBidXQgdGhlICcgKyAnY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgeW91IGFyZSAnICsgJ3VzaW5nIHNlcnZlciByZW5kZXJpbmcgYW5kIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSAnICsgJ3NlcnZlciB3YXMgbm90IHdoYXQgdGhlIGNsaWVudCB3YXMgZXhwZWN0aW5nLiBSZWFjdCBpbmplY3RlZCAnICsgJ25ldyBtYXJrdXAgdG8gY29tcGVuc2F0ZSB3aGljaCB3b3JrcyBidXQgeW91IGhhdmUgbG9zdCBtYW55ICcgKyAnb2YgdGhlIGJlbmVmaXRzIG9mIHNlcnZlciByZW5kZXJpbmcuIEluc3RlYWQsIGZpZ3VyZSBvdXQgJyArICd3aHkgdGhlIG1hcmt1cCBiZWluZyBnZW5lcmF0ZWQgaXMgZGlmZmVyZW50IG9uIHRoZSBjbGllbnQgJyArICdvciBzZXJ2ZXI6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCBidXQgJyArICd5b3UgZGlkblxcJ3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFdlIGNhblxcJ3QgZG8gdGhpcyAnICsgJ3dpdGhvdXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuICcgKyAnU2VlIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHdoaWxlIChjb250YWluZXIubGFzdENoaWxkKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChtYXJrdXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJbm5lckhUTUwoY29udGFpbmVyLCBtYXJrdXApO1xuICAgIH1cbiAgfSxcblxuICBvd25lckRvY3VtZW50Q29udGV4dEtleTogb3duZXJEb2N1bWVudENvbnRleHRLZXksXG5cbiAgLyoqXG4gICAqIFJlYWN0IElEIHV0aWxpdGllcy5cbiAgICovXG5cbiAgZ2V0UmVhY3RSb290SUQ6IGdldFJlYWN0Um9vdElELFxuXG4gIGdldElEOiBnZXRJRCxcblxuICBzZXRJRDogc2V0SUQsXG5cbiAgZ2V0Tm9kZTogZ2V0Tm9kZSxcblxuICBnZXROb2RlRnJvbUluc3RhbmNlOiBnZXROb2RlRnJvbUluc3RhbmNlLFxuXG4gIGlzVmFsaWQ6IGlzVmFsaWQsXG5cbiAgcHVyZ2VJRDogcHVyZ2VJRFxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0TW91bnQsICdSZWFjdE1vdW50Jywge1xuICBfcmVuZGVyTmV3Um9vdENvbXBvbmVudDogJ19yZW5kZXJOZXdSb290Q29tcG9uZW50JyxcbiAgX21vdW50SW1hZ2VJbnRvTm9kZTogJ19tb3VudEltYWdlSW50b05vZGUnXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JOYjNWdWRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBUVzkxYm5SY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkVUMDFRY205d1pYSjBlU0E5SUhKbGNYVnBjbVVvSnk0dlJFOU5VSEp2Y0dWeWRIa25LVHRjYm5aaGNpQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpY3BPMXh1ZG1GeUlGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTjFjbkpsYm5SUGQyNWxjaWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5SbVZoZEhWeVpVWnNZV2R6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSUFRVWmxZWFIxY21WR2JHRm5jeWNwTzF4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZiWEIwZVVOdmJYQnZibVZ1ZEZKbFoybHpkSEo1SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWdGNIUjVRMjl0Y0c5dVpXNTBVbVZuYVhOMGNua25LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFbHVjM1JoYm1ObFRXRndKeWs3WEc1MllYSWdVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiU0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOWVhKcmRYQkRhR1ZqYTNOMWJTY3BPMXh1ZG1GeUlGSmxZV04wVUdWeVppQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFaWEptSnlrN1hHNTJZWElnVW1WaFkzUlNaV052Ym1OcGJHVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkpsWTI5dVkybHNaWEluS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlZGMVpYVmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdWdGNIUjVUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZaVzF3ZEhsUFltcGxZM1FuS1R0Y2JuWmhjaUJqYjI1MFlXbHVjMDV2WkdVZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOWpiMjUwWVdsdWMwNXZaR1VuS1R0Y2JuWmhjaUJwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5cGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2MyVjBTVzV1WlhKSVZFMU1JRDBnY21WeGRXbHlaU2duTGk5elpYUkpibTVsY2toVVRVd25LVHRjYm5aaGNpQnphRzkxYkdSVmNHUmhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2YzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFuS1R0Y2JuWmhjaUIyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWNnUFNCeVpYRjFhWEpsS0NjdUwzWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVp5Y3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm5aaGNpQkJWRlJTWDA1QlRVVWdQU0JFVDAxUWNtOXdaWEowZVM1SlJGOUJWRlJTU1VKVlZFVmZUa0ZOUlR0Y2JuWmhjaUJ1YjJSbFEyRmphR1VnUFNCN2ZUdGNibHh1ZG1GeUlFVk1SVTFGVGxSZlRrOUVSVjlVV1ZCRklEMGdNVHRjYm5aaGNpQkVUME5mVGs5RVJWOVVXVkJGSUQwZ09UdGNiblpoY2lCRVQwTlZUVVZPVkY5R1VrRkhUVVZPVkY5T1QwUkZYMVJaVUVVZ1BTQXhNVHRjYmx4dWRtRnlJRzkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNUlEMGdKMTlmVW1WaFkzUk5iM1Z1ZEY5dmQyNWxja1J2WTNWdFpXNTBKQ2NnS3lCTllYUm9MbkpoYm1SdmJTZ3BMblJ2VTNSeWFXNW5LRE0yS1M1emJHbGpaU2d5S1R0Y2JseHVMeW9xSUUxaGNIQnBibWNnWm5KdmJTQnlaV0ZqZEZKdmIzUkpSQ0IwYnlCU1pXRmpkQ0JqYjIxd2IyNWxiblFnYVc1emRHRnVZMlV1SUNvdlhHNTJZWElnYVc1emRHRnVZMlZ6UW5sU1pXRmpkRkp2YjNSSlJDQTlJSHQ5TzF4dVhHNHZLaW9nVFdGd2NHbHVaeUJtY205dElISmxZV04wVW05dmRFbEVJSFJ2SUdCamIyNTBZV2x1WlhKZ0lHNXZaR1Z6TGlBcUwxeHVkbUZ5SUdOdmJuUmhhVzVsY25OQ2VWSmxZV04wVW05dmRFbEVJRDBnZTMwN1hHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUM4cUtpQmZYMFJGVmw5ZkxXOXViSGtnYldGd2NHbHVaeUJtY205dElISmxZV04wVW05dmRFbEVJSFJ2SUhKdmIzUWdaV3hsYldWdWRITXVJQ292WEc0Z0lIWmhjaUJ5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVJRDBnZTMwN1hHNTlYRzVjYmk4dklGVnpaV1FnZEc4Z2MzUnZjbVVnWW5KbFlXUjBhQzFtYVhKemRDQnpaV0Z5WTJnZ2MzUmhkR1VnYVc0Z1ptbHVaRU52YlhCdmJtVnVkRkp2YjNRdVhHNTJZWElnWm1sdVpFTnZiWEJ2Ym1WdWRGSnZiM1JTWlhWellXSnNaVUZ5Y21GNUlEMGdXMTA3WEc1Y2JpOHFLbHh1SUNvZ1JtbHVaSE1nZEdobElHbHVaR1Y0SUc5bUlIUm9aU0JtYVhKemRDQmphR0Z5WVdOMFpYSmNiaUFxSUhSb1lYUW5jeUJ1YjNRZ1kyOXRiVzl1SUdKbGRIZGxaVzRnZEdobElIUjNieUJuYVhabGJpQnpkSEpwYm1kekxseHVJQ3BjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ2RHaGxJR2x1WkdWNElHOW1JSFJvWlNCamFHRnlZV04wWlhJZ2QyaGxjbVVnZEdobElITjBjbWx1WjNNZ1pHbDJaWEpuWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJtYVhKemRFUnBabVpsY21WdVkyVkpibVJsZUNoemRISnBibWN4TENCemRISnBibWN5S1NCN1hHNGdJSFpoY2lCdGFXNU1aVzRnUFNCTllYUm9MbTFwYmloemRISnBibWN4TG14bGJtZDBhQ3dnYzNSeWFXNW5NaTVzWlc1bmRHZ3BPMXh1SUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHMXBia3hsYmpzZ2FTc3JLU0I3WEc0Z0lDQWdhV1lnS0hOMGNtbHVaekV1WTJoaGNrRjBLR2twSUNFOVBTQnpkSEpwYm1jeUxtTm9ZWEpCZENocEtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemRISnBibWN4TG14bGJtZDBhQ0E5UFQwZ2MzUnlhVzVuTWk1c1pXNW5kR2dnUHlBdE1TQTZJRzFwYmt4bGJqdGNibjFjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOFJFOU5SRzlqZFcxbGJuUjlJR052Ym5SaGFXNWxjaUJFVDAwZ1pXeGxiV1Z1ZENCMGFHRjBJRzFoZVNCamIyNTBZV2x1WEc0Z0tpQmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRGeHVJQ29nUUhKbGRIVnliaUI3UHlwOUlFUlBUU0JsYkdWdFpXNTBJSFJvWVhRZ2JXRjVJR2hoZG1VZ2RHaGxJSEpsWVdOMFVtOXZkQ0JKUkN3Z2IzSWdiblZzYkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWjJWMFVtVmhZM1JTYjI5MFJXeGxiV1Z1ZEVsdVEyOXVkR0ZwYm1WeUtHTnZiblJoYVc1bGNpa2dlMXh1SUNCcFppQW9JV052Ym5SaGFXNWxjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ1JFOURYMDVQUkVWZlZGbFFSU2tnZTF4dUlDQWdJSEpsZEhWeWJpQmpiMjUwWVdsdVpYSXVaRzlqZFcxbGJuUkZiR1Z0Wlc1ME8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCamIyNTBZV2x1WlhJdVptbHljM1JEYUdsc1pEdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUVSUFRTQmxiR1Z0Wlc1MElIUm9ZWFFnYldGNUlHTnZiblJoYVc0Z1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RdVhHNGdLaUJBY21WMGRYSnVJSHMvYzNSeWFXNW5mU0JCSUZ3aWNtVmhZM1JTYjI5MFhDSWdTVVFzSUdsbUlHRWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElHbHpJSEpsYm1SbGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJTWldGamRGSnZiM1JKUkNoamIyNTBZV2x1WlhJcElIdGNiaUFnZG1GeUlISnZiM1JGYkdWdFpXNTBJRDBnWjJWMFVtVmhZM1JTYjI5MFJXeGxiV1Z1ZEVsdVEyOXVkR0ZwYm1WeUtHTnZiblJoYVc1bGNpazdYRzRnSUhKbGRIVnliaUJ5YjI5MFJXeGxiV1Z1ZENBbUppQlNaV0ZqZEUxdmRXNTBMbWRsZEVsRUtISnZiM1JGYkdWdFpXNTBLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkJZMk5sYzNOcGJtY2dibTlrWlZ0QlZGUlNYMDVCVFVWZElHOXlJR05oYkd4cGJtY2daMlYwUVhSMGNtbGlkWFJsS0VGVVZGSmZUa0ZOUlNrZ2IyNGdZU0JtYjNKdFhHNGdLaUJsYkdWdFpXNTBJR05oYmlCeVpYUjFjbTRnYVhSeklHTnZiblJ5YjJ3Z2QyaHZjMlVnYm1GdFpTQnZjaUJKUkNCbGNYVmhiSE1nUVZSVVVsOU9RVTFGTGlCQmJHeGNiaUFxSUVSUFRTQnViMlJsY3lCemRYQndiM0owSUdCblpYUkJkSFJ5YVdKMWRHVk9iMlJsWUNCaWRYUWdkR2hwY3lCallXNGdZV3h6YnlCblpYUWdZMkZzYkdWa0lHOXVYRzRnS2lCdmRHaGxjaUJ2WW1wbFkzUnpJSE52SUdwMWMzUWdjbVYwZFhKdUlDY25JR2xtSUhkbEozSmxJR2RwZG1WdUlITnZiV1YwYUdsdVp5QnZkR2hsY2lCMGFHRnVJR0ZjYmlBcUlFUlBUU0J1YjJSbElDaHpkV05vSUdGeklIZHBibVJ2ZHlrdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhzL1JFOU5SV3hsYldWdWRIeEVUMDFYYVc1a2IzZDhSRTlOUkc5amRXMWxiblI4UkU5TlZHVjRkRTV2WkdWOUlHNXZaR1VnUkU5TklHNXZaR1V1WEc0Z0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFbEVJRzltSUhSb1pTQnpkWEJ3YkdsbFpDQmdaRzl0VG05a1pXQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRWxFS0c1dlpHVXBJSHRjYmlBZ2RtRnlJR2xrSUQwZ2FXNTBaWEp1WVd4SFpYUkpSQ2h1YjJSbEtUdGNiaUFnYVdZZ0tHbGtLU0I3WEc0Z0lDQWdhV1lnS0c1dlpHVkRZV05vWlM1b1lYTlBkMjVRY205d1pYSjBlU2hwWkNrcElIdGNiaUFnSUNBZ0lIWmhjaUJqWVdOb1pXUWdQU0J1YjJSbFEyRmphR1ZiYVdSZE8xeHVJQ0FnSUNBZ2FXWWdLR05oWTJobFpDQWhQVDBnYm05a1pTa2dlMXh1SUNBZ0lDQWdJQ0FoSVdselZtRnNhV1FvWTJGamFHVmtMQ0JwWkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUk5iM1Z1ZERvZ1ZIZHZJSFpoYkdsa0lHSjFkQ0IxYm1WeGRXRnNJRzV2WkdWeklIZHBkR2dnZEdobElITmhiV1VnWUNWellEb2dKWE1uTENCQlZGUlNYMDVCVFVVc0lHbGtLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lDQWdibTlrWlVOaFkyaGxXMmxrWFNBOUlHNXZaR1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHNXZaR1ZEWVdOb1pWdHBaRjBnUFNCdWIyUmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnBaRHRjYm4xY2JseHVablZ1WTNScGIyNGdhVzUwWlhKdVlXeEhaWFJKUkNodWIyUmxLU0I3WEc0Z0lDOHZJRWxtSUc1dlpHVWdhWE1nYzI5dFpYUm9hVzVuSUd4cGEyVWdZU0IzYVc1a2IzY3NJR1J2WTNWdFpXNTBMQ0J2Y2lCMFpYaDBJRzV2WkdVc0lHNXZibVVnYjJaY2JpQWdMeThnZDJocFkyZ2djM1Z3Y0c5eWRDQmhkSFJ5YVdKMWRHVnpJRzl5SUdFZ0xtZGxkRUYwZEhKcFluVjBaU0J0WlhSb2IyUXNJR2R5WVdObFpuVnNiSGtnY21WMGRYSnVYRzRnSUM4dklIUm9aU0JsYlhCMGVTQnpkSEpwYm1jc0lHRnpJR2xtSUhSb1pTQmhkSFJ5YVdKMWRHVWdkMlZ5WlNCdGFYTnphVzVuTGx4dUlDQnlaWFIxY200Z2JtOWtaU0FtSmlCdWIyUmxMbWRsZEVGMGRISnBZblYwWlNBbUppQnViMlJsTG1kbGRFRjBkSEpwWW5WMFpTaEJWRlJTWDA1QlRVVXBJSHg4SUNjbk8xeHVmVnh1WEc0dktpcGNiaUFxSUZObGRITWdkR2hsSUZKbFlXTjBMWE53WldOcFptbGpJRWxFSUc5bUlIUm9aU0JuYVhabGJpQnViMlJsTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaU0JVYUdVZ1JFOU5JRzV2WkdVZ2QyaHZjMlVnU1VRZ2QybHNiQ0JpWlNCelpYUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1ZHaGxJSFpoYkhWbElHOW1JSFJvWlNCSlJDQmhkSFJ5YVdKMWRHVXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlITmxkRWxFS0c1dlpHVXNJR2xrS1NCN1hHNGdJSFpoY2lCdmJHUkpSQ0E5SUdsdWRHVnlibUZzUjJWMFNVUW9ibTlrWlNrN1hHNGdJR2xtSUNodmJHUkpSQ0FoUFQwZ2FXUXBJSHRjYmlBZ0lDQmtaV3hsZEdVZ2JtOWtaVU5oWTJobFcyOXNaRWxFWFR0Y2JpQWdmVnh1SUNCdWIyUmxMbk5sZEVGMGRISnBZblYwWlNoQlZGUlNYMDVCVFVVc0lHbGtLVHRjYmlBZ2JtOWtaVU5oWTJobFcybGtYU0E5SUc1dlpHVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1JtbHVaSE1nZEdobElHNXZaR1VnZDJsMGFDQjBhR1VnYzNWd2NHeHBaV1FnVW1WaFkzUXRaMlZ1WlhKaGRHVmtJRVJQVFNCSlJDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdRU0JTWldGamRDMW5aVzVsY21GMFpXUWdSRTlOSUVsRUxseHVJQ29nUUhKbGRIVnliaUI3UkU5TlJXeGxiV1Z1ZEgwZ1JFOU5JRzV2WkdVZ2QybDBhQ0IwYUdVZ2MzVndjR3hsWkNCZ2FXUmdMbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm1aMWJtTjBhVzl1SUdkbGRFNXZaR1VvYVdRcElIdGNiaUFnYVdZZ0tDRnViMlJsUTJGamFHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2FXUXBJSHg4SUNGcGMxWmhiR2xrS0c1dlpHVkRZV05vWlZ0cFpGMHNJR2xrS1NrZ2UxeHVJQ0FnSUc1dlpHVkRZV05vWlZ0cFpGMGdQU0JTWldGamRFMXZkVzUwTG1acGJtUlNaV0ZqZEU1dlpHVkNlVWxFS0dsa0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JtOWtaVU5oWTJobFcybGtYVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkdhVzVrY3lCMGFHVWdibTlrWlNCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCd2RXSnNhV01nVW1WaFkzUWdhVzV6ZEdGdVkyVXVYRzRnS2x4dUlDb2dRSEJoY21GdElIc3FmU0JwYm5OMFlXNWpaU0JCSUhCMVlteHBZeUJTWldGamRDQnBibk4wWVc1alpTNWNiaUFxSUVCeVpYUjFjbTRnZXo5RVQwMUZiR1Z0Wlc1MGZTQkVUMDBnYm05a1pTQjNhWFJvSUhSb1pTQnpkWEJ3YkdWa0lHQnBaR0F1WEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBUbTlrWlVaeWIyMUpibk4wWVc1alpTaHBibk4wWVc1alpTa2dlMXh1SUNCMllYSWdhV1FnUFNCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3TG1kbGRDaHBibk4wWVc1alpTa3VYM0p2YjNST2IyUmxTVVE3WEc0Z0lHbG1JQ2hTWldGamRFVnRjSFI1UTI5dGNHOXVaVzUwVW1WbmFYTjBjbmt1YVhOT2RXeHNRMjl0Y0c5dVpXNTBTVVFvYVdRcEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JpQWdhV1lnS0NGdWIyUmxRMkZqYUdVdWFHRnpUM2R1VUhKdmNHVnlkSGtvYVdRcElIeDhJQ0ZwYzFaaGJHbGtLRzV2WkdWRFlXTm9aVnRwWkYwc0lHbGtLU2tnZTF4dUlDQWdJRzV2WkdWRFlXTm9aVnRwWkYwZ1BTQlNaV0ZqZEUxdmRXNTBMbVpwYm1SU1pXRmpkRTV2WkdWQ2VVbEVLR2xrS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYm05a1pVTmhZMmhsVzJsa1hUdGNibjFjYmx4dUx5b3FYRzRnS2lCQklHNXZaR1VnYVhNZ1hDSjJZV3hwWkZ3aUlHbG1JR2wwSUdseklHTnZiblJoYVc1bFpDQmllU0JoSUdOMWNuSmxiblJzZVNCdGIzVnVkR1ZrSUdOdmJuUmhhVzVsY2k1Y2JpQXFYRzRnS2lCVWFHbHpJRzFsWVc1eklIUm9ZWFFnZEdobElHNXZaR1VnWkc5bGN5QnViM1FnYUdGMlpTQjBieUJpWlNCamIyNTBZV2x1WldRZ1lua2dZU0JrYjJOMWJXVnVkQ0JwYmx4dUlDb2diM0prWlhJZ2RHOGdZbVVnWTI5dWMybGtaWEpsWkNCMllXeHBaQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlejlFVDAxRmJHVnRaVzUwZlNCdWIyUmxJRlJvWlNCallXNWthV1JoZEdVZ1JFOU5JRzV2WkdVdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnVkdobElHVjRjR1ZqZEdWa0lFbEVJRzltSUhSb1pTQnViMlJsTGx4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWMmhsZEdobGNpQjBhR1VnYm05a1pTQnBjeUJqYjI1MFlXbHVaV1FnWW5rZ1lTQnRiM1Z1ZEdWa0lHTnZiblJoYVc1bGNpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FYTldZV3hwWkNodWIyUmxMQ0JwWkNrZ2UxeHVJQ0JwWmlBb2JtOWtaU2tnZTF4dUlDQWdJQ0VvYVc1MFpYSnVZV3hIWlhSSlJDaHViMlJsS1NBOVBUMGdhV1FwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFRXOTFiblE2SUZWdVpYaHdaV04wWldRZ2JXOWthV1pwWTJGMGFXOXVJRzltSUdBbGMyQW5MQ0JCVkZSU1gwNUJUVVVwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUJqYjI1MFlXbHVaWElnUFNCU1pXRmpkRTF2ZFc1MExtWnBibVJTWldGamRFTnZiblJoYVc1bGNrWnZja2xFS0dsa0tUdGNiaUFnSUNCcFppQW9ZMjl1ZEdGcGJtVnlJQ1ltSUdOdmJuUmhhVzV6VG05a1pTaGpiMjUwWVdsdVpYSXNJRzV2WkdVcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGMWMyVnpJSFJvWlNCallXTm9aU0IwYnlCbWIzSm5aWFFnWVdKdmRYUWdiMjVsSUZKbFlXTjBMWE53WldOcFptbGpJRWxFTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCVWFHVWdTVVFnZEc4Z1ptOXlaMlYwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJ3ZFhKblpVbEVLR2xrS1NCN1hHNGdJR1JsYkdWMFpTQnViMlJsUTJGamFHVmJhV1JkTzF4dWZWeHVYRzUyWVhJZ1pHVmxjR1Z6ZEU1dlpHVlRiMFpoY2lBOUlHNTFiR3c3WEc1bWRXNWpkR2x2YmlCbWFXNWtSR1ZsY0dWemRFTmhZMmhsWkVGdVkyVnpkRzl5U1cxd2JDaGhibU5sYzNSdmNrbEVLU0I3WEc0Z0lIWmhjaUJoYm1ObGMzUnZjaUE5SUc1dlpHVkRZV05vWlZ0aGJtTmxjM1J2Y2tsRVhUdGNiaUFnYVdZZ0tHRnVZMlZ6ZEc5eUlDWW1JR2x6Vm1Gc2FXUW9ZVzVqWlhOMGIzSXNJR0Z1WTJWemRHOXlTVVFwS1NCN1hHNGdJQ0FnWkdWbGNHVnpkRTV2WkdWVGIwWmhjaUE5SUdGdVkyVnpkRzl5TzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUM4dklGUm9hWE1nYm05a1pTQnBjMjRuZENCd2IzQjFiR0YwWldRZ2FXNGdkR2hsSUdOaFkyaGxMQ0J6YnlCd2NtVnpkVzFoWW14NUlHNXZibVVnYjJZZ2FYUnpYRzRnSUNBZ0x5OGdaR1Z6WTJWdVpHRnVkSE1nWVhKbExpQkNjbVZoYXlCdmRYUWdiMllnZEdobElHeHZiM0F1WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1SUhSb1pTQmtaV1Z3WlhOMElHTmhZMmhsWkNCdWIyUmxJSGRvYjNObElFbEVJR2x6SUdFZ2NISmxabWw0SUc5bUlHQjBZWEpuWlhSSlJHQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHWnBibVJFWldWd1pYTjBRMkZqYUdWa1FXNWpaWE4wYjNJb2RHRnlaMlYwU1VRcElIdGNiaUFnWkdWbGNHVnpkRTV2WkdWVGIwWmhjaUE5SUc1MWJHdzdYRzRnSUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxuUnlZWFpsY25ObFFXNWpaWE4wYjNKektIUmhjbWRsZEVsRUxDQm1hVzVrUkdWbGNHVnpkRU5oWTJobFpFRnVZMlZ6ZEc5eVNXMXdiQ2s3WEc1Y2JpQWdkbUZ5SUdadmRXNWtUbTlrWlNBOUlHUmxaWEJsYzNST2IyUmxVMjlHWVhJN1hHNGdJR1JsWlhCbGMzUk9iMlJsVTI5R1lYSWdQU0J1ZFd4c08xeHVJQ0J5WlhSMWNtNGdabTkxYm1ST2IyUmxPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFMXZkVzUwY3lCMGFHbHpJR052YlhCdmJtVnVkQ0JoYm1RZ2FXNXpaWEowY3lCcGRDQnBiblJ2SUhSb1pTQkVUMDB1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklHMXZkVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISnZiM1JKUkNCRVQwMGdTVVFnYjJZZ2RHaGxJSEp2YjNRZ2JtOWtaUzVjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSdklHMXZkVzUwSUdsdWRHOHVYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndJRWxtSUhSeWRXVXNJR1J2SUc1dmRDQnBibk5sY25RZ2JXRnlhM1Z3WEc0Z0tpOWNibVoxYm1OMGFXOXVJRzF2ZFc1MFEyOXRjRzl1Wlc1MFNXNTBiMDV2WkdVb1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVc0lISnZiM1JKUkN3Z1kyOXVkR0ZwYm1WeUxDQjBjbUZ1YzJGamRHbHZiaXdnYzJodmRXeGtVbVYxYzJWTllYSnJkWEFzSUdOdmJuUmxlSFFwSUh0Y2JpQWdhV1lnS0ZKbFlXTjBSRTlOUm1WaGRIVnlaVVpzWVdkekxuVnpaVU55WldGMFpVVnNaVzFsYm5RcElIdGNiaUFnSUNCamIyNTBaWGgwSUQwZ1lYTnphV2R1S0h0OUxDQmpiMjUwWlhoMEtUdGNiaUFnSUNCcFppQW9ZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJRDA5UFNCRVQwTmZUazlFUlY5VVdWQkZLU0I3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBXMjkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNVhTQTlJR052Ym5SaGFXNWxjanRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEZ0dmQyNWxja1J2WTNWdFpXNTBRMjl1ZEdWNGRFdGxlVjBnUFNCamIyNTBZV2x1WlhJdWIzZHVaWEpFYjJOMWJXVnVkRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCcFppQW9ZMjl1ZEdWNGRDQTlQVDBnWlcxd2RIbFBZbXBsWTNRcElIdGNiaUFnSUNBZ0lHTnZiblJsZUhRZ1BTQjdmVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJSFJoWnlBOUlHTnZiblJoYVc1bGNpNXViMlJsVG1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dUlDQWdJR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZElEMGdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MblZ3WkdGMFpXUkJibU5sYzNSdmNrbHVabThvYm5Wc2JDd2dkR0ZuTENCdWRXeHNLVHRjYmlBZ2ZWeHVJQ0IyWVhJZ2JXRnlhM1Z3SUQwZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG0xdmRXNTBRMjl0Y0c5dVpXNTBLR052YlhCdmJtVnVkRWx1YzNSaGJtTmxMQ0J5YjI5MFNVUXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBMbDkwYjNCTVpYWmxiRmR5WVhCd1pYSWdQU0JqYjIxd2IyNWxiblJKYm5OMFlXNWpaVHRjYmlBZ1VtVmhZM1JOYjNWdWRDNWZiVzkxYm5SSmJXRm5aVWx1ZEc5T2IyUmxLRzFoY210MWNDd2dZMjl1ZEdGcGJtVnlMQ0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ3dnZEhKaGJuTmhZM1JwYjI0cE8xeHVmVnh1WEc0dktpcGNiaUFxSUVKaGRHTm9aV1FnYlc5MWJuUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJ2SUcxdmRXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKdmIzUkpSQ0JFVDAwZ1NVUWdiMllnZEdobElISnZiM1FnYm05a1pTNWNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJSFJ2SUcxdmRXNTBJR2x1ZEc4dVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndJRWxtSUhSeWRXVXNJR1J2SUc1dmRDQnBibk5sY25RZ2JXRnlhM1Z3WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0poZEdOb1pXUk5iM1Z1ZEVOdmJYQnZibVZ1ZEVsdWRHOU9iMlJsS0dOdmJYQnZibVZ1ZEVsdWMzUmhibU5sTENCeWIyOTBTVVFzSUdOdmJuUmhhVzVsY2l3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lHTnZiblJsZUhRcElIdGNiaUFnZG1GeUlIUnlZVzV6WVdOMGFXOXVJRDBnVW1WaFkzUlZjR1JoZEdWekxsSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0dVoyVjBVRzl2YkdWa0tGeHVJQ0F2S2lCbWIzSmpaVWhVVFV3Z0tpOXphRzkxYkdSU1pYVnpaVTFoY210MWNDazdYRzRnSUhSeVlXNXpZV04wYVc5dUxuQmxjbVp2Y20wb2JXOTFiblJEYjIxd2IyNWxiblJKYm5SdlRtOWtaU3dnYm5Wc2JDd2dZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJSEp2YjNSSlJDd2dZMjl1ZEdGcGJtVnlMQ0IwY21GdWMyRmpkR2x2Yml3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lHTnZiblJsZUhRcE8xeHVJQ0JTWldGamRGVndaR0YwWlhNdVVtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ymk1eVpXeGxZWE5sS0hSeVlXNXpZV04wYVc5dUtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVmJtMXZkVzUwY3lCaElHTnZiWEJ2Ym1WdWRDQmhibVFnY21WdGIzWmxjeUJwZENCbWNtOXRJSFJvWlNCRVQwMHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2FXNXpkR0Z1WTJVZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUdsdWMzUmhibU5sTGx4dUlDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0JqYjI1MFlXbHVaWElnUkU5TklHVnNaVzFsYm5RZ2RHOGdkVzV0YjNWdWRDQm1jbTl0TGx4dUlDb2dRR1pwYm1Gc1hHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUlFQnpaV1VnZTFKbFlXTjBUVzkxYm5RdWRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaWDFjYmlBcUwxeHVablZ1WTNScGIyNGdkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFWnliMjFPYjJSbEtHbHVjM1JoYm1ObExDQmpiMjUwWVdsdVpYSXBJSHRjYmlBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5WdWJXOTFiblJEYjIxd2IyNWxiblFvYVc1emRHRnVZMlVwTzF4dVhHNGdJR2xtSUNoamIyNTBZV2x1WlhJdWJtOWtaVlI1Y0dVZ1BUMDlJRVJQUTE5T1QwUkZYMVJaVUVVcElIdGNiaUFnSUNCamIyNTBZV2x1WlhJZ1BTQmpiMjUwWVdsdVpYSXVaRzlqZFcxbGJuUkZiR1Z0Wlc1ME8xeHVJQ0I5WEc1Y2JpQWdMeThnYUhSMGNEb3ZMMnB6Y0dWeVppNWpiMjB2Wlcxd2RIbHBibWN0WVMxdWIyUmxYRzRnSUhkb2FXeGxJQ2hqYjI1MFlXbHVaWEl1YkdGemRFTm9hV3hrS1NCN1hHNGdJQ0FnWTI5dWRHRnBibVZ5TG5KbGJXOTJaVU5vYVd4a0tHTnZiblJoYVc1bGNpNXNZWE4wUTJocGJHUXBPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nVkhKMVpTQnBaaUIwYUdVZ2MzVndjR3hwWldRZ1JFOU5JRzV2WkdVZ2FHRnpJR0VnWkdseVpXTjBJRkpsWVdOMExYSmxibVJsY21Wa0lHTm9hV3hrSUhSb1lYUWdhWE5jYmlBcUlHNXZkQ0JoSUZKbFlXTjBJSEp2YjNRZ1pXeGxiV1Z1ZEM0Z1ZYTmxablZzSUdadmNpQjNZWEp1YVc1bklHbHVJR0J5Wlc1a1pYSmdMRnh1SUNvZ1lIVnViVzkxYm5SRGIyMXdiMjVsYm5SQmRFNXZaR1ZnTENCbGRHTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9SRTlOUld4bGJXVnVkSDBnYm05a1pTQlVhR1VnWTJGdVpHbGtZWFJsSUVSUFRTQnViMlJsTGx4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWSEoxWlNCcFppQjBhR1VnUkU5TklHVnNaVzFsYm5RZ1kyOXVkR0ZwYm5NZ1lTQmthWEpsWTNRZ1kyaHBiR1FnZEdoaGRDQjNZWE5jYmlBcUlISmxibVJsY21Wa0lHSjVJRkpsWVdOMElHSjFkQ0JwY3lCdWIzUWdZU0J5YjI5MElHVnNaVzFsYm5RdVhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVablZ1WTNScGIyNGdhR0Z6VG05dVVtOXZkRkpsWVdOMFEyaHBiR1FvYm05a1pTa2dlMXh1SUNCMllYSWdjbVZoWTNSU2IyOTBTVVFnUFNCblpYUlNaV0ZqZEZKdmIzUkpSQ2h1YjJSbEtUdGNiaUFnY21WMGRYSnVJSEpsWVdOMFVtOXZkRWxFSUQ4Z2NtVmhZM1JTYjI5MFNVUWdJVDA5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtZGxkRkpsWVdOMFVtOXZkRWxFUm5KdmJVNXZaR1ZKUkNoeVpXRmpkRkp2YjNSSlJDa2dPaUJtWVd4elpUdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUhSb1pTQm1hWEp6ZENBb1pHVmxjR1Z6ZENrZ1lXNWpaWE4wYjNJZ2IyWWdZU0J1YjJSbElIZG9hV05vSUdseklISmxibVJsY21Wa0lHSjVJSFJvYVhNZ1kyOXdlVnh1SUNvZ2IyWWdVbVZoWTNRdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdacGJtUkdhWEp6ZEZKbFlXTjBSRTlOU1cxd2JDaHViMlJsS1NCN1hHNGdJQzh2SUZSb2FYTWdibTlrWlNCdGFXZG9kQ0JpWlNCbWNtOXRJR0Z1YjNSb1pYSWdVbVZoWTNRZ2FXNXpkR0Z1WTJVc0lITnZJSGRsSUcxaGEyVWdjM1Z5WlNCdWIzUWdkRzljYmlBZ0x5OGdaWGhoYldsdVpTQjBhR1VnYm05a1pTQmpZV05vWlNCb1pYSmxYRzRnSUdadmNpQW9PeUJ1YjJSbElDWW1JRzV2WkdVdWNHRnlaVzUwVG05a1pTQWhQVDBnYm05a1pUc2dibTlrWlNBOUlHNXZaR1V1Y0dGeVpXNTBUbTlrWlNrZ2UxeHVJQ0FnSUdsbUlDaHViMlJsTG01dlpHVlVlWEJsSUNFOVBTQXhLU0I3WEc0Z0lDQWdJQ0F2THlCT2IzUWdZU0JFVDAxRmJHVnRaVzUwTENCMGFHVnlaV1p2Y21VZ2JtOTBJR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBYRzRnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlHNXZaR1ZKUkNBOUlHbHVkR1Z5Ym1Gc1IyVjBTVVFvYm05a1pTazdYRzRnSUNBZ2FXWWdLQ0Z1YjJSbFNVUXBJSHRjYmlBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdjbVZoWTNSU2IyOTBTVVFnUFNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NW5aWFJTWldGamRGSnZiM1JKUkVaeWIyMU9iMlJsU1VRb2JtOWtaVWxFS1R0Y2JseHVJQ0FnSUM4dklFbG1JR052Ym5SaGFXNWxjbk5DZVZKbFlXTjBVbTl2ZEVsRUlHTnZiblJoYVc1eklIUm9aU0JqYjI1MFlXbHVaWElnZDJVZ1ptbHVaQ0JpZVNCamNtRjNiR2x1WnlCMWNGeHVJQ0FnSUM4dklIUm9aU0IwY21WbExDQjNaU0JyYm05M0lIUm9ZWFFnZEdocGN5QnBibk4wWVc1alpTQnZaaUJTWldGamRDQnlaVzVrWlhKbFpDQjBhR1VnYm05a1pTNWNiaUFnSUNBdkx5QnVZaTRnYVhOV1lXeHBaQ2R6SUhOMGNtRjBaV2Q1SUNoM2FYUm9JR052Ym5SaGFXNXpUbTlrWlNrZ1pHOWxjeUJ1YjNRZ2QyOXlheUJpWldOaGRYTmxJSEpsYm1SbGNseHVJQ0FnSUM4dklIUnlaV1Z6SUcxaGVTQmlaU0J1WlhOMFpXUWdZVzVrSUhkbElHUnZiaWQwSUhkaGJuUWdZU0JtWVd4elpTQndiM05wZEdsMlpTQnBiaUIwYUdGMElHTmhjMlV1WEc0Z0lDQWdkbUZ5SUdOMWNuSmxiblFnUFNCdWIyUmxPMXh1SUNBZ0lIWmhjaUJzWVhOMFNVUTdYRzRnSUNBZ1pHOGdlMXh1SUNBZ0lDQWdiR0Z6ZEVsRUlEMGdhVzUwWlhKdVlXeEhaWFJKUkNoamRYSnlaVzUwS1R0Y2JpQWdJQ0FnSUdOMWNuSmxiblFnUFNCamRYSnlaVzUwTG5CaGNtVnVkRTV2WkdVN1hHNGdJQ0FnSUNCcFppQW9ZM1Z5Y21WdWRDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUZSb1pTQndZWE56WldRdGFXNGdibTlrWlNCb1lYTWdZbVZsYmlCa1pYUmhZMmhsWkNCbWNtOXRJSFJvWlNCamIyNTBZV2x1WlhJZ2FYUWdkMkZ6WEc0Z0lDQWdJQ0FnSUM4dklHOXlhV2RwYm1Gc2JIa2djbVZ1WkdWeVpXUWdhVzUwYnk1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQjNhR2xzWlNBb2JHRnpkRWxFSUNFOVBTQnlaV0ZqZEZKdmIzUkpSQ2s3WEc1Y2JpQWdJQ0JwWmlBb1kzVnljbVZ1ZENBOVBUMGdZMjl1ZEdGcGJtVnljMEo1VW1WaFkzUlNiMjkwU1VSYmNtVmhZM1JTYjI5MFNVUmRLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdibTlrWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzUxYkd3N1hHNTlYRzVjYmk4cUtseHVJQ29nVkdWdGNHOXlZWEo1SUNnL0tTQm9ZV05ySUhOdklIUm9ZWFFnZDJVZ1kyRnVJSE4wYjNKbElHRnNiQ0IwYjNBdGJHVjJaV3dnY0dWdVpHbHVaeUIxY0dSaGRHVnpJRzl1WEc0Z0tpQmpiMjF3YjNOcGRHVnpJR2x1YzNSbFlXUWdiMllnYUdGMmFXNW5JSFJ2SUhkdmNuSjVJR0ZpYjNWMElHUnBabVpsY21WdWRDQjBlWEJsY3lCdlppQmpiMjF3YjI1bGJuUnpYRzRnS2lCb1pYSmxMbHh1SUNvdlhHNTJZWElnVkc5d1RHVjJaV3hYY21Gd2NHVnlJRDBnWm5WdVkzUnBiMjRnS0NrZ2UzMDdYRzVVYjNCTVpYWmxiRmR5WVhCd1pYSXVjSEp2ZEc5MGVYQmxMbWx6VW1WaFkzUkRiMjF3YjI1bGJuUWdQU0I3ZlR0Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJRlJ2Y0V4bGRtVnNWM0poY0hCbGNpNWthWE53YkdGNVRtRnRaU0E5SUNkVWIzQk1aWFpsYkZkeVlYQndaWEluTzF4dWZWeHVWRzl3VEdWMlpXeFhjbUZ3Y0dWeUxuQnliM1J2ZEhsd1pTNXlaVzVrWlhJZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDOHZJSFJvYVhNdWNISnZjSE1nYVhNZ1lXTjBkV0ZzYkhrZ1lTQlNaV0ZqZEVWc1pXMWxiblJjYmlBZ2NtVjBkWEp1SUhSb2FYTXVjSEp2Y0hNN1hHNTlPMXh1WEc0dktpcGNiaUFxSUUxdmRXNTBhVzVuSUdseklIUm9aU0J3Y205alpYTnpJRzltSUdsdWFYUnBZV3hwZW1sdVp5QmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQmllU0JqY21WaGRHbHVaeUJwZEhOY2JpQXFJSEpsY0hKbGMyVnVkR0YwYVhabElFUlBUU0JsYkdWdFpXNTBjeUJoYm1RZ2FXNXpaWEowYVc1bklIUm9aVzBnYVc1MGJ5QmhJSE4xY0hCc2FXVmtJR0JqYjI1MFlXbHVaWEpnTGx4dUlDb2dRVzU1SUhCeWFXOXlJR052Ym5SbGJuUWdhVzV6YVdSbElHQmpiMjUwWVdsdVpYSmdJR2x6SUdSbGMzUnliM2xsWkNCcGJpQjBhR1VnY0hKdlkyVnpjeTVjYmlBcVhHNGdLaUFnSUZKbFlXTjBUVzkxYm5RdWNtVnVaR1Z5S0Z4dUlDb2dJQ0FnSUdOdmJYQnZibVZ1ZEN4Y2JpQXFJQ0FnSUNCa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2duWTI5dWRHRnBibVZ5SnlsY2JpQXFJQ0FnS1R0Y2JpQXFYRzRnS2lBZ0lEeGthWFlnYVdROVhDSmpiMjUwWVdsdVpYSmNJajRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEMwdElGTjFjSEJzYVdWa0lHQmpiMjUwWVdsdVpYSmdMbHh1SUNvZ0lDQWdJRHhrYVhZZ1pHRjBZUzF5WldGamRHbGtQVndpTGpOY0lqNGdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dExTQlNaVzVrWlhKbFpDQnlaV0ZqZEZKdmIzUWdiMllnVW1WaFkzUmNiaUFxSUNBZ0lDQWdJQzh2SUM0dUxpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJYQnZibVZ1ZEM1Y2JpQXFJQ0FnSUNBOEwyUnBkajVjYmlBcUlDQWdQQzlrYVhZK1hHNGdLbHh1SUNvZ1NXNXphV1JsSUc5bUlHQmpiMjUwWVdsdVpYSmdMQ0IwYUdVZ1ptbHljM1FnWld4bGJXVnVkQ0J5Wlc1a1pYSmxaQ0JwY3lCMGFHVWdYQ0p5WldGamRGSnZiM1JjSWk1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0I3WEc1Y2JpQWdWRzl3VEdWMlpXeFhjbUZ3Y0dWeU9pQlViM0JNWlhabGJGZHlZWEJ3WlhJc1hHNWNiaUFnTHlvcUlFVjRjRzl6WldRZ1ptOXlJR1JsWW5WbloybHVaeUJ3ZFhKd2IzTmxjeUFxS2k5Y2JpQWdYMmx1YzNSaGJtTmxjMEo1VW1WaFkzUlNiMjkwU1VRNklHbHVjM1JoYm1ObGMwSjVVbVZoWTNSU2IyOTBTVVFzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvYVhNZ2FYTWdZU0JvYjI5cklIQnliM1pwWkdWa0lIUnZJSE4xY0hCdmNuUWdjbVZ1WkdWeWFXNW5JRkpsWVdOMElHTnZiWEJ2Ym1WdWRITWdkMmhwYkdWY2JpQWdJQ29nWlc1emRYSnBibWNnZEdoaGRDQjBhR1VnWVhCd1lYSmxiblFnYzJOeWIyeHNJSEJ2YzJsMGFXOXVJRzltSUdsMGN5QmdZMjl1ZEdGcGJtVnlZQ0JrYjJWeklHNXZkRnh1SUNBZ0tpQmphR0Z1WjJVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUZSb1pTQmdZMjl1ZEdGcGJtVnlZQ0JpWldsdVp5QnlaVzVrWlhKbFpDQnBiblJ2TGx4dUlDQWdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0J5Wlc1a1pYSkRZV3hzWW1GamF5QlVhR2x6SUcxMWMzUWdZbVVnWTJGc2JHVmtJRzl1WTJVZ2RHOGdaRzhnZEdobElISmxibVJsY2k1Y2JpQWdJQ292WEc0Z0lITmpjbTlzYkUxdmJtbDBiM0k2SUdaMWJtTjBhVzl1SUNoamIyNTBZV2x1WlhJc0lISmxibVJsY2tOaGJHeGlZV05yS1NCN1hHNGdJQ0FnY21WdVpHVnlRMkZzYkdKaFkyc29LVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHRnJaU0JoSUdOdmJYQnZibVZ1ZENCMGFHRjBKM01nWVd4eVpXRmtlU0J0YjNWdWRHVmtJR2x1ZEc4Z2RHaGxJRVJQVFNCaGJtUWdjbVZ3YkdGalpTQnBkSE1nY0hKdmNITmNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnY0hKbGRrTnZiWEJ2Ym1WdWRDQmpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVWdZV3h5WldGa2VTQnBiaUIwYUdVZ1JFOU5YRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J1WlhoMFJXeGxiV1Z1ZENCamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVZ2RHOGdjbVZ1WkdWeVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlHTnZiblJoYVc1bGNpQjBieUJ5Wlc1a1pYSWdhVzUwYjF4dUlDQWdLaUJBY0dGeVlXMGdlejltZFc1amRHbHZibjBnWTJGc2JHSmhZMnNnWm5WdVkzUnBiMjRnZEhKcFoyZGxjbVZrSUc5dUlHTnZiWEJzWlhScGIyNWNiaUFnSUNvdlhHNGdJRjkxY0dSaGRHVlNiMjkwUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb2NISmxka052YlhCdmJtVnVkQ3dnYm1WNGRFVnNaVzFsYm5Rc0lHTnZiblJoYVc1bGNpd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQlNaV0ZqZEUxdmRXNTBMbk5qY205c2JFMXZibWwwYjNJb1kyOXVkR0ZwYm1WeUxDQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0JTWldGamRGVndaR0YwWlZGMVpYVmxMbVZ1Y1hWbGRXVkZiR1Z0Wlc1MFNXNTBaWEp1WVd3b2NISmxka052YlhCdmJtVnVkQ3dnYm1WNGRFVnNaVzFsYm5RcE8xeHVJQ0FnSUNBZ2FXWWdLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJQ0FnSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1V1Wlc1eGRXVjFaVU5oYkd4aVlXTnJTVzUwWlhKdVlXd29jSEpsZGtOdmJYQnZibVZ1ZEN3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUM4dklGSmxZMjl5WkNCMGFHVWdjbTl2ZENCbGJHVnRaVzUwSUdsdUlHTmhjMlVnYVhRZ2JHRjBaWElnWjJWMGN5QjBjbUZ1YzNCc1lXNTBaV1F1WEc0Z0lDQWdJQ0J5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVXMmRsZEZKbFlXTjBVbTl2ZEVsRUtHTnZiblJoYVc1bGNpbGRJRDBnWjJWMFVtVmhZM1JTYjI5MFJXeGxiV1Z1ZEVsdVEyOXVkR0ZwYm1WeUtHTnZiblJoYVc1bGNpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhCeVpYWkRiMjF3YjI1bGJuUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbFoybHpkR1Z5SUdFZ1kyOXRjRzl1Wlc1MElHbHVkRzhnZEdobElHbHVjM1JoYm1ObElHMWhjQ0JoYm1RZ2MzUmhjblJ6SUhOamNtOXNiQ0IyWVd4MVpWeHVJQ0FnS2lCdGIyNXBkRzl5YVc1blhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJRzVsZUhSRGIyMXdiMjVsYm5RZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObElIUnZJSEpsYm1SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlHTnZiblJoYVc1bGNpQmpiMjUwWVdsdVpYSWdkRzhnY21WdVpHVnlJR2x1ZEc5Y2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0J5WldGamRGSnZiM1FnU1VRZ2NISmxabWw0WEc0Z0lDQXFMMXh1SUNCZmNtVm5hWE4wWlhKRGIyMXdiMjVsYm5RNklHWjFibU4wYVc5dUlDaHVaWGgwUTI5dGNHOXVaVzUwTENCamIyNTBZV2x1WlhJcElIdGNiaUFnSUNBaEtHTnZiblJoYVc1bGNpQW1KaUFvWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkZURVZOUlU1VVgwNVBSRVZmVkZsUVJTQjhmQ0JqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFUlBRMTlPVDBSRlgxUlpVRVVnZkh3Z1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JFVDBOVlRVVk9WRjlHVWtGSFRVVk9WRjlPVDBSRlgxUlpVRVVwS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RmY21WbmFYTjBaWEpEYjIxd2IyNWxiblFvTGk0dUtUb2dWR0Z5WjJWMElHTnZiblJoYVc1bGNpQnBjeUJ1YjNRZ1lTQkVUMDBnWld4bGJXVnVkQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJdVpXNXpkWEpsVTJOeWIyeHNWbUZzZFdWTmIyNXBkRzl5YVc1bktDazdYRzVjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEUxdmRXNTBMbkpsWjJsemRHVnlRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdhVzV6ZEdGdVkyVnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMGdQU0J1WlhoMFEyOXRjRzl1Wlc1ME8xeHVJQ0FnSUhKbGRIVnliaUJ5WldGamRGSnZiM1JKUkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ1WkdWeUlHRWdibVYzSUdOdmJYQnZibVZ1ZENCcGJuUnZJSFJvWlNCRVQwMHVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J1WlhoMFJXeGxiV1Z1ZENCbGJHVnRaVzUwSUhSdklISmxibVJsY2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUdOdmJuUmhhVzVsY2lCamIyNTBZV2x1WlhJZ2RHOGdjbVZ1WkdWeUlHbHVkRzljYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQnphRzkxYkdSU1pYVnpaVTFoY210MWNDQnBaaUIzWlNCemFHOTFiR1FnYzJ0cGNDQjBhR1VnYldGeWEzVndJR2x1YzJWeWRHbHZibHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2JtVjRkRU52YlhCdmJtVnVkRnh1SUNBZ0tpOWNiaUFnWDNKbGJtUmxjazVsZDFKdmIzUkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQnphRzkxYkdSU1pYVnpaVTFoY210MWNDd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDOHZJRlpoY21sdmRYTWdjR0Z5ZEhNZ2IyWWdiM1Z5SUdOdlpHVWdLSE4xWTJnZ1lYTWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RbmMxeHVJQ0FnSUM4dklGOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5RcElHRnpjM1Z0WlNCMGFHRjBJR05oYkd4eklIUnZJSEpsYm1SbGNpQmhjbVZ1SjNRZ2JtVnpkR1ZrTzF4dUlDQWdJQzh2SUhabGNtbG1lU0IwYUdGMElIUm9ZWFFuY3lCMGFHVWdZMkZ6WlM1Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwOUlHNTFiR3dzSUNkZmNtVnVaR1Z5VG1WM1VtOXZkRU52YlhCdmJtVnVkQ2dwT2lCU1pXNWtaWElnYldWMGFHOWtjeUJ6YUc5MWJHUWdZbVVnWVNCd2RYSmxJR1oxYm1OMGFXOXVJQ2NnS3lBbmIyWWdjSEp2Y0hNZ1lXNWtJSE4wWVhSbE95QjBjbWxuWjJWeWFXNW5JRzVsYzNSbFpDQmpiMjF3YjI1bGJuUWdkWEJrWVhSbGN5Qm1jbTl0SUNjZ0t5QW5jbVZ1WkdWeUlHbHpJRzV2ZENCaGJHeHZkMlZrTGlCSlppQnVaV05sYzNOaGNua3NJSFJ5YVdkblpYSWdibVZ6ZEdWa0lIVndaR0YwWlhNZ2FXNGdKeUFySUNkamIyMXdiMjVsYm5SRWFXUlZjR1JoZEdVdUlFTm9aV05ySUhSb1pTQnlaVzVrWlhJZ2JXVjBhRzlrSUc5bUlDVnpMaWNzSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnSmlZZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZEM1blpYUk9ZVzFsS0NrZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1BTQnBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEtHNWxlSFJGYkdWdFpXNTBMQ0J1ZFd4c0tUdGNiaUFnSUNCMllYSWdjbVZoWTNSU2IyOTBTVVFnUFNCU1pXRmpkRTF2ZFc1MExsOXlaV2RwYzNSbGNrTnZiWEJ2Ym1WdWRDaGpiMjF3YjI1bGJuUkpibk4wWVc1alpTd2dZMjl1ZEdGcGJtVnlLVHRjYmx4dUlDQWdJQzh2SUZSb1pTQnBibWwwYVdGc0lISmxibVJsY2lCcGN5QnplVzVqYUhKdmJtOTFjeUJpZFhRZ1lXNTVJSFZ3WkdGMFpYTWdkR2hoZENCb1lYQndaVzRnWkhWeWFXNW5YRzRnSUNBZ0x5OGdjbVZ1WkdWeWFXNW5MQ0JwYmlCamIyMXdiMjVsYm5SWGFXeHNUVzkxYm5RZ2IzSWdZMjl0Y0c5dVpXNTBSR2xrVFc5MWJuUXNJSGRwYkd3Z1ltVWdZbUYwWTJobFpGeHVJQ0FnSUM4dklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1kzVnljbVZ1ZENCaVlYUmphR2x1WnlCemRISmhkR1ZuZVM1Y2JseHVJQ0FnSUZKbFlXTjBWWEJrWVhSbGN5NWlZWFJqYUdWa1ZYQmtZWFJsY3loaVlYUmphR1ZrVFc5MWJuUkRiMjF3YjI1bGJuUkpiblJ2VG05a1pTd2dZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJSEpsWVdOMFVtOXZkRWxFTENCamIyNTBZV2x1WlhJc0lITm9iM1ZzWkZKbGRYTmxUV0Z5YTNWd0xDQmpiMjUwWlhoMEtUdGNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBdkx5QlNaV052Y21RZ2RHaGxJSEp2YjNRZ1pXeGxiV1Z1ZENCcGJpQmpZWE5sSUdsMElHeGhkR1Z5SUdkbGRITWdkSEpoYm5Od2JHRnVkR1ZrTGx4dUlDQWdJQ0FnY205dmRFVnNaVzFsYm5SelFubFNaV0ZqZEZKdmIzUkpSRnR5WldGamRGSnZiM1JKUkYwZ1BTQm5aWFJTWldGamRGSnZiM1JGYkdWdFpXNTBTVzVEYjI1MFlXbHVaWElvWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGJtUmxjbk1nWVNCU1pXRmpkQ0JqYjIxd2IyNWxiblFnYVc1MGJ5QjBhR1VnUkU5TklHbHVJSFJvWlNCemRYQndiR2xsWkNCZ1kyOXVkR0ZwYm1WeVlDNWNiaUFnSUNwY2JpQWdJQ29nU1dZZ2RHaGxJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQjNZWE1nY0hKbGRtbHZkWE5zZVNCeVpXNWtaWEpsWkNCcGJuUnZJR0JqYjI1MFlXbHVaWEpnTENCMGFHbHpJSGRwYkd4Y2JpQWdJQ29nY0dWeVptOXliU0JoYmlCMWNHUmhkR1VnYjI0Z2FYUWdZVzVrSUc5dWJIa2diWFYwWVhSbElIUm9aU0JFVDAwZ1lYTWdibVZqWlhOellYSjVJSFJ2SUhKbFpteGxZM1FnZEdobFhHNGdJQ0FxSUd4aGRHVnpkQ0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJSEJoY21WdWRFTnZiWEJ2Ym1WdWRDQlVhR1VnWTI5dVkyVndkSFZoYkNCd1lYSmxiblFnYjJZZ2RHaHBjeUJ5Wlc1a1pYSWdkSEpsWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHNWxlSFJGYkdWdFpXNTBJRU52YlhCdmJtVnVkQ0JsYkdWdFpXNTBJSFJ2SUhKbGJtUmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0JqYjI1MFlXbHVaWElnUkU5TklHVnNaVzFsYm5RZ2RHOGdjbVZ1WkdWeUlHbHVkRzh1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJtZFc1amRHbHZiaUIwY21sbloyVnlaV1FnYjI0Z1kyOXRjR3hsZEdsdmJseHVJQ0FnS2lCQWNtVjBkWEp1SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnUTI5dGNHOXVaVzUwSUdsdWMzUmhibU5sSUhKbGJtUmxjbVZrSUdsdUlHQmpiMjUwWVdsdVpYSmdMbHh1SUNBZ0tpOWNiaUFnY21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWEk2SUdaMWJtTjBhVzl1SUNod1lYSmxiblJEYjIxd2IyNWxiblFzSUc1bGVIUkZiR1Z0Wlc1MExDQmpiMjUwWVdsdVpYSXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJU2h3WVhKbGJuUkRiMjF3YjI1bGJuUWdJVDBnYm5Wc2JDQW1KaUJ3WVhKbGJuUkRiMjF3YjI1bGJuUXVYM0psWVdOMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlNBaFBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R3WVhKbGJuUkRiMjF3YjI1bGJuUWdiWFZ6ZENCaVpTQmhJSFpoYkdsa0lGSmxZV04wSUVOdmJYQnZibVZ1ZENjcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnlaWFIxY200Z1VtVmhZM1JOYjNWdWRDNWZjbVZ1WkdWeVUzVmlkSEpsWlVsdWRHOURiMjUwWVdsdVpYSW9jR0Z5Wlc1MFEyOXRjRzl1Wlc1MExDQnVaWGgwUld4bGJXVnVkQ3dnWTI5dWRHRnBibVZ5TENCallXeHNZbUZqYXlrN1hHNGdJSDBzWEc1Y2JpQWdYM0psYm1SbGNsTjFZblJ5WldWSmJuUnZRMjl1ZEdGcGJtVnlPaUJtZFc1amRHbHZiaUFvY0dGeVpXNTBRMjl0Y0c5dVpXNTBMQ0J1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDRlNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUW9ibVY0ZEVWc1pXMWxiblFwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFJFOU5MbkpsYm1SbGNpZ3BPaUJKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JsYkdWdFpXNTBMaVZ6Snl3Z2RIbHdaVzltSUc1bGVIUkZiR1Z0Wlc1MElEMDlQU0FuYzNSeWFXNW5KeUEvSUNjZ1NXNXpkR1ZoWkNCdlppQndZWE56YVc1bklHRnVJR1ZzWlcxbGJuUWdjM1J5YVc1bkxDQnRZV3RsSUhOMWNtVWdkRzhnYVc1emRHRnVkR2xoZEdVZ0p5QXJJQ2RwZENCaWVTQndZWE56YVc1bklHbDBJSFJ2SUZKbFlXTjBMbU55WldGMFpVVnNaVzFsYm5RdUp5QTZJSFI1Y0dWdlppQnVaWGgwUld4bGJXVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5QS9JQ2NnU1c1emRHVmhaQ0J2WmlCd1lYTnphVzVuSUdFZ1kyOXRjRzl1Wlc1MElHTnNZWE56TENCdFlXdGxJSE4xY21VZ2RHOGdhVzV6ZEdGdWRHbGhkR1VnSnlBcklDZHBkQ0JpZVNCd1lYTnphVzVuSUdsMElIUnZJRkpsWVdOMExtTnlaV0YwWlVWc1pXMWxiblF1SnlBNlhHNGdJQ0FnTHk4Z1EyaGxZMnNnYVdZZ2FYUWdjWFZoWTJ0eklHeHBhMlVnWVc0Z1pXeGxiV1Z1ZEZ4dUlDQWdJRzVsZUhSRmJHVnRaVzUwSUNFOUlHNTFiR3dnSmlZZ2JtVjRkRVZzWlcxbGJuUXVjSEp2Y0hNZ0lUMDlJSFZ1WkdWbWFXNWxaQ0EvSUNjZ1ZHaHBjeUJ0WVhrZ1ltVWdZMkYxYzJWa0lHSjVJSFZ1YVc1MFpXNTBhVzl1WVd4c2VTQnNiMkZrYVc1bklIUjNieUJwYm1SbGNHVnVaR1Z1ZENBbklDc2dKMk52Y0dsbGN5QnZaaUJTWldGamRDNG5JRG9nSnljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGamIyNTBZV2x1WlhJZ2ZId2dJV052Ym5SaGFXNWxjaTUwWVdkT1lXMWxJSHg4SUdOdmJuUmhhVzVsY2k1MFlXZE9ZVzFsTG5SdlZYQndaWEpEWVhObEtDa2dJVDA5SUNkQ1QwUlpKeXdnSjNKbGJtUmxjaWdwT2lCU1pXNWtaWEpwYm1jZ1kyOXRjRzl1Wlc1MGN5QmthWEpsWTNSc2VTQnBiblJ2SUdSdlkzVnRaVzUwTG1KdlpIa2dhWE1nSnlBcklDZGthWE5qYjNWeVlXZGxaQ3dnYzJsdVkyVWdhWFJ6SUdOb2FXeGtjbVZ1SUdGeVpTQnZablJsYmlCdFlXNXBjSFZzWVhSbFpDQmllU0IwYUdseVpDMXdZWEowZVNBbklDc2dKM05qY21sd2RITWdZVzVrSUdKeWIzZHpaWElnWlhoMFpXNXphVzl1Y3k0Z1ZHaHBjeUJ0WVhrZ2JHVmhaQ0IwYnlCemRXSjBiR1VnSnlBcklDZHlaV052Ym1OcGJHbGhkR2x2YmlCcGMzTjFaWE11SUZSeWVTQnlaVzVrWlhKcGJtY2dhVzUwYnlCaElHTnZiblJoYVc1bGNpQmxiR1Z0Wlc1MElHTnlaV0YwWldRZ0p5QXJJQ2RtYjNJZ2VXOTFjaUJoY0hBdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ2JtVjRkRmR5WVhCd1pXUkZiR1Z0Wlc1MElEMGdibVYzSUZKbFlXTjBSV3hsYldWdWRDaFViM0JNWlhabGJGZHlZWEJ3WlhJc0lHNTFiR3dzSUc1MWJHd3NJRzUxYkd3c0lHNTFiR3dzSUc1MWJHd3NJRzVsZUhSRmJHVnRaVzUwS1R0Y2JseHVJQ0FnSUhaaGNpQndjbVYyUTI5dGNHOXVaVzUwSUQwZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEZKdmIzUkpSRnRuWlhSU1pXRmpkRkp2YjNSSlJDaGpiMjUwWVdsdVpYSXBYVHRjYmx4dUlDQWdJR2xtSUNod2NtVjJRMjl0Y0c5dVpXNTBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2NISmxkbGR5WVhCd1pXUkZiR1Z0Wlc1MElEMGdjSEpsZGtOdmJYQnZibVZ1ZEM1ZlkzVnljbVZ1ZEVWc1pXMWxiblE3WEc0Z0lDQWdJQ0IyWVhJZ2NISmxka1ZzWlcxbGJuUWdQU0J3Y21WMlYzSmhjSEJsWkVWc1pXMWxiblF1Y0hKdmNITTdYRzRnSUNBZ0lDQnBaaUFvYzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvY0hKbGRrVnNaVzFsYm5Rc0lHNWxlSFJGYkdWdFpXNTBLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVW1WaFkzUk5iM1Z1ZEM1ZmRYQmtZWFJsVW05dmRFTnZiWEJ2Ym1WdWRDaHdjbVYyUTI5dGNHOXVaVzUwTENCdVpYaDBWM0poY0hCbFpFVnNaVzFsYm5Rc0lHTnZiblJoYVc1bGNpd2dZMkZzYkdKaFkyc3BMbDl5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQzVuWlhSUWRXSnNhV05KYm5OMFlXNWpaU2dwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnVW1WaFkzUk5iM1Z1ZEM1MWJtMXZkVzUwUTI5dGNHOXVaVzUwUVhST2IyUmxLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhKbFlXTjBVbTl2ZEVWc1pXMWxiblFnUFNCblpYUlNaV0ZqZEZKdmIzUkZiR1Z0Wlc1MFNXNURiMjUwWVdsdVpYSW9ZMjl1ZEdGcGJtVnlLVHRjYmlBZ0lDQjJZWElnWTI5dWRHRnBibVZ5U0dGelVtVmhZM1JOWVhKcmRYQWdQU0J5WldGamRGSnZiM1JGYkdWdFpXNTBJQ1ltSUNFaGFXNTBaWEp1WVd4SFpYUkpSQ2h5WldGamRGSnZiM1JGYkdWdFpXNTBLVHRjYmlBZ0lDQjJZWElnWTI5dWRHRnBibVZ5U0dGelRtOXVVbTl2ZEZKbFlXTjBRMmhwYkdRZ1BTQm9ZWE5PYjI1U2IyOTBVbVZoWTNSRGFHbHNaQ2hqYjI1MFlXbHVaWElwTzF4dVhHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGamIyNTBZV2x1WlhKSVlYTk9iMjVTYjI5MFVtVmhZM1JEYUdsc1pDd2dKM0psYm1SbGNpZ3VMaTRwT2lCU1pYQnNZV05wYm1jZ1VtVmhZM1F0Y21WdVpHVnlaV1FnWTJocGJHUnlaVzRnZDJsMGFDQmhJRzVsZHlCeWIyOTBJQ2NnS3lBblkyOXRjRzl1Wlc1MExpQkpaaUI1YjNVZ2FXNTBaVzVrWldRZ2RHOGdkWEJrWVhSbElIUm9aU0JqYUdsc1pISmxiaUJ2WmlCMGFHbHpJRzV2WkdVc0lDY2dLeUFuZVc5MUlITm9iM1ZzWkNCcGJuTjBaV0ZrSUdoaGRtVWdkR2hsSUdWNGFYTjBhVzVuSUdOb2FXeGtjbVZ1SUhWd1pHRjBaU0IwYUdWcGNpQnpkR0YwWlNBbklDc2dKMkZ1WkNCeVpXNWtaWElnZEdobElHNWxkeUJqYjIxd2IyNWxiblJ6SUdsdWMzUmxZV1FnYjJZZ1kyRnNiR2x1WnlCU1pXRmpkRVJQVFM1eVpXNWtaWEl1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJR2xtSUNnaFkyOXVkR0ZwYm1WeVNHRnpVbVZoWTNSTllYSnJkWEFnZkh3Z2NtVmhZM1JTYjI5MFJXeGxiV1Z1ZEM1dVpYaDBVMmxpYkdsdVp5a2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2NtOXZkRVZzWlcxbGJuUlRhV0pzYVc1bklEMGdjbVZoWTNSU2IyOTBSV3hsYldWdWREdGNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tISnZiM1JGYkdWdFpXNTBVMmxpYkdsdVp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHBiblJsY201aGJFZGxkRWxFS0hKdmIzUkZiR1Z0Wlc1MFUybGliR2x1WnlrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBbmNtVnVaR1Z5S0NrNklGUmhjbWRsZENCdWIyUmxJR2hoY3lCdFlYSnJkWEFnY21WdVpHVnlaV1FnWW5rZ1VtVmhZM1FzSUdKMWRDQjBhR1Z5WlNBbklDc2dKMkZ5WlNCMWJuSmxiR0YwWldRZ2JtOWtaWE1nWVhNZ2QyVnNiQzRnVkdocGN5QnBjeUJ0YjNOMElHTnZiVzF2Ym14NUlHTmhkWE5sWkNCaWVTQW5JQ3NnSjNkb2FYUmxMWE53WVdObElHbHVjMlZ5ZEdWa0lHRnliM1Z1WkNCelpYSjJaWEl0Y21WdVpHVnlaV1FnYldGeWEzVndMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lISnZiM1JGYkdWdFpXNTBVMmxpYkdsdVp5QTlJSEp2YjNSRmJHVnRaVzUwVTJsaWJHbHVaeTV1WlhoMFUybGliR2x1Wnp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQnphRzkxYkdSU1pYVnpaVTFoY210MWNDQTlJR052Ym5SaGFXNWxja2hoYzFKbFlXTjBUV0Z5YTNWd0lDWW1JQ0Z3Y21WMlEyOXRjRzl1Wlc1MElDWW1JQ0ZqYjI1MFlXbHVaWEpJWVhOT2IyNVNiMjkwVW1WaFkzUkRhR2xzWkR0Y2JpQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdVbVZoWTNSTmIzVnVkQzVmY21WdVpHVnlUbVYzVW05dmRFTnZiWEJ2Ym1WdWRDaHVaWGgwVjNKaGNIQmxaRVZzWlcxbGJuUXNJR052Ym5SaGFXNWxjaXdnYzJodmRXeGtVbVYxYzJWTllYSnJkWEFzSUhCaGNtVnVkRU52YlhCdmJtVnVkQ0FoUFNCdWRXeHNJRDhnY0dGeVpXNTBRMjl0Y0c5dVpXNTBMbDl5WldGamRFbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQnliMk5sYzNORGFHbHNaRU52Ym5SbGVIUW9jR0Z5Wlc1MFEyOXRjRzl1Wlc1MExsOXlaV0ZqZEVsdWRHVnlibUZzU1c1emRHRnVZMlV1WDJOdmJuUmxlSFFwSURvZ1pXMXdkSGxQWW1wbFkzUXBMbDl5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQzVuWlhSUWRXSnNhV05KYm5OMFlXNWpaU2dwTzF4dUlDQWdJR2xtSUNoallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUNBZ1kyRnNiR0poWTJzdVkyRnNiQ2hqYjIxd2IyNWxiblFwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1kyOXRjRzl1Wlc1ME8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlc1a1pYSnpJR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJR2x1ZEc4Z2RHaGxJRVJQVFNCcGJpQjBhR1VnYzNWd2NHeHBaV1FnWUdOdmJuUmhhVzVsY21BdVhHNGdJQ0FxWEc0Z0lDQXFJRWxtSUhSb1pTQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2QyRnpJSEJ5WlhacGIzVnpiSGtnY21WdVpHVnlaV1FnYVc1MGJ5QmdZMjl1ZEdGcGJtVnlZQ3dnZEdocGN5QjNhV3hzWEc0Z0lDQXFJSEJsY21admNtMGdZVzRnZFhCa1lYUmxJRzl1SUdsMElHRnVaQ0J2Ym14NUlHMTFkR0YwWlNCMGFHVWdSRTlOSUdGeklHNWxZMlZ6YzJGeWVTQjBieUJ5Wldac1pXTjBJSFJvWlZ4dUlDQWdLaUJzWVhSbGMzUWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ2JtVjRkRVZzWlcxbGJuUWdRMjl0Y0c5dVpXNTBJR1ZzWlcxbGJuUWdkRzhnY21WdVpHVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR052Ym5SaGFXNWxjaUJFVDAwZ1pXeGxiV1Z1ZENCMGJ5QnlaVzVrWlhJZ2FXNTBieTVjYmlBZ0lDb2dRSEJoY21GdElIcy9ablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJR1oxYm1OMGFXOXVJSFJ5YVdkblpYSmxaQ0J2YmlCamIyMXdiR1YwYVc5dVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTFKbFlXTjBRMjl0Y0c5dVpXNTBmU0JEYjIxd2IyNWxiblFnYVc1emRHRnVZMlVnY21WdVpHVnlaV1FnYVc0Z1lHTnZiblJoYVc1bGNtQXVYRzRnSUNBcUwxeHVJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCU1pXRmpkRTF2ZFc1MExsOXlaVzVrWlhKVGRXSjBjbVZsU1c1MGIwTnZiblJoYVc1bGNpaHVkV3hzTENCdVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0JqWVd4c1ltRmpheWs3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxaMmx6ZEdWeWN5QmhJR052Ym5SaGFXNWxjaUJ1YjJSbElHbHVkRzhnZDJocFkyZ2dVbVZoWTNRZ1kyOXRjRzl1Wlc1MGN5QjNhV3hzSUdKbElISmxibVJsY21Wa0xseHVJQ0FnS2lCVWFHbHpJR0ZzYzI4Z1kzSmxZWFJsY3lCMGFHVWdYQ0p5WldGamRGSnZiM1JjSWlCSlJDQjBhR0YwSUhkcGJHd2dZbVVnWVhOemFXZHVaV1FnZEc4Z2RHaGxJR1ZzWlcxbGJuUmNiaUFnSUNvZ2NtVnVaR1Z5WldRZ2QybDBhR2x1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR052Ym5SaGFXNWxjaUJFVDAwZ1pXeGxiV1Z1ZENCMGJ5QnlaV2RwYzNSbGNpQmhjeUJoSUdOdmJuUmhhVzVsY2k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JVYUdVZ1hDSnlaV0ZqZEZKdmIzUmNJaUJKUkNCdlppQmxiR1Z0Wlc1MGN5QnlaVzVrWlhKbFpDQjNhWFJvYVc0dVhHNGdJQ0FxTDF4dUlDQnlaV2RwYzNSbGNrTnZiblJoYVc1bGNqb2dablZ1WTNScGIyNGdLR052Ym5SaGFXNWxjaWtnZTF4dUlDQWdJSFpoY2lCeVpXRmpkRkp2YjNSSlJDQTlJR2RsZEZKbFlXTjBVbTl2ZEVsRUtHTnZiblJoYVc1bGNpazdYRzRnSUNBZ2FXWWdLSEpsWVdOMFVtOXZkRWxFS1NCN1hHNGdJQ0FnSUNBdkx5QkpaaUJ2Ym1VZ1pYaHBjM1J6TENCdFlXdGxJSE4xY21VZ2FYUWdhWE1nWVNCMllXeHBaQ0JjSW5KbFlXTjBVbTl2ZEZ3aUlFbEVMbHh1SUNBZ0lDQWdjbVZoWTNSU2IyOTBTVVFnUFNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NW5aWFJTWldGamRGSnZiM1JKUkVaeWIyMU9iMlJsU1VRb2NtVmhZM1JTYjI5MFNVUXBPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9JWEpsWVdOMFVtOXZkRWxFS1NCN1hHNGdJQ0FnSUNBdkx5Qk9ieUIyWVd4cFpDQmNJbkpsWVdOMFVtOXZkRndpSUVsRUlHWnZkVzVrTENCamNtVmhkR1VnYjI1bExseHVJQ0FnSUNBZ2NtVmhZM1JTYjI5MFNVUWdQU0JTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3k1amNtVmhkR1ZTWldGamRGSnZiM1JKUkNncE8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1MFlXbHVaWEp6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjBnUFNCamIyNTBZV2x1WlhJN1hHNGdJQ0FnY21WMGRYSnVJSEpsWVdOMFVtOXZkRWxFTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlZibTF2ZFc1MGN5QmhibVFnWkdWemRISnZlWE1nZEdobElGSmxZV04wSUdOdmJYQnZibVZ1ZENCeVpXNWtaWEpsWkNCcGJpQjBhR1VnWUdOdmJuUmhhVzVsY21BdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUVSUFRTQmxiR1Z0Wlc1MElHTnZiblJoYVc1cGJtY2dZU0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ1lTQmpiMjF3YjI1bGJuUWdkMkZ6SUdadmRXNWtJR2x1SUdGdVpDQjFibTF2ZFc1MFpXUWdabkp2YlZ4dUlDQWdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JnWTI5dWRHRnBibVZ5WUZ4dUlDQWdLaTljYmlBZ2RXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaVG9nWm5WdVkzUnBiMjRnS0dOdmJuUmhhVzVsY2lrZ2UxeHVJQ0FnSUM4dklGWmhjbWx2ZFhNZ2NHRnlkSE1nYjJZZ2IzVnlJR052WkdVZ0tITjFZMmdnWVhNZ1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFuYzF4dUlDQWdJQzh2SUY5eVpXNWtaWEpXWVd4cFpHRjBaV1JEYjIxd2IyNWxiblFwSUdGemMzVnRaU0IwYUdGMElHTmhiR3h6SUhSdklISmxibVJsY2lCaGNtVnVKM1FnYm1WemRHVmtPMXh1SUNBZ0lDOHZJSFpsY21sbWVTQjBhR0YwSUhSb1lYUW5jeUIwYUdVZ1kyRnpaUzRnS0ZOMGNtbGpkR3g1SUhOd1pXRnJhVzVuTENCMWJtMXZkVzUwYVc1bklIZHZiaWQwSUdOaGRYTmxJR0ZjYmlBZ0lDQXZMeUJ5Wlc1a1pYSWdZblYwSUhkbElITjBhV3hzSUdSdmJpZDBJR1Y0Y0dWamRDQjBieUJpWlNCcGJpQmhJSEpsYm1SbGNpQmpZV3hzSUdobGNtVXVLVnh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUWdQVDBnYm5Wc2JDd2dKM1Z1Ylc5MWJuUkRiMjF3YjI1bGJuUkJkRTV2WkdVb0tUb2dVbVZ1WkdWeUlHMWxkR2h2WkhNZ2MyaHZkV3hrSUdKbElHRWdjSFZ5WlNCbWRXNWpkR2x2YmlBbklDc2dKMjltSUhCeWIzQnpJR0Z1WkNCemRHRjBaVHNnZEhKcFoyZGxjbWx1WnlCdVpYTjBaV1FnWTI5dGNHOXVaVzUwSUhWd1pHRjBaWE1nWm5KdmJTQnlaVzVrWlhJZ0p5QXJJQ2RwY3lCdWIzUWdZV3hzYjNkbFpDNGdTV1lnYm1WalpYTnpZWEo1TENCMGNtbG5aMlZ5SUc1bGMzUmxaQ0IxY0dSaGRHVnpJR2x1SUNjZ0t5QW5ZMjl0Y0c5dVpXNTBSR2xrVlhCa1lYUmxMaUJEYUdWamF5QjBhR1VnY21WdVpHVnlJRzFsZEdodlpDQnZaaUFsY3k0bkxDQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElDWW1JRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUXVaMlYwVG1GdFpTZ3BJSHg4SUNkU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0lTaGpiMjUwWVdsdVpYSWdKaVlnS0dOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBOVBUMGdSVXhGVFVWT1ZGOU9UMFJGWDFSWlVFVWdmSHdnWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkVUME5mVGs5RVJWOVVXVkJGSUh4OElHTnZiblJoYVc1bGNpNXViMlJsVkhsd1pTQTlQVDBnUkU5RFZVMUZUbFJmUmxKQlIwMUZUbFJmVGs5RVJWOVVXVkJGS1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuZFc1dGIzVnVkRU52YlhCdmJtVnVkRUYwVG05a1pTZ3VMaTRwT2lCVVlYSm5aWFFnWTI5dWRHRnBibVZ5SUdseklHNXZkQ0JoSUVSUFRTQmxiR1Z0Wlc1MExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhaaGNpQnlaV0ZqZEZKdmIzUkpSQ0E5SUdkbGRGSmxZV04wVW05dmRFbEVLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdkbUZ5SUdOdmJYQnZibVZ1ZENBOUlHbHVjM1JoYm1ObGMwSjVVbVZoWTNSU2IyOTBTVVJiY21WaFkzUlNiMjkwU1VSZE8xeHVJQ0FnSUdsbUlDZ2hZMjl0Y0c5dVpXNTBLU0I3WEc0Z0lDQWdJQ0F2THlCRGFHVmpheUJwWmlCMGFHVWdibTlrWlNCaVpXbHVaeUIxYm0xdmRXNTBaV1FnZDJGeklISmxibVJsY21Wa0lHSjVJRkpsWVdOMExDQmlkWFFnYVhOdUozUWdZVnh1SUNBZ0lDQWdMeThnY205dmRDQnViMlJsTGx4dUlDQWdJQ0FnZG1GeUlHTnZiblJoYVc1bGNraGhjMDV2YmxKdmIzUlNaV0ZqZEVOb2FXeGtJRDBnYUdGelRtOXVVbTl2ZEZKbFlXTjBRMmhwYkdRb1kyOXVkR0ZwYm1WeUtUdGNibHh1SUNBZ0lDQWdMeThnUTJobFkyc2dhV1lnZEdobElHTnZiblJoYVc1bGNpQnBkSE5sYkdZZ2FYTWdZU0JTWldGamRDQnliMjkwSUc1dlpHVXVYRzRnSUNBZ0lDQjJZWElnWTI5dWRHRnBibVZ5U1VRZ1BTQnBiblJsY201aGJFZGxkRWxFS0dOdmJuUmhhVzVsY2lrN1hHNGdJQ0FnSUNCMllYSWdhWE5EYjI1MFlXbHVaWEpTWldGamRGSnZiM1FnUFNCamIyNTBZV2x1WlhKSlJDQW1KaUJqYjI1MFlXbHVaWEpKUkNBOVBUMGdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE11WjJWMFVtVmhZM1JTYjI5MFNVUkdjbTl0VG05a1pVbEVLR052Ym5SaGFXNWxja2xFS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JV052Ym5SaGFXNWxja2hoYzA1dmJsSnZiM1JTWldGamRFTm9hV3hrTENBbmRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaU2dwT2lCVWFHVWdibTlrWlNCNWIzVmNYQ2R5WlNCaGRIUmxiWEIwYVc1bklIUnZJSFZ1Ylc5MWJuUWdKeUFySUNkM1lYTWdjbVZ1WkdWeVpXUWdZbmtnVW1WaFkzUWdZVzVrSUdseklHNXZkQ0JoSUhSdmNDMXNaWFpsYkNCamIyNTBZV2x1WlhJdUlDVnpKeXdnYVhORGIyNTBZV2x1WlhKU1pXRmpkRkp2YjNRZ1B5QW5XVzkxSUcxaGVTQm9ZWFpsSUdGalkybGtaVzUwWVd4c2VTQndZWE56WldRZ2FXNGdZU0JTWldGamRDQnliMjkwSUc1dlpHVWdhVzV6ZEdWaFpDQW5JQ3NnSjI5bUlHbDBjeUJqYjI1MFlXbHVaWEl1SnlBNklDZEpibk4wWldGa0xDQm9ZWFpsSUhSb1pTQndZWEpsYm5RZ1kyOXRjRzl1Wlc1MElIVndaR0YwWlNCcGRITWdjM1JoZEdVZ1lXNWtJQ2NnS3lBbmNtVnlaVzVrWlhJZ2FXNGdiM0prWlhJZ2RHOGdjbVZ0YjNabElIUm9hWE1nWTI5dGNHOXVaVzUwTGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnZlZ4dUlDQWdJRkpsWVdOMFZYQmtZWFJsY3k1aVlYUmphR1ZrVlhCa1lYUmxjeWgxYm0xdmRXNTBRMjl0Y0c5dVpXNTBSbkp2YlU1dlpHVXNJR052YlhCdmJtVnVkQ3dnWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0JrWld4bGRHVWdhVzV6ZEdGdVkyVnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMDdYRzRnSUNBZ1pHVnNaWFJsSUdOdmJuUmhhVzVsY25OQ2VWSmxZV04wVW05dmRFbEVXM0psWVdOMFVtOXZkRWxFWFR0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdaR1ZzWlhSbElISnZiM1JGYkdWdFpXNTBjMEo1VW1WaFkzUlNiMjkwU1VSYmNtVmhZM1JTYjI5MFNVUmRPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUm1sdVpITWdkR2hsSUdOdmJuUmhhVzVsY2lCRVQwMGdaV3hsYldWdWRDQjBhR0YwSUdOdmJuUmhhVzV6SUZKbFlXTjBJR052YlhCdmJtVnVkQ0IwYnlCM2FHbGphQ0IwYUdWY2JpQWdJQ29nYzNWd2NHeHBaV1FnUkU5TklHQnBaR0FnWW1Wc2IyNW5jeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdsa0lGUm9aU0JKUkNCdlppQmhiaUJsYkdWdFpXNTBJSEpsYm1SbGNtVmtJR0o1SUdFZ1VtVmhZM1FnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBY21WMGRYSnVJSHMvUkU5TlJXeGxiV1Z1ZEgwZ1JFOU5JR1ZzWlcxbGJuUWdkR2hoZENCamIyNTBZV2x1Y3lCMGFHVWdZR2xrWUM1Y2JpQWdJQ292WEc0Z0lHWnBibVJTWldGamRFTnZiblJoYVc1bGNrWnZja2xFT2lCbWRXNWpkR2x2YmlBb2FXUXBJSHRjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVuWlhSU1pXRmpkRkp2YjNSSlJFWnliMjFPYjJSbFNVUW9hV1FwTzF4dUlDQWdJSFpoY2lCamIyNTBZV2x1WlhJZ1BTQmpiMjUwWVdsdVpYSnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMDdYRzVjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEp2YjNSRmJHVnRaVzUwSUQwZ2NtOXZkRVZzWlcxbGJuUnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMDdYRzRnSUNBZ0lDQnBaaUFvY205dmRFVnNaVzFsYm5RZ0ppWWdjbTl2ZEVWc1pXMWxiblF1Y0dGeVpXNTBUbTlrWlNBaFBUMGdZMjl1ZEdGcGJtVnlLU0I3WEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktGeHVJQ0FnSUNBZ0lDQXZMeUJEWVd4c0lHbHVkR1Z5Ym1Gc1IyVjBTVVFnYUdWeVpTQmlaV05oZFhObElHZGxkRWxFSUdOaGJHeHpJR2x6Vm1Gc2FXUWdkMmhwWTJnZ1kyRnNiSE5jYmlBZ0lDQWdJQ0FnTHk4Z1ptbHVaRkpsWVdOMFEyOXVkR0ZwYm1WeVJtOXlTVVFnS0hSb2FYTWdablZ1WTNScGIyNHBMbHh1SUNBZ0lDQWdJQ0JwYm5SbGNtNWhiRWRsZEVsRUtISnZiM1JGYkdWdFpXNTBLU0E5UFQwZ2NtVmhZM1JTYjI5MFNVUXNJQ2RTWldGamRFMXZkVzUwT2lCU2IyOTBJR1ZzWlcxbGJuUWdTVVFnWkdsbVptVnlaV1FnWm5KdmJTQnlaV0ZqZEZKdmIzUkpSQzRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJuUmhhVzVsY2tOb2FXeGtJRDBnWTI5dWRHRnBibVZ5TG1acGNuTjBRMmhwYkdRN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYjI1MFlXbHVaWEpEYUdsc1pDQW1KaUJ5WldGamRGSnZiM1JKUkNBOVBUMGdhVzUwWlhKdVlXeEhaWFJKUkNoamIyNTBZV2x1WlhKRGFHbHNaQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJKWmlCMGFHVWdZMjl1ZEdGcGJtVnlJR2hoY3lCaElHNWxkeUJqYUdsc1pDQjNhWFJvSUhSb1pTQnpZVzFsSUVsRUlHRnpJSFJvWlNCdmJHUmNiaUFnSUNBZ0lDQWdJQ0F2THlCeWIyOTBJR1ZzWlcxbGJuUXNJSFJvWlc0Z2NtOXZkRVZzWlcxbGJuUnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMGdhWE5jYmlBZ0lDQWdJQ0FnSUNBdkx5QnFkWE4wSUhOMFlXeGxJR0Z1WkNCdVpXVmtjeUIwYnlCaVpTQjFjR1JoZEdWa0xpQlVhR1VnWTJGelpTQjBhR0YwSUdSbGMyVnlkbVZ6SUdGY2JpQWdJQ0FnSUNBZ0lDQXZMeUIzWVhKdWFXNW5JR2x6SUhkb1pXNGdkR2hsSUdOdmJuUmhhVzVsY2lCcGN5QmxiWEIwZVM1Y2JpQWdJQ0FnSUNBZ0lDQnliMjkwUld4bGJXVnVkSE5DZVZKbFlXTjBVbTl2ZEVsRVczSmxZV04wVW05dmRFbEVYU0E5SUdOdmJuUmhhVzVsY2tOb2FXeGtPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblVtVmhZM1JOYjNWdWREb2dVbTl2ZENCbGJHVnRaVzUwSUdoaGN5QmlaV1Z1SUhKbGJXOTJaV1FnWm5KdmJTQnBkSE1nYjNKcFoybHVZV3dnSnlBcklDZGpiMjUwWVdsdVpYSXVJRTVsZHlCamIyNTBZV2x1WlhJNklDVnpKeXdnY205dmRFVnNaVzFsYm5RdWNHRnlaVzUwVG05a1pTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdZMjl1ZEdGcGJtVnlPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCR2FXNWtjeUJoYmlCbGJHVnRaVzUwSUhKbGJtUmxjbVZrSUdKNUlGSmxZV04wSUhkcGRHZ2dkR2hsSUhOMWNIQnNhV1ZrSUVsRUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnU1VRZ2IyWWdZU0JFVDAwZ2JtOWtaU0JwYmlCMGFHVWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVQwMUZiR1Z0Wlc1MGZTQlNiMjkwSUVSUFRTQnViMlJsSUc5bUlIUm9aU0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUwxeHVJQ0JtYVc1a1VtVmhZM1JPYjJSbFFubEpSRG9nWm5WdVkzUnBiMjRnS0dsa0tTQjdYRzRnSUNBZ2RtRnlJSEpsWVdOMFVtOXZkQ0E5SUZKbFlXTjBUVzkxYm5RdVptbHVaRkpsWVdOMFEyOXVkR0ZwYm1WeVJtOXlTVVFvYVdRcE8xeHVJQ0FnSUhKbGRIVnliaUJTWldGamRFMXZkVzUwTG1acGJtUkRiMjF3YjI1bGJuUlNiMjkwS0hKbFlXTjBVbTl2ZEN3Z2FXUXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWNtRjJaWEp6WlhNZ2RYQWdkR2hsSUdGdVkyVnpkRzl5Y3lCdlppQjBhR1VnYzNWd2NHeHBaV1FnYm05a1pTQjBieUJtYVc1a0lHRWdibTlrWlNCMGFHRjBJR2x6SUdGY2JpQWdJQ29nUkU5TklISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlHRWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElISmxibVJsY21Wa0lHSjVJSFJvYVhNZ1kyOXdlU0J2WmlCU1pXRmpkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhzcWZTQnViMlJsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejlFVDAxRmRtVnVkRlJoY21kbGRIMWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQm5aWFJHYVhKemRGSmxZV04wUkU5Tk9pQm1kVzVqZEdsdmJpQW9ibTlrWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtYVc1a1JtbHljM1JTWldGamRFUlBUVWx0Y0d3b2JtOWtaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFWnBibVJ6SUdFZ2JtOWtaU0IzYVhSb0lIUm9aU0J6ZFhCd2JHbGxaQ0JnZEdGeVoyVjBTVVJnSUdsdWMybGtaU0J2WmlCMGFHVWdjM1Z3Y0d4cFpXUmNiaUFnSUNvZ1lHRnVZMlZ6ZEc5eVRtOWtaV0F1SUNCRmVIQnNiMmwwY3lCMGFHVWdTVVFnYm1GdGFXNW5JSE5qYUdWdFpTQjBieUJ3WlhKbWIzSnRJSFJvWlNCelpXRnlZMmhjYmlBZ0lDb2djWFZwWTJ0c2VTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmRtVnVkRlJoY21kbGRIMGdZVzVqWlhOMGIzSk9iMlJsSUZObFlYSmphQ0JtY205dElIUm9hWE1nY205dmRDNWNiaUFnSUNvZ1FIQmhjbUZ5YlNCN2MzUnlhVzVuZlNCMFlYSm5aWFJKUkNCSlJDQnZaaUIwYUdVZ1JFOU5JSEpsY0hKbGMyVnVkR0YwYVc5dUlHOW1JSFJvWlNCamIyMXdiMjVsYm5RdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBSUFRVVjJaVzUwVkdGeVoyVjBmU0JFVDAwZ2JtOWtaU0IzYVhSb0lIUm9aU0J6ZFhCd2JHbGxaQ0JnZEdGeVoyVjBTVVJnTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdacGJtUkRiMjF3YjI1bGJuUlNiMjkwT2lCbWRXNWpkR2x2YmlBb1lXNWpaWE4wYjNKT2IyUmxMQ0IwWVhKblpYUkpSQ2tnZTF4dUlDQWdJSFpoY2lCbWFYSnpkRU5vYVd4a2NtVnVJRDBnWm1sdVpFTnZiWEJ2Ym1WdWRGSnZiM1JTWlhWellXSnNaVUZ5Y21GNU8xeHVJQ0FnSUhaaGNpQmphR2xzWkVsdVpHVjRJRDBnTUR0Y2JseHVJQ0FnSUhaaGNpQmtaV1Z3WlhOMFFXNWpaWE4wYjNJZ1BTQm1hVzVrUkdWbGNHVnpkRU5oWTJobFpFRnVZMlZ6ZEc5eUtIUmhjbWRsZEVsRUtTQjhmQ0JoYm1ObGMzUnZjazV2WkdVN1hHNWNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnTHk4Z1ZHaHBjeUIzYVd4c0lIUm9jbTkzSUc5dUlIUm9aU0J1WlhoMElHeHBibVU3SUdkcGRtVWdZVzRnWldGeWJIa2dkMkZ5Ym1sdVoxeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29aR1ZsY0dWemRFRnVZMlZ6ZEc5eUlDRTlJRzUxYkd3c0lDZFNaV0ZqZENCallXNWNYQ2QwSUdacGJtUWdkR2hsSUhKdmIzUWdZMjl0Y0c5dVpXNTBJRzV2WkdVZ1ptOXlJR1JoZEdFdGNtVmhZM1JwWkNCMllXeDFaU0FuSUNzZ0oyQWxjMkF1SUVsbUlIbHZkVnhjSjNKbElITmxaV2x1WnlCMGFHbHpJRzFsYzNOaFoyVXNJR2wwSUhCeWIySmhZbXg1SUcxbFlXNXpJSFJvWVhRZ0p5QXJJQ2Q1YjNWY1hDZDJaU0JzYjJGa1pXUWdkSGR2SUdOdmNHbGxjeUJ2WmlCU1pXRmpkQ0J2YmlCMGFHVWdjR0ZuWlM0Z1FYUWdkR2hwY3lCMGFXMWxMQ0J2Ym14NUlDY2dLeUFuWVNCemFXNW5iR1VnWTI5d2VTQnZaaUJTWldGamRDQmpZVzRnWW1VZ2JHOWhaR1ZrSUdGMElHRWdkR2x0WlM0bkxDQjBZWEpuWlhSSlJDa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdabWx5YzNSRGFHbHNaSEpsYmxzd1hTQTlJR1JsWlhCbGMzUkJibU5sYzNSdmNpNW1hWEp6ZEVOb2FXeGtPMXh1SUNBZ0lHWnBjbk4wUTJocGJHUnlaVzR1YkdWdVozUm9JRDBnTVR0Y2JseHVJQ0FnSUhkb2FXeGxJQ2hqYUdsc1pFbHVaR1Y0SUR3Z1ptbHljM1JEYUdsc1pISmxiaTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJSFpoY2lCamFHbHNaQ0E5SUdacGNuTjBRMmhwYkdSeVpXNWJZMmhwYkdSSmJtUmxlQ3NyWFR0Y2JpQWdJQ0FnSUhaaGNpQjBZWEpuWlhSRGFHbHNaRHRjYmx4dUlDQWdJQ0FnZDJocGJHVWdLR05vYVd4a0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCamFHbHNaRWxFSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJKUkNoamFHbHNaQ2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphR2xzWkVsRUtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1JYWmxiaUJwWmlCM1pTQm1hVzVrSUhSb1pTQnViMlJsSUhkbEozSmxJR3h2YjJ0cGJtY2dabTl5TENCM1pTQm1hVzVwYzJnZ2JHOXZjR2x1WjF4dUlDQWdJQ0FnSUNBZ0lDOHZJSFJvY205MVoyZ2dhWFJ6SUhOcFlteHBibWR6SUhSdklHVnVjM1Z5WlNCMGFHVjVKM0psSUdOaFkyaGxaQ0J6YnlCMGFHRjBJSGRsSUdSdmJpZDBJR2hoZG1WY2JpQWdJQ0FnSUNBZ0lDQXZMeUIwYnlCeVpYWnBjMmwwSUhSb2FYTWdibTlrWlNCaFoyRnBiaTRnVDNSb1pYSjNhWE5sTENCM1pTQnRZV3RsSUc1ZU1pQmpZV3hzY3lCMGJ5Qm5aWFJKUkZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSGRvWlc0Z2RtbHphWFJwYm1jZ2RHaGxJRzFoYm5rZ1kyaHBiR1J5Wlc0Z2IyWWdZU0J6YVc1bmJHVWdibTlrWlNCcGJpQnZjbVJsY2k1Y2JseHVJQ0FnSUNBZ0lDQWdJR2xtSUNoMFlYSm5aWFJKUkNBOVBUMGdZMmhwYkdSSlJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHRnlaMlYwUTJocGJHUWdQU0JqYUdsc1pEdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0ZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtbHpRVzVqWlhOMGIzSkpSRTltS0dOb2FXeGtTVVFzSUhSaGNtZGxkRWxFS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1NXWWdkMlVnWm1sdVpDQmhJR05vYVd4a0lIZG9iM05sSUVsRUlHbHpJR0Z1SUdGdVkyVnpkRzl5SUc5bUlIUm9aU0JuYVhabGJpQkpSQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJSFJvWlc0Z2QyVWdZMkZ1SUdKbElITjFjbVVnZEdoaGRDQjNaU0J2Ym14NUlIZGhiblFnZEc4Z2MyVmhjbU5vSUhSb1pTQnpkV0owY21WbFhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCeWIyOTBaV1FnWVhRZ2RHaHBjeUJqYUdsc1pDd2djMjhnZDJVZ1kyRnVJSFJvY205M0lHOTFkQ0IwYUdVZ2NtVnpkQ0J2WmlCMGFHVmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklITmxZWEpqYUNCemRHRjBaUzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnBjbk4wUTJocGJHUnlaVzR1YkdWdVozUm9JRDBnWTJocGJHUkpibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWFYSnpkRU5vYVd4a2NtVnVMbkIxYzJnb1kyaHBiR1F1Wm1seWMzUkRhR2xzWkNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFbG1JSFJvYVhNZ1kyaHBiR1FnYUdGa0lHNXZJRWxFTENCMGFHVnVJSFJvWlhKbEozTWdZU0JqYUdGdVkyVWdkR2hoZENCcGRDQjNZWE5jYmlBZ0lDQWdJQ0FnSUNBdkx5QnBibXBsWTNSbFpDQmhkWFJ2YldGMGFXTmhiR3g1SUdKNUlIUm9aU0JpY205M2MyVnlMQ0JoY3lCM2FHVnVJR0VnWUR4MFlXSnNaVDVnWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdaV3hsYldWdWRDQnpjSEp2ZFhSeklHRnVJR1Y0ZEhKaElHQThkR0p2WkhrK1lDQmphR2xzWkNCaGN5QmhJSE5wWkdVZ1pXWm1aV04wSUc5bVhHNGdJQ0FnSUNBZ0lDQWdMeThnWUM1cGJtNWxja2hVVFV4Z0lIQmhjbk5wYm1jdUlFOXdkR2x0YVhOMGFXTmhiR3g1SUdOdmJuUnBiblZsSUdSdmQyNGdkR2hwYzF4dUlDQWdJQ0FnSUNBZ0lDOHZJR0p5WVc1amFDd2dZblYwSUc1dmRDQmlaV1p2Y21VZ1pYaGhiV2x1YVc1bklIUm9aU0J2ZEdobGNpQnphV0pzYVc1bmN5NWNiaUFnSUNBZ0lDQWdJQ0JtYVhKemRFTm9hV3hrY21WdUxuQjFjMmdvWTJocGJHUXVabWx5YzNSRGFHbHNaQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQmphR2xzWkNBOUlHTm9hV3hrTG01bGVIUlRhV0pzYVc1bk8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvZEdGeVoyVjBRMmhwYkdRcElIdGNiaUFnSUNBZ0lDQWdMeThnUlcxd2RIbHBibWNnWm1seWMzUkRhR2xzWkhKbGJpOW1hVzVrUTI5dGNHOXVaVzUwVW05dmRGSmxkWE5oWW14bFFYSnlZWGtnYVhOY2JpQWdJQ0FnSUNBZ0x5OGdibTkwSUc1bFkyVnpjMkZ5ZVNCbWIzSWdZMjl5Y21WamRHNWxjM01zSUdKMWRDQnBkQ0JvWld4d2N5QjBhR1VnUjBNZ2NtVmpiR0ZwYlZ4dUlDQWdJQ0FnSUNBdkx5QmhibmtnYm05a1pYTWdkR2hoZENCM1pYSmxJR3hsWm5RZ1lYUWdkR2hsSUdWdVpDQnZaaUIwYUdVZ2MyVmhjbU5vTGx4dUlDQWdJQ0FnSUNCbWFYSnpkRU5vYVd4a2NtVnVMbXhsYm1kMGFDQTlJREE3WEc1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkRU5vYVd4a08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdacGNuTjBRMmhwYkdSeVpXNHViR1Z1WjNSb0lEMGdNRHRjYmx4dUlDQWdJQ0ZtWVd4elpTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkbWFXNWtRMjl0Y0c5dVpXNTBVbTl2ZENndUxpNHNJQ1Z6S1RvZ1ZXNWhZbXhsSUhSdklHWnBibVFnWld4bGJXVnVkQzRnVkdocGN5QndjbTlpWVdKc2VTQW5JQ3NnSjIxbFlXNXpJSFJvWlNCRVQwMGdkMkZ6SUhWdVpYaHdaV04wWldSc2VTQnRkWFJoZEdWa0lDaGxMbWN1TENCaWVTQjBhR1VnWW5KdmQzTmxjaWtzSUNjZ0t5QW5kWE4xWVd4c2VTQmtkV1VnZEc4Z1ptOXlaMlYwZEdsdVp5QmhJRHgwWW05a2VUNGdkMmhsYmlCMWMybHVaeUIwWVdKc1pYTXNJRzVsYzNScGJtY2dkR0ZuY3lBbklDc2dKMnhwYTJVZ1BHWnZjbTArTENBOGNENHNJRzl5SUR4aFBpd2diM0lnZFhOcGJtY2dibTl1TFZOV1J5QmxiR1Z0Wlc1MGN5QnBiaUJoYmlBOGMzWm5QaUFuSUNzZ0ozQmhjbVZ1ZEM0Z0p5QXJJQ2RVY25rZ2FXNXpjR1ZqZEdsdVp5QjBhR1VnWTJocGJHUWdibTlrWlhNZ2IyWWdkR2hsSUdWc1pXMWxiblFnZDJsMGFDQlNaV0ZqZENCSlJDQmdKWE5nTGljc0lIUmhjbWRsZEVsRUxDQlNaV0ZqZEUxdmRXNTBMbWRsZEVsRUtHRnVZMlZ6ZEc5eVRtOWtaU2twSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlN4Y2JseHVJQ0JmYlc5MWJuUkpiV0ZuWlVsdWRHOU9iMlJsT2lCbWRXNWpkR2x2YmlBb2JXRnlhM1Z3TENCamIyNTBZV2x1WlhJc0lITm9iM1ZzWkZKbGRYTmxUV0Z5YTNWd0xDQjBjbUZ1YzJGamRHbHZiaWtnZTF4dUlDQWdJQ0VvWTI5dWRHRnBibVZ5SUNZbUlDaGpiMjUwWVdsdVpYSXVibTlrWlZSNWNHVWdQVDA5SUVWTVJVMUZUbFJmVGs5RVJWOVVXVkJGSUh4OElHTnZiblJoYVc1bGNpNXViMlJsVkhsd1pTQTlQVDBnUkU5RFgwNVBSRVZmVkZsUVJTQjhmQ0JqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFUlBRMVZOUlU1VVgwWlNRVWROUlU1VVgwNVBSRVZmVkZsUVJTa3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyMXZkVzUwUTI5dGNHOXVaVzUwU1c1MGIwNXZaR1VvTGk0dUtUb2dWR0Z5WjJWMElHTnZiblJoYVc1bGNpQnBjeUJ1YjNRZ2RtRnNhV1F1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdhV1lnS0hOb2IzVnNaRkpsZFhObFRXRnlhM1Z3S1NCN1hHNGdJQ0FnSUNCMllYSWdjbTl2ZEVWc1pXMWxiblFnUFNCblpYUlNaV0ZqZEZKdmIzUkZiR1Z0Wlc1MFNXNURiMjUwWVdsdVpYSW9ZMjl1ZEdGcGJtVnlLVHRjYmlBZ0lDQWdJR2xtSUNoU1pXRmpkRTFoY210MWNFTm9aV05yYzNWdExtTmhibEpsZFhObFRXRnlhM1Z3S0cxaGNtdDFjQ3dnY205dmRFVnNaVzFsYm5RcEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJqYUdWamEzTjFiU0E5SUhKdmIzUkZiR1Z0Wlc1MExtZGxkRUYwZEhKcFluVjBaU2hTWldGamRFMWhjbXQxY0VOb1pXTnJjM1Z0TGtOSVJVTkxVMVZOWDBGVVZGSmZUa0ZOUlNrN1hHNGdJQ0FnSUNBZ0lISnZiM1JGYkdWdFpXNTBMbkpsYlc5MlpVRjBkSEpwWW5WMFpTaFNaV0ZqZEUxaGNtdDFjRU5vWldOcmMzVnRMa05JUlVOTFUxVk5YMEZVVkZKZlRrRk5SU2s3WEc1Y2JpQWdJQ0FnSUNBZ2RtRnlJSEp2YjNSTllYSnJkWEFnUFNCeWIyOTBSV3hsYldWdWRDNXZkWFJsY2toVVRVdzdYRzRnSUNBZ0lDQWdJSEp2YjNSRmJHVnRaVzUwTG5ObGRFRjBkSEpwWW5WMFpTaFNaV0ZqZEUxaGNtdDFjRU5vWldOcmMzVnRMa05JUlVOTFUxVk5YMEZVVkZKZlRrRk5SU3dnWTJobFkydHpkVzBwTzF4dVhHNGdJQ0FnSUNBZ0lIWmhjaUJ1YjNKdFlXeHBlbVZrVFdGeWEzVndJRDBnYldGeWEzVndPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklHSmxZMkYxYzJVZ2NtOXZkRTFoY210MWNDQnBjeUJ5WlhSeWFXVjJaV1FnWm5KdmJTQjBhR1VnUkU5TkxDQjJZWEpwYjNWeklHNXZjbTFoYkdsNllYUnBiMjV6WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkMmxzYkNCb1lYWmxJRzlqWTNWeWNtVmtJSGRvYVdOb0lIZHBiR3dnYm05MElHSmxJSEJ5WlhObGJuUWdhVzRnWUcxaGNtdDFjR0F1SUVobGNtVXNYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2FXNXpaWEowSUcxaGNtdDFjQ0JwYm5SdklHRWdQR1JwZGo0Z2IzSWdQR2xtY21GdFpUNGdaR1Z3Wlc1a2FXNW5JRzl1SUhSb1pTQmpiMjUwWVdsdVpYSmNiaUFnSUNBZ0lDQWdJQ0F2THlCMGVYQmxJSFJ2SUhCbGNtWnZjbTBnZEdobElITmhiV1VnYm05eWJXRnNhWHBoZEdsdmJuTWdZbVZtYjNKbElHTnZiWEJoY21sdVp5NWNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ2JtOXliV0ZzYVhwbGNqdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JGVEVWTlJVNVVYMDVQUkVWZlZGbFFSU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdibTl5YldGc2FYcGxjaUE5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9KMlJwZGljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsY2k1cGJtNWxja2hVVFV3Z1BTQnRZWEpyZFhBN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1YjNKdFlXeHBlbVZrVFdGeWEzVndJRDBnYm05eWJXRnNhWHBsY2k1cGJtNWxja2hVVFV3N1hHNGdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUc1dmNtMWhiR2w2WlhJZ1BTQmtiMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0NkcFpuSmhiV1VuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1J2WTNWdFpXNTBMbUp2WkhrdVlYQndaVzVrUTJocGJHUW9ibTl5YldGc2FYcGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnViM0p0WVd4cGVtVnlMbU52Ym5SbGJuUkViMk4xYldWdWRDNTNjbWwwWlNodFlYSnJkWEFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdibTl5YldGc2FYcGxaRTFoY210MWNDQTlJRzV2Y20xaGJHbDZaWEl1WTI5dWRHVnVkRVJ2WTNWdFpXNTBMbVJ2WTNWdFpXNTBSV3hsYldWdWRDNXZkWFJsY2toVVRVdzdYRzRnSUNBZ0lDQWdJQ0FnSUNCa2IyTjFiV1Z1ZEM1aWIyUjVMbkpsYlc5MlpVTm9hV3hrS0c1dmNtMWhiR2w2WlhJcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lIWmhjaUJrYVdabVNXNWtaWGdnUFNCbWFYSnpkRVJwWm1abGNtVnVZMlZKYm1SbGVDaHViM0p0WVd4cGVtVmtUV0Z5YTNWd0xDQnliMjkwVFdGeWEzVndLVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHUnBabVpsY21WdVkyVWdQU0FuSUNoamJHbGxiblFwSUNjZ0t5QnViM0p0WVd4cGVtVmtUV0Z5YTNWd0xuTjFZbk4wY21sdVp5aGthV1ptU1c1a1pYZ2dMU0F5TUN3Z1pHbG1aa2x1WkdWNElDc2dNakFwSUNzZ0oxeGNiaUFvYzJWeWRtVnlLU0FuSUNzZ2NtOXZkRTFoY210MWNDNXpkV0p6ZEhKcGJtY29aR2xtWmtsdVpHVjRJQzBnTWpBc0lHUnBabVpKYm1SbGVDQXJJREl3S1R0Y2JseHVJQ0FnSUNBZ0lDQWhLR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0FoUFQwZ1JFOURYMDVQUkVWZlZGbFFSU2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5XVzkxWEZ3bmNtVWdkSEo1YVc1bklIUnZJSEpsYm1SbGNpQmhJR052YlhCdmJtVnVkQ0IwYnlCMGFHVWdaRzlqZFcxbGJuUWdkWE5wYm1jZ0p5QXJJQ2R6WlhKMlpYSWdjbVZ1WkdWeWFXNW5JR0oxZENCMGFHVWdZMmhsWTJ0emRXMGdkMkZ6SUdsdWRtRnNhV1F1SUZSb2FYTWdkWE4xWVd4c2VTQW5JQ3NnSjIxbFlXNXpJSGx2ZFNCeVpXNWtaWEpsWkNCaElHUnBabVpsY21WdWRDQmpiMjF3YjI1bGJuUWdkSGx3WlNCdmNpQndjbTl3Y3lCdmJpQW5JQ3NnSjNSb1pTQmpiR2xsYm5RZ1puSnZiU0IwYUdVZ2IyNWxJRzl1SUhSb1pTQnpaWEoyWlhJc0lHOXlJSGx2ZFhJZ2NtVnVaR1Z5S0NrZ0p5QXJJQ2R0WlhSb2IyUnpJR0Z5WlNCcGJYQjFjbVV1SUZKbFlXTjBJR05oYm01dmRDQm9ZVzVrYkdVZ2RHaHBjeUJqWVhObElHUjFaU0IwYnlBbklDc2dKMk55YjNOekxXSnliM2R6WlhJZ2NYVnBjbXR6SUdKNUlISmxibVJsY21sdVp5QmhkQ0IwYUdVZ1pHOWpkVzFsYm5RZ2NtOXZkQzRnV1c5MUlDY2dLeUFuYzJodmRXeGtJR3h2YjJzZ1ptOXlJR1Z1ZG1seWIyNXRaVzUwSUdSbGNHVnVaR1Z1ZENCamIyUmxJR2x1SUhsdmRYSWdZMjl0Y0c5dVpXNTBjeUFuSUNzZ0oyRnVaQ0JsYm5OMWNtVWdkR2hsSUhCeWIzQnpJR0Z5WlNCMGFHVWdjMkZ0WlNCamJHbGxiblFnWVc1a0lITmxjblpsY2lCemFXUmxPbHhjYmlWekp5d2daR2xtWm1WeVpXNWpaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkU1pXRmpkQ0JoZEhSbGJYQjBaV1FnZEc4Z2NtVjFjMlVnYldGeWEzVndJR2x1SUdFZ1kyOXVkR0ZwYm1WeUlHSjFkQ0IwYUdVZ0p5QXJJQ2RqYUdWamEzTjFiU0IzWVhNZ2FXNTJZV3hwWkM0Z1ZHaHBjeUJuWlc1bGNtRnNiSGtnYldWaGJuTWdkR2hoZENCNWIzVWdZWEpsSUNjZ0t5QW5kWE5wYm1jZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1WnlCaGJtUWdkR2hsSUcxaGNtdDFjQ0JuWlc1bGNtRjBaV1FnYjI0Z2RHaGxJQ2NnS3lBbmMyVnlkbVZ5SUhkaGN5QnViM1FnZDJoaGRDQjBhR1VnWTJ4cFpXNTBJSGRoY3lCbGVIQmxZM1JwYm1jdUlGSmxZV04wSUdsdWFtVmpkR1ZrSUNjZ0t5QW5ibVYzSUcxaGNtdDFjQ0IwYnlCamIyMXdaVzV6WVhSbElIZG9hV05vSUhkdmNtdHpJR0oxZENCNWIzVWdhR0YyWlNCc2IzTjBJRzFoYm5rZ0p5QXJJQ2R2WmlCMGFHVWdZbVZ1WldacGRITWdiMllnYzJWeWRtVnlJSEpsYm1SbGNtbHVaeTRnU1c1emRHVmhaQ3dnWm1sbmRYSmxJRzkxZENBbklDc2dKM2RvZVNCMGFHVWdiV0Z5YTNWd0lHSmxhVzVuSUdkbGJtVnlZWFJsWkNCcGN5QmthV1ptWlhKbGJuUWdiMjRnZEdobElHTnNhV1Z1ZENBbklDc2dKMjl5SUhObGNuWmxjanBjWEc0bGN5Y3NJR1JwWm1abGNtVnVZMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0lTaGpiMjUwWVdsdVpYSXVibTlrWlZSNWNHVWdJVDA5SUVSUFExOU9UMFJGWDFSWlVFVXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxbHZkVnhjSjNKbElIUnllV2x1WnlCMGJ5QnlaVzVrWlhJZ1lTQmpiMjF3YjI1bGJuUWdkRzhnZEdobElHUnZZM1Z0Wlc1MElHSjFkQ0FuSUNzZ0ozbHZkU0JrYVdSdVhGd25kQ0IxYzJVZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1Wnk0Z1YyVWdZMkZ1WEZ3bmRDQmtieUIwYUdseklDY2dLeUFuZDJsMGFHOTFkQ0IxYzJsdVp5QnpaWEoyWlhJZ2NtVnVaR1Z5YVc1bklHUjFaU0IwYnlCamNtOXpjeTFpY205M2MyVnlJSEYxYVhKcmN5NGdKeUFySUNkVFpXVWdVbVZoWTNSRVQwMVRaWEoyWlhJdWNtVnVaR1Z5Vkc5VGRISnBibWNvS1NCbWIzSWdjMlZ5ZG1WeUlISmxibVJsY21sdVp5NG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCcFppQW9kSEpoYm5OaFkzUnBiMjR1ZFhObFEzSmxZWFJsUld4bGJXVnVkQ2tnZTF4dUlDQWdJQ0FnZDJocGJHVWdLR052Ym5SaGFXNWxjaTVzWVhOMFEyaHBiR1FwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxuSmxiVzkyWlVOb2FXeGtLR052Ym5SaGFXNWxjaTVzWVhOMFEyaHBiR1FwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWTI5dWRHRnBibVZ5TG1Gd2NHVnVaRU5vYVd4a0tHMWhjbXQxY0NrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSE5sZEVsdWJtVnlTRlJOVENoamIyNTBZV2x1WlhJc0lHMWhjbXQxY0NrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lHOTNibVZ5Ukc5amRXMWxiblJEYjI1MFpYaDBTMlY1T2lCdmQyNWxja1J2WTNWdFpXNTBRMjl1ZEdWNGRFdGxlU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZoWTNRZ1NVUWdkWFJwYkdsMGFXVnpMbHh1SUNBZ0tpOWNibHh1SUNCblpYUlNaV0ZqZEZKdmIzUkpSRG9nWjJWMFVtVmhZM1JTYjI5MFNVUXNYRzVjYmlBZ1oyVjBTVVE2SUdkbGRFbEVMRnh1WEc0Z0lITmxkRWxFT2lCelpYUkpSQ3hjYmx4dUlDQm5aWFJPYjJSbE9pQm5aWFJPYjJSbExGeHVYRzRnSUdkbGRFNXZaR1ZHY205dFNXNXpkR0Z1WTJVNklHZGxkRTV2WkdWR2NtOXRTVzV6ZEdGdVkyVXNYRzVjYmlBZ2FYTldZV3hwWkRvZ2FYTldZV3hwWkN4Y2JseHVJQ0J3ZFhKblpVbEVPaUJ3ZFhKblpVbEVYRzU5TzF4dVhHNVNaV0ZqZEZCbGNtWXViV1ZoYzNWeVpVMWxkR2h2WkhNb1VtVmhZM1JOYjNWdWRDd2dKMUpsWVdOMFRXOTFiblFuTENCN1hHNGdJRjl5Wlc1a1pYSk9aWGRTYjI5MFEyOXRjRzl1Wlc1ME9pQW5YM0psYm1SbGNrNWxkMUp2YjNSRGIyMXdiMjVsYm5RbkxGeHVJQ0JmYlc5MWJuUkpiV0ZuWlVsdWRHOU9iMlJsT2lBblgyMXZkVzUwU1cxaFoyVkpiblJ2VG05a1pTZGNibjBwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVFc5MWJuUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE11bHRpQ2hpbGRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcycpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZFJlY29uY2lsZXInKTtcblxudmFyIGZsYXR0ZW5DaGlsZHJlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbkNoaWxkcmVuJyk7XG5cbi8qKlxuICogVXBkYXRpbmcgY2hpbGRyZW4gb2YgYSBjb21wb25lbnQgbWF5IHRyaWdnZXIgcmVjdXJzaXZlIHVwZGF0ZXMuIFRoZSBkZXB0aCBpc1xuICogdXNlZCB0byBiYXRjaCByZWN1cnNpdmUgdXBkYXRlcyB0byByZW5kZXIgbWFya3VwIG1vcmUgZWZmaWNpZW50bHkuXG4gKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBwcml2YXRlXG4gKi9cbnZhciB1cGRhdGVEZXB0aCA9IDA7XG5cbi8qKlxuICogUXVldWUgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb24gb2JqZWN0cy5cbiAqXG4gKiBFYWNoIG9iamVjdCBoYXMgYSBgdHlwZWAgcHJvcGVydHkgdGhhdCBpcyBpbiBgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXNgLlxuICpcbiAqIEB0eXBlIHthcnJheTxvYmplY3Q+fVxuICogQHByaXZhdGVcbiAqL1xudmFyIHVwZGF0ZVF1ZXVlID0gW107XG5cbi8qKlxuICogUXVldWUgb2YgbWFya3VwIHRvIGJlIHJlbmRlcmVkLlxuICpcbiAqIEB0eXBlIHthcnJheTxzdHJpbmc+fVxuICogQHByaXZhdGVcbiAqL1xudmFyIG1hcmt1cFF1ZXVlID0gW107XG5cbi8qKlxuICogRW5xdWV1ZXMgbWFya3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVJbnNlcnRNYXJrdXAocGFyZW50SUQsIG1hcmt1cCwgdG9JbmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLklOU0VSVF9NQVJLVVAsXG4gICAgbWFya3VwSW5kZXg6IG1hcmt1cFF1ZXVlLnB1c2gobWFya3VwKSAtIDEsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgdG9JbmRleDogdG9JbmRleFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyBtb3ZpbmcgYW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggU291cmNlIGluZGV4IG9mIHRoZSBleGlzdGluZyBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlTW92ZShwYXJlbnRJRCwgZnJvbUluZGV4LCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuTU9WRV9FWElTVElORyxcbiAgICBtYXJrdXBJbmRleDogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgIHRvSW5kZXg6IHRvSW5kZXhcbiAgfSk7XG59XG5cbi8qKlxuICogRW5xdWV1ZXMgcmVtb3ZpbmcgYW4gZWxlbWVudCBhdCBhbiBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50SUQgSUQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IEluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVSZW1vdmUocGFyZW50SUQsIGZyb21JbmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlJFTU9WRV9OT0RFLFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgdG9JbmRleDogbnVsbFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyBzZXR0aW5nIHRoZSBtYXJrdXAgb2YgYSBub2RlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlU2V0TWFya3VwKHBhcmVudElELCBtYXJrdXApIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICB1cGRhdGVRdWV1ZS5wdXNoKHtcbiAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB0eXBlOiBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5TRVRfTUFSS1VQLFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IG1hcmt1cCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgdG9JbmRleDogbnVsbFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyBzZXR0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudElEIElEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250ZW50IFRleHQgY29udGVudCB0byBzZXQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlVGV4dENvbnRlbnQocGFyZW50SUQsIHRleHRDb250ZW50KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuVEVYVF9DT05URU5ULFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IHRleHRDb250ZW50LFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICB0b0luZGV4OiBudWxsXG4gIH0pO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwcm9jZXNzUXVldWUoKSB7XG4gIGlmICh1cGRhdGVRdWV1ZS5sZW5ndGgpIHtcbiAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXModXBkYXRlUXVldWUsIG1hcmt1cFF1ZXVlKTtcbiAgICBjbGVhclF1ZXVlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDbGVhcnMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2xlYXJRdWV1ZSgpIHtcbiAgdXBkYXRlUXVldWUubGVuZ3RoID0gMDtcbiAgbWFya3VwUXVldWUubGVuZ3RoID0gMDtcbn1cblxuLyoqXG4gKiBSZWFjdE11bHRpQ2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcgbXVsdGlwbGUgY2hpbGRyZW4uXG4gKlxuICogQGNsYXNzIFJlYWN0TXVsdGlDaGlsZFxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdE11bHRpQ2hpbGQgPSB7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUgbXVsdGlwbGVcbiAgICogY2hpbGRyZW4uIFRoaXMgaXMgdXNlZCBieSBgUmVhY3RET01Db21wb25lbnRgIHRvIG1vdW50LCB1cGRhdGUsIGFuZFxuICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBsZW5kcyB7UmVhY3RNdWx0aUNoaWxkLnByb3RvdHlwZX1cbiAgICovXG4gIE1peGluOiB7XG5cbiAgICBfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICBfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW47XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzKTtcbiAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gQW4gYXJyYXkgb2YgbW91bnRlZCByZXByZXNlbnRhdGlvbnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgbW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07XG4gICAgICAgICAgLy8gSW5saW5lZCBmb3IgcGVyZm9ybWFuY2UsIHNlZSBgUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RJRGAuXG4gICAgICAgICAgdmFyIHJvb3RJRCA9IHRoaXMuX3Jvb3ROb2RlSUQgKyBuYW1lO1xuICAgICAgICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCByb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4Kys7XG4gICAgICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1vdW50SW1hZ2VzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRlbnQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVudCkge1xuICAgICAgdXBkYXRlRGVwdGgrKztcbiAgICAgIHZhciBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cbiAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbik7XG4gICAgICAgIC8vIFRPRE86IFRoZSBzZXRUZXh0Q29udGVudCBvcGVyYXRpb24gc2hvdWxkIGJlIGVub3VnaFxuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgbmV3IHRleHQgY29udGVudC5cbiAgICAgICAgdGhpcy5zZXRUZXh0Q29udGVudChuZXh0Q29udGVudCk7XG4gICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB1cGRhdGVEZXB0aC0tO1xuICAgICAgICBpZiAoIXVwZGF0ZURlcHRoKSB7XG4gICAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICBjbGVhclF1ZXVlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG1hcmt1cCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZU1hcmt1cDogZnVuY3Rpb24gKG5leHRNYXJrdXApIHtcbiAgICAgIHVwZGF0ZURlcHRoKys7XG4gICAgICB2YXIgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4pO1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZEJ5TmFtZShwcmV2Q2hpbGRyZW5bbmFtZV0sIG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldE1hcmt1cChuZXh0TWFya3VwKTtcbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHVwZGF0ZURlcHRoLS07XG4gICAgICAgIGlmICghdXBkYXRlRGVwdGgpIHtcbiAgICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgIGNsZWFyUXVldWUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggbmV3IGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdXBkYXRlRGVwdGgrKztcbiAgICAgIHZhciBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdXBkYXRlRGVwdGgtLTtcbiAgICAgICAgaWYgKCF1cGRhdGVEZXB0aCkge1xuICAgICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgICAgY2xlYXJRdWV1ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzUXVldWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW1wcm92ZSBwZXJmb3JtYW5jZSBieSBpc29sYXRpbmcgdGhpcyBob3QgY29kZSBwYXRoIGZyb20gdGhlIHRyeS9jYXRjaFxuICAgICAqIGJsb2NrIGluIGB1cGRhdGVDaGlsZHJlbmAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBmaW5hbFxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuO1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbmFtZTtcbiAgICAgIC8vIGBuZXh0SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5gLCBidXRcbiAgICAgIC8vIGBsYXN0SW5kZXhgIHdpbGwgYmUgdGhlIGxhc3QgaW5kZXggdmlzaXRlZCBpbiBgcHJldkNoaWxkcmVuYC5cbiAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIG5leHRJbmRleCA9IDA7XG4gICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG4gICAgICAgIGlmICghbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkge1xuICAgICAgICAgIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbmV4dEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICBwcmV2Q2hpbGQuX21vdW50SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIGBsYXN0SW5kZXhgIGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMgdW5zZXQgYnkgdW5tb3VudGluZy5cbiAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgICB0aGlzLl9tb3VudENoaWxkQnlOYW1lQXRJbmRleChuZXh0Q2hpbGQsIG5hbWUsIG5leHRJbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIG5leHRJbmRleCsrO1xuICAgICAgfVxuICAgICAgLy8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgICB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxkcmVuW25hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cbiAgICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHJlbmRlcmVkQ2hpbGRyZW4pO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdmVzIGEgY2hpbGQgY29tcG9uZW50IHRvIHRoZSBzdXBwbGllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsYXN0SW5kZXggTGFzdCBpbmRleCB2aXNpdGVkIG9mIHRoZSBzaWJsaW5ncyBvZiBgY2hpbGRgLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgdG9JbmRleCwgbGFzdEluZGV4KSB7XG4gICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJbmRleGAsIHRoZW4gaXQgbmVlZHMgdG9cbiAgICAgIC8vIGJlIG1vdmVkLiBPdGhlcndpc2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmVcbiAgICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuICAgICAgaWYgKGNoaWxkLl9tb3VudEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgIGVucXVldWVNb3ZlKHRoaXMuX3Jvb3ROb2RlSUQsIGNoaWxkLl9tb3VudEluZGV4LCB0b0luZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbW91bnRJbWFnZSkge1xuICAgICAgZW5xdWV1ZUluc2VydE1hcmt1cCh0aGlzLl9yb290Tm9kZUlELCBtb3VudEltYWdlLCBjaGlsZC5fbW91bnRJbmRleCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDaGlsZCB0byByZW1vdmUuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGVucXVldWVSZW1vdmUodGhpcy5fcm9vdE5vZGVJRCwgY2hpbGQuX21vdW50SW5kZXgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoaXMgdGV4dCBjb250ZW50IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBzZXRUZXh0Q29udGVudDogZnVuY3Rpb24gKHRleHRDb250ZW50KSB7XG4gICAgICBlbnF1ZXVlVGV4dENvbnRlbnQodGhpcy5fcm9vdE5vZGVJRCwgdGV4dENvbnRlbnQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoaXMgbWFya3VwIHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHNldC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgc2V0TWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgICBlbnF1ZXVlU2V0TWFya3VwKHRoaXMuX3Jvb3ROb2RlSUQsIG1hcmt1cCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdW50cyBhIGNoaWxkIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW91bnQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX21vdW50Q2hpbGRCeU5hbWVBdEluZGV4OiBmdW5jdGlvbiAoY2hpbGQsIG5hbWUsIGluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgLy8gSW5saW5lZCBmb3IgcGVyZm9ybWFuY2UsIHNlZSBgUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RJRGAuXG4gICAgICB2YXIgcm9vdElEID0gdGhpcy5fcm9vdE5vZGVJRCArIG5hbWU7XG4gICAgICB2YXIgbW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5jcmVhdGVDaGlsZChjaGlsZCwgbW91bnRJbWFnZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVubW91bnRzIGEgcmVuZGVyZWQgY2hpbGQuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gdW5tb3VudC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF91bm1vdW50Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgdGhpcy5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICBjaGlsZC5fbW91bnRJbmRleCA9IG51bGw7XG4gICAgfVxuXG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUk5kV3gwYVVOb2FXeGtMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVFhWc2RHbERhR2xzWkZ4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVOdmJYQnZibVZ1ZEVWdWRtbHliMjV0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6SnlrN1hHNWNiblpoY2lCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSW5LVHRjYm5aaGNpQlNaV0ZqZEZKbFkyOXVZMmxzWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVtVmpiMjVqYVd4bGNpY3BPMXh1ZG1GeUlGSmxZV04wUTJocGJHUlNaV052Ym1OcGJHVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpY3BPMXh1WEc1MllYSWdabXhoZEhSbGJrTm9hV3hrY21WdUlEMGdjbVZ4ZFdseVpTZ25MaTltYkdGMGRHVnVRMmhwYkdSeVpXNG5LVHRjYmx4dUx5b3FYRzRnS2lCVmNHUmhkR2x1WnlCamFHbHNaSEpsYmlCdlppQmhJR052YlhCdmJtVnVkQ0J0WVhrZ2RISnBaMmRsY2lCeVpXTjFjbk5wZG1VZ2RYQmtZWFJsY3k0Z1ZHaGxJR1JsY0hSb0lHbHpYRzRnS2lCMWMyVmtJSFJ2SUdKaGRHTm9JSEpsWTNWeWMybDJaU0IxY0dSaGRHVnpJSFJ2SUhKbGJtUmxjaUJ0WVhKcmRYQWdiVzl5WlNCbFptWnBZMmxsYm5Sc2VTNWNiaUFxWEc0Z0tpQkFkSGx3WlNCN2JuVnRZbVZ5ZlZ4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dWRtRnlJSFZ3WkdGMFpVUmxjSFJvSUQwZ01EdGNibHh1THlvcVhHNGdLaUJSZFdWMVpTQnZaaUIxY0dSaGRHVWdZMjl1Wm1sbmRYSmhkR2x2YmlCdlltcGxZM1J6TGx4dUlDcGNiaUFxSUVWaFkyZ2diMkpxWldOMElHaGhjeUJoSUdCMGVYQmxZQ0J3Y205d1pYSjBlU0IwYUdGMElHbHpJR2x1SUdCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsYzJBdVhHNGdLbHh1SUNvZ1FIUjVjR1VnZTJGeWNtRjVQRzlpYW1WamRENTlYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzUyWVhJZ2RYQmtZWFJsVVhWbGRXVWdQU0JiWFR0Y2JseHVMeW9xWEc0Z0tpQlJkV1YxWlNCdlppQnRZWEpyZFhBZ2RHOGdZbVVnY21WdVpHVnlaV1F1WEc0Z0tseHVJQ29nUUhSNWNHVWdlMkZ5Y21GNVBITjBjbWx1Wno1OVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNTJZWElnYldGeWEzVndVWFZsZFdVZ1BTQmJYVHRjYmx4dUx5b3FYRzRnS2lCRmJuRjFaWFZsY3lCdFlYSnJkWEFnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdZVzVrSUdsdWMyVnlkR1ZrSUdGMElHRWdjM1Z3Y0d4cFpXUWdhVzVrWlhndVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhCaGNtVnVkRWxFSUVsRUlHOW1JSFJvWlNCd1lYSmxiblFnWTI5dGNHOXVaVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMWhjbXQxY0NCTllYSnJkWEFnZEdoaGRDQnlaVzVrWlhKeklHbHVkRzhnWVc0Z1pXeGxiV1Z1ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQjBiMGx1WkdWNElFUmxjM1JwYm1GMGFXOXVJR2x1WkdWNExseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdaVzV4ZFdWMVpVbHVjMlZ5ZEUxaGNtdDFjQ2h3WVhKbGJuUkpSQ3dnYldGeWEzVndMQ0IwYjBsdVpHVjRLU0I3WEc0Z0lDOHZJRTVQVkVVNklFNTFiR3dnZG1Gc2RXVnpJSEpsWkhWalpTQm9hV1JrWlc0Z1kyeGhjM05sY3k1Y2JpQWdkWEJrWVhSbFVYVmxkV1V1Y0hWemFDaDdYRzRnSUNBZ2NHRnlaVzUwU1VRNklIQmhjbVZ1ZEVsRUxGeHVJQ0FnSUhCaGNtVnVkRTV2WkdVNklHNTFiR3dzWEc0Z0lDQWdkSGx3WlRvZ1VtVmhZM1JOZFd4MGFVTm9hV3hrVlhCa1lYUmxWSGx3WlhNdVNVNVRSVkpVWDAxQlVrdFZVQ3hjYmlBZ0lDQnRZWEpyZFhCSmJtUmxlRG9nYldGeWEzVndVWFZsZFdVdWNIVnphQ2h0WVhKcmRYQXBJQzBnTVN4Y2JpQWdJQ0JqYjI1MFpXNTBPaUJ1ZFd4c0xGeHVJQ0FnSUdaeWIyMUpibVJsZURvZ2JuVnNiQ3hjYmlBZ0lDQjBiMGx1WkdWNE9pQjBiMGx1WkdWNFhHNGdJSDBwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVZ1Y1hWbGRXVnpJRzF2ZG1sdVp5QmhiaUJsZUdsemRHbHVaeUJsYkdWdFpXNTBJSFJ2SUdGdWIzUm9aWElnYVc1a1pYZ3VYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIQmhjbVZ1ZEVsRUlFbEVJRzltSUhSb1pTQndZWEpsYm5RZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1p5YjIxSmJtUmxlQ0JUYjNWeVkyVWdhVzVrWlhnZ2IyWWdkR2hsSUdWNGFYTjBhVzVuSUdWc1pXMWxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2RHOUpibVJsZUNCRVpYTjBhVzVoZEdsdmJpQnBibVJsZUNCdlppQjBhR1VnWld4bGJXVnVkQzVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdWdWNYVmxkV1ZOYjNabEtIQmhjbVZ1ZEVsRUxDQm1jbTl0U1c1a1pYZ3NJSFJ2U1c1a1pYZ3BJSHRjYmlBZ0x5OGdUazlVUlRvZ1RuVnNiQ0IyWVd4MVpYTWdjbVZrZFdObElHaHBaR1JsYmlCamJHRnpjMlZ6TGx4dUlDQjFjR1JoZEdWUmRXVjFaUzV3ZFhOb0tIdGNiaUFnSUNCd1lYSmxiblJKUkRvZ2NHRnlaVzUwU1VRc1hHNGdJQ0FnY0dGeVpXNTBUbTlrWlRvZ2JuVnNiQ3hjYmlBZ0lDQjBlWEJsT2lCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1TlQxWkZYMFZZU1ZOVVNVNUhMRnh1SUNBZ0lHMWhjbXQxY0VsdVpHVjRPaUJ1ZFd4c0xGeHVJQ0FnSUdOdmJuUmxiblE2SUc1MWJHd3NYRzRnSUNBZ1puSnZiVWx1WkdWNE9pQm1jbTl0U1c1a1pYZ3NYRzRnSUNBZ2RHOUpibVJsZURvZ2RHOUpibVJsZUZ4dUlDQjlLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkZibkYxWlhWbGN5QnlaVzF2ZG1sdVp5QmhiaUJsYkdWdFpXNTBJR0YwSUdGdUlHbHVaR1Y0TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J3WVhKbGJuUkpSQ0JKUkNCdlppQjBhR1VnY0dGeVpXNTBJR052YlhCdmJtVnVkQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCbWNtOXRTVzVrWlhnZ1NXNWtaWGdnYjJZZ2RHaGxJR1ZzWlcxbGJuUWdkRzhnY21WdGIzWmxMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlc1eGRXVjFaVkpsYlc5MlpTaHdZWEpsYm5SSlJDd2dabkp2YlVsdVpHVjRLU0I3WEc0Z0lDOHZJRTVQVkVVNklFNTFiR3dnZG1Gc2RXVnpJSEpsWkhWalpTQm9hV1JrWlc0Z1kyeGhjM05sY3k1Y2JpQWdkWEJrWVhSbFVYVmxkV1V1Y0hWemFDaDdYRzRnSUNBZ2NHRnlaVzUwU1VRNklIQmhjbVZ1ZEVsRUxGeHVJQ0FnSUhCaGNtVnVkRTV2WkdVNklHNTFiR3dzWEc0Z0lDQWdkSGx3WlRvZ1VtVmhZM1JOZFd4MGFVTm9hV3hrVlhCa1lYUmxWSGx3WlhNdVVrVk5UMVpGWDA1UFJFVXNYRzRnSUNBZ2JXRnlhM1Z3U1c1a1pYZzZJRzUxYkd3c1hHNGdJQ0FnWTI5dWRHVnVkRG9nYm5Wc2JDeGNiaUFnSUNCbWNtOXRTVzVrWlhnNklHWnliMjFKYm1SbGVDeGNiaUFnSUNCMGIwbHVaR1Y0T2lCdWRXeHNYRzRnSUgwcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWNYVmxkV1Z6SUhObGRIUnBibWNnZEdobElHMWhjbXQxY0NCdlppQmhJRzV2WkdVdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhCaGNtVnVkRWxFSUVsRUlHOW1JSFJvWlNCd1lYSmxiblFnWTI5dGNHOXVaVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMWhjbXQxY0NCTllYSnJkWEFnZEdoaGRDQnlaVzVrWlhKeklHbHVkRzhnWVc0Z1pXeGxiV1Z1ZEM1Y2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHVnVjWFZsZFdWVFpYUk5ZWEpyZFhBb2NHRnlaVzUwU1VRc0lHMWhjbXQxY0NrZ2UxeHVJQ0F2THlCT1QxUkZPaUJPZFd4c0lIWmhiSFZsY3lCeVpXUjFZMlVnYUdsa1pHVnVJR05zWVhOelpYTXVYRzRnSUhWd1pHRjBaVkYxWlhWbExuQjFjMmdvZTF4dUlDQWdJSEJoY21WdWRFbEVPaUJ3WVhKbGJuUkpSQ3hjYmlBZ0lDQndZWEpsYm5ST2IyUmxPaUJ1ZFd4c0xGeHVJQ0FnSUhSNWNHVTZJRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpMbE5GVkY5TlFWSkxWVkFzWEc0Z0lDQWdiV0Z5YTNWd1NXNWtaWGc2SUc1MWJHd3NYRzRnSUNBZ1kyOXVkR1Z1ZERvZ2JXRnlhM1Z3TEZ4dUlDQWdJR1p5YjIxSmJtUmxlRG9nYm5Wc2JDeGNiaUFnSUNCMGIwbHVaR1Y0T2lCdWRXeHNYRzRnSUgwcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWNYVmxkV1Z6SUhObGRIUnBibWNnZEdobElIUmxlSFFnWTI5dWRHVnVkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjR0Z5Wlc1MFNVUWdTVVFnYjJZZ2RHaGxJSEJoY21WdWRDQmpiMjF3YjI1bGJuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEdWNGRFTnZiblJsYm5RZ1ZHVjRkQ0JqYjI1MFpXNTBJSFJ2SUhObGRDNWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR1Z1Y1hWbGRXVlVaWGgwUTI5dWRHVnVkQ2h3WVhKbGJuUkpSQ3dnZEdWNGRFTnZiblJsYm5RcElIdGNiaUFnTHk4Z1RrOVVSVG9nVG5Wc2JDQjJZV3gxWlhNZ2NtVmtkV05sSUdocFpHUmxiaUJqYkdGemMyVnpMbHh1SUNCMWNHUmhkR1ZSZFdWMVpTNXdkWE5vS0h0Y2JpQWdJQ0J3WVhKbGJuUkpSRG9nY0dGeVpXNTBTVVFzWEc0Z0lDQWdjR0Z5Wlc1MFRtOWtaVG9nYm5Wc2JDeGNiaUFnSUNCMGVYQmxPaUJTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVVUlZoVVgwTlBUbFJGVGxRc1hHNGdJQ0FnYldGeWEzVndTVzVrWlhnNklHNTFiR3dzWEc0Z0lDQWdZMjl1ZEdWdWREb2dkR1Y0ZEVOdmJuUmxiblFzWEc0Z0lDQWdabkp2YlVsdVpHVjRPaUJ1ZFd4c0xGeHVJQ0FnSUhSdlNXNWtaWGc2SUc1MWJHeGNiaUFnZlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nVUhKdlkyVnpjMlZ6SUdGdWVTQmxibkYxWlhWbFpDQjFjR1JoZEdWekxseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUhCeWIyTmxjM05SZFdWMVpTZ3BJSHRjYmlBZ2FXWWdLSFZ3WkdGMFpWRjFaWFZsTG14bGJtZDBhQ2tnZTF4dUlDQWdJRkpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUXVjSEp2WTJWemMwTm9hV3hrY21WdVZYQmtZWFJsY3loMWNHUmhkR1ZSZFdWMVpTd2diV0Z5YTNWd1VYVmxkV1VwTzF4dUlDQWdJR05zWldGeVVYVmxkV1VvS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnNaV0Z5Y3lCaGJua2daVzV4ZFdWMVpXUWdkWEJrWVhSbGN5NWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCamJHVmhjbEYxWlhWbEtDa2dlMXh1SUNCMWNHUmhkR1ZSZFdWMVpTNXNaVzVuZEdnZ1BTQXdPMXh1SUNCdFlYSnJkWEJSZFdWMVpTNXNaVzVuZEdnZ1BTQXdPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxZV04wVFhWc2RHbERhR2xzWkNCaGNtVWdZMkZ3WVdKc1pTQnZaaUJ5WldOdmJtTnBiR2x1WnlCdGRXeDBhWEJzWlNCamFHbHNaSEpsYmk1Y2JpQXFYRzRnS2lCQVkyeGhjM01nVW1WaFkzUk5kV3gwYVVOb2FXeGtYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1ZG1GeUlGSmxZV04wVFhWc2RHbERhR2xzWkNBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1VISnZkbWxrWlhNZ1kyOXRiVzl1SUdaMWJtTjBhVzl1WVd4cGRIa2dabTl5SUdOdmJYQnZibVZ1ZEhNZ2RHaGhkQ0J0ZFhOMElISmxZMjl1WTJsc1pTQnRkV3gwYVhCc1pWeHVJQ0FnS2lCamFHbHNaSEpsYmk0Z1ZHaHBjeUJwY3lCMWMyVmtJR0o1SUdCU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZEdBZ2RHOGdiVzkxYm5Rc0lIVndaR0YwWlN3Z1lXNWtYRzRnSUNBcUlIVnViVzkxYm5RZ1kyaHBiR1FnWTI5dGNHOXVaVzUwY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRR3hsYm1SeklIdFNaV0ZqZEUxMWJIUnBRMmhwYkdRdWNISnZkRzkwZVhCbGZWeHVJQ0FnS2k5Y2JpQWdUV2w0YVc0NklIdGNibHh1SUNBZ0lGOXlaV052Ym1OcGJHVnlTVzV6ZEdGdWRHbGhkR1ZEYUdsc1pISmxiam9nWm5WdVkzUnBiMjRnS0c1bGMzUmxaRU5vYVd4a2NtVnVMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1ZmIzZHVaWEk3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1VtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSXVhVzV6ZEdGdWRHbGhkR1ZEYUdsc1pISmxiaWh1WlhOMFpXUkRhR2xzWkhKbGJpd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCU1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNXBibk4wWVc1MGFXRjBaVU5vYVd4a2NtVnVLRzVsYzNSbFpFTm9hV3hrY21WdUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJRjl5WldOdmJtTnBiR1Z5VlhCa1lYUmxRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2h3Y21WMlEyaHBiR1J5Wlc0c0lHNWxlSFJPWlhOMFpXUkRhR2xzWkhKbGJrVnNaVzFsYm5SekxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQ0FnZG1GeUlHNWxlSFJEYUdsc1pISmxianRjYmlBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1WNGRFTm9hV3hrY21WdUlEMGdabXhoZEhSbGJrTm9hV3hrY21WdUtHNWxlSFJPWlhOMFpXUkRhR2xzWkhKbGJrVnNaVzFsYm5SektUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJTWldGamRFTm9hV3hrVW1WamIyNWphV3hsY2k1MWNHUmhkR1ZEYUdsc1pISmxiaWh3Y21WMlEyaHBiR1J5Wlc0c0lHNWxlSFJEYUdsc1pISmxiaXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnVaWGgwUTJocGJHUnlaVzRnUFNCbWJHRjBkR1Z1UTJocGJHUnlaVzRvYm1WNGRFNWxjM1JsWkVOb2FXeGtjbVZ1Uld4bGJXVnVkSE1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5TG5Wd1pHRjBaVU5vYVd4a2NtVnVLSEJ5WlhaRGFHbHNaSEpsYml3Z2JtVjRkRU5vYVd4a2NtVnVMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFZGxibVZ5WVhSbGN5QmhJRndpYlc5MWJuUWdhVzFoWjJWY0lpQm1iM0lnWldGamFDQnZaaUIwYUdVZ2MzVndjR3hwWldRZ1kyaHBiR1J5Wlc0dUlFbHVJSFJvWlNCallYTmxYRzRnSUNBZ0lDb2diMllnWUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWUN3Z1lTQnRiM1Z1ZENCcGJXRm5aU0JwY3lCaElITjBjbWx1WnlCdlppQnRZWEpyZFhBdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUc1bGMzUmxaRU5vYVd4a2NtVnVJRTVsYzNSbFpDQmphR2xzWkNCdFlYQnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlMkZ5Y21GNWZTQkJiaUJoY25KaGVTQnZaaUJ0YjNWdWRHVmtJSEpsY0hKbGMyVnVkR0YwYVc5dWN5NWNiaUFnSUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNBZ0tpOWNiaUFnSUNCdGIzVnVkRU5vYVd4a2NtVnVPaUJtZFc1amRHbHZiaUFvYm1WemRHVmtRMmhwYkdSeVpXNHNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCMllYSWdZMmhwYkdSeVpXNGdQU0IwYUdsekxsOXlaV052Ym1OcGJHVnlTVzV6ZEdGdWRHbGhkR1ZEYUdsc1pISmxiaWh1WlhOMFpXUkRhR2xzWkhKbGJpd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnZEdocGN5NWZjbVZ1WkdWeVpXUkRhR2xzWkhKbGJpQTlJR05vYVd4a2NtVnVPMXh1SUNBZ0lDQWdkbUZ5SUcxdmRXNTBTVzFoWjJWeklEMGdXMTA3WEc0Z0lDQWdJQ0IyWVhJZ2FXNWtaWGdnUFNBd08xeHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2JtRnRaU0JwYmlCamFHbHNaSEpsYmlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWTJocGJHUnlaVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ1kyaHBiR1FnUFNCamFHbHNaSEpsYmx0dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QkpibXhwYm1Wa0lHWnZjaUJ3WlhKbWIzSnRZVzVqWlN3Z2MyVmxJR0JTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3k1amNtVmhkR1ZTWldGamRFbEVZQzVjYmlBZ0lDQWdJQ0FnSUNCMllYSWdjbTl2ZEVsRUlEMGdkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDQXJJRzVoYldVN1hHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUcxdmRXNTBTVzFoWjJVZ1BTQlNaV0ZqZEZKbFkyOXVZMmxzWlhJdWJXOTFiblJEYjIxd2IyNWxiblFvWTJocGJHUXNJSEp2YjNSSlJDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNBZ0lHTm9hV3hrTGw5dGIzVnVkRWx1WkdWNElEMGdhVzVrWlhnckt6dGNiaUFnSUNBZ0lDQWdJQ0J0YjNWdWRFbHRZV2RsY3k1d2RYTm9LRzF2ZFc1MFNXMWhaMlVwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnYlc5MWJuUkpiV0ZuWlhNN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGSmxjR3hoWTJWeklHRnVlU0J5Wlc1a1pYSmxaQ0JqYUdsc1pISmxiaUIzYVhSb0lHRWdkR1Y0ZENCamIyNTBaVzUwSUhOMGNtbHVaeTVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnVaWGgwUTI5dWRHVnVkQ0JUZEhKcGJtY2diMllnWTI5dWRHVnVkQzVjYmlBZ0lDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDQWdLaTljYmlBZ0lDQjFjR1JoZEdWVVpYaDBRMjl1ZEdWdWREb2dablZ1WTNScGIyNGdLRzVsZUhSRGIyNTBaVzUwS1NCN1hHNGdJQ0FnSUNCMWNHUmhkR1ZFWlhCMGFDc3JPMXh1SUNBZ0lDQWdkbUZ5SUdWeWNtOXlWR2h5YjNkdUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCd2NtVjJRMmhwYkdSeVpXNGdQU0IwYUdsekxsOXlaVzVrWlhKbFpFTm9hV3hrY21WdU8xeHVJQ0FnSUNBZ0lDQXZMeUJTWlcxdmRtVWdZVzU1SUhKbGJtUmxjbVZrSUdOb2FXeGtjbVZ1TGx4dUlDQWdJQ0FnSUNCU1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNTFibTF2ZFc1MFEyaHBiR1J5Wlc0b2NISmxka05vYVd4a2NtVnVLVHRjYmlBZ0lDQWdJQ0FnTHk4Z1ZFOUVUem9nVkdobElITmxkRlJsZUhSRGIyNTBaVzUwSUc5d1pYSmhkR2x2YmlCemFHOTFiR1FnWW1VZ1pXNXZkV2RvWEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUc1aGJXVWdhVzRnY0hKbGRrTm9hV3hrY21WdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tIQnlaWFpEYUdsc1pISmxiaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkVzV0YjNWdWRFTm9hV3hrS0hCeVpYWkRhR2xzWkhKbGJsdHVZVzFsWFNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUM4dklGTmxkQ0J1WlhjZ2RHVjRkQ0JqYjI1MFpXNTBMbHh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRlJsZUhSRGIyNTBaVzUwS0c1bGVIUkRiMjUwWlc1MEtUdGNiaUFnSUNBZ0lDQWdaWEp5YjNKVWFISnZkMjRnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0FnSUhWd1pHRjBaVVJsY0hSb0xTMDdYRzRnSUNBZ0lDQWdJR2xtSUNnaGRYQmtZWFJsUkdWd2RHZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9aWEp5YjNKVWFISnZkMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05zWldGeVVYVmxkV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjMUYxWlhWbEtDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGSmxjR3hoWTJWeklHRnVlU0J5Wlc1a1pYSmxaQ0JqYUdsc1pISmxiaUIzYVhSb0lHRWdiV0Z5YTNWd0lITjBjbWx1Wnk1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J1WlhoMFRXRnlhM1Z3SUZOMGNtbHVaeUJ2WmlCdFlYSnJkWEF1WEc0Z0lDQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQWdJQ292WEc0Z0lDQWdkWEJrWVhSbFRXRnlhM1Z3T2lCbWRXNWpkR2x2YmlBb2JtVjRkRTFoY210MWNDa2dlMXh1SUNBZ0lDQWdkWEJrWVhSbFJHVndkR2dyS3p0Y2JpQWdJQ0FnSUhaaGNpQmxjbkp2Y2xSb2NtOTNiaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCMllYSWdjSEpsZGtOb2FXeGtjbVZ1SUQwZ2RHaHBjeTVmY21WdVpHVnlaV1JEYUdsc1pISmxianRjYmlBZ0lDQWdJQ0FnTHk4Z1VtVnRiM1psSUdGdWVTQnlaVzVrWlhKbFpDQmphR2xzWkhKbGJpNWNiaUFnSUNBZ0lDQWdVbVZoWTNSRGFHbHNaRkpsWTI5dVkybHNaWEl1ZFc1dGIzVnVkRU5vYVd4a2NtVnVLSEJ5WlhaRGFHbHNaSEpsYmlrN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHNWhiV1VnYVc0Z2NISmxka05vYVd4a2NtVnVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5WlhaRGFHbHNaSEpsYmk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZFc1dGIzVnVkRU5vYVd4a1FubE9ZVzFsS0hCeVpYWkRhR2xzWkhKbGJsdHVZVzFsWFN3Z2JtRnRaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBUV0Z5YTNWd0tHNWxlSFJOWVhKcmRYQXBPMXh1SUNBZ0lDQWdJQ0JsY25KdmNsUm9jbTkzYmlBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlNCbWFXNWhiR3g1SUh0Y2JpQWdJQ0FnSUNBZ2RYQmtZWFJsUkdWd2RHZ3RMVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjFjR1JoZEdWRVpYQjBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hsY25KdmNsUm9jbTkzYmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJ4bFlYSlJkV1YxWlNncE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtOWpaWE56VVhWbGRXVW9LVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dWWEJrWVhSbGN5QjBhR1VnY21WdVpHVnlaV1FnWTJocGJHUnlaVzRnZDJsMGFDQnVaWGNnWTJocGJHUnlaVzR1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJRzVsZUhST1pYTjBaV1JEYUdsc1pISmxia1ZzWlcxbGJuUnpJRTVsYzNSbFpDQmphR2xzWkNCbGJHVnRaVzUwSUcxaGNITXVYRzRnSUNBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0lDQXFMMXh1SUNBZ0lIVndaR0YwWlVOb2FXeGtjbVZ1T2lCbWRXNWpkR2x2YmlBb2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0IxY0dSaGRHVkVaWEIwYUNzck8xeHVJQ0FnSUNBZ2RtRnlJR1Z5Y205eVZHaHliM2R1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDNWd1pHRjBaVU5vYVd4a2NtVnVLRzVsZUhST1pYTjBaV1JEYUdsc1pISmxia1ZzWlcxbGJuUnpMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lHVnljbTl5VkdoeWIzZHVJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lDQWdJQ0IxY0dSaGRHVkVaWEIwYUMwdE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVhWd1pHRjBaVVJsY0hSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHVnljbTl5VkdoeWIzZHVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiR1ZoY2xGMVpYVmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTlJkV1YxWlNncE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCSmJYQnliM1psSUhCbGNtWnZjbTFoYm1ObElHSjVJR2x6YjJ4aGRHbHVaeUIwYUdseklHaHZkQ0JqYjJSbElIQmhkR2dnWm5KdmJTQjBhR1VnZEhKNUwyTmhkR05vWEc0Z0lDQWdJQ29nWW14dlkyc2dhVzRnWUhWd1pHRjBaVU5vYVd4a2NtVnVZQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVY0ZEU1bGMzUmxaRU5vYVd4a2NtVnVSV3hsYldWdWRITWdUbVZ6ZEdWa0lHTm9hV3hrSUdWc1pXMWxiblFnYldGd2N5NWNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnSUNBcUwxeHVJQ0FnSUY5MWNHUmhkR1ZEYUdsc1pISmxiam9nWm5WdVkzUnBiMjRnS0c1bGVIUk9aWE4wWldSRGFHbHNaSEpsYmtWc1pXMWxiblJ6TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhCeVpYWkRhR2xzWkhKbGJpQTlJSFJvYVhNdVgzSmxibVJsY21Wa1EyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNCMllYSWdibVY0ZEVOb2FXeGtjbVZ1SUQwZ2RHaHBjeTVmY21WamIyNWphV3hsY2xWd1pHRjBaVU5vYVd4a2NtVnVLSEJ5WlhaRGFHbHNaSEpsYml3Z2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJSFJvYVhNdVgzSmxibVJsY21Wa1EyaHBiR1J5Wlc0Z1BTQnVaWGgwUTJocGJHUnlaVzQ3WEc0Z0lDQWdJQ0JwWmlBb0lXNWxlSFJEYUdsc1pISmxiaUFtSmlBaGNISmxka05vYVd4a2NtVnVLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFpoY2lCdVlXMWxPMXh1SUNBZ0lDQWdMeThnWUc1bGVIUkpibVJsZUdBZ2QybHNiQ0JwYm1OeVpXMWxiblFnWm05eUlHVmhZMmdnWTJocGJHUWdhVzRnWUc1bGVIUkRhR2xzWkhKbGJtQXNJR0oxZEZ4dUlDQWdJQ0FnTHk4Z1lHeGhjM1JKYm1SbGVHQWdkMmxzYkNCaVpTQjBhR1VnYkdGemRDQnBibVJsZUNCMmFYTnBkR1ZrSUdsdUlHQndjbVYyUTJocGJHUnlaVzVnTGx4dUlDQWdJQ0FnZG1GeUlHeGhjM1JKYm1SbGVDQTlJREE3WEc0Z0lDQWdJQ0IyWVhJZ2JtVjRkRWx1WkdWNElEMGdNRHRjYmlBZ0lDQWdJR1p2Y2lBb2JtRnRaU0JwYmlCdVpYaDBRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnVaWGgwUTJocGJHUnlaVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCMllYSWdjSEpsZGtOb2FXeGtJRDBnY0hKbGRrTm9hV3hrY21WdUlDWW1JSEJ5WlhaRGFHbHNaSEpsYmx0dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNWxlSFJEYUdsc1pDQTlJRzVsZUhSRGFHbHNaSEpsYmx0dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnlaWFpEYUdsc1pDQTlQVDBnYm1WNGRFTm9hV3hrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1dGIzWmxRMmhwYkdRb2NISmxka05vYVd4a0xDQnVaWGgwU1c1a1pYZ3NJR3hoYzNSSmJtUmxlQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2JHRnpkRWx1WkdWNElEMGdUV0YwYUM1dFlYZ29jSEpsZGtOb2FXeGtMbDl0YjNWdWRFbHVaR1Y0TENCc1lYTjBTVzVrWlhncE8xeHVJQ0FnSUNBZ0lDQWdJSEJ5WlhaRGFHbHNaQzVmYlc5MWJuUkpibVJsZUNBOUlHNWxlSFJKYm1SbGVEdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISmxka05vYVd4a0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QlZjR1JoZEdVZ1lHeGhjM1JKYm1SbGVHQWdZbVZtYjNKbElHQmZiVzkxYm5SSmJtUmxlR0FnWjJWMGN5QjFibk5sZENCaWVTQjFibTF2ZFc1MGFXNW5MbHh1SUNBZ0lDQWdJQ0FnSUNBZ2JHRnpkRWx1WkdWNElEMGdUV0YwYUM1dFlYZ29jSEpsZGtOb2FXeGtMbDl0YjNWdWRFbHVaR1Y0TENCc1lYTjBTVzVrWlhncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkVzV0YjNWdWRFTm9hV3hrS0hCeVpYWkRhR2xzWkNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUM4dklGUm9aU0JqYUdsc1pDQnRkWE4wSUdKbElHbHVjM1JoYm5ScFlYUmxaQ0JpWldadmNtVWdhWFFuY3lCdGIzVnVkR1ZrTGx4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WDIxdmRXNTBRMmhwYkdSQ2VVNWhiV1ZCZEVsdVpHVjRLRzVsZUhSRGFHbHNaQ3dnYm1GdFpTd2dibVY0ZEVsdVpHVjRMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdibVY0ZEVsdVpHVjRLeXM3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2THlCU1pXMXZkbVVnWTJocGJHUnlaVzRnZEdoaGRDQmhjbVVnYm04Z2JHOXVaMlZ5SUhCeVpYTmxiblF1WEc0Z0lDQWdJQ0JtYjNJZ0tHNWhiV1VnYVc0Z2NISmxka05vYVd4a2NtVnVLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbVYyUTJocGJHUnlaVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ0ppWWdJU2h1WlhoMFEyaHBiR1J5Wlc0Z0ppWWdibVY0ZEVOb2FXeGtjbVZ1TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM1Z1Ylc5MWJuUkRhR2xzWkNod2NtVjJRMmhwYkdSeVpXNWJibUZ0WlYwcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlZ1Ylc5MWJuUnpJR0ZzYkNCeVpXNWtaWEpsWkNCamFHbHNaSEpsYmk0Z1ZHaHBjeUJ6YUc5MWJHUWdZbVVnZFhObFpDQjBieUJqYkdWaGJpQjFjQ0JqYUdsc1pISmxibHh1SUNBZ0lDQXFJSGRvWlc0Z2RHaHBjeUJqYjIxd2IyNWxiblFnYVhNZ2RXNXRiM1Z1ZEdWa0xseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FnSUNvdlhHNGdJQ0FnZFc1dGIzVnVkRU5vYVd4a2NtVnVPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNCMllYSWdjbVZ1WkdWeVpXUkRhR2xzWkhKbGJpQTlJSFJvYVhNdVgzSmxibVJsY21Wa1EyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNCU1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNTFibTF2ZFc1MFEyaHBiR1J5Wlc0b2NtVnVaR1Z5WldSRGFHbHNaSEpsYmlrN1hHNGdJQ0FnSUNCMGFHbHpMbDl5Wlc1a1pYSmxaRU5vYVd4a2NtVnVJRDBnYm5Wc2JEdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dUVzkyWlhNZ1lTQmphR2xzWkNCamIyMXdiMjVsYm5RZ2RHOGdkR2hsSUhOMWNIQnNhV1ZrSUdsdVpHVjRMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyaHBiR1FnUTI5dGNHOXVaVzUwSUhSdklHMXZkbVV1WEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSFJ2U1c1a1pYZ2dSR1Z6ZEdsdVlYUnBiMjRnYVc1a1pYZ2diMllnZEdobElHVnNaVzFsYm5RdVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4aGMzUkpibVJsZUNCTVlYTjBJR2x1WkdWNElIWnBjMmwwWldRZ2IyWWdkR2hsSUhOcFlteHBibWR6SUc5bUlHQmphR2xzWkdBdVhHNGdJQ0FnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnSUNBcUwxeHVJQ0FnSUcxdmRtVkRhR2xzWkRvZ1puVnVZM1JwYjI0Z0tHTm9hV3hrTENCMGIwbHVaR1Y0TENCc1lYTjBTVzVrWlhncElIdGNiaUFnSUNBZ0lDOHZJRWxtSUhSb1pTQnBibVJsZUNCdlppQmdZMmhwYkdSZ0lHbHpJR3hsYzNNZ2RHaGhiaUJnYkdGemRFbHVaR1Y0WUN3Z2RHaGxiaUJwZENCdVpXVmtjeUIwYjF4dUlDQWdJQ0FnTHk4Z1ltVWdiVzkyWldRdUlFOTBhR1Z5ZDJselpTd2dkMlVnWkc4Z2JtOTBJRzVsWldRZ2RHOGdiVzkyWlNCcGRDQmlaV05oZFhObElHRWdZMmhwYkdRZ2QybHNiQ0JpWlZ4dUlDQWdJQ0FnTHk4Z2FXNXpaWEowWldRZ2IzSWdiVzkyWldRZ1ltVm1iM0psSUdCamFHbHNaR0F1WEc0Z0lDQWdJQ0JwWmlBb1kyaHBiR1F1WDIxdmRXNTBTVzVrWlhnZ1BDQnNZWE4wU1c1a1pYZ3BJSHRjYmlBZ0lDQWdJQ0FnWlc1eGRXVjFaVTF2ZG1Vb2RHaHBjeTVmY205dmRFNXZaR1ZKUkN3Z1kyaHBiR1F1WDIxdmRXNTBTVzVrWlhnc0lIUnZTVzVrWlhncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkRjbVZoZEdWeklHRWdZMmhwYkdRZ1kyOXRjRzl1Wlc1MExseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTJocGJHUWdRMjl0Y0c5dVpXNTBJSFJ2SUdOeVpXRjBaUzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiVzkxYm5SSmJXRm5aU0JOWVhKcmRYQWdkRzhnYVc1elpYSjBMbHh1SUNBZ0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDQWdLaTljYmlBZ0lDQmpjbVZoZEdWRGFHbHNaRG9nWm5WdVkzUnBiMjRnS0dOb2FXeGtMQ0J0YjNWdWRFbHRZV2RsS1NCN1hHNGdJQ0FnSUNCbGJuRjFaWFZsU1c1elpYSjBUV0Z5YTNWd0tIUm9hWE11WDNKdmIzUk9iMlJsU1VRc0lHMXZkVzUwU1cxaFoyVXNJR05vYVd4a0xsOXRiM1Z1ZEVsdVpHVjRLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVW1WdGIzWmxjeUJoSUdOb2FXeGtJR052YlhCdmJtVnVkQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGIyMXdiMjVsYm5SOUlHTm9hV3hrSUVOb2FXeGtJSFJ2SUhKbGJXOTJaUzVjYmlBZ0lDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQWdJQ292WEc0Z0lDQWdjbVZ0YjNabFEyaHBiR1E2SUdaMWJtTjBhVzl1SUNoamFHbHNaQ2tnZTF4dUlDQWdJQ0FnWlc1eGRXVjFaVkpsYlc5MlpTaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUxDQmphR2xzWkM1ZmJXOTFiblJKYm1SbGVDazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRk5sZEhNZ2RHaHBjeUIwWlhoMElHTnZiblJsYm5RZ2MzUnlhVzVuTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSFJsZUhSRGIyNTBaVzUwSUZSbGVIUWdZMjl1ZEdWdWRDQjBieUJ6WlhRdVhHNGdJQ0FnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnSUNBcUwxeHVJQ0FnSUhObGRGUmxlSFJEYjI1MFpXNTBPaUJtZFc1amRHbHZiaUFvZEdWNGRFTnZiblJsYm5RcElIdGNiaUFnSUNBZ0lHVnVjWFZsZFdWVVpYaDBRMjl1ZEdWdWRDaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUxDQjBaWGgwUTI5dWRHVnVkQ2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZObGRITWdkR2hwY3lCdFlYSnJkWEFnYzNSeWFXNW5MbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMWhjbXQxY0NCTllYSnJkWEFnZEc4Z2MyVjBMbHh1SUNBZ0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDQWdLaTljYmlBZ0lDQnpaWFJOWVhKcmRYQTZJR1oxYm1OMGFXOXVJQ2h0WVhKcmRYQXBJSHRjYmlBZ0lDQWdJR1Z1Y1hWbGRXVlRaWFJOWVhKcmRYQW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDd2diV0Z5YTNWd0tUdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dUVzkxYm5SeklHRWdZMmhwYkdRZ2QybDBhQ0IwYUdVZ2MzVndjR3hwWldRZ2JtRnRaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRTVQVkVVNklGUm9hWE1nYVhNZ2NHRnlkQ0J2WmlCZ2RYQmtZWFJsUTJocGJHUnlaVzVnSUdGdVpDQnBjeUJvWlhKbElHWnZjaUJ5WldGa1lXSnBiR2wwZVM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJR05vYVd4a0lFTnZiWEJ2Ym1WdWRDQjBieUJ0YjNWdWRDNWNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaU0JPWVcxbElHOW1JSFJvWlNCamFHbHNaQzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdhVzVrWlhnZ1NXNWtaWGdnWVhRZ2QyaHBZMmdnZEc4Z2FXNXpaWEowSUhSb1pTQmphR2xzWkM1Y2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ0FnS2k5Y2JpQWdJQ0JmYlc5MWJuUkRhR2xzWkVKNVRtRnRaVUYwU1c1a1pYZzZJR1oxYm1OMGFXOXVJQ2hqYUdsc1pDd2dibUZ0WlN3Z2FXNWtaWGdzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQXZMeUJKYm14cGJtVmtJR1p2Y2lCd1pYSm1iM0p0WVc1alpTd2djMlZsSUdCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NWpjbVZoZEdWU1pXRmpkRWxFWUM1Y2JpQWdJQ0FnSUhaaGNpQnliMjkwU1VRZ1BTQjBhR2x6TGw5eWIyOTBUbTlrWlVsRUlDc2dibUZ0WlR0Y2JpQWdJQ0FnSUhaaGNpQnRiM1Z1ZEVsdFlXZGxJRDBnVW1WaFkzUlNaV052Ym1OcGJHVnlMbTF2ZFc1MFEyOXRjRzl1Wlc1MEtHTm9hV3hrTENCeWIyOTBTVVFzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lHTm9hV3hrTGw5dGIzVnVkRWx1WkdWNElEMGdhVzVrWlhnN1hHNGdJQ0FnSUNCMGFHbHpMbU55WldGMFpVTm9hV3hrS0dOb2FXeGtMQ0J0YjNWdWRFbHRZV2RsS1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1ZXNXRiM1Z1ZEhNZ1lTQnlaVzVrWlhKbFpDQmphR2xzWkM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUU1UFZFVTZJRlJvYVhNZ2FYTWdjR0Z5ZENCdlppQmdkWEJrWVhSbFEyaHBiR1J5Wlc1Z0lHRnVaQ0JwY3lCb1pYSmxJR1p2Y2lCeVpXRmtZV0pwYkdsMGVTNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUdOb2FXeGtJRU52YlhCdmJtVnVkQ0IwYnlCMWJtMXZkVzUwTGx4dUlDQWdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQWdJQ292WEc0Z0lDQWdYM1Z1Ylc5MWJuUkRhR2xzWkRvZ1puVnVZM1JwYjI0Z0tHTm9hV3hrS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkpsYlc5MlpVTm9hV3hrS0dOb2FXeGtLVHRjYmlBZ0lDQWdJR05vYVd4a0xsOXRiM1Z1ZEVsdVpHVjRJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBUWFZzZEdsRGFHbHNaRHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3ROYXRpdmVDb21wb25lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGF1dG9HZW5lcmF0ZVdyYXBwZXJDbGFzcyA9IG51bGw7XG52YXIgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gbnVsbDtcbi8vIFRoaXMgcmVnaXN0cnkga2VlcHMgdHJhY2sgb2Ygd3JhcHBlciBjbGFzc2VzIGFyb3VuZCBuYXRpdmUgdGFncy5cbnZhciB0YWdUb0NvbXBvbmVudENsYXNzID0ge307XG52YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVsbDtcblxudmFyIFJlYWN0TmF0aXZlQ29tcG9uZW50SW5qZWN0aW9uID0ge1xuICAvLyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3RyaW5nLiBUaGlzIGlzIGEgY2F0Y2ggYWxsXG4gIC8vIHRoYXQgY2FuIHJlbmRlciBhbnkga2luZCBvZiB0YWcuXG4gIGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7XG4gICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XG4gIH0sXG4gIC8vIFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50IGNsYXNzIHRoYXQgdGFrZXMgdGhlIHRleHQgc3RyaW5nIHRvIGJlXG4gIC8vIHJlbmRlcmVkIGFzIHByb3BzLlxuICBpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuICAgIHRleHRDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9LFxuICAvLyBUaGlzIGFjY2VwdHMgYSBrZXllZCBvYmplY3Qgd2l0aCBjbGFzc2VzIGFzIHZhbHVlcy4gRWFjaCBrZXkgcmVwcmVzZW50cyBhXG4gIC8vIHRhZy4gVGhhdCBwYXJ0aWN1bGFyIHRhZyB3aWxsIHVzZSB0aGlzIGNsYXNzIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgb25lLlxuICBpbmplY3RDb21wb25lbnRDbGFzc2VzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3Nlcykge1xuICAgIGFzc2lnbih0YWdUb0NvbXBvbmVudENsYXNzLCBjb21wb25lbnRDbGFzc2VzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgYSBjb21wb3NpdGUgY29tcG9uZW50IHdyYXBwZXIgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IFRoZSB0YWcgZm9yIHdoaWNoIHRvIGdldCB0aGUgY2xhc3MuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIFJlYWN0IGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRDbGFzc0ZvckVsZW1lbnQoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbGVtZW50LnR5cGU7XG4gIH1cbiAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTtcbiAgdmFyIGNvbXBvbmVudENsYXNzID0gdGFnVG9Db21wb25lbnRDbGFzc1t0YWddO1xuICBpZiAoY29tcG9uZW50Q2xhc3MgPT0gbnVsbCkge1xuICAgIHRhZ1RvQ29tcG9uZW50Q2xhc3NbdGFnXSA9IGNvbXBvbmVudENsYXNzID0gYXV0b0dlbmVyYXRlV3JhcHBlckNsYXNzKHRhZyk7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudENsYXNzO1xufVxuXG4vKipcbiAqIEdldCBhIG5hdGl2ZSBpbnRlcm5hbCBjb21wb25lbnQgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNyZWF0ZS5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgaW50ZXJuYWwgY2xhc3MgY29uc3RydWN0b3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpIHtcbiAgIWdlbmVyaWNDb21wb25lbnRDbGFzcyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyByZWdpc3RlcmVkIGNvbXBvbmVudCBmb3IgdGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVtZW50LnR5cGUsIGVsZW1lbnQucHJvcHMpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RUZXh0fSB0ZXh0XG4gKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VGb3JUZXh0KHRleHQpIHtcbiAgcmV0dXJuIG5ldyB0ZXh0Q29tcG9uZW50Q2xhc3ModGV4dCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1RleHRDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIHJldHVybiBjb21wb25lbnQgaW5zdGFuY2VvZiB0ZXh0Q29tcG9uZW50Q2xhc3M7XG59XG5cbnZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudCA9IHtcbiAgZ2V0Q29tcG9uZW50Q2xhc3NGb3JFbGVtZW50OiBnZXRDb21wb25lbnRDbGFzc0ZvckVsZW1lbnQsXG4gIGNyZWF0ZUludGVybmFsQ29tcG9uZW50OiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudCxcbiAgY3JlYXRlSW5zdGFuY2VGb3JUZXh0OiBjcmVhdGVJbnN0YW5jZUZvclRleHQsXG4gIGlzVGV4dENvbXBvbmVudDogaXNUZXh0Q29tcG9uZW50LFxuICBpbmplY3Rpb246IFJlYWN0TmF0aXZlQ29tcG9uZW50SW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TmF0aXZlQ29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREUwTFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUk9ZWFJwZG1WRGIyMXdiMjVsYm5SY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQmhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDY3VMMDlpYW1WamRDNWhjM05wWjI0bktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dWRtRnlJR0YxZEc5SFpXNWxjbUYwWlZkeVlYQndaWEpEYkdGemN5QTlJRzUxYkd3N1hHNTJZWElnWjJWdVpYSnBZME52YlhCdmJtVnVkRU5zWVhOeklEMGdiblZzYkR0Y2JpOHZJRlJvYVhNZ2NtVm5hWE4wY25rZ2EyVmxjSE1nZEhKaFkyc2diMllnZDNKaGNIQmxjaUJqYkdGemMyVnpJR0Z5YjNWdVpDQnVZWFJwZG1VZ2RHRm5jeTVjYm5aaGNpQjBZV2RVYjBOdmJYQnZibVZ1ZEVOc1lYTnpJRDBnZTMwN1hHNTJZWElnZEdWNGRFTnZiWEJ2Ym1WdWRFTnNZWE56SUQwZ2JuVnNiRHRjYmx4dWRtRnlJRkpsWVdOMFRtRjBhWFpsUTI5dGNHOXVaVzUwU1c1cVpXTjBhVzl1SUQwZ2UxeHVJQ0F2THlCVWFHbHpJR0ZqWTJWd2RITWdZU0JqYkdGemN5QjBhR0YwSUhKbFkyVnBkbVZ6SUhSb1pTQjBZV2NnYzNSeWFXNW5MaUJVYUdseklHbHpJR0VnWTJGMFkyZ2dZV3hzWEc0Z0lDOHZJSFJvWVhRZ1kyRnVJSEpsYm1SbGNpQmhibmtnYTJsdVpDQnZaaUIwWVdjdVhHNGdJR2x1YW1WamRFZGxibVZ5YVdORGIyMXdiMjVsYm5SRGJHRnpjem9nWm5WdVkzUnBiMjRnS0dOdmJYQnZibVZ1ZEVOc1lYTnpLU0I3WEc0Z0lDQWdaMlZ1WlhKcFkwTnZiWEJ2Ym1WdWRFTnNZWE56SUQwZ1kyOXRjRzl1Wlc1MFEyeGhjM003WEc0Z0lIMHNYRzRnSUM4dklGUm9hWE1nWVdOalpYQjBjeUJoSUhSbGVIUWdZMjl0Y0c5dVpXNTBJR05zWVhOeklIUm9ZWFFnZEdGclpYTWdkR2hsSUhSbGVIUWdjM1J5YVc1bklIUnZJR0psWEc0Z0lDOHZJSEpsYm1SbGNtVmtJR0Z6SUhCeWIzQnpMbHh1SUNCcGJtcGxZM1JVWlhoMFEyOXRjRzl1Wlc1MFEyeGhjM002SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5SRGJHRnpjeWtnZTF4dUlDQWdJSFJsZUhSRGIyMXdiMjVsYm5SRGJHRnpjeUE5SUdOdmJYQnZibVZ1ZEVOc1lYTnpPMXh1SUNCOUxGeHVJQ0F2THlCVWFHbHpJR0ZqWTJWd2RITWdZU0JyWlhsbFpDQnZZbXBsWTNRZ2QybDBhQ0JqYkdGemMyVnpJR0Z6SUhaaGJIVmxjeTRnUldGamFDQnJaWGtnY21Wd2NtVnpaVzUwY3lCaFhHNGdJQzh2SUhSaFp5NGdWR2hoZENCd1lYSjBhV04xYkdGeUlIUmhaeUIzYVd4c0lIVnpaU0IwYUdseklHTnNZWE56SUdsdWMzUmxZV1FnYjJZZ2RHaGxJR2RsYm1WeWFXTWdiMjVsTGx4dUlDQnBibXBsWTNSRGIyMXdiMjVsYm5SRGJHRnpjMlZ6T2lCbWRXNWpkR2x2YmlBb1kyOXRjRzl1Wlc1MFEyeGhjM05sY3lrZ2UxeHVJQ0FnSUdGemMybG5iaWgwWVdkVWIwTnZiWEJ2Ym1WdWRFTnNZWE56TENCamIyMXdiMjVsYm5SRGJHRnpjMlZ6S1R0Y2JpQWdmVnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkhaWFFnWVNCamIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MElIZHlZWEJ3WlhJZ1kyeGhjM01nWm05eUlHRWdjM0JsWTJsbWFXTWdkR0ZuTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VW1WaFkzUkZiR1Z0Wlc1MGZTQmxiR1Z0Wlc1MElGUm9aU0IwWVdjZ1ptOXlJSGRvYVdOb0lIUnZJR2RsZENCMGFHVWdZMnhoYzNNdVhHNGdLaUJBY21WMGRYSnVJSHRtZFc1amRHbHZibjBnVkdobElGSmxZV04wSUdOc1lYTnpJR052Ym5OMGNuVmpkRzl5SUdaMWJtTjBhVzl1TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSRGIyMXdiMjVsYm5SRGJHRnpjMFp2Y2tWc1pXMWxiblFvWld4bGJXVnVkQ2tnZTF4dUlDQnBaaUFvZEhsd1pXOW1JR1ZzWlcxbGJuUXVkSGx3WlNBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxiR1Z0Wlc1MExuUjVjR1U3WEc0Z0lIMWNiaUFnZG1GeUlIUmhaeUE5SUdWc1pXMWxiblF1ZEhsd1pUdGNiaUFnZG1GeUlHTnZiWEJ2Ym1WdWRFTnNZWE56SUQwZ2RHRm5WRzlEYjIxd2IyNWxiblJEYkdGemMxdDBZV2RkTzF4dUlDQnBaaUFvWTI5dGNHOXVaVzUwUTJ4aGMzTWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lIUmhaMVJ2UTI5dGNHOXVaVzUwUTJ4aGMzTmJkR0ZuWFNBOUlHTnZiWEJ2Ym1WdWRFTnNZWE56SUQwZ1lYVjBiMGRsYm1WeVlYUmxWM0poY0hCbGNrTnNZWE56S0hSaFp5azdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHTnZiWEJ2Ym1WdWRFTnNZWE56TzF4dWZWeHVYRzR2S2lwY2JpQXFJRWRsZENCaElHNWhkR2wyWlNCcGJuUmxjbTVoYkNCamIyMXdiMjVsYm5RZ1kyeGhjM01nWm05eUlHRWdjM0JsWTJsbWFXTWdkR0ZuTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VW1WaFkzUkZiR1Z0Wlc1MGZTQmxiR1Z0Wlc1MElGUm9aU0JsYkdWdFpXNTBJSFJ2SUdOeVpXRjBaUzVjYmlBcUlFQnlaWFIxY200Z2UyWjFibU4wYVc5dWZTQlVhR1VnYVc1MFpYSnVZV3dnWTJ4aGMzTWdZMjl1YzNSeWRXTjBiM0lnWm5WdVkzUnBiMjR1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR055WldGMFpVbHVkR1Z5Ym1Gc1EyOXRjRzl1Wlc1MEtHVnNaVzFsYm5RcElIdGNiaUFnSVdkbGJtVnlhV05EYjIxd2IyNWxiblJEYkdGemN5QS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkVWFHVnlaU0JwY3lCdWJ5QnlaV2RwYzNSbGNtVmtJR052YlhCdmJtVnVkQ0JtYjNJZ2RHaGxJSFJoWnlBbGN5Y3NJR1ZzWlcxbGJuUXVkSGx3WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCeVpYUjFjbTRnYm1WM0lHZGxibVZ5YVdORGIyMXdiMjVsYm5SRGJHRnpjeWhsYkdWdFpXNTBMblI1Y0dVc0lHVnNaVzFsYm5RdWNISnZjSE1wTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdVbVZoWTNSVVpYaDBmU0IwWlhoMFhHNGdLaUJBY21WMGRYSnVJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsU1c1emRHRnVZMlZHYjNKVVpYaDBLSFJsZUhRcElIdGNiaUFnY21WMGRYSnVJRzVsZHlCMFpYaDBRMjl0Y0c5dVpXNTBRMnhoYzNNb2RHVjRkQ2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyOXRjRzl1Wlc1MFhHNGdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmVnh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjMVJsZUhSRGIyMXdiMjVsYm5Rb1kyOXRjRzl1Wlc1MEtTQjdYRzRnSUhKbGRIVnliaUJqYjIxd2IyNWxiblFnYVc1emRHRnVZMlZ2WmlCMFpYaDBRMjl0Y0c5dVpXNTBRMnhoYzNNN1hHNTlYRzVjYm5aaGNpQlNaV0ZqZEU1aGRHbDJaVU52YlhCdmJtVnVkQ0E5SUh0Y2JpQWdaMlYwUTI5dGNHOXVaVzUwUTJ4aGMzTkdiM0pGYkdWdFpXNTBPaUJuWlhSRGIyMXdiMjVsYm5SRGJHRnpjMFp2Y2tWc1pXMWxiblFzWEc0Z0lHTnlaV0YwWlVsdWRHVnlibUZzUTI5dGNHOXVaVzUwT2lCamNtVmhkR1ZKYm5SbGNtNWhiRU52YlhCdmJtVnVkQ3hjYmlBZ1kzSmxZWFJsU1c1emRHRnVZMlZHYjNKVVpYaDBPaUJqY21WaGRHVkpibk4wWVc1alpVWnZjbFJsZUhRc1hHNGdJR2x6VkdWNGRFTnZiWEJ2Ym1WdWREb2dhWE5VWlhoMFEyOXRjRzl1Wlc1MExGeHVJQ0JwYm1wbFkzUnBiMjQ2SUZKbFlXTjBUbUYwYVhabFEyOXRjRzl1Wlc1MFNXNXFaV04wYVc5dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBUbUYwYVhabFEyOXRjRzl1Wlc1ME95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3ROb29wVXBkYXRlUXVldWVcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3IgJiYgcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJycpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXG4gKi9cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaykge30sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAgIHdhcm5URFoocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFByb3BzIFN1YnNldCBvZiB0aGUgbmV4dCBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0UHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFByb3BzKSB7XG4gICAgd2FyblREWihwdWJsaWNJbnN0YW5jZSwgJ3NldFByb3BzJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgTmV3IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlUHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcHJvcHMpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVByb3BzJyk7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBUbTl2Y0ZWd1pHRjBaVkYxWlhWbFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dVpuVnVZM1JwYjI0Z2QyRnlibFJFV2lod2RXSnNhV05KYm5OMFlXNWpaU3dnWTJGc2JHVnlUbUZ0WlNrZ2UxeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5KWE1vTGk0dUtUb2dRMkZ1SUc5dWJIa2dkWEJrWVhSbElHRWdiVzkxYm5SbFpDQnZjaUJ0YjNWdWRHbHVaeUJqYjIxd2IyNWxiblF1SUNjZ0t5QW5WR2hwY3lCMWMzVmhiR3g1SUcxbFlXNXpJSGx2ZFNCallXeHNaV1FnSlhNb0tTQnZiaUJoYmlCMWJtMXZkVzUwWldRZ1kyOXRjRzl1Wlc1MExpQW5JQ3NnSjFSb2FYTWdhWE1nWVNCdWJ5MXZjQzRnVUd4bFlYTmxJR05vWldOcklIUm9aU0JqYjJSbElHWnZjaUIwYUdVZ0pYTWdZMjl0Y0c5dVpXNTBMaWNzSUdOaGJHeGxjazVoYldVc0lHTmhiR3hsY2s1aGJXVXNJSEIxWW14cFkwbHVjM1JoYm1ObExtTnZibk4wY25WamRHOXlJQ1ltSUhCMVlteHBZMGx1YzNSaGJtTmxMbU52Ym5OMGNuVmpkRzl5TG1ScGMzQnNZWGxPWVcxbElIeDhJQ2NuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRlJvYVhNZ2FYTWdkR2hsSUdGaWMzUnlZV04wSUVGUVNTQm1iM0lnWVc0Z2RYQmtZWFJsSUhGMVpYVmxMbHh1SUNvdlhHNTJZWElnVW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVZ1BTQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTm9aV05yY3lCM2FHVjBhR1Z5SUc5eUlHNXZkQ0IwYUdseklHTnZiWEJ2YzJsMFpTQmpiMjF3YjI1bGJuUWdhWE1nYlc5MWJuUmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOc1lYTnpmU0J3ZFdKc2FXTkpibk4wWVc1alpTQlVhR1VnYVc1emRHRnVZMlVnZDJVZ2QyRnVkQ0IwYnlCMFpYTjBMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlHMXZkVzUwWldRc0lHWmhiSE5sSUc5MGFHVnlkMmx6WlM1Y2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvdlhHNGdJR2x6VFc5MWJuUmxaRG9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZibkYxWlhWbElHRWdZMkZzYkdKaFkyc2dkR2hoZENCM2FXeHNJR0psSUdWNFpXTjFkR1ZrSUdGbWRHVnlJR0ZzYkNCMGFHVWdjR1Z1WkdsdVp5QjFjR1JoZEdWelhHNGdJQ0FxSUdoaGRtVWdjSEp2WTJWemMyVmtMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjBieUIxYzJVZ1lYTWdZSFJvYVhOZ0lHTnZiblJsZUhRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCRFlXeHNaV1FnWVdaMFpYSWdjM1JoZEdVZ2FYTWdkWEJrWVhSbFpDNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFEyRnNiR0poWTJzNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z1kyRnNiR0poWTJzcElIdDlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdiM0pqWlhNZ1lXNGdkWEJrWVhSbExpQlVhR2x6SUhOb2IzVnNaQ0J2Ym14NUlHSmxJR2x1ZG05clpXUWdkMmhsYmlCcGRDQnBjeUJyYm05M2JpQjNhWFJvWEc0Z0lDQXFJR05sY25SaGFXNTBlU0IwYUdGMElIZGxJR0Z5WlNBcUttNXZkQ29xSUdsdUlHRWdSRTlOSUhSeVlXNXpZV04wYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJaYjNVZ2JXRjVJSGRoYm5RZ2RHOGdZMkZzYkNCMGFHbHpJSGRvWlc0Z2VXOTFJR3R1YjNjZ2RHaGhkQ0J6YjIxbElHUmxaWEJsY2lCaGMzQmxZM1FnYjJZZ2RHaGxYRzRnSUNBcUlHTnZiWEJ2Ym1WdWRDZHpJSE4wWVhSbElHaGhjeUJqYUdGdVoyVmtJR0oxZENCZ2MyVjBVM1JoZEdWZ0lIZGhjeUJ1YjNRZ1kyRnNiR1ZrTGx4dUlDQWdLbHh1SUNBZ0tpQlVhR2x6SUhkcGJHd2dibTkwSUdsdWRtOXJaU0JnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbFlDd2dZblYwSUdsMElIZHBiR3dnYVc1MmIydGxYRzRnSUNBcUlHQmpiMjF3YjI1bGJuUlhhV3hzVlhCa1lYUmxZQ0JoYm1RZ1lHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpXQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Z1Y1hWbGRXVkdiM0pqWlZWd1pHRjBaVG9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdkMkZ5YmxSRVdpaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0oyWnZjbU5sVlhCa1lYUmxKeWs3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjR3hoWTJWeklHRnNiQ0J2WmlCMGFHVWdjM1JoZEdVdUlFRnNkMkY1Y3lCMWMyVWdkR2hwY3lCdmNpQmdjMlYwVTNSaGRHVmdJSFJ2SUcxMWRHRjBaU0J6ZEdGMFpTNWNiaUFnSUNvZ1dXOTFJSE5vYjNWc1pDQjBjbVZoZENCZ2RHaHBjeTV6ZEdGMFpXQWdZWE1nYVcxdGRYUmhZbXhsTGx4dUlDQWdLbHh1SUNBZ0tpQlVhR1Z5WlNCcGN5QnVieUJuZFdGeVlXNTBaV1VnZEdoaGRDQmdkR2hwY3k1emRHRjBaV0FnZDJsc2JDQmlaU0JwYlcxbFpHbGhkR1ZzZVNCMWNHUmhkR1ZrTENCemIxeHVJQ0FnS2lCaFkyTmxjM05wYm1jZ1lIUm9hWE11YzNSaGRHVmdJR0ZtZEdWeUlHTmhiR3hwYm1jZ2RHaHBjeUJ0WlhSb2IyUWdiV0Y1SUhKbGRIVnliaUIwYUdVZ2IyeGtJSFpoYkhWbExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyeGhjM045SUhCMVlteHBZMGx1YzNSaGJtTmxJRlJvWlNCcGJuTjBZVzVqWlNCMGFHRjBJSE5vYjNWc1pDQnlaWEpsYm1SbGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJYQnNaWFJsVTNSaGRHVWdUbVY0ZENCemRHRjBaUzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxVbVZ3YkdGalpWTjBZWFJsT2lCbWRXNWpkR2x2YmlBb2NIVmliR2xqU1c1emRHRnVZMlVzSUdOdmJYQnNaWFJsVTNSaGRHVXBJSHRjYmlBZ0lDQjNZWEp1VkVSYUtIQjFZbXhwWTBsdWMzUmhibU5sTENBbmNtVndiR0ZqWlZOMFlYUmxKeWs3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkSE1nWVNCemRXSnpaWFFnYjJZZ2RHaGxJSE4wWVhSbExpQlVhR2x6SUc5dWJIa2daWGhwYzNSeklHSmxZMkYxYzJVZ1gzQmxibVJwYm1kVGRHRjBaU0JwYzF4dUlDQWdLaUJwYm5SbGNtNWhiQzRnVkdocGN5QndjbTkyYVdSbGN5QmhJRzFsY21kcGJtY2djM1J5WVhSbFoza2dkR2hoZENCcGN5QnViM1FnWVhaaGFXeGhZbXhsSUhSdklHUmxaWEJjYmlBZ0lDb2djSEp2Y0dWeWRHbGxjeUIzYUdsamFDQnBjeUJqYjI1bWRYTnBibWN1SUZSUFJFODZJRVY0Y0c5elpTQndaVzVrYVc1blUzUmhkR1VnYjNJZ1pHOXVKM1FnZFhObElHbDBYRzRnSUNBcUlHUjFjbWx1WnlCMGFHVWdiV1Z5WjJVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSb1lYUWdjMmh2ZFd4a0lISmxjbVZ1WkdWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0dGeWRHbGhiRk4wWVhSbElFNWxlSFFnY0dGeWRHbGhiQ0J6ZEdGMFpTQjBieUJpWlNCdFpYSm5aV1FnZDJsMGFDQnpkR0YwWlM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsVTJWMFUzUmhkR1U2SUdaMWJtTjBhVzl1SUNod2RXSnNhV05KYm5OMFlXNWpaU3dnY0dGeWRHbGhiRk4wWVhSbEtTQjdYRzRnSUNBZ2QyRnlibFJFV2lod2RXSnNhV05KYm5OMFlXNWpaU3dnSjNObGRGTjBZWFJsSnlrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRk5sZEhNZ1lTQnpkV0p6WlhRZ2IyWWdkR2hsSUhCeWIzQnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjBhR0YwSUhOb2IzVnNaQ0J5WlhKbGJtUmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlIQmhjblJwWVd4UWNtOXdjeUJUZFdKelpYUWdiMllnZEdobElHNWxlSFFnY0hKdmNITXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdaVzV4ZFdWMVpWTmxkRkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVc0lIQmhjblJwWVd4UWNtOXdjeWtnZTF4dUlDQWdJSGRoY201VVJGb29jSFZpYkdsalNXNXpkR0Z1WTJVc0lDZHpaWFJRY205d2N5Y3BPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYQnNZV05sY3lCaGJHd2diMllnZEdobElIQnliM0J6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJ5YjNCeklFNWxkeUJ3Y205d2N5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFVtVndiR0ZqWlZCeWIzQnpPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJSEJ5YjNCektTQjdYRzRnSUNBZ2QyRnlibFJFV2lod2RXSnNhV05KYm5OMFlXNWpaU3dnSjNKbGNHeGhZMlZRY205d2N5Y3BPMXh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE93bmVyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogUmVhY3RPd25lcnMgYXJlIGNhcGFibGUgb2Ygc3RvcmluZyByZWZlcmVuY2VzIHRvIG93bmVkIGNvbXBvbmVudHMuXG4gKlxuICogQWxsIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9iZWluZy8vIHJlZmVyZW5jZWQgYnkgb3duZXIgY29tcG9uZW50cywgYnV0XG4gKiBvbmx5IFJlYWN0T3duZXIgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL3JlZmVyZW5jaW5nLy8gb3duZWQgY29tcG9uZW50cy5cbiAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25vd24gYXMgYSBcInJlZlwiLlxuICpcbiAqIFJlZnMgYXJlIGF2YWlsYWJsZSB3aGVuIG1vdW50ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHJlY29uY2lsaWF0aW9uLlxuICpcbiAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gKiAgICAgICByZXR1cm4gKFxuICogICAgICAgICA8ZGl2IG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9PlxuICogICAgICAgICAgIDxDdXN0b21Db21wb25lbnQgcmVmPVwiY3VzdG9tXCIgLz5cbiAqICAgICAgICAgPC9kaXY+XG4gKiAgICAgICApO1xuICogICAgIH0sXG4gKiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkge1xuICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5oYW5kbGVDbGljaygpO1xuICogICAgIH0sXG4gKiAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0aWFsaXplKCk7XG4gKiAgICAgfVxuICogICB9KTtcbiAqXG4gKiBSZWZzIHNob3VsZCByYXJlbHkgYmUgdXNlZC4gV2hlbiByZWZzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUgdG9cbiAqIGNvbnRyb2wgZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93LlxuICpcbiAqIEBjbGFzcyBSZWFjdE93bmVyXG4gKi9cbnZhciBSZWFjdE93bmVyID0ge1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgb3duZXIuXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNWYWxpZE93bmVyOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgcmV0dXJuICEhKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LmF0dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqZWN0LmRldGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgYnkgcmVmIHRvIGFuIG93bmVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBieSB3aGljaCB0byByZWZlciB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGljaCB0byByZWNvcmQgdGhlIHJlZi5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYWRkQ29tcG9uZW50QXNSZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuICAgICFSZWFjdE93bmVyLmlzVmFsaWRPd25lcihvd25lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWRkQ29tcG9uZW50QXNSZWZUbyguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgJyArICdiZSBhZGRpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAnICsgJyhkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYgZnJvbSBhbiBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIVJlYWN0T3duZXIuaXNWYWxpZE93bmVyKG93bmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0ICcgKyAnYmUgcmVtb3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAnICsgJyhkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgLy8gQ2hlY2sgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVudCByZWYgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0b1xuICAgIC8vIGRldGFjaCB0aGUgcmVmIGlmIGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LlxuICAgIGlmIChvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpIHtcbiAgICAgIG93bmVyLmRldGFjaFJlZihyZWYpO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUlBkMjVsY2k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFOTNibVZ5WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1VtVmhZM1JQZDI1bGNuTWdZWEpsSUdOaGNHRmliR1VnYjJZZ2MzUnZjbWx1WnlCeVpXWmxjbVZ1WTJWeklIUnZJRzkzYm1Wa0lHTnZiWEJ2Ym1WdWRITXVYRzRnS2x4dUlDb2dRV3hzSUdOdmJYQnZibVZ1ZEhNZ1lYSmxJR05oY0dGaWJHVWdiMllnTHk5aVpXbHVaeTh2SUhKbFptVnlaVzVqWldRZ1lua2diM2R1WlhJZ1kyOXRjRzl1Wlc1MGN5d2dZblYwWEc0Z0tpQnZibXg1SUZKbFlXTjBUM2R1WlhJZ1kyOXRjRzl1Wlc1MGN5QmhjbVVnWTJGd1lXSnNaU0J2WmlBdkwzSmxabVZ5Wlc1amFXNW5MeThnYjNkdVpXUWdZMjl0Y0c5dVpXNTBjeTVjYmlBcUlGUm9aU0J1WVcxbFpDQnlaV1psY21WdVkyVWdhWE1nYTI1dmQyNGdZWE1nWVNCY0luSmxabHdpTGx4dUlDcGNiaUFxSUZKbFpuTWdZWEpsSUdGMllXbHNZV0pzWlNCM2FHVnVJRzF2ZFc1MFpXUWdZVzVrSUhWd1pHRjBaV1FnWkhWeWFXNW5JSEpsWTI5dVkybHNhV0YwYVc5dUxseHVJQ3BjYmlBcUlDQWdkbUZ5SUUxNVEyOXRjRzl1Wlc1MElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNvZ0lDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNG9LU0I3WEc0Z0tpQWdJQ0FnSUNCeVpYUjFjbTRnS0Z4dUlDb2dJQ0FnSUNBZ0lDQThaR2wySUc5dVEyeHBZMnM5ZTNSb2FYTXVhR0Z1Wkd4bFEyeHBZMnQ5UGx4dUlDb2dJQ0FnSUNBZ0lDQWdJRHhEZFhOMGIyMURiMjF3YjI1bGJuUWdjbVZtUFZ3aVkzVnpkRzl0WENJZ0x6NWNiaUFxSUNBZ0lDQWdJQ0FnUEM5a2FYWStYRzRnS2lBZ0lDQWdJQ0FwTzF4dUlDb2dJQ0FnSUgwc1hHNGdLaUFnSUNBZ2FHRnVaR3hsUTJ4cFkyczZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDb2dJQ0FnSUNBZ2RHaHBjeTV5WldaekxtTjFjM1J2YlM1b1lXNWtiR1ZEYkdsamF5Z3BPMXh1SUNvZ0lDQWdJSDBzWEc0Z0tpQWdJQ0FnWTI5dGNHOXVaVzUwUkdsa1RXOTFiblE2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ29nSUNBZ0lDQWdkR2hwY3k1eVpXWnpMbU4xYzNSdmJTNXBibWwwYVdGc2FYcGxLQ2s3WEc0Z0tpQWdJQ0FnZlZ4dUlDb2dJQ0I5S1R0Y2JpQXFYRzRnS2lCU1pXWnpJSE5vYjNWc1pDQnlZWEpsYkhrZ1ltVWdkWE5sWkM0Z1YyaGxiaUJ5WldaeklHRnlaU0IxYzJWa0xDQjBhR1Y1SUhOb2IzVnNaQ0J2Ym14NUlHSmxJR1J2Ym1VZ2RHOWNiaUFxSUdOdmJuUnliMndnWkdGMFlTQjBhR0YwSUdseklHNXZkQ0JvWVc1a2JHVmtJR0o1SUZKbFlXTjBKM01nWkdGMFlTQm1iRzkzTGx4dUlDcGNiaUFxSUVCamJHRnpjeUJTWldGamRFOTNibVZ5WEc0Z0tpOWNiblpoY2lCU1pXRmpkRTkzYm1WeUlEMGdlMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHOWlhbVZqZEZ4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JVY25WbElHbG1JR0J2WW1wbFkzUmdJR2x6SUdFZ2RtRnNhV1FnYjNkdVpYSXVYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaTljYmlBZ2FYTldZV3hwWkU5M2JtVnlPaUJtZFc1amRHbHZiaUFvYjJKcVpXTjBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlDRWhLRzlpYW1WamRDQW1KaUIwZVhCbGIyWWdiMkpxWldOMExtRjBkR0ZqYUZKbFppQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUppQjBlWEJsYjJZZ2IySnFaV04wTG1SbGRHRmphRkpsWmlBOVBUMGdKMloxYm1OMGFXOXVKeWs3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRmtaSE1nWVNCamIyMXdiMjVsYm5RZ1lua2djbVZtSUhSdklHRnVJRzkzYm1WeUlHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBJRU52YlhCdmJtVnVkQ0IwYnlCeVpXWmxjbVZ1WTJVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldZZ1RtRnRaU0JpZVNCM2FHbGphQ0IwYnlCeVpXWmxjaUIwYnlCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVDNkdVpYSjlJRzkzYm1WeUlFTnZiWEJ2Ym1WdWRDQnZiaUIzYUdsamFDQjBieUJ5WldOdmNtUWdkR2hsSUhKbFppNWNiaUFnSUNvZ1FHWnBibUZzWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWVdSa1EyOXRjRzl1Wlc1MFFYTlNaV1pVYnpvZ1puVnVZM1JwYjI0Z0tHTnZiWEJ2Ym1WdWRDd2djbVZtTENCdmQyNWxjaWtnZTF4dUlDQWdJQ0ZTWldGamRFOTNibVZ5TG1selZtRnNhV1JQZDI1bGNpaHZkMjVsY2lrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWVdSa1EyOXRjRzl1Wlc1MFFYTlNaV1pVYnlndUxpNHBPaUJQYm14NUlHRWdVbVZoWTNSUGQyNWxjaUJqWVc0Z2FHRjJaU0J5WldaekxpQlpiM1VnYldsbmFIUWdKeUFySUNkaVpTQmhaR1JwYm1jZ1lTQnlaV1lnZEc4Z1lTQmpiMjF3YjI1bGJuUWdkR2hoZENCM1lYTWdibTkwSUdOeVpXRjBaV1FnYVc1emFXUmxJR0VnWTI5dGNHOXVaVzUwWEZ3bmN5QW5JQ3NnSjJCeVpXNWtaWEpnSUcxbGRHaHZaQ3dnYjNJZ2VXOTFJR2hoZG1VZ2JYVnNkR2x3YkdVZ1kyOXdhV1Z6SUc5bUlGSmxZV04wSUd4dllXUmxaQ0FuSUNzZ0p5aGtaWFJoYVd4ek9pQm9kSFJ3Y3pvdkwyWmlMbTFsTDNKbFlXTjBMWEpsWm5NdGJYVnpkQzFvWVhabExXOTNibVZ5S1M0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdiM2R1WlhJdVlYUjBZV05vVW1WbUtISmxaaXdnWTI5dGNHOXVaVzUwS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZ0YjNabGN5QmhJR052YlhCdmJtVnVkQ0JpZVNCeVpXWWdabkp2YlNCaGJpQnZkMjVsY2lCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGIyMXdiMjVsYm5SOUlHTnZiWEJ2Ym1WdWRDQkRiMjF3YjI1bGJuUWdkRzhnWkdWeVpXWmxjbVZ1WTJVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldZZ1RtRnRaU0J2WmlCMGFHVWdjbVZtSUhSdklISmxiVzkyWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFOTNibVZ5ZlNCdmQyNWxjaUJEYjIxd2IyNWxiblFnYjI0Z2QyaHBZMmdnZEdobElISmxaaUJwY3lCeVpXTnZjbVJsWkM1Y2JpQWdJQ29nUUdacGJtRnNYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdjbVZ0YjNabFEyOXRjRzl1Wlc1MFFYTlNaV1pHY205dE9pQm1kVzVqZEdsdmJpQW9ZMjl0Y0c5dVpXNTBMQ0J5WldZc0lHOTNibVZ5S1NCN1hHNGdJQ0FnSVZKbFlXTjBUM2R1WlhJdWFYTldZV3hwWkU5M2JtVnlLRzkzYm1WeUtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkeVpXMXZkbVZEYjIxd2IyNWxiblJCYzFKbFprWnliMjBvTGk0dUtUb2dUMjVzZVNCaElGSmxZV04wVDNkdVpYSWdZMkZ1SUdoaGRtVWdjbVZtY3k0Z1dXOTFJRzFwWjJoMElDY2dLeUFuWW1VZ2NtVnRiM1pwYm1jZ1lTQnlaV1lnZEc4Z1lTQmpiMjF3YjI1bGJuUWdkR2hoZENCM1lYTWdibTkwSUdOeVpXRjBaV1FnYVc1emFXUmxJR0VnWTI5dGNHOXVaVzUwWEZ3bmN5QW5JQ3NnSjJCeVpXNWtaWEpnSUcxbGRHaHZaQ3dnYjNJZ2VXOTFJR2hoZG1VZ2JYVnNkR2x3YkdVZ1kyOXdhV1Z6SUc5bUlGSmxZV04wSUd4dllXUmxaQ0FuSUNzZ0p5aGtaWFJoYVd4ek9pQm9kSFJ3Y3pvdkwyWmlMbTFsTDNKbFlXTjBMWEpsWm5NdGJYVnpkQzFvWVhabExXOTNibVZ5S1M0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdMeThnUTJobFkyc2dkR2hoZENCZ1kyOXRjRzl1Wlc1MFlDQnBjeUJ6ZEdsc2JDQjBhR1VnWTNWeWNtVnVkQ0J5WldZZ1ltVmpZWFZ6WlNCM1pTQmtieUJ1YjNRZ2QyRnVkQ0IwYjF4dUlDQWdJQzh2SUdSbGRHRmphQ0IwYUdVZ2NtVm1JR2xtSUdGdWIzUm9aWElnWTI5dGNHOXVaVzUwSUhOMGIyeGxJR2wwTGx4dUlDQWdJR2xtSUNodmQyNWxjaTVuWlhSUWRXSnNhV05KYm5OMFlXNWpaU2dwTG5KbFpuTmJjbVZtWFNBOVBUMGdZMjl0Y0c5dVpXNTBMbWRsZEZCMVlteHBZMGx1YzNSaGJtTmxLQ2twSUh0Y2JpQWdJQ0FnSUc5M2JtVnlMbVJsZEdGamFGSmxaaWh5WldZcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFQzZHVaWEk3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RQZXJmXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBSZWFjdFBlcmYgaXMgYSBnZW5lcmFsIEFPUCBzeXN0ZW0gZGVzaWduZWQgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZS4gVGhpc1xuICogbW9kdWxlIG9ubHkgaGFzIHRoZSBob29rczogc2VlIFJlYWN0RGVmYXVsdFBlcmYgZm9yIHRoZSBhbmFseXNpcyB0b29sLlxuICovXG52YXIgUmVhY3RQZXJmID0ge1xuICAvKipcbiAgICogQm9vbGVhbiB0byBlbmFibGUvZGlzYWJsZSBtZWFzdXJlbWVudC4gU2V0IHRvIGZhbHNlIGJ5IGRlZmF1bHQgdG8gcHJldmVudFxuICAgKiBhY2NpZGVudGFsIGxvZ2dpbmcgYW5kIHBlcmYgbG9zcy5cbiAgICovXG4gIGVuYWJsZU1lYXN1cmU6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBIb2xkcyBvbnRvIHRoZSBtZWFzdXJlIGZ1bmN0aW9uIGluIHVzZS4gQnkgZGVmYXVsdCwgZG9uJ3QgbWVhc3VyZVxuICAgKiBhbnl0aGluZywgYnV0IHdlJ2xsIG92ZXJyaWRlIHRoaXMgaWYgd2UgaW5qZWN0IGEgbWVhc3VyZSBmdW5jdGlvbi5cbiAgICovXG4gIHN0b3JlZE1lYXN1cmU6IF9ub01lYXN1cmUsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdE5hbWVcbiAgICogQHBhcmFtIHtvYmplY3Q8c3RyaW5nPn0gbWV0aG9kTmFtZXNcbiAgICovXG4gIG1lYXN1cmVNZXRob2RzOiBmdW5jdGlvbiAob2JqZWN0LCBvYmplY3ROYW1lLCBtZXRob2ROYW1lcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kTmFtZXMpIHtcbiAgICAgICAgaWYgKCFtZXRob2ROYW1lcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0W2tleV0gPSBSZWFjdFBlcmYubWVhc3VyZShvYmplY3ROYW1lLCBtZXRob2ROYW1lc1trZXldLCBvYmplY3Rba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byB3cmFwIG1ldGhvZHMgeW91IHdhbnQgdG8gbWVhc3VyZS4gWmVybyBvdmVyaGVhZCBpbiBwcm9kdWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm5OYW1lXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmNcbiAgICogQHJldHVybiB7ZnVuY3Rpb259XG4gICAqL1xuICBtZWFzdXJlOiBmdW5jdGlvbiAob2JqTmFtZSwgZm5OYW1lLCBmdW5jKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtZWFzdXJlZEZ1bmMgPSBudWxsO1xuICAgICAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChSZWFjdFBlcmYuZW5hYmxlTWVhc3VyZSkge1xuICAgICAgICAgIGlmICghbWVhc3VyZWRGdW5jKSB7XG4gICAgICAgICAgICBtZWFzdXJlZEZ1bmMgPSBSZWFjdFBlcmYuc3RvcmVkTWVhc3VyZShvYmpOYW1lLCBmbk5hbWUsIGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbWVhc3VyZWRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLmRpc3BsYXlOYW1lID0gb2JqTmFtZSArICdfJyArIGZuTmFtZTtcbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYztcbiAgfSxcblxuICBpbmplY3Rpb246IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZWFzdXJlXG4gICAgICovXG4gICAgaW5qZWN0TWVhc3VyZTogZnVuY3Rpb24gKG1lYXN1cmUpIHtcbiAgICAgIFJlYWN0UGVyZi5zdG9yZWRNZWFzdXJlID0gbWVhc3VyZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogU2ltcGx5IHBhc3NlcyB0aHJvdWdoIHRoZSBtZWFzdXJlZCBmdW5jdGlvbiwgd2l0aG91dCBtZWFzdXJpbmcgaXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG9iak5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmbk5hbWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmNcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBfbm9NZWFzdXJlKG9iak5hbWUsIGZuTmFtZSwgZnVuYykge1xuICByZXR1cm4gZnVuYztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFBlcmY7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUlFaWEptTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlNaV0ZqZEZCbGNtWmNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNHZLaXBjYmlBcUlGSmxZV04wVUdWeVppQnBjeUJoSUdkbGJtVnlZV3dnUVU5UUlITjVjM1JsYlNCa1pYTnBaMjVsWkNCMGJ5QnRaV0Z6ZFhKbElIQmxjbVp2Y20xaGJtTmxMaUJVYUdselhHNGdLaUJ0YjJSMWJHVWdiMjVzZVNCb1lYTWdkR2hsSUdodmIydHpPaUJ6WldVZ1VtVmhZM1JFWldaaGRXeDBVR1Z5WmlCbWIzSWdkR2hsSUdGdVlXeDVjMmx6SUhSdmIyd3VYRzRnS2k5Y2JuWmhjaUJTWldGamRGQmxjbVlnUFNCN1hHNGdJQzhxS2x4dUlDQWdLaUJDYjI5c1pXRnVJSFJ2SUdWdVlXSnNaUzlrYVhOaFlteGxJRzFsWVhOMWNtVnRaVzUwTGlCVFpYUWdkRzhnWm1Gc2MyVWdZbmtnWkdWbVlYVnNkQ0IwYnlCd2NtVjJaVzUwWEc0Z0lDQXFJR0ZqWTJsa1pXNTBZV3dnYkc5bloybHVaeUJoYm1RZ2NHVnlaaUJzYjNOekxseHVJQ0FnS2k5Y2JpQWdaVzVoWW14bFRXVmhjM1Z5WlRvZ1ptRnNjMlVzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWh2YkdSeklHOXVkRzhnZEdobElHMWxZWE4xY21VZ1puVnVZM1JwYjI0Z2FXNGdkWE5sTGlCQ2VTQmtaV1poZFd4MExDQmtiMjRuZENCdFpXRnpkWEpsWEc0Z0lDQXFJR0Z1ZVhSb2FXNW5MQ0JpZFhRZ2QyVW5iR3dnYjNabGNuSnBaR1VnZEdocGN5QnBaaUIzWlNCcGJtcGxZM1FnWVNCdFpXRnpkWEpsSUdaMWJtTjBhVzl1TGx4dUlDQWdLaTljYmlBZ2MzUnZjbVZrVFdWaGMzVnlaVG9nWDI1dlRXVmhjM1Z5WlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzlpYW1WamRGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYjJKcVpXTjBUbUZ0WlZ4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamREeHpkSEpwYm1jK2ZTQnRaWFJvYjJST1lXMWxjMXh1SUNBZ0tpOWNiaUFnYldWaGMzVnlaVTFsZEdodlpITTZJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXNJRzlpYW1WamRFNWhiV1VzSUcxbGRHaHZaRTVoYldWektTQjdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJ0WlhSb2IyUk9ZVzFsY3lrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVcxbGRHaHZaRTVoYldWekxtaGhjMDkzYmxCeWIzQmxjblI1S0d0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnZZbXBsWTNSYmEyVjVYU0E5SUZKbFlXTjBVR1Z5Wmk1dFpXRnpkWEpsS0c5aWFtVmpkRTVoYldVc0lHMWxkR2h2WkU1aGJXVnpXMnRsZVYwc0lHOWlhbVZqZEZ0clpYbGRLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWelpTQjBhR2x6SUhSdklIZHlZWEFnYldWMGFHOWtjeUI1YjNVZ2QyRnVkQ0IwYnlCdFpXRnpkWEpsTGlCYVpYSnZJRzkyWlhKb1pXRmtJR2x1SUhCeWIyUjFZM1JwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZZbXBPWVcxbFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JtYms1aGJXVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1puVnVZMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdG1kVzVqZEdsdmJuMWNiaUFnSUNvdlhHNGdJRzFsWVhOMWNtVTZJR1oxYm1OMGFXOXVJQ2h2WW1wT1lXMWxMQ0JtYms1aGJXVXNJR1oxYm1NcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZG1GeUlHMWxZWE4xY21Wa1JuVnVZeUE5SUc1MWJHdzdYRzRnSUNBZ0lDQjJZWElnZDNKaGNIQmxjaUE5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdhV1lnS0ZKbFlXTjBVR1Z5Wmk1bGJtRmliR1ZOWldGemRYSmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLQ0Z0WldGemRYSmxaRVoxYm1NcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbFlYTjFjbVZrUm5WdVl5QTlJRkpsWVdOMFVHVnlaaTV6ZEc5eVpXUk5aV0Z6ZFhKbEtHOWlhazVoYldVc0lHWnVUbUZ0WlN3Z1puVnVZeWs3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnRaV0Z6ZFhKbFpFWjFibU11WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdablZ1WXk1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lDQWdmVHRjYmlBZ0lDQWdJSGR5WVhCd1pYSXVaR2x6Y0d4aGVVNWhiV1VnUFNCdlltcE9ZVzFsSUNzZ0oxOG5JQ3NnWm01T1lXMWxPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIZHlZWEJ3WlhJN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQm1kVzVqTzF4dUlDQjlMRnh1WEc0Z0lHbHVhbVZqZEdsdmJqb2dlMXh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJRzFsWVhOMWNtVmNiaUFnSUNBZ0tpOWNiaUFnSUNCcGJtcGxZM1JOWldGemRYSmxPaUJtZFc1amRHbHZiaUFvYldWaGMzVnlaU2tnZTF4dUlDQWdJQ0FnVW1WaFkzUlFaWEptTG5OMGIzSmxaRTFsWVhOMWNtVWdQU0J0WldGemRYSmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZUdGNibHh1THlvcVhHNGdLaUJUYVcxd2JIa2djR0Z6YzJWeklIUm9jbTkxWjJnZ2RHaGxJRzFsWVhOMWNtVmtJR1oxYm1OMGFXOXVMQ0IzYVhSb2IzVjBJRzFsWVhOMWNtbHVaeUJwZEM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYjJKcVRtRnRaVnh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdadVRtRnRaVnh1SUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1puVnVZMXh1SUNvZ1FISmxkSFZ5YmlCN1puVnVZM1JwYjI1OVhHNGdLaTljYm1aMWJtTjBhVzl1SUY5dWIwMWxZWE4xY21Vb2IySnFUbUZ0WlN3Z1ptNU9ZVzFsTENCbWRXNWpLU0I3WEc0Z0lISmxkSFZ5YmlCbWRXNWpPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVUdWeVpqc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXG4gICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhNZ1BTQjdmVHRjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTWdQU0I3WEc0Z0lDQWdjSEp2Y0RvZ0ozQnliM0FuTEZ4dUlDQWdJR052Ym5SbGVIUTZJQ2RqYjI1MFpYaDBKeXhjYmlBZ0lDQmphR2xzWkVOdmJuUmxlSFE2SUNkamFHbHNaQ0JqYjI1MFpYaDBKMXh1SUNCOU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFNlcnZlclJlbmRlcmluZ1xuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5Jyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcbnZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gcmVxdWlyZSgnLi9SZWFjdE1hcmt1cENoZWNrc3VtJyk7XG52YXIgUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIEhUTUwgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclRvU3RyaW5nKGVsZW1lbnQpIHtcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW5kZXJUb1N0cmluZygpOiBZb3UgbXVzdCBwYXNzIGEgdmFsaWQgUmVhY3RFbGVtZW50LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICB2YXIgdHJhbnNhY3Rpb247XG4gIHRyeSB7XG4gICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgICB2YXIgaWQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5jcmVhdGVSZWFjdFJvb3RJRCgpO1xuICAgIHRyYW5zYWN0aW9uID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5nZXRQb29sZWQoZmFsc2UpO1xuXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlbGVtZW50LCBudWxsKTtcbiAgICAgIHZhciBtYXJrdXAgPSBjb21wb25lbnRJbnN0YW5jZS5tb3VudENvbXBvbmVudChpZCwgdHJhbnNhY3Rpb24sIGVtcHR5T2JqZWN0KTtcbiAgICAgIHJldHVybiBSZWFjdE1hcmt1cENoZWNrc3VtLmFkZENoZWNrc3VtVG9NYXJrdXAobWFya3VwKTtcbiAgICB9LCBudWxsKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuICAgIC8vIFJldmVydCB0byB0aGUgRE9NIGJhdGNoaW5nIHN0cmF0ZWd5IHNpbmNlIHRoZXNlIHR3byByZW5kZXJlcnNcbiAgICAvLyBjdXJyZW50bHkgc2hhcmUgdGhlc2Ugc3RhdGVmdWwgbW9kdWxlcy5cbiAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgSFRNTCBtYXJrdXAsIHdpdGhvdXQgdGhlIGV4dHJhIFJlYWN0IElEIGFuZCBjaGVja3N1bVxuICogKGZvciBnZW5lcmF0aW5nIHN0YXRpYyBwYWdlcylcbiAqL1xuZnVuY3Rpb24gcmVuZGVyVG9TdGF0aWNNYXJrdXAoZWxlbWVudCkge1xuICAhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbmRlclRvU3RhdGljTWFya3VwKCk6IFlvdSBtdXN0IHBhc3MgYSB2YWxpZCBSZWFjdEVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHZhciB0cmFuc2FjdGlvbjtcbiAgdHJ5IHtcbiAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgIHZhciBpZCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0Um9vdElEKCk7XG4gICAgdHJhbnNhY3Rpb24gPSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLmdldFBvb2xlZCh0cnVlKTtcblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZWxlbWVudCwgbnVsbCk7XG4gICAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2UubW91bnRDb21wb25lbnQoaWQsIHRyYW5zYWN0aW9uLCBlbXB0eU9iamVjdCk7XG4gICAgfSwgbnVsbCk7XG4gIH0gZmluYWxseSB7XG4gICAgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbiAgICAvLyBSZXZlcnQgdG8gdGhlIERPTSBiYXRjaGluZyBzdHJhdGVneSBzaW5jZSB0aGVzZSB0d28gcmVuZGVyZXJzXG4gICAgLy8gY3VycmVudGx5IHNoYXJlIHRoZXNlIHN0YXRlZnVsIG1vZHVsZXMuXG4gICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICByZW5kZXJUb1N0cmluZzogcmVuZGVyVG9TdHJpbmcsXG4gIHJlbmRlclRvU3RhdGljTWFya3VwOiByZW5kZXJUb1N0YXRpY01hcmt1cFxufTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWN1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZGNiaUFxTDF4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRVpXWmhkV3gwUW1GMFkyaHBibWRUZEhKaGRHVm5lU0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFWldaaGRXeDBRbUYwWTJocGJtZFRkSEpoZEdWbmVTY3BPMXh1ZG1GeUlGSmxZV04wUld4bGJXVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JGYkdWdFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpKeWs3WEc1MllYSWdVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiU0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOWVhKcmRYQkRhR1ZqYTNOMWJTY3BPMXh1ZG1GeUlGSmxZV04wVTJWeWRtVnlRbUYwWTJocGJtZFRkSEpoZEdWbmVTQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlRaWEoyWlhKQ1lYUmphR2x1WjFOMGNtRjBaV2Q1SnlrN1hHNTJZWElnVW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJpY3BPMXh1ZG1GeUlGSmxZV04wVlhCa1lYUmxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JWY0dSaGRHVnpKeWs3WEc1Y2JuWmhjaUJsYlhCMGVVOWlhbVZqZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1VDJKcVpXTjBKeWs3WEc1MllYSWdhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2YVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCbGJHVnRaVzUwWEc0Z0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlIUm9aU0JJVkUxTUlHMWhjbXQxY0Z4dUlDb3ZYRzVtZFc1amRHbHZiaUJ5Wlc1a1pYSlViMU4wY21sdVp5aGxiR1Z0Wlc1MEtTQjdYRzRnSUNGU1pXRmpkRVZzWlcxbGJuUXVhWE5XWVd4cFpFVnNaVzFsYm5Rb1pXeGxiV1Z1ZENrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuY21WdVpHVnlWRzlUZEhKcGJtY29LVG9nV1c5MUlHMTFjM1FnY0dGemN5QmhJSFpoYkdsa0lGSmxZV04wUld4bGJXVnVkQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ2RtRnlJSFJ5WVc1ellXTjBhVzl1TzF4dUlDQjBjbmtnZTF4dUlDQWdJRkpsWVdOMFZYQmtZWFJsY3k1cGJtcGxZM1JwYjI0dWFXNXFaV04wUW1GMFkyaHBibWRUZEhKaGRHVm5lU2hTWldGamRGTmxjblpsY2tKaGRHTm9hVzVuVTNSeVlYUmxaM2twTzF4dVhHNGdJQ0FnZG1GeUlHbGtJRDBnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNdVkzSmxZWFJsVW1WaFkzUlNiMjkwU1VRb0tUdGNiaUFnSUNCMGNtRnVjMkZqZEdsdmJpQTlJRkpsWVdOMFUyVnlkbVZ5VW1WdVpHVnlhVzVuVkhKaGJuTmhZM1JwYjI0dVoyVjBVRzl2YkdWa0tHWmhiSE5sS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUIwY21GdWMyRmpkR2x2Ymk1d1pYSm1iM0p0S0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lIWmhjaUJqYjIxd2IyNWxiblJKYm5OMFlXNWpaU0E5SUdsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvWld4bGJXVnVkQ3dnYm5Wc2JDazdYRzRnSUNBZ0lDQjJZWElnYldGeWEzVndJRDBnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlV1Ylc5MWJuUkRiMjF3YjI1bGJuUW9hV1FzSUhSeVlXNXpZV04wYVc5dUxDQmxiWEIwZVU5aWFtVmpkQ2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiUzVoWkdSRGFHVmphM04xYlZSdlRXRnlhM1Z3S0cxaGNtdDFjQ2s3WEc0Z0lDQWdmU3dnYm5Wc2JDazdYRzRnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnVW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJpNXlaV3hsWVhObEtIUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ0lDQXZMeUJTWlhabGNuUWdkRzhnZEdobElFUlBUU0JpWVhSamFHbHVaeUJ6ZEhKaGRHVm5lU0J6YVc1alpTQjBhR1Z6WlNCMGQyOGdjbVZ1WkdWeVpYSnpYRzRnSUNBZ0x5OGdZM1Z5Y21WdWRHeDVJSE5vWVhKbElIUm9aWE5sSUhOMFlYUmxablZzSUcxdlpIVnNaWE11WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1Z6TG1sdWFtVmpkR2x2Ymk1cGJtcGxZM1JDWVhSamFHbHVaMU4wY21GMFpXZDVLRkpsWVdOMFJHVm1ZWFZzZEVKaGRHTm9hVzVuVTNSeVlYUmxaM2twTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJR1ZzWlcxbGJuUmNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnZEdobElFaFVUVXdnYldGeWEzVndMQ0IzYVhSb2IzVjBJSFJvWlNCbGVIUnlZU0JTWldGamRDQkpSQ0JoYm1RZ1kyaGxZMnR6ZFcxY2JpQXFJQ2htYjNJZ1oyVnVaWEpoZEdsdVp5QnpkR0YwYVdNZ2NHRm5aWE1wWEc0Z0tpOWNibVoxYm1OMGFXOXVJSEpsYm1SbGNsUnZVM1JoZEdsalRXRnlhM1Z3S0dWc1pXMWxiblFwSUh0Y2JpQWdJVkpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ2hsYkdWdFpXNTBLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHlaVzVrWlhKVWIxTjBZWFJwWTAxaGNtdDFjQ2dwT2lCWmIzVWdiWFZ6ZENCd1lYTnpJR0VnZG1Gc2FXUWdVbVZoWTNSRmJHVnRaVzUwTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQjJZWElnZEhKaGJuTmhZM1JwYjI0N1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWekxtbHVhbVZqZEdsdmJpNXBibXBsWTNSQ1lYUmphR2x1WjFOMGNtRjBaV2Q1S0ZKbFlXTjBVMlZ5ZG1WeVFtRjBZMmhwYm1kVGRISmhkR1ZuZVNrN1hHNWNiaUFnSUNCMllYSWdhV1FnUFNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NWpjbVZoZEdWU1pXRmpkRkp2YjNSSlJDZ3BPMXh1SUNBZ0lIUnlZVzV6WVdOMGFXOXVJRDBnVW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJpNW5aWFJRYjI5c1pXUW9kSEoxWlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEhKaGJuTmhZM1JwYjI0dWNHVnlabTl5YlNobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQjJZWElnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVnUFNCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwS0dWc1pXMWxiblFzSUc1MWJHd3BPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHTnZiWEJ2Ym1WdWRFbHVjM1JoYm1ObExtMXZkVzUwUTI5dGNHOXVaVzUwS0dsa0xDQjBjbUZ1YzJGamRHbHZiaXdnWlcxd2RIbFBZbXBsWTNRcE8xeHVJQ0FnSUgwc0lHNTFiR3dwTzF4dUlDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lGSmxZV04wVTJWeWRtVnlVbVZ1WkdWeWFXNW5WSEpoYm5OaFkzUnBiMjR1Y21Wc1pXRnpaU2gwY21GdWMyRmpkR2x2YmlrN1hHNGdJQ0FnTHk4Z1VtVjJaWEowSUhSdklIUm9aU0JFVDAwZ1ltRjBZMmhwYm1jZ2MzUnlZWFJsWjNrZ2MybHVZMlVnZEdobGMyVWdkSGR2SUhKbGJtUmxjbVZ5YzF4dUlDQWdJQzh2SUdOMWNuSmxiblJzZVNCemFHRnlaU0IwYUdWelpTQnpkR0YwWldaMWJDQnRiMlIxYkdWekxseHVJQ0FnSUZKbFlXTjBWWEJrWVhSbGN5NXBibXBsWTNScGIyNHVhVzVxWldOMFFtRjBZMmhwYm1kVGRISmhkR1ZuZVNoU1pXRmpkRVJsWm1GMWJIUkNZWFJqYUdsdVoxTjBjbUYwWldkNUtUdGNiaUFnZlZ4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSHRjYmlBZ2NtVnVaR1Z5Vkc5VGRISnBibWM2SUhKbGJtUmxjbFJ2VTNSeWFXNW5MRnh1SUNCeVpXNWtaWEpVYjFOMFlYUnBZMDFoY210MWNEb2djbVZ1WkdWeVZHOVRkR0YwYVdOTllYSnJkWEJjYm4wN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFVwZGF0ZVF1ZXVlXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSkge1xuICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gT25seSB3YXJuIHdoZW4gd2UgaGF2ZSBhIGNhbGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LlxuICAgICAgLy8gV2UncmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9uJ3Qgd2FudCB0byB3YXJuXG4gICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNhbGxlck5hbWUsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnJXMoLi4uKTogQ2Fubm90IHVwZGF0ZSBkdXJpbmcgYW4gZXhpc3Rpbmcgc3RhdGUgdHJhbnNpdGlvbiAnICsgJyhzdWNoIGFzIHdpdGhpbiBgcmVuZGVyYCkuIFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGUuJywgY2FsbGVyTmFtZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZTtcbn1cblxuLyoqXG4gKiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Igc3RhdGUgdXBkYXRlcyB0byBiZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyXG4gKiByZWNvbmNpbGlhdGlvbiBzdGVwLlxuICovXG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHtcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rpb24uICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxsIGJlIG51bGwgYnV0IGFmdGVyXG4gICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRlciB0byBzb21ldGhpbmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2VcbiAgICAgIC8vIHRoaXMgaGFjay5cbiAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2spIHtcbiAgICAhKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZW5xdWV1ZUNhbGxiYWNrKC4uLik6IFlvdSBjYWxsZWQgYHNldFByb3BzYCwgYHJlcGxhY2VQcm9wc2AsICcgKyAnYHNldFN0YXRlYCwgYHJlcGxhY2VTdGF0ZWAsIG9yIGBmb3JjZVVwZGF0ZWAgd2l0aCBhIGNhbGxiYWNrIHRoYXQgJyArICdpc25cXCd0IGNhbGxhYmxlLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG5cbiAgICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRocm93IGFuIGVycm9yIGlmIHdlIGRpZG4ndCBoYXZlIGFuIGludGVybmFsXG4gICAgLy8gaW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8gbWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZVxuICAgIC8vIGJlaGF2aW9yIHdlIGhhdmUgaW4gb3RoZXIgZW5xdWV1ZSogbWV0aG9kcy5cbiAgICAvLyBXZSBhbHNvIG5lZWQgdG8gaWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRXaWxsTW91bnQuIFNlZVxuICAgIC8vIGVucXVldWVVcGRhdGVzLlxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICAvLyBUT0RPOiBUaGUgY2FsbGJhY2sgaGVyZSBpcyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2FsbGVkIGZyb21cbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlzYWxsb3cgZG9pbmcgc28gY29tcGxldGVseSBpblxuICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0ZXJuYXRpdmVseSwgd2UgY2FuIGRpc2FsbG93XG4gICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGR1cmluZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG4gICAgISh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2VucXVldWVDYWxsYmFjayguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2AsIGByZXBsYWNlUHJvcHNgLCAnICsgJ2BzZXRTdGF0ZWAsIGByZXBsYWNlU3RhdGVgLCBvciBgZm9yY2VVcGRhdGVgIHdpdGggYSBjYWxsYmFjayB0aGF0ICcgKyAnaXNuXFwndCBjYWxsYWJsZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gdHJ1ZTtcblxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBxdWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlIHx8IChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtdKTtcbiAgICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsUHJvcHMgU3Vic2V0IG9mIHRoZSBuZXh0IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRQcm9wczogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsUHJvcHMpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3NldFByb3BzJyk7XG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVNldFByb3BzSW50ZXJuYWwoaW50ZXJuYWxJbnN0YW5jZSwgcGFydGlhbFByb3BzKTtcbiAgfSxcblxuICBlbnF1ZXVlU2V0UHJvcHNJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHBhcnRpYWxQcm9wcykge1xuICAgIHZhciB0b3BMZXZlbFdyYXBwZXIgPSBpbnRlcm5hbEluc3RhbmNlLl90b3BMZXZlbFdyYXBwZXI7XG4gICAgIXRvcExldmVsV3JhcHBlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRQcm9wcyguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2Agb24gYSAnICsgJ2NvbXBvbmVudCB3aXRoIGEgcGFyZW50LiBUaGlzIGlzIGFuIGFudGktcGF0dGVybiBzaW5jZSBwcm9wcyB3aWxsICcgKyAnZ2V0IHJlYWN0aXZlbHkgdXBkYXRlZCB3aGVuIHJlbmRlcmVkLiBJbnN0ZWFkLCBjaGFuZ2UgdGhlIG93bmVyXFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCB0byBwYXNzIHRoZSBjb3JyZWN0IHZhbHVlIGFzIHByb3BzIHRvIHRoZSBjb21wb25lbnQgJyArICd3aGVyZSBpdCBpcyBjcmVhdGVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIE1lcmdlIHdpdGggdGhlIHBlbmRpbmcgZWxlbWVudCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSB3aXRoIGV4aXN0aW5nXG4gICAgLy8gZWxlbWVudCBwcm9wcy5cbiAgICB2YXIgd3JhcEVsZW1lbnQgPSB0b3BMZXZlbFdyYXBwZXIuX3BlbmRpbmdFbGVtZW50IHx8IHRvcExldmVsV3JhcHBlci5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIGVsZW1lbnQgPSB3cmFwRWxlbWVudC5wcm9wcztcbiAgICB2YXIgcHJvcHMgPSBhc3NpZ24oe30sIGVsZW1lbnQucHJvcHMsIHBhcnRpYWxQcm9wcyk7XG4gICAgdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VQcm9wcyh3cmFwRWxlbWVudCwgUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzKGVsZW1lbnQsIHByb3BzKSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKHRvcExldmVsV3JhcHBlcik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgTmV3IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlUHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcHJvcHMpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VQcm9wcycpO1xuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlUHJvcHNJbnRlcm5hbChpbnRlcm5hbEluc3RhbmNlLCBwcm9wcyk7XG4gIH0sXG5cbiAgZW5xdWV1ZVJlcGxhY2VQcm9wc0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgcHJvcHMpIHtcbiAgICB2YXIgdG9wTGV2ZWxXcmFwcGVyID0gaW50ZXJuYWxJbnN0YW5jZS5fdG9wTGV2ZWxXcmFwcGVyO1xuICAgICF0b3BMZXZlbFdyYXBwZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncmVwbGFjZVByb3BzKC4uLik6IFlvdSBjYWxsZWQgYHJlcGxhY2VQcm9wc2Agb24gYSAnICsgJ2NvbXBvbmVudCB3aXRoIGEgcGFyZW50LiBUaGlzIGlzIGFuIGFudGktcGF0dGVybiBzaW5jZSBwcm9wcyB3aWxsICcgKyAnZ2V0IHJlYWN0aXZlbHkgdXBkYXRlZCB3aGVuIHJlbmRlcmVkLiBJbnN0ZWFkLCBjaGFuZ2UgdGhlIG93bmVyXFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCB0byBwYXNzIHRoZSBjb3JyZWN0IHZhbHVlIGFzIHByb3BzIHRvIHRoZSBjb21wb25lbnQgJyArICd3aGVyZSBpdCBpcyBjcmVhdGVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIE1lcmdlIHdpdGggdGhlIHBlbmRpbmcgZWxlbWVudCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSB3aXRoIGV4aXN0aW5nXG4gICAgLy8gZWxlbWVudCBwcm9wcy5cbiAgICB2YXIgd3JhcEVsZW1lbnQgPSB0b3BMZXZlbFdyYXBwZXIuX3BlbmRpbmdFbGVtZW50IHx8IHRvcExldmVsV3JhcHBlci5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIGVsZW1lbnQgPSB3cmFwRWxlbWVudC5wcm9wcztcbiAgICB0b3BMZXZlbFdyYXBwZXIuX3BlbmRpbmdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzKHdyYXBFbGVtZW50LCBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlUHJvcHMoZWxlbWVudCwgcHJvcHMpKTtcblxuICAgIGVucXVldWVVcGRhdGUodG9wTGV2ZWxXcmFwcGVyKTtcbiAgfSxcblxuICBlbnF1ZXVlRWxlbWVudEludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV3RWxlbWVudCkge1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVtZW50ID0gbmV3RWxlbWVudDtcbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVRdWV1ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSVmNHUmhkR1ZSZFdWMVpTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRGVndaR0YwWlZGMVpYVmxYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTNWeWNtVnVkRTkzYm1WeUp5azdYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFbHVjM1JoYm1ObFRXRndKeWs3WEc1MllYSWdVbVZoWTNSVmNHUmhkR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaWE1uS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNibVoxYm1OMGFXOXVJR1Z1Y1hWbGRXVlZjR1JoZEdVb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlNrZ2UxeHVJQ0JTWldGamRGVndaR0YwWlhNdVpXNXhkV1YxWlZWd1pHRjBaU2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxLVHRjYm4xY2JseHVablZ1WTNScGIyNGdaMlYwU1c1MFpYSnVZV3hKYm5OMFlXNWpaVkpsWVdSNVJtOXlWWEJrWVhSbEtIQjFZbXhwWTBsdWMzUmhibU5sTENCallXeHNaWEpPWVcxbEtTQjdYRzRnSUhaaGNpQnBiblJsY201aGJFbHVjM1JoYm1ObElEMGdVbVZoWTNSSmJuTjBZVzVqWlUxaGNDNW5aWFFvY0hWaWJHbGpTVzV6ZEdGdVkyVXBPMXh1SUNCcFppQW9JV2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0x5OGdUMjVzZVNCM1lYSnVJSGRvWlc0Z2QyVWdhR0YyWlNCaElHTmhiR3hsY2s1aGJXVXVJRTkwYUdWeWQybHpaU0IzWlNCemFHOTFiR1FnWW1VZ2MybHNaVzUwTGx4dUlDQWdJQ0FnTHk4Z1YyVW5jbVVnY0hKdlltRmliSGtnWTJGc2JHbHVaeUJtY205dElHVnVjWFZsZFdWRFlXeHNZbUZqYXk0Z1YyVWdaRzl1SjNRZ2QyRnVkQ0IwYnlCM1lYSnVYRzRnSUNBZ0lDQXZMeUIwYUdWeVpTQmlaV05oZFhObElIZGxJR0ZzY21WaFpIa2dkMkZ5Ym1Wa0lHWnZjaUIwYUdVZ1kyOXljbVZ6Y0c5dVpHbHVaeUJzYVdabFkzbGpiR1VnYldWMGFHOWtMbHh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvSVdOaGJHeGxjazVoYldVc0lDY2xjeWd1TGk0cE9pQkRZVzRnYjI1c2VTQjFjR1JoZEdVZ1lTQnRiM1Z1ZEdWa0lHOXlJRzF2ZFc1MGFXNW5JR052YlhCdmJtVnVkQzRnSnlBcklDZFVhR2x6SUhWemRXRnNiSGtnYldWaGJuTWdlVzkxSUdOaGJHeGxaQ0FsY3lncElHOXVJR0Z1SUhWdWJXOTFiblJsWkNCamIyMXdiMjVsYm5RdUlDY2dLeUFuVkdocGN5QnBjeUJoSUc1dkxXOXdMaUJRYkdWaGMyVWdZMmhsWTJzZ2RHaGxJR052WkdVZ1ptOXlJSFJvWlNBbGN5QmpiMjF3YjI1bGJuUXVKeXdnWTJGc2JHVnlUbUZ0WlN3Z1kyRnNiR1Z5VG1GdFpTd2djSFZpYkdsalNXNXpkR0Z1WTJVdVkyOXVjM1J5ZFdOMGIzSXVaR2x6Y0d4aGVVNWhiV1VwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENBOVBTQnVkV3hzTENBbkpYTW9MaTR1S1RvZ1EyRnVibTkwSUhWd1pHRjBaU0JrZFhKcGJtY2dZVzRnWlhocGMzUnBibWNnYzNSaGRHVWdkSEpoYm5OcGRHbHZiaUFuSUNzZ0p5aHpkV05vSUdGeklIZHBkR2hwYmlCZ2NtVnVaR1Z5WUNrdUlGSmxibVJsY2lCdFpYUm9iMlJ6SUhOb2IzVnNaQ0JpWlNCaElIQjFjbVVnWm5WdVkzUnBiMjRnSnlBcklDZHZaaUJ3Y205d2N5QmhibVFnYzNSaGRHVXVKeXdnWTJGc2JHVnlUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdhVzUwWlhKdVlXeEpibk4wWVc1alpUdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsSUdGc2JHOTNjeUJtYjNJZ2MzUmhkR1VnZFhCa1lYUmxjeUIwYnlCaVpTQnpZMmhsWkhWc1pXUWdhVzUwYnlCaElHeGhkR1Z5WEc0Z0tpQnlaV052Ym1OcGJHbGhkR2x2YmlCemRHVndMbHh1SUNvdlhHNTJZWElnVW1WaFkzUlZjR1JoZEdWUmRXVjFaU0E5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJobFkydHpJSGRvWlhSb1pYSWdiM0lnYm05MElIUm9hWE1nWTI5dGNHOXphWFJsSUdOdmJYQnZibVZ1ZENCcGN5QnRiM1Z1ZEdWa0xseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjNaU0IzWVc1MElIUnZJSFJsYzNRdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5SUZSeWRXVWdhV1lnYlc5MWJuUmxaQ3dnWm1Gc2MyVWdiM1JvWlhKM2FYTmxMbHh1SUNBZ0tpQkFjSEp2ZEdWamRHVmtYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaTljYmlBZ2FYTk5iM1Z1ZEdWa09pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZG1GeUlHOTNibVZ5SUQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZER0Y2JpQWdJQ0FnSUdsbUlDaHZkMjVsY2lBaFBUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWh2ZDI1bGNpNWZkMkZ5Ym1Wa1FXSnZkWFJTWldaelNXNVNaVzVrWlhJc0lDY2xjeUJwY3lCaFkyTmxjM05wYm1jZ2FYTk5iM1Z1ZEdWa0lHbHVjMmxrWlNCcGRITWdjbVZ1WkdWeUtDa2dablZ1WTNScGIyNHVJQ2NnS3lBbmNtVnVaR1Z5S0NrZ2MyaHZkV3hrSUdKbElHRWdjSFZ5WlNCbWRXNWpkR2x2YmlCdlppQndjbTl3Y3lCaGJtUWdjM1JoZEdVdUlFbDBJSE5vYjNWc1pDQW5JQ3NnSjI1bGRtVnlJR0ZqWTJWemN5QnpiMjFsZEdocGJtY2dkR2hoZENCeVpYRjFhWEpsY3lCemRHRnNaU0JrWVhSaElHWnliMjBnZEdobElIQnlaWFpwYjNWeklDY2dLeUFuY21WdVpHVnlMQ0J6ZFdOb0lHRnpJSEpsWm5NdUlFMXZkbVVnZEdocGN5QnNiMmRwWXlCMGJ5QmpiMjF3YjI1bGJuUkVhV1JOYjNWdWRDQmhibVFnSnlBcklDZGpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVWdhVzV6ZEdWaFpDNG5MQ0J2ZDI1bGNpNW5aWFJPWVcxbEtDa2dmSHdnSjBFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUc5M2JtVnlMbDkzWVhKdVpXUkJZbTkxZEZKbFpuTkpibEpsYm1SbGNpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCcGJuUmxjbTVoYkVsdWMzUmhibU5sSUQwZ1VtVmhZM1JKYm5OMFlXNWpaVTFoY0M1blpYUW9jSFZpYkdsalNXNXpkR0Z1WTJVcE8xeHVJQ0FnSUdsbUlDaHBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ0lDQXZMeUJFZFhKcGJtY2dZMjl0Y0c5dVpXNTBWMmxzYkUxdmRXNTBJR0Z1WkNCeVpXNWtaWElnZEdocGN5QjNhV3hzSUhOMGFXeHNJR0psSUc1MWJHd2dZblYwSUdGbWRHVnlYRzRnSUNBZ0lDQXZMeUIwYUdGMElIZHBiR3dnWVd4M1lYbHpJSEpsYm1SbGNpQjBieUJ6YjIxbGRHaHBibWN1SUVGMElHeGxZWE4wSUdadmNpQnViM2N1SUZOdklIZGxJR05oYmlCMWMyVmNiaUFnSUNBZ0lDOHZJSFJvYVhNZ2FHRmpheTVjYmlBZ0lDQWdJSEpsZEhWeWJpQWhJV2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYm5GMVpYVmxJR0VnWTJGc2JHSmhZMnNnZEdoaGRDQjNhV3hzSUdKbElHVjRaV04xZEdWa0lHRm1kR1Z5SUdGc2JDQjBhR1VnY0dWdVpHbHVaeUIxY0dSaGRHVnpYRzRnSUNBcUlHaGhkbVVnY0hKdlkyVnpjMlZrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYnlCMWMyVWdZWE1nWUhSb2FYTmdJR052Ym5SbGVIUXVYRzRnSUNBcUlFQndZWEpoYlNCN1AyWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QkRZV3hzWldRZ1lXWjBaWElnYzNSaGRHVWdhWE1nZFhCa1lYUmxaQzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxRMkZzYkdKaFkyczZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQWhLSFI1Y0dWdlppQmpZV3hzWW1GamF5QTlQVDBnSjJaMWJtTjBhVzl1SnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWlc1eGRXVjFaVU5oYkd4aVlXTnJLQzR1TGlrNklGbHZkU0JqWVd4c1pXUWdZSE5sZEZCeWIzQnpZQ3dnWUhKbGNHeGhZMlZRY205d2MyQXNJQ2NnS3lBbllITmxkRk4wWVhSbFlDd2dZSEpsY0d4aFkyVlRkR0YwWldBc0lHOXlJR0JtYjNKalpWVndaR0YwWldBZ2QybDBhQ0JoSUdOaGJHeGlZV05ySUhSb1lYUWdKeUFySUNkcGMyNWNYQ2QwSUdOaGJHeGhZbXhsTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjJZWElnYVc1MFpYSnVZV3hKYm5OMFlXNWpaU0E5SUdkbGRFbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJWU1pXRmtlVVp2Y2xWd1pHRjBaU2h3ZFdKc2FXTkpibk4wWVc1alpTazdYRzVjYmlBZ0lDQXZMeUJRY21WMmFXOTFjMng1SUhkbElIZHZkV3hrSUhSb2NtOTNJR0Z1SUdWeWNtOXlJR2xtSUhkbElHUnBaRzRuZENCb1lYWmxJR0Z1SUdsdWRHVnlibUZzWEc0Z0lDQWdMeThnYVc1emRHRnVZMlV1SUZOcGJtTmxJSGRsSUhkaGJuUWdkRzhnYldGclpTQnBkQ0JoSUc1dkxXOXdJR2x1YzNSbFlXUXNJSGRsSUcxcGNuSnZjaUIwYUdVZ2MyRnRaVnh1SUNBZ0lDOHZJR0psYUdGMmFXOXlJSGRsSUdoaGRtVWdhVzRnYjNSb1pYSWdaVzV4ZFdWMVpTb2diV1YwYUc5a2N5NWNiaUFnSUNBdkx5QlhaU0JoYkhOdklHNWxaV1FnZEc4Z2FXZHViM0psSUdOaGJHeGlZV05yY3lCcGJpQmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUXVJRk5sWlZ4dUlDQWdJQzh2SUdWdWNYVmxkV1ZWY0dSaGRHVnpMbHh1SUNBZ0lHbG1JQ2doYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNcElIdGNiaUFnSUNBZ0lHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNdWNIVnphQ2hqWVd4c1ltRmpheWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNZ1BTQmJZMkZzYkdKaFkydGRPMXh1SUNBZ0lIMWNiaUFnSUNBdkx5QlVUMFJQT2lCVWFHVWdZMkZzYkdKaFkyc2dhR1Z5WlNCcGN5QnBaMjV2Y21Wa0lIZG9aVzRnYzJWMFUzUmhkR1VnYVhNZ1kyRnNiR1ZrSUdaeWIyMWNiaUFnSUNBdkx5QmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUXVJRVZwZEdobGNpQm1hWGdnYVhRZ2IzSWdaR2x6WVd4c2IzY2daRzlwYm1jZ2MyOGdZMjl0Y0d4bGRHVnNlU0JwYmx4dUlDQWdJQzh2SUdaaGRtOXlJRzltSUdkbGRFbHVhWFJwWVd4VGRHRjBaUzRnUVd4MFpYSnVZWFJwZG1Wc2VTd2dkMlVnWTJGdUlHUnBjMkZzYkc5M1hHNGdJQ0FnTHk4Z1kyOXRjRzl1Wlc1MFYybHNiRTF2ZFc1MElHUjFjbWx1WnlCelpYSjJaWEl0YzJsa1pTQnlaVzVrWlhKcGJtY3VYRzRnSUNBZ1pXNXhkV1YxWlZWd1pHRjBaU2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxLVHRjYmlBZ2ZTeGNibHh1SUNCbGJuRjFaWFZsUTJGc2JHSmhZMnRKYm5SbGNtNWhiRG9nWm5WdVkzUnBiMjRnS0dsdWRHVnlibUZzU1c1emRHRnVZMlVzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSVNoMGVYQmxiMllnWTJGc2JHSmhZMnNnUFQwOUlDZG1kVzVqZEdsdmJpY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyVnVjWFZsZFdWRFlXeHNZbUZqYXlndUxpNHBPaUJaYjNVZ1kyRnNiR1ZrSUdCelpYUlFjbTl3YzJBc0lHQnlaWEJzWVdObFVISnZjSE5nTENBbklDc2dKMkJ6WlhSVGRHRjBaV0FzSUdCeVpYQnNZV05sVTNSaGRHVmdMQ0J2Y2lCZ1ptOXlZMlZWY0dSaGRHVmdJSGRwZEdnZ1lTQmpZV3hzWW1GamF5QjBhR0YwSUNjZ0t5QW5hWE51WEZ3bmRDQmpZV3hzWVdKc1pTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnYVdZZ0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNcElIdGNiaUFnSUNBZ0lHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNdWNIVnphQ2hqWVd4c1ltRmpheWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNZ1BTQmJZMkZzYkdKaFkydGRPMXh1SUNBZ0lIMWNiaUFnSUNCbGJuRjFaWFZsVlhCa1lYUmxLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCR2IzSmpaWE1nWVc0Z2RYQmtZWFJsTGlCVWFHbHpJSE5vYjNWc1pDQnZibXg1SUdKbElHbHVkbTlyWldRZ2QyaGxiaUJwZENCcGN5QnJibTkzYmlCM2FYUm9YRzRnSUNBcUlHTmxjblJoYVc1MGVTQjBhR0YwSUhkbElHRnlaU0FxS201dmRDb3FJR2x1SUdFZ1JFOU5JSFJ5WVc1ellXTjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQlpiM1VnYldGNUlIZGhiblFnZEc4Z1kyRnNiQ0IwYUdseklIZG9aVzRnZVc5MUlHdHViM2NnZEdoaGRDQnpiMjFsSUdSbFpYQmxjaUJoYzNCbFkzUWdiMllnZEdobFhHNGdJQ0FxSUdOdmJYQnZibVZ1ZENkeklITjBZWFJsSUdoaGN5QmphR0Z1WjJWa0lHSjFkQ0JnYzJWMFUzUmhkR1ZnSUhkaGN5QnViM1FnWTJGc2JHVmtMbHh1SUNBZ0tseHVJQ0FnS2lCVWFHbHpJSGRwYkd3Z2JtOTBJR2x1ZG05clpTQmdjMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsWUN3Z1luVjBJR2wwSUhkcGJHd2dhVzUyYjJ0bFhHNGdJQ0FxSUdCamIyMXdiMjVsYm5SWGFXeHNWWEJrWVhSbFlDQmhibVFnWUdOdmJYQnZibVZ1ZEVScFpGVndaR0YwWldBdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSb1lYUWdjMmh2ZFd4a0lISmxjbVZ1WkdWeUxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWR2IzSmpaVlZ3WkdGMFpUb2dablZ1WTNScGIyNGdLSEIxWW14cFkwbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ2RtRnlJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVWdQU0JuWlhSSmJuUmxjbTVoYkVsdWMzUmhibU5sVW1WaFpIbEdiM0pWY0dSaGRHVW9jSFZpYkdsalNXNXpkR0Z1WTJVc0lDZG1iM0pqWlZWd1pHRjBaU2NwTzF4dVhHNGdJQ0FnYVdZZ0tDRnBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVc1MFpYSnVZV3hKYm5OMFlXNWpaUzVmY0dWdVpHbHVaMFp2Y21ObFZYQmtZWFJsSUQwZ2RISjFaVHRjYmx4dUlDQWdJR1Z1Y1hWbGRXVlZjR1JoZEdVb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlNrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsY0d4aFkyVnpJR0ZzYkNCdlppQjBhR1VnYzNSaGRHVXVJRUZzZDJGNWN5QjFjMlVnZEdocGN5QnZjaUJnYzJWMFUzUmhkR1ZnSUhSdklHMTFkR0YwWlNCemRHRjBaUzVjYmlBZ0lDb2dXVzkxSUhOb2IzVnNaQ0IwY21WaGRDQmdkR2hwY3k1emRHRjBaV0FnWVhNZ2FXMXRkWFJoWW14bExseHVJQ0FnS2x4dUlDQWdLaUJVYUdWeVpTQnBjeUJ1YnlCbmRXRnlZVzUwWldVZ2RHaGhkQ0JnZEdocGN5NXpkR0YwWldBZ2QybHNiQ0JpWlNCcGJXMWxaR2xoZEdWc2VTQjFjR1JoZEdWa0xDQnpiMXh1SUNBZ0tpQmhZMk5sYzNOcGJtY2dZSFJvYVhNdWMzUmhkR1ZnSUdGbWRHVnlJR05oYkd4cGJtY2dkR2hwY3lCdFpYUm9iMlFnYldGNUlISmxkSFZ5YmlCMGFHVWdiMnhrSUhaaGJIVmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjBhR0YwSUhOb2IzVnNaQ0J5WlhKbGJtUmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHTnZiWEJzWlhSbFUzUmhkR1VnVG1WNGRDQnpkR0YwWlM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsVW1Wd2JHRmpaVk4wWVhSbE9pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVc0lHTnZiWEJzWlhSbFUzUmhkR1VwSUh0Y2JpQWdJQ0IyWVhJZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlNBOUlHZGxkRWx1ZEdWeWJtRnNTVzV6ZEdGdVkyVlNaV0ZrZVVadmNsVndaR0YwWlNod2RXSnNhV05KYm5OMFlXNWpaU3dnSjNKbGNHeGhZMlZUZEdGMFpTY3BPMXh1WEc0Z0lDQWdhV1lnS0NGcGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVWdQU0JiWTI5dGNHeGxkR1ZUZEdGMFpWMDdYRzRnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjFKbGNHeGhZMlZUZEdGMFpTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNCbGJuRjFaWFZsVlhCa1lYUmxLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUnpJR0VnYzNWaWMyVjBJRzltSUhSb1pTQnpkR0YwWlM0Z1ZHaHBjeUJ2Ym14NUlHVjRhWE4wY3lCaVpXTmhkWE5sSUY5d1pXNWthVzVuVTNSaGRHVWdhWE5jYmlBZ0lDb2dhVzUwWlhKdVlXd3VJRlJvYVhNZ2NISnZkbWxrWlhNZ1lTQnRaWEpuYVc1bklITjBjbUYwWldkNUlIUm9ZWFFnYVhNZ2JtOTBJR0YyWVdsc1lXSnNaU0IwYnlCa1pXVndYRzRnSUNBcUlIQnliM0JsY25ScFpYTWdkMmhwWTJnZ2FYTWdZMjl1Wm5WemFXNW5MaUJVVDBSUE9pQkZlSEJ2YzJVZ2NHVnVaR2x1WjFOMFlYUmxJRzl5SUdSdmJpZDBJSFZ6WlNCcGRGeHVJQ0FnS2lCa2RYSnBibWNnZEdobElHMWxjbWRsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJoY25ScFlXeFRkR0YwWlNCT1pYaDBJSEJoY25ScFlXd2djM1JoZEdVZ2RHOGdZbVVnYldWeVoyVmtJSGRwZEdnZ2MzUmhkR1V1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWlc1eGRXVjFaVk5sZEZOMFlYUmxPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJSEJoY25ScFlXeFRkR0YwWlNrZ2UxeHVJQ0FnSUhaaGNpQnBiblJsY201aGJFbHVjM1JoYm1ObElEMGdaMlYwU1c1MFpYSnVZV3hKYm5OMFlXNWpaVkpsWVdSNVJtOXlWWEJrWVhSbEtIQjFZbXhwWTBsdWMzUmhibU5sTENBbmMyVjBVM1JoZEdVbktUdGNibHh1SUNBZ0lHbG1JQ2doYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ4ZFdWMVpTQTlJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZFRkR0YwWlZGMVpYVmxJSHg4SUNocGJuUmxjbTVoYkVsdWMzUmhibU5sTGw5d1pXNWthVzVuVTNSaGRHVlJkV1YxWlNBOUlGdGRLVHRjYmlBZ0lDQnhkV1YxWlM1d2RYTm9LSEJoY25ScFlXeFRkR0YwWlNrN1hHNWNiaUFnSUNCbGJuRjFaWFZsVlhCa1lYUmxLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUnpJR0VnYzNWaWMyVjBJRzltSUhSb1pTQndjbTl3Y3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOc1lYTnpmU0J3ZFdKc2FXTkpibk4wWVc1alpTQlVhR1VnYVc1emRHRnVZMlVnZEdoaGRDQnphRzkxYkdRZ2NtVnlaVzVrWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J3WVhKMGFXRnNVSEp2Y0hNZ1UzVmljMlYwSUc5bUlIUm9aU0J1WlhoMElIQnliM0J6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZUWlhSUWNtOXdjem9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0J3WVhKMGFXRnNVSEp2Y0hNcElIdGNiaUFnSUNCMllYSWdhVzUwWlhKdVlXeEpibk4wWVc1alpTQTlJR2RsZEVsdWRHVnlibUZzU1c1emRHRnVZMlZTWldGa2VVWnZjbFZ3WkdGMFpTaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0ozTmxkRkJ5YjNCekp5azdYRzRnSUNBZ2FXWWdLQ0ZwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVJQ0FnSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1V1Wlc1eGRXVjFaVk5sZEZCeWIzQnpTVzUwWlhKdVlXd29hVzUwWlhKdVlXeEpibk4wWVc1alpTd2djR0Z5ZEdsaGJGQnliM0J6S1R0Y2JpQWdmU3hjYmx4dUlDQmxibkYxWlhWbFUyVjBVSEp2Y0hOSmJuUmxjbTVoYkRvZ1puVnVZM1JwYjI0Z0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVc0lIQmhjblJwWVd4UWNtOXdjeWtnZTF4dUlDQWdJSFpoY2lCMGIzQk1aWFpsYkZkeVlYQndaWElnUFNCcGJuUmxjbTVoYkVsdWMzUmhibU5sTGw5MGIzQk1aWFpsYkZkeVlYQndaWEk3WEc0Z0lDQWdJWFJ2Y0V4bGRtVnNWM0poY0hCbGNpQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkelpYUlFjbTl3Y3lndUxpNHBPaUJaYjNVZ1kyRnNiR1ZrSUdCelpYUlFjbTl3YzJBZ2IyNGdZU0FuSUNzZ0oyTnZiWEJ2Ym1WdWRDQjNhWFJvSUdFZ2NHRnlaVzUwTGlCVWFHbHpJR2x6SUdGdUlHRnVkR2t0Y0dGMGRHVnliaUJ6YVc1alpTQndjbTl3Y3lCM2FXeHNJQ2NnS3lBbloyVjBJSEpsWVdOMGFYWmxiSGtnZFhCa1lYUmxaQ0IzYUdWdUlISmxibVJsY21Wa0xpQkpibk4wWldGa0xDQmphR0Z1WjJVZ2RHaGxJRzkzYm1WeVhGd25jeUFuSUNzZ0oyQnlaVzVrWlhKZ0lHMWxkR2h2WkNCMGJ5QndZWE56SUhSb1pTQmpiM0p5WldOMElIWmhiSFZsSUdGeklIQnliM0J6SUhSdklIUm9aU0JqYjIxd2IyNWxiblFnSnlBcklDZDNhR1Z5WlNCcGRDQnBjeUJqY21WaGRHVmtMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJRTFsY21kbElIZHBkR2dnZEdobElIQmxibVJwYm1jZ1pXeGxiV1Z1ZENCcFppQnBkQ0JsZUdsemRITXNJRzkwYUdWeWQybHpaU0IzYVhSb0lHVjRhWE4wYVc1blhHNGdJQ0FnTHk4Z1pXeGxiV1Z1ZENCd2NtOXdjeTVjYmlBZ0lDQjJZWElnZDNKaGNFVnNaVzFsYm5RZ1BTQjBiM0JNWlhabGJGZHlZWEJ3WlhJdVgzQmxibVJwYm1kRmJHVnRaVzUwSUh4OElIUnZjRXhsZG1Wc1YzSmhjSEJsY2k1ZlkzVnljbVZ1ZEVWc1pXMWxiblE3WEc0Z0lDQWdkbUZ5SUdWc1pXMWxiblFnUFNCM2NtRndSV3hsYldWdWRDNXdjbTl3Y3p0Y2JpQWdJQ0IyWVhJZ2NISnZjSE1nUFNCaGMzTnBaMjRvZTMwc0lHVnNaVzFsYm5RdWNISnZjSE1zSUhCaGNuUnBZV3hRY205d2N5azdYRzRnSUNBZ2RHOXdUR1YyWld4WGNtRndjR1Z5TGw5d1pXNWthVzVuUld4bGJXVnVkQ0E5SUZKbFlXTjBSV3hsYldWdWRDNWpiRzl1WlVGdVpGSmxjR3hoWTJWUWNtOXdjeWgzY21Gd1JXeGxiV1Z1ZEN3Z1VtVmhZM1JGYkdWdFpXNTBMbU5zYjI1bFFXNWtVbVZ3YkdGalpWQnliM0J6S0dWc1pXMWxiblFzSUhCeWIzQnpLU2s3WEc1Y2JpQWdJQ0JsYm5GMVpYVmxWWEJrWVhSbEtIUnZjRXhsZG1Wc1YzSmhjSEJsY2lrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsY0d4aFkyVnpJR0ZzYkNCdlppQjBhR1VnY0hKdmNITXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NISnZjSE1nVG1WM0lIQnliM0J6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZTWlhCc1lXTmxVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z2NISnZjSE1wSUh0Y2JpQWdJQ0IyWVhJZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlNBOUlHZGxkRWx1ZEdWeWJtRnNTVzV6ZEdGdVkyVlNaV0ZrZVVadmNsVndaR0YwWlNod2RXSnNhV05KYm5OMFlXNWpaU3dnSjNKbGNHeGhZMlZRY205d2N5Y3BPMXh1SUNBZ0lHbG1JQ2doYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNiaUFnSUNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTG1WdWNYVmxkV1ZTWlhCc1lXTmxVSEp2Y0hOSmJuUmxjbTVoYkNocGJuUmxjbTVoYkVsdWMzUmhibU5sTENCd2NtOXdjeWs3WEc0Z0lIMHNYRzVjYmlBZ1pXNXhkV1YxWlZKbGNHeGhZMlZRY205d2MwbHVkR1Z5Ym1Gc09pQm1kVzVqZEdsdmJpQW9hVzUwWlhKdVlXeEpibk4wWVc1alpTd2djSEp2Y0hNcElIdGNiaUFnSUNCMllYSWdkRzl3VEdWMlpXeFhjbUZ3Y0dWeUlEMGdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZkRzl3VEdWMlpXeFhjbUZ3Y0dWeU8xeHVJQ0FnSUNGMGIzQk1aWFpsYkZkeVlYQndaWElnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5jbVZ3YkdGalpWQnliM0J6S0M0dUxpazZJRmx2ZFNCallXeHNaV1FnWUhKbGNHeGhZMlZRY205d2MyQWdiMjRnWVNBbklDc2dKMk52YlhCdmJtVnVkQ0IzYVhSb0lHRWdjR0Z5Wlc1MExpQlVhR2x6SUdseklHRnVJR0Z1ZEdrdGNHRjBkR1Z5YmlCemFXNWpaU0J3Y205d2N5QjNhV3hzSUNjZ0t5QW5aMlYwSUhKbFlXTjBhWFpsYkhrZ2RYQmtZWFJsWkNCM2FHVnVJSEpsYm1SbGNtVmtMaUJKYm5OMFpXRmtMQ0JqYUdGdVoyVWdkR2hsSUc5M2JtVnlYRnduY3lBbklDc2dKMkJ5Wlc1a1pYSmdJRzFsZEdodlpDQjBieUJ3WVhOeklIUm9aU0JqYjNKeVpXTjBJSFpoYkhWbElHRnpJSEJ5YjNCeklIUnZJSFJvWlNCamIyMXdiMjVsYm5RZ0p5QXJJQ2QzYUdWeVpTQnBkQ0JwY3lCamNtVmhkR1ZrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUUxbGNtZGxJSGRwZEdnZ2RHaGxJSEJsYm1ScGJtY2daV3hsYldWdWRDQnBaaUJwZENCbGVHbHpkSE1zSUc5MGFHVnlkMmx6WlNCM2FYUm9JR1Y0YVhOMGFXNW5YRzRnSUNBZ0x5OGdaV3hsYldWdWRDQndjbTl3Y3k1Y2JpQWdJQ0IyWVhJZ2QzSmhjRVZzWlcxbGJuUWdQU0IwYjNCTVpYWmxiRmR5WVhCd1pYSXVYM0JsYm1ScGJtZEZiR1Z0Wlc1MElIeDhJSFJ2Y0V4bGRtVnNWM0poY0hCbGNpNWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnZG1GeUlHVnNaVzFsYm5RZ1BTQjNjbUZ3Uld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNCMGIzQk1aWFpsYkZkeVlYQndaWEl1WDNCbGJtUnBibWRGYkdWdFpXNTBJRDBnVW1WaFkzUkZiR1Z0Wlc1MExtTnNiMjVsUVc1a1VtVndiR0ZqWlZCeWIzQnpLSGR5WVhCRmJHVnRaVzUwTENCU1pXRmpkRVZzWlcxbGJuUXVZMnh2Ym1WQmJtUlNaWEJzWVdObFVISnZjSE1vWld4bGJXVnVkQ3dnY0hKdmNITXBLVHRjYmx4dUlDQWdJR1Z1Y1hWbGRXVlZjR1JoZEdVb2RHOXdUR1YyWld4WGNtRndjR1Z5S1R0Y2JpQWdmU3hjYmx4dUlDQmxibkYxWlhWbFJXeGxiV1Z1ZEVsdWRHVnlibUZzT2lCbWRXNWpkR2x2YmlBb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlN3Z2JtVjNSV3hsYldWdWRDa2dlMXh1SUNBZ0lHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kRmJHVnRaVzUwSUQwZ2JtVjNSV3hsYldWdWREdGNiaUFnSUNCbGJuRjFaWFZsVlhCa1lYUmxLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBPMXh1SUNCOVhHNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlRzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0VXBkYXRlc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGRpcnR5Q29tcG9uZW50cyA9IFtdO1xudmFyIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbnZhciBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcblxudmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsO1xuXG5mdW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtcbiAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiAmJiBiYXRjaGluZ1N0cmF0ZWd5KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgaW5qZWN0IGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzIGFuZCBiYXRjaGluZyAnICsgJ3N0cmF0ZWd5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG52YXIgTkVTVEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IGRpcnR5Q29tcG9uZW50cy5sZW5ndGg7XG4gIH0sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoICE9PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBBZGRpdGlvbmFsIHVwZGF0ZXMgd2VyZSBlbnF1ZXVlZCBieSBjb21wb25lbnREaWRVcGRhdGUgaGFuZGxlcnMgb3JcbiAgICAgIC8vIHNpbWlsYXI7IGJlZm9yZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3cmFwcGVyIGNsb3Nlcywgd2Ugd2FudCB0byBydW5cbiAgICAgIC8vIHRoZXNlIG5ldyB1cGRhdGVzIHNvIHRoYXQgaWYgQSdzIGNvbXBvbmVudERpZFVwZGF0ZSBjYWxscyBzZXRTdGF0ZSBvblxuICAgICAgLy8gQiwgQiB3aWxsIHVwZGF0ZSBiZWZvcmUgdGhlIGNhbGxiYWNrIEEncyB1cGRhdGVyIHByb3ZpZGVkIHdoZW4gY2FsbGluZ1xuICAgICAgLy8gc2V0U3RhdGUuXG4gICAgICBkaXJ0eUNvbXBvbmVudHMuc3BsaWNlKDAsIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoKTtcbiAgICAgIGZsdXNoQmF0Y2hlZFVwZGF0ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlydHlDb21wb25lbnRzLmxlbmd0aCA9IDA7XG4gICAgfVxuICB9XG59O1xuXG52YXIgVVBEQVRFX1FVRVVFSU5HID0ge1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWxsYmFja1F1ZXVlLnJlc2V0KCk7XG4gIH0sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlmeUFsbCgpO1xuICB9XG59O1xuXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbTkVTVEVEX1VQREFURVMsIFVQREFURV9RVUVVRUlOR107XG5cbmZ1bmN0aW9uIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24oKSB7XG4gIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbiAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICB0aGlzLmNhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCAvKiBmb3JjZUhUTUwgKi9mYWxzZSk7XG59XG5cbmFzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24uTWl4aW4sIHtcbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7XG4gICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDtcbiAgfSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkge1xuICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9kLCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2FjdGlvbi5NaXhpbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBtZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTtcblxuZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgZW5zdXJlSW5qZWN0ZWQoKTtcbiAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSk7XG59XG5cbi8qKlxuICogQXJyYXkgY29tcGFyYXRvciBmb3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50IG9yZGVyaW5nLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMxIGZpcnN0IGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMiBzZWNvbmQgY29tcG9uZW50IHlvdSdyZSBjb21wYXJpbmdcbiAqIEByZXR1cm4ge251bWJlcn0gUmV0dXJuIHZhbHVlIHVzYWJsZSBieSBBcnJheS5wcm90b3R5cGUuc29ydCgpLlxuICovXG5mdW5jdGlvbiBtb3VudE9yZGVyQ29tcGFyYXRvcihjMSwgYzIpIHtcbiAgcmV0dXJuIGMxLl9tb3VudE9yZGVyIC0gYzIuX21vdW50T3JkZXI7XG59XG5cbmZ1bmN0aW9uIHJ1bkJhdGNoZWRVcGRhdGVzKHRyYW5zYWN0aW9uKSB7XG4gIHZhciBsZW4gPSB0cmFuc2FjdGlvbi5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7XG4gICEobGVuID09PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBmbHVzaCB0cmFuc2FjdGlvblxcJ3Mgc3RvcmVkIGRpcnR5LWNvbXBvbmVudHMgbGVuZ3RoICglcykgdG8gJyArICdtYXRjaCBkaXJ0eS1jb21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIC8vIFNpbmNlIHJlY29uY2lsaW5nIGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFyY2h5IHVzdWFsbHkgKG5vdFxuICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlXG4gIC8vIHRoZW0gYmVmb3JlIHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LlxuICBkaXJ0eUNvbXBvbmVudHMuc29ydChtb3VudE9yZGVyQ29tcGFyYXRvcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgcGVuZGluZyBjaGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsXG4gICAgLy8gYmUgaGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRcbiAgICAvLyB0aGF0IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5vb3AuXG4gICAgdmFyIGNvbXBvbmVudCA9IGRpcnR5Q29tcG9uZW50c1tpXTtcblxuICAgIC8vIElmIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5zIHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVzLCB3ZVxuICAgIC8vIHNob3VsZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5leHQgcmVuZGVyIGhhcHBlbnMsIHNvXG4gICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuICAgIHZhciBjYWxsYmFja3MgPSBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3M7XG4gICAgY29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblxuICAgIFJlYWN0UmVjb25jaWxlci5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkoY29tcG9uZW50LCB0cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykge1xuICAgICAgICB0cmFuc2FjdGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBmbHVzaEJhdGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkge1xuICAvLyBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21wb25lbnRzXG4gIC8vIGFycmF5IGFuZCBwZXJmb3JtIGFueSB1cGRhdGVzIGVucXVldWVkIGJ5IG1vdW50LXJlYWR5IGhhbmRsZXJzIChpLmUuLFxuICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGhlcmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoXG4gIC8vIHVwZGF0ZXMgZW5xdWV1ZWQgYnkgc2V0U3RhdGUgY2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLlxuICB3aGlsZSAoZGlydHlDb21wb25lbnRzLmxlbmd0aCB8fCBhc2FwRW5xdWV1ZWQpIHtcbiAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5nZXRQb29sZWQoKTtcbiAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0ocnVuQmF0Y2hlZFVwZGF0ZXMsIG51bGwsIHRyYW5zYWN0aW9uKTtcbiAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFzYXBFbnF1ZXVlZCkge1xuICAgICAgYXNhcEVucXVldWVkID0gZmFsc2U7XG4gICAgICB2YXIgcXVldWUgPSBhc2FwQ2FsbGJhY2tRdWV1ZTtcbiAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbiAgICAgIHF1ZXVlLm5vdGlmeUFsbCgpO1xuICAgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHF1ZXVlKTtcbiAgICB9XG4gIH1cbn07XG5mbHVzaEJhdGNoZWRVcGRhdGVzID0gUmVhY3RQZXJmLm1lYXN1cmUoJ1JlYWN0VXBkYXRlcycsICdmbHVzaEJhdGNoZWRVcGRhdGVzJywgZmx1c2hCYXRjaGVkVXBkYXRlcyk7XG5cbi8qKlxuICogTWFyayBhIGNvbXBvbmVudCBhcyBuZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBvcHRpb25hbCBjYWxsYmFjayB0byBhXG4gKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJlcmVuZGVyIG9jY3Vycy5cbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShjb21wb25lbnQpIHtcbiAgZW5zdXJlSW5qZWN0ZWQoKTtcblxuICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2FsbGVkIGJ5IGVhY2ggdG9wLWxldmVsIHVwZGF0ZVxuICAvLyBmdW5jdGlvbiwgbGlrZSBzZXRQcm9wcywgc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlvbiBhbmRcbiAgLy8gZGVzdHJ1Y3Rpb24gb2YgdG9wLWxldmVsIGNvbXBvbmVudHMgaXMgZ3VhcmRlZCBpbiBSZWFjdE1vdW50LilcblxuICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGVucXVldWVVcGRhdGUsIGNvbXBvbmVudCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGlydHlDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRocm93c1xuICogaWYgbm8gdXBkYXRlcyBhcmUgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC5cbiAqL1xuZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgY29udGV4dCkge1xuICAhYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXMuYXNhcDogQ2FuXFwndCBlbnF1ZXVlIGFuIGFzYXAgY2FsbGJhY2sgaW4gYSBjb250ZXh0IHdoZXJlJyArICd1cGRhdGVzIGFyZSBub3QgYmVpbmcgYmF0Y2hlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGFzYXBDYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpO1xuICBhc2FwRW5xdWV1ZWQgPSB0cnVlO1xufVxuXG52YXIgUmVhY3RVcGRhdGVzSW5qZWN0aW9uID0ge1xuICBpbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKFJlY29uY2lsZVRyYW5zYWN0aW9uKSB7XG4gICAgIVJlY29uY2lsZVRyYW5zYWN0aW9uID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgaW5qZWN0QmF0Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4gICAgIV9iYXRjaGluZ1N0cmF0ZWd5ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hlZFVwZGF0ZXMoKSBmdW5jdGlvbicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhbiBpc0JhdGNoaW5nVXBkYXRlcyBib29sZWFuIGF0dHJpYnV0ZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRlZ3k7XG4gIH1cbn07XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSB7XG4gIC8qKlxuICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyXG4gICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsXG5cbiAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxuICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLFxuICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0luamVjdGlvbixcbiAgYXNhcDogYXNhcFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUlZjR1JoZEdWekxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVlhCa1lYUmxjMXh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUVOaGJHeGlZV05yVVhWbGRXVWdQU0J5WlhGMWFYSmxLQ2N1TDBOaGJHeGlZV05yVVhWbGRXVW5LVHRjYm5aaGNpQlFiMjlzWldSRGJHRnpjeUE5SUhKbGNYVnBjbVVvSnk0dlVHOXZiR1ZrUTJ4aGMzTW5LVHRjYm5aaGNpQlNaV0ZqZEZCbGNtWWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVR1Z5WmljcE8xeHVkbUZ5SUZKbFlXTjBVbVZqYjI1amFXeGxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JTWldOdmJtTnBiR1Z5SnlrN1hHNTJZWElnVkhKaGJuTmhZM1JwYjI0Z1BTQnlaWEYxYVhKbEtDY3VMMVJ5WVc1ellXTjBhVzl1SnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNibHh1ZG1GeUlHUnBjblI1UTI5dGNHOXVaVzUwY3lBOUlGdGRPMXh1ZG1GeUlHRnpZWEJEWVd4c1ltRmphMUYxWlhWbElEMGdRMkZzYkdKaFkydFJkV1YxWlM1blpYUlFiMjlzWldRb0tUdGNiblpoY2lCaGMyRndSVzV4ZFdWMVpXUWdQU0JtWVd4elpUdGNibHh1ZG1GeUlHSmhkR05vYVc1blUzUnlZWFJsWjNrZ1BTQnVkV3hzTzF4dVhHNW1kVzVqZEdsdmJpQmxibk4xY21WSmJtcGxZM1JsWkNncElIdGNiaUFnSVNoU1pXRmpkRlZ3WkdGMFpYTXVVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJpQW1KaUJpWVhSamFHbHVaMU4wY21GMFpXZDVLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEZWd1pHRjBaWE02SUcxMWMzUWdhVzVxWldOMElHRWdjbVZqYjI1amFXeGxJSFJ5WVc1ellXTjBhVzl1SUdOc1lYTnpJR0Z1WkNCaVlYUmphR2x1WnlBbklDc2dKM04wY21GMFpXZDVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVmVnh1WEc1MllYSWdUa1ZUVkVWRVgxVlFSRUZVUlZNZ1BTQjdYRzRnSUdsdWFYUnBZV3hwZW1VNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjBhR2x6TG1ScGNuUjVRMjl0Y0c5dVpXNTBjMHhsYm1kMGFDQTlJR1JwY25SNVEyOXRjRzl1Wlc1MGN5NXNaVzVuZEdnN1hHNGdJSDBzWEc0Z0lHTnNiM05sT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVpHbHlkSGxEYjIxd2IyNWxiblJ6VEdWdVozUm9JQ0U5UFNCa2FYSjBlVU52YlhCdmJtVnVkSE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0F2THlCQlpHUnBkR2x2Ym1Gc0lIVndaR0YwWlhNZ2QyVnlaU0JsYm5GMVpYVmxaQ0JpZVNCamIyMXdiMjVsYm5SRWFXUlZjR1JoZEdVZ2FHRnVaR3hsY25NZ2IzSmNiaUFnSUNBZ0lDOHZJSE5wYldsc1lYSTdJR0psWm05eVpTQnZkWElnYjNkdUlGVlFSRUZVUlY5UlZVVlZSVWxPUnlCM2NtRndjR1Z5SUdOc2IzTmxjeXdnZDJVZ2QyRnVkQ0IwYnlCeWRXNWNiaUFnSUNBZ0lDOHZJSFJvWlhObElHNWxkeUIxY0dSaGRHVnpJSE52SUhSb1lYUWdhV1lnUVNkeklHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpTQmpZV3hzY3lCelpYUlRkR0YwWlNCdmJseHVJQ0FnSUNBZ0x5OGdRaXdnUWlCM2FXeHNJSFZ3WkdGMFpTQmlaV1p2Y21VZ2RHaGxJR05oYkd4aVlXTnJJRUVuY3lCMWNHUmhkR1Z5SUhCeWIzWnBaR1ZrSUhkb1pXNGdZMkZzYkdsdVoxeHVJQ0FnSUNBZ0x5OGdjMlYwVTNSaGRHVXVYRzRnSUNBZ0lDQmthWEowZVVOdmJYQnZibVZ1ZEhNdWMzQnNhV05sS0RBc0lIUm9hWE11WkdseWRIbERiMjF3YjI1bGJuUnpUR1Z1WjNSb0tUdGNiaUFnSUNBZ0lHWnNkWE5vUW1GMFkyaGxaRlZ3WkdGMFpYTW9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1pHbHlkSGxEYjIxd2IyNWxiblJ6TG14bGJtZDBhQ0E5SURBN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNTJZWElnVlZCRVFWUkZYMUZWUlZWRlNVNUhJRDBnZTF4dUlDQnBibWwwYVdGc2FYcGxPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZEdocGN5NWpZV3hzWW1GamExRjFaWFZsTG5KbGMyVjBLQ2s3WEc0Z0lIMHNYRzRnSUdOc2IzTmxPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZEdocGN5NWpZV3hzWW1GamExRjFaWFZsTG01dmRHbG1lVUZzYkNncE8xeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ1ZGSkJUbE5CUTFSSlQwNWZWMUpCVUZCRlVsTWdQU0JiVGtWVFZFVkVYMVZRUkVGVVJWTXNJRlZRUkVGVVJWOVJWVVZWUlVsT1IxMDdYRzVjYm1aMWJtTjBhVzl1SUZKbFlXTjBWWEJrWVhSbGMwWnNkWE5vVkhKaGJuTmhZM1JwYjI0b0tTQjdYRzRnSUhSb2FYTXVjbVZwYm1sMGFXRnNhWHBsVkhKaGJuTmhZM1JwYjI0b0tUdGNiaUFnZEdocGN5NWthWEowZVVOdmJYQnZibVZ1ZEhOTVpXNW5kR2dnUFNCdWRXeHNPMXh1SUNCMGFHbHpMbU5oYkd4aVlXTnJVWFZsZFdVZ1BTQkRZV3hzWW1GamExRjFaWFZsTG1kbGRGQnZiMnhsWkNncE8xeHVJQ0IwYUdsekxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVJRDBnVW1WaFkzUlZjR1JoZEdWekxsSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0dVoyVjBVRzl2YkdWa0tDQXZLaUJtYjNKalpVaFVUVXdnS2k5bVlXeHpaU2s3WEc1OVhHNWNibUZ6YzJsbmJpaFNaV0ZqZEZWd1pHRjBaWE5HYkhWemFGUnlZVzV6WVdOMGFXOXVMbkJ5YjNSdmRIbHdaU3dnVkhKaGJuTmhZM1JwYjI0dVRXbDRhVzRzSUh0Y2JpQWdaMlYwVkhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3pvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCVVVrRk9VMEZEVkVsUFRsOVhVa0ZRVUVWU1V6dGNiaUFnZlN4Y2JseHVJQ0JrWlhOMGNuVmpkRzl5T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTVrYVhKMGVVTnZiWEJ2Ym1WdWRITk1aVzVuZEdnZ1BTQnVkV3hzTzF4dUlDQWdJRU5oYkd4aVlXTnJVWFZsZFdVdWNtVnNaV0Z6WlNoMGFHbHpMbU5oYkd4aVlXTnJVWFZsZFdVcE8xeHVJQ0FnSUhSb2FYTXVZMkZzYkdKaFkydFJkV1YxWlNBOUlHNTFiR3c3WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1Z6TGxKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjR1Y21Wc1pXRnpaU2gwYUdsekxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ0lDQjBhR2x6TG5KbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dUlEMGdiblZzYkR0Y2JpQWdmU3hjYmx4dUlDQndaWEptYjNKdE9pQm1kVzVqZEdsdmJpQW9iV1YwYUc5a0xDQnpZMjl3WlN3Z1lTa2dlMXh1SUNBZ0lDOHZJRVZ6YzJWdWRHbGhiR3g1SUdOaGJHeHpJR0IwYUdsekxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVMbkJsY21admNtMG9iV1YwYUc5a0xDQnpZMjl3WlN3Z1lTbGdYRzRnSUNBZ0x5OGdkMmwwYUNCMGFHbHpJSFJ5WVc1ellXTjBhVzl1SjNNZ2QzSmhjSEJsY25NZ1lYSnZkVzVrSUdsMExseHVJQ0FnSUhKbGRIVnliaUJVY21GdWMyRmpkR2x2Ymk1TmFYaHBiaTV3WlhKbWIzSnRMbU5oYkd3b2RHaHBjeXdnZEdocGN5NXlaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiaTV3WlhKbWIzSnRMQ0IwYUdsekxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVMQ0J0WlhSb2IyUXNJSE5qYjNCbExDQmhLVHRjYmlBZ2ZWeHVmU2s3WEc1Y2JsQnZiMnhsWkVOc1lYTnpMbUZrWkZCdmIyeHBibWRVYnloU1pXRmpkRlZ3WkdGMFpYTkdiSFZ6YUZSeVlXNXpZV04wYVc5dUtUdGNibHh1Wm5WdVkzUnBiMjRnWW1GMFkyaGxaRlZ3WkdGMFpYTW9ZMkZzYkdKaFkyc3NJR0VzSUdJc0lHTXNJR1FzSUdVcElIdGNiaUFnWlc1emRYSmxTVzVxWldOMFpXUW9LVHRjYmlBZ1ltRjBZMmhwYm1kVGRISmhkR1ZuZVM1aVlYUmphR1ZrVlhCa1lYUmxjeWhqWVd4c1ltRmpheXdnWVN3Z1lpd2dZeXdnWkN3Z1pTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FYSnlZWGtnWTI5dGNHRnlZWFJ2Y2lCbWIzSWdVbVZoWTNSRGIyMXdiMjVsYm5SeklHSjVJRzF2ZFc1MElHOXlaR1Z5YVc1bkxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUdNeElHWnBjbk4wSUdOdmJYQnZibVZ1ZENCNWIzVW5jbVVnWTI5dGNHRnlhVzVuWEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCak1pQnpaV052Ym1RZ1kyOXRjRzl1Wlc1MElIbHZkU2R5WlNCamIyMXdZWEpwYm1kY2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdVbVYwZFhKdUlIWmhiSFZsSUhWellXSnNaU0JpZVNCQmNuSmhlUzV3Y205MGIzUjVjR1V1YzI5eWRDZ3BMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnRiM1Z1ZEU5eVpHVnlRMjl0Y0dGeVlYUnZjaWhqTVN3Z1l6SXBJSHRjYmlBZ2NtVjBkWEp1SUdNeExsOXRiM1Z1ZEU5eVpHVnlJQzBnWXpJdVgyMXZkVzUwVDNKa1pYSTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlISjFia0poZEdOb1pXUlZjR1JoZEdWektIUnlZVzV6WVdOMGFXOXVLU0I3WEc0Z0lIWmhjaUJzWlc0Z1BTQjBjbUZ1YzJGamRHbHZiaTVrYVhKMGVVTnZiWEJ2Ym1WdWRITk1aVzVuZEdnN1hHNGdJQ0VvYkdWdUlEMDlQU0JrYVhKMGVVTnZiWEJ2Ym1WdWRITXViR1Z1WjNSb0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmVIQmxZM1JsWkNCbWJIVnphQ0IwY21GdWMyRmpkR2x2Ymx4Y0ozTWdjM1J2Y21Wa0lHUnBjblI1TFdOdmJYQnZibVZ1ZEhNZ2JHVnVaM1JvSUNnbGN5a2dkRzhnSnlBcklDZHRZWFJqYUNCa2FYSjBlUzFqYjIxd2IyNWxiblJ6SUdGeWNtRjVJR3hsYm1kMGFDQW9KWE1wTGljc0lHeGxiaXdnWkdseWRIbERiMjF3YjI1bGJuUnpMbXhsYm1kMGFDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQzh2SUZOcGJtTmxJSEpsWTI5dVkybHNhVzVuSUdFZ1kyOXRjRzl1Wlc1MElHaHBaMmhsY2lCcGJpQjBhR1VnYjNkdVpYSWdhR2xsY21GeVkyaDVJSFZ6ZFdGc2JIa2dLRzV2ZEZ4dUlDQXZMeUJoYkhkaGVYTWdMUzBnYzJWbElITm9iM1ZzWkVOdmJYQnZibVZ1ZEZWd1pHRjBaU2dwS1NCM2FXeHNJSEpsWTI5dVkybHNaU0JqYUdsc1pISmxiaXdnY21WamIyNWphV3hsWEc0Z0lDOHZJSFJvWlcwZ1ltVm1iM0psSUhSb1pXbHlJR05vYVd4a2NtVnVJR0o1SUhOdmNuUnBibWNnZEdobElHRnljbUY1TGx4dUlDQmthWEowZVVOdmJYQnZibVZ1ZEhNdWMyOXlkQ2h0YjNWdWRFOXlaR1Z5UTI5dGNHRnlZWFJ2Y2lrN1hHNWNiaUFnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUM4dklFbG1JR0VnWTI5dGNHOXVaVzUwSUdseklIVnViVzkxYm5SbFpDQmlaV1p2Y21VZ2NHVnVaR2x1WnlCamFHRnVaMlZ6SUdGd2NHeDVMQ0JwZENCM2FXeHNJSE4wYVd4c1hHNGdJQ0FnTHk4Z1ltVWdhR1Z5WlN3Z1luVjBJSGRsSUdGemMzVnRaU0IwYUdGMElHbDBJR2hoY3lCamJHVmhjbVZrSUdsMGN5QmZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5QmhibVJjYmlBZ0lDQXZMeUIwYUdGMElIQmxjbVp2Y20xVmNHUmhkR1ZKWms1bFkyVnpjMkZ5ZVNCcGN5QmhJRzV2YjNBdVhHNGdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRDQTlJR1JwY25SNVEyOXRjRzl1Wlc1MGMxdHBYVHRjYmx4dUlDQWdJQzh2SUVsbUlIQmxjbVp2Y20xVmNHUmhkR1ZKWms1bFkyVnpjMkZ5ZVNCb1lYQndaVzV6SUhSdklHVnVjWFZsZFdVZ1lXNTVJRzVsZHlCMWNHUmhkR1Z6TENCM1pWeHVJQ0FnSUM4dklITm9iM1ZzWkc0bmRDQmxlR1ZqZFhSbElIUm9aU0JqWVd4c1ltRmphM01nZFc1MGFXd2dkR2hsSUc1bGVIUWdjbVZ1WkdWeUlHaGhjSEJsYm5Nc0lITnZYRzRnSUNBZ0x5OGdjM1JoYzJnZ2RHaGxJR05oYkd4aVlXTnJjeUJtYVhKemRGeHVJQ0FnSUhaaGNpQmpZV3hzWW1GamEzTWdQU0JqYjIxd2IyNWxiblF1WDNCbGJtUnBibWREWVd4c1ltRmphM003WEc0Z0lDQWdZMjl0Y0c5dVpXNTBMbDl3Wlc1a2FXNW5RMkZzYkdKaFkydHpJRDBnYm5Wc2JEdGNibHh1SUNBZ0lGSmxZV04wVW1WamIyNWphV3hsY2k1d1pYSm1iM0p0VlhCa1lYUmxTV1pPWldObGMzTmhjbmtvWTI5dGNHOXVaVzUwTENCMGNtRnVjMkZqZEdsdmJpNXlaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiaWs3WEc1Y2JpQWdJQ0JwWmlBb1kyRnNiR0poWTJ0ektTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnFJRDBnTURzZ2FpQThJR05oYkd4aVlXTnJjeTVzWlc1bmRHZzdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQjBjbUZ1YzJGamRHbHZiaTVqWVd4c1ltRmphMUYxWlhWbExtVnVjWFZsZFdVb1kyRnNiR0poWTJ0elcycGRMQ0JqYjIxd2IyNWxiblF1WjJWMFVIVmliR2xqU1c1emRHRnVZMlVvS1NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JuWmhjaUJtYkhWemFFSmhkR05vWldSVmNHUmhkR1Z6SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBdkx5QlNaV0ZqZEZWd1pHRjBaWE5HYkhWemFGUnlZVzV6WVdOMGFXOXVKM01nZDNKaGNIQmxjbk1nZDJsc2JDQmpiR1ZoY2lCMGFHVWdaR2x5ZEhsRGIyMXdiMjVsYm5SelhHNGdJQzh2SUdGeWNtRjVJR0Z1WkNCd1pYSm1iM0p0SUdGdWVTQjFjR1JoZEdWeklHVnVjWFZsZFdWa0lHSjVJRzF2ZFc1MExYSmxZV1I1SUdoaGJtUnNaWEp6SUNocExtVXVMRnh1SUNBdkx5QmpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVXBJR0oxZENCM1pTQnVaV1ZrSUhSdklHTm9aV05ySUdobGNtVWdkRzl2SUdsdUlHOXlaR1Z5SUhSdklHTmhkR05vWEc0Z0lDOHZJSFZ3WkdGMFpYTWdaVzV4ZFdWMVpXUWdZbmtnYzJWMFUzUmhkR1VnWTJGc2JHSmhZMnR6SUdGdVpDQmhjMkZ3SUdOaGJHeHpMbHh1SUNCM2FHbHNaU0FvWkdseWRIbERiMjF3YjI1bGJuUnpMbXhsYm1kMGFDQjhmQ0JoYzJGd1JXNXhkV1YxWldRcElIdGNiaUFnSUNCcFppQW9aR2x5ZEhsRGIyMXdiMjVsYm5SekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2RtRnlJSFJ5WVc1ellXTjBhVzl1SUQwZ1VtVmhZM1JWY0dSaGRHVnpSbXgxYzJoVWNtRnVjMkZqZEdsdmJpNW5aWFJRYjI5c1pXUW9LVHRjYmlBZ0lDQWdJSFJ5WVc1ellXTjBhVzl1TG5CbGNtWnZjbTBvY25WdVFtRjBZMmhsWkZWd1pHRjBaWE1zSUc1MWJHd3NJSFJ5WVc1ellXTjBhVzl1S1R0Y2JpQWdJQ0FnSUZKbFlXTjBWWEJrWVhSbGMwWnNkWE5vVkhKaGJuTmhZM1JwYjI0dWNtVnNaV0Z6WlNoMGNtRnVjMkZqZEdsdmJpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR0Z6WVhCRmJuRjFaWFZsWkNrZ2UxeHVJQ0FnSUNBZ1lYTmhjRVZ1Y1hWbGRXVmtJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjJZWElnY1hWbGRXVWdQU0JoYzJGd1EyRnNiR0poWTJ0UmRXVjFaVHRjYmlBZ0lDQWdJR0Z6WVhCRFlXeHNZbUZqYTFGMVpYVmxJRDBnUTJGc2JHSmhZMnRSZFdWMVpTNW5aWFJRYjI5c1pXUW9LVHRjYmlBZ0lDQWdJSEYxWlhWbExtNXZkR2xtZVVGc2JDZ3BPMXh1SUNBZ0lDQWdRMkZzYkdKaFkydFJkV1YxWlM1eVpXeGxZWE5sS0hGMVpYVmxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVtYkhWemFFSmhkR05vWldSVmNHUmhkR1Z6SUQwZ1VtVmhZM1JRWlhKbUxtMWxZWE4xY21Vb0oxSmxZV04wVlhCa1lYUmxjeWNzSUNkbWJIVnphRUpoZEdOb1pXUlZjR1JoZEdWekp5d2dabXgxYzJoQ1lYUmphR1ZrVlhCa1lYUmxjeWs3WEc1Y2JpOHFLbHh1SUNvZ1RXRnlheUJoSUdOdmJYQnZibVZ1ZENCaGN5QnVaV1ZrYVc1bklHRWdjbVZ5Wlc1a1pYSXNJR0ZrWkdsdVp5QmhiaUJ2Y0hScGIyNWhiQ0JqWVd4c1ltRmpheUIwYnlCaFhHNGdLaUJzYVhOMElHOW1JR1oxYm1OMGFXOXVjeUIzYUdsamFDQjNhV3hzSUdKbElHVjRaV04xZEdWa0lHOXVZMlVnZEdobElISmxjbVZ1WkdWeUlHOWpZM1Z5Y3k1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlc1eGRXVjFaVlZ3WkdGMFpTaGpiMjF3YjI1bGJuUXBJSHRjYmlBZ1pXNXpkWEpsU1c1cVpXTjBaV1FvS1R0Y2JseHVJQ0F2THlCV1lYSnBiM1Z6SUhCaGNuUnpJRzltSUc5MWNpQmpiMlJsSUNoemRXTm9JR0Z6SUZKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBKM05jYmlBZ0x5OGdYM0psYm1SbGNsWmhiR2xrWVhSbFpFTnZiWEJ2Ym1WdWRDa2dZWE56ZFcxbElIUm9ZWFFnWTJGc2JITWdkRzhnY21WdVpHVnlJR0Z5Wlc0bmRDQnVaWE4wWldRN1hHNGdJQzh2SUhabGNtbG1lU0IwYUdGMElIUm9ZWFFuY3lCMGFHVWdZMkZ6WlM0Z0tGUm9hWE1nYVhNZ1kyRnNiR1ZrSUdKNUlHVmhZMmdnZEc5d0xXeGxkbVZzSUhWd1pHRjBaVnh1SUNBdkx5Qm1kVzVqZEdsdmJpd2diR2xyWlNCelpYUlFjbTl3Y3l3Z2MyVjBVM1JoZEdVc0lHWnZjbU5sVlhCa1lYUmxMQ0JsZEdNdU95QmpjbVZoZEdsdmJpQmhibVJjYmlBZ0x5OGdaR1Z6ZEhKMVkzUnBiMjRnYjJZZ2RHOXdMV3hsZG1Wc0lHTnZiWEJ2Ym1WdWRITWdhWE1nWjNWaGNtUmxaQ0JwYmlCU1pXRmpkRTF2ZFc1MExpbGNibHh1SUNCcFppQW9JV0poZEdOb2FXNW5VM1J5WVhSbFoza3VhWE5DWVhSamFHbHVaMVZ3WkdGMFpYTXBJSHRjYmlBZ0lDQmlZWFJqYUdsdVoxTjBjbUYwWldkNUxtSmhkR05vWldSVmNHUmhkR1Z6S0dWdWNYVmxkV1ZWY0dSaGRHVXNJR052YlhCdmJtVnVkQ2s3WEc0Z0lDQWdjbVYwZFhKdU8xeHVJQ0I5WEc1Y2JpQWdaR2x5ZEhsRGIyMXdiMjVsYm5SekxuQjFjMmdvWTI5dGNHOXVaVzUwS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJGYm5GMVpYVmxJR0VnWTJGc2JHSmhZMnNnZEc4Z1ltVWdjblZ1SUdGMElIUm9aU0JsYm1RZ2IyWWdkR2hsSUdOMWNuSmxiblFnWW1GMFkyaHBibWNnWTNsamJHVXVJRlJvY205M2MxeHVJQ29nYVdZZ2JtOGdkWEJrWVhSbGN5QmhjbVVnWTNWeWNtVnVkR3g1SUdKbGFXNW5JSEJsY21admNtMWxaQzVjYmlBcUwxeHVablZ1WTNScGIyNGdZWE5oY0NoallXeHNZbUZqYXl3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FoWW1GMFkyaHBibWRUZEhKaGRHVm5lUzVwYzBKaGRHTm9hVzVuVlhCa1lYUmxjeUEvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEZWd1pHRjBaWE11WVhOaGNEb2dRMkZ1WEZ3bmRDQmxibkYxWlhWbElHRnVJR0Z6WVhBZ1kyRnNiR0poWTJzZ2FXNGdZU0JqYjI1MFpYaDBJSGRvWlhKbEp5QXJJQ2QxY0dSaGRHVnpJR0Z5WlNCdWIzUWdZbVZwYm1jZ1ltRjBZMmhsWkM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lHRnpZWEJEWVd4c1ltRmphMUYxWlhWbExtVnVjWFZsZFdVb1kyRnNiR0poWTJzc0lHTnZiblJsZUhRcE8xeHVJQ0JoYzJGd1JXNXhkV1YxWldRZ1BTQjBjblZsTzF4dWZWeHVYRzUyWVhJZ1VtVmhZM1JWY0dSaGRHVnpTVzVxWldOMGFXOXVJRDBnZTF4dUlDQnBibXBsWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJqb2dablZ1WTNScGIyNGdLRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1S1NCN1hHNGdJQ0FnSVZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dUlEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBWWEJrWVhSbGN6b2diWFZ6ZENCd2NtOTJhV1JsSUdFZ2NtVmpiMjVqYVd4bElIUnlZVzV6WVdOMGFXOXVJR05zWVhOekp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJRkpsWVdOMFZYQmtZWFJsY3k1U1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1SUQwZ1VtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNDdYRzRnSUgwc1hHNWNiaUFnYVc1cVpXTjBRbUYwWTJocGJtZFRkSEpoZEdWbmVUb2dablZ1WTNScGIyNGdLRjlpWVhSamFHbHVaMU4wY21GMFpXZDVLU0I3WEc0Z0lDQWdJVjlpWVhSamFHbHVaMU4wY21GMFpXZDVJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wVlhCa1lYUmxjem9nYlhWemRDQndjbTkyYVdSbElHRWdZbUYwWTJocGJtY2djM1J5WVhSbFoza25LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSVNoMGVYQmxiMllnWDJKaGRHTm9hVzVuVTNSeVlYUmxaM2t1WW1GMFkyaGxaRlZ3WkdGMFpYTWdQVDA5SUNkbWRXNWpkR2x2YmljcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBWWEJrWVhSbGN6b2diWFZ6ZENCd2NtOTJhV1JsSUdFZ1ltRjBZMmhsWkZWd1pHRjBaWE1vS1NCbWRXNWpkR2x2YmljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWhLSFI1Y0dWdlppQmZZbUYwWTJocGJtZFRkSEpoZEdWbmVTNXBjMEpoZEdOb2FXNW5WWEJrWVhSbGN5QTlQVDBnSjJKdmIyeGxZVzRuS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRGVndaR0YwWlhNNklHMTFjM1FnY0hKdmRtbGtaU0JoYmlCcGMwSmhkR05vYVc1blZYQmtZWFJsY3lCaWIyOXNaV0Z1SUdGMGRISnBZblYwWlNjcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQmlZWFJqYUdsdVoxTjBjbUYwWldkNUlEMGdYMkpoZEdOb2FXNW5VM1J5WVhSbFozazdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaWE1nUFNCN1hHNGdJQzhxS2x4dUlDQWdLaUJTWldGamRDQnlaV1psY21WdVkyVnpJR0JTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVZQ0IxYzJsdVp5QjBhR2x6SUhCeWIzQmxjblI1SUdsdUlHOXlaR1Z5WEc0Z0lDQXFJSFJ2SUdGc2JHOTNJR1JsY0dWdVpHVnVZM2tnYVc1cVpXTjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJRkpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNDZJRzUxYkd3c1hHNWNiaUFnWW1GMFkyaGxaRlZ3WkdGMFpYTTZJR0poZEdOb1pXUlZjR1JoZEdWekxGeHVJQ0JsYm5GMVpYVmxWWEJrWVhSbE9pQmxibkYxWlhWbFZYQmtZWFJsTEZ4dUlDQm1iSFZ6YUVKaGRHTm9aV1JWY0dSaGRHVnpPaUJtYkhWemFFSmhkR05vWldSVmNHUmhkR1Z6TEZ4dUlDQnBibXBsWTNScGIyNDZJRkpsWVdOMFZYQmtZWFJsYzBsdWFtVmpkR2x2Yml4Y2JpQWdZWE5oY0RvZ1lYTmhjRnh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEZWd1pHRjBaWE03SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFZlcnNpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gJzAuMTQuMCc7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTaW1wbGVFdmVudFBsdWdpblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljQ2xpcGJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcbnZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNGb2N1c0V2ZW50Jyk7XG52YXIgU3ludGhldGljS2V5Ym9hcmRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljS2V5Ym9hcmRFdmVudCcpO1xudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcbnZhciBTeW50aGV0aWNEcmFnRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0RyYWdFdmVudCcpO1xudmFyIFN5bnRoZXRpY1RvdWNoRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1RvdWNoRXZlbnQnKTtcbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIgU3ludGhldGljV2hlZWxFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljV2hlZWxFdmVudCcpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBhYm9ydDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQWJvcnQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkFib3J0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgYmx1cjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQmx1cjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQmx1ckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNhblBsYXk6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNhblBsYXk6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNhblBsYXlDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjYW5QbGF5VGhyb3VnaDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ2FuUGxheVRocm91Z2g6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNhblBsYXlUaHJvdWdoQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY2xpY2s6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNsaWNrOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25DbGlja0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNvbnRleHRNZW51OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db250ZXh0TWVudTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ29udGV4dE1lbnVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjb3B5OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db3B5OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Db3B5Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY3V0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DdXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkN1dENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRvdWJsZUNsaWNrOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Eb3VibGVDbGljazogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRG91YmxlQ2xpY2tDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ0VuZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0VuZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ0VuZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdFbnRlcjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0VudGVyOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnRW50ZXJDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnRXhpdDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0V4aXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdFeGl0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ0xlYXZlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnTGVhdmU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdMZWF2ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdPdmVyOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnT3ZlcjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ092ZXJDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdTdGFydDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ1N0YXJ0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJvcDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJvcDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJvcENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGR1cmF0aW9uQ2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EdXJhdGlvbkNoYW5nZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHVyYXRpb25DaGFuZ2VDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBlbXB0aWVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FbXB0aWVkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25FbXB0aWVkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZW5jcnlwdGVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FbmNyeXB0ZWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkVuY3J5cHRlZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGVuZGVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FbmRlZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRW5kZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBlcnJvcjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRXJyb3I6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkVycm9yQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZm9jdXM6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkZvY3VzOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Gb2N1c0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGlucHV0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25JbnB1dDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uSW5wdXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBrZXlEb3duOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25LZXlEb3duOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25LZXlEb3duQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAga2V5UHJlc3M6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbktleVByZXNzOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25LZXlQcmVzc0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGtleVVwOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25LZXlVcDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uS2V5VXBDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBsb2FkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Mb2FkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Mb2FkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbG9hZGVkRGF0YToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTG9hZGVkRGF0YTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZGVkRGF0YUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGxvYWRlZE1ldGFkYXRhOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Mb2FkZWRNZXRhZGF0YTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZGVkTWV0YWRhdGFDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBsb2FkU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkxvYWRTdGFydDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZFN0YXJ0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgLy8gTm90ZTogV2UgZG8gbm90IGFsbG93IGxpc3RlbmluZyB0byBtb3VzZU92ZXIgZXZlbnRzLiBJbnN0ZWFkLCB1c2UgdGhlXG4gIC8vIG9uTW91c2VFbnRlci9vbk1vdXNlTGVhdmUgY3JlYXRlZCBieSBgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luYC5cbiAgbW91c2VEb3duOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZURvd246IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlRG93bkNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIG1vdXNlTW92ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VNb3ZlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Nb3VzZU1vdmVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBtb3VzZU91dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VPdXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlT3V0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbW91c2VPdmVyOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZU92ZXI6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlT3ZlckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIG1vdXNlVXA6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbk1vdXNlVXA6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlVXBDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwYXN0ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUGFzdGU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblBhc3RlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcGF1c2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblBhdXNlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25QYXVzZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHBsYXk6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblBsYXk6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblBsYXlDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwbGF5aW5nOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25QbGF5aW5nOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25QbGF5aW5nQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcHJvZ3Jlc3M6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblByb2dyZXNzOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Qcm9ncmVzc0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHJhdGVDaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblJhdGVDaGFuZ2U6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblJhdGVDaGFuZ2VDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICByZXNldDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUmVzZXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblJlc2V0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc2Nyb2xsOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TY3JvbGw6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblNjcm9sbENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHNlZWtlZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU2Vla2VkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TZWVrZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzZWVraW5nOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TZWVraW5nOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TZWVraW5nQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc3RhbGxlZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU3RhbGxlZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU3RhbGxlZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHN1Ym1pdDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU3VibWl0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TdWJtaXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzdXNwZW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TdXNwZW5kOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TdXNwZW5kQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdGltZVVwZGF0ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVGltZVVwZGF0ZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVGltZVVwZGF0ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRvdWNoQ2FuY2VsOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ub3VjaENhbmNlbDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVG91Y2hDYW5jZWxDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB0b3VjaEVuZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVG91Y2hFbmQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoRW5kQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdG91Y2hNb3ZlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ub3VjaE1vdmU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoTW92ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRvdWNoU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblRvdWNoU3RhcnQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoU3RhcnRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB2b2x1bWVDaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblZvbHVtZUNoYW5nZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVm9sdW1lQ2hhbmdlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgd2FpdGluZzoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uV2FpdGluZzogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uV2FpdGluZ0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHdoZWVsOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25XaGVlbDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uV2hlZWxDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9XG59O1xuXG52YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge1xuICB0b3BBYm9ydDogZXZlbnRUeXBlcy5hYm9ydCxcbiAgdG9wQmx1cjogZXZlbnRUeXBlcy5ibHVyLFxuICB0b3BDYW5QbGF5OiBldmVudFR5cGVzLmNhblBsYXksXG4gIHRvcENhblBsYXlUaHJvdWdoOiBldmVudFR5cGVzLmNhblBsYXlUaHJvdWdoLFxuICB0b3BDbGljazogZXZlbnRUeXBlcy5jbGljayxcbiAgdG9wQ29udGV4dE1lbnU6IGV2ZW50VHlwZXMuY29udGV4dE1lbnUsXG4gIHRvcENvcHk6IGV2ZW50VHlwZXMuY29weSxcbiAgdG9wQ3V0OiBldmVudFR5cGVzLmN1dCxcbiAgdG9wRG91YmxlQ2xpY2s6IGV2ZW50VHlwZXMuZG91YmxlQ2xpY2ssXG4gIHRvcERyYWc6IGV2ZW50VHlwZXMuZHJhZyxcbiAgdG9wRHJhZ0VuZDogZXZlbnRUeXBlcy5kcmFnRW5kLFxuICB0b3BEcmFnRW50ZXI6IGV2ZW50VHlwZXMuZHJhZ0VudGVyLFxuICB0b3BEcmFnRXhpdDogZXZlbnRUeXBlcy5kcmFnRXhpdCxcbiAgdG9wRHJhZ0xlYXZlOiBldmVudFR5cGVzLmRyYWdMZWF2ZSxcbiAgdG9wRHJhZ092ZXI6IGV2ZW50VHlwZXMuZHJhZ092ZXIsXG4gIHRvcERyYWdTdGFydDogZXZlbnRUeXBlcy5kcmFnU3RhcnQsXG4gIHRvcERyb3A6IGV2ZW50VHlwZXMuZHJvcCxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6IGV2ZW50VHlwZXMuZHVyYXRpb25DaGFuZ2UsXG4gIHRvcEVtcHRpZWQ6IGV2ZW50VHlwZXMuZW1wdGllZCxcbiAgdG9wRW5jcnlwdGVkOiBldmVudFR5cGVzLmVuY3J5cHRlZCxcbiAgdG9wRW5kZWQ6IGV2ZW50VHlwZXMuZW5kZWQsXG4gIHRvcEVycm9yOiBldmVudFR5cGVzLmVycm9yLFxuICB0b3BGb2N1czogZXZlbnRUeXBlcy5mb2N1cyxcbiAgdG9wSW5wdXQ6IGV2ZW50VHlwZXMuaW5wdXQsXG4gIHRvcEtleURvd246IGV2ZW50VHlwZXMua2V5RG93bixcbiAgdG9wS2V5UHJlc3M6IGV2ZW50VHlwZXMua2V5UHJlc3MsXG4gIHRvcEtleVVwOiBldmVudFR5cGVzLmtleVVwLFxuICB0b3BMb2FkOiBldmVudFR5cGVzLmxvYWQsXG4gIHRvcExvYWRlZERhdGE6IGV2ZW50VHlwZXMubG9hZGVkRGF0YSxcbiAgdG9wTG9hZGVkTWV0YWRhdGE6IGV2ZW50VHlwZXMubG9hZGVkTWV0YWRhdGEsXG4gIHRvcExvYWRTdGFydDogZXZlbnRUeXBlcy5sb2FkU3RhcnQsXG4gIHRvcE1vdXNlRG93bjogZXZlbnRUeXBlcy5tb3VzZURvd24sXG4gIHRvcE1vdXNlTW92ZTogZXZlbnRUeXBlcy5tb3VzZU1vdmUsXG4gIHRvcE1vdXNlT3V0OiBldmVudFR5cGVzLm1vdXNlT3V0LFxuICB0b3BNb3VzZU92ZXI6IGV2ZW50VHlwZXMubW91c2VPdmVyLFxuICB0b3BNb3VzZVVwOiBldmVudFR5cGVzLm1vdXNlVXAsXG4gIHRvcFBhc3RlOiBldmVudFR5cGVzLnBhc3RlLFxuICB0b3BQYXVzZTogZXZlbnRUeXBlcy5wYXVzZSxcbiAgdG9wUGxheTogZXZlbnRUeXBlcy5wbGF5LFxuICB0b3BQbGF5aW5nOiBldmVudFR5cGVzLnBsYXlpbmcsXG4gIHRvcFByb2dyZXNzOiBldmVudFR5cGVzLnByb2dyZXNzLFxuICB0b3BSYXRlQ2hhbmdlOiBldmVudFR5cGVzLnJhdGVDaGFuZ2UsXG4gIHRvcFJlc2V0OiBldmVudFR5cGVzLnJlc2V0LFxuICB0b3BTY3JvbGw6IGV2ZW50VHlwZXMuc2Nyb2xsLFxuICB0b3BTZWVrZWQ6IGV2ZW50VHlwZXMuc2Vla2VkLFxuICB0b3BTZWVraW5nOiBldmVudFR5cGVzLnNlZWtpbmcsXG4gIHRvcFN0YWxsZWQ6IGV2ZW50VHlwZXMuc3RhbGxlZCxcbiAgdG9wU3VibWl0OiBldmVudFR5cGVzLnN1Ym1pdCxcbiAgdG9wU3VzcGVuZDogZXZlbnRUeXBlcy5zdXNwZW5kLFxuICB0b3BUaW1lVXBkYXRlOiBldmVudFR5cGVzLnRpbWVVcGRhdGUsXG4gIHRvcFRvdWNoQ2FuY2VsOiBldmVudFR5cGVzLnRvdWNoQ2FuY2VsLFxuICB0b3BUb3VjaEVuZDogZXZlbnRUeXBlcy50b3VjaEVuZCxcbiAgdG9wVG91Y2hNb3ZlOiBldmVudFR5cGVzLnRvdWNoTW92ZSxcbiAgdG9wVG91Y2hTdGFydDogZXZlbnRUeXBlcy50b3VjaFN0YXJ0LFxuICB0b3BWb2x1bWVDaGFuZ2U6IGV2ZW50VHlwZXMudm9sdW1lQ2hhbmdlLFxuICB0b3BXYWl0aW5nOiBldmVudFR5cGVzLndhaXRpbmcsXG4gIHRvcFdoZWVsOiBldmVudFR5cGVzLndoZWVsXG59O1xuXG5mb3IgKHZhciB0eXBlIGluIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZykge1xuICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdHlwZV0uZGVwZW5kZW5jaWVzID0gW3R5cGVdO1xufVxuXG52YXIgT05fQ0xJQ0tfS0VZID0ga2V5T2YoeyBvbkNsaWNrOiBudWxsIH0pO1xudmFyIG9uQ2xpY2tMaXN0ZW5lcnMgPSB7fTtcblxudmFyIFNpbXBsZUV2ZW50UGx1Z2luID0ge1xuXG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzfVxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BMZXZlbFR5cGVdO1xuICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgRXZlbnRDb25zdHJ1Y3RvcjtcbiAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEFib3J0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENhblBsYXk6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ2FuUGxheVRocm91Z2g6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHVyYXRpb25DaGFuZ2U6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRW1wdGllZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BFbmNyeXB0ZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRW5kZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRXJyb3I6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wSW5wdXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTG9hZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BMb2FkZWREYXRhOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcExvYWRlZE1ldGFkYXRhOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcExvYWRTdGFydDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQYXVzZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQbGF5OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBsYXlpbmc6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUHJvZ3Jlc3M6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUmF0ZUNoYW5nZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BSZXNldDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTZWVrZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU2Vla2luZzpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTdGFsbGVkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFN1Ym1pdDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTdXNwZW5kOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRpbWVVcGRhdGU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVm9sdW1lQ2hhbmdlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFdhaXRpbmc6XG4gICAgICAgIC8vIEhUTUwgRXZlbnRzXG4gICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvaW5kZXguaHRtbCNldmVudHMtMFxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzOlxuICAgICAgICAvLyBGaXJlRm94IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24ga2V5cyB0b28uIFRoaXMgcmVtb3Zlc1xuICAgICAgICAvLyB0aGUgdW53YW50ZWQga2V5cHJlc3MgZXZlbnRzLiBFbnRlciBpcyBob3dldmVyIGJvdGggcHJpbnRhYmxlIGFuZFxuICAgICAgICAvLyBub24tcHJpbnRhYmxlLiBPbmUgd291bGQgZXhwZWN0IFRhYiB0byBiZSBhcyB3ZWxsIChidXQgaXQgaXNuJ3QpLlxuICAgICAgICBpZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleURvd246XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5VXA6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BCbHVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRm9jdXNFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ2xpY2s6XG4gICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBhIGNsaWNrIGV2ZW50IG9uIHJpZ2h0IG1vdXNlIGNsaWNrcy4gVGhpcyByZW1vdmVzIHRoZVxuICAgICAgICAvLyB1bndhbnRlZCBjbGljayBldmVudHMuXG4gICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09IDIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbnRleHRNZW51OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERvdWJsZUNsaWNrOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93bjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU1vdmU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VPdXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VPdmVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlVXA6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNNb3VzZUV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdFbmQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ0VudGVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdFeGl0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdMZWF2ZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnT3ZlcjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnU3RhcnQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJvcDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hDYW5jZWw6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hFbmQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hNb3ZlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoU3RhcnQ6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3VjaEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTY3JvbGw6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BXaGVlbDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvcHk6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ3V0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBhc3RlOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAhRXZlbnRDb25zdHJ1Y3RvciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdTaW1wbGVFdmVudFBsdWdpbjogVW5oYW5kbGVkIGV2ZW50IHR5cGUsIGAlc2AuJywgdG9wTGV2ZWxUeXBlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRDb25zdHJ1Y3Rvci5nZXRQb29sZWQoZGlzcGF0Y2hDb25maWcsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH0sXG5cbiAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcbiAgICAvLyBNb2JpbGUgU2FmYXJpIGRvZXMgbm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNsaWNrIGV2ZW50cyBvblxuICAgIC8vIG5vbi1pbnRlcmFjdGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3RlbmVycyBkbyBub3RcbiAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrXG4gICAgLy8gbGlzdGVuZXIgb24gdGhlIHRhcmdldCBub2RlLlxuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSBPTl9DTElDS19LRVkpIHtcbiAgICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKGlkKTtcbiAgICAgIGlmICghb25DbGlja0xpc3RlbmVyc1tpZF0pIHtcbiAgICAgICAgb25DbGlja0xpc3RlbmVyc1tpZF0gPSBFdmVudExpc3RlbmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gT05fQ0xJQ0tfS0VZKSB7XG4gICAgICBvbkNsaWNrTGlzdGVuZXJzW2lkXS5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSBvbkNsaWNrTGlzdGVuZXJzW2lkXTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVMmx0Y0d4bFJYWmxiblJRYkhWbmFXNHVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JUYVcxd2JHVkZkbVZ1ZEZCc2RXZHBibHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUVWMlpXNTBRMjl1YzNSaGJuUnpJRDBnY21WeGRXbHlaU2duTGk5RmRtVnVkRU52Ym5OMFlXNTBjeWNwTzF4dWRtRnlJRVYyWlc1MFRHbHpkR1Z1WlhJZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOUZkbVZ1ZEV4cGMzUmxibVZ5SnlrN1hHNTJZWElnUlhabGJuUlFjbTl3WVdkaGRHOXljeUE5SUhKbGNYVnBjbVVvSnk0dlJYWmxiblJRY205d1lXZGhkRzl5Y3ljcE8xeHVkbUZ5SUZKbFlXTjBUVzkxYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRXOTFiblFuS1R0Y2JuWmhjaUJUZVc1MGFHVjBhV05EYkdsd1ltOWhjbVJGZG1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VTNsdWRHaGxkR2xqUTJ4cGNHSnZZWEprUlhabGJuUW5LVHRjYm5aaGNpQlRlVzUwYUdWMGFXTkZkbVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVM2x1ZEdobGRHbGpSWFpsYm5RbktUdGNiblpoY2lCVGVXNTBhR1YwYVdOR2IyTjFjMFYyWlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlUZVc1MGFHVjBhV05HYjJOMWMwVjJaVzUwSnlrN1hHNTJZWElnVTNsdWRHaGxkR2xqUzJWNVltOWhjbVJGZG1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VTNsdWRHaGxkR2xqUzJWNVltOWhjbVJGZG1WdWRDY3BPMXh1ZG1GeUlGTjViblJvWlhScFkwMXZkWE5sUlhabGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFONWJuUm9aWFJwWTAxdmRYTmxSWFpsYm5RbktUdGNiblpoY2lCVGVXNTBhR1YwYVdORWNtRm5SWFpsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMU41Ym5Sb1pYUnBZMFJ5WVdkRmRtVnVkQ2NwTzF4dWRtRnlJRk41Ym5Sb1pYUnBZMVJ2ZFdOb1JYWmxiblFnUFNCeVpYRjFhWEpsS0NjdUwxTjViblJvWlhScFkxUnZkV05vUlhabGJuUW5LVHRjYm5aaGNpQlRlVzUwYUdWMGFXTlZTVVYyWlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlUZVc1MGFHVjBhV05WU1VWMlpXNTBKeWs3WEc1MllYSWdVM2x1ZEdobGRHbGpWMmhsWld4RmRtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlUzbHVkR2hsZEdsalYyaGxaV3hGZG1WdWRDY3BPMXh1WEc1MllYSWdaVzF3ZEhsR2RXNWpkR2x2YmlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1Um5WdVkzUnBiMjRuS1R0Y2JuWmhjaUJuWlhSRmRtVnVkRU5vWVhKRGIyUmxJRDBnY21WeGRXbHlaU2duTGk5blpYUkZkbVZ1ZEVOb1lYSkRiMlJsSnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2EyVjVUMllnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5clpYbFBaaWNwTzF4dVhHNTJZWElnZEc5d1RHVjJaV3hVZVhCbGN5QTlJRVYyWlc1MFEyOXVjM1JoYm5SekxuUnZjRXhsZG1Wc1ZIbHdaWE03WEc1Y2JuWmhjaUJsZG1WdWRGUjVjR1Z6SUQwZ2UxeHVJQ0JoWW05eWREb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVFXSnZjblE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtGaWIzSjBRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1lteDFjam9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVRbXgxY2pvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVFteDFja05oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHTmhibEJzWVhrNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtOaGJsQnNZWGs2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtOaGJsQnNZWGxEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmpZVzVRYkdGNVZHaHliM1ZuYURvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UTJGdVVHeGhlVlJvY205MVoyZzZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia05oYmxCc1lYbFVhSEp2ZFdkb1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWTJ4cFkyczZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrTnNhV05yT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RGJHbGphME5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHTnZiblJsZUhSTlpXNTFPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNURiMjUwWlhoMFRXVnVkVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UTI5dWRHVjRkRTFsYm5WRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JqYjNCNU9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RGIzQjVPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVEYjNCNVEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWTNWME9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RGRYUTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia04xZEVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1J2ZFdKc1pVTnNhV05yT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFYjNWaWJHVkRiR2xqYXpvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJHOTFZbXhsUTJ4cFkydERZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa2NtRm5PaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVjbUZuT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RWNtRm5RMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1pISmhaMFZ1WkRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UkhKaFowVnVaRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UkhKaFowVnVaRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHUnlZV2RGYm5SbGNqb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJISmhaMFZ1ZEdWeU9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUVjbUZuUlc1MFpYSkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa2NtRm5SWGhwZERvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UkhKaFowVjRhWFE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZEZlR2wwUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaSEpoWjB4bFlYWmxPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVjbUZuVEdWaGRtVTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia1J5WVdkTVpXRjJaVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHUnlZV2RQZG1WeU9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RWNtRm5UM1psY2pvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJISmhaMDkyWlhKRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JrY21GblUzUmhjblE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1J5WVdkVGRHRnlkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UkhKaFoxTjBZWEowUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaSEp2Y0RvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UkhKdmNEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSSEp2Y0VOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1IxY21GMGFXOXVRMmhoYm1kbE9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RWRYSmhkR2x2YmtOb1lXNW5aVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UkhWeVlYUnBiMjVEYUdGdVoyVkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCbGJYQjBhV1ZrT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVGYlhCMGFXVmtPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVGYlhCMGFXVmtRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1pXNWpjbmx3ZEdWa09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RmJtTnllWEIwWldRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrVnVZM0o1Y0hSbFpFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdWdVpHVmtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUZibVJsWkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJXNWtaV1JEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmxjbkp2Y2pvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UlhKeWIzSTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia1Z5Y205eVEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWm05amRYTTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrWnZZM1Z6T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1R2IyTjFjME5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHbHVjSFYwT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVKYm5CMWREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVTVzV3ZFhSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JyWlhsRWIzZHVPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUxaWGxFYjNkdU9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUxaWGxFYjNkdVEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYTJWNVVISmxjM002SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia3RsZVZCeVpYTnpPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVMWlhsUWNtVnpjME5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHdGxlVlZ3T2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVMWlhsVmNEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVTMlY1VlhCRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JzYjJGa09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1TWIyRmtPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVNYjJGa1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYkc5aFpHVmtSR0YwWVRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VEc5aFpHVmtSR0YwWVRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVRHOWhaR1ZrUkdGMFlVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUd4dllXUmxaRTFsZEdGa1lYUmhPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU1iMkZrWldSTlpYUmhaR0YwWVRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVRHOWhaR1ZrVFdWMFlXUmhkR0ZEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQnNiMkZrVTNSaGNuUTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJreHZZV1JUZEdGeWREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVURzloWkZOMFlYSjBRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ0x5OGdUbTkwWlRvZ1YyVWdaRzhnYm05MElHRnNiRzkzSUd4cGMzUmxibWx1WnlCMGJ5QnRiM1Z6WlU5MlpYSWdaWFpsYm5SekxpQkpibk4wWldGa0xDQjFjMlVnZEdobFhHNGdJQzh2SUc5dVRXOTFjMlZGYm5SbGNpOXZiazF2ZFhObFRHVmhkbVVnWTNKbFlYUmxaQ0JpZVNCZ1JXNTBaWEpNWldGMlpVVjJaVzUwVUd4MVoybHVZQzVjYmlBZ2JXOTFjMlZFYjNkdU9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1TmIzVnpaVVJ2ZDI0NklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrMXZkWE5sUkc5M2JrTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUcxdmRYTmxUVzkyWlRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VFc5MWMyVk5iM1psT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TmIzVnpaVTF2ZG1WRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J0YjNWelpVOTFkRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVUVzkxYzJWUGRYUTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFQzVjBRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JXOTFjMlZQZG1WeU9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1TmIzVnpaVTkyWlhJNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrMXZkWE5sVDNabGNrTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUcxdmRYTmxWWEE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFZYQTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFZYQkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCd1lYTjBaVG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVR0Z6ZEdVNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsQmhjM1JsUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjR0YxYzJVNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxCaGRYTmxPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVRWVhWelpVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhCc1lYazZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsQnNZWGs2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxCc1lYbERZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCd2JHRjVhVzVuT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVRYkdGNWFXNW5PaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVRYkdGNWFXNW5RMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2NISnZaM0psYzNNNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxCeWIyZHlaWE56T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1UWNtOW5jbVZ6YzBOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSEpoZEdWRGFHRnVaMlU2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibEpoZEdWRGFHRnVaMlU2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxKaGRHVkRhR0Z1WjJWRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J5WlhObGREb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVVtVnpaWFE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxKbGMyVjBRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2MyTnliMnhzT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVUWTNKdmJHdzZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZibE5qY205c2JFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhObFpXdGxaRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVMlZsYTJWa09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVRaV1ZyWldSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J6WldWcmFXNW5PaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVRaV1ZyYVc1bk9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVRaV1ZyYVc1blEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYzNSaGJHeGxaRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVM1JoYkd4bFpEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVVM1JoYkd4bFpFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhOMVltMXBkRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVM1ZpYldsME9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVRkV0p0YVhSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J6ZFhOd1pXNWtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVRkWE53Wlc1a09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVRkWE53Wlc1a1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnZEdsdFpWVndaR0YwWlRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VkdsdFpWVndaR0YwWlRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVZHbHRaVlZ3WkdGMFpVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhSdmRXTm9RMkZ1WTJWc09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VWIzVmphRU5oYm1ObGJEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVWRzkxWTJoRFlXNWpaV3hEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQjBiM1ZqYUVWdVpEb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVZHOTFZMmhGYm1RNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsUnZkV05vUlc1a1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnZEc5MVkyaE5iM1psT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVVYjNWamFFMXZkbVU2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxSdmRXTm9UVzkyWlVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSFJ2ZFdOb1UzUmhjblE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibFJ2ZFdOb1UzUmhjblE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxSdmRXTm9VM1JoY25SRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0IyYjJ4MWJXVkRhR0Z1WjJVNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxadmJIVnRaVU5vWVc1blpUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVWbTlzZFcxbFEyaGhibWRsUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkMkZwZEdsdVp6b2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVYyRnBkR2x1WnpvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVYyRnBkR2x1WjBOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSGRvWldWc09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1WGFHVmxiRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VjJobFpXeERZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNTJZWElnZEc5d1RHVjJaV3hGZG1WdWRITlViMFJwYzNCaGRHTm9RMjl1Wm1sbklEMGdlMXh1SUNCMGIzQkJZbTl5ZERvZ1pYWmxiblJVZVhCbGN5NWhZbTl5ZEN4Y2JpQWdkRzl3UW14MWNqb2daWFpsYm5SVWVYQmxjeTVpYkhWeUxGeHVJQ0IwYjNCRFlXNVFiR0Y1T2lCbGRtVnVkRlI1Y0dWekxtTmhibEJzWVhrc1hHNGdJSFJ2Y0VOaGJsQnNZWGxVYUhKdmRXZG9PaUJsZG1WdWRGUjVjR1Z6TG1OaGJsQnNZWGxVYUhKdmRXZG9MRnh1SUNCMGIzQkRiR2xqYXpvZ1pYWmxiblJVZVhCbGN5NWpiR2xqYXl4Y2JpQWdkRzl3UTI5dWRHVjRkRTFsYm5VNklHVjJaVzUwVkhsd1pYTXVZMjl1ZEdWNGRFMWxiblVzWEc0Z0lIUnZjRU52Y0hrNklHVjJaVzUwVkhsd1pYTXVZMjl3ZVN4Y2JpQWdkRzl3UTNWME9pQmxkbVZ1ZEZSNWNHVnpMbU4xZEN4Y2JpQWdkRzl3Ukc5MVlteGxRMnhwWTJzNklHVjJaVzUwVkhsd1pYTXVaRzkxWW14bFEyeHBZMnNzWEc0Z0lIUnZjRVJ5WVdjNklHVjJaVzUwVkhsd1pYTXVaSEpoWnl4Y2JpQWdkRzl3UkhKaFowVnVaRG9nWlhabGJuUlVlWEJsY3k1a2NtRm5SVzVrTEZ4dUlDQjBiM0JFY21GblJXNTBaWEk2SUdWMlpXNTBWSGx3WlhNdVpISmhaMFZ1ZEdWeUxGeHVJQ0IwYjNCRWNtRm5SWGhwZERvZ1pYWmxiblJVZVhCbGN5NWtjbUZuUlhocGRDeGNiaUFnZEc5d1JISmhaMHhsWVhabE9pQmxkbVZ1ZEZSNWNHVnpMbVJ5WVdkTVpXRjJaU3hjYmlBZ2RHOXdSSEpoWjA5MlpYSTZJR1YyWlc1MFZIbHdaWE11WkhKaFowOTJaWElzWEc0Z0lIUnZjRVJ5WVdkVGRHRnlkRG9nWlhabGJuUlVlWEJsY3k1a2NtRm5VM1JoY25Rc1hHNGdJSFJ2Y0VSeWIzQTZJR1YyWlc1MFZIbHdaWE11WkhKdmNDeGNiaUFnZEc5d1JIVnlZWFJwYjI1RGFHRnVaMlU2SUdWMlpXNTBWSGx3WlhNdVpIVnlZWFJwYjI1RGFHRnVaMlVzWEc0Z0lIUnZjRVZ0Y0hScFpXUTZJR1YyWlc1MFZIbHdaWE11Wlcxd2RHbGxaQ3hjYmlBZ2RHOXdSVzVqY25sd2RHVmtPaUJsZG1WdWRGUjVjR1Z6TG1WdVkzSjVjSFJsWkN4Y2JpQWdkRzl3Ulc1a1pXUTZJR1YyWlc1MFZIbHdaWE11Wlc1a1pXUXNYRzRnSUhSdmNFVnljbTl5T2lCbGRtVnVkRlI1Y0dWekxtVnljbTl5TEZ4dUlDQjBiM0JHYjJOMWN6b2daWFpsYm5SVWVYQmxjeTVtYjJOMWN5eGNiaUFnZEc5d1NXNXdkWFE2SUdWMlpXNTBWSGx3WlhNdWFXNXdkWFFzWEc0Z0lIUnZjRXRsZVVSdmQyNDZJR1YyWlc1MFZIbHdaWE11YTJWNVJHOTNiaXhjYmlBZ2RHOXdTMlY1VUhKbGMzTTZJR1YyWlc1MFZIbHdaWE11YTJWNVVISmxjM01zWEc0Z0lIUnZjRXRsZVZWd09pQmxkbVZ1ZEZSNWNHVnpMbXRsZVZWd0xGeHVJQ0IwYjNCTWIyRmtPaUJsZG1WdWRGUjVjR1Z6TG14dllXUXNYRzRnSUhSdmNFeHZZV1JsWkVSaGRHRTZJR1YyWlc1MFZIbHdaWE11Ykc5aFpHVmtSR0YwWVN4Y2JpQWdkRzl3VEc5aFpHVmtUV1YwWVdSaGRHRTZJR1YyWlc1MFZIbHdaWE11Ykc5aFpHVmtUV1YwWVdSaGRHRXNYRzRnSUhSdmNFeHZZV1JUZEdGeWREb2daWFpsYm5SVWVYQmxjeTVzYjJGa1UzUmhjblFzWEc0Z0lIUnZjRTF2ZFhObFJHOTNiam9nWlhabGJuUlVlWEJsY3k1dGIzVnpaVVJ2ZDI0c1hHNGdJSFJ2Y0UxdmRYTmxUVzkyWlRvZ1pYWmxiblJVZVhCbGN5NXRiM1Z6WlUxdmRtVXNYRzRnSUhSdmNFMXZkWE5sVDNWME9pQmxkbVZ1ZEZSNWNHVnpMbTF2ZFhObFQzVjBMRnh1SUNCMGIzQk5iM1Z6WlU5MlpYSTZJR1YyWlc1MFZIbHdaWE11Ylc5MWMyVlBkbVZ5TEZ4dUlDQjBiM0JOYjNWelpWVndPaUJsZG1WdWRGUjVjR1Z6TG0xdmRYTmxWWEFzWEc0Z0lIUnZjRkJoYzNSbE9pQmxkbVZ1ZEZSNWNHVnpMbkJoYzNSbExGeHVJQ0IwYjNCUVlYVnpaVG9nWlhabGJuUlVlWEJsY3k1d1lYVnpaU3hjYmlBZ2RHOXdVR3hoZVRvZ1pYWmxiblJVZVhCbGN5NXdiR0Y1TEZ4dUlDQjBiM0JRYkdGNWFXNW5PaUJsZG1WdWRGUjVjR1Z6TG5Cc1lYbHBibWNzWEc0Z0lIUnZjRkJ5YjJkeVpYTnpPaUJsZG1WdWRGUjVjR1Z6TG5CeWIyZHlaWE56TEZ4dUlDQjBiM0JTWVhSbFEyaGhibWRsT2lCbGRtVnVkRlI1Y0dWekxuSmhkR1ZEYUdGdVoyVXNYRzRnSUhSdmNGSmxjMlYwT2lCbGRtVnVkRlI1Y0dWekxuSmxjMlYwTEZ4dUlDQjBiM0JUWTNKdmJHdzZJR1YyWlc1MFZIbHdaWE11YzJOeWIyeHNMRnh1SUNCMGIzQlRaV1ZyWldRNklHVjJaVzUwVkhsd1pYTXVjMlZsYTJWa0xGeHVJQ0IwYjNCVFpXVnJhVzVuT2lCbGRtVnVkRlI1Y0dWekxuTmxaV3RwYm1jc1hHNGdJSFJ2Y0ZOMFlXeHNaV1E2SUdWMlpXNTBWSGx3WlhNdWMzUmhiR3hsWkN4Y2JpQWdkRzl3VTNWaWJXbDBPaUJsZG1WdWRGUjVjR1Z6TG5OMVltMXBkQ3hjYmlBZ2RHOXdVM1Z6Y0dWdVpEb2daWFpsYm5SVWVYQmxjeTV6ZFhOd1pXNWtMRnh1SUNCMGIzQlVhVzFsVlhCa1lYUmxPaUJsZG1WdWRGUjVjR1Z6TG5ScGJXVlZjR1JoZEdVc1hHNGdJSFJ2Y0ZSdmRXTm9RMkZ1WTJWc09pQmxkbVZ1ZEZSNWNHVnpMblJ2ZFdOb1EyRnVZMlZzTEZ4dUlDQjBiM0JVYjNWamFFVnVaRG9nWlhabGJuUlVlWEJsY3k1MGIzVmphRVZ1WkN4Y2JpQWdkRzl3Vkc5MVkyaE5iM1psT2lCbGRtVnVkRlI1Y0dWekxuUnZkV05vVFc5MlpTeGNiaUFnZEc5d1ZHOTFZMmhUZEdGeWREb2daWFpsYm5SVWVYQmxjeTUwYjNWamFGTjBZWEowTEZ4dUlDQjBiM0JXYjJ4MWJXVkRhR0Z1WjJVNklHVjJaVzUwVkhsd1pYTXVkbTlzZFcxbFEyaGhibWRsTEZ4dUlDQjBiM0JYWVdsMGFXNW5PaUJsZG1WdWRGUjVjR1Z6TG5kaGFYUnBibWNzWEc0Z0lIUnZjRmRvWldWc09pQmxkbVZ1ZEZSNWNHVnpMbmRvWldWc1hHNTlPMXh1WEc1bWIzSWdLSFpoY2lCMGVYQmxJR2x1SUhSdmNFeGxkbVZzUlhabGJuUnpWRzlFYVhOd1lYUmphRU52Ym1acFp5a2dlMXh1SUNCMGIzQk1aWFpsYkVWMlpXNTBjMVJ2UkdsemNHRjBZMmhEYjI1bWFXZGJkSGx3WlYwdVpHVndaVzVrWlc1amFXVnpJRDBnVzNSNWNHVmRPMXh1ZlZ4dVhHNTJZWElnVDA1ZlEweEpRMHRmUzBWWklEMGdhMlY1VDJZb2V5QnZia05zYVdOck9pQnVkV3hzSUgwcE8xeHVkbUZ5SUc5dVEyeHBZMnRNYVhOMFpXNWxjbk1nUFNCN2ZUdGNibHh1ZG1GeUlGTnBiWEJzWlVWMlpXNTBVR3gxWjJsdUlEMGdlMXh1WEc0Z0lHVjJaVzUwVkhsd1pYTTZJR1YyWlc1MFZIbHdaWE1zWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBiM0JNWlhabGJGUjVjR1VnVW1WamIzSmtJR1p5YjIwZ1lFVjJaVzUwUTI5dWMzUmhiblJ6WUM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmRtVnVkRlJoY21kbGRIMGdkRzl3VEdWMlpXeFVZWEpuWlhRZ1ZHaGxJR3hwYzNSbGJtbHVaeUJqYjIxd2IyNWxiblFnY205dmRDQnViMlJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkRzl3VEdWMlpXeFVZWEpuWlhSSlJDQkpSQ0J2WmlCZ2RHOXdUR1YyWld4VVlYSm5aWFJnTGx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdibUYwYVhabFJYWmxiblFnVG1GMGFYWmxJR0p5YjNkelpYSWdaWFpsYm5RdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZXlwOUlFRnVJR0ZqWTNWdGRXeGhkR2x2YmlCdlppQnplVzUwYUdWMGFXTWdaWFpsYm5SekxseHVJQ0FnS2lCQWMyVmxJSHRGZG1WdWRGQnNkV2RwYmtoMVlpNWxlSFJ5WVdOMFJYWmxiblJ6ZlZ4dUlDQWdLaTljYmlBZ1pYaDBjbUZqZEVWMlpXNTBjem9nWm5WdVkzUnBiMjRnS0hSdmNFeGxkbVZzVkhsd1pTd2dkRzl3VEdWMlpXeFVZWEpuWlhRc0lIUnZjRXhsZG1Wc1ZHRnlaMlYwU1VRc0lHNWhkR2wyWlVWMlpXNTBMQ0J1WVhScGRtVkZkbVZ1ZEZSaGNtZGxkQ2tnZTF4dUlDQWdJSFpoY2lCa2FYTndZWFJqYUVOdmJtWnBaeUE5SUhSdmNFeGxkbVZzUlhabGJuUnpWRzlFYVhOd1lYUmphRU52Ym1acFoxdDBiM0JNWlhabGJGUjVjR1ZkTzF4dUlDQWdJR2xtSUNnaFpHbHpjR0YwWTJoRGIyNW1hV2NwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JpQWdJQ0IyWVhJZ1JYWmxiblJEYjI1emRISjFZM1J2Y2p0Y2JpQWdJQ0J6ZDJsMFkyZ2dLSFJ2Y0V4bGRtVnNWSGx3WlNrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRUZpYjNKME9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRU5oYmxCc1lYazZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UTJGdVVHeGhlVlJvY205MVoyZzZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UkhWeVlYUnBiMjVEYUdGdVoyVTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Ulcxd2RHbGxaRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRmJtTnllWEIwWldRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdSVzVrWldRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdSWEp5YjNJNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdTVzV3ZFhRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdURzloWkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQk1iMkZrWldSRVlYUmhPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0V4dllXUmxaRTFsZEdGa1lYUmhPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0V4dllXUlRkR0Z5ZERwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlFZWFZ6WlRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlFiR0Y1T2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGQnNZWGxwYm1jNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdVSEp2WjNKbGMzTTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VW1GMFpVTm9ZVzVuWlRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlNaWE5sZERwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlRaV1ZyWldRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdVMlZsYTJsdVp6cGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JUZEdGc2JHVmtPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZOMVltMXBkRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVGRYTndaVzVrT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGUnBiV1ZWY0dSaGRHVTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vm05c2RXMWxRMmhoYm1kbE9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRmRoYVhScGJtYzZYRzRnSUNBZ0lDQWdJQzh2SUVoVVRVd2dSWFpsYm5SelhHNGdJQ0FnSUNBZ0lDOHZJRUJ6WldVZ2FIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlZGSXZhSFJ0YkRVdmFXNWtaWGd1YUhSdGJDTmxkbVZ1ZEhNdE1GeHVJQ0FnSUNBZ0lDQkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUlEMGdVM2x1ZEdobGRHbGpSWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFdGxlVkJ5WlhOek9seHVJQ0FnSUNBZ0lDQXZMeUJHYVhKbFJtOTRJR055WldGMFpYTWdZU0JyWlhsd2NtVnpjeUJsZG1WdWRDQm1iM0lnWm5WdVkzUnBiMjRnYTJWNWN5QjBiMjh1SUZSb2FYTWdjbVZ0YjNabGMxeHVJQ0FnSUNBZ0lDQXZMeUIwYUdVZ2RXNTNZVzUwWldRZ2EyVjVjSEpsYzNNZ1pYWmxiblJ6TGlCRmJuUmxjaUJwY3lCb2IzZGxkbVZ5SUdKdmRHZ2djSEpwYm5SaFlteGxJR0Z1WkZ4dUlDQWdJQ0FnSUNBdkx5QnViMjR0Y0hKcGJuUmhZbXhsTGlCUGJtVWdkMjkxYkdRZ1pYaHdaV04wSUZSaFlpQjBieUJpWlNCaGN5QjNaV3hzSUNoaWRYUWdhWFFnYVhOdUozUXBMbHh1SUNBZ0lDQWdJQ0JwWmlBb1oyVjBSWFpsYm5SRGFHRnlRMjlrWlNodVlYUnBkbVZGZG1WdWRDa2dQVDA5SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5b2dabUZzYkhNZ2RHaHliM1ZuYUNBcUwxeHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRXRsZVVSdmQyNDZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UzJWNVZYQTZYRzRnSUNBZ0lDQWdJRVYyWlc1MFEyOXVjM1J5ZFdOMGIzSWdQU0JUZVc1MGFHVjBhV05MWlhsaWIyRnlaRVYyWlc1ME8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkNiSFZ5T2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFWnZZM1Z6T2x4dUlDQWdJQ0FnSUNCRmRtVnVkRU52Ym5OMGNuVmpkRzl5SUQwZ1UzbHVkR2hsZEdsalJtOWpkWE5GZG1WdWREdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdRMnhwWTJzNlhHNGdJQ0FnSUNBZ0lDOHZJRVpwY21WbWIzZ2dZM0psWVhSbGN5QmhJR05zYVdOcklHVjJaVzUwSUc5dUlISnBaMmgwSUcxdmRYTmxJR05zYVdOcmN5NGdWR2hwY3lCeVpXMXZkbVZ6SUhSb1pWeHVJQ0FnSUNBZ0lDQXZMeUIxYm5kaGJuUmxaQ0JqYkdsamF5QmxkbVZ1ZEhNdVhHNGdJQ0FnSUNBZ0lHbG1JQ2h1WVhScGRtVkZkbVZ1ZEM1aWRYUjBiMjRnUFQwOUlESXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdMeW9nWm1Gc2JITWdkR2h5YjNWbmFDQXFMMXh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VOdmJuUmxlSFJOWlc1MU9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVJ2ZFdKc1pVTnNhV05yT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFMXZkWE5sUkc5M2JqcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JOYjNWelpVMXZkbVU2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1RXOTFjMlZQZFhRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdUVzkxYzJWUGRtVnlPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0UxdmRYTmxWWEE2WEc0Z0lDQWdJQ0FnSUVWMlpXNTBRMjl1YzNSeWRXTjBiM0lnUFNCVGVXNTBhR1YwYVdOTmIzVnpaVVYyWlc1ME8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkVjbUZuT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFUnlZV2RGYm1RNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdSSEpoWjBWdWRHVnlPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VSeVlXZEZlR2wwT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFUnlZV2RNWldGMlpUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JFY21GblQzWmxjanBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRWNtRm5VM1JoY25RNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdSSEp2Y0RwY2JpQWdJQ0FnSUNBZ1JYWmxiblJEYjI1emRISjFZM1J2Y2lBOUlGTjViblJvWlhScFkwUnlZV2RGZG1WdWREdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoRFlXNWpaV3c2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1ZHOTFZMmhGYm1RNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoTmIzWmxPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZSdmRXTm9VM1JoY25RNlhHNGdJQ0FnSUNBZ0lFVjJaVzUwUTI5dWMzUnlkV04wYjNJZ1BTQlRlVzUwYUdWMGFXTlViM1ZqYUVWMlpXNTBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JUWTNKdmJHdzZYRzRnSUNBZ0lDQWdJRVYyWlc1MFEyOXVjM1J5ZFdOMGIzSWdQU0JUZVc1MGFHVjBhV05WU1VWMlpXNTBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JYYUdWbGJEcGNiaUFnSUNBZ0lDQWdSWFpsYm5SRGIyNXpkSEoxWTNSdmNpQTlJRk41Ym5Sb1pYUnBZMWRvWldWc1JYWmxiblE3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VOdmNIazZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UTNWME9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRkJoYzNSbE9seHVJQ0FnSUNBZ0lDQkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUlEMGdVM2x1ZEdobGRHbGpRMnhwY0dKdllYSmtSWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmlBZ0lDQWhSWFpsYm5SRGIyNXpkSEoxWTNSdmNpQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkVGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmpvZ1ZXNW9ZVzVrYkdWa0lHVjJaVzUwSUhSNWNHVXNJR0FsYzJBdUp5d2dkRzl3VEdWMlpXeFVlWEJsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RtRnlJR1YyWlc1MElEMGdSWFpsYm5SRGIyNXpkSEoxWTNSdmNpNW5aWFJRYjI5c1pXUW9aR2x6Y0dGMFkyaERiMjVtYVdjc0lIUnZjRXhsZG1Wc1ZHRnlaMlYwU1VRc0lHNWhkR2wyWlVWMlpXNTBMQ0J1WVhScGRtVkZkbVZ1ZEZSaGNtZGxkQ2s3WEc0Z0lDQWdSWFpsYm5SUWNtOXdZV2RoZEc5eWN5NWhZMk4xYlhWc1lYUmxWSGR2VUdoaGMyVkVhWE53WVhSamFHVnpLR1YyWlc1MEtUdGNiaUFnSUNCeVpYUjFjbTRnWlhabGJuUTdYRzRnSUgwc1hHNWNiaUFnWkdsa1VIVjBUR2x6ZEdWdVpYSTZJR1oxYm1OMGFXOXVJQ2hwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z2JHbHpkR1Z1WlhJcElIdGNiaUFnSUNBdkx5Qk5iMkpwYkdVZ1UyRm1ZWEpwSUdSdlpYTWdibTkwSUdacGNtVWdjSEp2Y0dWeWJIa2dZblZpWW14bElHTnNhV05ySUdWMlpXNTBjeUJ2Ymx4dUlDQWdJQzh2SUc1dmJpMXBiblJsY21GamRHbDJaU0JsYkdWdFpXNTBjeXdnZDJocFkyZ2diV1ZoYm5NZ1pHVnNaV2RoZEdWa0lHTnNhV05ySUd4cGMzUmxibVZ5Y3lCa2J5QnViM1JjYmlBZ0lDQXZMeUJtYVhKbExpQlVhR1VnZDI5eWEyRnliM1Z1WkNCbWIzSWdkR2hwY3lCaWRXY2dhVzUyYjJ4MlpYTWdZWFIwWVdOb2FXNW5JR0Z1SUdWdGNIUjVJR05zYVdOclhHNGdJQ0FnTHk4Z2JHbHpkR1Z1WlhJZ2IyNGdkR2hsSUhSaGNtZGxkQ0J1YjJSbExseHVJQ0FnSUdsbUlDaHlaV2RwYzNSeVlYUnBiMjVPWVcxbElEMDlQU0JQVGw5RFRFbERTMTlMUlZrcElIdGNiaUFnSUNBZ0lIWmhjaUJ1YjJSbElEMGdVbVZoWTNSTmIzVnVkQzVuWlhST2IyUmxLR2xrS1R0Y2JpQWdJQ0FnSUdsbUlDZ2hiMjVEYkdsamEweHBjM1JsYm1WeWMxdHBaRjBwSUh0Y2JpQWdJQ0FnSUNBZ2IyNURiR2xqYTB4cGMzUmxibVZ5YzF0cFpGMGdQU0JGZG1WdWRFeHBjM1JsYm1WeUxteHBjM1JsYmlodWIyUmxMQ0FuWTJ4cFkyc25MQ0JsYlhCMGVVWjFibU4wYVc5dUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdkMmxzYkVSbGJHVjBaVXhwYzNSbGJtVnlPaUJtZFc1amRHbHZiaUFvYVdRc0lISmxaMmx6ZEhKaGRHbHZiazVoYldVcElIdGNiaUFnSUNCcFppQW9jbVZuYVhOMGNtRjBhVzl1VG1GdFpTQTlQVDBnVDA1ZlEweEpRMHRmUzBWWktTQjdYRzRnSUNBZ0lDQnZia05zYVdOclRHbHpkR1Z1WlhKelcybGtYUzV5WlcxdmRtVW9LVHRjYmlBZ0lDQWdJR1JsYkdWMFpTQnZia05zYVdOclRHbHpkR1Z1WlhKelcybGtYVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCVGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmpzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY0V2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHR5cGU6IG51bGwsXG4gIC8vIGN1cnJlbnRUYXJnZXQgaXMgc2V0IHdoZW4gZGlzcGF0Y2hpbmc7IG5vIHVzZSBpbiBjb3B5aW5nIGl0IGhlcmVcbiAgY3VycmVudFRhcmdldDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwsXG4gIGV2ZW50UGhhc2U6IG51bGwsXG4gIGJ1YmJsZXM6IG51bGwsXG4gIGNhbmNlbGFibGU6IG51bGwsXG4gIHRpbWVTdGFtcDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICB9LFxuICBkZWZhdWx0UHJldmVudGVkOiBudWxsLFxuICBpc1RydXN0ZWQ6IG51bGxcbn07XG5cbi8qKlxuICogU3ludGhldGljIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBieSBldmVudCBwbHVnaW5zLCB0eXBpY2FsbHkgaW4gcmVzcG9uc2UgdG8gYVxuICogdG9wLWxldmVsIGV2ZW50IGRlbGVnYXRpb24gaGFuZGxlci5cbiAqXG4gKiBUaGVzZSBzeXN0ZW1zIHNob3VsZCBnZW5lcmFsbHkgdXNlIHBvb2xpbmcgdG8gcmVkdWNlIHRoZSBmcmVxdWVuY3kgb2YgZ2FyYmFnZVxuICogY29sbGVjdGlvbi4gVGhlIHN5c3RlbSBzaG91bGQgY2hlY2sgYGlzUGVyc2lzdGVudGAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlXG4gKiBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBiZWluZyBkaXNwYXRjaGVkLiBVc2VycyB0aGF0XG4gKiBuZWVkIGEgcGVyc2lzdGVkIGV2ZW50IHNob3VsZCBpbnZva2UgYHBlcnNpc3RgLlxuICpcbiAqIFN5bnRoZXRpYyBldmVudHMgKGFuZCBzdWJjbGFzc2VzKSBpbXBsZW1lbnQgdGhlIERPTSBMZXZlbCAzIEV2ZW50cyBBUEkgYnlcbiAqIG5vcm1hbGl6aW5nIGJyb3dzZXIgcXVpcmtzLiBTdWJjbGFzc2VzIGRvIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIGltcGxlbWVudCBhXG4gKiBET00gaW50ZXJmYWNlOyBjdXN0b20gYXBwbGljYXRpb24tc3BlY2lmaWMgZXZlbnRzIGNhbiBhbHNvIHN1YmNsYXNzIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICB0aGlzLmRpc3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7XG4gIHRoaXMuZGlzcGF0Y2hNYXJrZXIgPSBkaXNwYXRjaE1hcmtlcjtcbiAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuICB0aGlzLnRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcblxuICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7XG4gIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuICAgIGlmICghSW50ZXJmYWNlLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdO1xuICAgIGlmIChub3JtYWxpemUpIHtcbiAgICAgIHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXplKG5hdGl2ZUV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1twcm9wTmFtZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07XG4gICAgfVxuICB9XG5cbiAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkIDogbmF0aXZlRXZlbnQucmV0dXJuVmFsdWUgPT09IGZhbHNlO1xuICBpZiAoZGVmYXVsdFByZXZlbnRlZCkge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG4gIH1cbiAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcbn1cblxuYXNzaWduKFN5bnRoZXRpY0V2ZW50LnByb3RvdHlwZSwge1xuXG4gIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhldmVudCwgJ1RoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91XFwncmUgJyArICdzZWVpbmcgdGhpcywgeW91XFwncmUgY2FsbGluZyBgcHJldmVudERlZmF1bHRgIG9uIGEgJyArICdyZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiBUaGlzIGlzIGEgbm8tb3AuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhldmVudCwgJ1RoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91XFwncmUgJyArICdzZWVpbmcgdGhpcywgeW91XFwncmUgY2FsbGluZyBgc3RvcFByb3BhZ2F0aW9uYCBvbiBhICcgKyAncmVsZWFzZWQvbnVsbGlmaWVkIHN5bnRoZXRpYyBldmVudC4gVGhpcyBpcyBhIG5vLW9wLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXZSByZWxlYXNlIGFsbCBkaXNwYXRjaGVkIGBTeW50aGV0aWNFdmVudGBzIGFmdGVyIGVhY2ggZXZlbnQgbG9vcCwgYWRkaW5nXG4gICAqIHRoZW0gYmFjayBpbnRvIHRoZSBwb29sLiBUaGlzIGFsbG93cyBhIHdheSB0byBob2xkIG9udG8gYSByZWZlcmVuY2UgdGhhdFxuICAgKiB3b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAqL1xuICBwZXJzaXN0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGJhY2sgaW50byB0aGUgcG9vbC5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlLFxuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciBgZGVzdHJ1Y3RvcmAgb24gZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hDb25maWcgPSBudWxsO1xuICAgIHRoaXMuZGlzcGF0Y2hNYXJrZXIgPSBudWxsO1xuICAgIHRoaXMubmF0aXZlRXZlbnQgPSBudWxsO1xuICB9XG5cbn0pO1xuXG5TeW50aGV0aWNFdmVudC5JbnRlcmZhY2UgPSBFdmVudEludGVyZmFjZTtcblxuLyoqXG4gKiBIZWxwZXIgdG8gcmVkdWNlIGJvaWxlcnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xhc3Nlcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzc1xuICogQHBhcmFtIHs/b2JqZWN0fSBJbnRlcmZhY2VcbiAqL1xuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzID0gZnVuY3Rpb24gKENsYXNzLCBJbnRlcmZhY2UpIHtcbiAgdmFyIFN1cGVyID0gdGhpcztcblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICBhc3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90b3R5cGUpO1xuICBDbGFzcy5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIENsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENsYXNzO1xuXG4gIENsYXNzLkludGVyZmFjZSA9IGFzc2lnbih7fSwgU3VwZXIuSW50ZXJmYWNlLCBJbnRlcmZhY2UpO1xuICBDbGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5hdWdtZW50Q2xhc3M7XG5cbiAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xufTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlUzbHVkR2hsZEdsalJYWmxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGTjViblJvWlhScFkwVjJaVzUwWEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGQnZiMnhsWkVOc1lYTnpJRDBnY21WeGRXbHlaU2duTGk5UWIyOXNaV1JEYkdGemN5Y3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ1pXMXdkSGxHZFc1amRHbHZiaUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJWdGNIUjVSblZ1WTNScGIyNG5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc0dktpcGNiaUFxSUVCcGJuUmxjbVpoWTJVZ1JYWmxiblJjYmlBcUlFQnpaV1VnYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdlJFOU5MVXhsZG1Wc0xUTXRSWFpsYm5SekwxeHVJQ292WEc1MllYSWdSWFpsYm5SSmJuUmxjbVpoWTJVZ1BTQjdYRzRnSUhSNWNHVTZJRzUxYkd3c1hHNGdJQzh2SUdOMWNuSmxiblJVWVhKblpYUWdhWE1nYzJWMElIZG9aVzRnWkdsemNHRjBZMmhwYm1jN0lHNXZJSFZ6WlNCcGJpQmpiM0I1YVc1bklHbDBJR2hsY21WY2JpQWdZM1Z5Y21WdWRGUmhjbWRsZERvZ1pXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzA1MWJHd3NYRzRnSUdWMlpXNTBVR2hoYzJVNklHNTFiR3dzWEc0Z0lHSjFZbUpzWlhNNklHNTFiR3dzWEc0Z0lHTmhibU5sYkdGaWJHVTZJRzUxYkd3c1hHNGdJSFJwYldWVGRHRnRjRG9nWm5WdVkzUnBiMjRnS0dWMlpXNTBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHVjJaVzUwTG5ScGJXVlRkR0Z0Y0NCOGZDQkVZWFJsTG01dmR5Z3BPMXh1SUNCOUxGeHVJQ0JrWldaaGRXeDBVSEpsZG1WdWRHVmtPaUJ1ZFd4c0xGeHVJQ0JwYzFSeWRYTjBaV1E2SUc1MWJHeGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1UzbHVkR2hsZEdsaklHVjJaVzUwY3lCaGNtVWdaR2x6Y0dGMFkyaGxaQ0JpZVNCbGRtVnVkQ0J3YkhWbmFXNXpMQ0IwZVhCcFkyRnNiSGtnYVc0Z2NtVnpjRzl1YzJVZ2RHOGdZVnh1SUNvZ2RHOXdMV3hsZG1Wc0lHVjJaVzUwSUdSbGJHVm5ZWFJwYjI0Z2FHRnVaR3hsY2k1Y2JpQXFYRzRnS2lCVWFHVnpaU0J6ZVhOMFpXMXpJSE5vYjNWc1pDQm5aVzVsY21Gc2JIa2dkWE5sSUhCdmIyeHBibWNnZEc4Z2NtVmtkV05sSUhSb1pTQm1jbVZ4ZFdWdVkza2diMllnWjJGeVltRm5aVnh1SUNvZ1kyOXNiR1ZqZEdsdmJpNGdWR2hsSUhONWMzUmxiU0J6YUc5MWJHUWdZMmhsWTJzZ1lHbHpVR1Z5YzJsemRHVnVkR0FnZEc4Z1pHVjBaWEp0YVc1bElIZG9aWFJvWlhJZ2RHaGxYRzRnS2lCbGRtVnVkQ0J6YUc5MWJHUWdZbVVnY21Wc1pXRnpaV1FnYVc1MGJ5QjBhR1VnY0c5dmJDQmhablJsY2lCaVpXbHVaeUJrYVhOd1lYUmphR1ZrTGlCVmMyVnljeUIwYUdGMFhHNGdLaUJ1WldWa0lHRWdjR1Z5YzJsemRHVmtJR1YyWlc1MElITm9iM1ZzWkNCcGJuWnZhMlVnWUhCbGNuTnBjM1JnTGx4dUlDcGNiaUFxSUZONWJuUm9aWFJwWXlCbGRtVnVkSE1nS0dGdVpDQnpkV0pqYkdGemMyVnpLU0JwYlhCc1pXMWxiblFnZEdobElFUlBUU0JNWlhabGJDQXpJRVYyWlc1MGN5QkJVRWtnWW5sY2JpQXFJRzV2Y20xaGJHbDZhVzVuSUdKeWIzZHpaWElnY1hWcGNtdHpMaUJUZFdKamJHRnpjMlZ6SUdSdklHNXZkQ0J1WldObGMzTmhjbWxzZVNCb1lYWmxJSFJ2SUdsdGNHeGxiV1Z1ZENCaFhHNGdLaUJFVDAwZ2FXNTBaWEptWVdObE95QmpkWE4wYjIwZ1lYQndiR2xqWVhScGIyNHRjM0JsWTJsbWFXTWdaWFpsYm5SeklHTmhiaUJoYkhOdklITjFZbU5zWVhOeklIUm9hWE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR1JwYzNCaGRHTm9RMjl1Wm1sbklFTnZibVpwWjNWeVlYUnBiMjRnZFhObFpDQjBieUJrYVhOd1lYUmphQ0IwYUdseklHVjJaVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHUnBjM0JoZEdOb1RXRnlhMlZ5SUUxaGNtdGxjaUJwWkdWdWRHbG1lV2x1WnlCMGFHVWdaWFpsYm5RZ2RHRnlaMlYwTGx4dUlDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHNWhkR2wyWlVWMlpXNTBJRTVoZEdsMlpTQmljbTkzYzJWeUlHVjJaVzUwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJUZVc1MGFHVjBhV05GZG1WdWRDaGthWE53WVhSamFFTnZibVpwWnl3Z1pHbHpjR0YwWTJoTllYSnJaWElzSUc1aGRHbDJaVVYyWlc1MExDQnVZWFJwZG1WRmRtVnVkRlJoY21kbGRDa2dlMXh1SUNCMGFHbHpMbVJwYzNCaGRHTm9RMjl1Wm1sbklEMGdaR2x6Y0dGMFkyaERiMjVtYVdjN1hHNGdJSFJvYVhNdVpHbHpjR0YwWTJoTllYSnJaWElnUFNCa2FYTndZWFJqYUUxaGNtdGxjanRjYmlBZ2RHaHBjeTV1WVhScGRtVkZkbVZ1ZENBOUlHNWhkR2wyWlVWMlpXNTBPMXh1SUNCMGFHbHpMblJoY21kbGRDQTlJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBPMXh1SUNCMGFHbHpMbU4xY25KbGJuUlVZWEpuWlhRZ1BTQnVZWFJwZG1WRmRtVnVkRlJoY21kbGREdGNibHh1SUNCMllYSWdTVzUwWlhKbVlXTmxJRDBnZEdocGN5NWpiMjV6ZEhKMVkzUnZjaTVKYm5SbGNtWmhZMlU3WEc0Z0lHWnZjaUFvZG1GeUlIQnliM0JPWVcxbElHbHVJRWx1ZEdWeVptRmpaU2tnZTF4dUlDQWdJR2xtSUNnaFNXNTBaWEptWVdObExtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCdWIzSnRZV3hwZW1VZ1BTQkpiblJsY21aaFkyVmJjSEp2Y0U1aGJXVmRPMXh1SUNBZ0lHbG1JQ2h1YjNKdFlXeHBlbVVwSUh0Y2JpQWdJQ0FnSUhSb2FYTmJjSEp2Y0U1aGJXVmRJRDBnYm05eWJXRnNhWHBsS0c1aGRHbDJaVVYyWlc1MEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdocGMxdHdjbTl3VG1GdFpWMGdQU0J1WVhScGRtVkZkbVZ1ZEZ0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2RtRnlJR1JsWm1GMWJIUlFjbVYyWlc1MFpXUWdQU0J1WVhScGRtVkZkbVZ1ZEM1a1pXWmhkV3gwVUhKbGRtVnVkR1ZrSUNFOUlHNTFiR3dnUHlCdVlYUnBkbVZGZG1WdWRDNWtaV1poZFd4MFVISmxkbVZ1ZEdWa0lEb2dibUYwYVhabFJYWmxiblF1Y21WMGRYSnVWbUZzZFdVZ1BUMDlJR1poYkhObE8xeHVJQ0JwWmlBb1pHVm1ZWFZzZEZCeVpYWmxiblJsWkNrZ2UxeHVJQ0FnSUhSb2FYTXVhWE5FWldaaGRXeDBVSEpsZG1WdWRHVmtJRDBnWlcxd2RIbEdkVzVqZEdsdmJpNTBhR0YwVW1WMGRYSnVjMVJ5ZFdVN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2RHaHBjeTVwYzBSbFptRjFiSFJRY21WMlpXNTBaV1FnUFNCbGJYQjBlVVoxYm1OMGFXOXVMblJvWVhSU1pYUjFjbTV6Um1Gc2MyVTdYRzRnSUgxY2JpQWdkR2hwY3k1cGMxQnliM0JoWjJGMGFXOXVVM1J2Y0hCbFpDQTlJR1Z0Y0hSNVJuVnVZM1JwYjI0dWRHaGhkRkpsZEhWeWJuTkdZV3h6WlR0Y2JuMWNibHh1WVhOemFXZHVLRk41Ym5Sb1pYUnBZMFYyWlc1MExuQnliM1J2ZEhsd1pTd2dlMXh1WEc0Z0lIQnlaWFpsYm5SRVpXWmhkV3gwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTVrWldaaGRXeDBVSEpsZG1WdWRHVmtJRDBnZEhKMVpUdGNiaUFnSUNCMllYSWdaWFpsYm5RZ1BTQjBhR2x6TG01aGRHbDJaVVYyWlc1ME8xeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobGRtVnVkQ3dnSjFSb2FYTWdjM2x1ZEdobGRHbGpJR1YyWlc1MElHbHpJSEpsZFhObFpDQm1iM0lnY0dWeVptOXliV0Z1WTJVZ2NtVmhjMjl1Y3k0Z1NXWWdlVzkxWEZ3bmNtVWdKeUFySUNkelpXVnBibWNnZEdocGN5d2dlVzkxWEZ3bmNtVWdZMkZzYkdsdVp5QmdjSEpsZG1WdWRFUmxabUYxYkhSZ0lHOXVJR0VnSnlBcklDZHlaV3hsWVhObFpDOXVkV3hzYVdacFpXUWdjM2x1ZEdobGRHbGpJR1YyWlc1MExpQlVhR2x6SUdseklHRWdibTh0YjNBdUlGTmxaU0FuSUNzZ0oyaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRaWFpsYm5RdGNHOXZiR2x1WnlCbWIzSWdiVzl5WlNCcGJtWnZjbTFoZEdsdmJpNG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0NGbGRtVnVkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hsZG1WdWRDNXdjbVYyWlc1MFJHVm1ZWFZzZENrZ2UxeHVJQ0FnSUNBZ1pYWmxiblF1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1pYWmxiblF1Y21WMGRYSnVWbUZzZFdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1cGMwUmxabUYxYkhSUWNtVjJaVzUwWldRZ1BTQmxiWEIwZVVaMWJtTjBhVzl1TG5Sb1lYUlNaWFIxY201elZISjFaVHRjYmlBZ2ZTeGNibHh1SUNCemRHOXdVSEp2Y0dGbllYUnBiMjQ2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMllYSWdaWFpsYm5RZ1BTQjBhR2x6TG01aGRHbDJaVVYyWlc1ME8xeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobGRtVnVkQ3dnSjFSb2FYTWdjM2x1ZEdobGRHbGpJR1YyWlc1MElHbHpJSEpsZFhObFpDQm1iM0lnY0dWeVptOXliV0Z1WTJVZ2NtVmhjMjl1Y3k0Z1NXWWdlVzkxWEZ3bmNtVWdKeUFySUNkelpXVnBibWNnZEdocGN5d2dlVzkxWEZ3bmNtVWdZMkZzYkdsdVp5QmdjM1J2Y0ZCeWIzQmhaMkYwYVc5dVlDQnZiaUJoSUNjZ0t5QW5jbVZzWldGelpXUXZiblZzYkdsbWFXVmtJSE41Ym5Sb1pYUnBZeUJsZG1WdWRDNGdWR2hwY3lCcGN5QmhJRzV2TFc5d0xpQlRaV1VnSnlBcklDZG9kSFJ3Y3pvdkwyWmlMbTFsTDNKbFlXTjBMV1YyWlc1MExYQnZiMnhwYm1jZ1ptOXlJRzF2Y21VZ2FXNW1iM0p0WVhScGIyNHVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNnaFpYWmxiblFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWlhabGJuUXVjM1J2Y0ZCeWIzQmhaMkYwYVc5dUtTQjdYRzRnSUNBZ0lDQmxkbVZ1ZEM1emRHOXdVSEp2Y0dGbllYUnBiMjRvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdaWFpsYm5RdVkyRnVZMlZzUW5WaVlteGxJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NXBjMUJ5YjNCaFoyRjBhVzl1VTNSdmNIQmxaQ0E5SUdWdGNIUjVSblZ1WTNScGIyNHVkR2hoZEZKbGRIVnlibk5VY25WbE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJYWlNCeVpXeGxZWE5sSUdGc2JDQmthWE53WVhSamFHVmtJR0JUZVc1MGFHVjBhV05GZG1WdWRHQnpJR0ZtZEdWeUlHVmhZMmdnWlhabGJuUWdiRzl2Y0N3Z1lXUmthVzVuWEc0Z0lDQXFJSFJvWlcwZ1ltRmpheUJwYm5SdklIUm9aU0J3YjI5c0xpQlVhR2x6SUdGc2JHOTNjeUJoSUhkaGVTQjBieUJvYjJ4a0lHOXVkRzhnWVNCeVpXWmxjbVZ1WTJVZ2RHaGhkRnh1SUNBZ0tpQjNiMjRuZENCaVpTQmhaR1JsWkNCaVlXTnJJR2x1ZEc4Z2RHaGxJSEJ2YjJ3dVhHNGdJQ0FxTDF4dUlDQndaWEp6YVhOME9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdkR2hwY3k1cGMxQmxjbk5wYzNSbGJuUWdQU0JsYlhCMGVVWjFibU4wYVc5dUxuUm9ZWFJTWlhSMWNtNXpWSEoxWlR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMmhsWTJ0eklHbG1JSFJvYVhNZ1pYWmxiblFnYzJodmRXeGtJR0psSUhKbGJHVmhjMlZrSUdKaFkyc2dhVzUwYnlCMGFHVWdjRzl2YkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWSEoxWlNCcFppQjBhR2x6SUhOb2IzVnNaQ0J1YjNRZ1ltVWdjbVZzWldGelpXUXNJR1poYkhObElHOTBhR1Z5ZDJselpTNWNiaUFnSUNvdlhHNGdJR2x6VUdWeWMybHpkR1Z1ZERvZ1pXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzBaaGJITmxMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQmdVRzl2YkdWa1EyeGhjM05nSUd4dmIydHpJR1p2Y2lCZ1pHVnpkSEoxWTNSdmNtQWdiMjRnWldGamFDQnBibk4wWVc1alpTQnBkQ0J5Wld4bFlYTmxjeTVjYmlBZ0lDb3ZYRzRnSUdSbGMzUnlkV04wYjNJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjJZWElnU1c1MFpYSm1ZV05sSUQwZ2RHaHBjeTVqYjI1emRISjFZM1J2Y2k1SmJuUmxjbVpoWTJVN1hHNGdJQ0FnWm05eUlDaDJZWElnY0hKdmNFNWhiV1VnYVc0Z1NXNTBaWEptWVdObEtTQjdYRzRnSUNBZ0lDQjBhR2x6VzNCeWIzQk9ZVzFsWFNBOUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11WkdsemNHRjBZMmhEYjI1bWFXY2dQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVaR2x6Y0dGMFkyaE5ZWEpyWlhJZ1BTQnVkV3hzTzF4dUlDQWdJSFJvYVhNdWJtRjBhWFpsUlhabGJuUWdQU0J1ZFd4c08xeHVJQ0I5WEc1Y2JuMHBPMXh1WEc1VGVXNTBhR1YwYVdORmRtVnVkQzVKYm5SbGNtWmhZMlVnUFNCRmRtVnVkRWx1ZEdWeVptRmpaVHRjYmx4dUx5b3FYRzRnS2lCSVpXeHdaWElnZEc4Z2NtVmtkV05sSUdKdmFXeGxjbkJzWVhSbElIZG9aVzRnWTNKbFlYUnBibWNnYzNWaVkyeGhjM05sY3k1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCRGJHRnpjMXh1SUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCSmJuUmxjbVpoWTJWY2JpQXFMMXh1VTNsdWRHaGxkR2xqUlhabGJuUXVZWFZuYldWdWRFTnNZWE56SUQwZ1puVnVZM1JwYjI0Z0tFTnNZWE56TENCSmJuUmxjbVpoWTJVcElIdGNiaUFnZG1GeUlGTjFjR1Z5SUQwZ2RHaHBjenRjYmx4dUlDQjJZWElnY0hKdmRHOTBlWEJsSUQwZ1QySnFaV04wTG1OeVpXRjBaU2hUZFhCbGNpNXdjbTkwYjNSNWNHVXBPMXh1SUNCaGMzTnBaMjRvY0hKdmRHOTBlWEJsTENCRGJHRnpjeTV3Y205MGIzUjVjR1VwTzF4dUlDQkRiR0Z6Y3k1d2NtOTBiM1I1Y0dVZ1BTQndjbTkwYjNSNWNHVTdYRzRnSUVOc1lYTnpMbkJ5YjNSdmRIbHdaUzVqYjI1emRISjFZM1J2Y2lBOUlFTnNZWE56TzF4dVhHNGdJRU5zWVhOekxrbHVkR1Z5Wm1GalpTQTlJR0Z6YzJsbmJpaDdmU3dnVTNWd1pYSXVTVzUwWlhKbVlXTmxMQ0JKYm5SbGNtWmhZMlVwTzF4dUlDQkRiR0Z6Y3k1aGRXZHRaVzUwUTJ4aGMzTWdQU0JUZFhCbGNpNWhkV2R0Wlc1MFEyeGhjM003WEc1Y2JpQWdVRzl2YkdWa1EyeGhjM011WVdSa1VHOXZiR2x1WjFSdktFTnNZWE56TENCUWIyOXNaV1JEYkdGemN5NW1iM1Z5UVhKbmRXMWxiblJRYjI5c1pYSXBPMXh1ZlR0Y2JseHVVRzl2YkdWa1EyeGhjM011WVdSa1VHOXZiR2x1WjFSdktGTjViblJvWlhScFkwVjJaVzUwTENCUWIyOXNaV1JEYkdGemN5NW1iM1Z5UVhKbmRXMWxiblJRYjI5c1pYSXBPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZONWJuUm9aWFJwWTBWMlpXNTBPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgVHJhbnNhY3Rpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3ggdGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXRcbiAqIGNlcnRhaW4gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2QgaXMgaW52b2tlZFxuICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyXG4gKiBpbnN0YW50aWF0ZXMgYSB0cmFuc2FjdGlvbiBjYW4gcHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXRcbiAqIGNyZWF0aW9uIHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25gIGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRkaXRpb25hbFxuICogYXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICogc2hvdWxkIG5vdCBiZSBydW4gd2hpbGUgaXQgaXMgYWxyZWFkeSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRlIGFcbiAqIHNpbmdsZSBpbnN0YW5jZSBvZiBhIGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRpbWVzLCB0aGF0IHBvdGVudGlhbGx5XG4gKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLVxuICogdGhleSBvbmx5IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3byBtZXRob2RzLlxuICpcbiAqIDxwcmU+XG4gKiAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRpbWUpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgK1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rXG4gKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAgICAgICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFwcGVyMSAgIHwtLS18LS0tLSsgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICstLS0tLS0tLS0tLS0tLS0rICAgdiAgICB8ICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICB8ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAgICAgdiAgICAgICAgICAgICAgICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXJcbiAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGludmFyaWFudHNcbiAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWRcbiAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwtLS18LS0+fGFueU1ldGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+XG4gKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfFxuICogICAgICAgICAgICAgICAgICAgIHwgIGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiA8L3ByZT5cbiAqXG4gKiBVc2UgY2FzZXM6XG4gKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiByYW5nZXMgYmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0aW9uLlxuICogICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gKiAtIERlYWN0aXZhdGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGluZyBibHVycy9mb2N1c2VzLFxuICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUgZXZlbnQgc3lzdGVtIGlzIHJlYWN0aXZhdGVkLlxuICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxlY3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhXG4gKiAgIHJlY29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC5cbiAqIC0gSW52b2tpbmcgYW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgYWZ0ZXIgcmVuZGVyaW5nIG5ld1xuICogICBjb250ZW50LlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3JhcHBpbmcgcGFydGljdWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVlXG4gKiAgIHRvIHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBET00pLlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5kIGFmdGVyIERPTSB1cGRhdGVzLlxuICpcbiAqIFRyYW5zYWN0aW9uYWwgcGx1Z2luIEFQSTpcbiAqIC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVybnMgYW55IHByZWNvbXB1dGF0aW9uLlxuICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0aGF0IGFjY2VwdHMgdGhlIHByZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWRcbiAqICAgd2hlbiB0aGUgd3JhcHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxlZC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFwcGVyIFdyYXBwZXIgbW9kdWxlc1xuICogdGhhdCBpbXBsZW1lbnQgYGluaXRpYWxpemVgIGFuZCBgY2xvc2VgLlxuICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2UgaW4gdGhyZWFkLlxuICpcbiAqIEBjbGFzcyBUcmFuc2FjdGlvblxuICovXG52YXIgTWl4aW4gPSB7XG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoaXMgaW5zdGFuY2Ugc28gdGhhdCBpdCBpcyBwcmVwYXJlZCBmb3IgY29sbGVjdGluZyBtZXRyaWNzLiBEb2VzXG4gICAqIHNvIHN1Y2ggdGhhdCB0aGlzIHNldHVwIG1ldGhvZCBtYXkgYmUgdXNlZCBvbiBhbiBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHlcbiAgICogaW5pdGlhbGl6ZWQsIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgY29uc3VtZSBhZGRpdGlvbmFsIG1lbW9yeSB1cG9uIHJldXNlLlxuICAgKiBUaGF0IGNhbiBiZSB1c2VmdWwgaWYgeW91IGRlY2lkZSB0byBtYWtlIHlvdXIgc3ViY2xhc3Mgb2YgdGhpcyBtaXhpbiBhXG4gICAqIFwiUG9vbGVkQ2xhc3NcIi5cbiAgICovXG4gIHJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7XG4gICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhKSB7XG4gICAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndyYXBwZXJJbml0RGF0YSA9IFtdO1xuICAgIH1cbiAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgfSxcblxuICBfaXNJblRyYW5zYWN0aW9uOiBmYWxzZSxcblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqIEByZXR1cm4ge0FycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj59IEFycmF5IG9mIHRyYW5zYWN0aW9uIHdyYXBwZXJzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogbnVsbCxcblxuICBpc0luVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9pc0luVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbFxuICAgKiBtZXRob2RzIHRoYXQgcmVzdWx0IGluIGxhcmdlIGFtb3VudHMgb2YgY29tcHV0YXRpb24vbXV0YXRpb25zIHRoYXQgd291bGRcbiAgICogbmVlZCB0byBiZSBzYWZldHkgY2hlY2tlZC4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBoZWxwcyBwcmV2ZW50IHRoZSBuZWVkXG4gICAqIHRvIGJpbmQgaW4gbWFueSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBzY29wZSB0byBjYWxsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20uXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBiIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBlIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4geyp9IFJldHVybiB2YWx1ZSBmcm9tIGBtZXRob2RgLlxuICAgKi9cbiAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJhbnNhY3Rpb24ucGVyZm9ybSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0aW9uIHdoZW4gdGhlcmUgJyArICdpcyBhbHJlYWR5IGFuIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9uLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgZXJyb3JUaHJvd247XG4gICAgdmFyIHJldDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gdHJ1ZTtcbiAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGhcbiAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmdcbiAgICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zXG4gICAgICAvLyBvbmUgb2YgdGhlc2UgY2FsbHMgdGhyZXcuXG4gICAgICBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0aGlzLmluaXRpYWxpemVBbGwoMCk7XG4gICAgICByZXQgPSBtZXRob2QuY2FsbChzY29wZSwgYSwgYiwgYywgZCwgZSwgZik7XG4gICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAvLyBJZiBgbWV0aG9kYCB0aHJvd3MsIHByZWZlciB0byBzaG93IHRoYXQgc3RhY2sgdHJhY2Ugb3ZlciBhbnkgdGhyb3duXG4gICAgICAgICAgLy8gYnkgaW52b2tpbmcgYGNsb3NlQWxsYC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbCgwKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2luY2UgYG1ldGhvZGAgZGlkbid0IHRocm93LCB3ZSBkb24ndCB3YW50IHRvIHNpbGVuY2UgdGhlIGV4Y2VwdGlvblxuICAgICAgICAgIC8vIGhlcmUuXG4gICAgICAgICAgdGhpcy5jbG9zZUFsbCgwKTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgpIHtcbiAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycztcbiAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGggdGhlXG4gICAgICAgIC8vIE9CU0VSVkVEX0VSUk9SIHN0YXRlIGJlZm9yZSBvdmVyd3JpdGluZyBpdCB3aXRoIHRoZSByZWFsIHJldHVybiB2YWx1ZVxuICAgICAgICAvLyBvZiBpbml0aWFsaXplIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIE9CU0VSVkVEX0VSUk9SIGluIHRoZSBmaW5hbGx5XG4gICAgICAgIC8vIGJsb2NrLCBpdCBtZWFucyB3cmFwcGVyLmluaXRpYWxpemUgdGhyZXcuXG4gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gVHJhbnNhY3Rpb24uT0JTRVJWRURfRVJST1I7XG4gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gd3JhcHBlci5pbml0aWFsaXplID8gd3JhcHBlci5pbml0aWFsaXplLmNhbGwodGhpcykgOiBudWxsO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhW2ldID09PSBUcmFuc2FjdGlvbi5PQlNFUlZFRF9FUlJPUikge1xuICAgICAgICAgIC8vIFRoZSBpbml0aWFsaXplciBmb3Igd3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBpbml0aWFsaXplIHRoZVxuICAgICAgICAgIC8vIHJlbWFpbmluZyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlXG4gICAgICAgICAgLy8gdGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbChpICsgMSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGVhY2ggb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5jbG9zZVtpXWAgZnVuY3Rpb25zLCBwYXNzaW5nIGludG9cbiAgICogdGhlbSB0aGUgcmVzcGVjdGl2ZSByZXR1cm4gdmFsdWVzIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuaW5pdFtpXWBcbiAgICogKGBjbG9zZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlhbGl6ZXJzIHRoYXQgZmFpbGVkIHdpbGwgbm90IGJlXG4gICAqIGludm9rZWQpLlxuICAgKi9cbiAgY2xvc2VBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG4gICAgIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJhbnNhY3Rpb24uY2xvc2VBbGwoKTogQ2Fubm90IGNsb3NlIHRyYW5zYWN0aW9uIHdoZW4gbm9uZSBhcmUgb3Blbi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB2YXIgaW5pdERhdGEgPSB0aGlzLndyYXBwZXJJbml0RGF0YVtpXTtcbiAgICAgIHZhciBlcnJvclRocm93bjtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGhcbiAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuICAgICAgICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LlxuICAgICAgICBlcnJvclRocm93biA9IHRydWU7XG4gICAgICAgIGlmIChpbml0RGF0YSAhPT0gVHJhbnNhY3Rpb24uT0JTRVJWRURfRVJST1IgJiYgd3JhcHBlci5jbG9zZSkge1xuICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIFRoZSBjbG9zZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZ1xuICAgICAgICAgIC8vIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmUgdGhhdCB0aGVcbiAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbChpICsgMSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICB9XG59O1xuXG52YXIgVHJhbnNhY3Rpb24gPSB7XG5cbiAgTWl4aW46IE1peGluLFxuXG4gIC8qKlxuICAgKiBUb2tlbiB0byBsb29rIGZvciB0byBkZXRlcm1pbmUgaWYgYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAqL1xuICBPQlNFUlZFRF9FUlJPUjoge31cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZWSEpoYm5OaFkzUnBiMjR1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGUnlZVzV6WVdOMGFXOXVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nWUZSeVlXNXpZV04wYVc5dVlDQmpjbVZoZEdWeklHRWdZbXhoWTJzZ1ltOTRJSFJvWVhRZ2FYTWdZV0pzWlNCMGJ5QjNjbUZ3SUdGdWVTQnRaWFJvYjJRZ2MzVmphQ0IwYUdGMFhHNGdLaUJqWlhKMFlXbHVJR2x1ZG1GeWFXRnVkSE1nWVhKbElHMWhhVzUwWVdsdVpXUWdZbVZtYjNKbElHRnVaQ0JoWm5SbGNpQjBhR1VnYldWMGFHOWtJR2x6SUdsdWRtOXJaV1JjYmlBcUlDaEZkbVZ1SUdsbUlHRnVJR1Y0WTJWd2RHbHZiaUJwY3lCMGFISnZkMjRnZDJocGJHVWdhVzUyYjJ0cGJtY2dkR2hsSUhkeVlYQndaV1FnYldWMGFHOWtLUzRnVjJodlpYWmxjbHh1SUNvZ2FXNXpkR0Z1ZEdsaGRHVnpJR0VnZEhKaGJuTmhZM1JwYjI0Z1kyRnVJSEJ5YjNacFpHVWdaVzVtYjNKalpYSnpJRzltSUhSb1pTQnBiblpoY21saGJuUnpJR0YwWEc0Z0tpQmpjbVZoZEdsdmJpQjBhVzFsTGlCVWFHVWdZRlJ5WVc1ellXTjBhVzl1WUNCamJHRnpjeUJwZEhObGJHWWdkMmxzYkNCemRYQndiSGtnYjI1bElHRmtaR2wwYVc5dVlXeGNiaUFxSUdGMWRHOXRZWFJwWXlCcGJuWmhjbWxoYm5RZ1ptOXlJSGx2ZFNBdElIUm9aU0JwYm5aaGNtbGhiblFnZEdoaGRDQmhibmtnZEhKaGJuTmhZM1JwYjI0Z2FXNXpkR0Z1WTJWY2JpQXFJSE5vYjNWc1pDQnViM1FnWW1VZ2NuVnVJSGRvYVd4bElHbDBJR2x6SUdGc2NtVmhaSGtnWW1WcGJtY2djblZ1TGlCWmIzVWdkMjkxYkdRZ2RIbHdhV05oYkd4NUlHTnlaV0YwWlNCaFhHNGdLaUJ6YVc1bmJHVWdhVzV6ZEdGdVkyVWdiMllnWVNCZ1ZISmhibk5oWTNScGIyNWdJR1p2Y2lCeVpYVnpaU0J0ZFd4MGFYQnNaU0IwYVcxbGN5d2dkR2hoZENCd2IzUmxiblJwWVd4c2VWeHVJQ29nYVhNZ2RYTmxaQ0IwYnlCM2NtRndJSE5sZG1WeVlXd2daR2xtWm1WeVpXNTBJRzFsZEdodlpITXVJRmR5WVhCd1pYSnpJR0Z5WlNCbGVIUnlaVzFsYkhrZ2MybHRjR3hsSUMxY2JpQXFJSFJvWlhrZ2IyNXNlU0J5WlhGMWFYSmxJR2x0Y0d4bGJXVnVkR2x1WnlCMGQyOGdiV1YwYUc5a2N5NWNiaUFxWEc0Z0tpQThjSEpsUGx4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhkeVlYQndaWEp6SUNocGJtcGxZM1JsWkNCaGRDQmpjbVZoZEdsdmJpQjBhVzFsS1Z4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ3NnSUNBZ0lDQWdJQ3RjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0FnSUNBZ0lDQjhYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0t5MHRMUzB0TFMwdExTMHRMUzB0TFMwdGZDMHRMUzB0TFMwdGZDMHRMUzB0TFMwdExTMHRMUzB0SzF4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFlnSUNBZ0lDQWdJSHdnSUNBZ0lDQWdJQ0FnSUNBZ0lIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElDQWdJQ0FnS3kwdExTMHRMUzB0TFMwdExTMHRMU3NnSUNCOElDQWdJQ0FnSUNBZ0lDQWdJQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FnSUNzdExYd2dJQ0FnZDNKaGNIQmxjakVnSUNCOExTMHRmQzB0TFMwcklDQWdJQ0FnSUNBZ2ZGeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0lDQjhJQ0FyTFMwdExTMHRMUzB0TFMwdExTMHRLeUFnSUhZZ0lDQWdmQ0FnSUNBZ0lDQWdJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0FnZkNBZ0lDQWdJQ0FnSUNBckxTMHRMUzB0TFMwdExTMHRMU3NnSUh3Z0lDQWdJQ0FnSUNCOFhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBZ0lId2dJQ0FnSUNzdExTMHRmQ0FnSUhkeVlYQndaWEl5SUNCOExTMHRMUzB0TFMwcklDQWdmRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dJQ0I4SUNBZ0lDQjhJQ0FnSUNzdExTMHRMUzB0TFMwdExTMHRLeUFnZkNBZ0lDQWdmQ0FnSUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNBZ2ZDQWdJQ0FnZkNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dJQ0FnSUh3Z0lDQjhYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDQWdJSFlnSUNBZ0lIWWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IySUNBZ0lDQjJJQ0FnZkNCM2NtRndjR1Z5WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FyTFMwdEt5QXJMUzB0S3lBZ0lDc3RMUzB0TFMwdExTMHJJQ0FnS3kwdExTc2dLeTB0TFNzZ2ZDQnBiblpoY21saGJuUnpYRzRnS2lCd1pYSm1iM0p0S0dGdWVVMWxkR2h2WkNrZ2ZDQjhJQ0FnZkNCOElDQWdmQ0FnSUh3Z0lDQWdJQ0FnSUNCOElDQWdmQ0FnSUh3Z2ZDQWdJSHdnZkNCdFlXbHVkR0ZwYm1Wa1hHNGdLaUFyTFMwdExTMHRMUzB0TFMwdExTMHRMUzArZkMxOExTMHRmQzE4TFMwdGZDMHRQbnhoYm5sTlpYUm9iMlI4TFMwdGZDMHRMWHd0ZkMwdExYd3RmQzB0TFMwdExTMHRQbHh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dmQ0FnSUh3Z2ZDQWdJSHdnSUNCOElDQWdJQ0FnSUNBZ2ZDQWdJSHdnSUNCOElId2dJQ0I4SUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUh3Z0lDQjhJSHdnSUNCOElDQWdmQ0FnSUNBZ0lDQWdJSHdnSUNCOElDQWdmQ0I4SUNBZ2ZDQjhYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDQjhJQ0FnZkNCOElDQWdmQ0FnSUh3Z0lDQWdJQ0FnSUNCOElDQWdmQ0FnSUh3Z2ZDQWdJSHdnZkZ4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnS3kwdExTc2dLeTB0TFNzZ0lDQXJMUzB0TFMwdExTMHRLeUFnSUNzdExTMHJJQ3N0TFMwcklIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElDQnBibWwwYVdGc2FYcGxJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYkc5elpTQWdJQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdEsxeHVJQ29nUEM5d2NtVStYRzRnS2x4dUlDb2dWWE5sSUdOaGMyVnpPbHh1SUNvZ0xTQlFjbVZ6WlhKMmFXNW5JSFJvWlNCcGJuQjFkQ0J6Wld4bFkzUnBiMjRnY21GdVoyVnpJR0psWm05eVpTOWhablJsY2lCeVpXTnZibU5wYkdsaGRHbHZiaTVjYmlBcUlDQWdVbVZ6ZEc5eWFXNW5JSE5sYkdWamRHbHZiaUJsZG1WdUlHbHVJSFJvWlNCbGRtVnVkQ0J2WmlCaGJpQjFibVY0Y0dWamRHVmtJR1Z5Y205eUxseHVJQ29nTFNCRVpXRmpkR2wyWVhScGJtY2daWFpsYm5SeklIZG9hV3hsSUhKbFlYSnlZVzVuYVc1bklIUm9aU0JFVDAwc0lIQnlaWFpsYm5ScGJtY2dZbXgxY25NdlptOWpkWE5sY3l4Y2JpQXFJQ0FnZDJocGJHVWdaM1ZoY21GdWRHVmxhVzVuSUhSb1lYUWdZV1owWlhKM1lYSmtjeXdnZEdobElHVjJaVzUwSUhONWMzUmxiU0JwY3lCeVpXRmpkR2wyWVhSbFpDNWNiaUFxSUMwZ1JteDFjMmhwYm1jZ1lTQnhkV1YxWlNCdlppQmpiMnhzWldOMFpXUWdSRTlOSUcxMWRHRjBhVzl1Y3lCMGJ5QjBhR1VnYldGcGJpQlZTU0IwYUhKbFlXUWdZV1owWlhJZ1lWeHVJQ29nSUNCeVpXTnZibU5wYkdsaGRHbHZiaUIwWVd0bGN5QndiR0ZqWlNCcGJpQmhJSGR2Y210bGNpQjBhSEpsWVdRdVhHNGdLaUF0SUVsdWRtOXJhVzVuSUdGdWVTQmpiMnhzWldOMFpXUWdZR052YlhCdmJtVnVkRVJwWkZWd1pHRjBaV0FnWTJGc2JHSmhZMnR6SUdGbWRHVnlJSEpsYm1SbGNtbHVaeUJ1WlhkY2JpQXFJQ0FnWTI5dWRHVnVkQzVjYmlBcUlDMGdLRVoxZEhWeVpTQjFjMlVnWTJGelpTazZJRmR5WVhCd2FXNW5JSEJoY25ScFkzVnNZWElnWm14MWMyaGxjeUJ2WmlCMGFHVWdZRkpsWVdOMFYyOXlhMlZ5WUNCeGRXVjFaVnh1SUNvZ0lDQjBieUJ3Y21WelpYSjJaU0IwYUdVZ1lITmpjbTlzYkZSdmNHQWdLR0Z1SUdGMWRHOXRZWFJwWXlCelkzSnZiR3dnWVhkaGNtVWdSRTlOS1M1Y2JpQXFJQzBnS0VaMWRIVnlaU0IxYzJVZ1kyRnpaU2s2SUV4aGVXOTFkQ0JqWVd4amRXeGhkR2x2Ym5NZ1ltVm1iM0psSUdGdVpDQmhablJsY2lCRVQwMGdkWEJrWVhSbGN5NWNiaUFxWEc0Z0tpQlVjbUZ1YzJGamRHbHZibUZzSUhCc2RXZHBiaUJCVUVrNlhHNGdLaUF0SUVFZ2JXOWtkV3hsSUhSb1lYUWdhR0Z6SUdGdUlHQnBibWwwYVdGc2FYcGxZQ0J0WlhSb2IyUWdkR2hoZENCeVpYUjFjbTV6SUdGdWVTQndjbVZqYjIxd2RYUmhkR2x2Ymk1Y2JpQXFJQzBnWVc1a0lHRWdZR05zYjNObFlDQnRaWFJvYjJRZ2RHaGhkQ0JoWTJObGNIUnpJSFJvWlNCd2NtVmpiMjF3ZFhSaGRHbHZiaTRnWUdOc2IzTmxZQ0JwY3lCcGJuWnZhMlZrWEc0Z0tpQWdJSGRvWlc0Z2RHaGxJSGR5WVhCd1pXUWdjSEp2WTJWemN5QnBjeUJqYjIxd2JHVjBaV1FzSUc5eUlHaGhjeUJtWVdsc1pXUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdEJjbkpoZVR4VWNtRnVjMkZqZEdsdmJtRnNWM0poY0hCbGNqNTlJSFJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjaUJYY21Gd2NHVnlJRzF2WkhWc1pYTmNiaUFxSUhSb1lYUWdhVzF3YkdWdFpXNTBJR0JwYm1sMGFXRnNhWHBsWUNCaGJtUWdZR05zYjNObFlDNWNiaUFxSUVCeVpYUjFjbTRnZTFSeVlXNXpZV04wYVc5dWZTQlRhVzVuYkdVZ2RISmhibk5oWTNScGIyNGdabTl5SUhKbGRYTmxJR2x1SUhSb2NtVmhaQzVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdWSEpoYm5OaFkzUnBiMjVjYmlBcUwxeHVkbUZ5SUUxcGVHbHVJRDBnZTF4dUlDQXZLaXBjYmlBZ0lDb2dVMlYwY3lCMWNDQjBhR2x6SUdsdWMzUmhibU5sSUhOdklIUm9ZWFFnYVhRZ2FYTWdjSEpsY0dGeVpXUWdabTl5SUdOdmJHeGxZM1JwYm1jZ2JXVjBjbWxqY3k0Z1JHOWxjMXh1SUNBZ0tpQnpieUJ6ZFdOb0lIUm9ZWFFnZEdocGN5QnpaWFIxY0NCdFpYUm9iMlFnYldGNUlHSmxJSFZ6WldRZ2IyNGdZVzRnYVc1emRHRnVZMlVnZEdoaGRDQnBjeUJoYkhKbFlXUjVYRzRnSUNBcUlHbHVhWFJwWVd4cGVtVmtMQ0JwYmlCaElIZGhlU0IwYUdGMElHUnZaWE1nYm05MElHTnZibk4xYldVZ1lXUmthWFJwYjI1aGJDQnRaVzF2Y25rZ2RYQnZiaUJ5WlhWelpTNWNiaUFnSUNvZ1ZHaGhkQ0JqWVc0Z1ltVWdkWE5sWm5Wc0lHbG1JSGx2ZFNCa1pXTnBaR1VnZEc4Z2JXRnJaU0I1YjNWeUlITjFZbU5zWVhOeklHOW1JSFJvYVhNZ2JXbDRhVzRnWVZ4dUlDQWdLaUJjSWxCdmIyeGxaRU5zWVhOelhDSXVYRzRnSUNBcUwxeHVJQ0J5WldsdWFYUnBZV3hwZW1WVWNtRnVjMkZqZEdsdmJqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFJvYVhNdWRISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWN5QTlJSFJvYVhNdVoyVjBWSEpoYm5OaFkzUnBiMjVYY21Gd2NHVnljeWdwTzF4dUlDQWdJR2xtSUNoMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1M2NtRndjR1Z5U1c1cGRFUmhkR0V1YkdWdVozUm9JRDBnTUR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1M2NtRndjR1Z5U1c1cGRFUmhkR0VnUFNCYlhUdGNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NWZhWE5KYmxSeVlXNXpZV04wYVc5dUlEMGdabUZzYzJVN1hHNGdJSDBzWEc1Y2JpQWdYMmx6U1c1VWNtRnVjMkZqZEdsdmJqb2dabUZzYzJVc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCaFluTjBjbUZqZEZ4dUlDQWdLaUJBY21WMGRYSnVJSHRCY25KaGVUeFVjbUZ1YzJGamRHbHZibGR5WVhCd1pYSStmU0JCY25KaGVTQnZaaUIwY21GdWMyRmpkR2x2YmlCM2NtRndjR1Z5Y3k1Y2JpQWdJQ292WEc0Z0lHZGxkRlJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk02SUc1MWJHd3NYRzVjYmlBZ2FYTkpibFJ5WVc1ellXTjBhVzl1T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUNFaGRHaHBjeTVmYVhOSmJsUnlZVzV6WVdOMGFXOXVPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmVHVmpkWFJsY3lCMGFHVWdablZ1WTNScGIyNGdkMmwwYUdsdUlHRWdjMkZtWlhSNUlIZHBibVJ2ZHk0Z1ZYTmxJSFJvYVhNZ1ptOXlJSFJvWlNCMGIzQWdiR1YyWld4Y2JpQWdJQ29nYldWMGFHOWtjeUIwYUdGMElISmxjM1ZzZENCcGJpQnNZWEpuWlNCaGJXOTFiblJ6SUc5bUlHTnZiWEIxZEdGMGFXOXVMMjExZEdGMGFXOXVjeUIwYUdGMElIZHZkV3hrWEc0Z0lDQXFJRzVsWldRZ2RHOGdZbVVnYzJGbVpYUjVJR05vWldOclpXUXVJRlJvWlNCdmNIUnBiMjVoYkNCaGNtZDFiV1Z1ZEhNZ2FHVnNjSE1nY0hKbGRtVnVkQ0IwYUdVZ2JtVmxaRnh1SUNBZ0tpQjBieUJpYVc1a0lHbHVJRzFoYm5rZ1kyRnpaWE11WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlHMWxkR2h2WkNCTlpXMWlaWElnYjJZZ2MyTnZjR1VnZEc4Z1kyRnNiQzVjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlITmpiM0JsSUZOamIzQmxJSFJ2SUdsdWRtOXJaU0JtY205dExseHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkRDg5ZlNCaElFRnlaM1Z0Wlc1MElIUnZJSEJoYzNNZ2RHOGdkR2hsSUcxbGRHaHZaQzVjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNRL1BYMGdZaUJCY21kMWJXVnVkQ0IwYnlCd1lYTnpJSFJ2SUhSb1pTQnRaWFJvYjJRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBQejE5SUdNZ1FYSm5kVzFsYm5RZ2RHOGdjR0Z6Y3lCMGJ5QjBhR1VnYldWMGFHOWtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEQ4OWZTQmtJRUZ5WjNWdFpXNTBJSFJ2SUhCaGMzTWdkRzhnZEdobElHMWxkR2h2WkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUS9QWDBnWlNCQmNtZDFiV1Z1ZENCMGJ5QndZWE56SUhSdklIUm9aU0J0WlhSb2IyUXVYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wUHoxOUlHWWdRWEpuZFcxbGJuUWdkRzhnY0dGemN5QjBieUIwYUdVZ2JXVjBhRzlrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIc3FmU0JTWlhSMWNtNGdkbUZzZFdVZ1puSnZiU0JnYldWMGFHOWtZQzVjYmlBZ0lDb3ZYRzRnSUhCbGNtWnZjbTA2SUdaMWJtTjBhVzl1SUNodFpYUm9iMlFzSUhOamIzQmxMQ0JoTENCaUxDQmpMQ0JrTENCbExDQm1LU0I3WEc0Z0lDQWdJU0YwYUdsekxtbHpTVzVVY21GdWMyRmpkR2x2YmlncElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFSeVlXNXpZV04wYVc5dUxuQmxjbVp2Y20wb0xpNHVLVG9nUTJGdWJtOTBJR2x1YVhScFlXeHBlbVVnWVNCMGNtRnVjMkZqZEdsdmJpQjNhR1Z1SUhSb1pYSmxJQ2NnS3lBbmFYTWdZV3h5WldGa2VTQmhiaUJ2ZFhSemRHRnVaR2x1WnlCMGNtRnVjMkZqZEdsdmJpNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZG1GeUlHVnljbTl5VkdoeWIzZHVPMXh1SUNBZ0lIWmhjaUJ5WlhRN1hHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lIUm9hWE11WDJselNXNVVjbUZ1YzJGamRHbHZiaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQXZMeUJEWVhSamFHbHVaeUJsY25KdmNuTWdiV0ZyWlhNZ1pHVmlkV2RuYVc1bklHMXZjbVVnWkdsbVptbGpkV3gwTENCemJ5QjNaU0J6ZEdGeWRDQjNhWFJvWEc0Z0lDQWdJQ0F2THlCbGNuSnZjbFJvY205M2JpQnpaWFFnZEc4Z2RISjFaU0JpWldadmNtVWdjMlYwZEdsdVp5QnBkQ0IwYnlCbVlXeHpaU0JoWm5SbGNpQmpZV3hzYVc1blhHNGdJQ0FnSUNBdkx5QmpiRzl6WlNBdExTQnBaaUJwZENkeklITjBhV3hzSUhObGRDQjBieUIwY25WbElHbHVJSFJvWlNCbWFXNWhiR3g1SUdKc2IyTnJMQ0JwZENCdFpXRnVjMXh1SUNBZ0lDQWdMeThnYjI1bElHOW1JSFJvWlhObElHTmhiR3h6SUhSb2NtVjNMbHh1SUNBZ0lDQWdaWEp5YjNKVWFISnZkMjRnUFNCMGNuVmxPMXh1SUNBZ0lDQWdkR2hwY3k1cGJtbDBhV0ZzYVhwbFFXeHNLREFwTzF4dUlDQWdJQ0FnY21WMElEMGdiV1YwYUc5a0xtTmhiR3dvYzJOdmNHVXNJR0VzSUdJc0lHTXNJR1FzSUdVc0lHWXBPMXh1SUNBZ0lDQWdaWEp5YjNKVWFISnZkMjRnUFNCbVlXeHpaVHRjYmlBZ0lDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1Z5Y205eVZHaHliM2R1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnU1dZZ1lHMWxkR2h2WkdBZ2RHaHliM2R6TENCd2NtVm1aWElnZEc4Z2MyaHZkeUIwYUdGMElITjBZV05ySUhSeVlXTmxJRzkyWlhJZ1lXNTVJSFJvY205M2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUdKNUlHbHVkbTlyYVc1bklHQmpiRzl6WlVGc2JHQXVYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZMnh2YzJWQmJHd29NQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pYSnlLU0I3ZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRk5wYm1ObElHQnRaWFJvYjJSZ0lHUnBaRzRuZENCMGFISnZkeXdnZDJVZ1pHOXVKM1FnZDJGdWRDQjBieUJ6YVd4bGJtTmxJSFJvWlNCbGVHTmxjSFJwYjI1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJvWlhKbExseHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVkyeHZjMlZCYkd3b01DazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMmx6U1c1VWNtRnVjMkZqZEdsdmJpQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQjlMRnh1WEc0Z0lHbHVhWFJwWVd4cGVtVkJiR3c2SUdaMWJtTjBhVzl1SUNoemRHRnlkRWx1WkdWNEtTQjdYRzRnSUNBZ2RtRnlJSFJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk1nUFNCMGFHbHpMblJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk03WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SUhOMFlYSjBTVzVrWlhnN0lHa2dQQ0IwY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnZDNKaGNIQmxjaUE5SUhSeVlXNXpZV04wYVc5dVYzSmhjSEJsY25OYmFWMDdYRzRnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBdkx5QkRZWFJqYUdsdVp5Qmxjbkp2Y25NZ2JXRnJaWE1nWkdWaWRXZG5hVzVuSUcxdmNtVWdaR2xtWm1samRXeDBMQ0J6YnlCM1pTQnpkR0Z5ZENCM2FYUm9JSFJvWlZ4dUlDQWdJQ0FnSUNBdkx5QlBRbE5GVWxaRlJGOUZVbEpQVWlCemRHRjBaU0JpWldadmNtVWdiM1psY25keWFYUnBibWNnYVhRZ2QybDBhQ0IwYUdVZ2NtVmhiQ0J5WlhSMWNtNGdkbUZzZFdWY2JpQWdJQ0FnSUNBZ0x5OGdiMllnYVc1cGRHbGhiR2w2WlNBdExTQnBaaUJwZENkeklITjBhV3hzSUhObGRDQjBieUJQUWxORlVsWkZSRjlGVWxKUFVpQnBiaUIwYUdVZ1ptbHVZV3hzZVZ4dUlDQWdJQ0FnSUNBdkx5QmliRzlqYXl3Z2FYUWdiV1ZoYm5NZ2QzSmhjSEJsY2k1cGJtbDBhV0ZzYVhwbElIUm9jbVYzTGx4dUlDQWdJQ0FnSUNCMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlWdHBYU0E5SUZSeVlXNXpZV04wYVc5dUxrOUNVMFZTVmtWRVgwVlNVazlTTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlWdHBYU0E5SUhkeVlYQndaWEl1YVc1cGRHbGhiR2w2WlNBL0lIZHlZWEJ3WlhJdWFXNXBkR2xoYkdsNlpTNWpZV3hzS0hSb2FYTXBJRG9nYm5Wc2JEdGNiaUFnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlWdHBYU0E5UFQwZ1ZISmhibk5oWTNScGIyNHVUMEpUUlZKV1JVUmZSVkpTVDFJcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCVWFHVWdhVzVwZEdsaGJHbDZaWElnWm05eUlIZHlZWEJ3WlhJZ2FTQjBhSEpsZHlCaGJpQmxjbkp2Y2pzZ2FXNXBkR2xoYkdsNlpTQjBhR1ZjYmlBZ0lDQWdJQ0FnSUNBdkx5QnlaVzFoYVc1cGJtY2dkM0poY0hCbGNuTWdZblYwSUhOcGJHVnVZMlVnWVc1NUlHVjRZMlZ3ZEdsdmJuTWdabkp2YlNCMGFHVnRJSFJ2SUdWdWMzVnlaVnh1SUNBZ0lDQWdJQ0FnSUM4dklIUm9ZWFFnZEdobElHWnBjbk4wSUdWeWNtOXlJR2x6SUhSb1pTQnZibVVnZEc4Z1luVmlZbXhsSUhWd0xseHVJQ0FnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtbHVhWFJwWVd4cGVtVkJiR3dvYVNBcklERXBPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dWeWNpa2dlMzFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNTJiMnRsY3lCbFlXTm9JRzltSUdCMGFHbHpMblJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk11WTJ4dmMyVmJhVjFnSUdaMWJtTjBhVzl1Y3l3Z2NHRnpjMmx1WnlCcGJuUnZYRzRnSUNBcUlIUm9aVzBnZEdobElISmxjM0JsWTNScGRtVWdjbVYwZFhKdUlIWmhiSFZsY3lCdlppQmdkR2hwY3k1MGNtRnVjMkZqZEdsdmJsZHlZWEJ3WlhKekxtbHVhWFJiYVYxZ1hHNGdJQ0FxSUNoZ1kyeHZjMlZnY25NZ2RHaGhkQ0JqYjNKeVpYTndiMjVrSUhSdklHbHVhWFJwWVd4cGVtVnljeUIwYUdGMElHWmhhV3hsWkNCM2FXeHNJRzV2ZENCaVpWeHVJQ0FnS2lCcGJuWnZhMlZrS1M1Y2JpQWdJQ292WEc0Z0lHTnNiM05sUVd4c09pQm1kVzVqZEdsdmJpQW9jM1JoY25SSmJtUmxlQ2tnZTF4dUlDQWdJQ0YwYUdsekxtbHpTVzVVY21GdWMyRmpkR2x2YmlncElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFSeVlXNXpZV04wYVc5dUxtTnNiM05sUVd4c0tDazZJRU5oYm01dmRDQmpiRzl6WlNCMGNtRnVjMkZqZEdsdmJpQjNhR1Z1SUc1dmJtVWdZWEpsSUc5d1pXNHVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhaaGNpQjBjbUZ1YzJGamRHbHZibGR5WVhCd1pYSnpJRDBnZEdocGN5NTBjbUZ1YzJGamRHbHZibGR5WVhCd1pYSnpPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0J6ZEdGeWRFbHVaR1Y0T3lCcElEd2dkSEpoYm5OaFkzUnBiMjVYY21Gd2NHVnljeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJSGR5WVhCd1pYSWdQU0IwY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6VzJsZE8xeHVJQ0FnSUNBZ2RtRnlJR2x1YVhSRVlYUmhJRDBnZEdocGN5NTNjbUZ3Y0dWeVNXNXBkRVJoZEdGYmFWMDdYRzRnSUNBZ0lDQjJZWElnWlhKeWIzSlVhSEp2ZDI0N1hHNGdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0F2THlCRFlYUmphR2x1WnlCbGNuSnZjbk1nYldGclpYTWdaR1ZpZFdkbmFXNW5JRzF2Y21VZ1pHbG1abWxqZFd4MExDQnpieUIzWlNCemRHRnlkQ0IzYVhSb1hHNGdJQ0FnSUNBZ0lDOHZJR1Z5Y205eVZHaHliM2R1SUhObGRDQjBieUIwY25WbElHSmxabTl5WlNCelpYUjBhVzVuSUdsMElIUnZJR1poYkhObElHRm1kR1Z5SUdOaGJHeHBibWRjYmlBZ0lDQWdJQ0FnTHk4Z1kyeHZjMlVnTFMwZ2FXWWdhWFFuY3lCemRHbHNiQ0J6WlhRZ2RHOGdkSEoxWlNCcGJpQjBhR1VnWm1sdVlXeHNlU0JpYkc5amF5d2dhWFFnYldWaGJuTmNiaUFnSUNBZ0lDQWdMeThnZDNKaGNIQmxjaTVqYkc5elpTQjBhSEpsZHk1Y2JpQWdJQ0FnSUNBZ1pYSnliM0pVYUhKdmQyNGdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYVc1cGRFUmhkR0VnSVQwOUlGUnlZVzV6WVdOMGFXOXVMazlDVTBWU1ZrVkVYMFZTVWs5U0lDWW1JSGR5WVhCd1pYSXVZMnh2YzJVcElIdGNiaUFnSUNBZ0lDQWdJQ0IzY21Gd2NHVnlMbU5zYjNObExtTmhiR3dvZEdocGN5d2dhVzVwZEVSaGRHRXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWeWNtOXlWR2h5YjNkdUlEMGdabUZzYzJVN1hHNGdJQ0FnSUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSlVhSEp2ZDI0cElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCVWFHVWdZMnh2YzJWeUlHWnZjaUIzY21Gd2NHVnlJR2tnZEdoeVpYY2dZVzRnWlhKeWIzSTdJR05zYjNObElIUm9aU0J5WlcxaGFXNXBibWRjYmlBZ0lDQWdJQ0FnSUNBdkx5QjNjbUZ3Y0dWeWN5QmlkWFFnYzJsc1pXNWpaU0JoYm5rZ1pYaGpaWEIwYVc5dWN5Qm1jbTl0SUhSb1pXMGdkRzhnWlc1emRYSmxJSFJvWVhRZ2RHaGxYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1ptbHljM1FnWlhKeWIzSWdhWE1nZEdobElHOXVaU0IwYnlCaWRXSmliR1VnZFhBdVhHNGdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVkyeHZjMlZCYkd3b2FTQXJJREVwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1M2NtRndjR1Z5U1c1cGRFUmhkR0V1YkdWdVozUm9JRDBnTUR0Y2JpQWdmVnh1ZlR0Y2JseHVkbUZ5SUZSeVlXNXpZV04wYVc5dUlEMGdlMXh1WEc0Z0lFMXBlR2x1T2lCTmFYaHBiaXhjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWRzlyWlc0Z2RHOGdiRzl2YXlCbWIzSWdkRzhnWkdWMFpYSnRhVzVsSUdsbUlHRnVJR1Z5Y205eUlHOWpZM1Z5Y21Wa0xseHVJQ0FnS2k5Y2JpQWdUMEpUUlZKV1JVUmZSVkpTVDFJNklIdDlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdWSEpoYm5OaFkzUnBiMjQ3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgYWNjdW11bGF0ZUludG9cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKlxuICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNcbiAqIGlzIHVzZWQgdG8gY29uc2VydmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBzYWNyaWZpY2VzXG4gKiBBUEkgY2xlYW5uZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5nIHBhc3NlZCBpbiBhbmQgbm90XG4gKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVudGA6XG4gKlxuICogYGEgPSBhY2N1bXVsYXRlSW50byhhLCBiKTtgXG4gKlxuICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZvciBzb21ldGhpbmcgY2xlYW5lci5cbiAqXG4gKiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG4gKi9cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xuICAhKG5leHQgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNjdW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdFxuICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLlxuICB2YXIgY3VycmVudElzQXJyYXkgPSBBcnJheS5pc0FycmF5KGN1cnJlbnQpO1xuICB2YXIgbmV4dElzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5leHQpO1xuXG4gIGlmIChjdXJyZW50SXNBcnJheSAmJiBuZXh0SXNBcnJheSkge1xuICAgIGN1cnJlbnQucHVzaC5hcHBseShjdXJyZW50LCBuZXh0KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGlmIChjdXJyZW50SXNBcnJheSkge1xuICAgIGN1cnJlbnQucHVzaChuZXh0KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGlmIChuZXh0SXNBcnJheSkge1xuICAgIC8vIEEgYml0IHRvbyBkYW5nZXJvdXMgdG8gbXV0YXRlIGBuZXh0YC5cbiAgICByZXR1cm4gW2N1cnJlbnRdLmNvbmNhdChuZXh0KTtcbiAgfVxuXG4gIHJldHVybiBbY3VycmVudCwgbmV4dF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWNjdW11bGF0ZUludG87XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2WVdOamRXMTFiR0YwWlVsdWRHOHVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UUXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQmhZMk4xYlhWc1lYUmxTVzUwYjF4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNHZLaXBjYmlBcVhHNGdLaUJCWTJOMWJYVnNZWFJsY3lCcGRHVnRjeUIwYUdGMElHMTFjM1FnYm05MElHSmxJRzUxYkd3Z2IzSWdkVzVrWldacGJtVmtJR2x1ZEc4Z2RHaGxJR1pwY25OMElHOXVaUzRnVkdocGMxeHVJQ29nYVhNZ2RYTmxaQ0IwYnlCamIyNXpaWEoyWlNCdFpXMXZjbmtnWW5rZ1lYWnZhV1JwYm1jZ1lYSnlZWGtnWVd4c2IyTmhkR2x2Ym5Nc0lHRnVaQ0IwYUhWeklITmhZM0pwWm1salpYTmNiaUFxSUVGUVNTQmpiR1ZoYm01bGMzTXVJRk5wYm1ObElHQmpkWEp5Wlc1MFlDQmpZVzRnWW1VZ2JuVnNiQ0JpWldadmNtVWdZbVZwYm1jZ2NHRnpjMlZrSUdsdUlHRnVaQ0J1YjNSY2JpQXFJRzUxYkd3Z1lXWjBaWElnZEdocGN5Qm1kVzVqZEdsdmJpd2diV0ZyWlNCemRYSmxJSFJ2SUdGemMybG5iaUJwZENCaVlXTnJJSFJ2SUdCamRYSnlaVzUwWURwY2JpQXFYRzRnS2lCZ1lTQTlJR0ZqWTNWdGRXeGhkR1ZKYm5SdktHRXNJR0lwTzJCY2JpQXFYRzRnS2lCVWFHbHpJRUZRU1NCemFHOTFiR1FnWW1VZ2MzQmhjbWx1WjJ4NUlIVnpaV1F1SUZSeWVTQmdZV05qZFcxMWJHRjBaV0FnWm05eUlITnZiV1YwYUdsdVp5QmpiR1ZoYm1WeUxseHVJQ3BjYmlBcUlFQnlaWFIxY200Z2V5cDhZWEp5WVhrOEtqNTlJRUZ1SUdGalkzVnRkV3hoZEdsdmJpQnZaaUJwZEdWdGN5NWNiaUFxTDF4dVhHNW1kVzVqZEdsdmJpQmhZMk4xYlhWc1lYUmxTVzUwYnloamRYSnlaVzUwTENCdVpYaDBLU0I3WEc0Z0lDRW9ibVY0ZENBaFBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RoWTJOMWJYVnNZWFJsU1c1MGJ5Z3VMaTRwT2lCQlkyTjFiWFZzWVhSbFpDQnBkR1Z0Y3lCdGRYTjBJRzV2ZENCaVpTQnVkV3hzSUc5eUlIVnVaR1ZtYVc1bFpDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJR2xtSUNoamRYSnlaVzUwSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVY0ZER0Y2JpQWdmVnh1WEc0Z0lDOHZJRUp2ZEdnZ1lYSmxJRzV2ZENCbGJYQjBlUzRnVjJGeWJtbHVaem9nVG1WMlpYSWdZMkZzYkNCNExtTnZibU5oZENoNUtTQjNhR1Z1SUhsdmRTQmhjbVVnYm05MFhHNGdJQzh2SUdObGNuUmhhVzRnZEdoaGRDQjRJR2x6SUdGdUlFRnljbUY1SUNoNElHTnZkV3hrSUdKbElHRWdjM1J5YVc1bklIZHBkR2dnWTI5dVkyRjBJRzFsZEdodlpDa3VYRzRnSUhaaGNpQmpkWEp5Wlc1MFNYTkJjbkpoZVNBOUlFRnljbUY1TG1selFYSnlZWGtvWTNWeWNtVnVkQ2s3WEc0Z0lIWmhjaUJ1WlhoMFNYTkJjbkpoZVNBOUlFRnljbUY1TG1selFYSnlZWGtvYm1WNGRDazdYRzVjYmlBZ2FXWWdLR04xY25KbGJuUkpjMEZ5Y21GNUlDWW1JRzVsZUhSSmMwRnljbUY1S1NCN1hHNGdJQ0FnWTNWeWNtVnVkQzV3ZFhOb0xtRndjR3g1S0dOMWNuSmxiblFzSUc1bGVIUXBPMXh1SUNBZ0lISmxkSFZ5YmlCamRYSnlaVzUwTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR04xY25KbGJuUkpjMEZ5Y21GNUtTQjdYRzRnSUNBZ1kzVnljbVZ1ZEM1d2RYTm9LRzVsZUhRcE8xeHVJQ0FnSUhKbGRIVnliaUJqZFhKeVpXNTBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHNWxlSFJKYzBGeWNtRjVLU0I3WEc0Z0lDQWdMeThnUVNCaWFYUWdkRzl2SUdSaGJtZGxjbTkxY3lCMGJ5QnRkWFJoZEdVZ1lHNWxlSFJnTGx4dUlDQWdJSEpsZEhWeWJpQmJZM1Z5Y21WdWRGMHVZMjl1WTJGMEtHNWxlSFFwTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUZ0amRYSnlaVzUwTENCdVpYaDBYVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmhZMk4xYlhWc1lYUmxTVzUwYnpzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGRlcHJlY2F0ZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFRoaXMgd2lsbCBsb2cgYSBzaW5nbGUgZGVwcmVjYXRpb24gbm90aWNlIHBlciBmdW5jdGlvbiBhbmQgZm9yd2FyZCB0aGUgY2FsbFxuICogb24gdG8gdGhlIG5ldyBBUEkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZuTmFtZSBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdNb2R1bGUgVGhlIG1vZHVsZSB0aGF0IGZuIHdpbGwgZXhpc3QgaW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdQYWNrYWdlIFRoZSBtb2R1bGUgdGhhdCBmbiB3aWxsIGV4aXN0IGluXG4gKiBAcGFyYW0geyp9IGN0eCBUaGUgY29udGV4dCB0aGlzIGZvcndhcmRlZCBjYWxsIHNob3VsZCBydW4gaW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBmb3J3YXJkIG9uIHRvXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCB3YXJuIG9uY2UgYW5kIHRoZW4gY2FsbCBmblxuICovXG5mdW5jdGlvbiBkZXByZWNhdGVkKGZuTmFtZSwgbmV3TW9kdWxlLCBuZXdQYWNrYWdlLCBjdHgsIGZuKSB7XG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgbmV3Rm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWQsXG4gICAgICAvLyBSZXF1aXJlIGV4YW1wbGVzIGluIHRoaXMgc3RyaW5nIG11c3QgYmUgc3BsaXQgdG8gcHJldmVudCBSZWFjdCdzXG4gICAgICAvLyBidWlsZCB0b29scyBmcm9tIG1pc3Rha2luZyB0aGVtIGZvciByZWFsIHJlcXVpcmVzLlxuICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBidWlsZCB0b29scyB3aWxsIGF0dGVtcHQgdG8gYnVpbGQgYSAnJXMnIG1vZHVsZS5cbiAgICAgICdSZWFjdC4lcyBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICVzLiVzIGZyb20gcmVxdWlyZScgKyAnKFxcJyVzXFwnKSAnICsgJ2luc3RlYWQuJywgZm5OYW1lLCBuZXdNb2R1bGUsIGZuTmFtZSwgbmV3UGFja2FnZSkgOiB1bmRlZmluZWQ7XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KGN0eCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW5hbCBmbiBhcmUgY29waWVkIG92ZXIuXG4gICAgLy8gSW4gcGFydGljdWxhciwgdGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBQcm9wVHlwZXNcbiAgICByZXR1cm4gYXNzaWduKG5ld0ZuLCBmbik7XG4gIH1cblxuICByZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlZDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZaR1Z3Y21WallYUmxaQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdaR1Z3Y21WallYUmxaRnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JpOHFLbHh1SUNvZ1ZHaHBjeUIzYVd4c0lHeHZaeUJoSUhOcGJtZHNaU0JrWlhCeVpXTmhkR2x2YmlCdWIzUnBZMlVnY0dWeUlHWjFibU4wYVc5dUlHRnVaQ0JtYjNKM1lYSmtJSFJvWlNCallXeHNYRzRnS2lCdmJpQjBieUIwYUdVZ2JtVjNJRUZRU1M1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWm01T1lXMWxJRlJvWlNCdVlXMWxJRzltSUhSb1pTQm1kVzVqZEdsdmJseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzVsZDAxdlpIVnNaU0JVYUdVZ2JXOWtkV3hsSUhSb1lYUWdabTRnZDJsc2JDQmxlR2x6ZENCcGJseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzVsZDFCaFkydGhaMlVnVkdobElHMXZaSFZzWlNCMGFHRjBJR1p1SUhkcGJHd2daWGhwYzNRZ2FXNWNiaUFxSUVCd1lYSmhiU0I3S24wZ1kzUjRJRlJvWlNCamIyNTBaWGgwSUhSb2FYTWdabTl5ZDJGeVpHVmtJR05oYkd3Z2MyaHZkV3hrSUhKMWJpQnBibHh1SUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1ptNGdWR2hsSUdaMWJtTjBhVzl1SUhSdklHWnZjbmRoY21RZ2IyNGdkRzljYmlBcUlFQnlaWFIxY200Z2UyWjFibU4wYVc5dWZTQlVhR1VnWm5WdVkzUnBiMjRnZEdoaGRDQjNhV3hzSUhkaGNtNGdiMjVqWlNCaGJtUWdkR2hsYmlCallXeHNJR1p1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1JsY0hKbFkyRjBaV1FvWm01T1lXMWxMQ0J1WlhkTmIyUjFiR1VzSUc1bGQxQmhZMnRoWjJVc0lHTjBlQ3dnWm00cElIdGNiaUFnZG1GeUlIZGhjbTVsWkNBOUlHWmhiSE5sTzF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhaaGNpQnVaWGRHYmlBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hkaGNtNWxaQ3hjYmlBZ0lDQWdJQzh2SUZKbGNYVnBjbVVnWlhoaGJYQnNaWE1nYVc0Z2RHaHBjeUJ6ZEhKcGJtY2diWFZ6ZENCaVpTQnpjR3hwZENCMGJ5QndjbVYyWlc1MElGSmxZV04wSjNOY2JpQWdJQ0FnSUM4dklHSjFhV3hrSUhSdmIyeHpJR1p5YjIwZ2JXbHpkR0ZyYVc1bklIUm9aVzBnWm05eUlISmxZV3dnY21WeGRXbHlaWE11WEc0Z0lDQWdJQ0F2THlCUGRHaGxjbmRwYzJVZ2RHaGxJR0oxYVd4a0lIUnZiMnh6SUhkcGJHd2dZWFIwWlcxd2RDQjBieUJpZFdsc1pDQmhJQ2NsY3ljZ2JXOWtkV3hsTGx4dUlDQWdJQ0FnSjFKbFlXTjBMaVZ6SUdseklHUmxjSEpsWTJGMFpXUXVJRkJzWldGelpTQjFjMlVnSlhNdUpYTWdabkp2YlNCeVpYRjFhWEpsSnlBcklDY29YRnduSlhOY1hDY3BJQ2NnS3lBbmFXNXpkR1ZoWkM0bkxDQm1iazVoYldVc0lHNWxkMDF2WkhWc1pTd2dabTVPWVcxbExDQnVaWGRRWVdOcllXZGxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUhkaGNtNWxaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptNHVZWEJ3Ykhrb1kzUjRMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJSDA3WEc0Z0lDQWdMeThnVjJVZ2JtVmxaQ0IwYnlCdFlXdGxJSE4xY21VZ1lXeHNJSEJ5YjNCbGNuUnBaWE1nYjJZZ2RHaGxJRzl5YVdkcGJtRnNJR1p1SUdGeVpTQmpiM0JwWldRZ2IzWmxjaTVjYmlBZ0lDQXZMeUJKYmlCd1lYSjBhV04xYkdGeUxDQjBhR2x6SUdseklHNWxaV1JsWkNCMGJ5QnpkWEJ3YjNKMElGQnliM0JVZVhCbGMxeHVJQ0FnSUhKbGRIVnliaUJoYzNOcFoyNG9ibVYzUm00c0lHWnVLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJtYmp0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JrWlhCeVpXTmhkR1ZrT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGZpbmRET01Ob2RlXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1lbnR9IGNvbXBvbmVudE9yRWxlbWVudFxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290IG5vZGUgb2YgdGhpcyBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGdldERPTU5vZGUgb3IgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIoKS4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHtcbiAgICByZXR1cm4gY29tcG9uZW50T3JFbGVtZW50O1xuICB9XG4gIGlmIChSZWFjdEluc3RhbmNlTWFwLmhhcyhjb21wb25lbnRPckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuZ2V0Tm9kZUZyb21JbnN0YW5jZShjb21wb25lbnRPckVsZW1lbnQpO1xuICB9XG4gICEoY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciA9PSBudWxsIHx8IHR5cGVvZiBjb21wb25lbnRPckVsZW1lbnQucmVuZGVyICE9PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kRE9NTm9kZSB3YXMgY2FsbGVkIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCBhcHBlYXJzIHRvIGJlIG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUgKGtleXM6ICVzKScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kRE9NTm9kZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZabWx1WkVSUFRVNXZaR1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1ptbHVaRVJQVFU1dlpHVmNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTNWeWNtVnVkRTkzYm1WeUp5azdYRzUyWVhJZ1VtVmhZM1JKYm5OMFlXNWpaVTFoY0NBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSSmJuTjBZVzVqWlUxaGNDY3BPMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUVzkxYm5RbktUdGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdSRTlOSUc1dlpHVWdjbVZ1WkdWeVpXUWdZbmtnZEdocGN5QmxiR1Z0Wlc1MExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI4UkU5TlJXeGxiV1Z1ZEgwZ1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MFhHNGdLaUJBY21WMGRYSnVJSHMvUkU5TlJXeGxiV1Z1ZEgwZ1ZHaGxJSEp2YjNRZ2JtOWtaU0J2WmlCMGFHbHpJR1ZzWlcxbGJuUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHWnBibVJFVDAxT2IyUmxLR052YlhCdmJtVnVkRTl5Uld4bGJXVnVkQ2tnZTF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhaaGNpQnZkMjVsY2lBOUlGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RN1hHNGdJQ0FnYVdZZ0tHOTNibVZ5SUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aHZkMjVsY2k1ZmQyRnlibVZrUVdKdmRYUlNaV1p6U1c1U1pXNWtaWElzSUNjbGN5QnBjeUJoWTJObGMzTnBibWNnWjJWMFJFOU5UbTlrWlNCdmNpQm1hVzVrUkU5TlRtOWtaU0JwYm5OcFpHVWdhWFJ6SUhKbGJtUmxjaWdwTGlBbklDc2dKM0psYm1SbGNpZ3BJSE5vYjNWc1pDQmlaU0JoSUhCMWNtVWdablZ1WTNScGIyNGdiMllnY0hKdmNITWdZVzVrSUhOMFlYUmxMaUJKZENCemFHOTFiR1FnSnlBcklDZHVaWFpsY2lCaFkyTmxjM01nYzI5dFpYUm9hVzVuSUhSb1lYUWdjbVZ4ZFdseVpYTWdjM1JoYkdVZ1pHRjBZU0JtY205dElIUm9aU0J3Y21WMmFXOTFjeUFuSUNzZ0ozSmxibVJsY2l3Z2MzVmphQ0JoY3lCeVpXWnpMaUJOYjNabElIUm9hWE1nYkc5bmFXTWdkRzhnWTI5dGNHOXVaVzUwUkdsa1RXOTFiblFnWVc1a0lDY2dLeUFuWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsSUdsdWMzUmxZV1F1Snl3Z2IzZHVaWEl1WjJWMFRtRnRaU2dwSUh4OElDZEJJR052YlhCdmJtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2IzZHVaWEl1WDNkaGNtNWxaRUZpYjNWMFVtVm1jMGx1VW1WdVpHVnlJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2FXWWdLR052YlhCdmJtVnVkRTl5Uld4bGJXVnVkQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNiaUFnYVdZZ0tHTnZiWEJ2Ym1WdWRFOXlSV3hsYldWdWRDNXViMlJsVkhsd1pTQTlQVDBnTVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJqYjIxd2IyNWxiblJQY2tWc1pXMWxiblE3WEc0Z0lIMWNiaUFnYVdZZ0tGSmxZV04wU1c1emRHRnVZMlZOWVhBdWFHRnpLR052YlhCdmJtVnVkRTl5Uld4bGJXVnVkQ2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdVbVZoWTNSTmIzVnVkQzVuWlhST2IyUmxSbkp2YlVsdWMzUmhibU5sS0dOdmJYQnZibVZ1ZEU5eVJXeGxiV1Z1ZENrN1hHNGdJSDFjYmlBZ0lTaGpiMjF3YjI1bGJuUlBja1ZzWlcxbGJuUXVjbVZ1WkdWeUlEMDlJRzUxYkd3Z2ZId2dkSGx3Wlc5bUlHTnZiWEJ2Ym1WdWRFOXlSV3hsYldWdWRDNXlaVzVrWlhJZ0lUMDlJQ2RtZFc1amRHbHZiaWNwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMlpwYm1SRVQwMU9iMlJsSUhkaGN5QmpZV3hzWldRZ2IyNGdZVzRnZFc1dGIzVnVkR1ZrSUdOdmJYQnZibVZ1ZEM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDRm1ZV3h6WlNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RGYkdWdFpXNTBJR0Z3Y0dWaGNuTWdkRzhnWW1VZ2JtVnBkR2hsY2lCU1pXRmpkRU52YlhCdmJtVnVkQ0J1YjNJZ1JFOU5UbTlrWlNBb2EyVjVjem9nSlhNcEp5d2dUMkpxWldOMExtdGxlWE1vWTI5dGNHOXVaVzUwVDNKRmJHVnRaVzUwS1NrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHWnBibVJFVDAxT2IyUmxPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZmxhdHRlbkNoaWxkcmVuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgcGFzc2VkIHRocm91Z2ggdHJhdmVyc2FsLlxuICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxkIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJpbmcgbmFtZSBvZiBrZXkgcGF0aCB0byBjaGlsZC5cbiAqL1xuZnVuY3Rpb24gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlQ29udGV4dDtcbiAgdmFyIGtleVVuaXF1ZSA9IHJlc3VsdFtuYW1lXSA9PT0gdW5kZWZpbmVkO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGtleVVuaXF1ZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLicsIG5hbWUpIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmIChrZXlVbmlxdWUgJiYgY2hpbGQgIT0gbnVsbCkge1xuICAgIHJlc3VsdFtuYW1lXSA9IGNoaWxkO1xuICB9XG59XG5cbi8qKlxuICogRmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbFxuICogY2hpbGRyZW4gd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuXG4gKiBAcmV0dXJuIHshb2JqZWN0fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS5cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlpteGhkSFJsYmtOb2FXeGtjbVZ1TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JtYkdGMGRHVnVRMmhwYkdSeVpXNWNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUIwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1SUQwZ2NtVnhkV2x5WlNnbkxpOTBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCMGNtRjJaWEp6WlVOdmJuUmxlSFFnUTI5dWRHVjRkQ0J3WVhOelpXUWdkR2h5YjNWbmFDQjBjbUYyWlhKellXd3VYRzRnS2lCQWNHRnlZVzBnZXo5U1pXRmpkRU52YlhCdmJtVnVkSDBnWTJocGJHUWdVbVZoWTNRZ1kyaHBiR1FnWTI5dGNHOXVaVzUwTGx4dUlDb2dRSEJoY21GdElIc2hjM1J5YVc1bmZTQnVZVzFsSUZOMGNtbHVaeUJ1WVcxbElHOW1JR3RsZVNCd1lYUm9JSFJ2SUdOb2FXeGtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm1iR0YwZEdWdVUybHVaMnhsUTJocGJHUkpiblJ2UTI5dWRHVjRkQ2gwY21GMlpYSnpaVU52Ym5SbGVIUXNJR05vYVd4a0xDQnVZVzFsS1NCN1hHNGdJQzh2SUZkbElHWnZkVzVrSUdFZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObExseHVJQ0IyWVhJZ2NtVnpkV3gwSUQwZ2RISmhkbVZ5YzJWRGIyNTBaWGgwTzF4dUlDQjJZWElnYTJWNVZXNXBjWFZsSUQwZ2NtVnpkV3gwVzI1aGJXVmRJRDA5UFNCMWJtUmxabWx1WldRN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29hMlY1Vlc1cGNYVmxMQ0FuWm14aGRIUmxia05vYVd4a2NtVnVLQzR1TGlrNklFVnVZMjkxYm5SbGNtVmtJSFIzYnlCamFHbHNaSEpsYmlCM2FYUm9JSFJvWlNCellXMWxJR3RsZVN3Z0p5QXJJQ2RnSlhOZ0xpQkRhR2xzWkNCclpYbHpJRzExYzNRZ1ltVWdkVzVwY1hWbE95QjNhR1Z1SUhSM2J5QmphR2xzWkhKbGJpQnphR0Z5WlNCaElHdGxlU3dnYjI1c2VTQW5JQ3NnSjNSb1pTQm1hWEp6ZENCamFHbHNaQ0IzYVd4c0lHSmxJSFZ6WldRdUp5d2dibUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdhV1lnS0d0bGVWVnVhWEYxWlNBbUppQmphR2xzWkNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WemRXeDBXMjVoYldWZElEMGdZMmhwYkdRN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkdiR0YwZEdWdWN5QmphR2xzWkhKbGJpQjBhR0YwSUdGeVpTQjBlWEJwWTJGc2JIa2djM0JsWTJsbWFXVmtJR0Z6SUdCd2NtOXdjeTVqYUdsc1pISmxibUF1SUVGdWVTQnVkV3hzWEc0Z0tpQmphR2xzWkhKbGJpQjNhV3hzSUc1dmRDQmlaU0JwYm1Oc2RXUmxaQ0JwYmlCMGFHVWdjbVZ6ZFd4MGFXNW5JRzlpYW1WamRDNWNiaUFxSUVCeVpYUjFjbTRnZXlGdlltcGxZM1I5SUdac1lYUjBaVzVsWkNCamFHbHNaSEpsYmlCclpYbGxaQ0JpZVNCdVlXMWxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm1iR0YwZEdWdVEyaHBiR1J5Wlc0b1kyaHBiR1J5Wlc0cElIdGNiaUFnYVdZZ0tHTm9hV3hrY21WdUlEMDlJRzUxYkd3cElIdGNiaUFnSUNCeVpYUjFjbTRnWTJocGJHUnlaVzQ3WEc0Z0lIMWNiaUFnZG1GeUlISmxjM1ZzZENBOUlIdDlPMXh1SUNCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUtHTm9hV3hrY21WdUxDQm1iR0YwZEdWdVUybHVaMnhsUTJocGJHUkpiblJ2UTI5dWRHVjRkQ3dnY21WemRXeDBLVHRjYmlBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQm1iR0YwZEdWdVEyaHBiR1J5Wlc0N0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudCcpO1xudmFyIFJlYWN0TmF0aXZlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdE5hdGl2ZUNvbXBvbmVudCcpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLy8gVG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSwgd2UgY3JlYXRlIHRoZSBmaW5hbCBjbGFzcyBpbiB0aGlzIG1vZHVsZVxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciA9IGZ1bmN0aW9uICgpIHt9O1xuYXNzaWduKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Lk1peGluLCB7XG4gIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50XG59KTtcblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEga25vd24gaW50ZXJuYWwgdHlwZS4gSS5lLiBub3QgYSB1c2VyXG4gKiBwcm92aWRlZCBjb21wb3NpdGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBlXG4gKiBAcmV0dXJuIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhIHZhbGlkIGludGVybmFsIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgUmVhY3ROb2RlLCBjcmVhdGUgYW4gaW5zdGFuY2UgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIG1vdW50ZWQuXG4gKlxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGVcbiAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25zdHJ1Y3Rvci5cbiAqIEBwcm90ZWN0ZWRcbiAqL1xuZnVuY3Rpb24gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChub2RlKSB7XG4gIHZhciBpbnN0YW5jZTtcblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkge1xuICAgIGluc3RhbmNlID0gbmV3IFJlYWN0RW1wdHlDb21wb25lbnQoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBub2RlO1xuICAgICEoZWxlbWVudCAmJiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpICcgKyAnb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIGVsZW1lbnQudHlwZSA9PSBudWxsID8gZWxlbWVudC50eXBlIDogdHlwZW9mIGVsZW1lbnQudHlwZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHN0cmluZyB2YWx1ZXNcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGluc3RhbmNlID0gUmVhY3ROYXRpdmVDb21wb25lbnQuY3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChpc0ludGVybmFsQ29tcG9uZW50VHlwZShlbGVtZW50LnR5cGUpKSB7XG4gICAgICAvLyBUaGlzIGlzIHRlbXBvcmFyaWx5IGF2YWlsYWJsZSBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBhcmUgbm90IHN0cmluZ1xuICAgICAgLy8gcmVwcmVzZW50YXRpb25zLiBJLmUuIEFSVC4gT25jZSB0aG9zZSBhcmUgdXBkYXRlZCB0byB1c2UgdGhlIHN0cmluZ1xuICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHdlIGNhbiBkcm9wIHRoaXMgY29kZSBwYXRoLlxuICAgICAgaW5zdGFuY2UgPSBuZXcgZWxlbWVudC50eXBlKGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykge1xuICAgIGluc3RhbmNlID0gUmVhY3ROYXRpdmVDb21wb25lbnQuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuICB9IGVsc2Uge1xuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAlcycsIHR5cGVvZiBub2RlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5jb25zdHJ1Y3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS51bm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nLCAnT25seSBSZWFjdCBDb21wb25lbnRzIGNhbiBiZSBtb3VudGVkLicpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gU2V0cyB1cCB0aGUgaW5zdGFuY2UuIFRoaXMgY2FuIHByb2JhYmx5IGp1c3QgbW92ZSBpbnRvIHRoZSBjb25zdHJ1Y3RvciBub3cuXG4gIGluc3RhbmNlLmNvbnN0cnVjdChub2RlKTtcblxuICAvLyBUaGVzZSB0d28gZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFSVCBkaWZmaW5nIGFsZ29yaXRobXNcbiAgLy8gcmVzcGVjdGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5nIGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNob3VsZCBiZVxuICAvLyBzdG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3JpdGhtcyBlbHNld2hlcmUuXG4gIGluc3RhbmNlLl9tb3VudEluZGV4ID0gMDtcbiAgaW5zdGFuY2UuX21vdW50SW1hZ2UgPSBudWxsO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaW5zdGFuY2UuX2lzT3duZXJOZWNlc3NhcnkgPSBmYWxzZTtcbiAgICBpbnN0YW5jZS5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGluc3RhbmNlcyBzaG91bGQgZnVsbHkgY29uc3RydWN0ZWQgYXQgdGhpcyBwb2ludCwgc28gdGhleSBzaG91bGRcbiAgLy8gbm90IGdldCBhbnkgbmV3IGZpZWxkcyBhZGRlZCB0byB0aGVtIGF0IHRoaXMgcG9pbnQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucykge1xuICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKGluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBYRzRnS2lCQWRIbHdaV05vWldOcmN5QnpkR0YwYVdNdGIyNXNlVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFJXMXdkSGxEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUlcxd2RIbERiMjF3YjI1bGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEU1aGRHbDJaVU52YlhCdmJtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUW5LVHRjYmx4dWRtRnlJR0Z6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2VDJKcVpXTjBMbUZ6YzJsbmJpY3BPMXh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JpOHZJRlJ2SUdGMmIybGtJR0VnWTNsamJHbGpJR1JsY0dWdVpHVnVZM2tzSUhkbElHTnlaV0YwWlNCMGFHVWdabWx1WVd3Z1kyeGhjM01nYVc0Z2RHaHBjeUJ0YjJSMWJHVmNiblpoY2lCU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkRmR5WVhCd1pYSWdQU0JtZFc1amRHbHZiaUFvS1NCN2ZUdGNibUZ6YzJsbmJpaFNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEZkeVlYQndaWEl1Y0hKdmRHOTBlWEJsTENCU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQzVOYVhocGJpd2dlMXh1SUNCZmFXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZERvZ2FXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZEZ4dWZTazdYRzVjYm1aMWJtTjBhVzl1SUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNodmQyNWxjaWtnZTF4dUlDQnBaaUFvYjNkdVpYSXBJSHRjYmlBZ0lDQjJZWElnYm1GdFpTQTlJRzkzYm1WeUxtZGxkRTVoYldVb0tUdGNiaUFnSUNCcFppQW9ibUZ0WlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjZ1EyaGxZMnNnZEdobElISmxibVJsY2lCdFpYUm9iMlFnYjJZZ1lDY2dLeUJ1WVcxbElDc2dKMkF1Snp0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJQ2NuTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU5vWldOcklHbG1JSFJvWlNCMGVYQmxJSEpsWm1WeVpXNWpaU0JwY3lCaElHdHViM2R1SUdsdWRHVnlibUZzSUhSNWNHVXVJRWt1WlM0Z2JtOTBJR0VnZFhObGNseHVJQ29nY0hKdmRtbGtaV1FnWTI5dGNHOXphWFJsSUhSNWNHVXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdkSGx3WlZ4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdVbVYwZFhKdWN5QjBjblZsSUdsbUlIUm9hWE1nYVhNZ1lTQjJZV3hwWkNCcGJuUmxjbTVoYkNCMGVYQmxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjMGx1ZEdWeWJtRnNRMjl0Y0c5dVpXNTBWSGx3WlNoMGVYQmxLU0I3WEc0Z0lISmxkSFZ5YmlCMGVYQmxiMllnZEhsd1pTQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUppQjBlWEJsYjJZZ2RIbHdaUzV3Y205MGIzUjVjR1VnSVQwOUlDZDFibVJsWm1sdVpXUW5JQ1ltSUhSNWNHVnZaaUIwZVhCbExuQnliM1J2ZEhsd1pTNXRiM1Z1ZEVOdmJYQnZibVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCMGVYQmxiMllnZEhsd1pTNXdjbTkwYjNSNWNHVXVjbVZqWldsMlpVTnZiWEJ2Ym1WdWRDQTlQVDBnSjJaMWJtTjBhVzl1Snp0Y2JuMWNibHh1THlvcVhHNGdLaUJIYVhabGJpQmhJRkpsWVdOMFRtOWtaU3dnWTNKbFlYUmxJR0Z1SUdsdWMzUmhibU5sSUhSb1lYUWdkMmxzYkNCaFkzUjFZV3hzZVNCaVpTQnRiM1Z1ZEdWa0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1VtVmhZM1JPYjJSbGZTQnViMlJsWEc0Z0tpQkFjbVYwZFhKdUlIdHZZbXBsWTNSOUlFRWdibVYzSUdsdWMzUmhibU5sSUc5bUlIUm9aU0JsYkdWdFpXNTBKM01nWTI5dWMzUnlkV04wYjNJdVhHNGdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x1YzNSaGJuUnBZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9ibTlrWlNrZ2UxeHVJQ0IyWVhJZ2FXNXpkR0Z1WTJVN1hHNWNiaUFnYVdZZ0tHNXZaR1VnUFQwOUlHNTFiR3dnZkh3Z2JtOWtaU0E5UFQwZ1ptRnNjMlVwSUh0Y2JpQWdJQ0JwYm5OMFlXNWpaU0E5SUc1bGR5QlNaV0ZqZEVWdGNIUjVRMjl0Y0c5dVpXNTBLR2x1YzNSaGJuUnBZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUXBPMXh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCdWIyUmxJRDA5UFNBbmIySnFaV04wSnlrZ2UxeHVJQ0FnSUhaaGNpQmxiR1Z0Wlc1MElEMGdibTlrWlR0Y2JpQWdJQ0FoS0dWc1pXMWxiblFnSmlZZ0tIUjVjR1Z2WmlCbGJHVnRaVzUwTG5SNWNHVWdQVDA5SUNkbWRXNWpkR2x2YmljZ2ZId2dkSGx3Wlc5bUlHVnNaVzFsYm5RdWRIbHdaU0E5UFQwZ0ozTjBjbWx1WnljcEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmJHVnRaVzUwSUhSNWNHVWdhWE1nYVc1MllXeHBaRG9nWlhod1pXTjBaV1FnWVNCemRISnBibWNnS0dadmNpQmlkV2xzZEMxcGJpQmpiMjF3YjI1bGJuUnpLU0FuSUNzZ0oyOXlJR0VnWTJ4aGMzTXZablZ1WTNScGIyNGdLR1p2Y2lCamIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MGN5a2dZblYwSUdkdmREb2dKWE11SlhNbkxDQmxiR1Z0Wlc1MExuUjVjR1VnUFQwZ2JuVnNiQ0EvSUdWc1pXMWxiblF1ZEhsd1pTQTZJSFI1Y0dWdlppQmxiR1Z0Wlc1MExuUjVjR1VzSUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNobGJHVnRaVzUwTGw5dmQyNWxjaWtwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJRk53WldOcFlXd2dZMkZ6WlNCemRISnBibWNnZG1Gc2RXVnpYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmxiR1Z0Wlc1MExuUjVjR1VnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ0lDQnBibk4wWVc1alpTQTlJRkpsWVdOMFRtRjBhWFpsUTI5dGNHOXVaVzUwTG1OeVpXRjBaVWx1ZEdWeWJtRnNRMjl0Y0c5dVpXNTBLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9hWE5KYm5SbGNtNWhiRU52YlhCdmJtVnVkRlI1Y0dVb1pXeGxiV1Z1ZEM1MGVYQmxLU2tnZTF4dUlDQWdJQ0FnTHk4Z1ZHaHBjeUJwY3lCMFpXMXdiM0poY21sc2VTQmhkbUZwYkdGaWJHVWdabTl5SUdOMWMzUnZiU0JqYjIxd2IyNWxiblJ6SUhSb1lYUWdZWEpsSUc1dmRDQnpkSEpwYm1kY2JpQWdJQ0FnSUM4dklISmxjSEpsYzJWdWRHRjBhVzl1Y3k0Z1NTNWxMaUJCVWxRdUlFOXVZMlVnZEdodmMyVWdZWEpsSUhWd1pHRjBaV1FnZEc4Z2RYTmxJSFJvWlNCemRISnBibWRjYmlBZ0lDQWdJQzh2SUhKbGNISmxjMlZ1ZEdGMGFXOXVMQ0IzWlNCallXNGdaSEp2Y0NCMGFHbHpJR052WkdVZ2NHRjBhQzVjYmlBZ0lDQWdJR2x1YzNSaGJtTmxJRDBnYm1WM0lHVnNaVzFsYm5RdWRIbHdaU2hsYkdWdFpXNTBLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXNXpkR0Z1WTJVZ1BTQnVaWGNnVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUlhjbUZ3Y0dWeUtDazdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJ1YjJSbElEMDlQU0FuYzNSeWFXNW5KeUI4ZkNCMGVYQmxiMllnYm05a1pTQTlQVDBnSjI1MWJXSmxjaWNwSUh0Y2JpQWdJQ0JwYm5OMFlXNWpaU0E5SUZKbFlXTjBUbUYwYVhabFEyOXRjRzl1Wlc1MExtTnlaV0YwWlVsdWMzUmhibU5sUm05eVZHVjRkQ2h1YjJSbEtUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQWhabUZzYzJVZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUlc1amIzVnVkR1Z5WldRZ2FXNTJZV3hwWkNCU1pXRmpkQ0J1YjJSbElHOW1JSFI1Y0dVZ0pYTW5MQ0IwZVhCbGIyWWdibTlrWlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOVhHNWNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgwZVhCbGIyWWdhVzV6ZEdGdVkyVXVZMjl1YzNSeWRXTjBJRDA5UFNBblpuVnVZM1JwYjI0bklDWW1JSFI1Y0dWdlppQnBibk4wWVc1alpTNXRiM1Z1ZEVOdmJYQnZibVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCMGVYQmxiMllnYVc1emRHRnVZMlV1Y21WalpXbDJaVU52YlhCdmJtVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUIwZVhCbGIyWWdhVzV6ZEdGdVkyVXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRDQTlQVDBnSjJaMWJtTjBhVzl1Snl3Z0owOXViSGtnVW1WaFkzUWdRMjl0Y0c5dVpXNTBjeUJqWVc0Z1ltVWdiVzkxYm5SbFpDNG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1WEc0Z0lDOHZJRk5sZEhNZ2RYQWdkR2hsSUdsdWMzUmhibU5sTGlCVWFHbHpJR05oYmlCd2NtOWlZV0pzZVNCcWRYTjBJRzF2ZG1VZ2FXNTBieUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSWdibTkzTGx4dUlDQnBibk4wWVc1alpTNWpiMjV6ZEhKMVkzUW9ibTlrWlNrN1hHNWNiaUFnTHk4Z1ZHaGxjMlVnZEhkdklHWnBaV3hrY3lCaGNtVWdkWE5sWkNCaWVTQjBhR1VnUkU5TklHRnVaQ0JCVWxRZ1pHbG1abWx1WnlCaGJHZHZjbWwwYUcxelhHNGdJQzh2SUhKbGMzQmxZM1JwZG1Wc2VTNGdTVzV6ZEdWaFpDQnZaaUIxYzJsdVp5QmxlSEJoYm1SdmN5QnZiaUJqYjIxd2IyNWxiblJ6TENCM1pTQnphRzkxYkdRZ1ltVmNiaUFnTHk4Z2MzUnZjbWx1WnlCMGFHVWdjM1JoZEdVZ2JtVmxaR1ZrSUdKNUlIUm9aU0JrYVdabWFXNW5JR0ZzWjI5eWFYUm9iWE1nWld4elpYZG9aWEpsTGx4dUlDQnBibk4wWVc1alpTNWZiVzkxYm5SSmJtUmxlQ0E5SURBN1hHNGdJR2x1YzNSaGJtTmxMbDl0YjNWdWRFbHRZV2RsSUQwZ2JuVnNiRHRjYmx4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUdsdWMzUmhibU5sTGw5cGMwOTNibVZ5VG1WalpYTnpZWEo1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdhVzV6ZEdGdVkyVXVYM2RoY201bFpFRmliM1YwVW1WbWMwbHVVbVZ1WkdWeUlEMGdabUZzYzJVN1hHNGdJSDFjYmx4dUlDQXZMeUJKYm5SbGNtNWhiQ0JwYm5OMFlXNWpaWE1nYzJodmRXeGtJR1oxYkd4NUlHTnZibk4wY25WamRHVmtJR0YwSUhSb2FYTWdjRzlwYm5Rc0lITnZJSFJvWlhrZ2MyaHZkV3hrWEc0Z0lDOHZJRzV2ZENCblpYUWdZVzU1SUc1bGR5Qm1hV1ZzWkhNZ1lXUmtaV1FnZEc4Z2RHaGxiU0JoZENCMGFHbHpJSEJ2YVc1MExseHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lHbG1JQ2hQWW1wbFkzUXVjSEpsZG1WdWRFVjRkR1Z1YzJsdmJuTXBJSHRjYmlBZ0lDQWdJRTlpYW1WamRDNXdjbVYyWlc1MFJYaDBaVzV6YVc5dWN5aHBibk4wWVc1alpTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlHbHVjM1JoYm1ObE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblE3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgb25seUNoaWxkXG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBpbiBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmVcbiAqIGlzIG9ubHkgb25lIGNoaWxkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzXG4gKiBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYSBzaW5nbGUgY2hpbGQgZ2V0cyBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGVcbiAqIHB1cnBvc2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdG8gYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmVcbiAqIG9mIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gY2hpbGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG4gKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdENvbXBvbmVudGAgY29udGFpbmVkIGluIHRoZVxuICogc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnb25seUNoaWxkIG11c3QgYmUgcGFzc2VkIGEgY2hpbGRyZW4gd2l0aCBleGFjdGx5IG9uZSBjaGlsZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvbmx5Q2hpbGQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2YjI1c2VVTm9hV3hrTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQnZibXg1UTJocGJHUmNiaUFxTDF4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRmJHVnRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWc1pXMWxiblFuS1R0Y2JseHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHWnBjbk4wSUdOb2FXeGtJR2x1SUdFZ1kyOXNiR1ZqZEdsdmJpQnZaaUJqYUdsc1pISmxiaUJoYm1RZ2RtVnlhV1pwWlhNZ2RHaGhkQ0IwYUdWeVpWeHVJQ29nYVhNZ2IyNXNlU0J2Ym1VZ1kyaHBiR1FnYVc0Z2RHaGxJR052Ykd4bFkzUnBiMjR1SUZSb1pTQmpkWEp5Wlc1MElHbHRjR3hsYldWdWRHRjBhVzl1SUc5bUlIUm9hWE5jYmlBcUlHWjFibU4wYVc5dUlHRnpjM1Z0WlhNZ2RHaGhkQ0JoSUhOcGJtZHNaU0JqYUdsc1pDQm5aWFJ6SUhCaGMzTmxaQ0IzYVhSb2IzVjBJR0VnZDNKaGNIQmxjaXdnWW5WMElIUm9aVnh1SUNvZ2NIVnljRzl6WlNCdlppQjBhR2x6SUdobGJIQmxjaUJtZFc1amRHbHZiaUJwY3lCMGJ5QmhZbk4wY21GamRDQmhkMkY1SUhSb1pTQndZWEowYVdOMWJHRnlJSE4wY25WamRIVnlaVnh1SUNvZ2IyWWdZMmhwYkdSeVpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQmphR2xzWkhKbGJpQkRhR2xzWkNCamIyeHNaV04wYVc5dUlITjBjblZqZEhWeVpTNWNiaUFxSUVCeVpYUjFjbTRnZTFKbFlXTjBRMjl0Y0c5dVpXNTBmU0JVYUdVZ1ptbHljM1FnWVc1a0lHOXViSGtnWUZKbFlXTjBRMjl0Y0c5dVpXNTBZQ0JqYjI1MFlXbHVaV1FnYVc0Z2RHaGxYRzRnS2lCemRISjFZM1IxY21VdVhHNGdLaTljYm1aMWJtTjBhVzl1SUc5dWJIbERhR2xzWkNoamFHbHNaSEpsYmlrZ2UxeHVJQ0FoVW1WaFkzUkZiR1Z0Wlc1MExtbHpWbUZzYVdSRmJHVnRaVzUwS0dOb2FXeGtjbVZ1S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R2Ym14NVEyaHBiR1FnYlhWemRDQmlaU0J3WVhOelpXUWdZU0JqYUdsc1pISmxiaUIzYVhSb0lHVjRZV04wYkhrZ2IyNWxJR05vYVd4a0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdjbVYwZFhKdUlHTm9hV3hrY21WdU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUc5dWJIbERhR2xzWkRzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHRyYXZlcnNlQWxsQ2hpbGRyZW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBTRVBBUkFUT1IgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5TRVBBUkFUT1I7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRPRE86IFRlc3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRoZSBzYW1lIGtleVxuICogcGF0dGVybi5cbiAqL1xuXG52YXIgdXNlclByb3ZpZGVkS2V5RXNjYXBlckxvb2t1cCA9IHtcbiAgJz0nOiAnPTAnLFxuICAnLic6ICc9MScsXG4gICc6JzogJz0yJ1xufTtcblxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1s9LjpdL2c7XG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHVzZXJQcm92aWRlZEtleUVzY2FwZXIobWF0Y2gpIHtcbiAgcmV0dXJuIHVzZXJQcm92aWRlZEtleUVzY2FwZXJMb29rdXBbbWF0Y2hdO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxuICpcbiAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29tcG9uZW50IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XG4gIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXQga2V5XG4gICAgcmV0dXJuIHdyYXBVc2VyUHJvdmlkZWRLZXkoY29tcG9uZW50LmtleSk7XG4gIH1cbiAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBzZXRcbiAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cblxuLyoqXG4gKiBFc2NhcGUgYSBjb21wb25lbnQga2V5IHNvIHRoYXQgaXQgaXMgc2FmZSB0byB1c2UgaW4gYSByZWFjdGlkLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4dCBDb21wb25lbnQga2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlc2NhcGVVc2VyUHJvdmlkZWRLZXkodGV4dCkge1xuICByZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgdXNlclByb3ZpZGVkS2V5RXNjYXBlcik7XG59XG5cbi8qKlxuICogV3JhcCBhIGBrZXlgIHZhbHVlIGV4cGxpY2l0bHkgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbVxuICogaW1wbGljaXRseS1nZW5lcmF0ZWQga2V5cyBnZW5lcmF0ZWQgYnkgYSBjb21wb25lbnQncyBpbmRleCBpbiBpdHMgcGFyZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVmFsdWUgb2YgYSB1c2VyLXByb3ZpZGVkIGBrZXlgIGF0dHJpYnV0ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB3cmFwVXNlclByb3ZpZGVkS2V5KGtleSkge1xuICByZXR1cm4gJyQnICsgZXNjYXBlVXNlclByb3ZpZGVkS2V5KGtleSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fCBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcbiAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFtZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXG4gICAgbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgdmFyIGNoaWxkO1xuICB2YXIgbmV4dE5hbWU7XG4gIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBzdWJ0cmVlLlxuICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTtcbiAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hpbGRyZW4pO1xuICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRyZW4pO1xuICAgICAgdmFyIHN0ZXA7XG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykge1xuICAgICAgICB2YXIgaWkgPSAwO1xuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKyspO1xuICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyB3cmFwVXNlclByb3ZpZGVkS2V5KGVudHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgYWRkZW5kdW0gPSAnJztcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcbiAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gJyBJdCBsb29rcyBsaWtlIHlvdVxcJ3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCAnICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3VidHJlZUNvdW50O1xufVxuXG4vKipcbiAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dFxuICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQgdGhyb3VnaCBhdHRyaWJ1dGVzOlxuICpcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4uKWBcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5sZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWBcbiAqXG4gKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcbiAqIGVudGlyZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMgb3IgYW55dGhpbmcgZWxzZSB0aGF0XG4gKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC5cbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2FsLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2ZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJseHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU4xY25KbGJuUlBkMjVsY2ljcE8xeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekp5azdYRzVjYm5aaGNpQm5aWFJKZEdWeVlYUnZja1p1SUQwZ2NtVnhkV2x5WlNnbkxpOW5aWFJKZEdWeVlYUnZja1p1SnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlGTkZVRUZTUVZSUFVpQTlJRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TGxORlVFRlNRVlJQVWp0Y2JuWmhjaUJUVlVKVFJWQkJVa0ZVVDFJZ1BTQW5PaWM3WEc1Y2JpOHFLbHh1SUNvZ1ZFOUVUem9nVkdWemRDQjBhR0YwSUdFZ2MybHVaMnhsSUdOb2FXeGtJR0Z1WkNCaGJpQmhjbkpoZVNCM2FYUm9JRzl1WlNCcGRHVnRJR2hoZG1VZ2RHaGxJSE5oYldVZ2EyVjVYRzRnS2lCd1lYUjBaWEp1TGx4dUlDb3ZYRzVjYm5aaGNpQjFjMlZ5VUhKdmRtbGtaV1JMWlhsRmMyTmhjR1Z5VEc5dmEzVndJRDBnZTF4dUlDQW5QU2M2SUNjOU1DY3NYRzRnSUNjdUp6b2dKejB4Snl4Y2JpQWdKem9uT2lBblBUSW5YRzU5TzF4dVhHNTJZWElnZFhObGNsQnliM1pwWkdWa1MyVjVSWE5qWVhCbFVtVm5aWGdnUFNBdld6MHVPbDB2Wnp0Y2JseHVkbUZ5SUdScFpGZGhjbTVCWW05MWRFMWhjSE1nUFNCbVlXeHpaVHRjYmx4dVpuVnVZM1JwYjI0Z2RYTmxjbEJ5YjNacFpHVmtTMlY1UlhOallYQmxjaWh0WVhSamFDa2dlMXh1SUNCeVpYUjFjbTRnZFhObGNsQnliM1pwWkdWa1MyVjVSWE5qWVhCbGNreHZiMnQxY0Z0dFlYUmphRjA3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVWdZU0JyWlhrZ2MzUnlhVzVuSUhSb1lYUWdhV1JsYm5ScFptbGxjeUJoSUdOdmJYQnZibVZ1ZENCM2FYUm9hVzRnWVNCelpYUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIc3FmU0JqYjIxd2IyNWxiblFnUVNCamIyMXdiMjVsYm5RZ2RHaGhkQ0JqYjNWc1pDQmpiMjUwWVdsdUlHRWdiV0Z1ZFdGc0lHdGxlUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCcGJtUmxlQ0JKYm1SbGVDQjBhR0YwSUdseklIVnpaV1FnYVdZZ1lTQnRZVzUxWVd3Z2EyVjVJR2x6SUc1dmRDQndjbTkyYVdSbFpDNWNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwUTI5dGNHOXVaVzUwUzJWNUtHTnZiWEJ2Ym1WdWRDd2dhVzVrWlhncElIdGNiaUFnYVdZZ0tHTnZiWEJ2Ym1WdWRDQW1KaUJqYjIxd2IyNWxiblF1YTJWNUlDRTlJRzUxYkd3cElIdGNiaUFnSUNBdkx5QkZlSEJzYVdOcGRDQnJaWGxjYmlBZ0lDQnlaWFIxY200Z2QzSmhjRlZ6WlhKUWNtOTJhV1JsWkV0bGVTaGpiMjF3YjI1bGJuUXVhMlY1S1R0Y2JpQWdmVnh1SUNBdkx5QkpiWEJzYVdOcGRDQnJaWGtnWkdWMFpYSnRhVzVsWkNCaWVTQjBhR1VnYVc1a1pYZ2dhVzRnZEdobElITmxkRnh1SUNCeVpYUjFjbTRnYVc1a1pYZ3VkRzlUZEhKcGJtY29NellwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVZ6WTJGd1pTQmhJR052YlhCdmJtVnVkQ0JyWlhrZ2MyOGdkR2hoZENCcGRDQnBjeUJ6WVdabElIUnZJSFZ6WlNCcGJpQmhJSEpsWVdOMGFXUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIc3FmU0IwWlhoMElFTnZiWEJ2Ym1WdWRDQnJaWGtnZEc4Z1ltVWdaWE5qWVhCbFpDNWNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnUVc0Z1pYTmpZWEJsWkNCemRISnBibWN1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1Z6WTJGd1pWVnpaWEpRY205MmFXUmxaRXRsZVNoMFpYaDBLU0I3WEc0Z0lISmxkSFZ5YmlBb0p5Y2dLeUIwWlhoMEtTNXlaWEJzWVdObEtIVnpaWEpRY205MmFXUmxaRXRsZVVWelkyRndaVkpsWjJWNExDQjFjMlZ5VUhKdmRtbGtaV1JMWlhsRmMyTmhjR1Z5S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJYY21Gd0lHRWdZR3RsZVdBZ2RtRnNkV1VnWlhod2JHbGphWFJzZVNCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZFhObGNpQjBieUJrYVhOMGFXNW5kV2x6YUNCcGRDQm1jbTl0WEc0Z0tpQnBiWEJzYVdOcGRHeDVMV2RsYm1WeVlYUmxaQ0JyWlhseklHZGxibVZ5WVhSbFpDQmllU0JoSUdOdmJYQnZibVZ1ZENkeklHbHVaR1Y0SUdsdUlHbDBjeUJ3WVhKbGJuUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHdGxlU0JXWVd4MVpTQnZaaUJoSUhWelpYSXRjSEp2ZG1sa1pXUWdZR3RsZVdBZ1lYUjBjbWxpZFhSbFhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlYRzRnS2k5Y2JtWjFibU4wYVc5dUlIZHlZWEJWYzJWeVVISnZkbWxrWldSTFpYa29hMlY1S1NCN1hHNGdJSEpsZEhWeWJpQW5KQ2NnS3lCbGMyTmhjR1ZWYzJWeVVISnZkbWxrWldSTFpYa29hMlY1S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJBY0dGeVlXMGdlejhxZlNCamFHbHNaSEpsYmlCRGFHbHNaSEpsYmlCMGNtVmxJR052Ym5SaGFXNWxjaTVjYmlBcUlFQndZWEpoYlNCN0lYTjBjbWx1WjMwZ2JtRnRaVk52Um1GeUlFNWhiV1VnYjJZZ2RHaGxJR3RsZVNCd1lYUm9JSE52SUdaaGNpNWNiaUFxSUVCd1lYSmhiU0I3SVdaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCRFlXeHNZbUZqYXlCMGJ5QnBiblp2YTJVZ2QybDBhQ0JsWVdOb0lHTm9hV3hrSUdadmRXNWtMbHh1SUNvZ1FIQmhjbUZ0SUhzL0tuMGdkSEpoZG1WeWMyVkRiMjUwWlhoMElGVnpaV1FnZEc4Z2NHRnpjeUJwYm1admNtMWhkR2x2YmlCMGFISnZkV2RvYjNWMElIUm9aU0IwY21GMlpYSnpZV3hjYmlBcUlIQnliMk5sYzNNdVhHNGdLaUJBY21WMGRYSnVJSHNoYm5WdFltVnlmU0JVYUdVZ2JuVnRZbVZ5SUc5bUlHTm9hV3hrY21WdUlHbHVJSFJvYVhNZ2MzVmlkSEpsWlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmtsdGNHd29ZMmhwYkdSeVpXNHNJRzVoYldWVGIwWmhjaXdnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2tnZTF4dUlDQjJZWElnZEhsd1pTQTlJSFI1Y0dWdlppQmphR2xzWkhKbGJqdGNibHh1SUNCcFppQW9kSGx3WlNBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NnZkh3Z2RIbHdaU0E5UFQwZ0oySnZiMnhsWVc0bktTQjdYRzRnSUNBZ0x5OGdRV3hzSUc5bUlIUm9aU0JoWW05MlpTQmhjbVVnY0dWeVkyVnBkbVZrSUdGeklHNTFiR3d1WEc0Z0lDQWdZMmhwYkdSeVpXNGdQU0J1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dOb2FXeGtjbVZ1SUQwOVBTQnVkV3hzSUh4OElIUjVjR1VnUFQwOUlDZHpkSEpwYm1jbklIeDhJSFI1Y0dVZ1BUMDlJQ2R1ZFcxaVpYSW5JSHg4SUZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENoamFHbHNaSEpsYmlrcElIdGNiaUFnSUNCallXeHNZbUZqYXloMGNtRjJaWEp6WlVOdmJuUmxlSFFzSUdOb2FXeGtjbVZ1TEZ4dUlDQWdJQzh2SUVsbUlHbDBKM01nZEdobElHOXViSGtnWTJocGJHUXNJSFJ5WldGMElIUm9aU0J1WVcxbElHRnpJR2xtSUdsMElIZGhjeUIzY21Gd2NHVmtJR2x1SUdGdUlHRnljbUY1WEc0Z0lDQWdMeThnYzI4Z2RHaGhkQ0JwZENkeklHTnZibk5wYzNSbGJuUWdhV1lnZEdobElHNTFiV0psY2lCdlppQmphR2xzWkhKbGJpQm5jbTkzY3k1Y2JpQWdJQ0J1WVcxbFUyOUdZWElnUFQwOUlDY25JRDhnVTBWUVFWSkJWRTlTSUNzZ1oyVjBRMjl0Y0c5dVpXNTBTMlY1S0dOb2FXeGtjbVZ1TENBd0tTQTZJRzVoYldWVGIwWmhjaWs3WEc0Z0lDQWdjbVYwZFhKdUlERTdYRzRnSUgxY2JseHVJQ0IyWVhJZ1kyaHBiR1E3WEc0Z0lIWmhjaUJ1WlhoMFRtRnRaVHRjYmlBZ2RtRnlJSE4xWW5SeVpXVkRiM1Z1ZENBOUlEQTdJQzh2SUVOdmRXNTBJRzltSUdOb2FXeGtjbVZ1SUdadmRXNWtJR2x1SUhSb1pTQmpkWEp5Wlc1MElITjFZblJ5WldVdVhHNGdJSFpoY2lCdVpYaDBUbUZ0WlZCeVpXWnBlQ0E5SUc1aGJXVlRiMFpoY2lBOVBUMGdKeWNnUHlCVFJWQkJVa0ZVVDFJZ09pQnVZVzFsVTI5R1lYSWdLeUJUVlVKVFJWQkJVa0ZVVDFJN1hHNWNiaUFnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvWTJocGJHUnlaVzRwS1NCN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCamFHbHNaSEpsYmk1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMmhwYkdRZ1BTQmphR2xzWkhKbGJsdHBYVHRjYmlBZ0lDQWdJRzVsZUhST1lXMWxJRDBnYm1WNGRFNWhiV1ZRY21WbWFYZ2dLeUJuWlhSRGIyMXdiMjVsYm5STFpYa29ZMmhwYkdRc0lHa3BPMXh1SUNBZ0lDQWdjM1ZpZEhKbFpVTnZkVzUwSUNzOUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNUpiWEJzS0dOb2FXeGtMQ0J1WlhoMFRtRnRaU3dnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSFpoY2lCcGRHVnlZWFJ2Y2tadUlEMGdaMlYwU1hSbGNtRjBiM0pHYmloamFHbHNaSEpsYmlrN1hHNGdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBZ0lDQWdJSFpoY2lCcGRHVnlZWFJ2Y2lBOUlHbDBaWEpoZEc5eVJtNHVZMkZzYkNoamFHbHNaSEpsYmlrN1hHNGdJQ0FnSUNCMllYSWdjM1JsY0R0Y2JpQWdJQ0FnSUdsbUlDaHBkR1Z5WVhSdmNrWnVJQ0U5UFNCamFHbHNaSEpsYmk1bGJuUnlhV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJwYVNBOUlEQTdYRzRnSUNBZ0lDQWdJSGRvYVd4bElDZ2hLSE4wWlhBZ1BTQnBkR1Z5WVhSdmNpNXVaWGgwS0NrcExtUnZibVVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmphR2xzWkNBOUlITjBaWEF1ZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnYm1WNGRFNWhiV1VnUFNCdVpYaDBUbUZ0WlZCeVpXWnBlQ0FySUdkbGRFTnZiWEJ2Ym1WdWRFdGxlU2hqYUdsc1pDd2dhV2tyS3lrN1hHNGdJQ0FnSUNBZ0lDQWdjM1ZpZEhKbFpVTnZkVzUwSUNzOUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNUpiWEJzS0dOb2FXeGtMQ0J1WlhoMFRtRnRaU3dnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29aR2xrVjJGeWJrRmliM1YwVFdGd2N5d2dKMVZ6YVc1bklFMWhjSE1nWVhNZ1kyaHBiR1J5Wlc0Z2FYTWdibTkwSUhsbGRDQm1kV3hzZVNCemRYQndiM0owWldRdUlFbDBJR2x6SUdGdUlDY2dLeUFuWlhod1pYSnBiV1Z1ZEdGc0lHWmxZWFIxY21VZ2RHaGhkQ0J0YVdkb2RDQmlaU0J5WlcxdmRtVmtMaUJEYjI1MlpYSjBJR2wwSUhSdklHRWdKeUFySUNkelpYRjFaVzVqWlNBdklHbDBaWEpoWW14bElHOW1JR3RsZVdWa0lGSmxZV04wUld4bGJXVnVkSE1nYVc1emRHVmhaQzRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdJQ0JrYVdSWFlYSnVRV0p2ZFhSTllYQnpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0F2THlCSmRHVnlZWFJ2Y2lCM2FXeHNJSEJ5YjNacFpHVWdaVzUwY25rZ1cyc3NkbDBnZEhWd2JHVnpJSEpoZEdobGNpQjBhR0Z1SUhaaGJIVmxjeTVjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ0VvYzNSbGNDQTlJR2wwWlhKaGRHOXlMbTVsZUhRb0tTa3VaRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCbGJuUnllU0E5SUhOMFpYQXVkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dWdWRISjVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphR2xzWkNBOUlHVnVkSEo1V3pGZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1WNGRFNWhiV1VnUFNCdVpYaDBUbUZ0WlZCeVpXWnBlQ0FySUhkeVlYQlZjMlZ5VUhKdmRtbGtaV1JMWlhrb1pXNTBjbmxiTUYwcElDc2dVMVZDVTBWUVFWSkJWRTlTSUNzZ1oyVjBRMjl0Y0c5dVpXNTBTMlY1S0dOb2FXeGtMQ0F3S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4xWW5SeVpXVkRiM1Z1ZENBclBTQjBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVTVzF3YkNoamFHbHNaQ3dnYm1WNGRFNWhiV1VzSUdOaGJHeGlZV05yTENCMGNtRjJaWEp6WlVOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJSFpoY2lCaFpHUmxibVIxYlNBOUlDY25PMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdZV1JrWlc1a2RXMGdQU0FuSUVsbUlIbHZkU0J0WldGdWRDQjBieUJ5Wlc1a1pYSWdZU0JqYjJ4c1pXTjBhVzl1SUc5bUlHTm9hV3hrY21WdUxDQjFjMlVnWVc0Z1lYSnlZWGtnSnlBcklDZHBibk4wWldGa0lHOXlJSGR5WVhBZ2RHaGxJRzlpYW1WamRDQjFjMmx1WnlCamNtVmhkR1ZHY21GbmJXVnVkQ2h2WW1wbFkzUXBJR1p5YjIwZ2RHaGxJQ2NnS3lBblVtVmhZM1FnWVdSa0xXOXVjeTRuTzF4dUlDQWdJQ0FnSUNCcFppQW9ZMmhwYkdSeVpXNHVYMmx6VW1WaFkzUkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWVdSa1pXNWtkVzBnUFNBbklFbDBJR3h2YjJ0eklHeHBhMlVnZVc5MVhGd25jbVVnZFhOcGJtY2dZVzRnWld4bGJXVnVkQ0JqY21WaGRHVmtJR0o1SUdFZ1pHbG1abVZ5Wlc1MElDY2dLeUFuZG1WeWMybHZiaUJ2WmlCU1pXRmpkQzRnVFdGclpTQnpkWEpsSUhSdklIVnpaU0J2Ym14NUlHOXVaU0JqYjNCNUlHOW1JRkpsWVdOMExpYzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RcElIdGNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ2JtRnRaU0E5SUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblF1WjJWMFRtRnRaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCaFpHUmxibVIxYlNBclBTQW5JRU5vWldOcklIUm9aU0J5Wlc1a1pYSWdiV1YwYUc5a0lHOW1JR0FuSUNzZ2JtRnRaU0FySUNkZ0xpYzdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMllYSWdZMmhwYkdSeVpXNVRkSEpwYm1jZ1BTQlRkSEpwYm1jb1kyaHBiR1J5Wlc0cE8xeHVJQ0FnSUNBZ0lXWmhiSE5sSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMDlpYW1WamRITWdZWEpsSUc1dmRDQjJZV3hwWkNCaGN5QmhJRkpsWVdOMElHTm9hV3hrSUNobWIzVnVaRG9nSlhNcExpVnpKeXdnWTJocGJHUnlaVzVUZEhKcGJtY2dQVDA5SUNkYmIySnFaV04wSUU5aWFtVmpkRjBuSUQ4Z0oyOWlhbVZqZENCM2FYUm9JR3RsZVhNZ2V5Y2dLeUJQWW1wbFkzUXVhMlY1Y3loamFHbHNaSEpsYmlrdWFtOXBiaWduTENBbktTQXJJQ2Q5SnlBNklHTm9hV3hrY21WdVUzUnlhVzVuTENCaFpHUmxibVIxYlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnpkV0owY21WbFEyOTFiblE3WEc1OVhHNWNiaThxS2x4dUlDb2dWSEpoZG1WeWMyVnpJR05vYVd4a2NtVnVJSFJvWVhRZ1lYSmxJSFI1Y0dsallXeHNlU0J6Y0dWamFXWnBaV1FnWVhNZ1lIQnliM0J6TG1Ob2FXeGtjbVZ1WUN3Z1luVjBYRzRnS2lCdGFXZG9kQ0JoYkhOdklHSmxJSE53WldOcFptbGxaQ0IwYUhKdmRXZG9JR0YwZEhKcFluVjBaWE02WEc0Z0tseHVJQ29nTFNCZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpaDBhR2x6TG5CeWIzQnpMbU5vYVd4a2NtVnVMQ0F1TGk0cFlGeHVJQ29nTFNCZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpaDBhR2x6TG5CeWIzQnpMbXhsWm5SUVlXNWxiRU5vYVd4a2NtVnVMQ0F1TGk0cFlGeHVJQ3BjYmlBcUlGUm9aU0JnZEhKaGRtVnljMlZEYjI1MFpYaDBZQ0JwY3lCaGJpQnZjSFJwYjI1aGJDQmhjbWQxYldWdWRDQjBhR0YwSUdseklIQmhjM05sWkNCMGFISnZkV2RvSUhSb1pWeHVJQ29nWlc1MGFYSmxJSFJ5WVhabGNuTmhiQzRnU1hRZ1kyRnVJR0psSUhWelpXUWdkRzhnYzNSdmNtVWdZV05qZFcxMWJHRjBhVzl1Y3lCdmNpQmhibmwwYUdsdVp5QmxiSE5sSUhSb1lYUmNiaUFxSUhSb1pTQmpZV3hzWW1GamF5QnRhV2RvZENCbWFXNWtJSEpsYkdWMllXNTBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdQeXA5SUdOb2FXeGtjbVZ1SUVOb2FXeGtjbVZ1SUhSeVpXVWdiMkpxWldOMExseHVJQ29nUUhCaGNtRnRJSHNoWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUZSdklHbHVkbTlyWlNCMWNHOXVJSFJ5WVhabGNuTnBibWNnWldGamFDQmphR2xzWkM1Y2JpQXFJRUJ3WVhKaGJTQjdQeXA5SUhSeVlYWmxjbk5sUTI5dWRHVjRkQ0JEYjI1MFpYaDBJR1p2Y2lCMGNtRjJaWEp6WVd3dVhHNGdLaUJBY21WMGRYSnVJSHNoYm5WdFltVnlmU0JVYUdVZ2JuVnRZbVZ5SUc5bUlHTm9hV3hrY21WdUlHbHVJSFJvYVhNZ2MzVmlkSEpsWlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmloamFHbHNaSEpsYml3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrZ2UxeHVJQ0JwWmlBb1kyaHBiR1J5Wlc0Z1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUF3TzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhSeVlYWmxjbk5sUVd4c1EyaHBiR1J5Wlc1SmJYQnNLR05vYVd4a2NtVnVMQ0FuSnl3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmpzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB2YWxpZGF0ZURPTU5lc3RpbmdcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUgSFRNTDUgcGFyc2luZyBzcGVjOlxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICAvL1xuICAvLyBOb3RlOiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0IHRyeSB0byAoYXMgaXQnc1xuICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBkb2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seVxuICAvLyBmb3IgY2FzZXMgd2hlcmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdoYXQgUmVhY3RcbiAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4gaXMgaW52YWxpZCBidXQgd2UgZG9uJ3Qgd2FyblxuICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkXG4gIC8vIDxwPiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxpY2l0bHkgY2xvc2VzIHRoZVxuICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLlxuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3NwZWNpYWxcbiAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVhJywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY29sJywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywgJ21haW4nLCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25vZW1iZWQnLCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFyYW0nLCAncGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc291cmNlJywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVtcGxhdGUnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndWwnLCAnd2JyJywgJ3htcCddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG4gIHZhciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJsZScsICd0ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsXG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxuICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVyZSAtLSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmVcbiAgLy8gZXJycyBvbiB0aGUgc2lkZSBvZiBmZXdlciB3YXJuaW5nc1xuICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlXG4gIHZhciBidXR0b25TY29wZVRhZ3MgPSBpblNjb3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQtdGFnc1xuICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbicsICdvcHRncm91cCcsICdwJywgJ3JwJywgJ3J0J107XG5cbiAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0ge1xuICAgIHBhcmVudFRhZzogbnVsbCxcblxuICAgIGZvcm1UYWc6IG51bGwsXG4gICAgYVRhZ0luU2NvcGU6IG51bGwsXG4gICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCxcbiAgICBub2JyVGFnSW5TY29wZTogbnVsbCxcbiAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCxcblxuICAgIGxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGwsXG4gICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGxcbiAgfTtcblxuICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3RhbmNlKSB7XG4gICAgdmFyIGFuY2VzdG9ySW5mbyA9IGFzc2lnbih7fSwgb2xkSW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbyk7XG4gICAgdmFyIGluZm8gPSB7IHRhZzogdGFnLCBpbnN0YW5jZTogaW5zdGFuY2UgfTtcblxuICAgIGlmIChpblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGJ1dHRvblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlZSBydWxlcyBmb3IgJ2xpJywgJ2RkJywgJ2R0JyBzdGFydCB0YWdzIGluXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIGlmIChzcGVjaWFsVGFncy5pbmRleE9mKHRhZykgIT09IC0xICYmIHRhZyAhPT0gJ2FkZHJlc3MnICYmIHRhZyAhPT0gJ2RpdicgJiYgdGFnICE9PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7XG4gICAgfVxuXG4gICAgYW5jZXN0b3JJbmZvLnBhcmVudFRhZyA9IGluZm87XG5cbiAgICBpZiAodGFnID09PSAnZm9ybScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2EnKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnYnV0dG9uJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnbm9icicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2xpJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0Jykge1xuICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JJbmZvO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xuICAgIC8vIEZpcnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4uLlxuICAgIHN3aXRjaCAocGFyZW50VGFnKSB7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3RcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJ29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICBjYXNlICdvcHRncm91cCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBtZWFuIHdlJ3JlIGluIGEgPHNlbGVjdD5cbiAgICAgIC8vIGJ1dFxuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JztcblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGRcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb25cbiAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3Igc2luY2UgdGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvIFwiaW4gYm9keVwiIG1vZGUgZm9yXG4gICAgICAvLyBhbGwgZXhjZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBhcnNpbmcgYmVoYXZpb3IgYW55d2F5LlxuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50clxuICAgICAgY2FzZSAndHInOlxuICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRib2R5XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICd0cicgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jb2xncm91cFxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRhYmxlXG4gICAgICBjYXNlICd0YWJsZSc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdjYXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAndGJvZHknIHx8IHRhZyA9PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5oZWFkXG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2Jhc2UnIHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09ICdiZ3NvdW5kJyB8fCB0YWcgPT09ICdsaW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09ICd0aXRsZScgfHwgdGFnID09PSAnbm9zY3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1sLWVsZW1lbnRcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwgdGFnID09PSAnYm9keSc7XG4gICAgfVxuXG4gICAgLy8gUHJvYmFibHkgaW4gdGhlIFwiaW4gYm9keVwiIHBhcnNpbmcgbW9kZSwgc28gd2Ugb3V0bGF3IG9ubHkgdGFnIGNvbWJvc1xuICAgIC8vIHdoZXJlIHRoZSBwYXJzaW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3NlcyB0byBiZSBhZGRlZC5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAgIGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicgJiYgcGFyZW50VGFnICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcgIT09ICdoNScgJiYgcGFyZW50VGFnICE9PSAnaDYnO1xuXG4gICAgICBjYXNlICdycCc6XG4gICAgICBjYXNlICdydCc6XG4gICAgICAgIHJldHVybiBpbXBsaWVkRW5kVGFncy5pbmRleE9mKHBhcmVudFRhZykgPT09IC0xO1xuXG4gICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2NvbCc6XG4gICAgICBjYXNlICdjb2xncm91cCc6XG4gICAgICBjYXNlICdmcmFtZSc6XG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgIGNhc2UgJ3Rib2R5JzpcbiAgICAgIGNhc2UgJ3RkJzpcbiAgICAgIGNhc2UgJ3Rmb290JzpcbiAgICAgIGNhc2UgJ3RoJzpcbiAgICAgIGNhc2UgJ3RoZWFkJzpcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBoYXZlIHNwZWNpYWwgY2hpbGRcbiAgICAgICAgLy8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdyZSBkb3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFuZFxuICAgICAgICAvLyBzbyB3ZSBhbGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBhcyBhbGwgb3RoZXJcbiAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuXG4gICAgICAgIHJldHVybiBwYXJlbnRUYWcgPT0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgZmluZEludmFsaWRBbmNlc3RvckZvclRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgIGNhc2UgJ2FydGljbGUnOlxuICAgICAgY2FzZSAnYXNpZGUnOlxuICAgICAgY2FzZSAnYmxvY2txdW90ZSc6XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgY2FzZSAnZGV0YWlscyc6XG4gICAgICBjYXNlICdkaWFsb2cnOlxuICAgICAgY2FzZSAnZGlyJzpcbiAgICAgIGNhc2UgJ2Rpdic6XG4gICAgICBjYXNlICdkbCc6XG4gICAgICBjYXNlICdmaWVsZHNldCc6XG4gICAgICBjYXNlICdmaWdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2ZpZ3VyZSc6XG4gICAgICBjYXNlICdmb290ZXInOlxuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgIGNhc2UgJ2hncm91cCc6XG4gICAgICBjYXNlICdtYWluJzpcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgY2FzZSAnbmF2JzpcbiAgICAgIGNhc2UgJ29sJzpcbiAgICAgIGNhc2UgJ3AnOlxuICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICBjYXNlICdzdW1tYXJ5JzpcbiAgICAgIGNhc2UgJ3VsJzpcblxuICAgICAgY2FzZSAncHJlJzpcbiAgICAgIGNhc2UgJ2xpc3RpbmcnOlxuXG4gICAgICBjYXNlICd0YWJsZSc6XG5cbiAgICAgIGNhc2UgJ2hyJzpcblxuICAgICAgY2FzZSAneG1wJzpcblxuICAgICAgY2FzZSAnaDEnOlxuICAgICAgY2FzZSAnaDInOlxuICAgICAgY2FzZSAnaDMnOlxuICAgICAgY2FzZSAnaDQnOlxuICAgICAgY2FzZSAnaDUnOlxuICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xuXG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2FzZSAnbGknOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2RkJzpcbiAgICAgIGNhc2UgJ2R0JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZztcblxuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlO1xuXG4gICAgICBjYXNlICdhJzpcbiAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0aGluZyBhYm91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay5cbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnbm9icic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZVxuICAgKiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFuZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgdmFyIGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIC8qZXNsaW50LWRpc2FibGUgc3BhY2UtYWZ0ZXIta2V5d29yZHMgKi9cbiAgICBkbyB7XG4gICAgICAvKmVzbGludC1lbmFibGUgc3BhY2UtYWZ0ZXIta2V5d29yZHMgKi9cbiAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2UpO1xuICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgc3RhY2sucmV2ZXJzZSgpO1xuICAgIHJldHVybiBzdGFjaztcbiAgfTtcblxuICB2YXIgZGlkV2FybiA9IHt9O1xuXG4gIHZhbGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRJbnN0YW5jZSwgYW5jZXN0b3JJbmZvKSB7XG4gICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuICAgIHZhciBwYXJlbnRJbmZvID0gYW5jZXN0b3JJbmZvLnBhcmVudFRhZztcbiAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZztcblxuICAgIHZhciBpbnZhbGlkUGFyZW50ID0gaXNUYWdWYWxpZFdpdGhQYXJlbnQoY2hpbGRUYWcsIHBhcmVudFRhZykgPyBudWxsIDogcGFyZW50SW5mbztcbiAgICB2YXIgaW52YWxpZEFuY2VzdG9yID0gaW52YWxpZFBhcmVudCA/IG51bGwgOiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFnLCBhbmNlc3RvckluZm8pO1xuICAgIHZhciBwcm9ibGVtYXRpYyA9IGludmFsaWRQYXJlbnQgfHwgaW52YWxpZEFuY2VzdG9yO1xuXG4gICAgaWYgKHByb2JsZW1hdGljKSB7XG4gICAgICB2YXIgYW5jZXN0b3JUYWcgPSBwcm9ibGVtYXRpYy50YWc7XG4gICAgICB2YXIgYW5jZXN0b3JJbnN0YW5jZSA9IHByb2JsZW1hdGljLmluc3RhbmNlO1xuXG4gICAgICB2YXIgY2hpbGRPd25lciA9IGNoaWxkSW5zdGFuY2UgJiYgY2hpbGRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXIgPSBhbmNlc3Rvckluc3RhbmNlICYmIGFuY2VzdG9ySW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblxuICAgICAgdmFyIGNoaWxkT3duZXJzID0gZmluZE93bmVyU3RhY2soY2hpbGRPd25lcik7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lcnMgPSBmaW5kT3duZXJTdGFjayhhbmNlc3Rvck93bmVyKTtcblxuICAgICAgdmFyIG1pblN0YWNrTGVuID0gTWF0aC5taW4oY2hpbGRPd25lcnMubGVuZ3RoLCBhbmNlc3Rvck93bmVycy5sZW5ndGgpO1xuICAgICAgdmFyIGk7XG5cbiAgICAgIHZhciBkZWVwZXN0Q29tbW9uID0gLTE7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbWluU3RhY2tMZW47IGkrKykge1xuICAgICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09IGFuY2VzdG9yT3duZXJzW2ldKSB7XG4gICAgICAgICAgZGVlcGVzdENvbW1vbiA9IGk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIFVOS05PV04gPSAnKHVua25vd24pJztcbiAgICAgIHZhciBjaGlsZE93bmVyTmFtZXMgPSBjaGlsZE93bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lck5hbWVzID0gYW5jZXN0b3JPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIG93bmVySW5mbyA9IFtdLmNvbmNhdChcbiAgICAgIC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBoYXZlIGEgY29tbW9uIG93bmVyIGFuY2VzdG9yLCBzdGFydFxuICAgICAgLy8gd2l0aCB0aGF0IC0tIG90aGVyd2lzZSB3ZSBqdXN0IHN0YXJ0IHdpdGggdGhlIHBhcmVudCdzIG93bmVycy5cbiAgICAgIGRlZXBlc3RDb21tb24gIT09IC0xID8gY2hpbGRPd25lcnNbZGVlcGVzdENvbW1vbl0uZ2V0TmFtZSgpIHx8IFVOS05PV04gOiBbXSwgYW5jZXN0b3JPd25lck5hbWVzLCBhbmNlc3RvclRhZyxcbiAgICAgIC8vIElmIHdlJ3JlIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5jZXN0cnksIGFkZCAnLi4uJ1xuICAgICAgaW52YWxpZEFuY2VzdG9yID8gWycuLi4nXSA6IFtdLCBjaGlsZE93bmVyTmFtZXMsIGNoaWxkVGFnKS5qb2luKCcgPiAnKTtcblxuICAgICAgdmFyIHdhcm5LZXkgPSAhIWludmFsaWRQYXJlbnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFnICsgJ3wnICsgb3duZXJJbmZvO1xuICAgICAgaWYgKGRpZFdhcm5bd2FybktleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGlkV2Fyblt3YXJuS2V5XSA9IHRydWU7XG5cbiAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7XG4gICAgICAgIHZhciBpbmZvID0gJyc7XG4gICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykge1xuICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIuJztcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiA8JXM+IGNhbm5vdCBhcHBlYXIgYXMgYSBjaGlsZCBvZiA8JXM+LiAnICsgJ1NlZSAlcy4lcycsIGNoaWxkVGFnLCBhbmNlc3RvclRhZywgb3duZXJJbmZvLCBpbmZvKSA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6IDwlcz4gY2Fubm90IGFwcGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgY2hpbGRUYWcsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleSA9ICdfX3ZhbGlkYXRlRE9NTmVzdGluZ19hbmNlc3RvckluZm8kJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG4gIHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRlZEFuY2VzdG9ySW5mbztcblxuICAvLyBGb3IgdGVzdGluZ1xuICB2YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxpZEluQ29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5wYXJlbnRUYWc7XG4gICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG4gICAgcmV0dXJuIGlzVGFnVmFsaWRXaXRoUGFyZW50KHRhZywgcGFyZW50VGFnKSAmJiAhZmluZEludmFsaWRBbmNlc3RvckZvclRhZyh0YWcsIGFuY2VzdG9ySW5mbyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsaWRhdGVET01OZXN0aW5nO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdmRtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bkxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5YRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdaVzF3ZEhsR2RXNWpkR2x2YmlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1Um5WdVkzUnBiMjRuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNTJZWElnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuSUQwZ1pXMXdkSGxHZFc1amRHbHZianRjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdMeThnVkdocGN5QjJZV3hwWkdGMGFXOXVJR052WkdVZ2QyRnpJSGR5YVhSMFpXNGdZbUZ6WldRZ2IyNGdkR2hsSUVoVVRVdzFJSEJoY25OcGJtY2djM0JsWXpwY2JpQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2phR0Z6TFdGdUxXVnNaVzFsYm5RdGFXNHRjMk52Y0dWY2JpQWdMeTljYmlBZ0x5OGdUbTkwWlRvZ2RHaHBjeUJrYjJWeklHNXZkQ0JqWVhSamFDQmhiR3dnYVc1MllXeHBaQ0J1WlhOMGFXNW5MQ0J1YjNJZ1pHOWxjeUJwZENCMGNua2dkRzhnS0dGeklHbDBKM05jYmlBZ0x5OGdibTkwSUdOc1pXRnlJSGRvWVhRZ2NISmhZM1JwWTJGc0lHSmxibVZtYVhRZ1pHOXBibWNnYzI4Z2NISnZkbWxrWlhNcE95QnBibk4wWldGa0xDQjNaU0IzWVhKdUlHOXViSGxjYmlBZ0x5OGdabTl5SUdOaGMyVnpJSGRvWlhKbElIUm9aU0J3WVhKelpYSWdkMmxzYkNCbmFYWmxJR0VnY0dGeWMyVWdkSEpsWlNCa2FXWm1aWEpwYm1jZ1puSnZiU0IzYUdGMElGSmxZV04wWEc0Z0lDOHZJR2x1ZEdWdVpHVmtMaUJHYjNJZ1pYaGhiWEJzWlN3Z1BHSStQR1JwZGo0OEwyUnBkajQ4TDJJK0lHbHpJR2x1ZG1Gc2FXUWdZblYwSUhkbElHUnZiaWQwSUhkaGNtNWNiaUFnTHk4Z1ltVmpZWFZ6WlNCcGRDQnpkR2xzYkNCd1lYSnpaWE1nWTI5eWNtVmpkR3g1T3lCM1pTQmtieUIzWVhKdUlHWnZjaUJ2ZEdobGNpQmpZWE5sY3lCc2FXdGxJRzVsYzNSbFpGeHVJQ0F2THlBOGNENGdkR0ZuY3lCM2FHVnlaU0IwYUdVZ1ltVm5hVzV1YVc1bklHOW1JSFJvWlNCelpXTnZibVFnWld4bGJXVnVkQ0JwYlhCc2FXTnBkR3g1SUdOc2IzTmxjeUIwYUdWY2JpQWdMeThnWm1seWMzUXNJR05oZFhOcGJtY2dZU0JqYjI1bWRYTnBibWNnYldWemN5NWNibHh1SUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOemNHVmphV0ZzWEc0Z0lIWmhjaUJ6Y0dWamFXRnNWR0ZuY3lBOUlGc25ZV1JrY21WemN5Y3NJQ2RoY0hCc1pYUW5MQ0FuWVhKbFlTY3NJQ2RoY25ScFkyeGxKeXdnSjJGemFXUmxKeXdnSjJKaGMyVW5MQ0FuWW1GelpXWnZiblFuTENBblltZHpiM1Z1WkNjc0lDZGliRzlqYTNGMWIzUmxKeXdnSjJKdlpIa25MQ0FuWW5JbkxDQW5ZblYwZEc5dUp5d2dKMk5oY0hScGIyNG5MQ0FuWTJWdWRHVnlKeXdnSjJOdmJDY3NJQ2RqYjJ4bmNtOTFjQ2NzSUNka1pDY3NJQ2RrWlhSaGFXeHpKeXdnSjJScGNpY3NJQ2RrYVhZbkxDQW5aR3duTENBblpIUW5MQ0FuWlcxaVpXUW5MQ0FuWm1sbGJHUnpaWFFuTENBblptbG5ZMkZ3ZEdsdmJpY3NJQ2RtYVdkMWNtVW5MQ0FuWm05dmRHVnlKeXdnSjJadmNtMG5MQ0FuWm5KaGJXVW5MQ0FuWm5KaGJXVnpaWFFuTENBbmFERW5MQ0FuYURJbkxDQW5hRE1uTENBbmFEUW5MQ0FuYURVbkxDQW5hRFluTENBbmFHVmhaQ2NzSUNkb1pXRmtaWEluTENBbmFHZHliM1Z3Snl3Z0oyaHlKeXdnSjJoMGJXd25MQ0FuYVdaeVlXMWxKeXdnSjJsdFp5Y3NJQ2RwYm5CMWRDY3NJQ2RwYzJsdVpHVjRKeXdnSjJ4cEp5d2dKMnhwYm1zbkxDQW5iR2x6ZEdsdVp5Y3NJQ2R0WVdsdUp5d2dKMjFoY25GMVpXVW5MQ0FuYldWdWRTY3NJQ2R0Wlc1MWFYUmxiU2NzSUNkdFpYUmhKeXdnSjI1aGRpY3NJQ2R1YjJWdFltVmtKeXdnSjI1dlpuSmhiV1Z6Snl3Z0oyNXZjMk55YVhCMEp5d2dKMjlpYW1WamRDY3NJQ2R2YkNjc0lDZHdKeXdnSjNCaGNtRnRKeXdnSjNCc1lXbHVkR1Y0ZENjc0lDZHdjbVVuTENBbmMyTnlhWEIwSnl3Z0ozTmxZM1JwYjI0bkxDQW5jMlZzWldOMEp5d2dKM052ZFhKalpTY3NJQ2R6ZEhsc1pTY3NJQ2R6ZFcxdFlYSjVKeXdnSjNSaFlteGxKeXdnSjNSaWIyUjVKeXdnSjNSa0p5d2dKM1JsYlhCc1lYUmxKeXdnSjNSbGVIUmhjbVZoSnl3Z0ozUm1iMjkwSnl3Z0ozUm9KeXdnSjNSb1pXRmtKeXdnSjNScGRHeGxKeXdnSjNSeUp5d2dKM1J5WVdOckp5d2dKM1ZzSnl3Z0ozZGljaWNzSUNkNGJYQW5YVHRjYmx4dUlDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTm9ZWE10WVc0dFpXeGxiV1Z1ZEMxcGJpMXpZMjl3WlZ4dUlDQjJZWElnYVc1VFkyOXdaVlJoWjNNZ1BTQmJKMkZ3Y0d4bGRDY3NJQ2RqWVhCMGFXOXVKeXdnSjJoMGJXd25MQ0FuZEdGaWJHVW5MQ0FuZEdRbkxDQW5kR2duTENBbmJXRnljWFZsWlNjc0lDZHZZbXBsWTNRbkxDQW5kR1Z0Y0d4aGRHVW5MRnh1WEc0Z0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kyaDBiV3d0YVc1MFpXZHlZWFJwYjI0dGNHOXBiblJjYmlBZ0x5OGdWRTlFVHpvZ1JHbHpkR2x1WjNWcGMyZ2dZbmtnYm1GdFpYTndZV05sSUdobGNtVWdMUzBnWm05eUlEeDBhWFJzWlQ0c0lHbHVZMngxWkdsdVp5QnBkQ0JvWlhKbFhHNGdJQzh2SUdWeWNuTWdiMjRnZEdobElITnBaR1VnYjJZZ1ptVjNaWElnZDJGeWJtbHVaM05jYmlBZ0oyWnZjbVZwWjI1UFltcGxZM1FuTENBblpHVnpZeWNzSUNkMGFYUnNaU2RkTzF4dVhHNGdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJMmhoY3kxaGJpMWxiR1Z0Wlc1MExXbHVMV0oxZEhSdmJpMXpZMjl3WlZ4dUlDQjJZWElnWW5WMGRHOXVVMk52Y0dWVVlXZHpJRDBnYVc1VFkyOXdaVlJoWjNNdVkyOXVZMkYwS0ZzblluVjBkRzl1SjEwcE8xeHVYRzRnSUM4dklHaDBkSEJ6T2k4dmFIUnRiQzV6Y0dWakxuZG9ZWFIzWnk1dmNtY3ZiWFZzZEdsd1lXZGxMM041Ym5SaGVDNW9kRzFzSTJkbGJtVnlZWFJsTFdsdGNHeHBaV1F0Wlc1a0xYUmhaM05jYmlBZ2RtRnlJR2x0Y0d4cFpXUkZibVJVWVdkeklEMGdXeWRrWkNjc0lDZGtkQ2NzSUNkc2FTY3NJQ2R2Y0hScGIyNG5MQ0FuYjNCMFozSnZkWEFuTENBbmNDY3NJQ2R5Y0Njc0lDZHlkQ2RkTzF4dVhHNGdJSFpoY2lCbGJYQjBlVUZ1WTJWemRHOXlTVzVtYnlBOUlIdGNiaUFnSUNCd1lYSmxiblJVWVdjNklHNTFiR3dzWEc1Y2JpQWdJQ0JtYjNKdFZHRm5PaUJ1ZFd4c0xGeHVJQ0FnSUdGVVlXZEpibE5qYjNCbE9pQnVkV3hzTEZ4dUlDQWdJR0oxZEhSdmJsUmhaMGx1VTJOdmNHVTZJRzUxYkd3c1hHNGdJQ0FnYm05aWNsUmhaMGx1VTJOdmNHVTZJRzUxYkd3c1hHNGdJQ0FnY0ZSaFowbHVRblYwZEc5dVUyTnZjR1U2SUc1MWJHd3NYRzVjYmlBZ0lDQnNhWE4wU1hSbGJWUmhaMEYxZEc5amJHOXphVzVuT2lCdWRXeHNMRnh1SUNBZ0lHUnNTWFJsYlZSaFowRjFkRzlqYkc5emFXNW5PaUJ1ZFd4c1hHNGdJSDA3WEc1Y2JpQWdkbUZ5SUhWd1pHRjBaV1JCYm1ObGMzUnZja2x1Wm04Z1BTQm1kVzVqZEdsdmJpQW9iMnhrU1c1bWJ5d2dkR0ZuTENCcGJuTjBZVzVqWlNrZ2UxeHVJQ0FnSUhaaGNpQmhibU5sYzNSdmNrbHVabThnUFNCaGMzTnBaMjRvZTMwc0lHOXNaRWx1Wm04Z2ZId2daVzF3ZEhsQmJtTmxjM1J2Y2tsdVptOHBPMXh1SUNBZ0lIWmhjaUJwYm1adklEMGdleUIwWVdjNklIUmhaeXdnYVc1emRHRnVZMlU2SUdsdWMzUmhibU5sSUgwN1hHNWNiaUFnSUNCcFppQW9hVzVUWTI5d1pWUmhaM011YVc1a1pYaFBaaWgwWVdjcElDRTlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbUZVWVdkSmJsTmpiM0JsSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJR0Z1WTJWemRHOXlTVzVtYnk1aWRYUjBiMjVVWVdkSmJsTmpiM0JsSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJR0Z1WTJWemRHOXlTVzVtYnk1dWIySnlWR0ZuU1c1VFkyOXdaU0E5SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGlkWFIwYjI1VFkyOXdaVlJoWjNNdWFXNWtaWGhQWmloMFlXY3BJQ0U5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdZVzVqWlhOMGIzSkpibVp2TG5CVVlXZEpia0oxZEhSdmJsTmpiM0JsSUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJUWldVZ2NuVnNaWE1nWm05eUlDZHNhU2NzSUNka1pDY3NJQ2RrZENjZ2MzUmhjblFnZEdGbmN5QnBibHh1SUNBZ0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kzQmhjbk5wYm1jdGJXRnBiaTFwYm1KdlpIbGNiaUFnSUNCcFppQW9jM0JsWTJsaGJGUmhaM011YVc1a1pYaFBaaWgwWVdjcElDRTlQU0F0TVNBbUppQjBZV2NnSVQwOUlDZGhaR1J5WlhOekp5QW1KaUIwWVdjZ0lUMDlJQ2RrYVhZbklDWW1JSFJoWnlBaFBUMGdKM0FuS1NCN1hHNGdJQ0FnSUNCaGJtTmxjM1J2Y2tsdVptOHViR2x6ZEVsMFpXMVVZV2RCZFhSdlkyeHZjMmx1WnlBOUlHNTFiR3c3WEc0Z0lDQWdJQ0JoYm1ObGMzUnZja2x1Wm04dVpHeEpkR1Z0VkdGblFYVjBiMk5zYjNOcGJtY2dQU0J1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NXdZWEpsYm5SVVlXY2dQU0JwYm1adk8xeHVYRzRnSUNBZ2FXWWdLSFJoWnlBOVBUMGdKMlp2Y20wbktTQjdYRzRnSUNBZ0lDQmhibU5sYzNSdmNrbHVabTh1Wm05eWJWUmhaeUE5SUdsdVptODdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDBZV2NnUFQwOUlDZGhKeWtnZTF4dUlDQWdJQ0FnWVc1alpYTjBiM0pKYm1adkxtRlVZV2RKYmxOamIzQmxJRDBnYVc1bWJ6dGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUmhaeUE5UFQwZ0oySjFkSFJ2YmljcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTVpZFhSMGIyNVVZV2RKYmxOamIzQmxJRDBnYVc1bWJ6dGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUmhaeUE5UFQwZ0oyNXZZbkluS1NCN1hHNGdJQ0FnSUNCaGJtTmxjM1J2Y2tsdVptOHVibTlpY2xSaFowbHVVMk52Y0dVZ1BTQnBibVp2TzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdGbklEMDlQU0FuY0NjcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTV3VkdGblNXNUNkWFIwYjI1VFkyOXdaU0E5SUdsdVptODdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDBZV2NnUFQwOUlDZHNhU2NwSUh0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NXNhWE4wU1hSbGJWUmhaMEYxZEc5amJHOXphVzVuSUQwZ2FXNW1ienRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJoWnlBOVBUMGdKMlJrSnlCOGZDQjBZV2NnUFQwOUlDZGtkQ2NwSUh0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NWtiRWwwWlcxVVlXZEJkWFJ2WTJ4dmMybHVaeUE5SUdsdVptODdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdGdVkyVnpkRzl5U1c1bWJ6dGNiaUFnZlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUIzYUdWMGFHVnlYRzRnSUNBcUwxeHVJQ0IyWVhJZ2FYTlVZV2RXWVd4cFpGZHBkR2hRWVhKbGJuUWdQU0JtZFc1amRHbHZiaUFvZEdGbkxDQndZWEpsYm5SVVlXY3BJSHRjYmlBZ0lDQXZMeUJHYVhKemRDd2diR1YwSjNNZ1kyaGxZMnNnYVdZZ2QyVW5jbVVnYVc0Z1lXNGdkVzUxYzNWaGJDQndZWEp6YVc1bklHMXZaR1V1TGk1Y2JpQWdJQ0J6ZDJsMFkyZ2dLSEJoY21WdWRGUmhaeWtnZTF4dUlDQWdJQ0FnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqY0dGeWMybHVaeTF0WVdsdUxXbHVjMlZzWldOMFhHNGdJQ0FnSUNCallYTmxJQ2R6Wld4bFkzUW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0ZuSUQwOVBTQW5iM0IwYVc5dUp5QjhmQ0IwWVdjZ1BUMDlJQ2R2Y0hSbmNtOTFjQ2NnZkh3Z2RHRm5JRDA5UFNBbkkzUmxlSFFuTzF4dUlDQWdJQ0FnWTJGelpTQW5iM0IwWjNKdmRYQW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0ZuSUQwOVBTQW5iM0IwYVc5dUp5QjhmQ0IwWVdjZ1BUMDlJQ2NqZEdWNGRDYzdYRzRnSUNBZ0lDQXZMeUJUZEhKcFkzUnNlU0J6Y0dWaGEybHVaeXdnYzJWbGFXNW5JR0Z1SUR4dmNIUnBiMjQrSUdSdlpYTnVKM1FnYldWaGJpQjNaU2R5WlNCcGJpQmhJRHh6Wld4bFkzUStYRzRnSUNBZ0lDQXZMeUJpZFhSY2JpQWdJQ0FnSUdOaGMyVWdKMjl3ZEdsdmJpYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBZV2NnUFQwOUlDY2pkR1Y0ZENjN1hHNWNiaUFnSUNBZ0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kzQmhjbk5wYm1jdGJXRnBiaTFwYm5Sa1hHNGdJQ0FnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzVqWVhCMGFXOXVYRzRnSUNBZ0lDQXZMeUJPYnlCemNHVmphV0ZzSUdKbGFHRjJhVzl5SUhOcGJtTmxJSFJvWlhObElISjFiR1Z6SUdaaGJHd2dZbUZqYXlCMGJ5QmNJbWx1SUdKdlpIbGNJaUJ0YjJSbElHWnZjbHh1SUNBZ0lDQWdMeThnWVd4c0lHVjRZMlZ3ZENCemNHVmphV0ZzSUhSaFlteGxJRzV2WkdWeklIZG9hV05vSUdOaGRYTmxJR0poWkNCd1lYSnphVzVuSUdKbGFHRjJhVzl5SUdGdWVYZGhlUzVjYmx4dUlDQWdJQ0FnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqY0dGeWMybHVaeTF0WVdsdUxXbHVkSEpjYmlBZ0lDQWdJR05oYzJVZ0ozUnlKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJoWnlBOVBUMGdKM1JvSnlCOGZDQjBZV2NnUFQwOUlDZDBaQ2NnZkh3Z2RHRm5JRDA5UFNBbmMzUjViR1VuSUh4OElIUmhaeUE5UFQwZ0ozTmpjbWx3ZENjZ2ZId2dkR0ZuSUQwOVBTQW5kR1Z0Y0d4aGRHVW5PMXh1WEc0Z0lDQWdJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNTBZbTlrZVZ4dUlDQWdJQ0FnWTJGelpTQW5kR0p2Wkhrbk9seHVJQ0FnSUNBZ1kyRnpaU0FuZEdobFlXUW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmRHWnZiM1FuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGbklEMDlQU0FuZEhJbklIeDhJSFJoWnlBOVBUMGdKM04wZVd4bEp5QjhmQ0IwWVdjZ1BUMDlJQ2R6WTNKcGNIUW5JSHg4SUhSaFp5QTlQVDBnSjNSbGJYQnNZWFJsSnp0Y2JseHVJQ0FnSUNBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amNHRnljMmx1WnkxdFlXbHVMV2x1WTI5c1ozSnZkWEJjYmlBZ0lDQWdJR05oYzJVZ0oyTnZiR2R5YjNWd0p6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUmhaeUE5UFQwZ0oyTnZiQ2NnZkh3Z2RHRm5JRDA5UFNBbmRHVnRjR3hoZEdVbk8xeHVYRzRnSUNBZ0lDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTndZWEp6YVc1bkxXMWhhVzR0YVc1MFlXSnNaVnh1SUNBZ0lDQWdZMkZ6WlNBbmRHRmliR1VuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGbklEMDlQU0FuWTJGd2RHbHZiaWNnZkh3Z2RHRm5JRDA5UFNBblkyOXNaM0p2ZFhBbklIeDhJSFJoWnlBOVBUMGdKM1JpYjJSNUp5QjhmQ0IwWVdjZ1BUMDlJQ2QwWm05dmRDY2dmSHdnZEdGbklEMDlQU0FuZEdobFlXUW5JSHg4SUhSaFp5QTlQVDBnSjNOMGVXeGxKeUI4ZkNCMFlXY2dQVDA5SUNkelkzSnBjSFFuSUh4OElIUmhaeUE5UFQwZ0ozUmxiWEJzWVhSbEp6dGNibHh1SUNBZ0lDQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2pjR0Z5YzJsdVp5MXRZV2x1TFdsdWFHVmhaRnh1SUNBZ0lDQWdZMkZ6WlNBbmFHVmhaQ2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjZ1BUMDlJQ2RpWVhObEp5QjhmQ0IwWVdjZ1BUMDlJQ2RpWVhObFptOXVkQ2NnZkh3Z2RHRm5JRDA5UFNBblltZHpiM1Z1WkNjZ2ZId2dkR0ZuSUQwOVBTQW5iR2x1YXljZ2ZId2dkR0ZuSUQwOVBTQW5iV1YwWVNjZ2ZId2dkR0ZuSUQwOVBTQW5kR2wwYkdVbklIeDhJSFJoWnlBOVBUMGdKMjV2YzJOeWFYQjBKeUI4ZkNCMFlXY2dQVDA5SUNkdWIyWnlZVzFsY3ljZ2ZId2dkR0ZuSUQwOVBTQW5jM1I1YkdVbklIeDhJSFJoWnlBOVBUMGdKM05qY21sd2RDY2dmSHdnZEdGbklEMDlQU0FuZEdWdGNHeGhkR1VuTzF4dVhHNGdJQ0FnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6WlcxaGJuUnBZM011YUhSdGJDTjBhR1V0YUhSdGJDMWxiR1Z0Wlc1MFhHNGdJQ0FnSUNCallYTmxJQ2RvZEcxc0p6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUmhaeUE5UFQwZ0oyaGxZV1FuSUh4OElIUmhaeUE5UFQwZ0oySnZaSGtuTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZCeWIySmhZbXg1SUdsdUlIUm9aU0JjSW1sdUlHSnZaSGxjSWlCd1lYSnphVzVuSUcxdlpHVXNJSE52SUhkbElHOTFkR3hoZHlCdmJteDVJSFJoWnlCamIyMWliM05jYmlBZ0lDQXZMeUIzYUdWeVpTQjBhR1VnY0dGeWMybHVaeUJ5ZFd4bGN5QmpZWFZ6WlNCcGJYQnNhV05wZENCdmNHVnVjeUJ2Y2lCamJHOXpaWE1nZEc4Z1ltVWdZV1JrWldRdVhHNGdJQ0FnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqY0dGeWMybHVaeTF0WVdsdUxXbHVZbTlrZVZ4dUlDQWdJSE4zYVhSamFDQW9kR0ZuS1NCN1hHNGdJQ0FnSUNCallYTmxJQ2RvTVNjNlhHNGdJQ0FnSUNCallYTmxJQ2RvTWljNlhHNGdJQ0FnSUNCallYTmxJQ2RvTXljNlhHNGdJQ0FnSUNCallYTmxJQ2RvTkNjNlhHNGdJQ0FnSUNCallYTmxJQ2RvTlNjNlhHNGdJQ0FnSUNCallYTmxJQ2RvTmljNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCd1lYSmxiblJVWVdjZ0lUMDlJQ2RvTVNjZ0ppWWdjR0Z5Wlc1MFZHRm5JQ0U5UFNBbmFESW5JQ1ltSUhCaGNtVnVkRlJoWnlBaFBUMGdKMmd6SnlBbUppQndZWEpsYm5SVVlXY2dJVDA5SUNkb05DY2dKaVlnY0dGeVpXNTBWR0ZuSUNFOVBTQW5hRFVuSUNZbUlIQmhjbVZ1ZEZSaFp5QWhQVDBnSjJnMkp6dGNibHh1SUNBZ0lDQWdZMkZ6WlNBbmNuQW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmNuUW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzF3YkdsbFpFVnVaRlJoWjNNdWFXNWtaWGhQWmlod1lYSmxiblJVWVdjcElEMDlQU0F0TVR0Y2JseHVJQ0FnSUNBZ1kyRnpaU0FuWTJGd2RHbHZiaWM2WEc0Z0lDQWdJQ0JqWVhObElDZGpiMnduT2x4dUlDQWdJQ0FnWTJGelpTQW5ZMjlzWjNKdmRYQW5PbHh1SUNBZ0lDQWdZMkZ6WlNBblpuSmhiV1VuT2x4dUlDQWdJQ0FnWTJGelpTQW5hR1ZoWkNjNlhHNGdJQ0FnSUNCallYTmxJQ2QwWW05a2VTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMFpDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMFptOXZkQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZDBhQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZDBhR1ZoWkNjNlhHNGdJQ0FnSUNCallYTmxJQ2QwY2ljNlhHNGdJQ0FnSUNBZ0lDOHZJRlJvWlhObElIUmhaM01nWVhKbElHOXViSGtnZG1Gc2FXUWdkMmwwYUNCaElHWmxkeUJ3WVhKbGJuUnpJSFJvWVhRZ2FHRjJaU0J6Y0dWamFXRnNJR05vYVd4a1hHNGdJQ0FnSUNBZ0lDOHZJSEJoY25OcGJtY2djblZzWlhNZ0xTMGdhV1lnZDJVbmNtVWdaRzkzYmlCb1pYSmxMQ0IwYUdWdUlHNXZibVVnYjJZZ2RHaHZjMlVnYldGMFkyaGxaQ0JoYm1SY2JpQWdJQ0FnSUNBZ0x5OGdjMjhnZDJVZ1lXeHNiM2NnYVhRZ2IyNXNlU0JwWmlCM1pTQmtiMjRuZENCcmJtOTNJSGRvWVhRZ2RHaGxJSEJoY21WdWRDQnBjeXdnWVhNZ1lXeHNJRzkwYUdWeVhHNGdJQ0FnSUNBZ0lDOHZJR05oYzJWeklHRnlaU0JwYm5aaGJHbGtMbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjR0Z5Wlc1MFZHRm5JRDA5SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgwN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nZDJobGRHaGxjbHh1SUNBZ0tpOWNiaUFnZG1GeUlHWnBibVJKYm5aaGJHbGtRVzVqWlhOMGIzSkdiM0pVWVdjZ1BTQm1kVzVqZEdsdmJpQW9kR0ZuTENCaGJtTmxjM1J2Y2tsdVptOHBJSHRjYmlBZ0lDQnpkMmwwWTJnZ0tIUmhaeWtnZTF4dUlDQWdJQ0FnWTJGelpTQW5ZV1JrY21WemN5YzZYRzRnSUNBZ0lDQmpZWE5sSUNkaGNuUnBZMnhsSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMkZ6YVdSbEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJKc2IyTnJjWFZ2ZEdVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWTJWdWRHVnlKenBjYmlBZ0lDQWdJR05oYzJVZ0oyUmxkR0ZwYkhNbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWkdsaGJHOW5KenBjYmlBZ0lDQWdJR05oYzJVZ0oyUnBjaWM2WEc0Z0lDQWdJQ0JqWVhObElDZGthWFluT2x4dUlDQWdJQ0FnWTJGelpTQW5aR3duT2x4dUlDQWdJQ0FnWTJGelpTQW5abWxsYkdSelpYUW5PbHh1SUNBZ0lDQWdZMkZ6WlNBblptbG5ZMkZ3ZEdsdmJpYzZYRzRnSUNBZ0lDQmpZWE5sSUNkbWFXZDFjbVVuT2x4dUlDQWdJQ0FnWTJGelpTQW5abTl2ZEdWeUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJobFlXUmxjaWM2WEc0Z0lDQWdJQ0JqWVhObElDZG9aM0p2ZFhBbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYldGcGJpYzZYRzRnSUNBZ0lDQmpZWE5sSUNkdFpXNTFKenBjYmlBZ0lDQWdJR05oYzJVZ0oyNWhkaWM2WEc0Z0lDQWdJQ0JqWVhObElDZHZiQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZHdKenBjYmlBZ0lDQWdJR05oYzJVZ0ozTmxZM1JwYjI0bk9seHVJQ0FnSUNBZ1kyRnpaU0FuYzNWdGJXRnllU2M2WEc0Z0lDQWdJQ0JqWVhObElDZDFiQ2M2WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKM0J5WlNjNlhHNGdJQ0FnSUNCallYTmxJQ2RzYVhOMGFXNW5KenBjYmx4dUlDQWdJQ0FnWTJGelpTQW5kR0ZpYkdVbk9seHVYRzRnSUNBZ0lDQmpZWE5sSUNkb2NpYzZYRzVjYmlBZ0lDQWdJR05oYzJVZ0ozaHRjQ2M2WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMmd4SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmd5SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmd6SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmcwSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmcxSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmcySnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdVkyVnpkRzl5U1c1bWJ5NXdWR0ZuU1c1Q2RYUjBiMjVUWTI5d1pUdGNibHh1SUNBZ0lDQWdZMkZ6WlNBblptOXliU2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYm1ObGMzUnZja2x1Wm04dVptOXliVlJoWnlCOGZDQmhibU5sYzNSdmNrbHVabTh1Y0ZSaFowbHVRblYwZEc5dVUyTnZjR1U3WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMnhwSnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdVkyVnpkRzl5U1c1bWJ5NXNhWE4wU1hSbGJWUmhaMEYxZEc5amJHOXphVzVuTzF4dVhHNGdJQ0FnSUNCallYTmxJQ2RrWkNjNlhHNGdJQ0FnSUNCallYTmxJQ2RrZENjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJtTmxjM1J2Y2tsdVptOHVaR3hKZEdWdFZHRm5RWFYwYjJOc2IzTnBibWM3WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMkoxZEhSdmJpYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhibU5sYzNSdmNrbHVabTh1WW5WMGRHOXVWR0ZuU1c1VFkyOXdaVHRjYmx4dUlDQWdJQ0FnWTJGelpTQW5ZU2M2WEc0Z0lDQWdJQ0FnSUM4dklGTndaV01nYzJGNWN5QnpiMjFsZEdocGJtY2dZV0p2ZFhRZ2MzUnZjbWx1WnlCaElHeHBjM1FnYjJZZ2JXRnlhMlZ5Y3l3Z1luVjBJR2wwSUhOdmRXNWtjMXh1SUNBZ0lDQWdJQ0F2THlCbGNYVnBkbUZzWlc1MElIUnZJSFJvYVhNZ1kyaGxZMnN1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYm1ObGMzUnZja2x1Wm04dVlWUmhaMGx1VTJOdmNHVTdYRzVjYmlBZ0lDQWdJR05oYzJVZ0oyNXZZbkluT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWVc1alpYTjBiM0pKYm1adkxtNXZZbkpVWVdkSmJsTmpiM0JsTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhhWFpsYmlCaElGSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSUdsdWMzUmhibU5sTENCeVpYUjFjbTRnWVNCc2FYTjBJRzltSUdsMGN5QnlaV04xY25OcGRtVmNiaUFnSUNvZ2IzZHVaWEp6TENCemRHRnlkR2x1WnlCaGRDQjBhR1VnY205dmRDQmhibVFnWlc1a2FXNW5JSGRwZEdnZ2RHaGxJR2x1YzNSaGJtTmxJR2wwYzJWc1ppNWNiaUFnSUNvdlhHNGdJSFpoY2lCbWFXNWtUM2R1WlhKVGRHRmpheUE5SUdaMWJtTjBhVzl1SUNocGJuTjBZVzVqWlNrZ2UxeHVJQ0FnSUdsbUlDZ2hhVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmJYVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnYzNSaFkyc2dQU0JiWFR0Y2JpQWdJQ0F2S21WemJHbHVkQzFrYVhOaFlteGxJSE53WVdObExXRm1kR1Z5TFd0bGVYZHZjbVJ6SUNvdlhHNGdJQ0FnWkc4Z2UxeHVJQ0FnSUNBZ0x5cGxjMnhwYm5RdFpXNWhZbXhsSUhOd1lXTmxMV0ZtZEdWeUxXdGxlWGR2Y21SeklDb3ZYRzRnSUNBZ0lDQnpkR0ZqYXk1d2RYTm9LR2x1YzNSaGJtTmxLVHRjYmlBZ0lDQjlJSGRvYVd4bElDaHBibk4wWVc1alpTQTlJR2x1YzNSaGJtTmxMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJcE8xeHVJQ0FnSUhOMFlXTnJMbkpsZG1WeWMyVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2MzUmhZMnM3WEc0Z0lIMDdYRzVjYmlBZ2RtRnlJR1JwWkZkaGNtNGdQU0I3ZlR0Y2JseHVJQ0IyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWNnUFNCbWRXNWpkR2x2YmlBb1kyaHBiR1JVWVdjc0lHTm9hV3hrU1c1emRHRnVZMlVzSUdGdVkyVnpkRzl5U1c1bWJ5a2dlMXh1SUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieUE5SUdGdVkyVnpkRzl5U1c1bWJ5QjhmQ0JsYlhCMGVVRnVZMlZ6ZEc5eVNXNW1ienRjYmlBZ0lDQjJZWElnY0dGeVpXNTBTVzVtYnlBOUlHRnVZMlZ6ZEc5eVNXNW1ieTV3WVhKbGJuUlVZV2M3WEc0Z0lDQWdkbUZ5SUhCaGNtVnVkRlJoWnlBOUlIQmhjbVZ1ZEVsdVptOGdKaVlnY0dGeVpXNTBTVzVtYnk1MFlXYzdYRzVjYmlBZ0lDQjJZWElnYVc1MllXeHBaRkJoY21WdWRDQTlJR2x6VkdGblZtRnNhV1JYYVhSb1VHRnlaVzUwS0dOb2FXeGtWR0ZuTENCd1lYSmxiblJVWVdjcElEOGdiblZzYkNBNklIQmhjbVZ1ZEVsdVptODdYRzRnSUNBZ2RtRnlJR2x1ZG1Gc2FXUkJibU5sYzNSdmNpQTlJR2x1ZG1Gc2FXUlFZWEpsYm5RZ1B5QnVkV3hzSURvZ1ptbHVaRWx1ZG1Gc2FXUkJibU5sYzNSdmNrWnZjbFJoWnloamFHbHNaRlJoWnl3Z1lXNWpaWE4wYjNKSmJtWnZLVHRjYmlBZ0lDQjJZWElnY0hKdllteGxiV0YwYVdNZ1BTQnBiblpoYkdsa1VHRnlaVzUwSUh4OElHbHVkbUZzYVdSQmJtTmxjM1J2Y2p0Y2JseHVJQ0FnSUdsbUlDaHdjbTlpYkdWdFlYUnBZeWtnZTF4dUlDQWdJQ0FnZG1GeUlHRnVZMlZ6ZEc5eVZHRm5JRDBnY0hKdllteGxiV0YwYVdNdWRHRm5PMXh1SUNBZ0lDQWdkbUZ5SUdGdVkyVnpkRzl5U1c1emRHRnVZMlVnUFNCd2NtOWliR1Z0WVhScFl5NXBibk4wWVc1alpUdGNibHh1SUNBZ0lDQWdkbUZ5SUdOb2FXeGtUM2R1WlhJZ1BTQmphR2xzWkVsdWMzUmhibU5sSUNZbUlHTm9hV3hrU1c1emRHRnVZMlV1WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNqdGNiaUFnSUNBZ0lIWmhjaUJoYm1ObGMzUnZjazkzYm1WeUlEMGdZVzVqWlhOMGIzSkpibk4wWVc1alpTQW1KaUJoYm1ObGMzUnZja2x1YzNSaGJtTmxMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJN1hHNWNiaUFnSUNBZ0lIWmhjaUJqYUdsc1pFOTNibVZ5Y3lBOUlHWnBibVJQZDI1bGNsTjBZV05yS0dOb2FXeGtUM2R1WlhJcE8xeHVJQ0FnSUNBZ2RtRnlJR0Z1WTJWemRHOXlUM2R1WlhKeklEMGdabWx1WkU5M2JtVnlVM1JoWTJzb1lXNWpaWE4wYjNKUGQyNWxjaWs3WEc1Y2JpQWdJQ0FnSUhaaGNpQnRhVzVUZEdGamEweGxiaUE5SUUxaGRHZ3ViV2x1S0dOb2FXeGtUM2R1WlhKekxteGxibWQwYUN3Z1lXNWpaWE4wYjNKUGQyNWxjbk11YkdWdVozUm9LVHRjYmlBZ0lDQWdJSFpoY2lCcE8xeHVYRzRnSUNBZ0lDQjJZWElnWkdWbGNHVnpkRU52YlcxdmJpQTlJQzB4TzF4dUlDQWdJQ0FnWm05eUlDaHBJRDBnTURzZ2FTQThJRzFwYmxOMFlXTnJUR1Z1T3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9hV3hrVDNkdVpYSnpXMmxkSUQwOVBTQmhibU5sYzNSdmNrOTNibVZ5YzF0cFhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdSbFpYQmxjM1JEYjIxdGIyNGdQU0JwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lIWmhjaUJWVGt0T1QxZE9JRDBnSnloMWJtdHViM2R1S1NjN1hHNGdJQ0FnSUNCMllYSWdZMmhwYkdSUGQyNWxjazVoYldWeklEMGdZMmhwYkdSUGQyNWxjbk11YzJ4cFkyVW9aR1ZsY0dWemRFTnZiVzF2YmlBcklERXBMbTFoY0NobWRXNWpkR2x2YmlBb2FXNXpkQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYVc1emRDNW5aWFJPWVcxbEtDa2dmSHdnVlU1TFRrOVhUanRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZG1GeUlHRnVZMlZ6ZEc5eVQzZHVaWEpPWVcxbGN5QTlJR0Z1WTJWemRHOXlUM2R1WlhKekxuTnNhV05sS0dSbFpYQmxjM1JEYjIxdGIyNGdLeUF4S1M1dFlYQW9ablZ1WTNScGIyNGdLR2x1YzNRcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHbHVjM1F1WjJWMFRtRnRaU2dwSUh4OElGVk9TMDVQVjA0N1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIWmhjaUJ2ZDI1bGNrbHVabThnUFNCYlhTNWpiMjVqWVhRb1hHNGdJQ0FnSUNBdkx5QkpaaUIwYUdVZ2NHRnlaVzUwSUdGdVpDQmphR2xzWkNCcGJuTjBZVzVqWlhNZ2FHRjJaU0JoSUdOdmJXMXZiaUJ2ZDI1bGNpQmhibU5sYzNSdmNpd2djM1JoY25SY2JpQWdJQ0FnSUM4dklIZHBkR2dnZEdoaGRDQXRMU0J2ZEdobGNuZHBjMlVnZDJVZ2FuVnpkQ0J6ZEdGeWRDQjNhWFJvSUhSb1pTQndZWEpsYm5RbmN5QnZkMjVsY25NdVhHNGdJQ0FnSUNCa1pXVndaWE4wUTI5dGJXOXVJQ0U5UFNBdE1TQS9JR05vYVd4a1QzZHVaWEp6VzJSbFpYQmxjM1JEYjIxdGIyNWRMbWRsZEU1aGJXVW9LU0I4ZkNCVlRrdE9UMWRPSURvZ1cxMHNJR0Z1WTJWemRHOXlUM2R1WlhKT1lXMWxjeXdnWVc1alpYTjBiM0pVWVdjc1hHNGdJQ0FnSUNBdkx5QkpaaUIzWlNkeVpTQjNZWEp1YVc1bklHRmliM1YwSUdGdUlHbHVkbUZzYVdRZ0tHNXZiaTF3WVhKbGJuUXBJR0Z1WTJWemRISjVMQ0JoWkdRZ0p5NHVMaWRjYmlBZ0lDQWdJR2x1ZG1Gc2FXUkJibU5sYzNSdmNpQS9JRnNuTGk0dUoxMGdPaUJiWFN3Z1kyaHBiR1JQZDI1bGNrNWhiV1Z6TENCamFHbHNaRlJoWnlrdWFtOXBiaWduSUQ0Z0p5azdYRzVjYmlBZ0lDQWdJSFpoY2lCM1lYSnVTMlY1SUQwZ0lTRnBiblpoYkdsa1VHRnlaVzUwSUNzZ0ozd25JQ3NnWTJocGJHUlVZV2NnS3lBbmZDY2dLeUJoYm1ObGMzUnZjbFJoWnlBcklDZDhKeUFySUc5M2JtVnlTVzVtYnp0Y2JpQWdJQ0FnSUdsbUlDaGthV1JYWVhKdVczZGhjbTVMWlhsZEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHUnBaRmRoY201YmQyRnlia3RsZVYwZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNCcFppQW9hVzUyWVd4cFpGQmhjbVZ1ZENrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnYVc1bWJ5QTlJQ2NuTzF4dUlDQWdJQ0FnSUNCcFppQW9ZVzVqWlhOMGIzSlVZV2NnUFQwOUlDZDBZV0pzWlNjZ0ppWWdZMmhwYkdSVVlXY2dQVDA5SUNkMGNpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcGJtWnZJQ3M5SUNjZ1FXUmtJR0VnUEhSaWIyUjVQaUIwYnlCNWIzVnlJR052WkdVZ2RHOGdiV0YwWTJnZ2RHaGxJRVJQVFNCMGNtVmxJR2RsYm1WeVlYUmxaQ0JpZVNBbklDc2dKM1JvWlNCaWNtOTNjMlZ5TGljN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2QyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWNvTGk0dUtUb2dQQ1Z6UGlCallXNXViM1FnWVhCd1pXRnlJR0Z6SUdFZ1kyaHBiR1FnYjJZZ1BDVnpQaTRnSnlBcklDZFRaV1VnSlhNdUpYTW5MQ0JqYUdsc1pGUmhaeXdnWVc1alpYTjBiM0pVWVdjc0lHOTNibVZ5U1c1bWJ5d2dhVzVtYnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWd1TGk0cE9pQThKWE0rSUdOaGJtNXZkQ0JoY0hCbFlYSWdZWE1nWVNCa1pYTmpaVzVrWVc1MElHOW1JQ2NnS3lBblBDVnpQaTRnVTJWbElDVnpMaWNzSUdOb2FXeGtWR0ZuTENCaGJtTmxjM1J2Y2xSaFp5d2diM2R1WlhKSmJtWnZLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMDdYRzVjYmlBZ2RtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bkxtRnVZMlZ6ZEc5eVNXNW1iME52Ym5SbGVIUkxaWGtnUFNBblgxOTJZV3hwWkdGMFpVUlBUVTVsYzNScGJtZGZZVzVqWlhOMGIzSkpibVp2SkNjZ0t5Qk5ZWFJvTG5KaGJtUnZiU2dwTG5SdlUzUnlhVzVuS0RNMktTNXpiR2xqWlNneUtUdGNibHh1SUNCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jdWRYQmtZWFJsWkVGdVkyVnpkRzl5U1c1bWJ5QTlJSFZ3WkdGMFpXUkJibU5sYzNSdmNrbHVabTg3WEc1Y2JpQWdMeThnUm05eUlIUmxjM1JwYm1kY2JpQWdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbWx6VkdGblZtRnNhV1JKYmtOdmJuUmxlSFFnUFNCbWRXNWpkR2x2YmlBb2RHRm5MQ0JoYm1ObGMzUnZja2x1Wm04cElIdGNiaUFnSUNCaGJtTmxjM1J2Y2tsdVptOGdQU0JoYm1ObGMzUnZja2x1Wm04Z2ZId2daVzF3ZEhsQmJtTmxjM1J2Y2tsdVptODdYRzRnSUNBZ2RtRnlJSEJoY21WdWRFbHVabThnUFNCaGJtTmxjM1J2Y2tsdVptOHVjR0Z5Wlc1MFZHRm5PMXh1SUNBZ0lIWmhjaUJ3WVhKbGJuUlVZV2NnUFNCd1lYSmxiblJKYm1adklDWW1JSEJoY21WdWRFbHVabTh1ZEdGbk8xeHVJQ0FnSUhKbGRIVnliaUJwYzFSaFoxWmhiR2xrVjJsMGFGQmhjbVZ1ZENoMFlXY3NJSEJoY21WdWRGUmhaeWtnSmlZZ0lXWnBibVJKYm5aaGJHbGtRVzVqWlhOMGIzSkdiM0pVWVdjb2RHRm5MQ0JoYm1ObGMzUnZja2x1Wm04cE8xeHVJQ0I5TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSFpoYkdsa1lYUmxSRTlOVG1WemRHbHVaenNpWFgwPSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQ29uc3QgZnJvbSAnLi9Db25zdCc7XG5pbXBvcnQgVGFibGVIZWFkZXIgZnJvbSAnLi9UYWJsZUhlYWRlcic7XG5pbXBvcnQgVGFibGVCb2R5IGZyb20gJy4vVGFibGVCb2R5JztcbmltcG9ydCBQYWdpbmF0aW9uTGlzdCBmcm9tICcuL3BhZ2luYXRpb24vUGFnaW5hdGlvbkxpc3QnO1xuaW1wb3J0IFRvb2xCYXIgZnJvbSAnLi90b29sYmFyL1Rvb2xCYXInO1xuaW1wb3J0IFRhYmxlRmlsdGVyIGZyb20gJy4vVGFibGVGaWx0ZXInO1xuaW1wb3J0IHtUYWJsZURhdGFTdG9yZX0gZnJvbSAnLi9zdG9yZS9UYWJsZURhdGFTdG9yZSc7XG5pbXBvcnQgZXhwb3J0Q1NWIGZyb20gJy4vY3N2X2V4cG9ydF91dGlsJztcblxuY2xhc3MgQm9vdHN0cmFwVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5fYXR0YWNoQ2VsbEVkaXRGdW5jKCk7XG4gICAgbGV0IHtrZXlGaWVsZH0gPSBwcm9wcztcbiAgICBsZXQgY3VzdG9tU29ydEZ1bmNNYXAgPSB7fTtcblxuICAgIGlmICghKHR5cGVvZiBrZXlGaWVsZCA9PT0gJ3N0cmluZycgJiYga2V5RmllbGQubGVuZ3RoKSkge1xuICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaCh0aGlzLnByb3BzLmNoaWxkcmVuLCBjb2x1bW49PiB7XG4gICAgICAgIGlmIChjb2x1bW4ucHJvcHMuaXNLZXkpIHtcbiAgICAgICAgICBpZiAoa2V5RmllbGQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgXCJFcnJvci4gTXVsdGlwbGUga2V5IGNvbHVtbiBiZSBkZXRlY3RlZCBpbiBUYWJsZUhlYWRlckNvbHVtbi5cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAga2V5RmllbGQgPSBjb2x1bW4ucHJvcHMuZGF0YUZpZWxkO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzKTtcbiAgICB9XG5cbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKHRoaXMucHJvcHMuY2hpbGRyZW4sIGNvbHVtbj0+IHtcbiAgICAgIGlmIChjb2x1bW4ucHJvcHMuc29ydEZ1bmMpIHtcbiAgICAgICAgY3VzdG9tU29ydEZ1bmNNYXBbY29sdW1uLnByb3BzLmRhdGFGaWVsZF0gPSBjb2x1bW4ucHJvcHMuc29ydEZ1bmM7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG5cbiAgICBpZiAoa2V5RmllbGQgPT0gbnVsbClcbiAgICAgIHRocm93IFwiRXJyb3IuIE5vIGFueSBrZXkgY29sdW1uIGRlZmluZWQgaW4gVGFibGVIZWFkZXJDb2x1bW4uIFVzZSAnaXNLZXk9e3RydWV9JyB0byBzcGVjaWZ5IGFuIHVuaXF1ZSBjb2x1bW4gYWZ0ZXIgdmVyc2lvbiAwLjUuNC5cIjtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLmRhdGEpKSB7XG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFRhYmxlRGF0YVN0b3JlKHRoaXMucHJvcHMuZGF0YS5nZXREYXRhKCkpO1xuICAgICAgdGhpcy5wcm9wcy5kYXRhLmNsZWFyKCk7XG4gICAgICB0aGlzLnByb3BzLmRhdGEub24oJ2NoYW5nZScsIChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShkYXRhKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgZGF0YTogdGhpcy5nZXRUYWJsZURhdGEoKVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgVGFibGVEYXRhU3RvcmUodGhpcy5wcm9wcy5kYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3JlLnNldFByb3BzKHRoaXMucHJvcHMucGFnaW5hdGlvbiwga2V5RmllbGQsIGN1c3RvbVNvcnRGdW5jTWFwLCB0aGlzLmlzUmVtb3RlRGF0YVNvdXJjZSgpKTtcblxuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdFJvdyAmJiB0aGlzLnByb3BzLnNlbGVjdFJvdy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zdG9yZS5zZXRTZWxlY3RlZFJvd0tleSh0aGlzLnByb3BzLnNlbGVjdFJvdy5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRhdGE6IHRoaXMuZ2V0VGFibGVEYXRhKCksXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RvcmUuZ2V0U2VsZWN0ZWRSb3dLZXlzKClcbiAgICB9O1xuICB9XG5cbiAgZ2V0VGFibGVEYXRhKCkge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICBsZXQgcGFnZSwgc2l6ZVBlclBhZ2U7XG4gICAgICBpZiAodGhpcy5zdG9yZS5pc0NoYW5nZWRQYWdlKCkpIHtcbiAgICAgICAgc2l6ZVBlclBhZ2UgPSB0aGlzLnJlZnMucGFnaW5hdGlvbi5nZXRTaXplUGVyUGFnZSgpO1xuICAgICAgICBwYWdlID0gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0Q3VycmVudFBhZ2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpemVQZXJQYWdlID0gdGhpcy5wcm9wcy5vcHRpb25zLnNpemVQZXJQYWdlIHx8IENvbnN0LlNJWkVfUEVSX1BBR0VfTElTVFswXTtcbiAgICAgICAgcGFnZSA9IHRoaXMucHJvcHMub3B0aW9ucy5wYWdlIHx8IDE7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLnBhZ2UocGFnZSwgc2l6ZVBlclBhZ2UpLmdldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0UHJvcHMuZGF0YSkpIHtcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShuZXh0UHJvcHMuZGF0YSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGF0YTogdGhpcy5nZXRUYWJsZURhdGEoKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChuZXh0UHJvcHMuc2VsZWN0Um93ICYmIG5leHRQcm9wcy5zZWxlY3RSb3cuc2VsZWN0ZWQpIHtcbiAgICAgIC8vc2V0IGRlZmF1bHQgc2VsZWN0IHJvd3MgdG8gc3RvcmUuXG4gICAgICB0aGlzLnN0b3JlLnNldFNlbGVjdGVkUm93S2V5KG5leHRQcm9wcy5zZWxlY3RSb3cuc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkUm93S2V5czogbmV4dFByb3BzLnNlbGVjdFJvdy5zZWxlY3RlZFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fYWRqdXN0SGVhZGVyV2lkdGgoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fYWRqdXN0SGVhZGVyV2lkdGguYmluZCh0aGlzKSk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fYWRqdXN0SGVhZGVyV2lkdGguYmluZCh0aGlzKSk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgdGhpcy5fYWRqdXN0SGVhZGVyV2lkdGgoKTtcbiAgICB0aGlzLl9hdHRhY2hDZWxsRWRpdEZ1bmMoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLmFmdGVyVGFibGVDb21wbGV0ZSlcbiAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5hZnRlclRhYmxlQ29tcGxldGUoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLmFmdGVyU2VhcmNoT3JGaWx0ZXIpXG4gICAgICB0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJTZWFyY2hPckZpbHRlcih0aGlzLnN0b3JlLmdldERhdGFJZ25vcmluZ1BhZ2luYXRpb24oKSk7XG4gIH1cblxuICBfYXR0YWNoQ2VsbEVkaXRGdW5jKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmNlbGxFZGl0KSB7XG4gICAgICB0aGlzLnByb3BzLmNlbGxFZGl0Ll9fb25Db21wbGV0ZUVkaXRfXyA9IHRoaXMuaGFuZGxlRWRpdENlbGwuYmluZCh0aGlzKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNlbGxFZGl0Lm1vZGUgIT09IENvbnN0LkNFTExfRURJVF9OT05FKVxuICAgICAgICB0aGlzLnByb3BzLnNlbGVjdFJvdy5jbGlja1RvU2VsZWN0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLFxuICAgKiB0aGUgZGF0YWdyaWQgc2hvdWxkIGxvYWQgaXRzIGRhdGEgcmVtb3RlbHkuXG4gICAqXG4gICAqIEBwYXJhbSAge09iamVjdH0gIFtwcm9wc10gT3B0aW9uYWwuIElmIG5vdCBnaXZlbiwgdGhpcy5wcm9wcyB3aWxsIGJlIHVzZWRcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIGlzUmVtb3RlRGF0YVNvdXJjZShwcm9wcykge1xuICAgIHJldHVybiAocHJvcHMgfHwgdGhpcy5wcm9wcykucmVtb3RlO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHZhciB0YWJsZUNsYXNzID0gY2xhc3NTZXQoXCJyZWFjdC1icy10YWJsZVwiKTtcbiAgICB2YXIgY2hpbGRyZW5zID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgc3R5bGUgPSB7XG4gICAgICBoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0XG4gICAgfTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbikpIHtcbiAgICAgIGNoaWxkcmVucyA9IFt0aGlzLnByb3BzLmNoaWxkcmVuXTtcbiAgICB9XG4gICAgdmFyIGNvbHVtbnMgPSBjaGlsZHJlbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4sIGkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGNvbHVtbi5wcm9wcy5kYXRhRmllbGQsXG4gICAgICAgIGFsaWduOiBjb2x1bW4ucHJvcHMuZGF0YUFsaWduLFxuICAgICAgICBzb3J0OiBjb2x1bW4ucHJvcHMuZGF0YVNvcnQsXG4gICAgICAgIGZvcm1hdDogY29sdW1uLnByb3BzLmRhdGFGb3JtYXQsXG4gICAgICAgIGVkaXRhYmxlOiBjb2x1bW4ucHJvcHMuZWRpdGFibGUsXG4gICAgICAgIGhpZGRlbjogY29sdW1uLnByb3BzLmhpZGRlbixcbiAgICAgICAgY2xhc3NOYW1lOiBjb2x1bW4ucHJvcHMuY29sdW1uQ2xhc3NOYW1lLFxuICAgICAgICB3aWR0aDogY29sdW1uLnByb3BzLndpZHRoLFxuICAgICAgICBpbmRleDogaVxuICAgICAgfTtcbiAgICB9LCB0aGlzKTtcblxuICAgIHZhciBwYWdpbmF0aW9uID0gdGhpcy5yZW5kZXJQYWdpbmF0aW9uKCk7XG4gICAgdmFyIHRvb2xCYXIgPSB0aGlzLnJlbmRlclRvb2xCYXIoKTtcbiAgICB2YXIgdGFibGVGaWx0ZXIgPSB0aGlzLnJlbmRlclRhYmxlRmlsdGVyKGNvbHVtbnMpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlYWN0LWJzLWNvbnRhaW5lclwiPlxuICAgICAgICB7dG9vbEJhcn1cbiAgICAgICAgPGRpdiByZWY9XCJ0YWJsZVwiIHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPXt0YWJsZUNsYXNzfT5cbiAgICAgICAgICA8VGFibGVIZWFkZXJcbiAgICAgICAgICAgIHJvd1NlbGVjdFR5cGU9e3RoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGV9XG4gICAgICAgICAgICBoaWRlU2VsZWN0Q29sdW1uPXt0aGlzLnByb3BzLnNlbGVjdFJvdy5oaWRlU2VsZWN0Q29sdW1ufVxuICAgICAgICAgICAgc29ydE5hbWU9e3RoaXMucHJvcHMub3B0aW9ucy5zb3J0TmFtZX1cbiAgICAgICAgICAgIHNvcnRPcmRlcj17dGhpcy5wcm9wcy5vcHRpb25zLnNvcnRPcmRlcn1cbiAgICAgICAgICAgIG9uU29ydD17dGhpcy5oYW5kbGVTb3J0LmJpbmQodGhpcyl9XG4gICAgICAgICAgICBvblNlbGVjdEFsbFJvdz17dGhpcy5oYW5kbGVTZWxlY3RBbGxSb3cuYmluZCh0aGlzKX1cbiAgICAgICAgICAgIGJvcmRlcmVkPXt0aGlzLnByb3BzLmJvcmRlcmVkfT5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG4gICAgICAgICAgPFRhYmxlQm9keVxuICAgICAgICAgICAgcmVmPVwiYm9keVwiXG4gICAgICAgICAgICBkYXRhPXt0aGlzLnN0YXRlLmRhdGF9XG4gICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgdHJDbGFzc05hbWU9e3RoaXMucHJvcHMudHJDbGFzc05hbWV9XG4gICAgICAgICAgICBzdHJpcGVkPXt0aGlzLnByb3BzLnN0cmlwZWR9XG4gICAgICAgICAgICBib3JkZXJlZD17dGhpcy5wcm9wcy5ib3JkZXJlZH1cbiAgICAgICAgICAgIGhvdmVyPXt0aGlzLnByb3BzLmhvdmVyfVxuICAgICAgICAgICAga2V5RmllbGQ9e3RoaXMuc3RvcmUuZ2V0S2V5RmllbGQoKX1cbiAgICAgICAgICAgIGNvbmRlbnNlZD17dGhpcy5wcm9wcy5jb25kZW5zZWR9XG4gICAgICAgICAgICBzZWxlY3RSb3c9e3RoaXMucHJvcHMuc2VsZWN0Um93fVxuICAgICAgICAgICAgY2VsbEVkaXQ9e3RoaXMucHJvcHMuY2VsbEVkaXR9XG4gICAgICAgICAgICBzZWxlY3RlZFJvd0tleXM9e3RoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzfVxuICAgICAgICAgICAgb25Sb3dDbGljaz17dGhpcy5oYW5kbGVSb3dDbGljay5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgb25TZWxlY3RSb3c9e3RoaXMuaGFuZGxlU2VsZWN0Um93LmJpbmQodGhpcyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7dGFibGVGaWx0ZXJ9XG4gICAgICAgICAge3BhZ2luYXRpb259XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaGFuZGxlU29ydChvcmRlciwgc29ydEZpZWxkKSB7XG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy5vblNvcnRDaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5vblNvcnRDaGFuZ2Uoc29ydEZpZWxkLCBvcmRlciwgdGhpcy5wcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSZW1vdGVEYXRhU291cmNlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5zdG9yZS5zb3J0KG9yZGVyLCBzb3J0RmllbGQpLmdldCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGF0YTogcmVzdWx0XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQYWdpbmF0aW9uRGF0YShwYWdlLCBzaXplUGVyUGFnZSkge1xuICAgIGNvbnN0IHtvblBhZ2VDaGFuZ2V9ID0gdGhpcy5wcm9wcy5vcHRpb25zO1xuICAgIGlmIChvblBhZ2VDaGFuZ2UpIHtcbiAgICAgIG9uUGFnZUNoYW5nZShwYWdlLCBzaXplUGVyUGFnZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSZW1vdGVEYXRhU291cmNlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5zdG9yZS5wYWdlKHBhZ2UsIHNpemVQZXJQYWdlKS5nZXQoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUm93Q2xpY2socm93KSB7XG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy5vblJvd0NsaWNrKSB7XG4gICAgICB0aGlzLnByb3BzLm9wdGlvbnMub25Sb3dDbGljayhyb3cpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEFsbFJvdyhlKSB7XG4gICAgdmFyIGlzU2VsZWN0ZWQgPSBlLmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcbiAgICBsZXQgc2VsZWN0ZWRSb3dLZXlzID0gW107XG4gICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgIHNlbGVjdGVkUm93S2V5cyA9IHRoaXMuc3RvcmUuZ2V0QWxsUm93a2V5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZS5zZXRTZWxlY3RlZFJvd0tleShzZWxlY3RlZFJvd0tleXMpO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBzZWxlY3RlZFJvd0tleXNcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdFJvdy5vblNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5wcm9wcy5zZWxlY3RSb3cub25TZWxlY3RBbGwoaXNTZWxlY3RlZCxcbiAgICAgICAgaXNTZWxlY3RlZCA/IHRoaXMuc3RvcmUuZ2V0KCkgOiBbXSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU2VsZWN0Um93KHJvdywgaXNTZWxlY3RlZCkge1xuICAgIGxldCBjdXJyU2VsZWN0ZWQgPSB0aGlzLnN0b3JlLmdldFNlbGVjdGVkUm93S2V5cygpO1xuICAgIGxldCByb3dLZXkgPSByb3dbdGhpcy5zdG9yZS5nZXRLZXlGaWVsZCgpXTtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RSb3cubW9kZSA9PT0gQ29uc3QuUk9XX1NFTEVDVF9TSU5HTEUpIHtcbiAgICAgIGN1cnJTZWxlY3RlZCA9IGlzU2VsZWN0ZWQgPyBbcm93S2V5XSA6IFtdXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgIGN1cnJTZWxlY3RlZC5wdXNoKHJvd0tleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyU2VsZWN0ZWQgPSBjdXJyU2VsZWN0ZWQuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZXR1cm4gcm93S2V5ICE9PSBrZXk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RvcmUuc2V0U2VsZWN0ZWRSb3dLZXkoY3VyclNlbGVjdGVkKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUm93S2V5czogY3VyclNlbGVjdGVkXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RSb3cub25TZWxlY3QpIHtcbiAgICAgIHRoaXMucHJvcHMuc2VsZWN0Um93Lm9uU2VsZWN0KHJvdywgaXNTZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRWRpdENlbGwobmV3VmFsLCByb3dJbmRleCwgY29sSW5kZXgpIHtcbiAgICBsZXQgZmllbGROYW1lO1xuICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2godGhpcy5wcm9wcy5jaGlsZHJlbiwgZnVuY3Rpb24gKGNvbHVtbiwgaSkge1xuICAgICAgaWYgKGkgPT0gY29sSW5kZXgpIHtcbiAgICAgICAgZmllbGROYW1lID0gY29sdW1uLnByb3BzLmRhdGFGaWVsZDtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuc3RvcmUuZWRpdChuZXdWYWwsIHJvd0luZGV4LCBmaWVsZE5hbWUpLmdldCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGF0YTogcmVzdWx0XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jZWxsRWRpdC5hZnRlclNhdmVDZWxsKSB7XG4gICAgICB0aGlzLnByb3BzLmNlbGxFZGl0LmFmdGVyU2F2ZUNlbGwodGhpcy5zdGF0ZS5kYXRhW3Jvd0luZGV4XSwgZmllbGROYW1lLCBuZXdWYWwpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFkZFJvd0JlZ2luKCkge1xuICAgIGlmICh0aGlzLnJlZnMuYm9keSkge1xuICAgICAgLy8gdGhpcy5yZWZzLmJvZHkuY2FuY2VsRWRpdCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFkZFJvdyhuZXdPYmopIHtcbiAgICBsZXQgbXNnID0gbnVsbCwgcmVzdWx0O1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0b3JlLmFkZChuZXdPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIC8vaWYgcGFnaW5hdGlvbiBpcyBlbmFibGVkIGFuZCBpbnNlcnQgcm93IGJlIHRyaWdnZXIsIGNoYW5nZSB0byBsYXN0IHBhZ2VcbiAgICAgIGxldCBzaXplUGVyUGFnZSA9IHRoaXMucmVmcy5wYWdpbmF0aW9uLmdldFNpemVQZXJQYWdlKCk7XG4gICAgICBsZXQgY3Vyckxhc3RQYWdlID0gTWF0aC5jZWlsKHRoaXMuc3RvcmUuZ2V0RGF0YU51bSgpIC8gc2l6ZVBlclBhZ2UpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5zdG9yZS5wYWdlKGN1cnJMYXN0UGFnZSwgc2l6ZVBlclBhZ2UpLmdldCgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRhdGE6IHJlc3VsdFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZnMucGFnaW5hdGlvbi5jaGFuZ2VQYWdlKGN1cnJMYXN0UGFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuc3RvcmUuZ2V0KCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGF0YTogcmVzdWx0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLmFmdGVySW5zZXJ0Um93KSB7XG4gICAgICB0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJJbnNlcnRSb3cobmV3T2JqKTtcbiAgICB9XG4gIH1cblxuICBnZXRTaXplUGVyUGFnZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0U2l6ZVBlclBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICBnZXRDdXJyZW50UGFnZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0Q3VycmVudFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcm9wUm93KCkge1xuICAgIGxldCByZXN1bHQ7XG4gICAgbGV0IGRyb3BSb3dLZXlzID0gdGhpcy5zdG9yZS5nZXRTZWxlY3RlZFJvd0tleXMoKTtcbiAgICAvL2FkZCBjb25maXJtIGJlZm9yIHRoZSBkZWxldGUgYWN0aW9uXG4gICAgaWYgKGRyb3BSb3dLZXlzICYmIGRyb3BSb3dLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghY29uZmlybSgnQXJlIHlvdSBzdXJlIHdhbnQgZGVsZXRlPycpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnN0b3JlLnJlbW92ZShkcm9wUm93S2V5cyk7ICAvL3JlbW92ZSBzZWxlY3RlZCBSb3dcbiAgICB0aGlzLnN0b3JlLnNldFNlbGVjdGVkUm93S2V5KFtdKTsgIC8vY2xlYXIgc2VsZWN0ZWQgcm93IGtleVxuXG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgbGV0IHNpemVQZXJQYWdlID0gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0U2l6ZVBlclBhZ2UoKTtcbiAgICAgIGxldCBjdXJyTGFzdFBhZ2UgPSBNYXRoLmNlaWwodGhpcy5zdG9yZS5nZXREYXRhTnVtKCkgLyBzaXplUGVyUGFnZSk7XG4gICAgICBsZXQgY3VycmVudFBhZ2UgPSB0aGlzLnJlZnMucGFnaW5hdGlvbi5nZXRDdXJyZW50UGFnZSgpO1xuICAgICAgaWYgKGN1cnJlbnRQYWdlID4gY3Vyckxhc3RQYWdlKVxuICAgICAgICBjdXJyZW50UGFnZSA9IGN1cnJMYXN0UGFnZTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuc3RvcmUucGFnZShjdXJyZW50UGFnZSwgc2l6ZVBlclBhZ2UpLmdldCgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0b3JlLmdldFNlbGVjdGVkUm93S2V5cygpXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVmcy5wYWdpbmF0aW9uLmNoYW5nZVBhZ2UoY3VycmVudFBhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0b3JlLmdldFNlbGVjdGVkUm93S2V5cygpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy5hZnRlckRlbGV0ZVJvdykge1xuICAgICAgdGhpcy5wcm9wcy5vcHRpb25zLmFmdGVyRGVsZXRlUm93KGRyb3BSb3dLZXlzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGaWx0ZXJEYXRhKGZpbHRlck9iaikge1xuICAgIHRoaXMuc3RvcmUuZmlsdGVyKGZpbHRlck9iaik7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICBsZXQgc2l6ZVBlclBhZ2UgPSB0aGlzLnJlZnMucGFnaW5hdGlvbi5nZXRTaXplUGVyUGFnZSgpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5zdG9yZS5wYWdlKDEsIHNpemVQZXJQYWdlKS5nZXQoKTtcbiAgICAgIHRoaXMucmVmcy5wYWdpbmF0aW9uLmNoYW5nZVBhZ2UoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuc3RvcmUuZ2V0KCk7XG4gICAgfVxuICAgIGlmKHRoaXMucHJvcHMub3B0aW9ucy5hZnRlckNvbHVtbkZpbHRlcilcbiAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5hZnRlckNvbHVtbkZpbHRlcihmaWx0ZXJPYmosXG4gICAgICAgIHRoaXMuc3RvcmUuZ2V0RGF0YUlnbm9yaW5nUGFnaW5hdGlvbigpKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlRXhwb3J0Q1NWKCkge1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgdGhpcy5wcm9wcy5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oY29sdW1uKSB7XG4gICAgICBrZXlzLnB1c2goY29sdW1uLnByb3BzLmRhdGFGaWVsZCk7XG4gICAgfSk7XG4gICAgZXhwb3J0Q1NWKHJlc3VsdCwga2V5cywgdGhpcy5wcm9wcy5jc3ZGaWxlTmFtZSk7XG4gIH1cblxuICBoYW5kbGVTZWFyY2goc2VhcmNoVGV4dCkge1xuICAgIHRoaXMuc3RvcmUuc2VhcmNoKHNlYXJjaFRleHQsIHRoaXMucHJvcHMubXVsdGlDb2x1bW5TZWFyY2gpO1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgbGV0IHNpemVQZXJQYWdlID0gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0U2l6ZVBlclBhZ2UoKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuc3RvcmUucGFnZSgxLCBzaXplUGVyUGFnZSkuZ2V0KCk7XG4gICAgICB0aGlzLnJlZnMucGFnaW5hdGlvbi5jaGFuZ2VQYWdlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgIH1cbiAgICBpZih0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJTZWFyY2gpXG4gICAgICB0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJTZWFyY2goc2VhcmNoVGV4dCwgdGhpcy5zdG9yZS5nZXREYXRhSWdub3JpbmdQYWdpbmF0aW9uKCkpO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGF0YTogcmVzdWx0XG4gICAgfSk7XG4gIH1cblxuICByZW5kZXJQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGxldCBkYXRhU2l6ZTtcbiAgICAgIGlmICh0aGlzLmlzUmVtb3RlRGF0YVNvdXJjZSgpKSB7XG4gICAgICAgIGRhdGFTaXplID0gdGhpcy5wcm9wcy5mZXRjaEluZm8uZGF0YVRvdGFsU2l6ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFTaXplID0gdGhpcy5zdG9yZS5nZXREYXRhTnVtKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxQYWdpbmF0aW9uTGlzdFxuICAgICAgICAgICAgcmVmPVwicGFnaW5hdGlvblwiXG4gICAgICAgICAgICBjdXJyUGFnZT17dGhpcy5wcm9wcy5vcHRpb25zLnBhZ2UgfHwgMX1cbiAgICAgICAgICAgIGNoYW5nZVBhZ2U9e3RoaXMuaGFuZGxlUGFnaW5hdGlvbkRhdGEuYmluZCh0aGlzKX1cbiAgICAgICAgICAgIHNpemVQZXJQYWdlPXt0aGlzLnByb3BzLm9wdGlvbnMuc2l6ZVBlclBhZ2UgfHwgQ29uc3QuU0laRV9QRVJfUEFHRV9MSVNUWzBdfVxuICAgICAgICAgICAgc2l6ZVBlclBhZ2VMaXN0PXt0aGlzLnByb3BzLm9wdGlvbnMuc2l6ZVBlclBhZ2VMaXN0IHx8IENvbnN0LlNJWkVfUEVSX1BBR0VfTElTVH1cbiAgICAgICAgICAgIHBhZ2luYXRpb25TaXplPXt0aGlzLnByb3BzLm9wdGlvbnMucGFnaW5hdGlvblNpemUgfHwgQ29uc3QuUEFHSU5BVElPTl9TSVpFfVxuICAgICAgICAgICAgcmVtb3RlPXt0aGlzLmlzUmVtb3RlRGF0YVNvdXJjZSgpfVxuICAgICAgICAgICAgZGF0YVNpemU9e2RhdGFTaXplfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZW5kZXJUb29sQmFyKCkge1xuICAgIGxldCBjb2x1bW5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pKSB7XG4gICAgICBjb2x1bW5zID0gdGhpcy5wcm9wcy5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICB2YXIgcHJvcHMgPSBjb2x1bW4ucHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgZmllbGQ6IHByb3BzLmRhdGFGaWVsZCxcbiAgICAgICAgICAvL3doZW4geW91IHdhbnQgc2FtZSBhdXRvIGdlbmVyYXRlIHZhbHVlIGFuZCBub3QgYWxsb3cgZWRpdCwgZXhhbXBsZSBJRCBmaWVsZFxuICAgICAgICAgIGF1dG9WYWx1ZTogcHJvcHMuYXV0b1ZhbHVlIHx8IGZhbHNlLFxuICAgICAgICAgIC8vZm9yIGNyZWF0ZSBlaWR0b3IsIG5vIHBhcmFtcyBmb3IgY29sdW1uLmVkaXRhYmxlKCkgaW5kaWNhdGUgdGhhdCBlZGl0b3IgZm9yIG5ldyByb3dcbiAgICAgICAgICBlZGl0YWJsZTogcHJvcHMuZWRpdGFibGUgJiYgKHR5cGVvZiBwcm9wcy5lZGl0YWJsZSA9PT0gXCJmdW5jdGlvblwiKSA/IHByb3BzLmVkaXRhYmxlKCkgOiBwcm9wcy5lZGl0YWJsZSxcbiAgICAgICAgICBmb3JtYXQ6IHByb3BzLmZvcm1hdCA/IGZvcm1hdCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1ucyA9IFt7XG4gICAgICAgIG5hbWU6IHRoaXMucHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIGZpZWxkOiB0aGlzLnByb3BzLmNoaWxkcmVuLnByb3BzLmRhdGFGaWVsZCxcbiAgICAgICAgZWRpdGFibGU6IHRoaXMucHJvcHMuY2hpbGRyZW4ucHJvcHMuZWRpdGFibGVcbiAgICAgIH1dO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5pbnNlcnRSb3cgfHwgdGhpcy5wcm9wcy5kZWxldGVSb3cgfHwgdGhpcy5wcm9wcy5zZWFyY2ggfHwgdGhpcy5wcm9wcy5leHBvcnRDU1YpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidG9vbC1iYXJcIj5cbiAgICAgICAgICA8VG9vbEJhclxuICAgICAgICAgICAgZW5hYmxlSW5zZXJ0PXt0aGlzLnByb3BzLmluc2VydFJvd31cbiAgICAgICAgICAgIGVuYWJsZURlbGV0ZT17dGhpcy5wcm9wcy5kZWxldGVSb3d9XG4gICAgICAgICAgICBlbmFibGVTZWFyY2g9e3RoaXMucHJvcHMuc2VhcmNofVxuICAgICAgICAgICAgZW5hYmxlRXhwb3J0Q1NWPXt0aGlzLnByb3BzLmV4cG9ydENTVn1cbiAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5zZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgIG9uQWRkUm93PXt0aGlzLmhhbmRsZUFkZFJvdy5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgb25BZGRSb3dCZWdpbj17dGhpcy5oYW5kbGVBZGRSb3dCZWdpbi5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgb25Ecm9wUm93PXt0aGlzLmhhbmRsZURyb3BSb3cuYmluZCh0aGlzKX1cbiAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLmhhbmRsZVNlYXJjaC5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgb25FeHBvcnRDU1Y9e3RoaXMuaGFuZGxlRXhwb3J0Q1NWLmJpbmQodGhpcyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRhYmxlRmlsdGVyKGNvbHVtbnMpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5GaWx0ZXIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUYWJsZUZpbHRlciBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgcm93U2VsZWN0VHlwZT17dGhpcy5wcm9wcy5zZWxlY3RSb3cubW9kZX1cbiAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyPXt0aGlzLmhhbmRsZUZpbHRlckRhdGEuYmluZCh0aGlzKX0vPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgX2FkanVzdEhlYWRlcldpZHRoKCkge1xuICAgIHZhciB0YWJsZUhlYWRlckRvbSA9IHRoaXMucmVmcy50YWJsZS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF07XG4gICAgdmFyIHRhYmxlQm9keURvbSA9IHRoaXMucmVmcy50YWJsZS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMF07XG4gICAgaWYodGFibGVIZWFkZXJEb20ub2Zmc2V0V2lkdGggIT09IHRhYmxlQm9keURvbS5vZmZzZXRXaWR0aCl7XG4gICAgICB0YWJsZUhlYWRlckRvbS5zdHlsZS53aWR0aCA9IHRhYmxlQm9keURvbS5vZmZzZXRXaWR0aCArIFwicHhcIjtcbiAgICB9XG4gIH1cbn1cblxuQm9vdHN0cmFwVGFibGUucHJvcFR5cGVzID0ge1xuICBrZXlGaWVsZDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgaGVpZ2h0OiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBkYXRhOiBSZWFjdC5Qcm9wVHlwZXMub25lT2ZUeXBlKFtSZWFjdC5Qcm9wVHlwZXMuYXJyYXksIFJlYWN0LlByb3BUeXBlcy5vYmplY3RdKSxcbiAgcmVtb3RlOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwgLy8gcmVtb3RlIGRhdGEsIGRlZmF1bHQgaXMgZmFsc2VcbiAgc3RyaXBlZDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGJvcmRlcmVkOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgaG92ZXI6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjb25kZW5zZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBwYWdpbmF0aW9uOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIHNlbGVjdFJvdzogUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtb2RlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgIGJnQ29sb3I6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0ZWQ6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgICBvblNlbGVjdDogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25TZWxlY3RBbGw6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgIGNsaWNrVG9TZWxlY3Q6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICAgIGhpZGVTZWxlY3RDb2x1bW46IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICAgIGNsaWNrVG9TZWxlY3RBbmRFZGl0Q2VsbDogUmVhY3QuUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGNlbGxFZGl0OiBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1vZGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgYmx1clRvU2F2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gICAgYWZ0ZXJTYXZlQ2VsbDogUmVhY3QuUHJvcFR5cGVzLmZ1bmNcbiAgfSksXG4gIGluc2VydFJvdzogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGRlbGV0ZVJvdzogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIHNlYXJjaDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGNvbHVtbkZpbHRlcjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIHRyQ2xhc3NOYW1lOiBSZWFjdC5Qcm9wVHlwZXMuYW55LFxuICBvcHRpb25zOiBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoe1xuICAgIHNvcnROYW1lOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNvcnRPcmRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICBhZnRlclRhYmxlQ29tcGxldGU6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgIGFmdGVyRGVsZXRlUm93OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgICBhZnRlckluc2VydFJvdzogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gICAgYWZ0ZXJTZWFyY2g6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgIGFmdGVyQ29sdW1uRmlsdGVyOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgICBvblJvd0NsaWNrOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdlOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgIHNpemVQZXJQYWdlTGlzdDogUmVhY3QuUHJvcFR5cGVzLmFycmF5LFxuICAgIHNpemVQZXJQYWdlOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgIHBhZ2luYXRpb25TaXplOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgIG9uU29ydENoYW5nZTogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25QYWdlQ2hhbmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgfSksXG4gIGZldGNoSW5mbzogUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBkYXRhVG90YWxTaXplOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICB9KSxcbiAgZXhwb3J0Q1NWOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgY3N2RmlsZU5hbWU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmdcbn07XG5Cb290c3RyYXBUYWJsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHN0cmlwZWQ6IGZhbHNlLFxuICBib3JkZXJlZDogdHJ1ZSxcbiAgaG92ZXI6IGZhbHNlLFxuICBjb25kZW5zZWQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHVuZGVmaW5lZCxcbiAgc2VsZWN0Um93OiB7XG4gICAgbW9kZTogQ29uc3QuUk9XX1NFTEVDVF9OT05FLFxuICAgIGJnQ29sb3I6IENvbnN0LlJPV19TRUxFQ1RfQkdfQ09MT1IsXG4gICAgc2VsZWN0ZWQ6IFtdLFxuICAgIG9uU2VsZWN0OiB1bmRlZmluZWQsXG4gICAgb25TZWxlY3RBbGw6IHVuZGVmaW5lZCxcbiAgICBjbGlja1RvU2VsZWN0OiBmYWxzZSxcbiAgICBoaWRlU2VsZWN0Q29sdW1uOiBmYWxzZSxcbiAgICBjbGlja1RvU2VsZWN0QW5kRWRpdENlbGw6IGZhbHNlXG4gIH0sXG4gIGNlbGxFZGl0OiB7XG4gICAgbW9kZTogQ29uc3QuQ0VMTF9FRElUX05PTkUsXG4gICAgYmx1clRvU2F2ZTogZmFsc2UsXG4gICAgYWZ0ZXJTYXZlQ2VsbDogdW5kZWZpbmVkXG4gIH0sXG4gIGluc2VydFJvdzogZmFsc2UsXG4gIGRlbGV0ZVJvdzogZmFsc2UsXG4gIHNlYXJjaDogZmFsc2UsXG4gIG11bHRpQ29sdW1uU2VhcmNoOiBmYWxzZSxcbiAgY29sdW1uRmlsdGVyOiBmYWxzZSxcbiAgdHJDbGFzc05hbWU6ICcnLFxuICBvcHRpb25zOiB7XG4gICAgc29ydE5hbWU6IHVuZGVmaW5lZCxcbiAgICBzb3J0T3JkZXI6IENvbnN0LlNPUlRfREVTQyxcbiAgICBhZnRlclRhYmxlQ29tcGxldGU6IHVuZGVmaW5lZCxcbiAgICBhZnRlckRlbGV0ZVJvdzogdW5kZWZpbmVkLFxuICAgIGFmdGVySW5zZXJ0Um93OiB1bmRlZmluZWQsXG4gICAgYWZ0ZXJTZWFyY2g6IHVuZGVmaW5lZCxcbiAgICBhZnRlckNvbHVtbkZpbHRlcjogdW5kZWZpbmVkLFxuICAgIG9uUm93Q2xpY2s6IHVuZGVmaW5lZCxcbiAgICBwYWdlOiAxLFxuICAgIHNpemVQZXJQYWdlTGlzdDogQ29uc3QuU0laRV9QRVJfUEFHRV9MSVNULFxuICAgIHNpemVQZXJQYWdlOiBDb25zdC5TSVpFX1BFUl9QQUdFX0xJU1RbMF0sXG4gICAgcGFnaW5hdGlvblNpemU6IENvbnN0LlBBR0lOQVRJT05fU0laRVxuICB9LFxuICBmZXRjaEluZm86IHtcbiAgICBkYXRhVG90YWxTaXplOiAwLFxuICB9LFxuICBleHBvcnRDU1Y6IGZhbHNlLFxuICBjc3ZGaWxlTmFtZTogdW5kZWZpbmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCb290c3RyYXBUYWJsZTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgU09SVF9ERVNDOiBcImRlc2NcIixcbiAgU09SVF9BU0M6IFwiYXNjXCIsXG4gIFNJWkVfUEVSX1BBR0U6IDEwLFxuICBORVhUX1BBR0U6IFwiPlwiLFxuICBMQVNUX1BBR0U6IFwiPj5cIixcbiAgUFJFX1BBR0U6IFwiPFwiLFxuICBGSVJTVF9QQUdFOiBcIjw8XCIsXG4gIFJPV19TRUxFQ1RfQkdfQ09MT1I6IFwiXCIsXG4gIFJPV19TRUxFQ1RfTk9ORTogXCJub25lXCIsXG4gIFJPV19TRUxFQ1RfU0lOR0xFOiBcInJhZGlvXCIsXG4gIFJPV19TRUxFQ1RfTVVMVEk6IFwiY2hlY2tib3hcIixcbiAgQ0VMTF9FRElUX05PTkU6IFwibm9uZVwiLFxuICBDRUxMX0VESVRfQ0xJQ0s6IFwiY2xpY2tcIixcbiAgQ0VMTF9FRElUX0RCQ0xJQ0s6IFwiZGJjbGlja1wiLFxuICBTSVpFX1BFUl9QQUdFX0xJU1Q6IFsxMCwgMjUsIDMwLCA1MF0sXG4gIFBBR0lOQVRJT05fU0laRTogNVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBFZGl0b3I9ZnVuY3Rpb24oZWRpdGFibGUsIGF0dHIsIGZvcm1hdCwgZWRpdG9yQ2xhc3MsIGRlZmF1bHRWYWx1ZSl7XG5cblxuICAgIGlmKGVkaXRhYmxlPT09dHJ1ZXx8dHlwZW9mIGVkaXRhYmxlPT09XCJzdHJpbmdcIil7Ly9zaW1wbGUgZGVjbGFyZVxuICAgICAgICB2YXIgdHlwZT1lZGl0YWJsZT09PXRydWU/J3RleHQnOmVkaXRhYmxlO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGlucHV0IHsuLi5hdHRyfSB0eXBlPXt0eXBlfSBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhlZGl0b3JDbGFzc3x8XCJcIikrXCIgZm9ybS1jb250cm9sIGVkaXRvciBlZGl0LXRleHRcIn0gLz5cbiAgICAgICAgKVxuICAgIH0gZWxzZSBpZighZWRpdGFibGUpe1xuICAgICAgdmFyIHR5cGU9ZWRpdGFibGU9PT10cnVlPyd0ZXh0JzplZGl0YWJsZTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGlucHV0IHsuLi5hdHRyfSB0eXBlPXt0eXBlfSBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX0gZGlzYWJsZWQ9J2Rpc2FibGVkJ1xuICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhlZGl0b3JDbGFzc3x8XCJcIikrXCIgZm9ybS1jb250cm9sIGVkaXRvciBlZGl0LXRleHRcIn0gLz5cbiAgICAgIClcbiAgICB9IGVsc2UgaWYoZWRpdGFibGUudHlwZSl7Ly9zdGFuZGFyZCBkZWNsYXJlXG4gICAgICAgIC8vcHV0IHN0eWxlIGlmIGV4aXN0XG4gICAgICAgIGVkaXRhYmxlLnN0eWxlJiYoYXR0ci5zdHlsZT1lZGl0YWJsZS5zdHlsZSk7XG5cbiAgICAgICAgLy9wdXQgY2xhc3MgaWYgZXhpc3RcbiAgICAgICAgYXR0ci5jbGFzc05hbWUgPSAoZWRpdG9yQ2xhc3N8fFwiXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIiBmb3JtLWNvbnRyb2wgZWRpdG9yIGVkaXQtXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlLnR5cGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0YWJsZS5jbGFzc05hbWU/KFwiIFwiK2VkaXRhYmxlLmNsYXNzTmFtZSk6XCJcIik7XG5cbiAgICAgICAgaWYoZWRpdGFibGUudHlwZSA9PT0gJ3NlbGVjdCcpey8vcHJvY2VzcyBzZWxlY3QgaW5wdXRcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gW10sIHZhbHVlcz1lZGl0YWJsZS5vcHRpb25zLnZhbHVlcztcbiAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkodmFsdWVzKSl7Ly9vbmx5IGNhbiB1c2UgYXJycmF5IGRhdGEgZm9yIG9wdGlvbnNcbiAgICAgICAgICAgICAgICB2YXIgcm93VmFsdWU7XG4gICAgICAgICAgICAgICAgb3B0aW9ucz12YWx1ZXMubWFwKGZ1bmN0aW9uKGQsaSl7XG4gICAgICAgICAgICAgICAgICAgIHJvd1ZhbHVlPWZvcm1hdD9mb3JtYXQoZCk6ZDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9eydvcHRpb24nK2l9IHZhbHVlPXtkfT57cm93VmFsdWV9PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgICA8c2VsZWN0IHsuLi5hdHRyfSBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX0+e29wdGlvbnN9PC9zZWxlY3Q+XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYoZWRpdGFibGUudHlwZSA9PT0gJ3RleHRhcmVhJyl7Ly9wcm9jZXNzIHRleHRhcmVhIGlucHV0XG4gICAgICAgICAgICAvL3B1dCAgb3RoZXIgaWYgZXhpc3RcbiAgICAgICAgICAgIGVkaXRhYmxlLmNvbHMmJihhdHRyLmNvbHM9ZWRpdGFibGUuY29scyk7XG4gICAgICAgICAgICBlZGl0YWJsZS5yb3dzJiYoYXR0ci5yb3dzPWVkaXRhYmxlLnJvd3MpO1xuICAgICAgICAgICAgdmFyIGtleVVwSGFuZGxlcj1hdHRyLm9uS2V5RG93bixzYXZlQnRuPW51bGw7XG4gICAgICAgICAgICBpZihrZXlVcEhhbmRsZXIpe1xuICAgICAgICAgICAgICAgIGF0dHIub25LZXlEb3duPWZ1bmN0aW9uKGUpe1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXlDb2RlICE9IDEzKSB7IC8vbm90IFByZXNzZWQgRU5URVJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleVVwSGFuZGxlcihlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2F2ZUJ0bj08YnV0dG8gY2xhc3NOYW1lPVwiYnRuIGJ0bi1pbmZvIGJ0bi14cyB0ZXh0YXJlYS1zYXZlLWJ0blwiIG9uQ2xpY2s9e2tleVVwSGFuZGxlcn0+c2F2ZTwvYnV0dG8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgey4uLmF0dHJ9IGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfT48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICB7c2F2ZUJ0bn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmKGVkaXRhYmxlLnR5cGUgPT09ICdjaGVja2JveCcpe1xuICAgICAgICAgIGxldCB2YWx1ZXMgPSAndHJ1ZTpmYWxzZSc7XG4gICAgICAgICAgaWYoZWRpdGFibGUub3B0aW9ucyAmJiBlZGl0YWJsZS5vcHRpb25zLnZhbHVlcyl7XG4gICAgICAgICAgICAvLyB2YWx1ZXMgPSBlZGl0YWJsZS5vcHRpb25zLnZhbHVlcy5zcGxpdCgnOicpO1xuICAgICAgICAgICAgdmFsdWVzID0gZWRpdGFibGUub3B0aW9ucy52YWx1ZXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF0dHIuY2xhc3NOYW1lID0gYXR0ci5jbGFzc05hbWUucmVwbGFjZSgnZm9ybS1jb250cm9sJywnJyk7XG4gICAgICAgICAgYXR0ci5jbGFzc05hbWUgKz0gJyBjaGVja2JveCBwdWxsLXJpZ2h0JztcblxuICAgICAgICAgIGxldCBjaGVja2VkID0gZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS50b1N0cmluZygpID09IHZhbHVlcy5zcGxpdCgnOicpWzBdP3RydWU6ZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGlucHV0IHsuLi5hdHRyfSB0eXBlPSdjaGVja2JveCcgdmFsdWU9e3ZhbHVlc30gZGVmYXVsdENoZWNrZWQ9e2NoZWNrZWR9Lz5cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2V7Ly9wcm9jZXNzIG90aGVyIGlucHV0IHR5cGUuIGFzIHBhc3N3b3JkLHVybCxlbWFpbC4uLlxuICAgICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICAgIDxpbnB1dCB7Li4uYXR0cn0gdHlwZT17dHlwZX0gZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9Lz5cbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL2RlZmF1bHQgcmV0dXJuIGZvciBvdGhlciBjYXNlIG9mIGVkaXRhYmxlXG4gICAgcmV0dXJuKFxuICAgICAgICA8aW5wdXQgey4uLmF0dHJ9IHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPXsoZWRpdG9yQ2xhc3N8fFwiXCIpK1wiIGZvcm0tY29udHJvbCBlZGl0b3IgZWRpdC10ZXh0XCJ9Lz5cbiAgICApXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0b3I7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFRvYXN0ciBmcm9tICdyZWFjdC10b2FzdHInO1xuXG52YXIgVG9hc3RyQ29udGFpbmVyPVRvYXN0ci5Ub2FzdENvbnRhaW5lcjtcbnZhciBUb2FzdHJNZXNzYWdlRmFjdG9yeT1SZWFjdC5jcmVhdGVGYWN0b3J5KFRvYXN0ci5Ub2FzdE1lc3NhZ2UuYW5pbWF0aW9uKTtcblxuY2xhc3MgTm90aWZpY2F0aW9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuICAvLyBhbGxvdyB0eXBlIGlzIHN1Y2Nlc3MsaW5mbyx3YXJuaW5nLGVycm9yXG4gIG5vdGljZSh0eXBlLG1zZyx0aXRsZSl7XG4gICAgdGhpcy5yZWZzLnRvYXN0clt0eXBlXShcbiAgICAgICAgbXNnLHRpdGxlLCB7XG4gICAgICAgICAgbW9kZTonc2luZ2xlJyxcbiAgICAgICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgICAgIGV4dGVuZGVkVGltZU91dDogMTAwMCxcbiAgICAgICAgICBzaG93QW5pbWF0aW9uOiBcImFuaW1hdGVkICBib3VuY2VJblwiLFxuICAgICAgICAgIGhpZGVBbmltYXRpb246IFwiYW5pbWF0ZWQgYm91bmNlT3V0XCJcbiAgICAgICAgfSk7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxUb2FzdHJDb250YWluZXIgcmVmPVwidG9hc3RyXCIgdG9hc3RNZXNzYWdlRmFjdG9yeT17VG9hc3RyTWVzc2FnZUZhY3Rvcnl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0b2FzdC1jb250YWluZXJcIiAgY2xhc3NOYW1lPVwidG9hc3QtdG9wLXJpZ2h0XCI+PC9Ub2FzdHJDb250YWluZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQ29uc3QgZnJvbSAnLi9Db25zdCc7XG5cbmNsYXNzIFNlbGVjdFJvd0hlYWRlckNvbHVtbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICByZW5kZXIoKXtcbiAgICB2YXIgdGhTdHlsZSA9IHtcbiAgICAgIHdpZHRoOiAzNVxuICAgIH07XG5cbiAgICByZXR1cm4oXG4gICAgICA8dGggc3R5bGU9e3RoU3R5bGV9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRoLWlubmVyIHRhYmxlLWhlYWRlci1jb2x1bW5cIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RoPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3RSb3dIZWFkZXJDb2x1bW47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFRhYmxlUm93IGZyb20gJy4vVGFibGVSb3cnO1xuaW1wb3J0IFRhYmxlQ29sdW1uIGZyb20gJy4vVGFibGVDb2x1bW4nO1xuaW1wb3J0IFRhYmxlRWRpdENvbHVtbiBmcm9tICcuL1RhYmxlRWRpdENvbHVtbic7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbnZhciBpc0Z1bj1mdW5jdGlvbihvYmope1xuICByZXR1cm4gb2JqJiYodHlwZW9mIG9iaj09PVwiZnVuY3Rpb25cIik7XG5cbn07XG5jbGFzcyBUYWJsZUJvZHkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnR7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcblx0XHRzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGN1cnJFZGl0Q2VsbDogbnVsbFxuICAgIH07XG4gICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgY29udGFpbmVyQ2xhc3NlcyA9IGNsYXNzU2V0KFwidGFibGUtY29udGFpbmVyXCIpO1xuXG4gICAgdmFyIHRhYmxlQ2xhc3NlcyA9IGNsYXNzU2V0KFwidGFibGVcIiwge1xuICAgICAgJ3RhYmxlLXN0cmlwZWQnOiB0aGlzLnByb3BzLnN0cmlwZWQsXG4gICAgICAndGFibGUtYm9yZGVyZWQnOiB0aGlzLnByb3BzLmJvcmRlcmVkLFxuICAgICAgJ3RhYmxlLWhvdmVyJzogdGhpcy5wcm9wcy5ob3ZlcixcbiAgICAgICd0YWJsZS1jb25kZW5zZWQnOiB0aGlzLnByb3BzLmNvbmRlbnNlZFxuICAgIH0pO1xuXG4gICAgdmFyIGlzU2VsZWN0Um93RGVmaW5lZCA9IHRoaXMuX2lzU2VsZWN0Um93RGVmaW5lZCgpO1xuICAgIHZhciB0YWJsZUhlYWRlciA9IHRoaXMucmVuZGVyVGFibGVIZWFkZXIoaXNTZWxlY3RSb3dEZWZpbmVkKTtcblxuICAgIHZhciB0YWJsZVJvd3MgPSB0aGlzLnByb3BzLmRhdGEubWFwKGZ1bmN0aW9uKGRhdGEsIHIpe1xuICAgICAgdmFyIHRhYmxlQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoZnVuY3Rpb24oY29sdW1uLCBpKXtcbiAgICAgICAgdmFyIGZpZWxkVmFsdWUgPSBkYXRhW2NvbHVtbi5uYW1lXTtcbiAgICAgICAgaWYodGhpcy5lZGl0aW5nICYmXG4gICAgICAgICAgY29sdW1uLm5hbWUgIT09IHRoaXMucHJvcHMua2V5RmllbGQgJiYgLy8gS2V5IGZpZWxkIGNhbid0IGJlIGVkaXRcbiAgICAgICAgICBjb2x1bW4uZWRpdGFibGUgJiYgLy8gY29sdW1uIGlzIGVkaXRhYmxlPyBkZWZhdWx0IGlzIHRydWUsIHVzZXIgY2FuIHNldCBpdCBmYWxzZVxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VyckVkaXRDZWxsICE9IG51bGwgJiZcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJFZGl0Q2VsbC5yaWQgPT0gciAmJlxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VyckVkaXRDZWxsLmNpZCA9PSBpKXtcbiAgICAgICAgICAgIHZhciBmb3JtYXQ9Y29sdW1uLmZvcm1hdD9mdW5jdGlvbih2YWx1ZSl7XG4gICAgICAgICAgICAgIHJldHVybiBjb2x1bW4uZm9ybWF0KHZhbHVlLGRhdGEpLnJlcGxhY2UoLzwuKj8+L2csJycpO1xuICAgICAgICAgICAgfTpmYWxzZTtcblxuICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgPFRhYmxlRWRpdENvbHVtbiBjb21wbGV0ZUVkaXQ9e3RoaXMuaGFuZGxlQ29tcGxldGVFZGl0Q2VsbC5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYWRkIGJ5IGJsdWVzcHJpbmcgZm9yIGNvbHVtbiBlZGl0b3IgY3VzdG9taXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU9e2lzRnVuKGNvbHVtbi5lZGl0YWJsZSk/Y29sdW1uLmVkaXRhYmxlKGZpZWxkVmFsdWUsZGF0YSxyLGkpOmNvbHVtbi5lZGl0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9e2NvbHVtbi5mb3JtYXQ/Zm9ybWF0OmZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyVG9TYXZlPXt0aGlzLnByb3BzLmNlbGxFZGl0LmJsdXJUb1NhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg9e3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg9e2l9PlxuICAgICAgICAgICAgICAgIHtmaWVsZFZhbHVlfVxuICAgICAgICAgICAgICA8L1RhYmxlRWRpdENvbHVtbj5cbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNle1xuICAgICAgICAgIC8vYWRkIGJ5IGJsdWVzcHJpbmcgZm9yIGNsYXNzTmFtZSBjdXN0b21pemVcbiAgICAgICAgICB2YXIgdGRDbGFzc05hbWU9aXNGdW4oY29sdW1uLmNsYXNzTmFtZSk/Y29sdW1uLmNsYXNzTmFtZShmaWVsZFZhbHVlLGRhdGEscixpKTpjb2x1bW4uY2xhc3NOYW1lO1xuXG4gICAgICAgICAgaWYodHlwZW9mIGNvbHVtbi5mb3JtYXQgIT09IFwidW5kZWZpbmVkXCIpe1xuICAgICAgICAgICAgdmFyIGZvcm1hdHRlZFZhbHVlID0gY29sdW1uLmZvcm1hdChmaWVsZFZhbHVlLCBkYXRhKTtcbiAgICAgICAgICAgIGlmICghUmVhY3QuaXNWYWxpZEVsZW1lbnQoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gPGRpdiBkYW5nZXJvdXNseVNldElubmVySFRNTD17e19faHRtbDogZm9ybWF0dGVkVmFsdWV9fT48L2Rpdj47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICAgIDxUYWJsZUNvbHVtbiBkYXRhQWxpZ249e2NvbHVtbi5hbGlnbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dGRDbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsRWRpdD17dGhpcy5wcm9wcy5jZWxsRWRpdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRWRpdD17dGhpcy5oYW5kbGVFZGl0Q2VsbC5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e2NvbHVtbi53aWR0aH0+XG4gICAgICAgICAgICAgICAge2Zvcm1hdHRlZFZhbHVlfVxuICAgICAgICAgICAgICA8L1RhYmxlQ29sdW1uPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZXtcbiAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgPFRhYmxlQ29sdW1uIGRhdGFBbGlnbj17Y29sdW1uLmFsaWdufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0ZENsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxFZGl0PXt0aGlzLnByb3BzLmNlbGxFZGl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPXtjb2x1bW4uaGlkZGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FZGl0PXt0aGlzLmhhbmRsZUVkaXRDZWxsLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17Y29sdW1uLndpZHRofT5cbiAgICAgICAgICAgICAgICB7ZmllbGRWYWx1ZX1cbiAgICAgICAgICAgICAgPC9UYWJsZUNvbHVtbj5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdmFyIHNlbGVjdGVkID0gdGhpcy5wcm9wcy5zZWxlY3RlZFJvd0tleXMuaW5kZXhPZihkYXRhW3RoaXMucHJvcHMua2V5RmllbGRdKSAhPSAtMTtcbi8vIDw8PDw8PDwgSEVBRFxuICAgICAgdmFyIHNlbGVjdFJvd0NvbHVtbiA9IGlzU2VsZWN0Um93RGVmaW5lZCAmJiAhdGhpcy5wcm9wcy5zZWxlY3RSb3cuaGlkZVNlbGVjdENvbHVtbj9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyU2VsZWN0Um93Q29sdW1uKHNlbGVjdGVkKTpudWxsO1xuLy8gPT09PT09PVxuICAgICAgLy8gdmFyIHNlbGVjdFJvd0NvbHVtbiA9IGlzU2VsZWN0Um93RGVmaW5lZD90aGlzLnJlbmRlclNlbGVjdFJvd0NvbHVtbihzZWxlY3RlZCk6bnVsbDtcbiAgICAgIC8vYWRkIGJ5IGJsdWVzcHJpbmcgZm9yIGNsYXNzTmFtZSBjdXN0b21pemVcbiAgICAgIHZhciB0ckNsYXNzTmFtZT1pc0Z1bih0aGlzLnByb3BzLnRyQ2xhc3NOYW1lKT90aGlzLnByb3BzLnRyQ2xhc3NOYW1lKGRhdGEscik6dGhpcy5wcm9wcy50ckNsYXNzTmFtZTtcbi8vID4+Pj4+Pj4gOTljZDQ1OWRlZmZkNTI2MmQ4ODY5MWU4YjA3NTk3N2JjMGEyODExZlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRhYmxlUm93IGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfSBrZXk9e3J9IGNsYXNzTmFtZT17dHJDbGFzc05hbWV9XG4gICAgICAgICAgc2VsZWN0Um93PXtpc1NlbGVjdFJvd0RlZmluZWQ/dGhpcy5wcm9wcy5zZWxlY3RSb3c6dW5kZWZpbmVkfVxuICAgICAgICAgIGVuYWJsZUNlbGxFZGl0PXt0aGlzLnByb3BzLmNlbGxFZGl0Lm1vZGUgIT09IENvbnN0LkNFTExfRURJVF9OT05FfVxuICAgICAgICAgIG9uUm93Q2xpY2s9e3RoaXMuaGFuZGxlUm93Q2xpY2suYmluZCh0aGlzKX1cbiAgICAgICAgICBvblNlbGVjdFJvdz17dGhpcy5oYW5kbGVTZWxlY3RSb3cuYmluZCh0aGlzKX0+XG4gICAgICAgICAge3NlbGVjdFJvd0NvbHVtbn1cbiAgICAgICAgICB7dGFibGVDb2x1bW5zfVxuICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgKVxuICAgIH0sIHRoaXMpO1xuXG4gICAgaWYodGFibGVSb3dzLmxlbmd0aCA9PT0gMCl7XG4gICAgICB0YWJsZVJvd3MucHVzaChcbiAgICAgIDxUYWJsZVJvdyBrZXk9XCIjI3RhYmxlLWVtcHR5IyNcIj5cbiAgICAgICAgPHRkIGNvbFNwYW49e3RoaXMucHJvcHMuY29sdW1ucy5sZW5ndGgrKGlzU2VsZWN0Um93RGVmaW5lZD8xOjApfVxuICAgICAgICAgICAgc3R5bGU9e3sgdGV4dEFsaWduOiBcImNlbnRlclwiIH19PlxuICAgICAgICAgICAgVGhlcmUgaXMgbm8gZGF0YSB0byBkaXNwbGF5XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L1RhYmxlUm93Pik7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgICA8dGFibGUgY2xhc3NOYW1lPXt0YWJsZUNsYXNzZXN9PlxuICAgICAgICAgIHt0YWJsZUhlYWRlcn1cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICB7dGFibGVSb3dzfVxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZW5kZXJUYWJsZUhlYWRlcihpc1NlbGVjdFJvd0RlZmluZWQpe1xuICAgIHZhciBzZWxlY3RSb3dIZWFkZXIgPSBudWxsO1xuXG4gICAgaWYoaXNTZWxlY3RSb3dEZWZpbmVkKXtcbiAgICAgIGxldCBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6MzVcbiAgICAgIH1cbiAgICAgIHNlbGVjdFJvd0hlYWRlciA9IHRoaXMucHJvcHMuc2VsZWN0Um93LmhpZGVTZWxlY3RDb2x1bW4/bnVsbDooPHRoIHN0eWxlPXtzdHlsZX0ga2V5PXstMX0+PC90aD4pO1xuICAgIH1cbiAgICB2YXIgdGhlYWRlciA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoZnVuY3Rpb24oY29sdW1uLCBpKXtcbiAgICAgIGxldCBzdHlsZT17XG4gICAgICAgIGRpc3BsYXk6IGNvbHVtbi5oaWRkZW4/XCJub25lXCI6bnVsbCxcbiAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aFxuICAgICAgfTtcbiAgICAgIHJldHVybiAoPHRoIHN0eWxlPXtzdHlsZX0ga2V5PXtpfSBjbGFzc05hbWU9e2NvbHVtbi5jbGFzc05hbWV9PjwvdGg+KTtcbiAgICB9KTtcblxuICAgIHJldHVybihcbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPntzZWxlY3RSb3dIZWFkZXJ9e3RoZWFkZXJ9PC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgKVxuICB9XG5cbiAgaGFuZGxlUm93Q2xpY2socm93SW5kZXgpe1xuICAgIHZhciBrZXksIHNlbGVjdGVkUm93O1xuICAgIHRoaXMucHJvcHMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHJvdywgaSl7XG4gICAgICBpZihpID09IHJvd0luZGV4LTEpe1xuICAgICAgICBrZXkgPSByb3dbdGhpcy5wcm9wcy5rZXlGaWVsZF07XG4gICAgICAgIHNlbGVjdGVkUm93ID0gcm93O1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMucHJvcHMub25Sb3dDbGljayhzZWxlY3RlZFJvdyk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3RSb3cocm93SW5kZXgsIGlzU2VsZWN0ZWQpe1xuICAgIHZhciBrZXksIHNlbGVjdGVkUm93O1xuICAgIHRoaXMucHJvcHMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHJvdywgaSl7XG4gICAgICBpZihpID09IHJvd0luZGV4LTEpe1xuICAgICAgICBrZXkgPSByb3dbdGhpcy5wcm9wcy5rZXlGaWVsZF07XG4gICAgICAgIHNlbGVjdGVkUm93ID0gcm93O1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuICAgIHRoaXMucHJvcHMub25TZWxlY3RSb3coc2VsZWN0ZWRSb3csIGlzU2VsZWN0ZWQpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0Um93Q29sdW1DaGFuZ2UoZSl7XG4gICAgaWYoIXRoaXMucHJvcHMuc2VsZWN0Um93LmNsaWNrVG9TZWxlY3QgfHwgIXRoaXMucHJvcHMuc2VsZWN0Um93LmNsaWNrVG9TZWxlY3RBbmRFZGl0Q2VsbCl7XG4gICAgICB0aGlzLmhhbmRsZVNlbGVjdFJvdyhcbiAgICAgICAgZS5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5yb3dJbmRleCwgZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUVkaXRDZWxsKHJvd0luZGV4LCBjb2x1bW5JbmRleCl7XG4gICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICBpZih0aGlzLl9pc1NlbGVjdFJvd0RlZmluZWQoKSl7XG4gICAgICBjb2x1bW5JbmRleC0tO1xuICAgICAgaWYodGhpcy5wcm9wcy5zZWxlY3RSb3cuaGlkZVNlbGVjdENvbHVtbilcbiAgICAgICAgY29sdW1uSW5kZXgrKztcbiAgICB9XG4gICAgcm93SW5kZXgtLTtcbiAgICB2YXIgc3RhdGVPYmogPSB7XG4gICAgICBjdXJyRWRpdENlbGw6IHtcbiAgICAgICAgcmlkOiByb3dJbmRleCxcbiAgICAgICAgY2lkOiBjb2x1bW5JbmRleFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZih0aGlzLnByb3BzLnNlbGVjdFJvdy5jbGlja1RvU2VsZWN0QW5kRWRpdENlbGwpe1xuICAgICAgLy9pZiBlZGl0IGNlbGwsIHRyaWdnZXIgcm93IHNlbGVjdGlvbnMgYWxzb1xuICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5wcm9wcy5zZWxlY3RlZFJvd0tleXMuaW5kZXhPZih0aGlzLnByb3BzLmRhdGFbcm93SW5kZXhdW3RoaXMucHJvcHMua2V5RmllbGRdKSAhPSAtMTtcbiAgICAgIHRoaXMuaGFuZGxlU2VsZWN0Um93KHJvd0luZGV4KzEsICFzZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoc3RhdGVPYmopO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpe1xuICAgIHZhciBjdXJyRWRpdENlbGw9dGhpcy5zdGF0ZS5jdXJyRWRpdENlbGw7XG4gICAgaWYoY3VyckVkaXRDZWxsKXtcbiAgICAgIHRoaXMuaGFuZGxlQ29tcGxldGVFZGl0Q2VsbChudWxsLGN1cnJFZGl0Q2VsbC5yaWQsY3VyckVkaXRDZWxsLmNpZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29tcGxldGVFZGl0Q2VsbChuZXdWYWwsIHJvd0luZGV4LCBjb2x1bW5JbmRleCl7XG4gICAgdGhpcy5zZXRTdGF0ZSh7Y3VyckVkaXRDZWxsOiBudWxsfSk7XG4gICAgaWYobnVsbCAhPSBuZXdWYWwpXG4gICAgICB0aGlzLnByb3BzLmNlbGxFZGl0Ll9fb25Db21wbGV0ZUVkaXRfXyhuZXdWYWwsIHJvd0luZGV4LCBjb2x1bW5JbmRleCk7XG4gIH1cblxuICByZW5kZXJTZWxlY3RSb3dDb2x1bW4oc2VsZWN0ZWQpe1xuICAgIGlmKHRoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9TSU5HTEUpIHtcbiAgICAgIHJldHVybiAoPFRhYmxlQ29sdW1uPjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic2VsZWN0aW9uXCIgY2hlY2tlZD17c2VsZWN0ZWR9IG9uQ2hhbmdlPXt0aGlzLmhhbmRsZVNlbGVjdFJvd0NvbHVtQ2hhbmdlLmJpbmQodGhpcyl9Lz48L1RhYmxlQ29sdW1uPik7XG4gICAgfWVsc2Uge1xuICAgICAgcmV0dXJuICg8VGFibGVDb2x1bW4gPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjaGVja2VkPXtzZWxlY3RlZH0gb25DaGFuZ2U9e3RoaXMuaGFuZGxlU2VsZWN0Um93Q29sdW1DaGFuZ2UuYmluZCh0aGlzKX0vPjwvVGFibGVDb2x1bW4+KTtcbiAgICB9XG4gIH1cblxuICBfaXNTZWxlY3RSb3dEZWZpbmVkKCl7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9TSU5HTEUgfHxcbiAgICAgICAgICB0aGlzLnByb3BzLnNlbGVjdFJvdy5tb2RlID09IENvbnN0LlJPV19TRUxFQ1RfTVVMVEk7XG4gIH1cbn1cblRhYmxlQm9keS5wcm9wVHlwZXMgPSB7XG4gIGRhdGE6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgY29sdW1uczogUmVhY3QuUHJvcFR5cGVzLmFycmF5LFxuICBzdHJpcGVkOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgYm9yZGVyZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBob3ZlcjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGNvbmRlbnNlZDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGtleUZpZWxkOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBzZWxlY3RlZFJvd0tleXM6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgb25Sb3dDbGljazogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0Um93OiBSZWFjdC5Qcm9wVHlwZXMuZnVuY1xufTtcbmV4cG9ydCBkZWZhdWx0IFRhYmxlQm9keTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc3QgZnJvbSAnLi9Db25zdCc7XG5cbmNsYXNzIFRhYmxlQ29sdW1uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG5cdFx0c3VwZXIocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlQ2VsbEVkaXQoZSl7XG4gICAgaWYodGhpcy5wcm9wcy5jZWxsRWRpdC5tb2RlID09IENvbnN0LkNFTExfRURJVF9EQkNMSUNLKXtcbiAgICAgIGlmKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkpIHtcbiAgICAgICAgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7XG4gICAgICB9IGVsc2UgaWYod2luZG93LmdldFNlbGVjdGlvbikge1xuICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnByb3BzLm9uRWRpdChcbiAgICAgIGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnJvd0luZGV4LFxuICAgICAgZS5jdXJyZW50VGFyZ2V0LmNlbGxJbmRleCk7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgdGRTdHlsZSA9IHtcbiAgICAgIHRleHRBbGlnbjogdGhpcy5wcm9wcy5kYXRhQWxpZ24sXG4gICAgICBkaXNwbGF5OiB0aGlzLnByb3BzLmhpZGRlbj9cIm5vbmVcIjpudWxsXG4gICAgfTtcblxuICAgIHZhciBvcHRzID0ge307XG4gICAgaWYodGhpcy5wcm9wcy5jZWxsRWRpdCl7XG4gICAgICBpZih0aGlzLnByb3BzLmNlbGxFZGl0Lm1vZGUgPT0gQ29uc3QuQ0VMTF9FRElUX0NMSUNLKXtcbiAgICAgICAgb3B0cy5vbkNsaWNrID0gdGhpcy5oYW5kbGVDZWxsRWRpdC5iaW5kKHRoaXMpO1xuICAgICAgfWVsc2UgaWYodGhpcy5wcm9wcy5jZWxsRWRpdC5tb2RlID09IENvbnN0LkNFTExfRURJVF9EQkNMSUNLKXtcbiAgICAgICAgb3B0cy5vbkRvdWJsZUNsaWNrID0gdGhpcy5oYW5kbGVDZWxsRWRpdC5iaW5kKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPHRkIHN0eWxlPXt0ZFN0eWxlfSBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lfSB7Li4ub3B0c30+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgPC90ZD5cbiAgICApXG4gIH1cbn1cblRhYmxlQ29sdW1uLnByb3BUeXBlcyA9IHtcbiAgZGF0YUFsaWduOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRkZW46IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjbGFzc05hbWU6UmVhY3QuUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuVGFibGVDb2x1bW4uZGVmYXVsdFByb3BzID0ge1xuICBkYXRhQWxpZ246IFwibGVmdFwiLFxuICBoaWRkZW46IGZhbHNlLFxuICBjbGFzc05hbWU6XCJcIlxufVxuZXhwb3J0IGRlZmF1bHQgVGFibGVDb2x1bW47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IEVkaXRvciBmcm9tICcuL0VkaXRvcidcbmltcG9ydCBOb3RpZmllciBmcm9tICcuL05vdGlmaWNhdGlvbi5qcyc7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmNsYXNzIFRhYmxlRWRpdENvbHVtbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcyl7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy50aW1lb3V0ZUNsZWFyPTA7XG4gICAgICAgIHRoaXMuc3RhdGU9e1xuICAgICAgICAgICAgc2hha2VFZGl0b3I6ZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgaGFuZGxlS2V5UHJlc3MoZSl7XG4gICAgaWYgKGUua2V5Q29kZSA9PSAxMykgeyAvL1ByZXNzZWQgRU5URVJcbiAgICAgIGxldCB2YWx1ZSA9IGUuY3VycmVudFRhcmdldC50eXBlID09ICdjaGVja2JveCc/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldENoZWNrQm94VmFsdWUoZSk6ZS5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuXG4gICAgICBpZighdGhpcy52YWxpZGF0b3IodmFsdWUpKXtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnByb3BzLmNvbXBsZXRlRWRpdChcbiAgICAgICAgdmFsdWUsIHRoaXMucHJvcHMucm93SW5kZXgsIHRoaXMucHJvcHMuY29sSW5kZXgpO1xuICAgIH1lbHNlIGlmKGUua2V5Q29kZSA9PSAyNyl7XG4gICAgICB0aGlzLnByb3BzLmNvbXBsZXRlRWRpdChcbiAgICAgICAgbnVsbCwgdGhpcy5wcm9wcy5yb3dJbmRleCwgdGhpcy5wcm9wcy5jb2xJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQmx1cihlKXtcbiAgICBpZih0aGlzLnByb3BzLmJsdXJUb1NhdmUpe1xuICAgICAgbGV0IHZhbHVlID0gZS5jdXJyZW50VGFyZ2V0LnR5cGUgPT0gJ2NoZWNrYm94Jz9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0Q2hlY2tCb3hWYWx1ZShlKTplLmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICBpZighdGhpcy52YWxpZGF0b3IodmFsdWUpKXtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnByb3BzLmNvbXBsZXRlRWRpdChcbiAgICAgICAgICB2YWx1ZSwgdGhpcy5wcm9wcy5yb3dJbmRleCwgdGhpcy5wcm9wcy5jb2xJbmRleCk7XG4gICAgfVxuICB9XG4gIHZhbGlkYXRvcih2YWx1ZSl7XG4gICAgICB2YXIgdHM9dGhpcztcbiAgICAgIGlmKHRzLnByb3BzLmVkaXRhYmxlLnZhbGlkYXRvcil7XG4gICAgICAgICAgdmFyIHZhbGlkPXRzLnByb3BzLmVkaXRhYmxlLnZhbGlkYXRvcih2YWx1ZSk7XG4gICAgICAgICAgaWYodmFsaWQhPT10cnVlKXtcbiAgICAgICAgICAgICAgdHMucmVmcy5ub3RpZmllci5ub3RpY2UoJ2Vycm9yJyx2YWxpZCxcIlByZXNzZWQgRVNDIGNhbiBjYW5jZWxcIik7XG4gICAgICAgICAgICAgIHZhciBpbnB1dCA9IHRzLnJlZnMuaW5wdXRSZWY7XG4gICAgICAgICAgICAgIC8vYW5pbWF0ZSBpbnB1dFxuICAgICAgICAgICAgICB0cy5jbGVhclRpbWVvdXQoKTtcbiAgICAgICAgICAgICAgdHMuc2V0U3RhdGUoe3NoYWtlRWRpdG9yOnRydWV9KTtcbiAgICAgICAgICAgICAgdHMudGltZW91dGVDbGVhcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHMuc2V0U3RhdGUoe3NoYWtlRWRpdG9yOmZhbHNlfSk7fSwzMDApO1xuICAgICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuICBjbGVhclRpbWVvdXQoKXtcbiAgICAgIGlmKHRoaXMudGltZW91dGVDbGVhciE9MCl7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dGVDbGVhcik7XG4gICAgICAgICAgdGhpcy50aW1lb3V0ZUNsZWFyPTA7XG4gICAgICB9XG4gIH1cbiAgY29tcG9uZW50RGlkTW91bnQoKXtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMucmVmcy5pbnB1dFJlZjtcbiAgICAgIC8vIGlucHV0LnZhbHVlID0gdGhpcy5wcm9wcy5jaGlsZHJlbnx8Jyc7XG4gICAgICBpbnB1dC5mb2N1cygpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgfVxuXG4gIHJlbmRlcigpe1xuICAgIHZhciBlZGl0YWJsZT10aGlzLnByb3BzLmVkaXRhYmxlLFxuICAgICAgICBmb3JtYXQ9dGhpcy5wcm9wcy5mb3JtYXQsXG4gICAgICAgIGF0dHI9e1xuICAgICAgICAgICAgcmVmOlwiaW5wdXRSZWZcIixcbiAgICAgICAgICAgIG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleVByZXNzLmJpbmQodGhpcyksXG4gICAgICAgICAgICBvbkJsdXI6dGhpcy5oYW5kbGVCbHVyLmJpbmQodGhpcylcbiAgICAgICAgfTtcbiAgICAgICAgLy9wdXQgcGxhY2Vob2xkZXIgaWYgZXhpc3RcbiAgICAgICAgZWRpdGFibGUucGxhY2Vob2xkZXImJihhdHRyLnBsYWNlaG9sZGVyPWVkaXRhYmxlLnBsYWNlaG9sZGVyKTtcblxuICAgIHZhciBlZGl0b3JDbGFzcz1jbGFzc1NldCh7J2FuaW1hdGVkJzp0aGlzLnN0YXRlLnNoYWtlRWRpdG9yLCdzaGFrZSc6dGhpcy5zdGF0ZS5zaGFrZUVkaXRvcn0pO1xuICAgIHJldHVybihcbiAgICAgICAgPHRkIHJlZj1cInRkXCIgc3R5bGU9e3twb3NpdGlvbjoncmVsYXRpdmUnfX0+XG4gICAgICAgICAgICB7RWRpdG9yKGVkaXRhYmxlLGF0dHIsZm9ybWF0LGVkaXRvckNsYXNzLHRoaXMucHJvcHMuY2hpbGRyZW58fCcnKX1cbiAgICAgICAgICAgIDxOb3RpZmllciByZWY9XCJub3RpZmllclwiPjwvTm90aWZpZXI+XG4gICAgICAgIDwvdGQ+XG4gICAgKVxuICB9XG5cbiAgX2dldENoZWNrQm94VmFsdWUoZSl7XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgbGV0IHZhbHVlcyA9IGUuY3VycmVudFRhcmdldC52YWx1ZS5zcGxpdCgnOicpO1xuICAgIHZhbHVlID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ/dmFsdWVzWzBdOnZhbHVlc1sxXTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxufVxuVGFibGVFZGl0Q29sdW1uLnByb3BUeXBlcyA9IHtcbiAgY29tcGxldGVFZGl0OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgcm93SW5kZXg6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsXG4gIGNvbEluZGV4OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICBibHVyVG9TYXZlOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbFxufTtcblxuXG5leHBvcnQgZGVmYXVsdCBUYWJsZUVkaXRDb2x1bW47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5jbGFzcyBUYWJsZUZpbHRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLmZpbHRlck9iaiA9IHt9O1xuICB9XG5cbiAgaGFuZGxlS2V5VXAoZSl7XG4gICAgaWYoZS5jdXJyZW50VGFyZ2V0LnZhbHVlLnRyaW0oKSA9PT0gXCJcIilcbiAgICAgIGRlbGV0ZSB0aGlzLmZpbHRlck9ialtlLmN1cnJlbnRUYXJnZXQubmFtZV07XG4gICAgZWxzZVxuICAgICAgdGhpcy5maWx0ZXJPYmpbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuXG4gICAgdGhpcy5wcm9wcy5vbkZpbHRlcih0aGlzLmZpbHRlck9iaik7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgdGFibGVDbGFzc2VzID0gY2xhc3NTZXQoXCJ0YWJsZVwiLCB7XG4gICAgICAndGFibGUtc3RyaXBlZCc6IHRoaXMucHJvcHMuc3RyaXBlZCxcbiAgICAgICd0YWJsZS1jb25kZW5zZWQnOiB0aGlzLnByb3BzLmNvbmRlbnNlZFxuICAgIH0pO1xuICAgIHZhciBzZWxlY3RSb3dIZWFkZXIgPSBudWxsO1xuXG4gICAgaWYodGhpcy5wcm9wcy5yb3dTZWxlY3RUeXBlID09IENvbnN0LlJPV19TRUxFQ1RfU0lOR0xFIHx8XG4gICAgICAgIHRoaXMucHJvcHMucm93U2VsZWN0VHlwZSA9PSBDb25zdC5ST1dfU0VMRUNUX01VTFRJKXtcbiAgICAgIGxldCBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6MzUsXG4gICAgICAgIHBhZGRpbmdMZWZ0OiAwLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IDBcbiAgICAgIH1cbiAgICAgIHNlbGVjdFJvd0hlYWRlciA9ICg8dGggc3R5bGU9e3N0eWxlfSBrZXk9ey0xfT5GaWx0ZXI8L3RoPik7XG4gICAgfVxuICAgIHZhciBmaWx0ZXJGaWVsZCA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoZnVuY3Rpb24oY29sdW1uKXtcbiAgICAgIHZhciB0aFN0eWxlID0ge1xuICAgICAgICBkaXNwbGF5OiBjb2x1bW4uaGlkZGVuP1wibm9uZVwiOm51bGwsXG4gICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGhcbiAgICAgIH07XG4gICAgICByZXR1cm4oXG4gICAgICAgIDx0aCBrZXk9e2NvbHVtbi5uYW1lfSBzdHlsZT17dGhTdHlsZX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aC1pbm5lciB0YWJsZS1oZWFkZXItY29sdW1uXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj17Y29sdW1uLm5hbWV9IG5hbWU9e2NvbHVtbi5uYW1lfSBvbktleVVwPXt0aGlzLmhhbmRsZUtleVVwLmJpbmQodGhpcyl9Lz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIClcbiAgICB9LCB0aGlzKTtcbiAgICByZXR1cm4oXG4gICAgICA8dGFibGUgY2xhc3NOYW1lPXt0YWJsZUNsYXNzZXN9IHN0eWxlPXt7bWFyZ2luVG9wOjV9fT5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0ciBzdHlsZT17e2JvcmRlckJvdHRvbVN0eWxlOiAnaGlkZGVuJ319PlxuICAgICAgICAgICAge3NlbGVjdFJvd0hlYWRlcn17ZmlsdGVyRmllbGR9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgIDwvdGFibGU+XG4gICAgKVxuICB9XG59XG5UYWJsZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIGNvbHVtbnM6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgcm93U2VsZWN0VHlwZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgb25GaWx0ZXI6IFJlYWN0LlByb3BUeXBlcy5mdW5jXG59O1xuZXhwb3J0IGRlZmF1bHQgVGFibGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJztcbmltcG9ydCBjbGFzc1NldCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBTZWxlY3RSb3dIZWFkZXJDb2x1bW4gZnJvbSAnLi9TZWxlY3RSb3dIZWFkZXJDb2x1bW4nO1xuXG5jbGFzcyBUYWJsZUhlYWRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGNsZWFyU29ydENhcmV0KG9yZGVyLCBzb3J0RmllbGQpe1xuICAgIHZhciByb3cgPSB0aGlzLnJlZnMuaGVhZGVyO1xuICAgIGZvcih2YXIgaT0wO2k8cm93LmNoaWxkRWxlbWVudENvdW50O2krKyl7XG4gICAgICB2YXIgY29sdW1uID0gcm93LmNoaWxkTm9kZXNbaV0uY2hpbGROb2Rlc1swXTtcbiAgICAgIGlmKGNvbHVtbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwib3JkZXJcIikubGVuZ3RoID4gMCl7XG4gICAgICAgIGNvbHVtbi5yZW1vdmVDaGlsZChjb2x1bW4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm9yZGVyXCIpWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcm9wcy5vblNvcnQob3JkZXIsIHNvcnRGaWVsZCk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpe1xuICAgIC8vZGVmYXVsdCBzb3J0aW5nXG4gICAgaWYodGhpcy5wcm9wcy5zb3J0TmFtZSl7XG4gICAgICB0aGlzLmNsZWFyU29ydENhcmV0KHRoaXMucHJvcHMuc29ydE9yZGVyLCB0aGlzLnByb3BzLnNvcnROYW1lKTtcbiAgICAgIHZhciByb3cgPSB0aGlzLnJlZnMuaGVhZGVyO1xuICAgICAgZm9yKHZhciBpPTA7aTxyb3cuY2hpbGRFbGVtZW50Q291bnQ7aSsrKXtcbiAgICAgICAgdmFyIGNvbHVtbiA9IHJvdy5jaGlsZE5vZGVzW2ldLmNoaWxkTm9kZXNbMF07XG4gICAgICAgIGlmKGNvbHVtbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmllbGQnKSA9PT0gdGhpcy5wcm9wcy5zb3J0TmFtZSl7XG4gICAgICAgICAgY29sdW1uLmFwcGVuZENoaWxkKFV0aWwucmVuZGVyU29ydENhcmV0KHRoaXMucHJvcHMuc29ydE9yZGVyKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgY29udGFpbmVyQ2xhc3NlcyA9IGNsYXNzU2V0KFwidGFibGUtaGVhZGVyXCIpO1xuICAgIHZhciB0YWJsZUNsYXNzZXMgPSBjbGFzc1NldChcInRhYmxlXCIsIFwidGFibGUtaG92ZXJcIiwge1xuICAgICAgICBcInRhYmxlLWJvcmRlcmVkXCI6IHRoaXMucHJvcHMuYm9yZGVyZWRcbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0Um93SGVhZGVyQ29sID0gdGhpcy5wcm9wcy5oaWRlU2VsZWN0Q29sdW1uP251bGw6dGhpcy5yZW5kZXJTZWxlY3RSb3dIZWFkZXIoKTtcbiAgICB0aGlzLl9hdHRhY2hDbGVhclNvcnRDYXJldEZ1bmMoKTtcblxuICAgIHJldHVybihcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT17dGFibGVDbGFzc2VzfT5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHIgcmVmPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RSb3dIZWFkZXJDb2x9XG4gICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyU2VsZWN0Um93SGVhZGVyKCl7XG4gICAgaWYodGhpcy5wcm9wcy5yb3dTZWxlY3RUeXBlID09IENvbnN0LlJPV19TRUxFQ1RfU0lOR0xFKSB7XG4gICAgICByZXR1cm4gKDxTZWxlY3RSb3dIZWFkZXJDb2x1bW4+PC9TZWxlY3RSb3dIZWFkZXJDb2x1bW4+KTtcbiAgICB9ZWxzZSBpZih0aGlzLnByb3BzLnJvd1NlbGVjdFR5cGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9NVUxUSSl7XG4gICAgICByZXR1cm4gKDxTZWxlY3RSb3dIZWFkZXJDb2x1bW4+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG9uQ2hhbmdlPXt0aGlzLnByb3BzLm9uU2VsZWN0QWxsUm93fS8+PC9TZWxlY3RSb3dIZWFkZXJDb2x1bW4+KTtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9hdHRhY2hDbGVhclNvcnRDYXJldEZ1bmMoKXtcbiAgICBpZihBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pKXtcbiAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcbiAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlbltpXSA9XG4gICAgICAgICAgUmVhY3QuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMuY2hpbGRyZW5baV0sIHtrZXk6IGksIGNsZWFyU29ydENhcmV0OiB0aGlzLmNsZWFyU29ydENhcmV0LmJpbmQodGhpcyl9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlbiA9XG4gICAgICAgIFJlYWN0LmNsb25lRWxlbWVudCh0aGlzLnByb3BzLmNoaWxkcmVuLCB7a2V5OiAwLCBjbGVhclNvcnRDYXJldDogdGhpcy5jbGVhclNvcnRDYXJldC5iaW5kKHRoaXMpfSk7XG4gICAgfVxuICB9XG59XG5UYWJsZUhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIHJvd1NlbGVjdFR5cGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIG9uU29ydDogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0QWxsUm93OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgc29ydE5hbWU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIHNvcnRPcmRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZVNlbGVjdENvbHVtbjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGJvcmRlcmVkOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbFxufTtcblxuVGFibGVIZWFkZXIuZGVmYXVsdFByb3BzID0ge1xufTtcbmV4cG9ydCBkZWZhdWx0IFRhYmxlSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc1NldCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBDb25zdCBmcm9tICcuL0NvbnN0JztcbmltcG9ydCBVdGlsIGZyb20gJy4vdXRpbCc7XG5cbmNsYXNzIFRhYmxlSGVhZGVyQ29sdW1uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXG4gIG9yZGVyOiBDb25zdC5TT1JUX0RFU0NcblxuICBoYW5kbGVDb2x1bW5DbGljayhlKXtcbiAgICBpZighdGhpcy5wcm9wcy5kYXRhU29ydClyZXR1cm47XG4gICAgdmFyIGRvbSA9IHRoaXMucmVmcy5pbm5lckRpdjtcbiAgICB0aGlzLm9yZGVyID0gdGhpcy5vcmRlciA9PSBDb25zdC5TT1JUX0RFU0M/Q29uc3QuU09SVF9BU0M6Q29uc3QuU09SVF9ERVNDO1xuICAgIHRoaXMucHJvcHMuY2xlYXJTb3J0Q2FyZXQodGhpcy5vcmRlciwgdGhpcy5wcm9wcy5kYXRhRmllbGQpO1xuICAgIGRvbS5hcHBlbmRDaGlsZChVdGlsLnJlbmRlclNvcnRDYXJldCh0aGlzLm9yZGVyKSk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpe1xuICAgIHRoaXMucmVmcy5pbm5lckRpdi5zZXRBdHRyaWJ1dGUoXCJkYXRhLWZpZWxkXCIsIHRoaXMucHJvcHMuZGF0YUZpZWxkKTtcbiAgfVxuXG4gIHJlbmRlcigpe1xuICAgIHZhciB0aFN0eWxlID0ge1xuICAgICAgdGV4dEFsaWduOiB0aGlzLnByb3BzLmRhdGFBbGlnbixcbiAgICAgIGRpc3BsYXk6IHRoaXMucHJvcHMuaGlkZGVuP1wibm9uZVwiOm51bGwsXG4gICAgICB3aWR0aDogdGhpcy5wcm9wcy53aWR0aFxuICAgIH07XG5cbiAgICB2YXIgY2xhc3NlcyA9IHRoaXMucHJvcHMuY2xhc3NOYW1lK1wiIFwiKyh0aGlzLnByb3BzLmRhdGFTb3J0P1wic29ydC1jb2x1bW5cIjpcIlwiKTtcbiAgICByZXR1cm4oXG4gICAgICA8dGggY2xhc3NOYW1lPXtjbGFzc2VzfSBzdHlsZT17dGhTdHlsZX0+XG4gICAgICAgIDxkaXYgcmVmPVwiaW5uZXJEaXZcIiBjbGFzc05hbWU9XCJ0aC1pbm5lciB0YWJsZS1oZWFkZXItY29sdW1uXCJcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvbHVtbkNsaWNrLmJpbmQodGhpcyl9Pnt0aGlzLnByb3BzLmNoaWxkcmVufTwvZGl2PlxuICAgICAgPC90aD5cbiAgICApXG4gIH1cbn1cblRhYmxlSGVhZGVyQ29sdW1uLnByb3BUeXBlcyA9IHtcbiAgZGF0YUZpZWxkOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBkYXRhQWxpZ246IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIGRhdGFTb3J0OiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgY2xlYXJTb3J0Q2FyZXQ6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICBkYXRhRm9ybWF0OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgaXNLZXk6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBlZGl0YWJsZTogUmVhY3QuUHJvcFR5cGVzLmFueSxcbiAgaGlkZGVuOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgY2xhc3NOYW1lOlJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIHdpZHRoOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBzb3J0RnVuYzogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIGNvbHVtbkNsYXNzTmFtZTogUmVhY3QuUHJvcFR5cGVzLmFueVxufTtcblxuVGFibGVIZWFkZXJDb2x1bW4uZGVmYXVsdFByb3BzID0ge1xuICBkYXRhQWxpZ246IFwibGVmdFwiLFxuICBkYXRhU29ydDogZmFsc2UsXG4gIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZCxcbiAgaXNLZXk6IGZhbHNlLFxuICBlZGl0YWJsZTogdHJ1ZSxcbiAgY2xlYXJTb3J0Q2FyZXQ6IHVuZGVmaW5lZCxcbiAgaGlkZGVuOiBmYWxzZSxcbiAgY2xhc3NOYW1lOiBcIlwiLFxuICB3aWR0aDogbnVsbCxcbiAgc29ydEZ1bmM6IHVuZGVmaW5lZCxcbiAgY29sdW1uQ2xhc3NOYW1lOiAnJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGFibGVIZWFkZXJDb2x1bW47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuXG5jbGFzcyBUYWJsZVJvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICByb3dDbGljayhlKXtcbiAgICBpZihlLnRhcmdldC50YWdOYW1lICE9PSBcIklOUFVUXCIpXG4gICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RSb3cgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RSb3cuY2xpY2tUb1NlbGVjdCkgdGhpcy5wcm9wcy5vblNlbGVjdFJvdyhlLmN1cnJlbnRUYXJnZXQucm93SW5kZXgsICF0aGlzLnByb3BzLmlzU2VsZWN0ZWQpO1xuICAgICAgaWYgKHRoaXMucHJvcHMub25Sb3dDbGljaykgdGhpcy5wcm9wcy5vblJvd0NsaWNrKGUuY3VycmVudFRhcmdldC5yb3dJbmRleCk7XG4gIH1cblxuICByZW5kZXIoKXtcblxuICAgIHZhciB0ckNzcz17XG4gICAgICBzdHlsZTp7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5wcm9wcy5pc1NlbGVjdGVkP3RoaXMucHJvcHMuc2VsZWN0Um93LmJnQ29sb3I6bnVsbFxuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZTp0aGlzLnByb3BzLmNsYXNzTmFtZXx8JydcbiAgICB9O1xuXG4gICAgaWYodGhpcy5wcm9wcy5zZWxlY3RSb3cgJiYgIXRoaXMucHJvcHMuZW5hYmxlQ2VsbEVkaXQgJiZcbiAgICAgICh0aGlzLnByb3BzLnNlbGVjdFJvdy5jbGlja1RvU2VsZWN0IHx8IHRoaXMucHJvcHMuc2VsZWN0Um93LmNsaWNrVG9TZWxlY3RBbmRFZGl0Q2VsbCkgfHwgdGhpcy5wcm9wcy5vblJvd0NsaWNrKXtcbiAgICAgIHJldHVybihcbiAgICAgICAgPHRyIHsuLi50ckNzc30gb25DbGljaz17dGhpcy5yb3dDbGljay5iaW5kKHRoaXMpfT57dGhpcy5wcm9wcy5jaGlsZHJlbn08L3RyPlxuICAgICAgKVxuICAgIH1lbHNle1xuICAgICAgcmV0dXJuKFxuICAgICAgICA8dHIgey4uLnRyQ3NzfT57dGhpcy5wcm9wcy5jaGlsZHJlbn08L3RyPlxuICAgICAgKVxuICAgIH1cbiAgfVxufVxuVGFibGVSb3cucHJvcFR5cGVzID0ge1xuICBpc1NlbGVjdGVkOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgZW5hYmxlQ2VsbEVkaXQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBvblJvd0NsaWNrOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RSb3c6IFJlYWN0LlByb3BUeXBlcy5mdW5jXG59O1xuVGFibGVSb3cuZGVmYXVsdFByb3BzID0ge1xuICBvblJvd0NsaWNrOiB1bmRlZmluZWRcbn1cbmV4cG9ydCBkZWZhdWx0IFRhYmxlUm93O1xuIiwiaW1wb3J0IGZpbGVzYXZlciBmcm9tICcuL2ZpbGVzYXZlcic7XG52YXIgc2F2ZUFzID0gZmlsZXNhdmVyLnNhdmVBcztcblxuZnVuY3Rpb24gdG9TdHJpbmcoZGF0YSwga2V5cykge1xuICB2YXIgZGF0YVN0cmluZyA9IFwiXCI7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGRhdGFTdHJpbmc7XG4gIFxuICBkYXRhU3RyaW5nICs9IGtleXMuam9pbignXFx0JykgKyAnXFxuJ1xuXG4gIGRhdGEubWFwKGZ1bmN0aW9uKHJvdykge1xuICAgIGtleXMubWFwKGZ1bmN0aW9uKGNvbCkge1xuICAgICAgdmFyIGNlbGwgPSByb3dbY29sXSA/IHJvd1tjb2xdIDogXCJcIjtcbiAgICAgIGRhdGFTdHJpbmcgKz0gcm93W2NvbF0gKyAnXFx0JztcbiAgICB9KTtcblxuICAgIGRhdGFTdHJpbmcgKz0gJ1xcbic7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhU3RyaW5nO1xufTtcblxudmFyIGV4cG9ydENTViA9IGZ1bmN0aW9uKGRhdGEsIGtleXMsIGZpbGVuYW1lKSB7XG4gIHZhciBkYXRhU3RyaW5nID0gdG9TdHJpbmcoZGF0YSwga2V5cyk7XG4gIHNhdmVBcyggbmV3IEJsb2IoW2RhdGFTdHJpbmddLCB7dHlwZTogXCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLThcIn0pLCBmaWxlbmFtZSB8fCAnc3ByZWFkc2hlZXQuY3N2JyApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXhwb3J0Q1NWO1xuIiwiLyogRmlsZVNhdmVyLmpzXG4gKiBBIHNhdmVBcygpIEZpbGVTYXZlciBpbXBsZW1lbnRhdGlvbi5cbiAqIDEuMS4yMDE1MTAwM1xuICpcbiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb21cbiAqIExpY2Vuc2U6IE1JVFxuICogICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWRcbiAqL1xuXG4vKmdsb2JhbCBzZWxmICovXG4vKmpzbGludCBiaXR3aXNlOiB0cnVlLCBpbmRlbnQ6IDQsIGxheGJyZWFrOiB0cnVlLCBsYXhjb21tYTogdHJ1ZSwgc21hcnR0YWJzOiB0cnVlLCBwbHVzcGx1czogdHJ1ZSAqL1xuXG4vKiEgQHNvdXJjZSBodHRwOi8vcHVybC5lbGlncmV5LmNvbS9naXRodWIvRmlsZVNhdmVyLmpzL2Jsb2IvbWFzdGVyL0ZpbGVTYXZlci5qcyAqL1xuXG52YXIgc2F2ZUFzID0gc2F2ZUFzIHx8IChmdW5jdGlvbih2aWV3KSB7XG5cdFwidXNlIHN0cmljdFwiO1xuXHQvLyBJRSA8MTAgaXMgZXhwbGljaXRseSB1bnN1cHBvcnRlZFxuXHRpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiAvTVNJRSBbMS05XVxcLi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkge1xuXHRcdHJldHVybjtcblx0fVxuXHR2YXJcblx0XHQgIGRvYyA9IHZpZXcuZG9jdW1lbnRcblx0XHQgIC8vIG9ubHkgZ2V0IFVSTCB3aGVuIG5lY2Vzc2FyeSBpbiBjYXNlIEJsb2IuanMgaGFzbid0IG92ZXJyaWRkZW4gaXQgeWV0XG5cdFx0LCBnZXRfVVJMID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdmlldy5VUkwgfHwgdmlldy53ZWJraXRVUkwgfHwgdmlldztcblx0XHR9XG5cdFx0LCBzYXZlX2xpbmsgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiLCBcImFcIilcblx0XHQsIGNhbl91c2Vfc2F2ZV9saW5rID0gXCJkb3dubG9hZFwiIGluIHNhdmVfbGlua1xuXHRcdCwgY2xpY2sgPSBmdW5jdGlvbihub2RlKSB7XG5cdFx0XHR2YXIgZXZlbnQgPSBuZXcgTW91c2VFdmVudChcImNsaWNrXCIpO1xuXHRcdFx0bm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcblx0XHR9XG5cdFx0LCBpc19zYWZhcmkgPSAvVmVyc2lvblxcL1tcXGRcXC5dKy4qU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG5cdFx0LCB3ZWJraXRfcmVxX2ZzID0gdmlldy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVxuXHRcdCwgcmVxX2ZzID0gdmlldy5yZXF1ZXN0RmlsZVN5c3RlbSB8fCB3ZWJraXRfcmVxX2ZzIHx8IHZpZXcubW96UmVxdWVzdEZpbGVTeXN0ZW1cblx0XHQsIHRocm93X291dHNpZGUgPSBmdW5jdGlvbihleCkge1xuXHRcdFx0KHZpZXcuc2V0SW1tZWRpYXRlIHx8IHZpZXcuc2V0VGltZW91dCkoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRocm93IGV4O1xuXHRcdFx0fSwgMCk7XG5cdFx0fVxuXHRcdCwgZm9yY2Vfc2F2ZWFibGVfdHlwZSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblx0XHQsIGZzX21pbl9zaXplID0gMFxuXHRcdC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc1Mjk3I2M3IGFuZFxuXHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlncmV5L0ZpbGVTYXZlci5qcy9jb21taXQvNDg1OTMwYSNjb21taXRjb21tZW50LTg3NjgwNDdcblx0XHQvLyBmb3IgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIHRpbWVvdXQgYW5kIHJldm9jYXRpb24gZmxvd1xuXHRcdCwgYXJiaXRyYXJ5X3Jldm9rZV90aW1lb3V0ID0gNTAwIC8vIGluIG1zXG5cdFx0LCByZXZva2UgPSBmdW5jdGlvbihmaWxlKSB7XG5cdFx0XHR2YXIgcmV2b2tlciA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIpIHsgLy8gZmlsZSBpcyBhbiBvYmplY3QgVVJMXG5cdFx0XHRcdFx0Z2V0X1VSTCgpLnJldm9rZU9iamVjdFVSTChmaWxlKTtcblx0XHRcdFx0fSBlbHNlIHsgLy8gZmlsZSBpcyBhIEZpbGVcblx0XHRcdFx0XHRmaWxlLnJlbW92ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0aWYgKHZpZXcuY2hyb21lKSB7XG5cdFx0XHRcdHJldm9rZXIoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNldFRpbWVvdXQocmV2b2tlciwgYXJiaXRyYXJ5X3Jldm9rZV90aW1lb3V0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0LCBkaXNwYXRjaCA9IGZ1bmN0aW9uKGZpbGVzYXZlciwgZXZlbnRfdHlwZXMsIGV2ZW50KSB7XG5cdFx0XHRldmVudF90eXBlcyA9IFtdLmNvbmNhdChldmVudF90eXBlcyk7XG5cdFx0XHR2YXIgaSA9IGV2ZW50X3R5cGVzLmxlbmd0aDtcblx0XHRcdHdoaWxlIChpLS0pIHtcblx0XHRcdFx0dmFyIGxpc3RlbmVyID0gZmlsZXNhdmVyW1wib25cIiArIGV2ZW50X3R5cGVzW2ldXTtcblx0XHRcdFx0aWYgKHR5cGVvZiBsaXN0ZW5lciA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGxpc3RlbmVyLmNhbGwoZmlsZXNhdmVyLCBldmVudCB8fCBmaWxlc2F2ZXIpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGV4KSB7XG5cdFx0XHRcdFx0XHR0aHJvd19vdXRzaWRlKGV4KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0LCBhdXRvX2JvbSA9IGZ1bmN0aW9uKGJsb2IpIHtcblx0XHRcdC8vIHByZXBlbmQgQk9NIGZvciBVVEYtOCBYTUwgYW5kIHRleHQvKiB0eXBlcyAoaW5jbHVkaW5nIEhUTUwpXG5cdFx0XHRpZiAoL15cXHMqKD86dGV4dFxcL1xcUyp8YXBwbGljYXRpb25cXC94bWx8XFxTKlxcL1xcUypcXCt4bWwpXFxzKjsuKmNoYXJzZXRcXHMqPVxccyp1dGYtOC9pLnRlc3QoYmxvYi50eXBlKSkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IEJsb2IoW1wiXFx1ZmVmZlwiLCBibG9iXSwge3R5cGU6IGJsb2IudHlwZX0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGJsb2I7XG5cdFx0fVxuXHRcdCwgRmlsZVNhdmVyID0gZnVuY3Rpb24oYmxvYiwgbmFtZSwgbm9fYXV0b19ib20pIHtcblx0XHRcdGlmICghbm9fYXV0b19ib20pIHtcblx0XHRcdFx0YmxvYiA9IGF1dG9fYm9tKGJsb2IpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gRmlyc3QgdHJ5IGEuZG93bmxvYWQsIHRoZW4gd2ViIGZpbGVzeXN0ZW0sIHRoZW4gb2JqZWN0IFVSTHNcblx0XHRcdHZhclxuXHRcdFx0XHQgIGZpbGVzYXZlciA9IHRoaXNcblx0XHRcdFx0LCB0eXBlID0gYmxvYi50eXBlXG5cdFx0XHRcdCwgYmxvYl9jaGFuZ2VkID0gZmFsc2Vcblx0XHRcdFx0LCBvYmplY3RfdXJsXG5cdFx0XHRcdCwgdGFyZ2V0X3ZpZXdcblx0XHRcdFx0LCBkaXNwYXRjaF9hbGwgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkaXNwYXRjaChmaWxlc2F2ZXIsIFwid3JpdGVzdGFydCBwcm9ncmVzcyB3cml0ZSB3cml0ZWVuZFwiLnNwbGl0KFwiIFwiKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb24gYW55IGZpbGVzeXMgZXJyb3JzIHJldmVydCB0byBzYXZpbmcgd2l0aCBvYmplY3QgVVJMc1xuXHRcdFx0XHQsIGZzX2Vycm9yID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKHRhcmdldF92aWV3ICYmIGlzX3NhZmFyaSAmJiB0eXBlb2YgRmlsZVJlYWRlciAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0XHRcdFx0Ly8gU2FmYXJpIGRvZXNuJ3QgYWxsb3cgZG93bmxvYWRpbmcgb2YgYmxvYiB1cmxzXG5cdFx0XHRcdFx0XHR2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblx0XHRcdFx0XHRcdHJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGJhc2U2NERhdGEgPSByZWFkZXIucmVzdWx0O1xuXHRcdFx0XHRcdFx0XHR0YXJnZXRfdmlldy5sb2NhdGlvbi5ocmVmID0gXCJkYXRhOmF0dGFjaG1lbnQvZmlsZVwiICsgYmFzZTY0RGF0YS5zbGljZShiYXNlNjREYXRhLnNlYXJjaCgvWyw7XS8pKTtcblx0XHRcdFx0XHRcdFx0ZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuRE9ORTtcblx0XHRcdFx0XHRcdFx0ZGlzcGF0Y2hfYWxsKCk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG5cdFx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5JTklUO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBkb24ndCBjcmVhdGUgbW9yZSBvYmplY3QgVVJMcyB0aGFuIG5lZWRlZFxuXHRcdFx0XHRcdGlmIChibG9iX2NoYW5nZWQgfHwgIW9iamVjdF91cmwpIHtcblx0XHRcdFx0XHRcdG9iamVjdF91cmwgPSBnZXRfVVJMKCkuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFyZ2V0X3ZpZXcpIHtcblx0XHRcdFx0XHRcdHRhcmdldF92aWV3LmxvY2F0aW9uLmhyZWYgPSBvYmplY3RfdXJsO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2YXIgbmV3X3RhYiA9IHZpZXcub3BlbihvYmplY3RfdXJsLCBcIl9ibGFua1wiKTtcblx0XHRcdFx0XHRcdGlmIChuZXdfdGFiID09IHVuZGVmaW5lZCAmJiBpc19zYWZhcmkpIHtcblx0XHRcdFx0XHRcdFx0Ly9BcHBsZSBkbyBub3QgYWxsb3cgd2luZG93Lm9wZW4sIHNlZSBodHRwOi8vYml0Lmx5LzFrWmZmUklcblx0XHRcdFx0XHRcdFx0dmlldy5sb2NhdGlvbi5ocmVmID0gb2JqZWN0X3VybFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FO1xuXHRcdFx0XHRcdGRpc3BhdGNoX2FsbCgpO1xuXHRcdFx0XHRcdHJldm9rZShvYmplY3RfdXJsKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQsIGFib3J0YWJsZSA9IGZ1bmN0aW9uKGZ1bmMpIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoZmlsZXNhdmVyLnJlYWR5U3RhdGUgIT09IGZpbGVzYXZlci5ET05FKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHQsIGNyZWF0ZV9pZl9ub3RfZm91bmQgPSB7Y3JlYXRlOiB0cnVlLCBleGNsdXNpdmU6IGZhbHNlfVxuXHRcdFx0XHQsIHNsaWNlXG5cdFx0XHQ7XG5cdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5JTklUO1xuXHRcdFx0aWYgKCFuYW1lKSB7XG5cdFx0XHRcdG5hbWUgPSBcImRvd25sb2FkXCI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2FuX3VzZV9zYXZlX2xpbmspIHtcblx0XHRcdFx0b2JqZWN0X3VybCA9IGdldF9VUkwoKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cdFx0XHRcdHNhdmVfbGluay5ocmVmID0gb2JqZWN0X3VybDtcblx0XHRcdFx0c2F2ZV9saW5rLmRvd25sb2FkID0gbmFtZTtcblx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRjbGljayhzYXZlX2xpbmspO1xuXHRcdFx0XHRcdGRpc3BhdGNoX2FsbCgpO1xuXHRcdFx0XHRcdHJldm9rZShvYmplY3RfdXJsKTtcblx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gT2JqZWN0IGFuZCB3ZWIgZmlsZXN5c3RlbSBVUkxzIGhhdmUgYSBwcm9ibGVtIHNhdmluZyBpbiBHb29nbGUgQ2hyb21lIHdoZW5cblx0XHRcdC8vIHZpZXdlZCBpbiBhIHRhYiwgc28gSSBmb3JjZSBzYXZlIHdpdGggYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXG5cdFx0XHQvLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD05MTE1OFxuXHRcdFx0Ly8gVXBkYXRlOiBHb29nbGUgZXJyYW50bHkgY2xvc2VkIDkxMTU4LCBJIHN1Ym1pdHRlZCBpdCBhZ2Fpbjpcblx0XHRcdC8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zODk2NDJcblx0XHRcdGlmICh2aWV3LmNocm9tZSAmJiB0eXBlICYmIHR5cGUgIT09IGZvcmNlX3NhdmVhYmxlX3R5cGUpIHtcblx0XHRcdFx0c2xpY2UgPSBibG9iLnNsaWNlIHx8IGJsb2Iud2Via2l0U2xpY2U7XG5cdFx0XHRcdGJsb2IgPSBzbGljZS5jYWxsKGJsb2IsIDAsIGJsb2Iuc2l6ZSwgZm9yY2Vfc2F2ZWFibGVfdHlwZSk7XG5cdFx0XHRcdGJsb2JfY2hhbmdlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHQvLyBTaW5jZSBJIGNhbid0IGJlIHN1cmUgdGhhdCB0aGUgZ3Vlc3NlZCBtZWRpYSB0eXBlIHdpbGwgdHJpZ2dlciBhIGRvd25sb2FkXG5cdFx0XHQvLyBpbiBXZWJLaXQsIEkgYXBwZW5kIC5kb3dubG9hZCB0byB0aGUgZmlsZW5hbWUuXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU0NDBcblx0XHRcdGlmICh3ZWJraXRfcmVxX2ZzICYmIG5hbWUgIT09IFwiZG93bmxvYWRcIikge1xuXHRcdFx0XHRuYW1lICs9IFwiLmRvd25sb2FkXCI7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZSA9PT0gZm9yY2Vfc2F2ZWFibGVfdHlwZSB8fCB3ZWJraXRfcmVxX2ZzKSB7XG5cdFx0XHRcdHRhcmdldF92aWV3ID0gdmlldztcblx0XHRcdH1cblx0XHRcdGlmICghcmVxX2ZzKSB7XG5cdFx0XHRcdGZzX2Vycm9yKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGZzX21pbl9zaXplICs9IGJsb2Iuc2l6ZTtcblx0XHRcdHJlcV9mcyh2aWV3LlRFTVBPUkFSWSwgZnNfbWluX3NpemUsIGFib3J0YWJsZShmdW5jdGlvbihmcykge1xuXHRcdFx0XHRmcy5yb290LmdldERpcmVjdG9yeShcInNhdmVkXCIsIGNyZWF0ZV9pZl9ub3RfZm91bmQsIGFib3J0YWJsZShmdW5jdGlvbihkaXIpIHtcblx0XHRcdFx0XHR2YXIgc2F2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0ZGlyLmdldEZpbGUobmFtZSwgY3JlYXRlX2lmX25vdF9mb3VuZCwgYWJvcnRhYmxlKGZ1bmN0aW9uKGZpbGUpIHtcblx0XHRcdFx0XHRcdFx0ZmlsZS5jcmVhdGVXcml0ZXIoYWJvcnRhYmxlKGZ1bmN0aW9uKHdyaXRlcikge1xuXHRcdFx0XHRcdFx0XHRcdHdyaXRlci5vbndyaXRlZW5kID0gZnVuY3Rpb24oZXZlbnQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldF92aWV3LmxvY2F0aW9uLmhyZWYgPSBmaWxlLnRvVVJMKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGF0Y2goZmlsZXNhdmVyLCBcIndyaXRlZW5kXCIsIGV2ZW50KTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldm9rZShmaWxlKTtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdHdyaXRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZXJyb3IgPSB3cml0ZXIuZXJyb3I7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZXJyb3IuY29kZSAhPT0gZXJyb3IuQUJPUlRfRVJSKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZzX2Vycm9yKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcIndyaXRlc3RhcnQgcHJvZ3Jlc3Mgd3JpdGUgYWJvcnRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihldmVudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0d3JpdGVyW1wib25cIiArIGV2ZW50XSA9IGZpbGVzYXZlcltcIm9uXCIgKyBldmVudF07XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0d3JpdGVyLndyaXRlKGJsb2IpO1xuXHRcdFx0XHRcdFx0XHRcdGZpbGVzYXZlci5hYm9ydCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0d3JpdGVyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0ZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuV1JJVElORztcblx0XHRcdFx0XHRcdFx0fSksIGZzX2Vycm9yKTtcblx0XHRcdFx0XHRcdH0pLCBmc19lcnJvcik7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRkaXIuZ2V0RmlsZShuYW1lLCB7Y3JlYXRlOiBmYWxzZX0sIGFib3J0YWJsZShmdW5jdGlvbihmaWxlKSB7XG5cdFx0XHRcdFx0XHQvLyBkZWxldGUgZmlsZSBpZiBpdCBhbHJlYWR5IGV4aXN0c1xuXHRcdFx0XHRcdFx0ZmlsZS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdHNhdmUoKTtcblx0XHRcdFx0XHR9KSwgYWJvcnRhYmxlKGZ1bmN0aW9uKGV4KSB7XG5cdFx0XHRcdFx0XHRpZiAoZXguY29kZSA9PT0gZXguTk9UX0ZPVU5EX0VSUikge1xuXHRcdFx0XHRcdFx0XHRzYXZlKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRmc19lcnJvcigpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0fSksIGZzX2Vycm9yKTtcblx0XHRcdH0pLCBmc19lcnJvcik7XG5cdFx0fVxuXHRcdCwgRlNfcHJvdG8gPSBGaWxlU2F2ZXIucHJvdG90eXBlXG5cdFx0LCBzYXZlQXMgPSBmdW5jdGlvbihibG9iLCBuYW1lLCBub19hdXRvX2JvbSkge1xuXHRcdFx0cmV0dXJuIG5ldyBGaWxlU2F2ZXIoYmxvYiwgbmFtZSwgbm9fYXV0b19ib20pO1xuXHRcdH1cblx0O1xuXHQvLyBJRSAxMCsgKG5hdGl2ZSBzYXZlQXMpXG5cdGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiICYmIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKGJsb2IsIG5hbWUsIG5vX2F1dG9fYm9tKSB7XG5cdFx0XHRpZiAoIW5vX2F1dG9fYm9tKSB7XG5cdFx0XHRcdGJsb2IgPSBhdXRvX2JvbShibG9iKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihibG9iLCBuYW1lIHx8IFwiZG93bmxvYWRcIik7XG5cdFx0fTtcblx0fVxuXG5cdEZTX3Byb3RvLmFib3J0ID0gZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGZpbGVzYXZlciA9IHRoaXM7XG5cdFx0ZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuRE9ORTtcblx0XHRkaXNwYXRjaChmaWxlc2F2ZXIsIFwiYWJvcnRcIik7XG5cdH07XG5cdEZTX3Byb3RvLnJlYWR5U3RhdGUgPSBGU19wcm90by5JTklUID0gMDtcblx0RlNfcHJvdG8uV1JJVElORyA9IDE7XG5cdEZTX3Byb3RvLkRPTkUgPSAyO1xuXG5cdEZTX3Byb3RvLmVycm9yID1cblx0RlNfcHJvdG8ub253cml0ZXN0YXJ0ID1cblx0RlNfcHJvdG8ub25wcm9ncmVzcyA9XG5cdEZTX3Byb3RvLm9ud3JpdGUgPVxuXHRGU19wcm90by5vbmFib3J0ID1cblx0RlNfcHJvdG8ub25lcnJvciA9XG5cdEZTX3Byb3RvLm9ud3JpdGVlbmQgPVxuXHRcdG51bGw7XG5cblx0cmV0dXJuIHNhdmVBcztcbn0oXG5cdCAgIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGZcblx0fHwgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3dcblx0fHwgdGhpcy5jb250ZW50XG4pKTtcbi8vIGBzZWxmYCBpcyB1bmRlZmluZWQgaW4gRmlyZWZveCBmb3IgQW5kcm9pZCBjb250ZW50IHNjcmlwdCBjb250ZXh0XG4vLyB3aGlsZSBgdGhpc2AgaXMgbnNJQ29udGVudEZyYW1lTWVzc2FnZU1hbmFnZXJcbi8vIHdpdGggYW4gYXR0cmlidXRlIGBjb250ZW50YCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSB3aW5kb3dcblxuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgbW9kdWxlLmV4cG9ydHMuc2F2ZUFzID0gc2F2ZUFzO1xufSBlbHNlIGlmICgodHlwZW9mIGRlZmluZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkZWZpbmUgIT09IG51bGwpICYmIChkZWZpbmUuYW1kICE9IG51bGwpKSB7XG4gIGRlZmluZShbXSwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHNhdmVBcztcbiAgfSk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5jbGFzcyBQYWdlQnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG5cdFx0c3VwZXIocHJvcHMpO1xuXHR9XG5cbiAgcGFnZUJ0bkNsaWNrKGUpe1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnByb3BzLmNoYW5nZVBhZ2UoZS5jdXJyZW50VGFyZ2V0LnRleHQpO1xuICB9XG5cbiAgcmVuZGVyKCl7XG4gICAgdmFyIGNsYXNzZXMgPSB0aGlzLnByb3BzLmFjdGl2ZT9jbGFzc1NldChcImFjdGl2ZVwiKTpudWxsO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzZXN9PjxhIGhyZWY9XCIjXCIgb25DbGljaz17dGhpcy5wYWdlQnRuQ2xpY2suYmluZCh0aGlzKX0+e3RoaXMucHJvcHMuY2hpbGRyZW59PC9hPjwvbGk+XG4gICAgKVxuICB9XG59XG5QYWdlQnV0dG9uLnByb3BUeXBlcyA9IHtcbiAgY2hhbmdlUGFnZTogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIGFjdGl2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VCdXR0b247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFBhZ2VCdXR0b24gZnJvbSAnLi9QYWdlQnV0dG9uLmpzJztcbmltcG9ydCBDb25zdCBmcm9tICcuLi9Db25zdCc7XG5cbmNsYXNzIFBhZ2luYXRpb25MaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY3VycmVudFBhZ2U6IHRoaXMucHJvcHMuY3VyclBhZ2UsXG4gICAgICBzaXplUGVyUGFnZTogdGhpcy5wcm9wcy5zaXplUGVyUGFnZVxuICAgIH07XG4gIH1cblxuICBjaGFuZ2VQYWdlKHBhZ2UpIHtcbiAgICBpZiAocGFnZSA9PSBDb25zdC5QUkVfUEFHRSkge1xuICAgICAgcGFnZSA9IHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgLSAxIDwgMSA/IDEgOiB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlIC0gMTtcbiAgICB9IGVsc2UgaWYgKHBhZ2UgPT0gQ29uc3QuTkVYVF9QQUdFKSB7XG4gICAgICBwYWdlID0gdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSArIDEgPiB0aGlzLnRvdGFsUGFnZXMgPyB0aGlzLnRvdGFsUGFnZXMgOiB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICsgMTtcbiAgICB9IGVsc2UgaWYgKHBhZ2UgPT0gQ29uc3QuTEFTVF9QQUdFKSB7XG4gICAgICBwYWdlID0gdGhpcy50b3RhbFBhZ2VzO1xuICAgIH0gZWxzZSBpZiAocGFnZSA9PSBDb25zdC5GSVJTVF9QQUdFKSB7XG4gICAgICBwYWdlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFnZSA9IHBhcnNlSW50KHBhZ2UpO1xuICAgIH1cblxuICAgIGlmIChwYWdlICE9IHRoaXMuc3RhdGUuY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2N1cnJlbnRQYWdlOiBwYWdlfSk7XG4gICAgICB0aGlzLnByb3BzLmNoYW5nZVBhZ2UocGFnZSwgdGhpcy5zdGF0ZS5zaXplUGVyUGFnZSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5yZW1vdGUpIHtcbiAgICAgIGlmIChuZXh0UHJvcHMuY3VyclBhZ2UgfHwgbmV4dFByb3BzLnNpemVQZXJQYWdlKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGN1cnJlbnRQYWdlOiBuZXh0UHJvcHMuY3VyclBhZ2UsXG4gICAgICAgICAgc2l6ZVBlclBhZ2U6IG5leHRQcm9wcy5zaXplUGVyUGFnZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBjaGFuZ2VTaXplUGVyUGFnZShlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdmFyIHNlbGVjdFNpemUgPSBwYXJzZUludChlLmN1cnJlbnRUYXJnZXQudGV4dCk7XG4gICAgaWYgKHNlbGVjdFNpemUgIT0gdGhpcy5zdGF0ZS5zaXplUGVyUGFnZSkge1xuICAgICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMucHJvcHMuZGF0YVNpemUgLyBzZWxlY3RTaXplKTtcbiAgICAgIGlmICh0aGlzLnN0YXRlLmN1cnJlbnRQYWdlID4gdGhpcy50b3RhbFBhZ2VzKVxuICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlID0gdGhpcy50b3RhbFBhZ2VzO1xuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2l6ZVBlclBhZ2U6IHNlbGVjdFNpemUsXG4gICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMuY2hhbmdlUGFnZSh0aGlzLnN0YXRlLmN1cnJlbnRQYWdlLCBzZWxlY3RTaXplKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMucHJvcHMuZGF0YVNpemUgLyB0aGlzLnN0YXRlLnNpemVQZXJQYWdlKTtcbiAgICB2YXIgcGFnZUJ0bnMgPSB0aGlzLm1ha2VQYWdlKCk7XG4gICAgdmFyIHBhZ2VMaXN0U3R5bGUgPSB7XG4gICAgICBtYXJnaW5Ub3A6IFwiMHB4XCIgIC8vb3ZlcnJpZGUgdGhlIG1hcmdpbi10b3AgZGVmaW5lZCBpbiAucGFnaW5hdGlvbiBjbGFzcyBpbiBib290c3RyYXAuXG4gICAgfVxuXG4gICAgdmFyIHNpemVQZXJQYWdlTGlzdCA9IHRoaXMucHJvcHMuc2l6ZVBlclBhZ2VMaXN0Lm1hcCgoc2l6ZVBlclBhZ2UpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxsaSBrZXk9e3NpemVQZXJQYWdlfSByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgPGEgcm9sZT1cIm1lbnVpdGVtXCIgdGFiSW5kZXg9XCItMVwiIGhyZWY9XCIjXCIgb25DbGljaz17dGhpcy5jaGFuZ2VTaXplUGVyUGFnZS5iaW5kKHRoaXMpfT57c2l6ZVBlclBhZ2V9PC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC0xXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkcm9wZG93blwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLWRlZmF1bHQgZHJvcGRvd24tdG9nZ2xlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwicGFnZURyb3BEb3duXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNpemVQZXJQYWdlfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjYXJldFwiLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImRyb3Bkb3duLW1lbnVcIiByb2xlPVwibWVudVwiIGFyaWEtbGFiZWxsZWRieT1cInBhZ2VEcm9wRG93blwiPlxuICAgICAgICAgICAgICB7c2l6ZVBlclBhZ2VMaXN0fVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwicGFnaW5hdGlvblwiIHN0eWxlPXtwYWdlTGlzdFN0eWxlfT5cbiAgICAgICAgICAgIHtwYWdlQnRuc31cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIG1ha2VQYWdlKCkge1xuICAgIHZhciBwYWdlcyA9IHRoaXMuZ2V0UGFnZXMoKTtcbiAgICByZXR1cm4gcGFnZXMubWFwKGZ1bmN0aW9uIChwYWdlKSB7XG4gICAgICB2YXIgaXNBY3RpdmUgPSBwYWdlID09PSB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFBhZ2VCdXR0b24gY2hhbmdlUGFnZT17dGhpcy5jaGFuZ2VQYWdlLmJpbmQodGhpcyl9IGFjdGl2ZT17aXNBY3RpdmV9IGtleT17cGFnZX0+e3BhZ2V9PC9QYWdlQnV0dG9uPlxuICAgICAgKVxuICAgIH0sIHRoaXMpO1xuICB9XG5cbiAgZ2V0UGFnZXMoKSB7XG4gICAgdmFyIHN0YXJ0UGFnZSA9IDEsIGVuZFBhZ2UgPSB0aGlzLnRvdGFsUGFnZXM7XG5cbiAgICBzdGFydFBhZ2UgPSBNYXRoLm1heCh0aGlzLnN0YXRlLmN1cnJlbnRQYWdlIC0gTWF0aC5mbG9vcih0aGlzLnByb3BzLnBhZ2luYXRpb25TaXplIC8gMiksIDEpO1xuICAgIGVuZFBhZ2UgPSBzdGFydFBhZ2UgKyB0aGlzLnByb3BzLnBhZ2luYXRpb25TaXplIC0gMTtcblxuICAgIGlmIChlbmRQYWdlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICBlbmRQYWdlID0gdGhpcy50b3RhbFBhZ2VzO1xuICAgICAgc3RhcnRQYWdlID0gZW5kUGFnZSAtIHRoaXMucHJvcHMucGFnaW5hdGlvblNpemUgKyAxO1xuICAgIH1cbiAgICB2YXIgcGFnZXMgPSBbQ29uc3QuRklSU1RfUEFHRSwgQ29uc3QuUFJFX1BBR0VdO1xuICAgIGZvciAodmFyIGkgPSBzdGFydFBhZ2U7IGkgPD0gZW5kUGFnZTsgaSsrKSB7XG4gICAgICBpZiAoaSA+IDApcGFnZXMucHVzaChpKTtcbiAgICB9XG4gICAgcGFnZXMucHVzaChDb25zdC5ORVhUX1BBR0UpO1xuICAgIHBhZ2VzLnB1c2goQ29uc3QuTEFTVF9QQUdFKTtcbiAgICByZXR1cm4gcGFnZXM7XG4gIH1cblxuICBnZXRDdXJyZW50UGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50UGFnZTtcbiAgfVxuXG4gIGdldFNpemVQZXJQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnNpemVQZXJQYWdlO1xuICB9XG59XG5QYWdpbmF0aW9uTGlzdC5wcm9wVHlwZXMgPSB7XG4gIGN1cnJQYWdlOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICBzaXplUGVyUGFnZTogUmVhY3QuUHJvcFR5cGVzLm51bWJlcixcbiAgZGF0YVNpemU6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsXG4gIGNoYW5nZVBhZ2U6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICBzaXplUGVyUGFnZUxpc3Q6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgcGFnaW5hdGlvblNpemU6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsXG4gIHJlbW90ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5QYWdpbmF0aW9uTGlzdC5kZWZhdWx0UHJvcHMgPSB7XG4gIHNpemVQZXJQYWdlOiBDb25zdC5TSVpFX1BFUl9QQUdFXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uTGlzdDtcbiIsImltcG9ydCBDb25zdCBmcm9tIFwiLi4vQ29uc3RcIjtcbnZhciBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbmZ1bmN0aW9uIF9zb3J0KGFyciwgc29ydEZpZWxkLCBvcmRlciwgc29ydEZ1bmMpIHtcbiAgb3JkZXIgPSBvcmRlci50b0xvd2VyQ2FzZSgpO1xuICBhcnIuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChzb3J0RnVuYykge1xuICAgICAgcmV0dXJuIHNvcnRGdW5jKGEsIGIsIG9yZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9yZGVyID09IENvbnN0LlNPUlRfREVTQykge1xuICAgICAgICByZXR1cm4gYVtzb3J0RmllbGRdID4gYltzb3J0RmllbGRdID8gLTEgOiAoKGFbc29ydEZpZWxkXSA8IGJbc29ydEZpZWxkXSkgPyAxIDogMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYVtzb3J0RmllbGRdIDwgYltzb3J0RmllbGRdID8gLTEgOiAoKGFbc29ydEZpZWxkXSA+IGJbc29ydEZpZWxkXSkgPyAxIDogMCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gYXJyO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhU2V0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgIHN1cGVyKGRhdGEpO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cblxuICBzZXREYXRhKGRhdGEpIHtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsIGRhdGEpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5kYXRhID0gbnVsbDtcbiAgfVxuXG4gIGdldERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhU3RvcmUge1xuXG4gIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMuY3VzdG9tU29ydEZ1bmNNYXAgPSBudWxsO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gbnVsbDtcbiAgICB0aGlzLmlzT25GaWx0ZXIgPSBmYWxzZTtcbiAgICB0aGlzLmZpbHRlck9iaiA9IG51bGw7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gbnVsbDtcbiAgICB0aGlzLnNvcnRPYmogPSBudWxsO1xuICAgIHRoaXMucGFnZU9iaiA9IHt9O1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBbXTtcbiAgICB0aGlzLnJlbW90ZSA9IGZhbHNlOyAvLyByZW1vdGUgZGF0YVxuICB9XG5cbiAgc2V0UHJvcHMoaXNQYWdpbmF0aW9uLCBrZXlGaWVsZCwgY3VzdG9tU29ydEZ1bmNNYXAsIHJlbW90ZSkge1xuICAgIHRoaXMua2V5RmllbGQgPSBrZXlGaWVsZDtcbiAgICB0aGlzLmVuYWJsZVBhZ2luYXRpb24gPSBpc1BhZ2luYXRpb247XG4gICAgdGhpcy5jdXN0b21Tb3J0RnVuY01hcCA9IGN1c3RvbVNvcnRGdW5jTWFwO1xuICAgIHRoaXMucmVtb3RlID0gcmVtb3RlO1xuICB9XG5cbiAgc2V0RGF0YShkYXRhKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICBpZiAodGhpcy5pc09uRmlsdGVyKSB7XG4gICAgICBpZiAobnVsbCAhPT0gdGhpcy5maWx0ZXJPYmopIHRoaXMuZmlsdGVyKHRoaXMuZmlsdGVyT2JqKTtcbiAgICAgIGlmIChudWxsICE9PSB0aGlzLnNlYXJjaFRleHQpIHRoaXMuc2VhcmNoKHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNvcnRPYmopIHtcbiAgICAgIHRoaXMuc29ydCh0aGlzLnNvcnRPYmoub3JkZXIsIHRoaXMuc29ydE9iai5zb3J0RmllbGQpO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGVkUm93S2V5KHNlbGVjdGVkUm93S2V5cykge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZFJvd0tleXM7XG4gIH1cblxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQ7XG4gIH1cblxuICBnZXRDdXJyZW50RGlzcGxheURhdGEoKSB7XG4gICAgaWYgKHRoaXMuaXNPbkZpbHRlcikgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIHNvcnQob3JkZXIsIHNvcnRGaWVsZCkge1xuICAgIHRoaXMuc29ydE9iaiA9IHtcbiAgICAgIG9yZGVyOiBvcmRlcixcbiAgICAgIHNvcnRGaWVsZDogc29ydEZpZWxkXG4gICAgfTtcblxuICAgIGxldCBjdXJyZW50RGlzcGxheURhdGEgPSB0aGlzLmdldEN1cnJlbnREaXNwbGF5RGF0YSgpO1xuICAgIGxldCBzb3J0RnVuYyA9IHRoaXMuY3VzdG9tU29ydEZ1bmNNYXBbc29ydEZpZWxkXTtcbiAgICBjdXJyZW50RGlzcGxheURhdGEgPSBfc29ydChjdXJyZW50RGlzcGxheURhdGEsIHNvcnRGaWVsZCwgb3JkZXIsIHNvcnRGdW5jKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGFnZShwYWdlLCBzaXplUGVyUGFnZSkge1xuICAgIHRoaXMucGFnZU9iai5lbmQgPSBwYWdlICogc2l6ZVBlclBhZ2UgLSAxO1xuICAgIHRoaXMucGFnZU9iai5zdGFydCA9IHRoaXMucGFnZU9iai5lbmQgLSAoc2l6ZVBlclBhZ2UgLSAxKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVkaXQobmV3VmFsLCByb3dJbmRleCwgZmllbGROYW1lKSB7XG4gICAgbGV0IGN1cnJlbnREaXNwbGF5RGF0YSA9IHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCk7XG4gICAgbGV0IHJvd0tleUNhY2hlO1xuICAgIGlmICghdGhpcy5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgICBjdXJyZW50RGlzcGxheURhdGFbcm93SW5kZXhdW2ZpZWxkTmFtZV0gPSBuZXdWYWw7XG4gICAgICByb3dLZXlDYWNoZSA9IGN1cnJlbnREaXNwbGF5RGF0YVtyb3dJbmRleF1bdGhpcy5rZXlGaWVsZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnREaXNwbGF5RGF0YVt0aGlzLnBhZ2VPYmouc3RhcnQgKyByb3dJbmRleF1bZmllbGROYW1lXSA9IG5ld1ZhbDtcbiAgICAgIHJvd0tleUNhY2hlID0gY3VycmVudERpc3BsYXlEYXRhW3RoaXMucGFnZU9iai5zdGFydCArIHJvd0luZGV4XVt0aGlzLmtleUZpZWxkXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNPbkZpbHRlcikge1xuICAgICAgdGhpcy5kYXRhLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgICBpZiAocm93W3RoaXMua2V5RmllbGRdID09PSByb3dLZXlDYWNoZSkge1xuICAgICAgICAgIHJvd1t0aGlzLmtleUZpZWxkXVtmaWVsZE5hbWVdID0gbmV3VmFsO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGQobmV3T2JqKSB7XG4gICAgaWYgKG5ld09ialt0aGlzLmtleUZpZWxkXS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgIHRocm93IHRoaXMua2V5RmllbGQgKyBcIiBjYW4ndCBiZSBlbXB0eSB2YWx1ZS5cIjtcbiAgICB9XG4gICAgbGV0IGN1cnJlbnREaXNwbGF5RGF0YSA9IHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCk7XG4gICAgY3VycmVudERpc3BsYXlEYXRhLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgaWYgKHJvd1t0aGlzLmtleUZpZWxkXS50b1N0cmluZygpID09PSBuZXdPYmpbdGhpcy5rZXlGaWVsZF0pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5rZXlGaWVsZCArIFwiIFwiICsgbmV3T2JqW3RoaXMua2V5RmllbGRdICsgXCIgYWxyZWFkeSBleGlzdHNcIjtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcblxuICAgIGN1cnJlbnREaXNwbGF5RGF0YS5wdXNoKG5ld09iaik7XG4gICAgaWYgKHRoaXMuaXNPbkZpbHRlcikge1xuICAgICAgdGhpcy5kYXRhLnB1c2gobmV3T2JqKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUocm93S2V5KSB7XG4gICAgbGV0IGN1cnJlbnREaXNwbGF5RGF0YSA9IHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCk7XG4gICAgbGV0IHJlc3VsdCA9IGN1cnJlbnREaXNwbGF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKHJvdykge1xuICAgICAgcmV0dXJuIHJvd0tleS5pbmRleE9mKHJvd1t0aGlzLmtleUZpZWxkXSkgPT0gLTE7XG4gICAgfSwgdGhpcyk7XG5cbiAgICBpZiAodGhpcy5pc09uRmlsdGVyKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgcmV0dXJuIHJvd0tleS5pbmRleE9mKHJvd1t0aGlzLmtleUZpZWxkXSkgPT0gLTE7XG4gICAgICB9LCB0aGlzKTtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEgPSByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyKGZpbHRlck9iaikge1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXJPYmopLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IG51bGw7XG4gICAgICB0aGlzLmlzT25GaWx0ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyT2JqID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJPYmogPSBmaWx0ZXJPYmo7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoZnVuY3Rpb24gKHJvdykge1xuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZmlsdGVyT2JqKSB7XG4gICAgICAgICAgaWYgKHJvd1trZXldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlck9ialtrZXldLnRvTG93ZXJDYXNlKCkpID09IC0xKSB7XG4gICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pc09uRmlsdGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2goc2VhcmNoVGV4dCwgbXVsdGlDb2x1bW5TZWFyY2gpIHtcbiAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gbnVsbDtcbiAgICAgIHRoaXMuaXNPbkZpbHRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcbiAgICAgIHZhciBzZWFyY2hUZXh0QXJyYXkgPSBbXTtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcihmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChtdWx0aUNvbHVtblNlYXJjaCkge1xuICAgICAgICAgIHNlYXJjaFRleHRBcnJheSA9IHNlYXJjaFRleHQuc3BsaXQoJyAnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWFyY2hUZXh0QXJyYXkucHVzaChzZWFyY2hUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiByb3cpIHtcbiAgICAgICAgICBpZiAocm93W2tleV0pIHtcbiAgICAgICAgICAgIHNlYXJjaFRleHRBcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgICAgICAgICAgaWYgKHJvd1trZXldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRleHQudG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh2YWxpZCkgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pc09uRmlsdGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBnZXREYXRhSWdub3JpbmdQYWdpbmF0aW9uKCkge1xuICAgIGxldCBfZGF0YSA9IHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCk7XG4gICAgcmV0dXJuIF9kYXRhO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIGxldCBfZGF0YSA9IHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCk7XG5cbiAgICBpZiAoX2RhdGEubGVuZ3RoID09IDApIHJldHVybiBfZGF0YTtcblxuICAgIGlmICh0aGlzLnJlbW90ZSB8fCAhdGhpcy5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm4gX2RhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnBhZ2VPYmouc3RhcnQ7IGkgPD0gdGhpcy5wYWdlT2JqLmVuZDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKF9kYXRhW2ldKTtcbiAgICAgICAgaWYgKGkgKyAxID09IF9kYXRhLmxlbmd0aClicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0S2V5RmllbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5RmllbGQ7XG4gIH1cblxuICBnZXREYXRhTnVtKCkge1xuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnREaXNwbGF5RGF0YSgpLmxlbmd0aDtcbiAgfVxuXG4gIGlzQ2hhbmdlZFBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZU9iai5zdGFydCAmJiB0aGlzLnBhZ2VPYmouZW5kID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0QWxsUm93a2V5KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEubWFwKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgIHJldHVybiByb3dbdGhpcy5rZXlGaWVsZF07XG4gICAgfSwgdGhpcyk7XG4gIH1cblxufVxuO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc1NldCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBDb25zdCBmcm9tICcuLi9Db25zdCc7XG5pbXBvcnQgRWRpdG9yIGZyb20gJy4uL0VkaXRvcic7XG5pbXBvcnQgTm90aWZpZXIgZnJvbSAnLi4vTm90aWZpY2F0aW9uLmpzJztcblxuY2xhc3MgVG9vbEJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuXHRcdHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnRpbWVvdXRlQ2xlYXI9MDtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaXNJbnNlcnRSb3dUcmlnZ2VyOiB0cnVlLFxuICAgICAgdmFsaWRhdGVTdGF0ZTpudWxsLFxuICAgICAgc2hha2VFZGl0b3I6ZmFsc2VcbiAgICB9O1xuICB9XG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCl7XG4gICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgfVxuICBjbGVhclRpbWVvdXQoKSB7XG4gICAgaWYodGhpcy50aW1lb3V0ZUNsZWFyKXtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRlQ2xlYXIpO1xuICAgICAgdGhpcy50aW1lb3V0ZUNsZWFyPTA7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBbmRQYXJzZUZvcm0oKXtcbiAgICB2YXIgdHM9dGhpcyxuZXdPYmogPSB7fSxpc1ZhbGlkPXRydWUsdGVtcFZhbHVlLHRlbXBNc2csdmFsaWRhdGVTdGF0ZT17fTtcbiAgICB0aGlzLnByb3BzLmNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbihjb2x1bW4sIGkpe1xuICAgICAgaWYoY29sdW1uLmF1dG9WYWx1ZSl7Ly93aGVuIHlvdSB3YW50IHNhbWUgYXV0byBnZW5lcmF0ZSB2YWx1ZSBhbmQgbm90IGFsbG93IGVkaXQsIGV4YW1wbGUgSUQgZmllbGRcbiAgICAgICAgdGVtcFZhbHVlPXR5cGVvZiBjb2x1bW4uYXV0b1ZhbHVlPT0nZnVuY3Rpb24nP2NvbHVtbi5hdXRvVmFsdWUoKTooJ2F1dG92YWx1ZS0nK25ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgICAgIH1lbHNle1xuICAgICAgICBsZXQgZG9tID0gdGhpcy5yZWZzW2NvbHVtbi5maWVsZCtpXTtcbiAgICAgICAgdGVtcFZhbHVlID0gZG9tLnZhbHVlO1xuXG4gICAgICAgIGlmKGNvbHVtbi5lZGl0YWJsZSAmJiBjb2x1bW4uZWRpdGFibGUudHlwZSA9PSAnY2hlY2tib3gnKXtcbiAgICAgICAgICBsZXQgdmFsdWVzID0gZG9tLnZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgdGVtcFZhbHVlID0gZG9tLmNoZWNrZWQ/IHZhbHVlc1swXTp2YWx1ZXNbMV07XG4gICAgICAgIH1cblxuICAgICAgICBpZihjb2x1bW4uZWRpdGFibGUmJmNvbHVtbi5lZGl0YWJsZS52YWxpZGF0b3Ipey8vcHJvY2VzcyB2YWxpZGF0ZVxuICAgICAgICAgIHRlbXBNc2c9IGNvbHVtbi5lZGl0YWJsZS52YWxpZGF0b3IodGVtcFZhbHVlKVxuICAgICAgICAgIGlmKHRlbXBNc2chPT10cnVlKXtcbiAgICAgICAgICAgIGlzVmFsaWQ9ZmFsc2U7XG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXRlW2NvbHVtbi5maWVsZF09dGVtcE1zZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3T2JqW2NvbHVtbi5maWVsZF0gPXRlbXBWYWx1ZTtcbiAgICB9LCB0aGlzKTtcblxuICAgIGlmKGlzVmFsaWQpe1xuICAgICAgcmV0dXJuIG5ld09iajtcbiAgICB9ZWxzZXtcbiAgICAgIHRzLmNsZWFyVGltZW91dCgpO1xuICAgICAgLy9zaG93IGVycm9yIGluIGZvcm0gYW5kIHNoYWtlIGl0XG4gICAgICB0aGlzLnNldFN0YXRlKHt2YWxpZGF0ZVN0YXRlOnZhbGlkYXRlU3RhdGUsc2hha2VFZGl0b3I6dHJ1ZX0pO1xuICAgICAgLy9ub3RpZmllciBlcnJvclxuICAgICAgdHMucmVmcy5ub3RpZmllci5ub3RpY2UoJ2Vycm9yJyxcIkZvcm0gdmFsaWRhdGUgZXJyb3JzLCBwbGVhc2UgY2hlY2tpbmchXCIsXCJQcmVzc2VkIEVTQyBjYW4gY2FuY2VsXCIpO1xuICAgICAgLy9jbGVhciBhbmltYXRlIGNsYXNzXG4gICAgICB0cy50aW1lb3V0ZUNsZWFyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0cy5zZXRTdGF0ZSh7c2hha2VFZGl0b3I6ZmFsc2V9KTt9LDMwMCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTYXZlQnRuQ2xpY2soZSl7XG4gICAgdmFyIG5ld09iaiA9IHRoaXMuY2hlY2tBbmRQYXJzZUZvcm0oKTtcbiAgICBpZighbmV3T2JqKXsvL3ZhbGlkYXRlIGVycm9yc1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbXNnID0gdGhpcy5wcm9wcy5vbkFkZFJvdyhuZXdPYmopO1xuICAgIGlmKG1zZykge1xuICAgICAgdmFyIHRzPXRoaXM7XG4gICAgICB0cy5yZWZzLm5vdGlmaWVyLm5vdGljZSgnZXJyb3InLG1zZyxcIlByZXNzZWQgRVNDIGNhbiBjYW5jZWxcIik7XG4gICAgICB0cy5jbGVhclRpbWVvdXQoKTtcbiAgICAgIC8vc2hha2UgZm9ybSBhbmQgaGFjayBwcmV2ZW50IG1vZGFsIGhpZGVcbiAgICAgIHRzLnNldFN0YXRlKHtzaGFrZUVkaXRvcjp0cnVlLHZhbGlkYXRlU3RhdGU6XCJ0aGlzIGlzIGhhY2sgZm9yIHByZXZlbnQgYm9vdHN0cmFwIG1vZGFsIGhpZGVcIn0pO1xuICAgICAgLy9jbGVhciBhbmltYXRlIGNsYXNzXG4gICAgICB0cy50aW1lb3V0ZUNsZWFyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0cy5zZXRTdGF0ZSh7c2hha2VFZGl0b3I6ZmFsc2V9KTt9LDMwMCk7XG4gICAgfSBlbHNle1xuICAgICAgLy9yZXNldCBzdGF0ZSBhbmQgaGlkZSBtb2RhbCBoaWRlXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdmFsaWRhdGVTdGF0ZTpudWxsLFxuICAgICAgICBzaGFrZUVkaXRvcjpmYWxzZVxuICAgICAgfSk7XG4gICAgICAvL3Jlc2V0IGZvcm1cbiAgICAgIHRoaXMucmVmcy5mb3JtLnJlc2V0KCk7XG5cbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcm9wUm93QnRuQ2xpY2soZSl7XG4gICAgdGhpcy5wcm9wcy5vbkRyb3BSb3coKTtcbiAgfVxuXG4gIGhhbmRsZUNsb3NlQnRuKGUpe1xuICAgIHRoaXMucmVmcy53YXJuaW5nLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgfVxuXG4gIGhhbmRsZUtleVVwKGUpe1xuICAgIHRoaXMucHJvcHMub25TZWFyY2goZS5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZUV4cG9ydENTVigpIHtcbiAgICB0aGlzLnByb3BzLm9uRXhwb3J0Q1NWKCk7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgbW9kYWxDbGFzc05hbWUgPSBcImJzLXRhYmxlLW1vZGFsLXNtXCIrbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgdmFyIGluc2VydEJ0biA9IHRoaXMucHJvcHMuZW5hYmxlSW5zZXJ0P1xuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMucHJvcHMub25BZGRSb3dCZWdpbn0gY2xhc3NOYW1lPVwiYnRuIGJ0bi1pbmZvXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PXsnLicrbW9kYWxDbGFzc05hbWV9PlxuICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1wbHVzXCI+PC9pPiBOZXc8L2J1dHRvbj46bnVsbDtcblxuICAgIHZhciBkZWxldGVCdG4gPSB0aGlzLnByb3BzLmVuYWJsZURlbGV0ZT9cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXdhcm5pbmdcIiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInJpZ2h0XCIgdGl0bGU9XCJEcm9wIHNlbGVjdGVkIHJvd1wiXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZURyb3BSb3dCdG5DbGljay5iaW5kKHRoaXMpfT5cbiAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImdseXBoaWNvbiBnbHlwaGljb24tdHJhc2hcIj48L2k+IERlbGV0ZVxuICAgICAgICAgIDwvYnV0dG9uPjpudWxsO1xuICAgIHZhciBzZWFyY2hUZXh0SW5wdXQgPSB0aGlzLnByb3BzLmVuYWJsZVNlYXJjaD9cbiAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5zZWFyY2hQbGFjZWhvbGRlcj90aGlzLnByb3BzLnNlYXJjaFBsYWNlaG9sZGVyOidTZWFyY2gnfSBvbktleVVwPXt0aGlzLmhhbmRsZUtleVVwLmJpbmQodGhpcyl9Lz46bnVsbDtcbiAgICB2YXIgbW9kYWwgPSB0aGlzLnByb3BzLmVuYWJsZUluc2VydD90aGlzLnJlbmRlckluc2VydFJvd01vZGFsKG1vZGFsQ2xhc3NOYW1lKTpudWxsO1xuICAgIHZhciB3YXJuaW5nU3R5bGUgPSB7XG4gICAgICBkaXNwbGF5OiBcIm5vbmVcIixcbiAgICAgIG1hcmdpbkJvdHRvbTogMFxuICAgIH07XG5cbiAgICB2YXIgZXhwb3J0Q1NWID0gdGhpcy5wcm9wcy5lbmFibGVFeHBvcnRDU1YgP1xuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc3VjY2Vzc1wiIG9uQ2xpY2s9e3RoaXMuaGFuZGxlRXhwb3J0Q1NWLmJpbmQodGhpcyl9PlxuICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJnbHlwaGljb24gZ2x5cGhpY29uLWV4cG9ydFwiPjwvaT4gRXhwb3J0IHRvIENTVjwvYnV0dG9uPiA6IG51bGw7XG5cbiAgICByZXR1cm4oXG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ0bi1ncm91cCBidG4tZ3JvdXAteHNcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiLi4uXCI+XG4gICAgICAgICAge2V4cG9ydENTVn1cbiAgICAgICAgICB7aW5zZXJ0QnRufVxuICAgICAgICAgIHtkZWxldGVCdG59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2VhcmNoVGV4dElucHV0fVxuICAgICAgICA8Tm90aWZpZXIgcmVmPVwibm90aWZpZXJcIj48L05vdGlmaWVyPlxuICAgICAgICB7bW9kYWx9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZW5kZXJJbnNlcnRSb3dNb2RhbChtb2RhbENsYXNzTmFtZSl7XG4gICAgdmFyIHZhbGlkYXRlU3RhdGU9dGhpcy5zdGF0ZS52YWxpZGF0ZVN0YXRlfHx7fTtcbiAgICB2YXIgaW5wdXRGaWVsZCA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoZnVuY3Rpb24oY29sdW1uLCBpKXtcbiAgICAgIHZhciBlZGl0YWJsZT1jb2x1bW4uZWRpdGFibGUsXG4gICAgICAgICAgZm9ybWF0PWNvbHVtbi5mb3JtYXQsXG4gICAgICAgICAgYXR0cj17cmVmOmNvbHVtbi5maWVsZCtpLHBsYWNlaG9sZGVyOmVkaXRhYmxlLnBsYWNlaG9sZGVyP2VkaXRhYmxlLnBsYWNlaG9sZGVyOmNvbHVtbi5uYW1lfTtcblxuICAgICAgaWYoY29sdW1uLmF1dG9WYWx1ZSl7Ly93aGVuIHlvdSB3YW50IHNhbWUgYXV0byBnZW5lcmF0ZSB2YWx1ZSBhbmQgbm90IGFsbG93IGVkaXQsIGV4YW1wbGUgSUQgZmllbGRcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgZXJyb3I9dmFsaWRhdGVTdGF0ZVtjb2x1bW4uZmllbGRdPyg8c3BhbiBjbGFzc05hbWU9XCJoZWxwLWJsb2NrIGJnLWRhbmdlclwiPnt2YWxpZGF0ZVN0YXRlW2NvbHVtbi5maWVsZF19PC9zcGFuPik6bnVsbDtcblxuICAgICAgLy8gbGV0IGVkaXRvciA9IEVkaXRvcihlZGl0YWJsZSxhdHRyLGZvcm1hdCk7XG4gICAgICAvLyBpZihlZGl0b3IucHJvcHMudHlwZSAmJiBlZGl0b3IucHJvcHMudHlwZSA9PSAnY2hlY2tib3gnKXtcbiAgICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCIga2V5PXtjb2x1bW4uZmllbGR9PlxuICAgICAgICAgIDxsYWJlbD57Y29sdW1uLm5hbWV9PC9sYWJlbD5cbiAgICAgICAgICB7RWRpdG9yKGVkaXRhYmxlLGF0dHIsZm9ybWF0LCcnKX1cbiAgICAgICAgICB7ZXJyb3J9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9KTtcbiAgICB2YXIgbW9kYWxDbGFzcyA9IGNsYXNzU2V0KFwibW9kYWxcIiwgXCJmYWRlXCIgLCBtb2RhbENsYXNzTmFtZSx7XG4gICAgICAnaW4nOnRoaXMuc3RhdGUuc2hha2VFZGl0b3J8fHRoaXMuc3RhdGUudmFsaWRhdGVTdGF0ZS8vaGFjayBwcmV2ZW50IGJvb3RzdHJhcCBtb2RhbCBoaWRlIGJ5IHJlUmVuZGVyXG4gICAgfSk7XG4gICAgdmFyIGRpYWxvZ0NsYXNzPWNsYXNzU2V0KFwibW9kYWwtZGlhbG9nXCIsXCJtb2RhbC1zbVwiLHtcbiAgICAgIFwiYW5pbWF0ZWRcIjp0aGlzLnN0YXRlLnNoYWtlRWRpdG9yLFxuICAgICAgXCJzaGFrZVwiOnRoaXMuc3RhdGUuc2hha2VFZGl0b3JcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiByZWY9XCJtb2RhbFwiICBjbGFzc05hbWU9e21vZGFsQ2xhc3N9IHRhYkluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17ZGlhbG9nQ2xhc3N9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+XG4gICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJtb2RhbC10aXRsZVwiPk5ldyBSZWNvcmQ8L2g0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgICAgPGZvcm0gcmVmPVwiZm9ybVwiPlxuICAgICAgICAgICAgICB7aW5wdXRGaWVsZH1cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4taW5mb1wiICBvbkNsaWNrPXt0aGlzLmhhbmRsZVNhdmVCdG5DbGljay5iaW5kKHRoaXMpfT5TYXZlPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cblRvb2xCYXIucHJvcFR5cGVzID0ge1xuICBvbkFkZFJvdzogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRHJvcFJvdzogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIGVuYWJsZUluc2VydDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGVuYWJsZURlbGV0ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGVuYWJsZVNlYXJjaDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGNvbHVtbnM6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmdcbn07XG5cblRvb2xCYXIuZGVmYXVsdFByb3BzID0ge1xuICBlbmFibGVJbnNlcnQ6IGZhbHNlLFxuICBlbmFibGVEZWxldGU6IGZhbHNlLFxuICBlbmFibGVTZWFyY2g6IGZhbHNlXG59XG5leHBvcnQgZGVmYXVsdCBUb29sQmFyO1xuIiwiaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuZXhwb3J0IGRlZmF1bHQge1xuXG4gIHJlbmRlclNvcnRDYXJldChvcmRlcikge1xuICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgd3JhcC5jbGFzc05hbWUgPSBcIm9yZGVyXCI7XG4gICAgaWYob3JkZXIgPT0gQ29uc3QuU09SVF9BU0MpIHdyYXAuY2xhc3NOYW1lICs9IFwiIGRyb3B1cFwiO1xuICAgIHZhciBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIGlubmVyLmNsYXNzTmFtZSA9IFwiY2FyZXRcIjtcbiAgICBpbm5lci5zdHlsZS5tYXJnaW4gPSBcIjEwcHggNXB4XCI7XG4gICAgd3JhcC5hcHBlbmRDaGlsZChpbm5lcik7XG4gICAgcmV0dXJuIHdyYXA7XG4gIH1cblxufTtcbiIsImltcG9ydCBCb290c3RyYXBUYWJsZSBmcm9tICcuL0Jvb3RzdHJhcFRhYmxlJztcbmltcG9ydCBUYWJsZUhlYWRlckNvbHVtbiBmcm9tICcuL1RhYmxlSGVhZGVyQ29sdW1uJztcbmltcG9ydCB7VGFibGVEYXRhU2V0fSBmcm9tICcuL3N0b3JlL1RhYmxlRGF0YVN0b3JlJztcblxuaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpe1xuICB3aW5kb3cuQm9vdHN0cmFwVGFibGUgPSBCb290c3RyYXBUYWJsZTtcbiAgd2luZG93LlRhYmxlSGVhZGVyQ29sdW1uID0gVGFibGVIZWFkZXJDb2x1bW47XG59XG5leHBvcnQgZGVmYXVsdCB7XG4gIEJvb3RzdHJhcFRhYmxlLFxuICBUYWJsZUhlYWRlckNvbHVtbixcbiAgVGFibGVEYXRhU2V0XG59O1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvZGVtby9qcy9kZW1vLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvQ1NTQ29yZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9FdmVudExpc3RlbmVyLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2NhbWVsaXplLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2NhbWVsaXplU3R5bGVOYW1lLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2NvbnRhaW5zTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9jcmVhdGVBcnJheUZyb21NaXhlZC5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9lbXB0eU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9mb2N1c05vZGUuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9nZXRNYXJrdXBXcmFwLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2dldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2h5cGhlbmF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvaW52YXJpYW50LmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2lzTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9pc1RleHROb2RlLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL2tleU1pcnJvci5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9rZXlPZi5qcyIsIm5vZGVfbW9kdWxlcy9mYmpzL2xpYi9tYXBPYmplY3QuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHkuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvcGVyZm9ybWFuY2UuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvcGVyZm9ybWFuY2VOb3cuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvc2hhbGxvd0VxdWFsLmpzIiwibm9kZV9tb2R1bGVzL2ZianMvbGliL3RvQXJyYXkuanMiLCJub2RlX21vZHVsZXMvZmJqcy9saWIvd2FybmluZy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL2xpYi9Ub2FzdENvbnRhaW5lci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL1RvYXN0TWVzc2FnZS9hbmltYXRpb25NaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL1RvYXN0TWVzc2FnZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL1RvYXN0TWVzc2FnZS9qUXVlcnlNaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QtYWRkb25zLXVwZGF0ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9BdXRvRm9jdXNVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NTU1Byb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NTU1Byb3BlcnR5T3BlcmF0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9DYWxsYmFja1F1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NoYW5nZUV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0NsaWVudFJlYWN0Um9vdEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0RPTUNoaWxkcmVuT3BlcmF0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9ET01Qcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvRGFuZ2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudENvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpbkh1Yi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0V2ZW50UGx1Z2luVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvRXZlbnRQcm9wYWdhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvSFRNTERPTVByb3BlcnR5Q29uZmlnLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0xpbmtlZFZhbHVlVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvT2JqZWN0LmFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDaGlsZHJlbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENsYXNzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET00uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01CdXR0b24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01Db21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01GYWN0b3JpZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01GZWF0dXJlRmxhZ3MuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01JRE9wZXJhdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01JbnB1dC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTU9wdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlbGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlbGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlcnZlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVRleHRDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01UZXh0YXJlYS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RGVmYXVsdEluamVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERlZmF1bHRQZXJmLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50VmFsaWRhdG9yLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RXJyb3JVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEV2ZW50RW1pdHRlck1peGluLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RXZlbnRMaXN0ZW5lci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEluamVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdElucHV0U2VsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0SW5zdGFuY2VIYW5kbGVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0SW5zdGFuY2VNYXAuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RJc29tb3JwaGljLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0TWFya3VwQ2hlY2tzdW0uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RNb3VudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdE11bHRpQ2hpbGQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3ROYXRpdmVDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3ROb29wVXBkYXRlUXVldWUuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RPd25lci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFBlcmYuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UmVjb25jaWxlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFJlZi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFJvb3RJbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmcuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25FdmVudHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVcGRhdGVRdWV1ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFVwZGF0ZXMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RWZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NWR0RPTVByb3BlcnR5Q29uZmlnLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NlcnZlclJlYWN0Um9vdEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1NpbXBsZUV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0NsaXBib2FyZEV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvU3ludGhldGljRHJhZ0V2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0V2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvU3ludGhldGljSW5wdXRFdmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9TeW50aGV0aWNLZXlib2FyZEV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvU3ludGhldGljVG91Y2hFdmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9TeW50aGV0aWNVSUV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1N5bnRoZXRpY1doZWVsRXZlbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvVHJhbnNhY3Rpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvVmlld3BvcnRNZXRyaWNzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2FjY3VtdWxhdGVJbnRvLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2FkbGVyMzIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvY2FuRGVmaW5lUHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9kZXByZWNhdGVkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9maW5kRE9NTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9mbGF0dGVuQ2hpbGRyZW4uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZm9yRWFjaEFjY3VtdWxhdGVkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEV2ZW50Q2hhckNvZGUuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0RXZlbnRLZXkuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0RXZlbnRNb2RpZmllclN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEV2ZW50VGFyZ2V0LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEl0ZXJhdG9yRm4uanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9nZXRUZXh0Q29udGVudEFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvaXNFdmVudFN1cHBvcnRlZC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9pc1RleHRJbnB1dEVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvb25seUNoaWxkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3NldElubmVySFRNTC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9zZXRUZXh0Q29udGVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0LXRvYXN0ci9ub2RlX21vZHVsZXMvcmVhY3QvbGliL3VwZGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC10b2FzdHIvbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi92YWxpZGF0ZURPTU5lc3RpbmcuanMiLCJub2RlX21vZHVsZXMvcmVhY3QtdG9hc3RyL25vZGVfbW9kdWxlcy9yZWFjdC9yZWFjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvQ1NTUHJvcGVydHlPcGVyYXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9DYWxsYmFja1F1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9DaGFuZ2VFdmVudFBsdWdpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9ET01Qcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvRE9NUHJvcGVydHlPcGVyYXRpb25zLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9EYW5nZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL0V2ZW50UGx1Z2luSHViLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFBsdWdpblV0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9FdmVudFByb3BhZ2F0b3JzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL0xpbmtlZFZhbHVlVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1Bvb2xlZENsYXNzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbi5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q2xhc3MuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET00uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9NQ29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmllcy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01JRE9wZXJhdGlvbnMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9NSW5wdXQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RE9NT3B0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVNlbGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERPTVRleHRhcmVhLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdERlZmF1bHRJbmplY3Rpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0RWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50VmFsaWRhdG9yLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEVycm9yVXRpbHMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0SW5zdGFuY2VIYW5kbGVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdElzb21vcnBoaWMuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0TW91bnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0TXVsdGlDaGlsZC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3ROYXRpdmVDb21wb25lbnQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdE93bmVyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFBlcmYuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFNlcnZlclJlbmRlcmluZy5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVcGRhdGVRdWV1ZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RVcGRhdGVzLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL1NpbXBsZUV2ZW50UGx1Z2luLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9TeW50aGV0aWNFdmVudC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvVHJhbnNhY3Rpb24uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL2FjY3VtdWxhdGVJbnRvLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9kZXByZWNhdGVkLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9maW5kRE9NTm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFjdC9saWIvZmxhdHRlbkNoaWxkcmVuLmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50LmpzIiwibm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9vbmx5Q2hpbGQuanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanMiLCJub2RlX21vZHVsZXMvcmVhY3QvbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvQm9vdHN0cmFwVGFibGUuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL0NvbnN0LmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9FZGl0b3IuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL05vdGlmaWNhdGlvbi5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvU2VsZWN0Um93SGVhZGVyQ29sdW1uLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9UYWJsZUJvZHkuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL1RhYmxlQ29sdW1uLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9UYWJsZUVkaXRDb2x1bW4uanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL1RhYmxlRmlsdGVyLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9UYWJsZUhlYWRlci5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvVGFibGVIZWFkZXJDb2x1bW4uanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL1RhYmxlUm93LmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9jc3ZfZXhwb3J0X3V0aWwuanMiLCIvVXNlcnMvYWxsZW4vTm9kZS9yZWFjdC1ib290c3RyYXAtdGFibGUvc3JjL2ZpbGVzYXZlci5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvcGFnaW5hdGlvbi9QYWdlQnV0dG9uLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9wYWdpbmF0aW9uL1BhZ2luYXRpb25MaXN0LmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9zdG9yZS9UYWJsZURhdGFTdG9yZS5qcyIsIi9Vc2Vycy9hbGxlbi9Ob2RlL3JlYWN0LWJvb3RzdHJhcC10YWJsZS9zcmMvdG9vbGJhci9Ub29sQmFyLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy91dGlsLmpzIiwiL1VzZXJzL2FsbGVuL05vZGUvcmVhY3QtYm9vdHN0cmFwLXRhYmxlL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7SUNBTyxLQUFLLDJCQUFNLE9BQU87O21DQUN1Qix1QkFBdUI7O0lBQS9ELGNBQWMsd0JBQWQsY0FBYztJQUFFLGlCQUFpQix3QkFBakIsaUJBQWlCOztBQUV6QyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7O0FBRWxCLFNBQVMsV0FBVyxDQUFDLFFBQVEsRUFBRTtBQUM3QixNQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQzlCLE9BQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakMsUUFBSSxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNyQixZQUFRLENBQUMsSUFBSSxDQUFDO0FBQ1osUUFBRSxFQUFFLEVBQUU7QUFDTixVQUFJLEVBQUUsWUFBWSxHQUFHLEVBQUU7QUFDdkIsV0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ2QsZ0JBQVUsRUFBRSxFQUFFLEdBQUMsQ0FBQztBQUNoQixjQUFRLEVBQUUsS0FBSztBQUNmLGdCQUFVLEVBQUUsV0FBVyxHQUFDLEVBQUUsR0FBQyxDQUFDO0tBQzdCLENBQUMsQ0FBQztHQUNKO0NBQ0Y7O0FBRUQsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDOztBQUVoQixTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFDO0FBQ25DLFNBQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakIsU0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLENBQUE7Q0FDdkM7O0FBRUQsU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFDO0FBQzdELFNBQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDNUMsU0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQ2pELFNBQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztDQUM1Qzs7QUFFRCxTQUFTLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQztBQUNoRCxTQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBQyxRQUFRLEdBQUMsZ0JBQWdCLEdBQUMsU0FBUyxHQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLFNBQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMvQixTQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xCOztBQUVELFNBQVMsb0JBQW9CLEdBQUU7QUFDN0IsU0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0NBQ3ZDOztBQUVELFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFDO0FBQ2hDLFNBQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNoQyxTQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQ3RCOztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBRyxFQUFDO0FBQzVCLFNBQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNoQyxTQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xCOztBQUVELElBQUksYUFBYSxHQUFHO0FBQ2xCLE1BQUksRUFBRSxVQUFVO0FBQ2hCLGVBQWEsRUFBRSxJQUFJOztBQUVuQixVQUFRLEVBQUUsRUFBRTtBQUNaLFNBQU8sRUFBRSxvQkFBb0I7QUFDN0IsVUFBUSxFQUFFLFdBQVc7QUFDckIsYUFBVyxFQUFFLFdBQVc7Q0FDekIsQ0FBQzs7QUFFRixJQUFJLFlBQVksR0FBRztBQUNqQixNQUFJLEVBQUUsT0FBTztBQUNiLFlBQVUsRUFBRSxJQUFJO0FBQ2hCLGVBQWEsRUFBRSxlQUFlO0NBQy9CLENBQUM7O0FBRUYsSUFBSSxPQUFPLEdBQUc7Ozs7O0FBS1osVUFBUSxFQUFFLE1BQU07QUFDaEIsV0FBUyxFQUFFLE1BQU07QUFDakIsb0JBQWtCLEVBQUUsb0JBQW9CO0FBQ3hDLGdCQUFjLEVBQUUsZ0JBQWdCO0FBQ2hDLGdCQUFjLEVBQUUsZ0JBQWdCO0FBQUEsQ0FDakMsQ0FBQzs7QUFHRixTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFDO0FBQ2hDLFNBQU8sNENBQTBDLEdBQUcsSUFBSSxDQUFDO0NBQzFEOztBQUVELEtBQUssQ0FBQyxNQUFNLENBQ1Y7QUFBQyxnQkFBYztJQUFDLElBQUksRUFBRSxRQUFRLEFBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxBQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksQUFBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEFBQUMsRUFBQyxTQUFTLEVBQUUsYUFBYSxBQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksQUFBQztBQUMvRyxhQUFTLEVBQUUsSUFBSSxBQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksQUFBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEFBQUMsRUFBQyxZQUFZLEVBQUUsSUFBSSxBQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sQUFBQztFQUNqRztBQUFDLHFCQUFpQjtNQUFDLFNBQVMsRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUUsSUFBSSxBQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksQUFBQzs7R0FBK0I7RUFDaEg7QUFBQyxxQkFBaUI7TUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsUUFBUSxFQUFFLElBQUksQUFBQzs7R0FBaUM7RUFDbEc7QUFBQyxxQkFBaUI7TUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFFLGNBQWMsQUFBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEFBQUM7O0dBQWtDO0VBQ2pJO0FBQUMscUJBQWlCO01BQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxRQUFRLEVBQUUsSUFBSSxBQUFDOztHQUFnQztFQUN6RjtBQUFDLHFCQUFpQjtNQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFFLEtBQUssQUFBQzs7R0FBeUM7RUFDakc7QUFBQyxxQkFBaUI7TUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFDLFFBQVEsRUFBRSxJQUFJLEFBQUM7O0dBQWdDO0NBQzVFLEVBQ2xCLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQ2hDLENBQUM7OztBQ2pHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzREE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNySUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEdBO0FBQ0E7QUFDQTs7QUNGQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6UkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOU5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDck9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDblVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeHJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcDhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDelBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaFRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcDFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25XQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25RQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9MQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN1dBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDOVRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbk9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ25KQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDelJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3pIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzVIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcndCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM3SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3hyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbDhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNuTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDOUxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNuR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbFFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDNVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUM1RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2hUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDLzBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2xmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDckZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDblFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDN2tCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDek9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNsREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNsSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9MQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7SUM3V08sS0FBSywyQkFBTSxPQUFPOztJQUNsQixRQUFRLDJCQUFNLFlBQVk7O0lBQzFCLEtBQUssMkJBQU0sU0FBUzs7SUFDcEIsV0FBVywyQkFBTSxlQUFlOztJQUNoQyxTQUFTLDJCQUFNLGFBQWE7O0lBQzVCLGNBQWMsMkJBQU0sNkJBQTZCOztJQUNqRCxPQUFPLDJCQUFNLG1CQUFtQjs7SUFDaEMsV0FBVywyQkFBTSxlQUFlOztJQUMvQixjQUFjLFdBQU8sd0JBQXdCLEVBQTdDLGNBQWM7O0lBQ2YsU0FBUywyQkFBTSxtQkFBbUI7O0lBRW5DLGNBQWM7QUFFUCxXQUZQLGNBQWMsQ0FFTixLQUFLLEVBQUU7OzswQkFGZixjQUFjOztBQUdoQiwrQkFIRSxjQUFjLDZDQUdWLEtBQUssRUFBRTs7QUFFYixRQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN0QixRQUFRLEdBQUksS0FBSyxDQUFqQixRQUFROztBQUNiLFFBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDOztBQUUzQixRQUFJLEVBQUUsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUEsQUFBQyxFQUFFO0FBQ3RELFdBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQUEsTUFBTSxFQUFHO0FBQ25ELFlBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDdEIsY0FBSSxRQUFRLElBQUksSUFBSSxFQUFFO0FBQ3BCLGtCQUFNLDhEQUE4RCxDQUFDO1dBQ3RFO0FBQ0Qsa0JBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUNuQztPQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDVjs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFBLE1BQU0sRUFBRztBQUNuRCxVQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ3pCLHlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7T0FDbkU7S0FDRixFQUFFLElBQUksQ0FBQyxDQUFDOztBQUVULFFBQUksUUFBUSxJQUFJLElBQUksRUFDbEIsTUFBTSw0SEFBNEgsQ0FBQzs7QUFFckksUUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuQyxVQUFJLENBQUMsS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDM0QsVUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDeEIsVUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFDLElBQUksRUFBSztBQUNyQyxjQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsY0FBSyxRQUFRLENBQUM7QUFDWixjQUFJLEVBQUUsTUFBSyxZQUFZLEVBQUU7U0FDMUIsQ0FBQyxDQUFBO09BQ0gsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLFVBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsRDs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQzs7QUFFbkcsUUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7QUFDekQsVUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM3RDs7QUFFRCxRQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsVUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDekIscUJBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO0tBQ2pELENBQUM7R0FDSDs7WUFwREcsY0FBYzs7ZUFBZCxjQUFjO0FBc0RsQixnQkFBWTthQUFBLHdCQUFHO0FBQ2IsWUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7QUFDekIsY0FBSSxJQUFJLFlBQUE7Y0FBRSxXQUFXLFlBQUEsQ0FBQztBQUN0QixjQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUU7QUFDOUIsdUJBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNwRCxnQkFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1dBQzlDLE1BQU07QUFDTCx1QkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsZ0JBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1dBQ3JDO0FBQ0QsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDbkQsTUFBTTtBQUNMLGdCQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMzQjtBQUNELGVBQU8sTUFBTSxDQUFDO09BQ2Y7O0FBRUQsNkJBQXlCO2FBQUEsbUNBQUMsU0FBUyxFQUFFO0FBQ25DLFlBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakMsY0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWixnQkFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7V0FDMUIsQ0FBQyxDQUFDO1NBQ0o7QUFDRCxZQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7O0FBRXZELGNBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzRCxjQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osMkJBQWUsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVE7V0FDOUMsQ0FBQyxDQUFDO1NBQ0o7T0FDRjs7QUFFRCxxQkFBaUI7YUFBQSw2QkFBRztBQUNsQixZQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUMxQixjQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RSxZQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO09BQ3pGOztBQUVELHdCQUFvQjthQUFBLGdDQUFHO0FBQ3JCLGNBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLFlBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7T0FDNUY7O0FBRUQsc0JBQWtCO2FBQUEsOEJBQUc7QUFDbkIsWUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDMUIsWUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDM0IsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztPQUMzQzs7QUFFRCx1QkFBbUI7YUFBQSwrQkFBRztBQUNwQixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ3ZCLGNBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hFLGNBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxjQUFjLEVBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUM7T0FDRjs7QUFTRCxzQkFBa0I7Ozs7Ozs7Ozs7YUFBQSw0QkFBQyxLQUFLLEVBQUU7QUFDeEIsZUFBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFBLENBQUUsTUFBTSxDQUFDO09BQ3JDOztBQUVELFVBQU07YUFBQSxrQkFBRztBQUNQLFlBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVDLFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0FBQ3BDLFlBQUksS0FBSyxHQUFHO0FBQ1YsZ0JBQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07U0FDMUIsQ0FBQztBQUNGLFlBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdkMsbUJBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7QUFDRCxZQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsTUFBTSxFQUFFLENBQUMsRUFBRTtBQUMvQyxpQkFBTztBQUNMLGdCQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQzVCLGlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQzdCLGdCQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQzNCLGtCQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVO0FBQy9CLG9CQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQy9CLGtCQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQzNCLHFCQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlO0FBQ3ZDLGlCQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQ3pCLGdCQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQzNCLGlCQUFLLEVBQUUsQ0FBQztXQUNULENBQUM7U0FDSCxFQUFFLElBQUksQ0FBQyxDQUFDOztBQUVULFlBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3pDLFlBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNuQyxZQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEQsZUFDRTs7WUFBSyxTQUFTLEVBQUMsb0JBQW9CLEVBQUMsR0FBRyxFQUFDLE9BQU87VUFDNUMsT0FBTztVQUNSOztjQUFLLFNBQVMsRUFBQywwQkFBMEIsRUFBQyxLQUFLLEVBQUUsS0FBSyxBQUFDO1lBQ3JEO0FBQUMseUJBQVc7O0FBQ1YsbUJBQUcsRUFBQyxRQUFRO0FBQ1osNkJBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEFBQUM7QUFDekMsZ0NBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEFBQUM7QUFDeEQsd0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEFBQUM7QUFDdEMseUJBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEFBQUM7QUFDeEMsc0JBQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUNuQyw4QkFBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7QUFDbkQsd0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQUFBQztBQUM5Qix5QkFBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxBQUFDO2NBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTthQUNSO1lBQ2Qsb0JBQUMsU0FBUztBQUNSLG9CQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEFBQUM7QUFDMUIsaUJBQUcsRUFBQyxNQUFNO0FBQ1Ysa0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQUFBQztBQUN0QixxQkFBTyxFQUFFLE9BQU8sQUFBQztBQUNqQix5QkFBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxBQUFDO0FBQ3BDLHFCQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEFBQUM7QUFDNUIsc0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQUFBQztBQUM5QixtQkFBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxBQUFDO0FBQ3hCLHNCQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQUFBQztBQUNuQyx1QkFBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxBQUFDO0FBQ2hDLHVCQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEFBQUM7QUFDaEMsc0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQUFBQztBQUM5Qiw2QkFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxBQUFDO0FBQzVDLHdCQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7QUFDM0MseUJBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztjQUM3QztXQUNFO1VBQ0wsV0FBVztVQUNYLFVBQVU7U0FDUCxDQUNQO09BQ0Y7O0FBRUQsY0FBVTthQUFBLG9CQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDM0IsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7QUFDbkMsY0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9EOztBQUVELFlBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7QUFDN0IsaUJBQU87U0FDUjs7QUFFRCxZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDckQsWUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLGNBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFDO09BQ0o7O0FBRUQsd0JBQW9CO2FBQUEsOEJBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUMvQixZQUFZLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWxDLFlBQVk7O0FBQ25CLFlBQUksWUFBWSxFQUFFO0FBQ2hCLHNCQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ2pDOztBQUVELFlBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7QUFDN0IsaUJBQU87U0FDUjs7QUFFRCxZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEQsWUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLGNBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFDO09BQ0o7O0FBRUQsa0JBQWM7YUFBQSx3QkFBQyxHQUFHLEVBQUU7QUFDbEIsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7QUFDakMsY0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO09BQ0Y7O0FBRUQsc0JBQWtCO2FBQUEsNEJBQUMsQ0FBQyxFQUFFO0FBQ3BCLFlBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0FBQ3pDLFlBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUN6QixZQUFJLFVBQVUsRUFBRTtBQUNkLHlCQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM3Qzs7QUFFRCxZQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzlDLFlBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix5QkFBZSxFQUFFLGVBQWU7U0FDakMsQ0FBQyxDQUFDOztBQUVILFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO0FBQ3BDLGNBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQ3pDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZDO09BQ0Y7O0FBRUQsbUJBQWU7YUFBQSx5QkFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO0FBQy9CLFlBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUNuRCxZQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUN6RCxzQkFBWSxHQUFHLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtTQUMxQyxNQUFNO0FBQ0wsY0FBSSxVQUFVLEVBQUU7QUFDZCx3QkFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztXQUMzQixNQUFNO0FBQ0wsd0JBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQ2hELHFCQUFPLE1BQU0sS0FBSyxHQUFHLENBQUM7YUFDdkIsQ0FBQyxDQUFDO1dBQ0o7U0FDRjs7QUFFRCxZQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzNDLFlBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix5QkFBZSxFQUFFLFlBQVk7U0FDOUIsQ0FBQyxDQUFDOztBQUVILFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO0FBQ2pDLGNBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDaEQ7T0FDRjs7QUFFRCxrQkFBYzthQUFBLHdCQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO0FBQ3pDLFlBQUksU0FBUyxZQUFBLENBQUM7QUFDZCxhQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLE1BQU0sRUFBRSxDQUFDLEVBQUU7QUFDL0QsY0FBSSxDQUFDLElBQUksUUFBUSxFQUFFO0FBQ2pCLHFCQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDbkMsbUJBQU8sS0FBSyxDQUFDO1dBQ2Q7U0FDRixDQUFDLENBQUM7O0FBRUgsWUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoRSxZQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osY0FBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7O0FBRUgsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7QUFDckMsY0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNqRjtPQUNGOztBQUVELHFCQUFpQjthQUFBLDZCQUFHO0FBQ2xCLFlBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFFbkI7T0FDRjs7QUFFRCxnQkFBWTthQUFBLHNCQUFDLE1BQU0sRUFBRTtBQUNuQixZQUFJLEdBQUcsR0FBRyxJQUFJO1lBQUUsTUFBTSxZQUFBLENBQUM7QUFDdkIsWUFBSTtBQUNGLGNBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDVixpQkFBTyxDQUFDLENBQUM7U0FDVjs7QUFFRCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFOztBQUV6QixjQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN4RCxjQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFDcEUsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUQsY0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLGdCQUFJLEVBQUUsTUFBTTtXQUNiLENBQUMsQ0FBQztBQUNILGNBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQyxNQUFNO0FBQ0wsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWixnQkFBSSxFQUFFLE1BQU07V0FDYixDQUFDLENBQUM7U0FDSjs7QUFFRCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtBQUNyQyxjQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0M7T0FDRjs7QUFFRCxrQkFBYzthQUFBLDBCQUFHO0FBQ2YsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtBQUN6QixpQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUM5QztPQUNGOztBQUVELGtCQUFjO2FBQUEsMEJBQUc7QUFDZixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGlCQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzlDO09BQ0Y7O0FBRUQsaUJBQWE7YUFBQSx5QkFBRztBQUNkLFlBQUksTUFBTSxZQUFBLENBQUM7QUFDWCxZQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7O0FBRWxELFlBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3pDLGNBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRTtBQUN6QyxtQkFBTTtXQUNQO1NBQ0Y7QUFDRCxZQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMvQixZQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDOztBQUVqQyxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGNBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELGNBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUNwRSxjQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN4RCxjQUFJLFdBQVcsR0FBRyxZQUFZLEVBQzVCLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDN0IsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDekQsY0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLGdCQUFJLEVBQUUsTUFBTTtBQUNaLDJCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtXQUNqRCxDQUFDLENBQUM7QUFDSCxjQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUMsTUFBTTtBQUNMLGdCQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixjQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osZ0JBQUksRUFBRSxNQUFNO0FBQ1osMkJBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1dBQ2pELENBQUMsQ0FBQztTQUNKO0FBQ0QsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7QUFDckMsY0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hEO09BQ0Y7O0FBRUQsb0JBQWdCO2FBQUEsMEJBQUMsU0FBUyxFQUFFO0FBQzFCLFlBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLFlBQUksTUFBTSxZQUFBLENBQUM7QUFDWCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGNBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELGdCQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLGNBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQyxNQUFNO0FBQ0wsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzNCO0FBQ0QsWUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztBQUM1QyxZQUFJLENBQUMsUUFBUSxDQUFDO0FBQ1osY0FBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7T0FDSjs7QUFFRCxtQkFBZTthQUFBLDJCQUFHO0FBQ2hCLFlBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUIsWUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2QsWUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVMsTUFBTSxFQUFFO0FBQ3ZDLGNBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQyxDQUFDLENBQUM7QUFDSCxpQkFBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztPQUNqRDs7QUFFRCxnQkFBWTthQUFBLHNCQUFDLFVBQVUsRUFBRTtBQUN2QixZQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzVELFlBQUksTUFBTSxZQUFBLENBQUM7QUFDWCxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO0FBQ3pCLGNBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3hELGdCQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLGNBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQyxNQUFNO0FBQ0wsZ0JBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzNCO0FBQ0QsWUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7QUFDckYsWUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNaLGNBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFDO09BQ0o7O0FBRUQsb0JBQWdCO2FBQUEsNEJBQUc7QUFDakIsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtBQUN6QixjQUFJLFFBQVEsWUFBQSxDQUFDO0FBQ2IsY0FBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtBQUM3QixvQkFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztXQUMvQyxNQUFNO0FBQ0wsb0JBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1dBQ3BDO0FBQ0QsaUJBQ0U7OztZQUNFLG9CQUFDLGNBQWM7QUFDYixpQkFBRyxFQUFDLFlBQVk7QUFDaEIsc0JBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxBQUFDO0FBQ3ZDLHdCQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUNqRCx5QkFBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEFBQUM7QUFDM0UsNkJBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLGtCQUFrQixBQUFDO0FBQ2hGLDRCQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQyxlQUFlLEFBQUM7QUFDM0Usb0JBQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQUFBQztBQUNsQyxzQkFBUSxFQUFFLFFBQVEsQUFBQztjQUNuQjtXQUNFLENBQ047U0FDSDtBQUNELGVBQU8sSUFBSSxDQUFDO09BQ2I7O0FBRUQsaUJBQWE7YUFBQSx5QkFBRztBQUNkLFlBQUksT0FBTyxZQUFBLENBQUM7QUFDWixZQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUN0QyxpQkFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLE1BQU0sRUFBRTtBQUNsRCxnQkFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUN6QixtQkFBTztBQUNMLGtCQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVE7QUFDcEIsbUJBQUssRUFBRSxLQUFLLENBQUMsU0FBUzs7QUFFdEIsdUJBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUs7O0FBRW5DLHNCQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSyxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssVUFBVSxBQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRO0FBQ3RHLG9CQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsS0FBSzthQUN0QyxDQUFDO1dBQ0gsQ0FBQyxDQUFDO1NBQ0osTUFBTTtBQUNMLGlCQUFPLEdBQUcsQ0FBQztBQUNULGdCQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVE7QUFDeEMsaUJBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUztBQUMxQyxvQkFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRO1dBQzdDLENBQUMsQ0FBQztTQUNKO0FBQ0QsWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtBQUM3RixpQkFDRTs7Y0FBSyxTQUFTLEVBQUMsVUFBVTtZQUN2QixvQkFBQyxPQUFPO0FBQ04sMEJBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQUFBQztBQUNuQywwQkFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxBQUFDO0FBQ25DLDBCQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEFBQUM7QUFDaEMsNkJBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQUFBQztBQUN0QyxxQkFBTyxFQUFFLE9BQU8sQUFBQztBQUNqQiwrQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixBQUFDO0FBQ2hELHNCQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7QUFDdkMsMkJBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQ2pELHVCQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7QUFDekMsc0JBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUN2Qyx5QkFBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO2NBQzdDO1dBQ0UsQ0FDUDtTQUNGLE1BQU07QUFDTCxpQkFBTyxJQUFJLENBQUM7U0FDYjtPQUNGOztBQUVELHFCQUFpQjthQUFBLDJCQUFDLE9BQU8sRUFBRTtBQUN6QixZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO0FBQzNCLGlCQUNFLG9CQUFDLFdBQVcsSUFBQyxPQUFPLEVBQUUsT0FBTyxBQUFDO0FBQ2pCLHlCQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxBQUFDO0FBQ3pDLG9CQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQyxHQUFFLENBQzFEO1NBQ0gsTUFBTTtBQUNMLGlCQUFPLElBQUksQ0FBQztTQUNiO09BQ0Y7O0FBRUQsaUJBQWE7YUFBQSx1QkFBQyxDQUFDLEVBQUM7QUFDZCxZQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztPQUN6RTs7QUFFRCxzQkFBa0I7YUFBQSw4QkFBRztBQUNuQixZQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxZQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxZQUFHLGNBQWMsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLFdBQVcsRUFBQztBQUN6RCx3QkFBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDOUQ7QUFDRCxZQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQzFELFlBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7T0FDNUY7Ozs7U0FsZ0JHLGNBQWM7R0FBUyxLQUFLLENBQUMsU0FBUzs7QUFxZ0I1QyxjQUFjLENBQUMsU0FBUyxHQUFHO0FBQ3pCLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsUUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUM5QixNQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hGLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDNUIsU0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM3QixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzlCLE9BQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDM0IsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUMvQixZQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLG1CQUFpQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUN6QyxXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDL0IsUUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUM1QixXQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQy9CLFlBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDL0IsWUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM5QixlQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2pDLGlCQUFhLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ25DLG9CQUFnQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUN0Qyw0QkFBd0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7R0FDL0MsQ0FBQztBQUNGLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUM5QixRQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQzVCLGNBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDaEMsaUJBQWEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7R0FDcEMsQ0FBQztBQUNGLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDL0IsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUMvQixRQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzVCLGNBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDbEMsYUFBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRztBQUNoQyxTQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDN0IsWUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxhQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ2pDLHNCQUFrQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUN4QyxrQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNwQyxrQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNwQyxlQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2pDLHFCQUFpQixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUN2QyxjQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLFFBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDNUIsbUJBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDdEMsZUFBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNuQyxrQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUN0QyxnQkFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNsQyxnQkFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUNuQyxDQUFDO0FBQ0YsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQy9CLGlCQUFhLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQ3RDLENBQUM7QUFDRixXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQy9CLGFBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07Q0FDcEMsQ0FBQztBQUNGLGNBQWMsQ0FBQyxZQUFZLEdBQUc7QUFDNUIsUUFBTSxFQUFFLE1BQU07QUFDZCxTQUFPLEVBQUUsS0FBSztBQUNkLFVBQVEsRUFBRSxJQUFJO0FBQ2QsT0FBSyxFQUFFLEtBQUs7QUFDWixXQUFTLEVBQUUsS0FBSztBQUNoQixZQUFVLEVBQUUsS0FBSztBQUNqQixtQkFBaUIsRUFBRSxTQUFTO0FBQzVCLFdBQVMsRUFBRTtBQUNULFFBQUksRUFBRSxLQUFLLENBQUMsZUFBZTtBQUMzQixXQUFPLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtBQUNsQyxZQUFRLEVBQUUsRUFBRTtBQUNaLFlBQVEsRUFBRSxTQUFTO0FBQ25CLGVBQVcsRUFBRSxTQUFTO0FBQ3RCLGlCQUFhLEVBQUUsS0FBSztBQUNwQixvQkFBZ0IsRUFBRSxLQUFLO0FBQ3ZCLDRCQUF3QixFQUFFLEtBQUs7R0FDaEM7QUFDRCxVQUFRLEVBQUU7QUFDUixRQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWM7QUFDMUIsY0FBVSxFQUFFLEtBQUs7QUFDakIsaUJBQWEsRUFBRSxTQUFTO0dBQ3pCO0FBQ0QsV0FBUyxFQUFFLEtBQUs7QUFDaEIsV0FBUyxFQUFFLEtBQUs7QUFDaEIsUUFBTSxFQUFFLEtBQUs7QUFDYixtQkFBaUIsRUFBRSxLQUFLO0FBQ3hCLGNBQVksRUFBRSxLQUFLO0FBQ25CLGFBQVcsRUFBRSxFQUFFO0FBQ2YsU0FBTyxFQUFFO0FBQ1AsWUFBUSxFQUFFLFNBQVM7QUFDbkIsYUFBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0FBQzFCLHNCQUFrQixFQUFFLFNBQVM7QUFDN0Isa0JBQWMsRUFBRSxTQUFTO0FBQ3pCLGtCQUFjLEVBQUUsU0FBUztBQUN6QixlQUFXLEVBQUUsU0FBUztBQUN0QixxQkFBaUIsRUFBRSxTQUFTO0FBQzVCLGNBQVUsRUFBRSxTQUFTO0FBQ3JCLFFBQUksRUFBRSxDQUFDO0FBQ1AsbUJBQWUsRUFBRSxLQUFLLENBQUMsa0JBQWtCO0FBQ3pDLGVBQVcsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLGtCQUFjLEVBQUUsS0FBSyxDQUFDLGVBQWU7R0FDdEM7QUFDRCxXQUFTLEVBQUU7QUFDVCxpQkFBYSxFQUFFLENBQUMsRUFDakI7QUFDRCxXQUFTLEVBQUUsS0FBSztBQUNoQixhQUFXLEVBQUUsU0FBUztDQUN2QixDQUFDOztpQkFFYSxjQUFjOzs7Ozs7O2lCQ3ZuQmQ7QUFDYixXQUFTLEVBQUUsTUFBTTtBQUNqQixVQUFRLEVBQUUsS0FBSztBQUNmLGVBQWEsRUFBRSxFQUFFO0FBQ2pCLFdBQVMsRUFBRSxHQUFHO0FBQ2QsV0FBUyxFQUFFLElBQUk7QUFDZixVQUFRLEVBQUUsR0FBRztBQUNiLFlBQVUsRUFBRSxJQUFJO0FBQ2hCLHFCQUFtQixFQUFFLEVBQUU7QUFDdkIsaUJBQWUsRUFBRSxNQUFNO0FBQ3ZCLG1CQUFpQixFQUFFLE9BQU87QUFDMUIsa0JBQWdCLEVBQUUsVUFBVTtBQUM1QixnQkFBYyxFQUFFLE1BQU07QUFDdEIsaUJBQWUsRUFBRSxPQUFPO0FBQ3hCLG1CQUFpQixFQUFFLFNBQVM7QUFDNUIsb0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEMsaUJBQWUsRUFBRSxDQUFDO0NBQ25COzs7Ozs7Ozs7SUNqQk0sS0FBSywyQkFBTSxPQUFPOztBQUN6QixJQUFJLE1BQU0sR0FBQyxnQkFBUyxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDOztBQUdsRSxRQUFHLFFBQVEsS0FBRyxJQUFJLElBQUUsT0FBTyxRQUFRLEtBQUcsUUFBUSxFQUFDOztBQUMzQyxZQUFJLElBQUksR0FBQyxRQUFRLEtBQUcsSUFBSSxHQUFDLE1BQU0sR0FBQyxRQUFRLENBQUM7QUFDekMsZUFDSSwwQ0FBVyxJQUFJLElBQUUsSUFBSSxFQUFFLElBQUksQUFBQyxFQUFDLFlBQVksRUFBRSxZQUFZLEFBQUM7QUFDakQscUJBQVMsRUFBRSxDQUFDLFdBQVcsSUFBRSxFQUFFLENBQUEsR0FBRSxnQ0FBZ0MsQUFBQyxJQUFHLENBQzNFO0tBQ0osTUFBTSxJQUFHLENBQUMsUUFBUSxFQUFDO0FBQ2xCLFlBQUksSUFBSSxHQUFDLFFBQVEsS0FBRyxJQUFJLEdBQUMsTUFBTSxHQUFDLFFBQVEsQ0FBQztBQUN6QyxlQUNJLDBDQUFXLElBQUksSUFBRSxJQUFJLEVBQUUsSUFBSSxBQUFDLEVBQUMsWUFBWSxFQUFFLFlBQVksQUFBQyxFQUFDLFFBQVEsRUFBQyxVQUFVO0FBQ3JFLHFCQUFTLEVBQUUsQ0FBQyxXQUFXLElBQUUsRUFBRSxDQUFBLEdBQUUsZ0NBQWdDLEFBQUMsSUFBRyxDQUMzRTtLQUNGLE1BQU0sSUFBRyxRQUFRLENBQUMsSUFBSSxFQUFDOzs7QUFFcEIsZ0JBQVEsQ0FBQyxLQUFLLEtBQUcsSUFBSSxDQUFDLEtBQUssR0FBQyxRQUFRLENBQUMsS0FBSyxDQUFBLEFBQUMsQ0FBQzs7O0FBRzVDLFlBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxXQUFXLElBQUUsRUFBRSxDQUFBLEdBQ2hCLDRCQUE0QixHQUM1QixRQUFRLENBQUMsSUFBSSxJQUNaLFFBQVEsQ0FBQyxTQUFTLEdBQUUsR0FBRyxHQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUUsRUFBRSxDQUFBLEFBQUMsQ0FBQzs7QUFFbEUsWUFBRyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBQzs7QUFDMUIsZ0JBQUksT0FBTyxHQUFHLEVBQUU7Z0JBQUUsTUFBTSxHQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ2pELGdCQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUM7O0FBQ3JCLG9CQUFJLFFBQVEsQ0FBQztBQUNiLHVCQUFPLEdBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFDNUIsNEJBQVEsR0FBQyxNQUFNLEdBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztBQUM1QiwyQkFDSTs7MEJBQVEsR0FBRyxFQUFFLFFBQVEsR0FBQyxDQUFDLEFBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxBQUFDO3dCQUFFLFFBQVE7cUJBQVUsQ0FDekQ7aUJBQ0osQ0FBQyxDQUFDO2FBQ047QUFDRCxtQkFDSTs7NkJBQVksSUFBSSxJQUFFLFlBQVksRUFBRSxZQUFZLEFBQUM7Z0JBQUUsT0FBTzthQUFVLENBQ2xFO1NBQ0wsTUFBTSxJQUFHLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFDOzs7QUFFbkMsb0JBQVEsQ0FBQyxJQUFJLEtBQUcsSUFBSSxDQUFDLElBQUksR0FBQyxRQUFRLENBQUMsSUFBSSxDQUFBLEFBQUMsQ0FBQztBQUN6QyxvQkFBUSxDQUFDLElBQUksS0FBRyxJQUFJLENBQUMsSUFBSSxHQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUEsQUFBQyxDQUFDO0FBQ3pDLGdCQUFJLFlBQVksR0FBQyxJQUFJLENBQUMsU0FBUztnQkFBQyxPQUFPLEdBQUMsSUFBSSxDQUFDO0FBQzdDLGdCQUFHLFlBQVksRUFBQztBQUNaLG9CQUFJLENBQUMsU0FBUyxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQ3RCLHdCQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFOztBQUNqQixvQ0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuQjtpQkFDSixDQUFDO0FBQ0YsdUJBQU8sR0FBQzs7c0JBQU8sU0FBUyxFQUFDLHVDQUF1QyxFQUFDLE9BQU8sRUFBRSxZQUFZLEFBQUM7O2lCQUFhLENBQUE7YUFDdkc7O0FBRUQsbUJBQ0k7OztnQkFDSSw2Q0FBYyxJQUFJLElBQUUsWUFBWSxFQUFFLFlBQVksQUFBQyxJQUFZO2dCQUMxRCxPQUFPO2FBQ04sQ0FFUjtTQUNMLE1BQU0sSUFBRyxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBQztBQUNyQyxnQkFBSSxPQUFNLEdBQUcsWUFBWSxDQUFDO0FBQzFCLGdCQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUM7O0FBRTdDLHVCQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDbEM7QUFDRCxnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0QsZ0JBQUksQ0FBQyxTQUFTLElBQUksc0JBQXNCLENBQUM7O0FBRXpDLGdCQUFJLE9BQU8sR0FBRyxZQUFZLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxHQUFDLEtBQUssQ0FBQzs7QUFFekYsbUJBQ0UsMENBQVcsSUFBSSxJQUFFLElBQUksRUFBQyxVQUFVLEVBQUMsS0FBSyxFQUFFLE9BQU0sQUFBQyxFQUFDLGNBQWMsRUFBRSxPQUFPLEFBQUMsSUFBRSxDQUMxRTtTQUNILE1BQUs7O0FBQ0YsbUJBQ0ksMENBQVcsSUFBSSxJQUFFLElBQUksRUFBRSxJQUFJLEFBQUMsRUFBQyxZQUFZLEVBQUUsWUFBWSxBQUFDLElBQUUsQ0FDN0Q7U0FDSjtLQUNKOztBQUVELFdBQ0ksMENBQVcsSUFBSSxJQUFFLElBQUksRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxJQUFFLEVBQUUsQ0FBQSxHQUFFLGdDQUFnQyxBQUFDLElBQUUsQ0FDaEc7Q0FDSixDQUFDOztpQkFFYSxNQUFNOzs7Ozs7Ozs7Ozs7O0lDdkZkLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsS0FBSywyQkFBTSxTQUFTOztJQUNwQixNQUFNLDJCQUFNLGNBQWM7O0FBRWpDLElBQUksZUFBZSxHQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFDMUMsSUFBSSxvQkFBb0IsR0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7O0lBRXRFLFlBQVk7V0FBWixZQUFZOzBCQUFaLFlBQVk7Ozs7Ozs7WUFBWixZQUFZOztlQUFaLFlBQVk7QUFFaEIsVUFBTTs7O2FBQUEsZ0JBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUM7QUFDcEIsWUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQ2xCLEdBQUcsRUFBQyxLQUFLLEVBQUU7QUFDVCxjQUFJLEVBQUMsUUFBUTtBQUNiLGlCQUFPLEVBQUUsSUFBSTtBQUNiLHlCQUFlLEVBQUUsSUFBSTtBQUNyQix1QkFBYSxFQUFFLG9CQUFvQjtBQUNuQyx1QkFBYSxFQUFFLG9CQUFvQjtTQUNwQyxDQUFDLENBQUM7T0FDUjs7QUFFRCxVQUFNO2FBQUEsa0JBQUU7QUFDTixlQUNJLG9CQUFDLGVBQWUsSUFBQyxHQUFHLEVBQUMsUUFBUSxFQUFDLG1CQUFtQixFQUFFLG9CQUFvQixBQUFDO0FBQ3ZELFlBQUUsRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUMsaUJBQWlCLEdBQW1CLENBQ3hGO09BQ0Y7Ozs7U0FsQkcsWUFBWTtHQUFTLEtBQUssQ0FBQyxTQUFTOztpQkFxQjNCLFlBQVk7Ozs7Ozs7Ozs7Ozs7SUM1QnBCLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUMxQixLQUFLLDJCQUFNLFNBQVM7O0lBRXJCLHFCQUFxQjtXQUFyQixxQkFBcUI7MEJBQXJCLHFCQUFxQjs7Ozs7OztZQUFyQixxQkFBcUI7O2VBQXJCLHFCQUFxQjtBQUV6QixVQUFNO2FBQUEsa0JBQUU7QUFDTixZQUFJLE9BQU8sR0FBRztBQUNaLGVBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQzs7QUFFRixlQUNFOztZQUFJLEtBQUssRUFBRSxPQUFPLEFBQUM7VUFDakI7O2NBQUssU0FBUyxFQUFDLDhCQUE4QjtZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7V0FDaEI7U0FDSCxDQUNOO09BQ0Y7Ozs7U0FkRyxxQkFBcUI7R0FBUyxLQUFLLENBQUMsU0FBUzs7aUJBaUJwQyxxQkFBcUI7Ozs7Ozs7Ozs7Ozs7OztJQ3JCN0IsS0FBSywyQkFBTSxPQUFPOztJQUNsQixLQUFLLDJCQUFNLFNBQVM7O0lBQ3BCLElBQUksMkJBQU0sUUFBUTs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUMxQixXQUFXLDJCQUFNLGVBQWU7O0lBQ2hDLGVBQWUsMkJBQU0sbUJBQW1COztJQUN4QyxRQUFRLDJCQUFNLFlBQVk7O0FBRWpDLElBQUksS0FBSyxHQUFDLGVBQVMsR0FBRyxFQUFDO0FBQ3JCLFNBQU8sR0FBRyxJQUFHLE9BQU8sR0FBRyxLQUFHLFVBQVUsQUFBQyxDQUFDO0NBRXZDLENBQUM7O0lBQ0ksU0FBUztBQUVGLFdBRlAsU0FBUyxDQUVELEtBQUssRUFBRTswQkFGZixTQUFTOztBQUdiLCtCQUhJLFNBQVMsNkNBR1AsS0FBSyxFQUFFO0FBQ1gsUUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLGtCQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDO0FBQ0YsUUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7R0FDdEI7O1lBUkcsU0FBUzs7ZUFBVCxTQUFTO0FBVWIscUJBQWlCO2FBQUEsNkJBQUU7QUFDakIsWUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7T0FDM0I7O0FBRUQsc0JBQWtCO2FBQUEsOEJBQUU7QUFDbEIsWUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7T0FDM0I7O0FBRUQsVUFBTTthQUFBLGtCQUFFO0FBQ04sWUFBSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7QUFFbkQsWUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRTtBQUNuQyx5QkFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztBQUNuQywwQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7QUFDckMsdUJBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7QUFDL0IsMkJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1NBQ3hDLENBQUMsQ0FBQzs7QUFFSCxZQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQ3BELFlBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOztBQUU3RCxZQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBUyxJQUFJLEVBQUUsQ0FBQyxFQUFDO0FBQ25ELGNBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFTLE1BQU0sRUFBRSxDQUFDLEVBQUM7QUFDM0QsZ0JBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsZ0JBQUcsSUFBSSxDQUFDLE9BQU8sSUFDYixNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtBQUNuQyxrQkFBTSxDQUFDLFFBQVE7QUFDZixnQkFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxJQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFDO0FBQy9CLGtCQUFJLE1BQU0sR0FBQyxNQUFNLENBQUMsTUFBTSxHQUFDLFVBQVMsS0FBSyxFQUFDO0FBQ3RDLHVCQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUMsRUFBRSxDQUFDLENBQUM7ZUFDdkQsR0FBQyxLQUFLLENBQUM7O0FBRVYscUJBQ0k7QUFBQywrQkFBZTtrQkFBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQzs7QUFFckQsMEJBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUMsTUFBTSxDQUFDLFFBQVEsQUFBQztBQUN0Rix3QkFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUMsTUFBTSxHQUFDLEtBQUssQUFBQztBQUNuQyxxQkFBRyxFQUFFLENBQUMsQUFBQztBQUNQLDRCQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxBQUFDO0FBQzNDLDBCQUFRLEVBQUUsQ0FBQyxBQUFDO0FBQ1osMEJBQVEsRUFBRSxDQUFDLEFBQUM7Z0JBQzFCLFVBQVU7ZUFDSyxDQUNuQjthQUNKLE1BQUs7O0FBRUosa0JBQUksV0FBVyxHQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDOztBQUUvRixrQkFBRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFDO0FBQ3RDLG9CQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxvQkFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUU7QUFDekMsZ0NBQWMsR0FBRyw2QkFBSyx1QkFBdUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsQUFBQyxHQUFPLENBQUM7aUJBQ2pGO0FBQ0QsdUJBQ0U7QUFBQyw2QkFBVztvQkFBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQUFBQztBQUN4Qix1QkFBRyxFQUFFLENBQUMsQUFBQztBQUNQLDZCQUFTLEVBQUUsV0FBVyxBQUFDO0FBQ3ZCLDRCQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEFBQUM7QUFDOUIsMEJBQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUN2Qyx5QkFBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEFBQUM7a0JBQzlCLGNBQWM7aUJBQ0gsQ0FDZjtlQUNGLE1BQUs7QUFDSix1QkFDRTtBQUFDLDZCQUFXO29CQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxBQUFDO0FBQ3hCLHVCQUFHLEVBQUUsQ0FBQyxBQUFDO0FBQ1AsNkJBQVMsRUFBRSxXQUFXLEFBQUM7QUFDdkIsNEJBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQUFBQztBQUM5QiwwQkFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEFBQUM7QUFDdEIsMEJBQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztBQUN2Qyx5QkFBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEFBQUM7a0JBQzlCLFVBQVU7aUJBQ0MsQ0FDZjtlQUNGO2FBQ0Y7V0FDRixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ1QsY0FBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkYsY0FBSSxlQUFlLEdBQUcsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FDMUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFDLElBQUksQ0FBQzs7QUFFbEUsY0FBSSxXQUFXLEdBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0FBQ3BHLGlCQUNFO0FBQUMsb0JBQVE7Y0FBQyxVQUFVLEVBQUUsUUFBUSxBQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQUFBQyxFQUFDLFNBQVMsRUFBRSxXQUFXLEFBQUM7QUFDN0QsdUJBQVMsRUFBRSxrQkFBa0IsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBQyxTQUFTLEFBQUM7QUFDN0QsNEJBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGNBQWMsQUFBQztBQUNsRSx3QkFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0FBQzNDLHlCQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFDNUMsZUFBZTtZQUNmLFlBQVk7V0FDSixDQUNaO1NBQ0YsRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFVCxZQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFDO0FBQ3hCLG1CQUFTLENBQUMsSUFBSSxDQUNkO0FBQUMsb0JBQVE7Y0FBQyxHQUFHLEVBQUMsaUJBQWlCO1lBQzdCOztnQkFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFFLGtCQUFrQixHQUFDLENBQUMsR0FBQyxDQUFDLENBQUEsQUFBQyxBQUFDO0FBQzVELHFCQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEFBQUM7O2FBRTlCO1dBQ0ksQ0FBQyxDQUFDO1NBQ2Q7O0FBRUQsWUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7O0FBRXJCLFlBQUksTUFBTSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDOztBQUV4RCxlQUNFOztZQUFLLEdBQUcsRUFBQyxXQUFXLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixBQUFDLEVBQUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxBQUFDO1VBQ3hFOztjQUFPLFNBQVMsRUFBRSxZQUFZLEFBQUM7WUFDNUIsV0FBVztZQUNaOzs7Y0FDRyxTQUFTO2FBQ0o7V0FDRjtTQUNKLENBQ1A7T0FDRjs7QUFFRCxxQkFBaUI7YUFBQSwyQkFBQyxrQkFBa0IsRUFBQztBQUNuQyxZQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7O0FBRTNCLFlBQUcsa0JBQWtCLEVBQUM7QUFDcEIsY0FBSSxLQUFLLEdBQUc7QUFDVixpQkFBSyxFQUFDLEVBQUU7QUFDUixvQkFBUSxFQUFDLEVBQUU7V0FDWixDQUFBO0FBQ0QseUJBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBQyxJQUFJLEdBQUUsNEJBQUksS0FBSyxFQUFFLEtBQUssQUFBQyxFQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQUFBQyxHQUFNLEFBQUMsQ0FBQztTQUNqRztBQUNELFlBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFTLE1BQU0sRUFBRSxDQUFDLEVBQUM7QUFDdEQsY0FBSSxLQUFLLEdBQUM7QUFDUixtQkFBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUMsTUFBTSxHQUFDLElBQUk7QUFDbEMsaUJBQUssRUFBRSxNQUFNLENBQUMsS0FBSztBQUNuQixvQkFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLOztBQUFBLFdBRXZCLENBQUM7QUFDRixjQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUUsSUFBSSxDQUFDO0FBQzlFLGlCQUFROztjQUFJLEtBQUssRUFBRSxLQUFLLEFBQUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxBQUFDLEVBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEFBQUM7WUFBRSxNQUFNLENBQUMsSUFBSTtZQUFFLFNBQVM7V0FBTSxDQUFFO1NBQy9GLENBQUMsQ0FBQzs7QUFFSCxlQUNFOztZQUFPLEdBQUcsRUFBQyxRQUFRO1VBQ2pCOzs7WUFBSyxlQUFlO1lBQUUsT0FBTztXQUFNO1NBQzdCLENBQ1Q7T0FDRjs7QUFFRCxrQkFBYzthQUFBLHdCQUFDLFFBQVEsRUFBQztBQUN0QixZQUFJLEdBQUcsRUFBRSxXQUFXLENBQUM7QUFDckIsWUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVMsR0FBRyxFQUFFLENBQUMsRUFBQztBQUN0QyxjQUFHLENBQUMsSUFBSSxRQUFRLEdBQUMsQ0FBQyxFQUFDO0FBQ2pCLGVBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQix1QkFBVyxHQUFHLEdBQUcsQ0FBQztXQUNuQjtTQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDVCxZQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztPQUNwQzs7QUFFRCxtQkFBZTthQUFBLHlCQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7QUFDbkMsWUFBSSxHQUFHLEVBQUUsV0FBVyxDQUFDO0FBQ3JCLFlBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUM7QUFDdEMsY0FBRyxDQUFDLElBQUksUUFBUSxHQUFDLENBQUMsRUFBQztBQUNqQixlQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsdUJBQVcsR0FBRyxHQUFHLENBQUM7V0FDbkI7U0FDRixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ1QsWUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO09BQ2pEOztBQUVELDhCQUEwQjthQUFBLG9DQUFDLENBQUMsRUFBQztBQUMzQixZQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUM7QUFDdkYsY0FBSSxDQUFDLGVBQWUsQ0FDbEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xGO09BQ0Y7O0FBRUQsa0JBQWM7YUFBQSx3QkFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDO0FBQ25DLFlBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLFlBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUM7QUFDNUIscUJBQVcsRUFBRSxDQUFDO0FBQ2QsY0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFDdEMsV0FBVyxFQUFFLENBQUM7U0FDakI7QUFDRCxnQkFBUSxFQUFFLENBQUM7QUFDWCxZQUFJLFFBQVEsR0FBRztBQUNiLHNCQUFZLEVBQUU7QUFDWixlQUFHLEVBQUUsUUFBUTtBQUNiLGVBQUcsRUFBRSxXQUFXO1dBQ2pCO1NBQ0YsQ0FBQzs7QUFFRixZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLHdCQUF3QixFQUFDOztBQUUvQyxjQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hHLGNBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdDO0FBQ0QsWUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztPQUN6Qjs7QUFFRCxjQUFVO2FBQUEsc0JBQUU7QUFDVixZQUFJLFlBQVksR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztBQUN6QyxZQUFHLFlBQVksRUFBQztBQUNkLGNBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUMsWUFBWSxDQUFDLEdBQUcsRUFBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckU7T0FDRjs7QUFFRCwwQkFBc0I7YUFBQSxnQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQztBQUNuRCxZQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFDcEMsWUFBRyxJQUFJLElBQUksTUFBTSxFQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7T0FDekU7O0FBRUQseUJBQXFCO2FBQUEsK0JBQUMsUUFBUSxFQUFDO0FBQzdCLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUN2RCxpQkFBUTtBQUFDLHVCQUFXOztZQUFDLCtCQUFPLElBQUksRUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFDLFdBQVcsRUFBQyxPQUFPLEVBQUUsUUFBUSxBQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsR0FBRTtXQUFjLENBQUU7U0FDckosTUFBSztBQUNKLGlCQUFRO0FBQUMsdUJBQVc7O1lBQUUsK0JBQU8sSUFBSSxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUUsUUFBUSxBQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsR0FBRTtXQUFjLENBQUU7U0FDeEk7T0FDRjs7QUFFRCx3QkFBb0I7YUFBQSxnQ0FBRTtBQUNwQixZQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ3hELFlBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUN4QixhQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztBQUMvQix3QkFBYyxDQUFDLElBQUksQ0FBQztBQUNsQixpQkFBSyxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1dBQzdCLENBQUMsQ0FBQztTQUNKO0FBQ0QsZUFBTyxjQUFjLENBQUM7T0FDdkI7O0FBRUQsc0JBQWtCO2FBQUEsOEJBQUU7QUFDbEIsWUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUN4RCxhQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztBQUMvQixpQkFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDeEQ7T0FDRjs7QUFFRCw0QkFBd0I7YUFBQSxvQ0FBRTtBQUN4QixZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU07QUFBRSxpQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztlQUNyRDtBQUNGLGlCQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN6QztPQUNGOztBQUVELHVCQUFtQjthQUFBLCtCQUFFO0FBQ25CLGVBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztPQUMzRDs7OztTQXRRRyxTQUFTO0dBQVMsS0FBSyxDQUFDLFNBQVM7O0FBd1F2QyxTQUFTLENBQUMsU0FBUyxHQUFHO0FBQ3BCLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDOUIsTUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUMzQixTQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO0FBQzlCLFNBQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDN0IsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM5QixPQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzNCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDL0IsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxpQkFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUN0QyxZQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLGFBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7Q0FDbEMsQ0FBQztpQkFDYSxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7OztJQ2pTakIsS0FBSywyQkFBTSxPQUFPOztJQUNsQixLQUFLLDJCQUFNLFNBQVM7O0lBRXJCLFdBQVc7QUFFSixXQUZQLFdBQVcsQ0FFSCxLQUFLLEVBQUU7MEJBRmYsV0FBVzs7QUFHZiwrQkFISSxXQUFXLDZDQUdULEtBQUssRUFBRTtHQUNaOztZQUpHLFdBQVc7O2VBQVgsV0FBVztBQU1mLGtCQUFjO2FBQUEsd0JBQUMsQ0FBQyxFQUFDO0FBQ2YsWUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFDO0FBQ3JELGNBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtBQUNqRCxvQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztXQUM1QixNQUFNLElBQUcsTUFBTSxDQUFDLFlBQVksRUFBRTtBQUMzQixnQkFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2hDLGVBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztXQUN6QjtTQUNGO0FBQ0QsWUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2YsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUN0QyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO09BQzlCOztBQUVELFVBQU07YUFBQSxrQkFBRTtBQUNOLFlBQUksT0FBTyxHQUFHO0FBQ1osbUJBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7QUFDL0IsaUJBQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxNQUFNLEdBQUMsSUFBSTtTQUN2QyxDQUFDOztBQUVGLFlBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNkLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUM7QUFDckIsY0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBQztBQUNuRCxnQkFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztXQUMvQyxNQUFLLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBQztBQUMzRCxnQkFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztXQUNyRDtTQUNGO0FBQ0QsZUFDRTs7cUJBQUksS0FBSyxFQUFFLE9BQU8sQUFBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQUFBQyxJQUFLLElBQUk7VUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1NBQ2pCLENBQ047T0FDRjs7OztTQXZDRyxXQUFXO0dBQVMsS0FBSyxDQUFDLFNBQVM7O0FBeUN6QyxXQUFXLENBQUMsU0FBUyxHQUFHO0FBQ3RCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDakMsUUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM1QixXQUFTLEVBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0NBQ2pDLENBQUM7O0FBRUYsV0FBVyxDQUFDLFlBQVksR0FBRztBQUN6QixXQUFTLEVBQUUsTUFBTTtBQUNqQixRQUFNLEVBQUUsS0FBSztBQUNiLFdBQVMsRUFBQyxFQUFFO0NBQ2IsQ0FBQTtpQkFDYyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7SUN2RG5CLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsS0FBSywyQkFBTSxTQUFTOztJQUNwQixNQUFNLDJCQUFNLFVBQVU7O0lBQ3RCLFFBQVEsMkJBQU0sbUJBQW1COztJQUNqQyxRQUFRLDJCQUFNLFlBQVk7O0lBRTNCLGVBQWU7QUFDTixhQURULGVBQWUsQ0FDTCxLQUFLLEVBQUM7OEJBRGhCLGVBQWU7O0FBRWIsbUNBRkYsZUFBZSw2Q0FFUCxLQUFLLEVBQUU7QUFDYixZQUFJLENBQUMsYUFBYSxHQUFDLENBQUMsQ0FBQztBQUNyQixZQUFJLENBQUMsS0FBSyxHQUFDO0FBQ1AsdUJBQVcsRUFBQyxLQUFLO1NBQ3BCLENBQUM7S0FDTDs7Y0FQQyxlQUFlOztpQkFBZixlQUFlO0FBU25CLHNCQUFjO21CQUFBLHdCQUFDLENBQUMsRUFBQztBQUNmLG9CQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFOztBQUNuQix3QkFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksVUFBVSxHQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7O0FBRTlELHdCQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBQztBQUN0QiwrQkFBTztxQkFDVjtBQUNELHdCQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3BELE1BQUssSUFBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBQztBQUN2Qix3QkFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNuRDthQUNGOztBQUVELGtCQUFVO21CQUFBLG9CQUFDLENBQUMsRUFBQztBQUNYLG9CQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFDO0FBQ3ZCLHdCQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxVQUFVLEdBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUM5RCx3QkFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUM7QUFDdEIsK0JBQU87cUJBQ1Y7QUFDRCx3QkFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN0RDthQUNGOztBQUNELGlCQUFTO21CQUFBLG1CQUFDLEtBQUssRUFBQztBQUNaLG9CQUFJLEVBQUUsR0FBQyxJQUFJLENBQUM7QUFDWixvQkFBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUM7QUFDM0Isd0JBQUksS0FBSyxHQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3Qyx3QkFBRyxLQUFLLEtBQUcsSUFBSSxFQUFDO0FBQ1osMEJBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDaEUsNEJBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDOztBQUU3QiwwQkFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2xCLDBCQUFFLENBQUMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7QUFDaEMsMEJBQUUsQ0FBQyxhQUFhLEdBQUMsVUFBVSxDQUFDLFlBQVU7QUFBQyw4QkFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO3lCQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0UsNkJBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNkLCtCQUFPLEtBQUssQ0FBQztxQkFDaEI7aUJBQ0o7QUFDRCx1QkFBTyxJQUFJLENBQUM7YUFFZjs7QUFDRCxvQkFBWTs7Ozs7Ozs7Ozs7ZUFBQSxZQUFFO0FBQ1Ysb0JBQUcsSUFBSSxDQUFDLGFBQWEsSUFBRSxDQUFDLEVBQUM7QUFDckIsZ0NBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDakMsd0JBQUksQ0FBQyxhQUFhLEdBQUMsQ0FBQyxDQUFDO2lCQUN4QjthQUNKOztBQUNELHlCQUFpQjttQkFBQSw2QkFBRTtBQUNmLG9CQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7QUFFL0IscUJBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNqQjs7QUFFRCw0QkFBb0I7bUJBQUEsZ0NBQUc7QUFDckIsb0JBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjs7QUFFRCxjQUFNO21CQUFBLGtCQUFFO0FBQ04sb0JBQUksUUFBUSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDNUIsTUFBTSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtvQkFDeEIsSUFBSSxHQUFDO0FBQ0QsdUJBQUcsRUFBQyxVQUFVO0FBQ2QsNkJBQVMsRUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDeEMsMEJBQU0sRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3BDLENBQUM7O0FBRUYsd0JBQVEsQ0FBQyxXQUFXLEtBQUcsSUFBSSxDQUFDLFdBQVcsR0FBQyxRQUFRLENBQUMsV0FBVyxDQUFBLEFBQUMsQ0FBQzs7QUFFbEUsb0JBQUksV0FBVyxHQUFDLFFBQVEsQ0FBQyxFQUFDLFVBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUMsT0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQUM7QUFDN0YsdUJBQ0k7O3NCQUFJLEdBQUcsRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxBQUFDO29CQUNyQyxNQUFNLENBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFFLEVBQUUsQ0FBQztvQkFDakUsb0JBQUMsUUFBUSxJQUFDLEdBQUcsRUFBQyxVQUFVLEdBQVk7aUJBQ25DLENBQ1I7YUFDRjs7QUFFRCx5QkFBaUI7bUJBQUEsMkJBQUMsQ0FBQyxFQUFDO0FBQ2xCLG9CQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDZixvQkFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLHFCQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCx1QkFBTyxLQUFLLENBQUM7YUFDZDs7OztXQS9GRyxlQUFlO0dBQVMsS0FBSyxDQUFDLFNBQVM7O0FBa0c3QyxlQUFlLENBQUMsU0FBUyxHQUFHO0FBQzFCLGdCQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2xDLFlBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsWUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxjQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0NBQ2pDLENBQUM7O2lCQUdhLGVBQWU7Ozs7Ozs7Ozs7Ozs7OztJQ2hIdkIsS0FBSywyQkFBTSxPQUFPOztJQUNsQixLQUFLLDJCQUFNLFNBQVM7O0lBQ3BCLFFBQVEsMkJBQU0sWUFBWTs7SUFFM0IsV0FBVztBQUVKLFdBRlAsV0FBVyxDQUVILEtBQUssRUFBRTswQkFGZixXQUFXOztBQUdiLCtCQUhFLFdBQVcsNkNBR1AsS0FBSyxFQUFFO0FBQ2IsUUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7R0FDckI7O1lBTEcsV0FBVzs7ZUFBWCxXQUFXO0FBT2YsZUFBVzthQUFBLHFCQUFDLENBQUMsRUFBQztBQUNaLFlBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUNwQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUU1QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7O0FBRS9ELFlBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztPQUNyQzs7QUFFRCxVQUFNO2FBQUEsa0JBQUU7QUFDTixZQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQ25DLHlCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO0FBQ25DLDJCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztTQUN4QyxDQUFDLENBQUM7QUFDSCxZQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7O0FBRTNCLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUM7QUFDckQsY0FBSSxLQUFLLEdBQUc7QUFDVixpQkFBSyxFQUFDLEVBQUU7QUFDUix1QkFBVyxFQUFFLENBQUM7QUFDZCx3QkFBWSxFQUFFLENBQUM7V0FDaEIsQ0FBQTtBQUNELHlCQUFlLEdBQUk7O2NBQUksS0FBSyxFQUFFLEtBQUssQUFBQyxFQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQUFBQzs7V0FBWSxBQUFDLENBQUM7U0FDNUQ7QUFDRCxZQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBUyxNQUFNLEVBQUM7QUFDdkQsY0FBSSxPQUFPLEdBQUc7QUFDWixtQkFBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUMsTUFBTSxHQUFDLElBQUk7QUFDbEMsaUJBQUssRUFBRSxNQUFNLENBQUMsS0FBSztXQUNwQixDQUFDO0FBQ0YsaUJBQ0U7O2NBQUksR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEFBQUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxBQUFDO1lBQ25DOztnQkFBSyxTQUFTLEVBQUMsOEJBQThCO2NBQzNDLCtCQUFPLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQUFBQyxFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxBQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDLEdBQUU7YUFDN0c7V0FDSCxDQUNOO1NBQ0YsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNULGVBQ0U7O1lBQU8sU0FBUyxFQUFFLFlBQVksQUFBQyxFQUFDLEtBQUssRUFBRSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsQUFBQztVQUNuRDs7O1lBQ0U7O2dCQUFJLEtBQUssRUFBRSxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBQyxBQUFDO2NBQ3RDLGVBQWU7Y0FBRSxXQUFXO2FBQzFCO1dBQ0M7U0FDRixDQUNUO09BQ0Y7Ozs7U0F0REcsV0FBVztHQUFTLEtBQUssQ0FBQyxTQUFTOztBQXdEekMsV0FBVyxDQUFDLFNBQVMsR0FBRztBQUN0QixTQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO0FBQzlCLGVBQWEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDckMsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtDQUMvQixDQUFDO2lCQUNhLFdBQVc7Ozs7Ozs7Ozs7Ozs7OztJQ2pFbkIsS0FBSywyQkFBTSxPQUFPOztJQUNsQixLQUFLLDJCQUFNLFNBQVM7O0lBQ3BCLElBQUksMkJBQU0sUUFBUTs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUMxQixxQkFBcUIsMkJBQU0seUJBQXlCOztJQUVyRCxXQUFXO0FBRUosV0FGUCxXQUFXLENBRUgsS0FBSyxFQUFFOzBCQUZmLFdBQVc7O0FBR2IsK0JBSEUsV0FBVyw2Q0FHUCxLQUFLLEVBQUU7R0FDZDs7WUFKRyxXQUFXOztlQUFYLFdBQVc7QUFNZixrQkFBYzthQUFBLHdCQUFDLEtBQUssRUFBRSxTQUFTLEVBQUM7QUFDOUIsWUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDM0IsYUFBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQyxDQUFDLEVBQUUsRUFBQztBQUN0QyxjQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxjQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO0FBQ25ELGtCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1dBQy9EO1NBQ0Y7QUFDRCxZQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7T0FDckM7O0FBRUQscUJBQWlCO2FBQUEsNkJBQUU7O0FBRWpCLFlBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUM7QUFDckIsY0FBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9ELGNBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzNCLGVBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUMsQ0FBQyxFQUFFLEVBQUM7QUFDdEMsZ0JBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLGdCQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUM7QUFDM0Qsb0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDL0Qsb0JBQU07YUFDUDtXQUNGO1NBQ0Y7T0FDRjs7QUFFRCxVQUFNO2FBQUEsa0JBQUU7QUFDTixZQUFJLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNoRCxZQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRTtBQUNoRCwwQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7QUFDckMsMkJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1NBQzFDLENBQUMsQ0FBQztBQUNILFlBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDdkYsWUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7O0FBRWpDLGVBQ0U7O1lBQUssR0FBRyxFQUFDLFdBQVcsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEFBQUM7VUFDL0M7O2NBQU8sU0FBUyxFQUFFLFlBQVksQUFBQztZQUM3Qjs7O2NBQ0U7O2tCQUFJLEdBQUcsRUFBQyxRQUFRO2dCQUNiLGtCQUFrQjtnQkFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO2VBQ2pCO2FBQ0M7V0FDRjtTQUNKLENBQ1A7T0FDRjs7QUFFRCx5QkFBcUI7YUFBQSxpQ0FBRTtBQUNyQixZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUN0RCxpQkFBUSxvQkFBQyxxQkFBcUIsT0FBeUIsQ0FBRTtTQUMxRCxNQUFLLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFDO0FBQzFELGlCQUFRO0FBQUMsaUNBQXFCOztZQUFDLCtCQUFPLElBQUksRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxBQUFDLEdBQUU7V0FBd0IsQ0FBRTtTQUN2SCxNQUFJO0FBQ0gsaUJBQU8sSUFBSSxDQUFDO1NBQ2I7T0FDRjs7QUFFRCw2QkFBeUI7YUFBQSxxQ0FBRTtBQUN6QixZQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBQztBQUNwQyxlQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDO0FBQzNDLGdCQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FDcEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztXQUN4RztTQUNGLE1BQU07QUFDTCxjQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FDakIsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztTQUNyRztPQUNGOztBQUVELGFBQVM7YUFBQSxtQkFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUM7QUFDekMsWUFBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUM7QUFDcEMsY0FBSSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQSxJQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDO0FBQ2xILGVBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7QUFDM0MsZ0JBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUNwQixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFDLElBQUksRUFBQyxDQUFDLENBQUM7V0FDaEc7U0FDRixNQUFNO0FBQ0wsY0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQ2pCLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBQy9FO0FBQ0QsWUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ25CLFlBQUcsbUJBQW1CLEVBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDO09BQzNFOzs7O1NBNUZHLFdBQVc7R0FBUyxLQUFLLENBQUMsU0FBUzs7QUE4RnpDLFdBQVcsQ0FBQyxTQUFTLEdBQUc7QUFDdEIsZUFBYSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNyQyxRQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzVCLGdCQUFjLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ3BDLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNqQyxrQkFBZ0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDdEMsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUM5QixXQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0NBQ2hDLENBQUM7O0FBRUYsV0FBVyxDQUFDLFlBQVksR0FBRyxFQUMxQixDQUFDO2lCQUNhLFdBQVc7Ozs7Ozs7Ozs7Ozs7SUNqSG5CLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUMxQixLQUFLLDJCQUFNLFNBQVM7O0lBQ3BCLElBQUksMkJBQU0sUUFBUTs7SUFFbkIsaUJBQWlCO1dBQWpCLGlCQUFpQjswQkFBakIsaUJBQWlCOzs7Ozs7O1lBQWpCLGlCQUFpQjs7ZUFBakIsaUJBQWlCO0FBSXJCLHFCQUFpQjthQUFBLDJCQUFDLENBQUMsRUFBQztBQUNsQixZQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQUMsaUJBQU87U0FBQSxBQUMvQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixZQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBQyxLQUFLLENBQUMsUUFBUSxHQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDMUUsWUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVELFdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztPQUNuRDs7QUFFRCxxQkFBaUI7YUFBQSw2QkFBRTtBQUNqQixZQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7T0FDckU7O0FBRUQsVUFBTTthQUFBLGtCQUFFO0FBQ04sWUFBSSxPQUFPLEdBQUc7QUFDWixtQkFBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztBQUMvQixpQkFBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLE1BQU0sR0FBQyxJQUFJO0FBQ3RDLGVBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7U0FDeEIsQ0FBQzs7QUFFRixZQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBQyxHQUFHLElBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUMsYUFBYSxHQUFDLEVBQUUsQ0FBQSxBQUFDLENBQUM7QUFDOUUsZUFDRTs7WUFBSSxTQUFTLEVBQUUsT0FBTyxBQUFDLEVBQUMsS0FBSyxFQUFFLE9BQU8sQUFBQztVQUNyQzs7Y0FBSyxHQUFHLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyw4QkFBOEI7QUFDMUQscUJBQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1dBQU87U0FDdEUsQ0FDTjtPQUNGOzs7O1NBOUJHLGlCQUFpQjtHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWdDL0MsaUJBQWlCLENBQUMsU0FBUyxHQUFHO0FBQzVCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDakMsV0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNqQyxVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzlCLGdCQUFjLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ3BDLFlBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDaEMsT0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUMzQixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHO0FBQzdCLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDNUIsV0FBUyxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxPQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQzdCLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDOUIsaUJBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUc7Q0FDckMsQ0FBQzs7QUFFRixpQkFBaUIsQ0FBQyxZQUFZLEdBQUc7QUFDL0IsV0FBUyxFQUFFLE1BQU07QUFDakIsVUFBUSxFQUFFLEtBQUs7QUFDZixZQUFVLEVBQUUsU0FBUztBQUNyQixPQUFLLEVBQUUsS0FBSztBQUNaLFVBQVEsRUFBRSxJQUFJO0FBQ2QsZ0JBQWMsRUFBRSxTQUFTO0FBQ3pCLFFBQU0sRUFBRSxLQUFLO0FBQ2IsV0FBUyxFQUFFLEVBQUU7QUFDYixPQUFLLEVBQUUsSUFBSTtBQUNYLFVBQVEsRUFBRSxTQUFTO0FBQ25CLGlCQUFlLEVBQUUsRUFBRTtDQUNwQixDQUFDOztpQkFFYSxpQkFBaUI7Ozs7Ozs7Ozs7Ozs7OztJQ2xFekIsS0FBSywyQkFBTSxPQUFPOztJQUNsQixLQUFLLDJCQUFNLFNBQVM7O0lBRXJCLFFBQVE7V0FBUixRQUFROzBCQUFSLFFBQVE7Ozs7Ozs7WUFBUixRQUFROztlQUFSLFFBQVE7QUFFWixZQUFRO2FBQUEsa0JBQUMsQ0FBQyxFQUFDO0FBQ1QsWUFBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0csWUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO09BQzlFOztBQUVELFVBQU07YUFBQSxrQkFBRTs7QUFFTixZQUFJLEtBQUssR0FBQztBQUNSLGVBQUssRUFBQztBQUNKLDJCQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFDLElBQUk7V0FDekU7QUFDRCxtQkFBUyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFFLEVBQUU7U0FDbkMsQ0FBQzs7QUFFRixZQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQSxBQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUM7QUFDL0csaUJBQ0U7O3lCQUFRLEtBQUssSUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7V0FBTSxDQUM3RTtTQUNGLE1BQUk7QUFDSCxpQkFDRTs7WUFBUSxLQUFLO1lBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1dBQU0sQ0FDMUM7U0FDRjtPQUNGOzs7O1NBNUJHLFFBQVE7R0FBUyxLQUFLLENBQUMsU0FBUzs7QUE4QnRDLFFBQVEsQ0FBQyxTQUFTLEdBQUc7QUFDbkIsWUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxnQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNwQyxZQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLGFBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7Q0FDbEMsQ0FBQztBQUNGLFFBQVEsQ0FBQyxZQUFZLEdBQUc7QUFDdEIsWUFBVSxFQUFFLFNBQVM7Q0FDdEIsQ0FBQTtpQkFDYyxRQUFROzs7Ozs7O0lDMUNoQixTQUFTLDJCQUFNLGFBQWE7O0FBQ25DLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7O0FBRTlCLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDNUIsTUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQUUsV0FBTyxVQUFVLENBQUM7R0FBQSxBQUV6QyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7O0FBRXBDLE1BQUksQ0FBQyxHQUFHLENBQUMsVUFBUyxHQUFHLEVBQUU7QUFDckIsUUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFTLEdBQUcsRUFBRTtBQUNyQixVQUFJLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQyxnQkFBVSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDL0IsQ0FBQyxDQUFDOztBQUVILGNBQVUsSUFBSSxJQUFJLENBQUM7R0FDcEIsQ0FBQyxDQUFDOztBQUVILFNBQU8sVUFBVSxDQUFDO0NBQ25CLENBQUM7O0FBRUYsSUFBSSxTQUFTLEdBQUcsbUJBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDN0MsTUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QyxRQUFNLENBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSwwQkFBMEIsRUFBQyxDQUFDLEVBQUUsUUFBUSxJQUFJLGlCQUFpQixDQUFFLENBQUM7Q0FDckcsQ0FBQzs7aUJBRWEsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1p4QixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUssQ0FBQSxVQUFTLElBQUksRUFBRTtBQUN0QyxhQUFZLENBQUM7O0FBRWIsS0FBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDakYsU0FBTztFQUNQO0FBQ0QsS0FDRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVE7O0FBQUE7S0FFbkIsT0FBTyxHQUFHLG1CQUFXO0FBQ3RCLFNBQU8sSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztFQUMxQztLQUNDLFNBQVMsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQztLQUNwRSxpQkFBaUIsSUFBRyxVQUFVLElBQUksU0FBUyxDQUFBO0tBQzNDLEtBQUssR0FBRyxlQUFTLElBQUksRUFBRTtBQUN4QixNQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQyxNQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFCO0tBQ0MsU0FBUyxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0tBQ2hFLGFBQWEsR0FBRyxJQUFJLENBQUMsdUJBQXVCO0tBQzVDLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxvQkFBb0I7S0FDN0UsYUFBYSxHQUFHLHVCQUFTLEVBQUUsRUFBRTtBQUM5QixHQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFFLFlBQVc7QUFDakQsU0FBTSxFQUFFLENBQUM7R0FDVCxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ047S0FDQyxtQkFBbUIsR0FBRywwQkFBMEI7S0FDaEQsV0FBVyxHQUFHLENBQUM7Ozs7QUFBQTtLQUlmLHdCQUF3QixHQUFHLEdBQUc7QUFBQTtLQUM5QixNQUFNLEdBQUcsZ0JBQVMsSUFBSSxFQUFFO0FBQ3pCLE1BQUksT0FBTyxHQUFHLG1CQUFXO0FBQ3hCLE9BQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFOztBQUM3QixXQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsTUFBTTs7QUFDTixRQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDZDtHQUNELENBQUM7QUFDRixNQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDaEIsVUFBTyxFQUFFLENBQUM7R0FDVixNQUFNO0FBQ04sYUFBVSxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0dBQzlDO0VBQ0Q7S0FDQyxRQUFRLEdBQUcsa0JBQVMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7QUFDcEQsYUFBVyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckMsTUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUMzQixTQUFPLENBQUMsRUFBRSxFQUFFO0FBQ1gsT0FBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxPQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUNuQyxRQUFJO0FBQ0gsYUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO0tBQzdDLENBQUMsT0FBTyxFQUFFLEVBQUU7QUFDWixrQkFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCO0lBQ0Q7R0FDRDtFQUNEO0tBQ0MsUUFBUSxHQUFHLGtCQUFTLElBQUksRUFBRTs7QUFFM0IsTUFBSSw0RUFBNEUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2pHLFVBQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7R0FDckQ7QUFDRCxTQUFPLElBQUksQ0FBQztFQUNaO0tBQ0MsU0FBUyxHQUFHLG1CQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQy9DLE1BQUksQ0FBQyxXQUFXLEVBQUU7QUFDakIsT0FBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUN0Qjs7QUFFRCxNQUNHLFNBQVMsR0FBRyxJQUFJO01BQ2hCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSTtNQUNoQixZQUFZLEdBQUcsS0FBSztNQUNwQixVQUFVO01BQ1YsV0FBVztNQUNYLFlBQVksR0FBRyx3QkFBVztBQUMzQixXQUFRLENBQUMsU0FBUyxFQUFFLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQ3JFOztBQUFBO01BRUMsUUFBUSxHQUFHLG9CQUFXO0FBQ3ZCLE9BQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUU7O0FBRWxFLFFBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7QUFDOUIsVUFBTSxDQUFDLFNBQVMsR0FBRyxZQUFXO0FBQzdCLFNBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDL0IsZ0JBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLGNBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxpQkFBWSxFQUFFLENBQUM7S0FDZixDQUFDO0FBQ0YsVUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixhQUFTLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDdEMsV0FBTztJQUNQOztBQUVELE9BQUksWUFBWSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2hDLGNBQVUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0M7QUFDRCxPQUFJLFdBQVcsRUFBRTtBQUNoQixlQUFXLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFDdkMsTUFBTTtBQUNOLFFBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLFFBQUksT0FBTyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUU7O0FBRXRDLFNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQTtLQUMvQjtJQUNEO0FBQ0QsWUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3RDLGVBQVksRUFBRSxDQUFDO0FBQ2YsU0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0dBQ25CO01BQ0MsU0FBUyxHQUFHLG1CQUFTLElBQUksRUFBRTtBQUM1QixVQUFPLFlBQVc7QUFDakIsUUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDNUMsWUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNuQztJQUNELENBQUM7R0FDRjtNQUNDLG1CQUFtQixHQUFHLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDO01BQ3RELEtBQUssQ0FDUDtBQUNELFdBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxNQUFJLENBQUMsSUFBSSxFQUFFO0FBQ1YsT0FBSSxHQUFHLFVBQVUsQ0FBQztHQUNsQjtBQUNELE1BQUksaUJBQWlCLEVBQUU7QUFDdEIsYUFBVSxHQUFHLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxZQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUM1QixZQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMxQixhQUFVLENBQUMsWUFBVztBQUNyQixTQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakIsZ0JBQVksRUFBRSxDQUFDO0FBQ2YsVUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25CLGFBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDLENBQUM7QUFDSCxVQUFPO0dBQ1A7Ozs7OztBQU1ELE1BQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLG1CQUFtQixFQUFFO0FBQ3hELFFBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDdkMsT0FBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDM0QsZUFBWSxHQUFHLElBQUksQ0FBQztHQUNwQjs7OztBQUlELE1BQUksYUFBYSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDekMsT0FBSSxJQUFJLFdBQVcsQ0FBQztHQUNwQjtBQUNELE1BQUksSUFBSSxLQUFLLG1CQUFtQixJQUFJLGFBQWEsRUFBRTtBQUNsRCxjQUFXLEdBQUcsSUFBSSxDQUFDO0dBQ25CO0FBQ0QsTUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNaLFdBQVEsRUFBRSxDQUFDO0FBQ1gsVUFBTztHQUNQO0FBQ0QsYUFBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDekIsUUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxVQUFTLEVBQUUsRUFBRTtBQUMxRCxLQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFVBQVMsR0FBRyxFQUFFO0FBQzFFLFFBQUksSUFBSSxHQUFHLGdCQUFXO0FBQ3JCLFFBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxVQUFTLElBQUksRUFBRTtBQUMvRCxVQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFTLE1BQU0sRUFBRTtBQUM1QyxhQUFNLENBQUMsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQ25DLG1CQUFXLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekMsaUJBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxnQkFBUSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsY0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2IsQ0FBQztBQUNGLGFBQU0sQ0FBQyxPQUFPLEdBQUcsWUFBVztBQUMzQixZQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ3pCLFlBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsU0FBUyxFQUFFO0FBQ25DLGlCQUFRLEVBQUUsQ0FBQztTQUNYO1FBQ0QsQ0FBQztBQUNGLHdDQUFpQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBUyxLQUFLLEVBQUU7QUFDcEUsY0FBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztBQUNILGFBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkIsZ0JBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBVztBQUM1QixjQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDZixpQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3RDLENBQUM7QUFDRixnQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO09BQ3pDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztNQUNkLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNkLENBQUM7QUFDRixPQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsRUFBRSxTQUFTLENBQUMsVUFBUyxJQUFJLEVBQUU7O0FBRTNELFNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNkLFNBQUksRUFBRSxDQUFDO0tBQ1AsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxVQUFTLEVBQUUsRUFBRTtBQUMxQixTQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRTtBQUNqQyxVQUFJLEVBQUUsQ0FBQztNQUNQLE1BQU07QUFDTixjQUFRLEVBQUUsQ0FBQztNQUNYO0tBQ0QsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7R0FDZCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7RUFDZDtLQUNDLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUztLQUM5QixNQUFNLEdBQUcsZ0JBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDNUMsU0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0VBQzlDLENBQ0Q7O0FBRUQsS0FBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFO0FBQ25FLFNBQU8sVUFBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN4QyxPQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2pCLFFBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEI7QUFDRCxVQUFPLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDO0dBQzVELENBQUM7RUFDRjs7QUFFRCxTQUFRLENBQUMsS0FBSyxHQUFHLFlBQVc7QUFDM0IsTUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFdBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QyxVQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQzdCLENBQUM7QUFDRixTQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLFNBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLFNBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDOztBQUVsQixTQUFRLENBQUMsS0FBSyxHQUNkLFFBQVEsQ0FBQyxZQUFZLEdBQ3JCLFFBQVEsQ0FBQyxVQUFVLEdBQ25CLFFBQVEsQ0FBQyxPQUFPLEdBQ2hCLFFBQVEsQ0FBQyxPQUFPLEdBQ2hCLFFBQVEsQ0FBQyxPQUFPLEdBQ2hCLFFBQVEsQ0FBQyxVQUFVLEdBQ2xCLElBQUksQ0FBQzs7QUFFTixRQUFPLE1BQU0sQ0FBQztDQUNkLENBQUEsQ0FDRyxPQUFPLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxJQUNuQyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxJQUN2QyxVQUFLLE9BQU8sQ0FDZixBQUFDLENBQUM7Ozs7O0FBS0gsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtBQUNuRCxPQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDaEMsTUFBTSxJQUFJLEFBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQU0sTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLEFBQUMsRUFBRTtBQUNyRixPQUFNLENBQUMsRUFBRSxFQUFFLFlBQVc7QUFDcEIsU0FBTyxNQUFNLENBQUM7RUFDZixDQUFDLENBQUM7Q0FDSjs7Ozs7Ozs7Ozs7Ozs7O0lDN1FNLEtBQUssMkJBQU0sT0FBTzs7SUFDbEIsUUFBUSwyQkFBTSxZQUFZOztJQUUzQixVQUFVO0FBRUgsV0FGUCxVQUFVLENBRUYsS0FBSyxFQUFFOzBCQUZmLFVBQVU7O0FBR2QsK0JBSEksVUFBVSw2Q0FHUixLQUFLLEVBQUU7R0FDYjs7WUFKSSxVQUFVOztlQUFWLFVBQVU7QUFNZCxnQkFBWTthQUFBLHNCQUFDLENBQUMsRUFBQztBQUNiLFNBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNuQixZQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO09BQzdDOztBQUVELFVBQU07YUFBQSxrQkFBRTtBQUNOLFlBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBQyxJQUFJLENBQUM7QUFDeEQsZUFDSTs7WUFBSSxTQUFTLEVBQUUsT0FBTyxBQUFDO1VBQUM7O2NBQUcsSUFBSSxFQUFDLEdBQUcsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7V0FBSztTQUFLLENBQzVHO09BQ0Y7Ozs7U0FoQkcsVUFBVTtHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWtCeEMsVUFBVSxDQUFDLFNBQVMsR0FBRztBQUNyQixZQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2hDLFFBQU0sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7Q0FDN0IsQ0FBQzs7aUJBRWEsVUFBVTs7Ozs7Ozs7Ozs7Ozs7O0lDMUJsQixLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLFVBQVUsMkJBQU0saUJBQWlCOztJQUNqQyxLQUFLLDJCQUFNLFVBQVU7O0lBRXRCLGNBQWM7QUFFUCxXQUZQLGNBQWMsQ0FFTixLQUFLLEVBQUU7MEJBRmYsY0FBYzs7QUFHaEIsK0JBSEUsY0FBYyw2Q0FHVixLQUFLLEVBQUU7QUFDYixRQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsaUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7QUFDaEMsaUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7S0FDcEMsQ0FBQztHQUNIOztZQVJHLGNBQWM7O2VBQWQsY0FBYztBQVVsQixjQUFVO2FBQUEsb0JBQUMsSUFBSSxFQUFFO0FBQ2YsWUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtBQUMxQixjQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFLE1BQU0sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtBQUNsQyxjQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDcEcsTUFBTSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO0FBQ2xDLGNBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3hCLE1BQU0sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtBQUNuQyxjQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1YsTUFBTTtBQUNMLGNBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7O0FBRUQsWUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7QUFDbEMsY0FBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQ25DLGNBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JEO09BQ0Y7O0FBRUQsNkJBQXlCO2FBQUEsbUNBQUMsU0FBUyxFQUFFO0FBQ25DLFlBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDckIsY0FBSSxTQUFTLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7QUFDL0MsZ0JBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix5QkFBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRO0FBQy9CLHlCQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFDbkMsQ0FBQyxDQUFDO1dBQ0o7U0FDRjtPQUNGOztBQUdELHFCQUFpQjthQUFBLDJCQUFDLENBQUMsRUFBRTtBQUNuQixTQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7O0FBRW5CLFlBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELFlBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO0FBQ3hDLGNBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUM5RCxjQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRTNDLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix1QkFBVyxFQUFFLFVBQVU7QUFDdkIsdUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7V0FDcEMsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDM0Q7T0FDRjs7QUFFRCxVQUFNO2FBQUEsa0JBQUc7OztBQUNQLFlBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFFLFlBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMvQixZQUFJLGFBQWEsR0FBRztBQUNsQixtQkFBUyxFQUFFLEtBQUs7QUFBQSxTQUNqQixDQUFBOztBQUVELFlBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFdBQVcsRUFBSztBQUNwRSxpQkFDRTs7Y0FBSSxHQUFHLEVBQUUsV0FBVyxBQUFDLEVBQUMsSUFBSSxFQUFDLGNBQWM7WUFDdkM7O2dCQUFHLElBQUksRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLE9BQU8sRUFBRSxNQUFLLGlCQUFpQixDQUFDLElBQUksT0FBTSxBQUFDO2NBQUUsV0FBVzthQUFLO1dBQ3BHLENBQ0w7U0FDSCxDQUFDLENBQUM7O0FBRUgsZUFDRTs7WUFBSyxTQUFTLEVBQUMsS0FBSztVQUNsQjs7Y0FBSyxTQUFTLEVBQUMsVUFBVTtZQUN2Qjs7Z0JBQUssU0FBUyxFQUFDLFVBQVU7Y0FDdkI7O2tCQUFRLFNBQVMsRUFBQyxpQ0FBaUMsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsZUFBWSxVQUFVO0FBQ2xHLG1DQUFjLE1BQU07Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFDdkIsOEJBQU0sU0FBUyxFQUFDLE9BQU8sR0FBRTtlQUNsQjtjQUNUOztrQkFBSSxTQUFTLEVBQUMsZUFBZSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsbUJBQWdCLGNBQWM7Z0JBQ3JFLGVBQWU7ZUFDYjthQUNEO1dBQ0Y7VUFDTjs7Y0FBSyxTQUFTLEVBQUMsVUFBVTtZQUN2Qjs7Z0JBQUksU0FBUyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUUsYUFBYSxBQUFDO2NBQzdDLFFBQVE7YUFDTjtXQUNEO1NBQ0YsQ0FDUDtPQUNGOztBQUVELFlBQVE7YUFBQSxvQkFBRztBQUNULFlBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM1QixlQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDL0IsY0FBSSxRQUFRLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0FBQy9DLGlCQUNFO0FBQUMsc0JBQVU7Y0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxBQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksQUFBQztZQUFFLElBQUk7V0FBYyxDQUNyRztTQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDVjs7QUFFRCxZQUFRO2FBQUEsb0JBQUc7QUFDVCxZQUFJLFNBQVMsR0FBRyxDQUFDO1lBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRTdDLGlCQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVGLGVBQU8sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDOztBQUVwRCxZQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzdCLGlCQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUMxQixtQkFBUyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDckQ7QUFDRCxZQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLGFBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsY0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekI7QUFDRCxhQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QixhQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QixlQUFPLEtBQUssQ0FBQztPQUNkOztBQUVELGtCQUFjO2FBQUEsMEJBQUc7QUFDZixlQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO09BQy9COztBQUVELGtCQUFjO2FBQUEsMEJBQUc7QUFDZixlQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO09BQy9COzs7O1NBbklHLGNBQWM7R0FBUyxLQUFLLENBQUMsU0FBUzs7QUFxSTVDLGNBQWMsQ0FBQyxTQUFTLEdBQUc7QUFDekIsVUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUNoQyxhQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQ25DLFVBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDaEMsWUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNoQyxpQkFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUN0QyxnQkFBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUN0QyxRQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQzdCLENBQUM7O0FBRUYsY0FBYyxDQUFDLFlBQVksR0FBRztBQUM1QixhQUFXLEVBQUUsS0FBSyxDQUFDLGFBQWE7Q0FDakMsQ0FBQzs7aUJBRWEsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3ZKdEIsS0FBSywyQkFBTSxVQUFVOztBQUM1QixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDOztBQUVsRCxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDOUMsT0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM1QixLQUFHLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBSztBQUNqQixRQUFJLFFBQVEsRUFBRTtBQUNaLGFBQU8sUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUIsTUFBTTtBQUNMLFVBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7QUFDNUIsZUFBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFJLEFBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBSSxDQUFDLEdBQUcsQ0FBQyxBQUFDLENBQUM7T0FDbkYsTUFBTTtBQUNMLGVBQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBSSxBQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxDQUFDO09BQ25GO0tBQ0Y7R0FDRixDQUFDLENBQUM7O0FBRUgsU0FBTyxHQUFHLENBQUM7Q0FDWjs7SUFFWSxZQUFZLFdBQVosWUFBWTtBQUNaLFdBREEsWUFBWSxDQUNYLElBQUksRUFBRTswQkFEUCxZQUFZOztBQUVyQiwrQkFGUyxZQUFZLDZDQUVmLElBQUksRUFBRTtBQUNaLFFBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0dBQ2xCOztZQUpVLFlBQVk7O2VBQVosWUFBWTtBQU12QixXQUFPO2FBQUEsaUJBQUMsSUFBSSxFQUFFO0FBQ1osWUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDM0I7O0FBRUQsU0FBSzthQUFBLGlCQUFHO0FBQ04sWUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7T0FDbEI7O0FBRUQsV0FBTzthQUFBLG1CQUFHO0FBQ1IsZUFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO09BQ2xCOzs7O1NBaEJVLFlBQVk7R0FBUyxZQUFZOztJQW1CakMsY0FBYyxXQUFkLGNBQWM7QUFFZCxXQUZBLGNBQWMsQ0FFYixJQUFJLEVBQUU7MEJBRlAsY0FBYzs7QUFHdkIsUUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsUUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUM5QixRQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN4QixRQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUN0QixRQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQixRQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNsQixRQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztHQUNyQjs7ZUFiVSxjQUFjO0FBZXpCLFlBQVE7YUFBQSxrQkFBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtBQUMxRCxZQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUN6QixZQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztBQUMzQyxZQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztPQUN0Qjs7QUFFRCxXQUFPO2FBQUEsaUJBQUMsSUFBSSxFQUFFO0FBQ1osWUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsWUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLGNBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsY0FBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1RDtBQUNELFlBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNoQixjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdkQ7T0FDRjs7QUFFRCxxQkFBaUI7YUFBQSwyQkFBQyxlQUFlLEVBQUU7QUFDakMsWUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7T0FDakM7O0FBRUQsc0JBQWtCO2FBQUEsOEJBQUc7QUFDbkIsZUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDO09BQ3RCOztBQUVELHlCQUFxQjthQUFBLGlDQUFHO0FBQ3RCLFlBQUksSUFBSSxDQUFDLFVBQVU7QUFBRSxpQkFBTyxJQUFJLENBQUMsWUFBWSxDQUFDOztBQUN6QyxpQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUE7T0FDdkI7O0FBRUQsUUFBSTthQUFBLGNBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtBQUNyQixZQUFJLENBQUMsT0FBTyxHQUFHO0FBQ2IsZUFBSyxFQUFFLEtBQUs7QUFDWixtQkFBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQzs7QUFFRixZQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3RELFlBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqRCwwQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzs7QUFFM0UsZUFBTyxJQUFJLENBQUM7T0FDYjs7QUFFRCxRQUFJOzs7Ozs7Ozs7OztTQUFBLFVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN0QixZQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUMxQyxZQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBLEFBQUMsQ0FBQztBQUMxRCxlQUFPLElBQUksQ0FBQztPQUNiOztBQUVELFFBQUk7YUFBQSxjQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO0FBQ2hDLFlBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDdEQsWUFBSSxXQUFXLFlBQUEsQ0FBQztBQUNoQixZQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQzFCLDRCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNqRCxxQkFBVyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzRCxNQUFNO0FBQ0wsNEJBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3RFLHFCQUFXLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hGO0FBQ0QsWUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQy9CLGdCQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssV0FBVyxFQUFFO0FBQ3RDLGlCQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUN4QztXQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDVjtBQUNELGVBQU8sSUFBSSxDQUFDO09BQ2I7O0FBRUQsT0FBRzthQUFBLGFBQUMsTUFBTSxFQUFFO0FBQ1YsWUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN2QyxnQkFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLHdCQUF3QixDQUFDO1NBQ2hEO0FBQ0QsWUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUN0RCwwQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDeEMsY0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDM0Qsa0JBQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztXQUN2RTtTQUNGLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRVQsMEJBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLFlBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNuQixjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtPQUNGOztBQUVELFVBQU07YUFBQSxnQkFBQyxNQUFNLEVBQUU7QUFDYixZQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3RELFlBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUNwRCxpQkFBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNqRCxFQUFFLElBQUksQ0FBQyxDQUFDOztBQUVULFlBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNuQixjQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQzFDLG1CQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1dBQ2pELEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDVCxjQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztTQUM1QixNQUFNO0FBQ0wsY0FBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7U0FDcEI7T0FDRjs7QUFFRCxVQUFNO2FBQUEsZ0JBQUMsU0FBUyxFQUFFO0FBQ2hCLFlBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3RDLGNBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLGNBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCLE1BQU07QUFDTCxjQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixjQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQ2xELGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsaUJBQUssSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFO0FBQ3pCLGtCQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDakYscUJBQUssR0FBRyxLQUFLLENBQUM7QUFDZCxzQkFBTTtlQUNQO2FBQ0Y7QUFDRCxtQkFBTyxLQUFLLENBQUM7V0FDZCxDQUFDLENBQUM7QUFDSCxjQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtPQUNGOztBQUVELFVBQU07YUFBQSxnQkFBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUU7QUFDcEMsWUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQzVCLGNBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLGNBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCLE1BQU07QUFDTCxjQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUM3QixjQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDekIsY0FBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUNsRCxnQkFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDOztBQUVsQixnQkFBSSxpQkFBaUIsRUFBRTtBQUNyQiw2QkFBZSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekMsTUFBTTtBQUNMLDZCQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xDOztBQUVELGlCQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtBQUNuQixrQkFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDWiwrQkFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFTLElBQUksRUFBRTtBQUNyQyxzQkFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3hFLHlCQUFLLEdBQUcsSUFBSSxDQUFDO21CQUNkO2lCQUNGLENBQUMsQ0FBQztBQUNILG9CQUFJLEtBQUssRUFBRSxNQUFNO2VBQ2xCO2FBQ0Y7QUFDRCxtQkFBTyxLQUFLLENBQUM7V0FDZCxDQUFDLENBQUM7QUFDSCxjQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtPQUNGOztBQUVELDZCQUF5QjthQUFBLHFDQUFHO0FBQzFCLFlBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3pDLGVBQU8sS0FBSyxDQUFDO09BQ2Q7O0FBRUQsT0FBRzthQUFBLGVBQUc7QUFDSixZQUFJLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs7QUFFekMsWUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBRSxpQkFBTyxLQUFLLENBQUM7U0FBQSxBQUVwQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDekMsaUJBQU8sS0FBSyxDQUFDO1NBQ2QsTUFBTTtBQUNMLGNBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixlQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzRCxrQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixnQkFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUMsTUFBTTtXQUNqQztBQUNELGlCQUFPLE1BQU0sQ0FBQztTQUNmO09BQ0Y7O0FBRUQsZUFBVzthQUFBLHVCQUFHO0FBQ1osZUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDO09BQ3RCOztBQUVELGNBQVU7YUFBQSxzQkFBRztBQUNYLGVBQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO09BQzVDOztBQUVELGlCQUFhO2FBQUEseUJBQUc7QUFDZCxlQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7T0FDOUQ7O0FBRUQsZ0JBQVk7YUFBQSx3QkFBRztBQUNiLGVBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDbEMsaUJBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQixFQUFFLElBQUksQ0FBQyxDQUFDO09BQ1Y7Ozs7U0FsTlUsY0FBYzs7O0FBcU4zQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7SUM1UE0sS0FBSywyQkFBTSxPQUFPOztJQUNsQixRQUFRLDJCQUFNLFlBQVk7O0lBQzFCLEtBQUssMkJBQU0sVUFBVTs7SUFDckIsTUFBTSwyQkFBTSxXQUFXOztJQUN2QixRQUFRLDJCQUFNLG9CQUFvQjs7SUFFbkMsT0FBTztBQUVBLFdBRlAsT0FBTyxDQUVDLEtBQUssRUFBRTswQkFGZixPQUFPOztBQUdYLCtCQUhJLE9BQU8sNkNBR0wsS0FBSyxFQUFFO0FBQ1gsUUFBSSxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUM7QUFDckIsUUFBSSxDQUFDLEtBQUssR0FBRztBQUNYLHdCQUFrQixFQUFFLElBQUk7QUFDeEIsbUJBQWEsRUFBQyxJQUFJO0FBQ2xCLGlCQUFXLEVBQUMsS0FBSztLQUNsQixDQUFDO0dBQ0g7O1lBVkcsT0FBTzs7ZUFBUCxPQUFPO0FBV1gsd0JBQW9CO2FBQUEsZ0NBQUU7QUFDcEIsWUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO09BQ3JCOztBQUNELGdCQUFZOzs7Ozs7Ozs7OztTQUFBLFlBQUc7QUFDYixZQUFHLElBQUksQ0FBQyxhQUFhLEVBQUM7QUFDcEIsc0JBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDakMsY0FBSSxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUM7U0FDdEI7T0FDRjs7QUFFRCxxQkFBaUI7YUFBQSw2QkFBRTtBQUNqQixZQUFJLEVBQUUsR0FBQyxJQUFJO1lBQUMsTUFBTSxHQUFHLEVBQUU7WUFBQyxPQUFPLEdBQUMsSUFBSTtZQUFDLFNBQVM7WUFBQyxPQUFPO1lBQUMsYUFBYSxHQUFDLEVBQUUsQ0FBQztBQUN4RSxZQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBUyxNQUFNLEVBQUUsQ0FBQyxFQUFDO0FBQzVDLGNBQUcsTUFBTSxDQUFDLFNBQVMsRUFBQzs7QUFDbEIscUJBQVMsR0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLElBQUUsVUFBVSxHQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRSxZQUFZLEdBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQUFBQyxDQUFDO1dBQ3RHLE1BQUk7QUFDSCxnQkFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLHFCQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzs7QUFFdEIsZ0JBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxVQUFVLEVBQUM7QUFDdkQsa0JBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLHVCQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlDOztBQUVELGdCQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUM7O0FBQzVDLHFCQUFPLEdBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDN0Msa0JBQUcsT0FBTyxLQUFHLElBQUksRUFBQztBQUNoQix1QkFBTyxHQUFDLEtBQUssQ0FBQztBQUNkLDZCQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFDLE9BQU8sQ0FBQztlQUNyQzthQUNGO1dBQ0Y7O0FBRUQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUUsU0FBUyxDQUFDO1NBQ2pDLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRVQsWUFBRyxPQUFPLEVBQUM7QUFDVCxpQkFBTyxNQUFNLENBQUM7U0FDZixNQUFJO0FBQ0gsWUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDOztBQUVsQixjQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxXQUFXLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQzs7QUFFOUQsWUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDOztBQUVuRyxZQUFFLENBQUMsYUFBYSxHQUFDLFVBQVUsQ0FBQyxZQUFVO0FBQUMsY0FBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1dBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQztBQUMvRSxpQkFBTyxJQUFJLENBQUM7U0FDYjtPQUNGOztBQUVELHNCQUFrQjthQUFBLDRCQUFDLENBQUMsRUFBQztBQUNuQixZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUN0QyxZQUFHLENBQUMsTUFBTSxFQUFDOztBQUNULGlCQUFPO1NBQ1I7QUFDRCxZQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QyxZQUFHLEdBQUcsRUFBRTtBQUNOLGNBQUksRUFBRSxHQUFDLElBQUksQ0FBQztBQUNaLFlBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDOUQsWUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDOztBQUVsQixZQUFFLENBQUMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxhQUFhLEVBQUMsK0NBQStDLEVBQUMsQ0FBQyxDQUFDOztBQUU5RixZQUFFLENBQUMsYUFBYSxHQUFDLFVBQVUsQ0FBQyxZQUFVO0FBQUMsY0FBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1dBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQztTQUNoRixNQUFLOztBQUVKLGNBQUksQ0FBQyxRQUFRLENBQUM7QUFDWix5QkFBYSxFQUFDLElBQUk7QUFDbEIsdUJBQVcsRUFBQyxLQUFLO1dBQ2xCLENBQUMsQ0FBQzs7QUFFSCxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUV4QjtPQUNGOztBQUVELHlCQUFxQjthQUFBLCtCQUFDLENBQUMsRUFBQztBQUN0QixZQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO09BQ3hCOztBQUVELGtCQUFjO2FBQUEsd0JBQUMsQ0FBQyxFQUFDO0FBQ2YsWUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7T0FDMUM7O0FBRUQsZUFBVzthQUFBLHFCQUFDLENBQUMsRUFBQztBQUNaLFlBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7T0FDNUM7O0FBRUQsbUJBQWU7YUFBQSwyQkFBRztBQUNoQixZQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO09BQzFCOztBQUVELFVBQU07YUFBQSxrQkFBRTtBQUNOLFlBQUksY0FBYyxHQUFHLG1CQUFtQixHQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDOUQsWUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQ2pDOztZQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxBQUFDLEVBQUMsU0FBUyxFQUFDLGNBQWMsRUFBQyxlQUFZLE9BQU8sRUFBQyxlQUFhLEdBQUcsR0FBQyxjQUFjLEFBQUM7VUFDcEksMkJBQUcsU0FBUyxFQUFDLDBCQUEwQixHQUFLOztTQUFhLEdBQUMsSUFBSSxDQUFDOztBQUV2RSxZQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FDakM7O1lBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsaUJBQWlCLEVBQUMsZUFBWSxTQUFTLEVBQUMsa0JBQWUsT0FBTyxFQUFDLEtBQUssRUFBQyxtQkFBbUI7QUFDdEgsbUJBQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO1VBQy9DLDJCQUFHLFNBQVMsRUFBQywyQkFBMkIsR0FBSzs7U0FDdEMsR0FBQyxJQUFJLENBQUM7QUFDckIsWUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQzNDLCtCQUFPLElBQUksRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBQyxRQUFRLEFBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUMsR0FBRSxHQUFDLElBQUksQ0FBQztBQUNuSixZQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLEdBQUMsSUFBSSxDQUFDO0FBQ25GLFlBQUksWUFBWSxHQUFHO0FBQ2pCLGlCQUFPLEVBQUUsTUFBTTtBQUNmLHNCQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDOztBQUVGLFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUNwQzs7WUFBUSxJQUFJLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxpQkFBaUIsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEFBQUM7VUFDdkYsMkJBQUcsU0FBUyxFQUFDLDRCQUE0QixHQUFLOztTQUF1QixHQUFHLElBQUksQ0FBQzs7QUFFdkYsZUFDRTs7O1VBQ0U7O2NBQUssU0FBUyxFQUFDLHdCQUF3QixFQUFDLElBQUksRUFBQyxPQUFPLEVBQUMsY0FBVyxLQUFLO1lBQ2xFLFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztXQUNOO1VBQ0wsZUFBZTtVQUNoQixvQkFBQyxRQUFRLElBQUMsR0FBRyxFQUFDLFVBQVUsR0FBWTtVQUNuQyxLQUFLO1NBQ0YsQ0FDUDtPQUNGOztBQUVELHdCQUFvQjthQUFBLDhCQUFDLGNBQWMsRUFBQztBQUNsQyxZQUFJLGFBQWEsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBRSxFQUFFLENBQUM7QUFDL0MsWUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVMsTUFBTSxFQUFFLENBQUMsRUFBQztBQUN6RCxjQUFJLFFBQVEsR0FBQyxNQUFNLENBQUMsUUFBUTtjQUN4QixNQUFNLEdBQUMsTUFBTSxDQUFDLE1BQU07Y0FDcEIsSUFBSSxHQUFDLEVBQUMsR0FBRyxFQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxRQUFRLENBQUMsV0FBVyxHQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUMsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDOztBQUVoRyxjQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUM7O0FBQ2xCLG1CQUFPLElBQUksQ0FBQztXQUNiO0FBQ0QsY0FBSSxLQUFLLEdBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRTs7Y0FBTSxTQUFTLEVBQUMsc0JBQXNCO1lBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7V0FBUSxHQUFFLElBQUksQ0FBQzs7OztBQUl6SCxpQkFDRTs7Y0FBSyxTQUFTLEVBQUMsWUFBWSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxBQUFDO1lBQzVDOzs7Y0FBUSxNQUFNLENBQUMsSUFBSTthQUFTO1lBQzNCLE1BQU0sQ0FBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxFQUFFLENBQUM7WUFDL0IsS0FBSztXQUNGLENBQ047U0FDSCxDQUFDLENBQUM7QUFDSCxZQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRyxjQUFjLEVBQUM7QUFDekQsY0FBSSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtBQUFBLFNBQ3RELENBQUMsQ0FBQztBQUNILFlBQUksV0FBVyxHQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsVUFBVSxFQUFDO0FBQ2pELG9CQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztBQUNqQyxpQkFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQyxDQUFDO0FBQ0gsZUFDRTs7WUFBSyxHQUFHLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEFBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxRQUFRO1VBQ2xFOztjQUFLLFNBQVMsRUFBRSxXQUFXLEFBQUM7WUFDMUI7O2dCQUFLLFNBQVMsRUFBQyxlQUFlO2NBQzVCOztrQkFBSyxTQUFTLEVBQUMsY0FBYztnQkFDM0I7O29CQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxnQkFBYSxPQUFPLEVBQUMsY0FBVyxPQUFPO2tCQUFDOztzQkFBTSxlQUFZLE1BQU07O21CQUFlO2lCQUFTO2dCQUNoSTs7b0JBQUksU0FBUyxFQUFDLGFBQWE7O2lCQUFnQjtlQUN2QztjQUNOOztrQkFBSyxTQUFTLEVBQUMsWUFBWTtnQkFDekI7O29CQUFNLEdBQUcsRUFBQyxNQUFNO2tCQUNmLFVBQVU7aUJBQ0o7ZUFDSDtjQUNOOztrQkFBSyxTQUFTLEVBQUMsY0FBYztnQkFDM0I7O29CQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLGlCQUFpQixFQUFDLGdCQUFhLE9BQU87O2lCQUFlO2dCQUNyRjs7b0JBQVEsSUFBSSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDOztpQkFBYztlQUN0RzthQUNGO1dBQ0Y7U0FDRixDQUNQO09BQ0Y7Ozs7U0E5TEcsT0FBTztHQUFTLEtBQUssQ0FBQyxTQUFTOztBQWdNckMsT0FBTyxDQUFDLFNBQVMsR0FBRztBQUNsQixVQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzlCLFdBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDL0IsY0FBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUNsQyxjQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQ2xDLGNBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUk7QUFDbEMsU0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUM5QixtQkFBaUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07Q0FDMUMsQ0FBQzs7QUFFRixPQUFPLENBQUMsWUFBWSxHQUFHO0FBQ3JCLGNBQVksRUFBRSxLQUFLO0FBQ25CLGNBQVksRUFBRSxLQUFLO0FBQ25CLGNBQVksRUFBRSxLQUFLO0NBQ3BCLENBQUE7aUJBQ2MsT0FBTzs7Ozs7OztJQ3JOZixLQUFLLDJCQUFNLE9BQU87O0lBQ2xCLEtBQUssMkJBQU0sU0FBUzs7SUFDcEIsUUFBUSwyQkFBTSxZQUFZOztpQkFDbEI7O0FBRWIsaUJBQWUsRUFBQSx5QkFBQyxLQUFLLEVBQUU7QUFDckIsUUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxRQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztBQUN6QixRQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDO0FBQ3hELFFBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsU0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDMUIsU0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO0FBQ2hDLFFBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsV0FBTyxJQUFJLENBQUM7R0FDYjs7QUFFRCxzQkFBb0IsRUFBQSw4QkFBQyxLQUFLLEVBQUM7QUFDekIsUUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRTtBQUNqQyxjQUFVLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUTtLQUNsQyxDQUFDLENBQUM7QUFDSCxXQUNFOztRQUFNLFNBQVMsRUFBRSxVQUFVLEFBQUM7TUFDMUIsOEJBQU0sU0FBUyxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLEFBQUMsR0FBUTtLQUN2RCxDQUNQO0dBQ0g7O0FBRUQsbUJBQWlCLEVBQUEsNkJBQUU7QUFDakIsUUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxTQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDM0IsU0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDOztBQUU3QixRQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLFNBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNsQyxTQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDeEIsU0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFNBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztBQUNsQyxTQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDNUIsU0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQzdCLFNBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUNoQyxTQUFLLENBQUMsV0FBVyxDQUFFLEtBQUssQ0FBQyxDQUFDOztBQUUxQixZQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBRSxLQUFLLENBQUMsQ0FBQztBQUNsQyxRQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0FBQzNCLFNBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUNoQyxRQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0FBQzNCLFFBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7QUFFckMsWUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUUsS0FBSyxDQUFDLENBQUM7O0FBRWxDLFdBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBRTtHQUNsQjs7Q0FFRjs7Ozs7OztJQ3JETSxjQUFjLDJCQUFNLGtCQUFrQjs7SUFDdEMsaUJBQWlCLDJCQUFNLHFCQUFxQjs7SUFDM0MsWUFBWSxXQUFPLHdCQUF3QixFQUEzQyxZQUFZOztBQUVwQixJQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBQztBQUMvQixRQUFNLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUN2QyxRQUFNLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7Q0FDOUM7aUJBQ2M7QUFDYixnQkFBYyxFQUFkLGNBQWM7QUFDZCxtQkFBaUIsRUFBakIsaUJBQWlCO0FBQ2pCLGNBQVksRUFBWixZQUFZO0NBQ2IiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Qm9vdHN0cmFwVGFibGUsIFRhYmxlSGVhZGVyQ29sdW1ufSBmcm9tICdyZWFjdC1ib290c3RyYXAtdGFibGUnO1xuXG52YXIgcHJvZHVjdHMgPSBbXTtcblxuZnVuY3Rpb24gYWRkUHJvZHVjdHMocXVhbnRpdHkpIHtcbiAgdmFyIHN0YXJ0SWQgPSBwcm9kdWN0cy5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVhbnRpdHk7IGkrKykge1xuICAgIHZhciBpZCA9IHN0YXJ0SWQgKyBpO1xuICAgIHByb2R1Y3RzLnB1c2goe1xuICAgICAgaWQ6IGlkLFxuICAgICAgbmFtZTogXCJJdGVtIG5hbWUgXCIgKyBpZCxcbiAgICAgIHByaWNlOiAxMDAgKyBpLFxuICAgICAgc3VwcGxpZXJJZDogaWQrMixcbiAgICAgIGRpc2NvdW50OiBcIjEwJVwiLFxuICAgICAgY2F0ZWdvcnlJZDogXCJjYXRvcmFnZS1cIitpZCs2XG4gICAgfSk7XG4gIH1cbn1cblxuYWRkUHJvZHVjdHMoNzApO1xuXG5mdW5jdGlvbiBvblJvd1NlbGVjdChyb3csIGlzU2VsZWN0ZWQpe1xuICBjb25zb2xlLmxvZyhyb3cpO1xuICBjb25zb2xlLmxvZyhcInNlbGVjdGVkOiBcIiArIGlzU2VsZWN0ZWQpXG59XG5cbmZ1bmN0aW9uIG9uU2VsZWN0QWxsKGlzU2VsZWN0ZWQsIGN1cnJlbnREaXNwbGF5QW5kU2VsZWN0ZWREYXRhKXtcbiAgY29uc29sZS5sb2coXCJpcyBzZWxlY3QgYWxsOiBcIiArIGlzU2VsZWN0ZWQpO1xuICBjb25zb2xlLmxvZyhcIkN1cnJlbnQgc2VsZWN0IGFuZCBkaXNwbGF5IGRhdGE6IFwiKTtcbiAgY29uc29sZS5sb2coY3VycmVudERpc3BsYXlBbmRTZWxlY3RlZERhdGEpO1xufVxuXG5mdW5jdGlvbiBvbkFmdGVyU2F2ZUNlbGwocm93LCBjZWxsTmFtZSwgY2VsbFZhbHVlKXtcbiAgY29uc29sZS5sb2coXCJTYXZlIGNlbGwgJ1wiK2NlbGxOYW1lK1wiJyB3aXRoIHZhbHVlICdcIitjZWxsVmFsdWUrXCInXCIpO1xuICBjb25zb2xlLmxvZyhcIlRodyB3aG9sZSByb3cgOlwiKTtcbiAgY29uc29sZS5sb2cocm93KTtcbn1cblxuZnVuY3Rpb24gb25BZnRlclRhYmxlQ29tcGxldGUoKXtcbiAgY29uc29sZS5sb2coJ1RhYmxlIHJlbmRlciBjb21wbGV0ZS4nKTtcbn1cblxuZnVuY3Rpb24gb25BZnRlckRlbGV0ZVJvdyhyb3dLZXlzKXtcbiAgY29uc29sZS5sb2coXCJvbkFmdGVyRGVsZXRlUm93XCIpO1xuICBjb25zb2xlLmxvZyhyb3dLZXlzKTtcbn1cblxuZnVuY3Rpb24gb25BZnRlckluc2VydFJvdyhyb3cpe1xuICBjb25zb2xlLmxvZyhcIm9uQWZ0ZXJJbnNlcnRSb3dcIik7XG4gIGNvbnNvbGUubG9nKHJvdyk7XG59XG5cbnZhciBzZWxlY3RSb3dQcm9wID0ge1xuICBtb2RlOiBcImNoZWNrYm94XCIsXG4gIGNsaWNrVG9TZWxlY3Q6IHRydWUsXG4gIC8vIGhpZGVTZWxlY3RDb2x1bW46IHRydWUsIC8veW91IGNhbiBoaWRlIHNlbGVjdCBjb2x1bW4sIGlmIHlvdSBlbmFibGUgY2xpY2tUb1NlbGVjdFxuICBzZWxlY3RlZDogW10sIC8vZGVmYXVsdCBzZWxlY3Rpb24gb24gdGFibGVcbiAgYmdDb2xvcjogXCJyZ2IoMjM4LCAxOTMsIDIxMylcIixcbiAgb25TZWxlY3Q6IG9uUm93U2VsZWN0LFxuICBvblNlbGVjdEFsbDogb25TZWxlY3RBbGxcbn07XG5cbnZhciBjZWxsRWRpdFByb3AgPSB7XG4gIG1vZGU6IFwiY2xpY2tcIixcbiAgYmx1clRvU2F2ZTogdHJ1ZSxcbiAgYWZ0ZXJTYXZlQ2VsbDogb25BZnRlclNhdmVDZWxsXG59O1xuXG52YXIgb3B0aW9ucyA9IHtcbiAgLy8gcGFnZTogMyxcbiAgLy8gc2l6ZVBlclBhZ2U6IDUsXG4gIC8vIHNpemVQZXJQYWdlTGlzdDogWzUsMTAsMTUsMjBdLFxuICAvLyBwYWdpbmF0aW9uU2l6ZTogNixcbiAgc29ydE5hbWU6IFwibmFtZVwiLCAgLy9kZWZhdWx0IHNvcnQgY29sdW1uIG5hbWVcbiAgc29ydE9yZGVyOiBcImRlc2NcIiwgIC8vZGVmYXVsdCBzb3J0IG9yZGVyXG4gIGFmdGVyVGFibGVDb21wbGV0ZTogb25BZnRlclRhYmxlQ29tcGxldGUsIC8vIEEgaG9vayBmb3IgYWZ0ZXIgdGFibGUgcmVuZGVyIGNvbXBsZXRlLlxuICBhZnRlckRlbGV0ZVJvdzogb25BZnRlckRlbGV0ZVJvdywgIC8vIEEgaG9vayBmb3IgYWZ0ZXIgZHJvcGluZyByb3dzLlxuICBhZnRlckluc2VydFJvdzogb25BZnRlckluc2VydFJvdyAgIC8vIEEgaG9vayBmb3IgYWZ0ZXIgaW5zZXJ0IHJvd3Ncbn07XG5cblxuZnVuY3Rpb24gcHJpY2VGb3JtYXR0ZXIoY2VsbCwgcm93KXtcbiAgcmV0dXJuICc8aSBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tdXNkXCI+PC9pPiAnICsgY2VsbDtcbn1cblxuUmVhY3QucmVuZGVyKFxuICA8Qm9vdHN0cmFwVGFibGUgZGF0YT17cHJvZHVjdHN9IHN0cmlwZWQ9e3RydWV9IGhvdmVyPXt0cnVlfSBwYWdpbmF0aW9uPXt0cnVlfSBzZWxlY3RSb3c9e3NlbGVjdFJvd1Byb3B9IGNlbGxFZGl0PXtjZWxsRWRpdFByb3B9XG4gICAgICAgICAgICAgICAgICBpbnNlcnRSb3c9e3RydWV9IGRlbGV0ZVJvdz17dHJ1ZX0gc2VhcmNoPXt0cnVlfSBjb2x1bW5GaWx0ZXI9e3RydWV9IG9wdGlvbnM9e29wdGlvbnN9PlxuICAgICAgPFRhYmxlSGVhZGVyQ29sdW1uIGRhdGFGaWVsZD1cImlkXCIgZGF0YUFsaWduPVwiY2VudGVyXCIgZGF0YVNvcnQ9e3RydWV9IGlzS2V5PXt0cnVlfT5Qcm9kdWN0IElEPC9UYWJsZUhlYWRlckNvbHVtbj5cbiAgICAgIDxUYWJsZUhlYWRlckNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgd2lkdGg9XCIyMDBweFwiIGRhdGFTb3J0PXt0cnVlfT5Qcm9kdWN0IE5hbWU8L1RhYmxlSGVhZGVyQ29sdW1uPlxuICAgICAgPFRhYmxlSGVhZGVyQ29sdW1uIGRhdGFGaWVsZD1cInByaWNlXCIgd2lkdGg9XCIxMDBweFwiIGRhdGFGb3JtYXQ9e3ByaWNlRm9ybWF0dGVyfSBlZGl0YWJsZT17ZmFsc2V9PlByb2R1Y3QgUHJpY2U8L1RhYmxlSGVhZGVyQ29sdW1uPlxuICAgICAgPFRhYmxlSGVhZGVyQ29sdW1uIGRhdGFGaWVsZD1cInN1cHBsaWVySWRcIiBlZGl0YWJsZT17dHJ1ZX0+U3VwcGxpZXIgSUQ8L1RhYmxlSGVhZGVyQ29sdW1uPlxuICAgICAgPFRhYmxlSGVhZGVyQ29sdW1uIGRhdGFGaWVsZD1cImRpc2NvdW50XCIgZWRpdGFibGU9e2ZhbHNlfT5EaXNjb3VudChQZXJjZW50YWdlKTwvVGFibGVIZWFkZXJDb2x1bW4+XG4gICAgICA8VGFibGVIZWFkZXJDb2x1bW4gZGF0YUZpZWxkPVwiY2F0ZWdvcnlJZFwiIGVkaXRhYmxlPXt0cnVlfT5DYXRlZ29yeSBJRDwvVGFibGVIZWFkZXJDb2x1bW4+XG4gIDwvQm9vdHN0cmFwVGFibGU+LFxuXHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJhc2ljXCIpXG4pO1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzIHx8IHt9O1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG5FdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbihuKSB7XG4gIGlmICghaXNOdW1iZXIobikgfHwgbiA8IDAgfHwgaXNOYU4obikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIGlmICghdGhpcy5fZXZlbnRzLmVycm9yIHx8XG4gICAgICAgIChpc09iamVjdCh0aGlzLl9ldmVudHMuZXJyb3IpICYmICF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSkge1xuICAgICAgZXIgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICAgIH1cbiAgICAgIHRocm93IFR5cGVFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkIFwiZXJyb3JcIiBldmVudC4nKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChpc1VuZGVmaW5lZChoYW5kbGVyKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHNsb3dlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICBoYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdChoYW5kbGVyKSkge1xuICAgIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICBmb3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspXG4gICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcblxuICAgIGxpc3RlbmVycyA9IGhhbmRsZXIuc2xpY2UoKTtcbiAgICBsZW4gPSBsaXN0ZW5lcnMubGVuZ3RoO1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKylcbiAgICAgIGxpc3RlbmVyc1tpXS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBtO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cylcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcblxuICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gIGlmICh0aGlzLl9ldmVudHMubmV3TGlzdGVuZXIpXG4gICAgdGhpcy5lbWl0KCduZXdMaXN0ZW5lcicsIHR5cGUsXG4gICAgICAgICAgICAgIGlzRnVuY3Rpb24obGlzdGVuZXIubGlzdGVuZXIpID9cbiAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHNbdHlwZV0pXG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gbGlzdGVuZXI7XG4gIGVsc2UgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXS5wdXNoKGxpc3RlbmVyKTtcbiAgZWxzZVxuICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IFt0aGlzLl9ldmVudHNbdHlwZV0sIGxpc3RlbmVyXTtcblxuICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICBpZiAoaXNPYmplY3QodGhpcy5fZXZlbnRzW3R5cGVdKSAmJiAhdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCkge1xuICAgIHZhciBtO1xuICAgIGlmICghaXNVbmRlZmluZWQodGhpcy5fbWF4TGlzdGVuZXJzKSkge1xuICAgICAgbSA9IHRoaXMuX21heExpc3RlbmVycztcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzO1xuICAgIH1cblxuICAgIGlmIChtICYmIG0gPiAwICYmIHRoaXMuX2V2ZW50c1t0eXBlXS5sZW5ndGggPiBtKSB7XG4gICAgICB0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJyhub2RlKSB3YXJuaW5nOiBwb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5ICcgK1xuICAgICAgICAgICAgICAgICAgICAnbGVhayBkZXRlY3RlZC4gJWQgbGlzdGVuZXJzIGFkZGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ1VzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50c1t0eXBlXS5sZW5ndGgpO1xuICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLnRyYWNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSUUgMTBcbiAgICAgICAgY29uc29sZS50cmFjZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICB2YXIgZmlyZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBnKCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgZyk7XG5cbiAgICBpZiAoIWZpcmVkKSB7XG4gICAgICBmaXJlZCA9IHRydWU7XG4gICAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfVxuXG4gIGcubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgdGhpcy5vbih0eXBlLCBnKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIGVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZmYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIGxpc3QsIHBvc2l0aW9uLCBsZW5ndGgsIGk7XG5cbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzIHx8ICF0aGlzLl9ldmVudHNbdHlwZV0pXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgbGlzdCA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIHBvc2l0aW9uID0gLTE7XG5cbiAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8XG4gICAgICAoaXNGdW5jdGlvbihsaXN0Lmxpc3RlbmVyKSAmJiBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikpIHtcbiAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIGlmICh0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdGVuZXIpO1xuXG4gIH0gZWxzZSBpZiAoaXNPYmplY3QobGlzdCkpIHtcbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSA+IDA7KSB7XG4gICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHxcbiAgICAgICAgICAobGlzdFtpXS5saXN0ZW5lciAmJiBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikpIHtcbiAgICAgICAgcG9zaXRpb24gPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGxpc3QubGVuZ3RoID0gMDtcbiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpc3Quc3BsaWNlKHBvc2l0aW9uLCAxKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciBrZXksIGxpc3RlbmVycztcblxuICBpZiAoIXRoaXMuX2V2ZW50cylcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gIGlmICghdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICBlbHNlIGlmICh0aGlzLl9ldmVudHNbdHlwZV0pXG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgZm9yIChrZXkgaW4gdGhpcy5fZXZlbnRzKSB7XG4gICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTtcbiAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgfVxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpO1xuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbGlzdGVuZXJzID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChpc0Z1bmN0aW9uKGxpc3RlbmVycykpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTElGTyBvcmRlclxuICAgIHdoaWxlIChsaXN0ZW5lcnMubGVuZ3RoKVxuICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbbGlzdGVuZXJzLmxlbmd0aCAtIDFdKTtcbiAgfVxuICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciByZXQ7XG4gIGlmICghdGhpcy5fZXZlbnRzIHx8ICF0aGlzLl9ldmVudHNbdHlwZV0pXG4gICAgcmV0ID0gW107XG4gIGVsc2UgaWYgKGlzRnVuY3Rpb24odGhpcy5fZXZlbnRzW3R5cGVdKSlcbiAgICByZXQgPSBbdGhpcy5fZXZlbnRzW3R5cGVdXTtcbiAgZWxzZVxuICAgIHJldCA9IHRoaXMuX2V2ZW50c1t0eXBlXS5zbGljZSgpO1xuICByZXR1cm4gcmV0O1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIHZhciByZXQ7XG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbdHlwZV0pXG4gICAgcmV0ID0gMDtcbiAgZWxzZSBpZiAoaXNGdW5jdGlvbihlbWl0dGVyLl9ldmVudHNbdHlwZV0pKVxuICAgIHJldCA9IDE7XG4gIGVsc2VcbiAgICByZXQgPSBlbWl0dGVyLl9ldmVudHNbdHlwZV0ubGVuZ3RoO1xuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG5cbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuICAgIHZhciBjdXJyZW50UXVldWU7XG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtpXSgpO1xuICAgICAgICB9XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbn1cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgcXVldWUucHVzaChmdW4pO1xuICAgIGlmICghZHJhaW5pbmcpIHtcbiAgICAgICAgc2V0VGltZW91dChkcmFpblF1ZXVlLCAwKTtcbiAgICB9XG59O1xuXG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxuLy8gVE9ETyhzaHR5bG1hbilcbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTUgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9ICcnO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMgKz0gJyAnICsgYXJnO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0Y2xhc3NlcyArPSAnICcgKyBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzICs9ICcgJyArIGtleTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5zdWJzdHIoMSk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENTU0NvcmVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBUaGUgQ1NTQ29yZSBtb2R1bGUgc3BlY2lmaWVzIHRoZSBBUEkgKGFuZCBpbXBsZW1lbnRzIG1vc3Qgb2YgdGhlIG1ldGhvZHMpXG4gKiB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBkaXNwbGF5IG9mIGVsZW1lbnRzICh2aWEgdGhlaXJcbiAqIENTUyBjbGFzc2VzIGFuZCB2aXNpYmlsaXR5IG9uIHNjcmVlbi4gSXQgaXMgYW4gQVBJIGZvY3VzZWQgb24gbXV0YXRpbmcgdGhlXG4gKiBkaXNwbGF5IGFuZCBub3QgcmVhZGluZyBpdCBhcyBubyBsb2dpY2FsIHN0YXRlIHNob3VsZCBiZSBlbmNvZGVkIGluIHRoZVxuICogZGlzcGxheSBvZiBlbGVtZW50cy5cbiAqL1xuXG52YXIgQ1NTQ29yZSA9IHtcblxuICAvKipcbiAgICogQWRkcyB0aGUgY2xhc3MgcGFzc2VkIGluIHRvIHRoZSBlbGVtZW50IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGl0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBjbGFzcyBvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3NOYW1lXG4gICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IHRoZSBlbGVtZW50IHBhc3NlZCBpblxuICAgKi9cbiAgYWRkQ2xhc3M6IGZ1bmN0aW9uIChlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgICAhIS9cXHMvLnRlc3QoY2xhc3NOYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDU1NDb3JlLmFkZENsYXNzIHRha2VzIG9ubHkgYSBzaW5nbGUgY2xhc3MgbmFtZS4gXCIlc1wiIGNvbnRhaW5zICcgKyAnbXVsdGlwbGUgY2xhc3Nlcy4nLCBjbGFzc05hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoIUNTU0NvcmUuaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lICsgJyAnICsgY2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgY2xhc3MgcGFzc2VkIGluIGZyb20gdGhlIGVsZW1lbnRcbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50IHRoZSBlbGVtZW50IHRvIHNldCB0aGUgY2xhc3Mgb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzTmFtZVxuICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSB0aGUgZWxlbWVudCBwYXNzZWQgaW5cbiAgICovXG4gIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiAoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gICAgISEvXFxzLy50ZXN0KGNsYXNzTmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ1NTQ29yZS5yZW1vdmVDbGFzcyB0YWtlcyBvbmx5IGEgc2luZ2xlIGNsYXNzIG5hbWUuIFwiJXNcIiBjb250YWlucyAnICsgJ211bHRpcGxlIGNsYXNzZXMuJywgY2xhc3NOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKENTU0NvcmUuaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgnKF58XFxcXHMpJyArIGNsYXNzTmFtZSArICcoPzpcXFxcc3wkKScsICdnJyksICckMScpLnJlcGxhY2UoL1xccysvZywgJyAnKSAvLyBtdWx0aXBsZSBzcGFjZXMgdG8gb25lXG4gICAgICAgIC5yZXBsYWNlKC9eXFxzKnxcXHMqJC9nLCAnJyk7IC8vIHRyaW0gdGhlIGVuZHNcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBhZGQgb3IgcmVtb3ZlIGEgY2xhc3MgZnJvbSBhbiBlbGVtZW50IGJhc2VkIG9uIGEgY29uZGl0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBjbGFzcyBvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3NOYW1lXG4gICAqIEBwYXJhbSB7Kn0gYm9vbCBjb25kaXRpb24gdG8gd2hldGhlciB0byBhZGQgb3IgcmVtb3ZlIHRoZSBjbGFzc1xuICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSB0aGUgZWxlbWVudCBwYXNzZWQgaW5cbiAgICovXG4gIGNvbmRpdGlvbkNsYXNzOiBmdW5jdGlvbiAoZWxlbWVudCwgY2xhc3NOYW1lLCBib29sKSB7XG4gICAgcmV0dXJuIChib29sID8gQ1NTQ29yZS5hZGRDbGFzcyA6IENTU0NvcmUucmVtb3ZlQ2xhc3MpKGVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRlc3RzIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIHRoZSBjbGFzcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NTm9kZXxET01XaW5kb3d9IGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBjbGFzcyBvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3NOYW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlIGVsZW1lbnQgaGFzIHRoZSBjbGFzcywgZmFsc2UgaWYgbm90XG4gICAqL1xuICBoYXNDbGFzczogZnVuY3Rpb24gKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICAgICEhL1xccy8udGVzdChjbGFzc05hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NTUy5oYXNDbGFzcyB0YWtlcyBvbmx5IGEgc2luZ2xlIGNsYXNzIG5hbWUuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgICAgcmV0dXJuICEhY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiAoJyAnICsgZWxlbWVudC5jbGFzc05hbWUgKyAnICcpLmluZGV4T2YoJyAnICsgY2xhc3NOYW1lICsgJyAnKSA+IC0xO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTQ29yZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OW1ZbXB6TDJ4cFlpOURVMU5EYjNKbExtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFTlRVME52Y21WY2JpQXFJRUIwZVhCbFkyaGxZMnR6WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25MaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVMeW9xWEc0Z0tpQlVhR1VnUTFOVFEyOXlaU0J0YjJSMWJHVWdjM0JsWTJsbWFXVnpJSFJvWlNCQlVFa2dLR0Z1WkNCcGJYQnNaVzFsYm5SeklHMXZjM1FnYjJZZ2RHaGxJRzFsZEdodlpITXBYRzRnS2lCMGFHRjBJSE5vYjNWc1pDQmlaU0IxYzJWa0lIZG9aVzRnWkdWaGJHbHVaeUIzYVhSb0lIUm9aU0JrYVhOd2JHRjVJRzltSUdWc1pXMWxiblJ6SUNoMmFXRWdkR2hsYVhKY2JpQXFJRU5UVXlCamJHRnpjMlZ6SUdGdVpDQjJhWE5wWW1sc2FYUjVJRzl1SUhOamNtVmxiaTRnU1hRZ2FYTWdZVzRnUVZCSklHWnZZM1Z6WldRZ2IyNGdiWFYwWVhScGJtY2dkR2hsWEc0Z0tpQmthWE53YkdGNUlHRnVaQ0J1YjNRZ2NtVmhaR2x1WnlCcGRDQmhjeUJ1YnlCc2IyZHBZMkZzSUhOMFlYUmxJSE5vYjNWc1pDQmlaU0JsYm1OdlpHVmtJR2x1SUhSb1pWeHVJQ29nWkdsemNHeGhlU0J2WmlCbGJHVnRaVzUwY3k1Y2JpQXFMMXh1WEc1MllYSWdRMU5UUTI5eVpTQTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRV1JrY3lCMGFHVWdZMnhoYzNNZ2NHRnpjMlZrSUdsdUlIUnZJSFJvWlNCbGJHVnRaVzUwSUdsbUlHbDBJR1J2WlhOdUozUWdZV3h5WldGa2VTQm9ZWFpsSUdsMExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUdWc1pXMWxiblFnZEdobElHVnNaVzFsYm5RZ2RHOGdjMlYwSUhSb1pTQmpiR0Z6Y3lCdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWTJ4aGMzTk9ZVzFsSUhSb1pTQkRVMU1nWTJ4aGMzTk9ZVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJQVFVWc1pXMWxiblI5SUhSb1pTQmxiR1Z0Wlc1MElIQmhjM05sWkNCcGJseHVJQ0FnS2k5Y2JpQWdZV1JrUTJ4aGMzTTZJR1oxYm1OMGFXOXVJQ2hsYkdWdFpXNTBMQ0JqYkdGemMwNWhiV1VwSUh0Y2JpQWdJQ0FoSVM5Y1hITXZMblJsYzNRb1kyeGhjM05PWVcxbEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRFUxTkRiM0psTG1Ga1pFTnNZWE56SUhSaGEyVnpJRzl1YkhrZ1lTQnphVzVuYkdVZ1kyeGhjM01nYm1GdFpTNGdYQ0lsYzF3aUlHTnZiblJoYVc1eklDY2dLeUFuYlhWc2RHbHdiR1VnWTJ4aGMzTmxjeTRuTENCamJHRnpjMDVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR2xtSUNoamJHRnpjMDVoYldVcElIdGNiaUFnSUNBZ0lHbG1JQ2hsYkdWdFpXNTBMbU5zWVhOelRHbHpkQ2tnZTF4dUlDQWdJQ0FnSUNCbGJHVnRaVzUwTG1Oc1lYTnpUR2x6ZEM1aFpHUW9ZMnhoYzNOT1lXMWxLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvSVVOVFUwTnZjbVV1YUdGelEyeGhjM01vWld4bGJXVnVkQ3dnWTJ4aGMzTk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQmxiR1Z0Wlc1MExtTnNZWE56VG1GdFpTQTlJR1ZzWlcxbGJuUXVZMnhoYzNOT1lXMWxJQ3NnSnlBbklDc2dZMnhoYzNOT1lXMWxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWld4bGJXVnVkRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVnRiM1psY3lCMGFHVWdZMnhoYzNNZ2NHRnpjMlZrSUdsdUlHWnliMjBnZEdobElHVnNaVzFsYm5SY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0JsYkdWdFpXNTBJSFJvWlNCbGJHVnRaVzUwSUhSdklITmxkQ0IwYUdVZ1kyeGhjM01nYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR05zWVhOelRtRnRaU0IwYUdVZ1ExTlRJR05zWVhOelRtRnRaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVUMDFGYkdWdFpXNTBmU0IwYUdVZ1pXeGxiV1Z1ZENCd1lYTnpaV1FnYVc1Y2JpQWdJQ292WEc0Z0lISmxiVzkyWlVOc1lYTnpPaUJtZFc1amRHbHZiaUFvWld4bGJXVnVkQ3dnWTJ4aGMzTk9ZVzFsS1NCN1hHNGdJQ0FnSVNFdlhGeHpMeTUwWlhOMEtHTnNZWE56VG1GdFpTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblExTlRRMjl5WlM1eVpXMXZkbVZEYkdGemN5QjBZV3RsY3lCdmJteDVJR0VnYzJsdVoyeGxJR05zWVhOeklHNWhiV1V1SUZ3aUpYTmNJaUJqYjI1MFlXbHVjeUFuSUNzZ0oyMTFiSFJwY0d4bElHTnNZWE56WlhNdUp5d2dZMnhoYzNOT1lXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCcFppQW9ZMnhoYzNOT1lXMWxLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pXeGxiV1Z1ZEM1amJHRnpjMHhwYzNRcElIdGNiaUFnSUNBZ0lDQWdaV3hsYldWdWRDNWpiR0Z6YzB4cGMzUXVjbVZ0YjNabEtHTnNZWE56VG1GdFpTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRU5UVTBOdmNtVXVhR0Z6UTJ4aGMzTW9aV3hsYldWdWRDd2dZMnhoYzNOT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCbGJHVnRaVzUwTG1Oc1lYTnpUbUZ0WlNBOUlHVnNaVzFsYm5RdVkyeGhjM05PWVcxbExuSmxjR3hoWTJVb2JtVjNJRkpsWjBWNGNDZ25LRjU4WEZ4Y1hITXBKeUFySUdOc1lYTnpUbUZ0WlNBcklDY29QenBjWEZ4Y2Mzd2tLU2NzSUNkbkp5a3NJQ2NrTVNjcExuSmxjR3hoWTJVb0wxeGNjeXN2Wnl3Z0p5QW5LU0F2THlCdGRXeDBhWEJzWlNCemNHRmpaWE1nZEc4Z2IyNWxYRzRnSUNBZ0lDQWdJQzV5WlhCc1lXTmxLQzllWEZ4ektueGNYSE1xSkM5bkxDQW5KeWs3SUM4dklIUnlhVzBnZEdobElHVnVaSE5jYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdWc1pXMWxiblE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFaGxiSEJsY2lCMGJ5QmhaR1FnYjNJZ2NtVnRiM1psSUdFZ1kyeGhjM01nWm5KdmJTQmhiaUJsYkdWdFpXNTBJR0poYzJWa0lHOXVJR0VnWTI5dVpHbDBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR1ZzWlcxbGJuUWdkR2hsSUdWc1pXMWxiblFnZEc4Z2MyVjBJSFJvWlNCamJHRnpjeUJ2Ymx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdZMnhoYzNOT1lXMWxJSFJvWlNCRFUxTWdZMnhoYzNOT1lXMWxYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdZbTl2YkNCamIyNWthWFJwYjI0Z2RHOGdkMmhsZEdobGNpQjBieUJoWkdRZ2IzSWdjbVZ0YjNabElIUm9aU0JqYkdGemMxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVQwMUZiR1Z0Wlc1MGZTQjBhR1VnWld4bGJXVnVkQ0J3WVhOelpXUWdhVzVjYmlBZ0lDb3ZYRzRnSUdOdmJtUnBkR2x2YmtOc1lYTnpPaUJtZFc1amRHbHZiaUFvWld4bGJXVnVkQ3dnWTJ4aGMzTk9ZVzFsTENCaWIyOXNLU0I3WEc0Z0lDQWdjbVYwZFhKdUlDaGliMjlzSUQ4Z1ExTlRRMjl5WlM1aFpHUkRiR0Z6Y3lBNklFTlRVME52Y21VdWNtVnRiM1psUTJ4aGMzTXBLR1ZzWlcxbGJuUXNJR05zWVhOelRtRnRaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUmxjM1J6SUhkb1pYUm9aWElnZEdobElHVnNaVzFsYm5RZ2FHRnpJSFJvWlNCamJHRnpjeUJ6Y0dWamFXWnBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5UbTlrWlh4RVQwMVhhVzVrYjNkOUlHVnNaVzFsYm5RZ2RHaGxJR1ZzWlcxbGJuUWdkRzhnYzJWMElIUm9aU0JqYkdGemN5QnZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1kyeGhjM05PWVcxbElIUm9aU0JEVTFNZ1kyeGhjM05PWVcxbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5SUhSeWRXVWdhV1lnZEdobElHVnNaVzFsYm5RZ2FHRnpJSFJvWlNCamJHRnpjeXdnWm1Gc2MyVWdhV1lnYm05MFhHNGdJQ0FxTDF4dUlDQm9ZWE5EYkdGemN6b2dablZ1WTNScGIyNGdLR1ZzWlcxbGJuUXNJR05zWVhOelRtRnRaU2tnZTF4dUlDQWdJQ0VoTDF4Y2N5OHVkR1Z6ZENoamJHRnpjMDVoYldVcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBOVFV5NW9ZWE5EYkdGemN5QjBZV3RsY3lCdmJteDVJR0VnYzJsdVoyeGxJR05zWVhOeklHNWhiV1V1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2hsYkdWdFpXNTBMbU5zWVhOelRHbHpkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ0VoWTJ4aGMzTk9ZVzFsSUNZbUlHVnNaVzFsYm5RdVkyeGhjM05NYVhOMExtTnZiblJoYVc1ektHTnNZWE56VG1GdFpTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUFvSnlBbklDc2daV3hsYldWdWRDNWpiR0Z6YzA1aGJXVWdLeUFuSUNjcExtbHVaR1Y0VDJZb0p5QW5JQ3NnWTJ4aGMzTk9ZVzFsSUNzZ0p5QW5LU0ErSUMweE8xeHVJQ0I5WEc1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnUTFOVFEyOXlaVHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV2ZW50TGlzdGVuZXJcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJy4vZW1wdHlGdW5jdGlvbicpO1xuXG4vKipcbiAqIFVwc3RyZWFtIHZlcnNpb24gb2YgZXZlbnQgbGlzdGVuZXIuIERvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljXG4gKiBuYXR1cmUgb2YgcGxhdGZvcm0uXG4gKi9cbnZhciBFdmVudExpc3RlbmVyID0ge1xuICAvKipcbiAgICogTGlzdGVuIHRvIERPTSBldmVudHMgZHVyaW5nIHRoZSBidWJibGUgcGhhc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuICAgKi9cbiAgbGlzdGVuOiBmdW5jdGlvbiAodGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0YXJnZXQuYXR0YWNoRXZlbnQpIHtcbiAgICAgIHRhcmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogTGlzdGVuIHRvIERPTSBldmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2snIG9yICdtb3VzZW92ZXInLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC5cbiAgICovXG4gIGNhcHR1cmU6IGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRlZCB0byBsaXN0ZW4gdG8gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAnYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBwbGljYXRpb24gJyArICd3aWxsIG5vdCByZWNlaXZlIHNvbWUgZXZlbnRzLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3ZlOiBlbXB0eUZ1bmN0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICByZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTlGZG1WdWRFeHBjM1JsYm1WeUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxWEc0Z0tpQk1hV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRWEJoWTJobElFeHBZMlZ1YzJVc0lGWmxjbk5wYjI0Z01pNHdJQ2gwYUdVZ1hDSk1hV05sYm5ObFhDSXBPMXh1SUNvZ2VXOTFJRzFoZVNCdWIzUWdkWE5sSUhSb2FYTWdabWxzWlNCbGVHTmxjSFFnYVc0Z1kyOXRjR3hwWVc1alpTQjNhWFJvSUhSb1pTQk1hV05sYm5ObExseHVJQ29nV1c5MUlHMWhlU0J2WW5SaGFXNGdZU0JqYjNCNUlHOW1JSFJvWlNCTWFXTmxibk5sSUdGMFhHNGdLbHh1SUNvZ2FIUjBjRG92TDNkM2R5NWhjR0ZqYUdVdWIzSm5MMnhwWTJWdWMyVnpMMHhKUTBWT1UwVXRNaTR3WEc0Z0tseHVJQ29nVlc1c1pYTnpJSEpsY1hWcGNtVmtJR0o1SUdGd2NHeHBZMkZpYkdVZ2JHRjNJRzl5SUdGbmNtVmxaQ0IwYnlCcGJpQjNjbWwwYVc1bkxDQnpiMlowZDJGeVpWeHVJQ29nWkdsemRISnBZblYwWldRZ2RXNWtaWElnZEdobElFeHBZMlZ1YzJVZ2FYTWdaR2x6ZEhKcFluVjBaV1FnYjI0Z1lXNGdYQ0pCVXlCSlUxd2lJRUpCVTBsVExGeHVJQ29nVjBsVVNFOVZWQ0JYUVZKU1FVNVVTVVZUSUU5U0lFTlBUa1JKVkVsUFRsTWdUMFlnUVU1WklFdEpUa1FzSUdWcGRHaGxjaUJsZUhCeVpYTnpJRzl5SUdsdGNHeHBaV1F1WEc0Z0tpQlRaV1VnZEdobElFeHBZMlZ1YzJVZ1ptOXlJSFJvWlNCemNHVmphV1pwWXlCc1lXNW5kV0ZuWlNCbmIzWmxjbTVwYm1jZ2NHVnliV2x6YzJsdmJuTWdZVzVrWEc0Z0tpQnNhVzFwZEdGMGFXOXVjeUIxYm1SbGNpQjBhR1VnVEdsalpXNXpaUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdSWFpsYm5STWFYTjBaVzVsY2x4dUlDb2dRSFI1Y0dWamFHVmphM05jYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCbGJYQjBlVVoxYm1OMGFXOXVJRDBnY21WeGRXbHlaU2duTGk5bGJYQjBlVVoxYm1OMGFXOXVKeWs3WEc1Y2JpOHFLbHh1SUNvZ1ZYQnpkSEpsWVcwZ2RtVnljMmx2YmlCdlppQmxkbVZ1ZENCc2FYTjBaVzVsY2k0Z1JHOWxjeUJ1YjNRZ2RHRnJaU0JwYm5SdklHRmpZMjkxYm5RZ2MzQmxZMmxtYVdOY2JpQXFJRzVoZEhWeVpTQnZaaUJ3YkdGMFptOXliUzVjYmlBcUwxeHVkbUZ5SUVWMlpXNTBUR2x6ZEdWdVpYSWdQU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQk1hWE4wWlc0Z2RHOGdSRTlOSUdWMlpXNTBjeUJrZFhKcGJtY2dkR2hsSUdKMVltSnNaU0J3YUdGelpTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmRtVnVkRlJoY21kbGRIMGdkR0Z5WjJWMElFUlBUU0JsYkdWdFpXNTBJSFJ2SUhKbFoybHpkR1Z5SUd4cGMzUmxibVZ5SUc5dUxseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWlhabGJuUlVlWEJsSUVWMlpXNTBJSFI1Y0dVc0lHVXVaeTRnSjJOc2FXTnJKeUJ2Y2lBbmJXOTFjMlZ2ZG1WeUp5NWNiaUFnSUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1EyRnNiR0poWTJzZ1puVnVZM1JwYjI0dVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTI5aWFtVmpkSDBnVDJKcVpXTjBJSGRwZEdnZ1lTQmdjbVZ0YjNabFlDQnRaWFJvYjJRdVhHNGdJQ0FxTDF4dUlDQnNhWE4wWlc0NklHWjFibU4wYVc5dUlDaDBZWEpuWlhRc0lHVjJaVzUwVkhsd1pTd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQnBaaUFvZEdGeVoyVjBMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSXBJSHRjYmlBZ0lDQWdJSFJoY21kbGRDNWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtHVjJaVzUwVkhsd1pTd2dZMkZzYkdKaFkyc3NJR1poYkhObEtUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lISmxiVzkyWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSaGNtZGxkQzV5WlcxdmRtVkZkbVZ1ZEV4cGMzUmxibVZ5S0dWMlpXNTBWSGx3WlN3Z1kyRnNiR0poWTJzc0lHWmhiSE5sS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUmhjbWRsZEM1aGRIUmhZMmhGZG1WdWRDa2dlMXh1SUNBZ0lDQWdkR0Z5WjJWMExtRjBkR0ZqYUVWMlpXNTBLQ2R2YmljZ0t5QmxkbVZ1ZEZSNWNHVXNJR05oYkd4aVlXTnJLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQWdJSEpsYlc5MlpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUmhjbWRsZEM1a1pYUmhZMmhGZG1WdWRDZ25iMjRuSUNzZ1pYWmxiblJVZVhCbExDQmpZV3hzWW1GamF5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCTWFYTjBaVzRnZEc4Z1JFOU5JR1YyWlc1MGN5QmtkWEpwYm1jZ2RHaGxJR05oY0hSMWNtVWdjR2hoYzJVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRTlOUlhabGJuUlVZWEpuWlhSOUlIUmhjbWRsZENCRVQwMGdaV3hsYldWdWRDQjBieUJ5WldkcGMzUmxjaUJzYVhOMFpXNWxjaUJ2Ymk1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR1YyWlc1MFZIbHdaU0JGZG1WdWRDQjBlWEJsTENCbExtY3VJQ2RqYkdsamF5Y2diM0lnSjIxdmRYTmxiM1psY2ljdVhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVOaGJHeGlZV05ySUdaMWJtTjBhVzl1TGx4dUlDQWdLaUJBY21WMGRYSnVJSHR2WW1wbFkzUjlJRTlpYW1WamRDQjNhWFJvSUdFZ1lISmxiVzkyWldBZ2JXVjBhRzlrTGx4dUlDQWdLaTljYmlBZ1kyRndkSFZ5WlRvZ1puVnVZM1JwYjI0Z0tIUmhjbWRsZEN3Z1pYWmxiblJVZVhCbExDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lHbG1JQ2gwWVhKblpYUXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpa2dlMXh1SUNBZ0lDQWdkR0Z5WjJWMExtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb1pYWmxiblJVZVhCbExDQmpZV3hzWW1GamF5d2dkSEoxWlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnSUNCeVpXMXZkbVU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0IwWVhKblpYUXVjbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaWhsZG1WdWRGUjVjR1VzSUdOaGJHeGlZV05yTENCMGNuVmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2lnblFYUjBaVzF3ZEdWa0lIUnZJR3hwYzNSbGJpQjBieUJsZG1WdWRITWdaSFZ5YVc1bklIUm9aU0JqWVhCMGRYSmxJSEJvWVhObElHOXVJR0VnSnlBcklDZGljbTkzYzJWeUlIUm9ZWFFnWkc5bGN5QnViM1FnYzNWd2NHOXlkQ0IwYUdVZ1kyRndkSFZ5WlNCd2FHRnpaUzRnV1c5MWNpQmhjSEJzYVdOaGRHbHZiaUFuSUNzZ0ozZHBiR3dnYm05MElISmxZMlZwZG1VZ2MyOXRaU0JsZG1WdWRITXVKeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0J5WlcxdmRtVTZJR1Z0Y0hSNVJuVnVZM1JwYjI1Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lISmxaMmx6ZEdWeVJHVm1ZWFZzZERvZ1puVnVZM1JwYjI0Z0tDa2dlMzFjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdSWFpsYm5STWFYTjBaVzVsY2pzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXhlY3V0aW9uRW52aXJvbm1lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG4vKipcbiAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQgbW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2ZcbiAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXRcbiAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpblxuICogYFJlYWN0V29ya2VyYCBkZXBlbmRlbmN5LlxuICovXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7XG5cbiAgY2FuVXNlRE9NOiBjYW5Vc2VET00sXG5cbiAgY2FuVXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsXG5cbiAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNoRXZlbnQpLFxuXG4gIGNhblVzZVZpZXdwb3J0OiBjYW5Vc2VET00gJiYgISF3aW5kb3cuc2NyZWVuLFxuXG4gIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00gLy8gRm9yIG5vdywgdGhpcyBpcyB0cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGNhbWVsaXplXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgX2h5cGhlblBhdHRlcm4gPSAvLSguKS9nO1xuXG4vKipcbiAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIHN0cmluZywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGNhbWVsaXplKCdiYWNrZ3JvdW5kLWNvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmRDb2xvclwiXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF9oeXBoZW5QYXR0ZXJuLCBmdW5jdGlvbiAoXywgY2hhcmFjdGVyKSB7XG4gICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgY2FtZWxpemVTdHlsZU5hbWVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2FtZWxpemUgPSByZXF1aXJlKCcuL2NhbWVsaXplJyk7XG5cbnZhciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuXG4vKipcbiAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJ2JhY2tncm91bmQtY29sb3InKVxuICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnLW1vei10cmFuc2l0aW9uJylcbiAqICAgPCBcIk1velRyYW5zaXRpb25cIlxuICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpXG4gKiAgIDwgXCJtc1RyYW5zaXRpb25cIlxuICpcbiAqIEFzIEFuZGkgU21pdGggc3VnZ2VzdHNcbiAqIChodHRwOi8vd3d3LmFuZGlzbWl0aC5jb20vYmxvZy8yMDEyLzAyL21vZGVybml6ci1wcmVmaXhlZC8pLCBhbiBgLW1zYCBwcmVmaXhcbiAqIGlzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNhbWVsaXplU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4gY2FtZWxpemUoc3RyaW5nLnJlcGxhY2UobXNQYXR0ZXJuLCAnbXMtJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplU3R5bGVOYW1lOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBjb250YWluc05vZGVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNUZXh0Tm9kZSA9IHJlcXVpcmUoJy4vaXNUZXh0Tm9kZScpO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi9cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBET00gbm9kZSBjb250YWlucyBvciBpcyBhbm90aGVyIERPTSBub2RlLlxuICpcbiAqIEBwYXJhbSB7P0RPTU5vZGV9IG91dGVyTm9kZSBPdXRlciBET00gbm9kZS5cbiAqIEBwYXJhbSB7P0RPTU5vZGV9IGlubmVyTm9kZSBJbm5lciBET00gbm9kZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG91dGVyTm9kZWAgY29udGFpbnMgb3IgaXMgYGlubmVyTm9kZWAuXG4gKi9cbmZ1bmN0aW9uIGNvbnRhaW5zTm9kZShfeCwgX3gyKSB7XG4gIHZhciBfYWdhaW4gPSB0cnVlO1xuXG4gIF9mdW5jdGlvbjogd2hpbGUgKF9hZ2Fpbikge1xuICAgIHZhciBvdXRlck5vZGUgPSBfeCxcbiAgICAgICAgaW5uZXJOb2RlID0gX3gyO1xuICAgIF9hZ2FpbiA9IGZhbHNlO1xuXG4gICAgaWYgKCFvdXRlck5vZGUgfHwgIWlubmVyTm9kZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAob3V0ZXJOb2RlID09PSBpbm5lck5vZGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShvdXRlck5vZGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChpc1RleHROb2RlKGlubmVyTm9kZSkpIHtcbiAgICAgIF94ID0gb3V0ZXJOb2RlO1xuICAgICAgX3gyID0gaW5uZXJOb2RlLnBhcmVudE5vZGU7XG4gICAgICBfYWdhaW4gPSB0cnVlO1xuICAgICAgY29udGludWUgX2Z1bmN0aW9uO1xuICAgIH0gZWxzZSBpZiAob3V0ZXJOb2RlLmNvbnRhaW5zKSB7XG4gICAgICByZXR1cm4gb3V0ZXJOb2RlLmNvbnRhaW5zKGlubmVyTm9kZSk7XG4gICAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcbiAgICAgIHJldHVybiAhIShvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJOb2RlKSAmIDE2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRhaW5zTm9kZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgY3JlYXRlQXJyYXlGcm9tTWl4ZWRcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9BcnJheSA9IHJlcXVpcmUoJy4vdG9BcnJheScpO1xuXG4vKipcbiAqIFBlcmZvcm0gYSBoZXVyaXN0aWMgdGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIFwiYXJyYXktbGlrZVwiLlxuICpcbiAqICAgQSBtb25rIGFza2VkIEpvc2h1LCBhIFplbiBtYXN0ZXIsIFwiSGFzIGEgZG9nIEJ1ZGRoYSBuYXR1cmU/XCJcbiAqICAgSm9zaHUgcmVwbGllZDogXCJNdS5cIlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzIFwiYXJyYXkgbmF0dXJlXCI6IGl0IHJldHVybnNcbiAqIHRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGFuIGFjdHVhbCBhcnJheSwgYW4gYGFyZ3VtZW50cycgb2JqZWN0LCBvciBhblxuICogSFRNTENvbGxlY3Rpb24gKGUuZy4gbm9kZS5jaGlsZE5vZGVzIG9yIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoKSkuXG4gKlxuICogSXQgd2lsbCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIGFycmF5LWxpa2Ugb2JqZWN0cyBsaWtlIEZpbGVsaXN0LlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNBcnJheU5hdHVyZShvYmopIHtcbiAgcmV0dXJuKFxuICAgIC8vIG5vdCBudWxsL2ZhbHNlXG4gICAgISFvYmogJiYgKFxuICAgIC8vIGFycmF5cyBhcmUgb2JqZWN0cywgTm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2FmYXJpXG4gICAgdHlwZW9mIG9iaiA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicpICYmXG4gICAgLy8gcXVhY2tzIGxpa2UgYW4gYXJyYXlcbiAgICAnbGVuZ3RoJyBpbiBvYmogJiZcbiAgICAvLyBub3Qgd2luZG93XG4gICAgISgnc2V0SW50ZXJ2YWwnIGluIG9iaikgJiZcbiAgICAvLyBubyBET00gbm9kZSBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBhcnJheS1saWtlXG4gICAgLy8gYSAnc2VsZWN0JyBlbGVtZW50IGhhcyAnbGVuZ3RoJyBhbmQgJ2l0ZW0nIHByb3BlcnRpZXMgb24gSUU4XG4gICAgdHlwZW9mIG9iai5ub2RlVHlwZSAhPSAnbnVtYmVyJyAmJiAoXG4gICAgLy8gYSByZWFsIGFycmF5XG4gICAgQXJyYXkuaXNBcnJheShvYmopIHx8XG4gICAgLy8gYXJndW1lbnRzXG4gICAgJ2NhbGxlZScgaW4gb2JqIHx8XG4gICAgLy8gSFRNTENvbGxlY3Rpb24vTm9kZUxpc3RcbiAgICAnaXRlbScgaW4gb2JqKVxuICApO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGF0IHRoZSBhcmd1bWVudCBpcyBhbiBhcnJheSBieSB3cmFwcGluZyBpdCBpbiBhbiBhcnJheSBpZiBpdCBpcyBub3QuXG4gKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgaWYgaXQgaXMgYWxyZWFkeSBhbiBhcnJheS5cbiAqXG4gKiBUaGlzIGlzIG1vc3RseSB1c2VmdWwgaWRpb21hdGljYWxseTpcbiAqXG4gKiAgIHZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7XG4gKlxuICogICBmdW5jdGlvbiB0YWtlc09uZU9yTW9yZVRoaW5ncyh0aGluZ3MpIHtcbiAqICAgICB0aGluZ3MgPSBjcmVhdGVBcnJheUZyb21NaXhlZCh0aGluZ3MpO1xuICogICAgIC4uLlxuICogICB9XG4gKlxuICogVGhpcyBhbGxvd3MgeW91IHRvIHRyZWF0IGB0aGluZ3MnIGFzIGFuIGFycmF5LCBidXQgYWNjZXB0IHNjYWxhcnMgaW4gdGhlIEFQSS5cbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBsaWtlIGBhcmd1bWVudHNgLCBpbnRvIGFuIGFycmF5XG4gKiB1c2UgdG9BcnJheSBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2JqKSB7XG4gIGlmICghaGFzQXJyYXlOYXR1cmUob2JqKSkge1xuICAgIHJldHVybiBbb2JqXTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gb2JqLnNsaWNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRvQXJyYXkob2JqKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgY3JlYXRlTm9kZXNGcm9tTWFya3VwXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJy4vY3JlYXRlQXJyYXlGcm9tTWl4ZWQnKTtcbnZhciBnZXRNYXJrdXBXcmFwID0gcmVxdWlyZSgnLi9nZXRNYXJrdXBXcmFwJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBEdW1teSBjb250YWluZXIgdXNlZCB0byByZW5kZXIgYWxsIG1hcmt1cC5cbiAqL1xudmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDtcblxuLyoqXG4gKiBQYXR0ZXJuIHVzZWQgYnkgYGdldE5vZGVOYW1lYC5cbiAqL1xudmFyIG5vZGVOYW1lUGF0dGVybiA9IC9eXFxzKjwoXFx3KykvO1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBgbm9kZU5hbWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1cC5cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7XG4gIHZhciBub2RlTmFtZU1hdGNoID0gbWFya3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7XG4gIHJldHVybiBub2RlTmFtZU1hdGNoICYmIG5vZGVOYW1lTWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG5vZGVzIHJlbmRlcmVkIGZyb20gdGhlIHN1cHBsaWVkIG1hcmt1cC4gVGhlXG4gKiBvcHRpb25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBvbmNlIGZvciBlYWNoXG4gKiA8c2NyaXB0PiBlbGVtZW50IHRoYXQgaXMgcmVuZGVyZWQuIElmIG5vIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIGlzIHN1cHBsaWVkLFxuICogYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBhbnkgPHNjcmlwdD4gZWxlbWVudHMgYXJlIHJlbmRlcmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgQSBzdHJpbmcgb2YgdmFsaWQgSFRNTCBtYXJrdXAuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gaGFuZGxlU2NyaXB0IEludm9rZWQgb25jZSBmb3IgZWFjaCByZW5kZXJlZCA8c2NyaXB0Pi5cbiAqIEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnR8RE9NVGV4dE5vZGU+fSBBbiBhcnJheSBvZiByZW5kZXJlZCBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgaGFuZGxlU2NyaXB0KSB7XG4gIHZhciBub2RlID0gZHVtbXlOb2RlO1xuICAhISFkdW1teU5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwIGR1bW15IG5vdCBpbml0aWFsaXplZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobWFya3VwKTtcblxuICB2YXIgd3JhcCA9IG5vZGVOYW1lICYmIGdldE1hcmt1cFdyYXAobm9kZU5hbWUpO1xuICBpZiAod3JhcCkge1xuICAgIG5vZGUuaW5uZXJIVE1MID0gd3JhcFsxXSArIG1hcmt1cCArIHdyYXBbMl07XG5cbiAgICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTtcbiAgICB3aGlsZSAod3JhcERlcHRoLS0pIHtcbiAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7XG4gIH1cblxuICB2YXIgc2NyaXB0cyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpO1xuICBpZiAoc2NyaXB0cy5sZW5ndGgpIHtcbiAgICAhaGFuZGxlU2NyaXB0ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCguLi4pOiBVbmV4cGVjdGVkIDxzY3JpcHQ+IGVsZW1lbnQgcmVuZGVyZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIGNyZWF0ZUFycmF5RnJvbU1peGVkKHNjcmlwdHMpLmZvckVhY2goaGFuZGxlU2NyaXB0KTtcbiAgfVxuXG4gIHZhciBub2RlcyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkKG5vZGUuY2hpbGROb2Rlcyk7XG4gIHdoaWxlIChub2RlLmxhc3RDaGlsZCkge1xuICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hpbGQpO1xuICB9XG4gIHJldHVybiBub2Rlcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXA7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTlqY21WaGRHVk9iMlJsYzBaeWIyMU5ZWEpyZFhBdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUdOeVpXRjBaVTV2WkdWelJuSnZiVTFoY210MWNGeHVJQ29nUUhSNWNHVmphR1ZqYTNOY2JpQXFMMXh1WEc0dkttVnpiR2x1ZEMxa2FYTmhZbXhsSUdaaUxYZDNkeTkxYm5OaFptVXRhSFJ0YkNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUVWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZENjcE8xeHVYRzUyWVhJZ1kzSmxZWFJsUVhKeVlYbEdjbTl0VFdsNFpXUWdQU0J5WlhGMWFYSmxLQ2N1TDJOeVpXRjBaVUZ5Y21GNVJuSnZiVTFwZUdWa0p5azdYRzUyWVhJZ1oyVjBUV0Z5YTNWd1YzSmhjQ0E5SUhKbGNYVnBjbVVvSnk0dloyVjBUV0Z5YTNWd1YzSmhjQ2NwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nUkhWdGJYa2dZMjl1ZEdGcGJtVnlJSFZ6WldRZ2RHOGdjbVZ1WkdWeUlHRnNiQ0J0WVhKcmRYQXVYRzRnS2k5Y2JuWmhjaUJrZFcxdGVVNXZaR1VnUFNCRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDNWpZVzVWYzJWRVQwMGdQeUJrYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtDZGthWFluS1NBNklHNTFiR3c3WEc1Y2JpOHFLbHh1SUNvZ1VHRjBkR1Z5YmlCMWMyVmtJR0o1SUdCblpYUk9iMlJsVG1GdFpXQXVYRzRnS2k5Y2JuWmhjaUJ1YjJSbFRtRnRaVkJoZEhSbGNtNGdQU0F2WGx4Y2N5bzhLRnhjZHlzcEx6dGNibHh1THlvcVhHNGdLaUJGZUhSeVlXTjBjeUIwYUdVZ1lHNXZaR1ZPWVcxbFlDQnZaaUIwYUdVZ1ptbHljM1FnWld4bGJXVnVkQ0JwYmlCaElITjBjbWx1WnlCdlppQnRZWEpyZFhBdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcxaGNtdDFjQ0JUZEhKcGJtY2diMllnYldGeWEzVndMbHh1SUNvZ1FISmxkSFZ5YmlCN1AzTjBjbWx1WjMwZ1RtOWtaU0J1WVcxbElHOW1JSFJvWlNCemRYQndiR2xsWkNCdFlYSnJkWEF1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEU1dlpHVk9ZVzFsS0cxaGNtdDFjQ2tnZTF4dUlDQjJZWElnYm05a1pVNWhiV1ZOWVhSamFDQTlJRzFoY210MWNDNXRZWFJqYUNodWIyUmxUbUZ0WlZCaGRIUmxjbTRwTzF4dUlDQnlaWFIxY200Z2JtOWtaVTVoYldWTllYUmphQ0FtSmlCdWIyUmxUbUZ0WlUxaGRHTm9XekZkTG5SdlRHOTNaWEpEWVhObEtDazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaGJpQmhjbkpoZVNCamIyNTBZV2x1YVc1bklIUm9aU0J1YjJSbGN5QnlaVzVrWlhKbFpDQm1jbTl0SUhSb1pTQnpkWEJ3YkdsbFpDQnRZWEpyZFhBdUlGUm9aVnh1SUNvZ2IzQjBhVzl1WVd4c2VTQnpkWEJ3YkdsbFpDQmdhR0Z1Wkd4bFUyTnlhWEIwWUNCbWRXNWpkR2x2YmlCM2FXeHNJR0psSUdsdWRtOXJaV1FnYjI1alpTQm1iM0lnWldGamFGeHVJQ29nUEhOamNtbHdkRDRnWld4bGJXVnVkQ0IwYUdGMElHbHpJSEpsYm1SbGNtVmtMaUJKWmlCdWJ5QmdhR0Z1Wkd4bFUyTnlhWEIwWUNCbWRXNWpkR2x2YmlCcGN5QnpkWEJ3YkdsbFpDeGNiaUFxSUdGdUlHVjRZMlZ3ZEdsdmJpQnBjeUIwYUhKdmQyNGdhV1lnWVc1NUlEeHpZM0pwY0hRK0lHVnNaVzFsYm5SeklHRnlaU0J5Wlc1a1pYSmxaQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiV0Z5YTNWd0lFRWdjM1J5YVc1bklHOW1JSFpoYkdsa0lFaFVUVXdnYldGeWEzVndMbHh1SUNvZ1FIQmhjbUZ0SUhzL1puVnVZM1JwYjI1OUlHaGhibVJzWlZOamNtbHdkQ0JKYm5admEyVmtJRzl1WTJVZ1ptOXlJR1ZoWTJnZ2NtVnVaR1Z5WldRZ1BITmpjbWx3ZEQ0dVhHNGdLaUJBY21WMGRYSnVJSHRoY25KaGVUeEVUMDFGYkdWdFpXNTBmRVJQVFZSbGVIUk9iMlJsUG4wZ1FXNGdZWEp5WVhrZ2IyWWdjbVZ1WkdWeVpXUWdibTlrWlhNdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdOeVpXRjBaVTV2WkdWelJuSnZiVTFoY210MWNDaHRZWEpyZFhBc0lHaGhibVJzWlZOamNtbHdkQ2tnZTF4dUlDQjJZWElnYm05a1pTQTlJR1IxYlcxNVRtOWtaVHRjYmlBZ0lTRWhaSFZ0YlhsT2IyUmxJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyTnlaV0YwWlU1dlpHVnpSbkp2YlUxaGNtdDFjQ0JrZFcxdGVTQnViM1FnYVc1cGRHbGhiR2w2WldRbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIWmhjaUJ1YjJSbFRtRnRaU0E5SUdkbGRFNXZaR1ZPWVcxbEtHMWhjbXQxY0NrN1hHNWNiaUFnZG1GeUlIZHlZWEFnUFNCdWIyUmxUbUZ0WlNBbUppQm5aWFJOWVhKcmRYQlhjbUZ3S0c1dlpHVk9ZVzFsS1R0Y2JpQWdhV1lnS0hkeVlYQXBJSHRjYmlBZ0lDQnViMlJsTG1sdWJtVnlTRlJOVENBOUlIZHlZWEJiTVYwZ0t5QnRZWEpyZFhBZ0t5QjNjbUZ3V3pKZE8xeHVYRzRnSUNBZ2RtRnlJSGR5WVhCRVpYQjBhQ0E5SUhkeVlYQmJNRjA3WEc0Z0lDQWdkMmhwYkdVZ0tIZHlZWEJFWlhCMGFDMHRLU0I3WEc0Z0lDQWdJQ0J1YjJSbElEMGdibTlrWlM1c1lYTjBRMmhwYkdRN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUc1dlpHVXVhVzV1WlhKSVZFMU1JRDBnYldGeWEzVndPMXh1SUNCOVhHNWNiaUFnZG1GeUlITmpjbWx3ZEhNZ1BTQnViMlJsTG1kbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtDZHpZM0pwY0hRbktUdGNiaUFnYVdZZ0tITmpjbWx3ZEhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSVdoaGJtUnNaVk5qY21sd2RDQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkamNtVmhkR1ZPYjJSbGMwWnliMjFOWVhKcmRYQW9MaTR1S1RvZ1ZXNWxlSEJsWTNSbFpDQThjMk55YVhCMFBpQmxiR1Z0Wlc1MElISmxibVJsY21Wa0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JqY21WaGRHVkJjbkpoZVVaeWIyMU5hWGhsWkNoelkzSnBjSFJ6S1M1bWIzSkZZV05vS0doaGJtUnNaVk5qY21sd2RDazdYRzRnSUgxY2JseHVJQ0IyWVhJZ2JtOWtaWE1nUFNCamNtVmhkR1ZCY25KaGVVWnliMjFOYVhobFpDaHViMlJsTG1Ob2FXeGtUbTlrWlhNcE8xeHVJQ0IzYUdsc1pTQW9ibTlrWlM1c1lYTjBRMmhwYkdRcElIdGNiaUFnSUNCdWIyUmxMbkpsYlc5MlpVTm9hV3hrS0c1dlpHVXViR0Z6ZEVOb2FXeGtLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdibTlrWlhNN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWTNKbFlYUmxUbTlrWlhOR2NtOXRUV0Z5YTNWd095SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGVtcHR5RnVuY3Rpb25cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gbWFrZUVtcHR5RnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlucHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2hcbiAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwtY2FsbCBpZGlvbSBhbGEgQ29jb2EuXG4gKi9cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5RnVuY3Rpb247XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5jdGlvbihmYWxzZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKHRydWUpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1wdHlGdW5jdGlvbihudWxsKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcztcbn07XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHJldHVybiBhcmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5RnVuY3Rpb247IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBlbXB0eU9iamVjdFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5bVltcHpMMnhwWWk5bGJYQjBlVTlpYW1WamRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJR1Z0Y0hSNVQySnFaV04wWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1pXMXdkSGxQWW1wbFkzUWdQU0I3ZlR0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnVDJKcVpXTjBMbVp5WldWNlpTaGxiWEIwZVU5aWFtVmpkQ2s3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdaVzF3ZEhsUFltcGxZM1E3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBmb2N1c05vZGVcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlIGlucHV0L3RleHRhcmVhIHRvIGZvY3VzXG4gKi9cbmZ1bmN0aW9uIGZvY3VzTm9kZShub2RlKSB7XG4gIC8vIElFOCBjYW4gdGhyb3cgXCJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2UgaXQgaXMgaW52aXNpYmxlLFxuICAvLyBub3QgZW5hYmxlZCwgb3Igb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QgYWNjZXB0IHRoZSBmb2N1cy5cIiBmb3IgYWxsIGtpbmRzIG9mXG4gIC8vIHJlYXNvbnMgdGhhdCBhcmUgdG9vIGV4cGVuc2l2ZSBhbmQgZnJhZ2lsZSB0byB0ZXN0LlxuICB0cnkge1xuICAgIG5vZGUuZm9jdXMoKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb2N1c05vZGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldEFjdGl2ZUVsZW1lbnRcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuLyoqXG4gKiBTYW1lIGFzIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYnV0IHdyYXBzIGluIGEgdHJ5LWNhdGNoIGJsb2NrLiBJbiBJRSBpdCBpc1xuICogbm90IHNhZmUgdG8gY2FsbCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlmIHRoZXJlIGlzIG5vdGhpbmcgZm9jdXNlZC5cbiAqXG4gKiBUaGUgYWN0aXZlRWxlbWVudCB3aWxsIGJlIG51bGwgb25seSBpZiB0aGUgZG9jdW1lbnQgb3IgZG9jdW1lbnQgYm9keSBpcyBub3QgeWV0IGRlZmluZWQuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudCgpIC8qP0RPTUVsZW1lbnQqL3tcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWN0aXZlRWxlbWVudDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldE1hcmt1cFdyYXBcbiAqL1xuXG4vKmVzbGludC1kaXNhYmxlIGZiLXd3dy91bnNhZmUtaHRtbCAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICogRHVtbXkgY29udGFpbmVyIHVzZWQgdG8gZGV0ZWN0IHdoaWNoIHdyYXBzIGFyZSBuZWNlc3NhcnkuXG4gKi9cbnZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51bGw7XG5cbi8qKlxuICogU29tZSBicm93c2VycyBjYW5ub3QgdXNlIGBpbm5lckhUTUxgIHRvIHJlbmRlciBjZXJ0YWluIGVsZW1lbnRzIHN0YW5kYWxvbmUsXG4gKiBzbyB3ZSB3cmFwIHRoZW0sIHJlbmRlciB0aGUgd3JhcHBlZCBub2RlcywgdGhlbiBleHRyYWN0IHRoZSBkZXNpcmVkIG5vZGUuXG4gKlxuICogSW4gSUU4LCBjZXJ0YWluIGVsZW1lbnRzIGNhbm5vdCByZW5kZXIgYWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgnKicpLlxuICovXG5cbnZhciBzaG91bGRXcmFwID0ge307XG5cbnZhciBzZWxlY3RXcmFwID0gWzEsICc8c2VsZWN0IG11bHRpcGxlPVwidHJ1ZVwiPicsICc8L3NlbGVjdD4nXTtcbnZhciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTtcbnZhciB0cldyYXAgPSBbMywgJzx0YWJsZT48dGJvZHk+PHRyPicsICc8L3RyPjwvdGJvZHk+PC90YWJsZT4nXTtcblxudmFyIHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2Zz4nXTtcblxudmFyIG1hcmt1cFdyYXAgPSB7XG4gICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sXG5cbiAgJ2FyZWEnOiBbMSwgJzxtYXA+JywgJzwvbWFwPiddLFxuICAnY29sJzogWzIsICc8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sXG4gICdsZWdlbmQnOiBbMSwgJzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSxcbiAgJ3BhcmFtJzogWzEsICc8b2JqZWN0PicsICc8L29iamVjdD4nXSxcbiAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5PicsICc8L3Rib2R5PjwvdGFibGU+J10sXG5cbiAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCxcbiAgJ29wdGlvbic6IHNlbGVjdFdyYXAsXG5cbiAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsXG4gICdjb2xncm91cCc6IHRhYmxlV3JhcCxcbiAgJ3Rib2R5JzogdGFibGVXcmFwLFxuICAndGZvb3QnOiB0YWJsZVdyYXAsXG4gICd0aGVhZCc6IHRhYmxlV3JhcCxcblxuICAndGQnOiB0cldyYXAsXG4gICd0aCc6IHRyV3JhcFxufTtcblxuLy8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cgdGhleSdsbCBhbHdheXMgbmVlZCB0byBiZSB3cmFwcGVkXG4vLyBjb25zaXN0ZW50bHkuIElmIHRoZXkgYXJlIGNyZWF0ZWQgaW5zaWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGluXG4vLyB0aGUgd3JvbmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuXG52YXIgc3ZnRWxlbWVudHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycsICdpbWFnZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0ZXJuJywgJ3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdzdG9wJywgJ3RleHQnLCAndHNwYW4nXTtcbnN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG4gIG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDtcbiAgc2hvdWxkV3JhcFtub2RlTmFtZV0gPSB0cnVlO1xufSk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuXG4gKlxuICogTk9URTogVGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3VycmVudCBicm93c2VyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2UgYG5vZGVOYW1lYC5cbiAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiwgaWYgYXBwbGljYWJsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkge1xuICAhISFkdW1teU5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAoIW1hcmt1cFdyYXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgbm9kZU5hbWUgPSAnKic7XG4gIH1cbiAgaWYgKCFzaG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgIGlmIChub2RlTmFtZSA9PT0gJyonKSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+JztcbiAgICB9IGVsc2Uge1xuICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1lICsgJz48LycgKyBub2RlTmFtZSArICc+JztcbiAgICB9XG4gICAgc2hvdWxkV3JhcFtub2RlTmFtZV0gPSAhZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7XG4gIH1cbiAgcmV0dXJuIHNob3VsZFdyYXBbbm9kZU5hbWVdID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcmt1cFdyYXA7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTluWlhSTllYSnJkWEJYY21Gd0xtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1oyVjBUV0Z5YTNWd1YzSmhjRnh1SUNvdlhHNWNiaThxWlhOc2FXNTBMV1JwYzJGaWJHVWdabUl0ZDNkM0wzVnVjMkZtWlMxb2RHMXNJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOUZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQ2NwTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXBiblpoY21saGJuUW5LVHRjYmx4dUx5b3FYRzRnS2lCRWRXMXRlU0JqYjI1MFlXbHVaWElnZFhObFpDQjBieUJrWlhSbFkzUWdkMmhwWTJnZ2QzSmhjSE1nWVhKbElHNWxZMlZ6YzJGeWVTNWNiaUFxTDF4dWRtRnlJR1IxYlcxNVRtOWtaU0E5SUVWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MExtTmhibFZ6WlVSUFRTQS9JR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb0oyUnBkaWNwSURvZ2JuVnNiRHRjYmx4dUx5b3FYRzRnS2lCVGIyMWxJR0p5YjNkelpYSnpJR05oYm01dmRDQjFjMlVnWUdsdWJtVnlTRlJOVEdBZ2RHOGdjbVZ1WkdWeUlHTmxjblJoYVc0Z1pXeGxiV1Z1ZEhNZ2MzUmhibVJoYkc5dVpTeGNiaUFxSUhOdklIZGxJSGR5WVhBZ2RHaGxiU3dnY21WdVpHVnlJSFJvWlNCM2NtRndjR1ZrSUc1dlpHVnpMQ0IwYUdWdUlHVjRkSEpoWTNRZ2RHaGxJR1JsYzJseVpXUWdibTlrWlM1Y2JpQXFYRzRnS2lCSmJpQkpSVGdzSUdObGNuUmhhVzRnWld4bGJXVnVkSE1nWTJGdWJtOTBJSEpsYm1SbGNpQmhiRzl1WlN3Z2MyOGdkM0poY0NCaGJHd2daV3hsYldWdWRITWdLQ2NxSnlrdVhHNGdLaTljYmx4dWRtRnlJSE5vYjNWc1pGZHlZWEFnUFNCN2ZUdGNibHh1ZG1GeUlITmxiR1ZqZEZkeVlYQWdQU0JiTVN3Z0p6eHpaV3hsWTNRZ2JYVnNkR2x3YkdVOVhDSjBjblZsWENJK0p5d2dKend2YzJWc1pXTjBQaWRkTzF4dWRtRnlJSFJoWW14bFYzSmhjQ0E5SUZzeExDQW5QSFJoWW14bFBpY3NJQ2M4TDNSaFlteGxQaWRkTzF4dWRtRnlJSFJ5VjNKaGNDQTlJRnN6TENBblBIUmhZbXhsUGp4MFltOWtlVDQ4ZEhJK0p5d2dKend2ZEhJK1BDOTBZbTlrZVQ0OEwzUmhZbXhsUGlkZE8xeHVYRzUyWVhJZ2MzWm5WM0poY0NBOUlGc3hMQ0FuUEhOMlp5QjRiV3h1Y3oxY0ltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNablhDSStKeXdnSnp3dmMzWm5QaWRkTzF4dVhHNTJZWElnYldGeWEzVndWM0poY0NBOUlIdGNiaUFnSnlvbk9pQmJNU3dnSno4OFpHbDJQaWNzSUNjOEwyUnBkajRuWFN4Y2JseHVJQ0FuWVhKbFlTYzZJRnN4TENBblBHMWhjRDRuTENBblBDOXRZWEErSjEwc1hHNGdJQ2RqYjJ3bk9pQmJNaXdnSnp4MFlXSnNaVDQ4ZEdKdlpIaytQQzkwWW05a2VUNDhZMjlzWjNKdmRYQStKeXdnSnp3dlkyOXNaM0p2ZFhBK1BDOTBZV0pzWlQ0blhTeGNiaUFnSjJ4bFoyVnVaQ2M2SUZzeExDQW5QR1pwWld4a2MyVjBQaWNzSUNjOEwyWnBaV3hrYzJWMFBpZGRMRnh1SUNBbmNHRnlZVzBuT2lCYk1Td2dKenh2WW1wbFkzUStKeXdnSnp3dmIySnFaV04wUGlkZExGeHVJQ0FuZEhJbk9pQmJNaXdnSnp4MFlXSnNaVDQ4ZEdKdlpIaytKeXdnSnp3dmRHSnZaSGsrUEM5MFlXSnNaVDRuWFN4Y2JseHVJQ0FuYjNCMFozSnZkWEFuT2lCelpXeGxZM1JYY21Gd0xGeHVJQ0FuYjNCMGFXOXVKem9nYzJWc1pXTjBWM0poY0N4Y2JseHVJQ0FuWTJGd2RHbHZiaWM2SUhSaFlteGxWM0poY0N4Y2JpQWdKMk52YkdkeWIzVndKem9nZEdGaWJHVlhjbUZ3TEZ4dUlDQW5kR0p2Wkhrbk9pQjBZV0pzWlZkeVlYQXNYRzRnSUNkMFptOXZkQ2M2SUhSaFlteGxWM0poY0N4Y2JpQWdKM1JvWldGa0p6b2dkR0ZpYkdWWGNtRndMRnh1WEc0Z0lDZDBaQ2M2SUhSeVYzSmhjQ3hjYmlBZ0ozUm9Kem9nZEhKWGNtRndYRzU5TzF4dVhHNHZMeUJKYm1sMGFXRnNhWHBsSUhSb1pTQlRWa2NnWld4bGJXVnVkSE1nYzJsdVkyVWdkMlVnYTI1dmR5QjBhR1Y1SjJ4c0lHRnNkMkY1Y3lCdVpXVmtJSFJ2SUdKbElIZHlZWEJ3WldSY2JpOHZJR052Ym5OcGMzUmxiblJzZVM0Z1NXWWdkR2hsZVNCaGNtVWdZM0psWVhSbFpDQnBibk5wWkdVZ1lTQThaR2wyUGlCMGFHVjVJSGRwYkd3Z1ltVWdhVzVwZEdsaGJHbDZaV1FnYVc1Y2JpOHZJSFJvWlNCM2NtOXVaeUJ1WVcxbGMzQmhZMlVnS0dGdVpDQjNhV3hzSUc1dmRDQmthWE53YkdGNUtTNWNiblpoY2lCemRtZEZiR1Z0Wlc1MGN5QTlJRnNuWTJseVkyeGxKeXdnSjJOc2FYQlFZWFJvSnl3Z0oyUmxabk1uTENBblpXeHNhWEJ6WlNjc0lDZG5KeXdnSjJsdFlXZGxKeXdnSjJ4cGJtVW5MQ0FuYkdsdVpXRnlSM0poWkdsbGJuUW5MQ0FuYldGemF5Y3NJQ2R3WVhSb0p5d2dKM0JoZEhSbGNtNG5MQ0FuY0c5c2VXZHZiaWNzSUNkd2IyeDViR2x1WlNjc0lDZHlZV1JwWVd4SGNtRmthV1Z1ZENjc0lDZHlaV04wSnl3Z0ozTjBiM0FuTENBbmRHVjRkQ2NzSUNkMGMzQmhiaWRkTzF4dWMzWm5SV3hsYldWdWRITXVabTl5UldGamFDaG1kVzVqZEdsdmJpQW9ibTlrWlU1aGJXVXBJSHRjYmlBZ2JXRnlhM1Z3VjNKaGNGdHViMlJsVG1GdFpWMGdQU0J6ZG1kWGNtRndPMXh1SUNCemFHOTFiR1JYY21Gd1cyNXZaR1ZPWVcxbFhTQTlJSFJ5ZFdVN1hHNTlLVHRjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCdFlYSnJkWEFnZDNKaGNDQmpiMjVtYVdkMWNtRjBhVzl1SUdadmNpQjBhR1VnYzNWd2NHeHBaV1FnWUc1dlpHVk9ZVzFsWUM1Y2JpQXFYRzRnS2lCT1QxUkZPaUJVYUdseklHeGhlbWxzZVNCa1pYUmxZM1J6SUhkb2FXTm9JSGR5WVhCeklHRnlaU0J1WldObGMzTmhjbmtnWm05eUlIUm9aU0JqZFhKeVpXNTBJR0p5YjNkelpYSXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNXZaR1ZPWVcxbElFeHZkMlZ5WTJGelpTQmdibTlrWlU1aGJXVmdMbHh1SUNvZ1FISmxkSFZ5YmlCN1AyRnljbUY1ZlNCTllYSnJkWEFnZDNKaGNDQmpiMjVtYVdkMWNtRjBhVzl1TENCcFppQmhjSEJzYVdOaFlteGxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJOWVhKcmRYQlhjbUZ3S0c1dlpHVk9ZVzFsS1NCN1hHNGdJQ0VoSVdSMWJXMTVUbTlrWlNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2ROWVhKcmRYQWdkM0poY0hCcGJtY2dibTlrWlNCdWIzUWdhVzVwZEdsaGJHbDZaV1FuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUdsbUlDZ2hiV0Z5YTNWd1YzSmhjQzVvWVhOUGQyNVFjbTl3WlhKMGVTaHViMlJsVG1GdFpTa3BJSHRjYmlBZ0lDQnViMlJsVG1GdFpTQTlJQ2NxSnp0Y2JpQWdmVnh1SUNCcFppQW9JWE5vYjNWc1pGZHlZWEF1YUdGelQzZHVVSEp2Y0dWeWRIa29ibTlrWlU1aGJXVXBLU0I3WEc0Z0lDQWdhV1lnS0c1dlpHVk9ZVzFsSUQwOVBTQW5LaWNwSUh0Y2JpQWdJQ0FnSUdSMWJXMTVUbTlrWlM1cGJtNWxja2hVVFV3Z1BTQW5QR3hwYm1zZ0x6NG5PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCa2RXMXRlVTV2WkdVdWFXNXVaWEpJVkUxTUlEMGdKenduSUNzZ2JtOWtaVTVoYldVZ0t5QW5Qand2SnlBcklHNXZaR1ZPWVcxbElDc2dKejRuTzF4dUlDQWdJSDFjYmlBZ0lDQnphRzkxYkdSWGNtRndXMjV2WkdWT1lXMWxYU0E5SUNGa2RXMXRlVTV2WkdVdVptbHljM1JEYUdsc1pEdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2MyaHZkV3hrVjNKaGNGdHViMlJsVG1GdFpWMGdQeUJ0WVhKcmRYQlhjbUZ3VzI1dlpHVk9ZVzFsWFNBNklHNTFiR3c3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdaMlYwVFdGeWEzVndWM0poY0RzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb25cbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdldHMgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQb3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhleVxuICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0aGUgZWxlbWVudCBib3VuZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZ1xuICogaW5lcnRpYWwgc2Nyb2xsaW5nKS5cbiAqXG4gKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50fSBzY3JvbGxhYmxlXG4gKiBAcmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuXG4gKi9cbmZ1bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHNjcm9sbGFibGUpIHtcbiAgaWYgKHNjcm9sbGFibGUgPT09IHdpbmRvdykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiB3aW5kb3cucGFnZVhPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICB5OiB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzY3JvbGxhYmxlLnNjcm9sbExlZnQsXG4gICAgeTogc2Nyb2xsYWJsZS5zY3JvbGxUb3BcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaHlwaGVuYXRlXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF91cHBlcmNhc2VQYXR0ZXJuID0gLyhbQS1aXSkvZztcblxuLyoqXG4gKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBzdHJpbmcsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqXG4gKiBGb3IgQ1NTIHN0eWxlIG5hbWVzLCB1c2UgYGh5cGhlbmF0ZVN0eWxlTmFtZWAgaW5zdGVhZCB3aGljaCB3b3JrcyBwcm9wZXJseVxuICogd2l0aCBhbGwgdmVuZG9yIHByZWZpeGVzLCBpbmNsdWRpbmcgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGh5cGhlbmF0ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF91cHBlcmNhc2VQYXR0ZXJuLCAnLSQxJykudG9Mb3dlckNhc2UoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGh5cGhlbmF0ZVN0eWxlTmFtZVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBoeXBoZW5hdGUgPSByZXF1aXJlKCcuL2h5cGhlbmF0ZScpO1xuXG52YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuXG4vKipcbiAqIEh5cGhlbmF0ZXMgYSBjYW1lbGNhc2VkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdiYWNrZ3JvdW5kQ29sb3InKVxuICogICA8IFwiYmFja2dyb3VuZC1jb2xvclwiXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdNb3pUcmFuc2l0aW9uJylcbiAqICAgPCBcIi1tb3otdHJhbnNpdGlvblwiXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdtc1RyYW5zaXRpb24nKVxuICogICA8IFwiLW1zLXRyYW5zaXRpb25cIlxuICpcbiAqIEFzIE1vZGVybml6ciBzdWdnZXN0cyAoaHR0cDovL21vZGVybml6ci5jb20vZG9jcy8jcHJlZml4ZWQpLCBhbiBgbXNgIHByZWZpeFxuICogaXMgY29udmVydGVkIHRvIGAtbXMtYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZShzdHJpbmcpLnJlcGxhY2UobXNQYXR0ZXJuLCAnLW1zLScpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZVN0eWxlTmFtZTsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGludmFyaWFudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIGludmFyaWFudCA9IGZ1bmN0aW9uIChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0ludmFyaWFudCBWaW9sYXRpb246ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5bVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdhVzUyWVhKcFlXNTBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNHZLaXBjYmlBcUlGVnpaU0JwYm5aaGNtbGhiblFvS1NCMGJ5QmhjM05sY25RZ2MzUmhkR1VnZDJocFkyZ2dlVzkxY2lCd2NtOW5jbUZ0SUdGemMzVnRaWE1nZEc4Z1ltVWdkSEoxWlM1Y2JpQXFYRzRnS2lCUWNtOTJhV1JsSUhOd2NtbHVkR1l0YzNSNWJHVWdabTl5YldGMElDaHZibXg1SUNWeklHbHpJSE4xY0hCdmNuUmxaQ2tnWVc1a0lHRnlaM1Z0Wlc1MGMxeHVJQ29nZEc4Z2NISnZkbWxrWlNCcGJtWnZjbTFoZEdsdmJpQmhZbTkxZENCM2FHRjBJR0p5YjJ0bElHRnVaQ0IzYUdGMElIbHZkU0IzWlhKbFhHNGdLaUJsZUhCbFkzUnBibWN1WEc0Z0tseHVJQ29nVkdobElHbHVkbUZ5YVdGdWRDQnRaWE56WVdkbElIZHBiR3dnWW1VZ2MzUnlhWEJ3WldRZ2FXNGdjSEp2WkhWamRHbHZiaXdnWW5WMElIUm9aU0JwYm5aaGNtbGhiblJjYmlBcUlIZHBiR3dnY21WdFlXbHVJSFJ2SUdWdWMzVnlaU0JzYjJkcFl5QmtiMlZ6SUc1dmRDQmthV1ptWlhJZ2FXNGdjSEp2WkhWamRHbHZiaTVjYmlBcUwxeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdablZ1WTNScGIyNGdLR052Ym1ScGRHbHZiaXdnWm05eWJXRjBMQ0JoTENCaUxDQmpMQ0JrTENCbExDQm1LU0I3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnYVdZZ0tHWnZjbTFoZENBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMmx1ZG1GeWFXRnVkQ0J5WlhGMWFYSmxjeUJoYmlCbGNuSnZjaUJ0WlhOellXZGxJR0Z5WjNWdFpXNTBKeWs3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYVdZZ0tDRmpiMjVrYVhScGIyNHBJSHRjYmlBZ0lDQjJZWElnWlhKeWIzSTdYRzRnSUNBZ2FXWWdLR1p2Y20xaGRDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCbGNuSnZjaUE5SUc1bGR5QkZjbkp2Y2lnblRXbHVhV1pwWldRZ1pYaGpaWEIwYVc5dUlHOWpZM1Z5Y21Wa095QjFjMlVnZEdobElHNXZiaTF0YVc1cFptbGxaQ0JrWlhZZ1pXNTJhWEp2Ym0xbGJuUWdKeUFySUNkbWIzSWdkR2hsSUdaMWJHd2daWEp5YjNJZ2JXVnpjMkZuWlNCaGJtUWdZV1JrYVhScGIyNWhiQ0JvWld4d1puVnNJSGRoY201cGJtZHpMaWNwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjJZWElnWVhKbmN5QTlJRnRoTENCaUxDQmpMQ0JrTENCbExDQm1YVHRjYmlBZ0lDQWdJSFpoY2lCaGNtZEpibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQmxjbkp2Y2lBOUlHNWxkeUJGY25KdmNpZ25TVzUyWVhKcFlXNTBJRlpwYjJ4aGRHbHZiam9nSnlBcklHWnZjbTFoZEM1eVpYQnNZV05sS0M4bGN5OW5MQ0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGNtZHpXMkZ5WjBsdVpHVjRLeXRkTzF4dUlDQWdJQ0FnZlNrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdWeWNtOXlMbVp5WVcxbGMxUnZVRzl3SUQwZ01Uc2dMeThnZDJVZ1pHOXVKM1FnWTJGeVpTQmhZbTkxZENCcGJuWmhjbWxoYm5RbmN5QnZkMjRnWm5KaGJXVmNiaUFnSUNCMGFISnZkeUJsY25KdmNqdGNiaUFnZlZ4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JwYm5aaGNtbGhiblE3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBpc05vZGVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuLyoqXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSBub2RlLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGlzTm9kZShvYmplY3QpIHtcbiAgcmV0dXJuICEhKG9iamVjdCAmJiAodHlwZW9mIE5vZGUgPT09ICdmdW5jdGlvbicgPyBvYmplY3QgaW5zdGFuY2VvZiBOb2RlIDogdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iamVjdC5ub2RlVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIG9iamVjdC5ub2RlTmFtZSA9PT0gJ3N0cmluZycpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05vZGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGlzVGV4dE5vZGVcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9pc05vZGUnKTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4dE5vZGUob2JqZWN0KSB7XG4gIHJldHVybiBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0gMztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1RleHROb2RlOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUga2V5TWlycm9yXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBlbnVtZXJhdGlvbiB3aXRoIGtleXMgZXF1YWwgdG8gdGhlaXIgdmFsdWUuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogICB2YXIgQ09MT1JTID0ga2V5TWlycm9yKHtibHVlOiBudWxsLCByZWQ6IG51bGx9KTtcbiAqICAgdmFyIG15Q29sb3IgPSBDT0xPUlMuYmx1ZTtcbiAqICAgdmFyIGlzQ29sb3JWYWxpZCA9ICEhQ09MT1JTW215Q29sb3JdO1xuICpcbiAqIFRoZSBsYXN0IGxpbmUgY291bGQgbm90IGJlIHBlcmZvcm1lZCBpZiB0aGUgdmFsdWVzIG9mIHRoZSBnZW5lcmF0ZWQgZW51bSB3ZXJlXG4gKiBub3QgZXF1YWwgdG8gdGhlaXIga2V5cy5cbiAqXG4gKiAgIElucHV0OiAge2tleTE6IHZhbDEsIGtleTI6IHZhbDJ9XG4gKiAgIE91dHB1dDoge2tleTE6IGtleTEsIGtleTI6IGtleTJ9XG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9ialxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG52YXIga2V5TWlycm9yID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgcmV0ID0ge307XG4gIHZhciBrZXk7XG4gICEob2JqIGluc3RhbmNlb2YgT2JqZWN0ICYmICFBcnJheS5pc0FycmF5KG9iaikpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2tleU1pcnJvciguLi4pOiBBcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGZvciAoa2V5IGluIG9iaikge1xuICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXRba2V5XSA9IGtleTtcbiAgfVxuICByZXR1cm4gcmV0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBrZXlNaXJyb3I7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTltWW1wekwyeHBZaTlyWlhsTmFYSnliM0l1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJR3RsZVUxcGNuSnZjbHh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNHZLaXBjYmlBcUlFTnZibk4wY25WamRITWdZVzRnWlc1MWJXVnlZWFJwYjI0Z2QybDBhQ0JyWlhseklHVnhkV0ZzSUhSdklIUm9aV2x5SUhaaGJIVmxMbHh1SUNwY2JpQXFJRVp2Y2lCbGVHRnRjR3hsT2x4dUlDcGNiaUFxSUNBZ2RtRnlJRU5QVEU5U1V5QTlJR3RsZVUxcGNuSnZjaWg3WW14MVpUb2diblZzYkN3Z2NtVmtPaUJ1ZFd4c2ZTazdYRzRnS2lBZ0lIWmhjaUJ0ZVVOdmJHOXlJRDBnUTA5TVQxSlRMbUpzZFdVN1hHNGdLaUFnSUhaaGNpQnBjME52Ykc5eVZtRnNhV1FnUFNBaElVTlBURTlTVTF0dGVVTnZiRzl5WFR0Y2JpQXFYRzRnS2lCVWFHVWdiR0Z6ZENCc2FXNWxJR052ZFd4a0lHNXZkQ0JpWlNCd1pYSm1iM0p0WldRZ2FXWWdkR2hsSUhaaGJIVmxjeUJ2WmlCMGFHVWdaMlZ1WlhKaGRHVmtJR1Z1ZFcwZ2QyVnlaVnh1SUNvZ2JtOTBJR1Z4ZFdGc0lIUnZJSFJvWldseUlHdGxlWE11WEc0Z0tseHVJQ29nSUNCSmJuQjFkRG9nSUh0clpYa3hPaUIyWVd3eExDQnJaWGt5T2lCMllXd3lmVnh1SUNvZ0lDQlBkWFJ3ZFhRNklIdHJaWGt4T2lCclpYa3hMQ0JyWlhreU9pQnJaWGt5ZlZ4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J2WW1wY2JpQXFJRUJ5WlhSMWNtNGdlMjlpYW1WamRIMWNiaUFxTDF4dWRtRnlJR3RsZVUxcGNuSnZjaUE5SUdaMWJtTjBhVzl1SUNodlltb3BJSHRjYmlBZ2RtRnlJSEpsZENBOUlIdDlPMXh1SUNCMllYSWdhMlY1TzF4dUlDQWhLRzlpYWlCcGJuTjBZVzVqWlc5bUlFOWlhbVZqZENBbUppQWhRWEp5WVhrdWFYTkJjbkpoZVNodlltb3BLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHJaWGxOYVhKeWIzSW9MaTR1S1RvZ1FYSm5kVzFsYm5RZ2JYVnpkQ0JpWlNCaGJpQnZZbXBsWTNRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQm1iM0lnS0d0bGVTQnBiaUJ2WW1vcElIdGNiaUFnSUNCcFppQW9JVzlpYWk1b1lYTlBkMjVRY205d1pYSjBlU2hyWlhrcEtTQjdYRzRnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMFcydGxlVjBnUFNCclpYazdYRzRnSUgxY2JpQWdjbVYwZFhKdUlISmxkRHRjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhMlY1VFdseWNtOXlPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBrZXlPZlxuICovXG5cbi8qKlxuICogQWxsb3dzIGV4dHJhY3Rpb24gb2YgYSBtaW5pZmllZCBrZXkuIExldCdzIHRoZSBidWlsZCBzeXN0ZW0gbWluaWZ5IGtleXNcbiAqIHdpdGhvdXQgbG9zaW5nIHRoZSBhYmlsaXR5IHRvIGR5bmFtaWNhbGx5IHVzZSBrZXkgc3RyaW5ncyBhcyB2YWx1ZXNcbiAqIHRoZW1zZWx2ZXMuIFBhc3MgaW4gYW4gb2JqZWN0IHdpdGggYSBzaW5nbGUga2V5L3ZhbCBwYWlyIGFuZCBpdCB3aWxsIHJldHVyblxuICogeW91IHRoZSBzdHJpbmcga2V5IG9mIHRoYXQgc2luZ2xlIHJlY29yZC4gU3VwcG9zZSB5b3Ugd2FudCB0byBncmFiIHRoZVxuICogdmFsdWUgZm9yIGEga2V5ICdjbGFzc05hbWUnIGluc2lkZSBvZiBhbiBvYmplY3QuIEtleS92YWwgbWluaWZpY2F0aW9uIG1heVxuICogaGF2ZSBhbGlhc2VkIHRoYXQga2V5IHRvIGJlICd4YTEyJy4ga2V5T2Yoe2NsYXNzTmFtZTogbnVsbH0pIHdpbGwgcmV0dXJuXG4gKiAneGExMicgaW4gdGhhdCBjYXNlLiBSZXNvbHZlIGtleXMgeW91IHdhbnQgdG8gdXNlIG9uY2UgYXQgc3RhcnR1cCB0aW1lLCB0aGVuXG4gKiByZXVzZSB0aG9zZSByZXNvbHV0aW9ucy5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBrZXlPZiA9IGZ1bmN0aW9uIChvbmVLZXlPYmopIHtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gb25lS2V5T2JqKSB7XG4gICAgaWYgKCFvbmVLZXlPYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGtleU9mOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBtYXBPYmplY3RcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogRXhlY3V0ZXMgdGhlIHByb3ZpZGVkIGBjYWxsYmFja2Agb25jZSBmb3IgZWFjaCBlbnVtZXJhYmxlIG93biBwcm9wZXJ0eSBpbiB0aGVcbiAqIG9iamVjdCBhbmQgY29uc3RydWN0cyBhIG5ldyBvYmplY3QgZnJvbSB0aGUgcmVzdWx0cy4gVGhlIGBjYWxsYmFja2AgaXNcbiAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKlxuICogIC0gdGhlIHByb3BlcnR5IHZhbHVlXG4gKiAgLSB0aGUgcHJvcGVydHkgbmFtZVxuICogIC0gdGhlIG9iamVjdCBiZWluZyB0cmF2ZXJzZWRcbiAqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgYXJlIGFkZGVkIGFmdGVyIHRoZSBjYWxsIHRvIGBtYXBPYmplY3RgIHdpbGwgbm90IGJlIHZpc2l0ZWRcbiAqIGJ5IGBjYWxsYmFja2AuIElmIHRoZSB2YWx1ZXMgb2YgZXhpc3RpbmcgcHJvcGVydGllcyBhcmUgY2hhbmdlZCwgdGhlIHZhbHVlXG4gKiBwYXNzZWQgdG8gYGNhbGxiYWNrYCB3aWxsIGJlIHRoZSB2YWx1ZSBhdCB0aGUgdGltZSBgbWFwT2JqZWN0YCB2aXNpdHMgdGhlbS5cbiAqIFByb3BlcnRpZXMgdGhhdCBhcmUgZGVsZXRlZCBiZWZvcmUgYmVpbmcgdmlzaXRlZCBhcmUgbm90IHZpc2l0ZWQuXG4gKlxuICogQGdyZXAgZnVuY3Rpb24gb2JqZWN0TWFwKClcbiAqIEBncmVwIGZ1bmN0aW9uIG9iak1hcCgpXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcGFyYW0geyp9IGNvbnRleHRcbiAqIEByZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG1hcE9iamVjdChvYmplY3QsIGNhbGxiYWNrLCBjb250ZXh0KSB7XG4gIGlmICghb2JqZWN0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmb3IgKHZhciBuYW1lIGluIG9iamVjdCkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgbmFtZSkpIHtcbiAgICAgIHJlc3VsdFtuYW1lXSA9IGNhbGxiYWNrLmNhbGwoY29udGV4dCwgb2JqZWN0W25hbWVdLCBuYW1lLCBvYmplY3QpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcE9iamVjdDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgbWVtb2l6ZVN0cmluZ09ubHlcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1lbW9pemVzIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmluZyBhcmd1bWVudC5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVTdHJpbmdPbmx5KGNhbGxiYWNrKSB7XG4gIHZhciBjYWNoZSA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIGlmICghY2FjaGUuaGFzT3duUHJvcGVydHkoc3RyaW5nKSkge1xuICAgICAgY2FjaGVbc3RyaW5nXSA9IGNhbGxiYWNrLmNhbGwodGhpcywgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlW3N0cmluZ107XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZVN0cmluZ09ubHk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHBlcmZvcm1hbmNlXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgcGVyZm9ybWFuY2U7XG5cbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgcGVyZm9ybWFuY2UgPSB3aW5kb3cucGVyZm9ybWFuY2UgfHwgd2luZG93Lm1zUGVyZm9ybWFuY2UgfHwgd2luZG93LndlYmtpdFBlcmZvcm1hbmNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBlcmZvcm1hbmNlIHx8IHt9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBwZXJmb3JtYW5jZU5vd1xuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwZXJmb3JtYW5jZSA9IHJlcXVpcmUoJy4vcGVyZm9ybWFuY2UnKTtcbnZhciBjdXJQZXJmb3JtYW5jZSA9IHBlcmZvcm1hbmNlO1xuXG4vKipcbiAqIERldGVjdCBpZiB3ZSBjYW4gdXNlIGB3aW5kb3cucGVyZm9ybWFuY2Uubm93KClgIGFuZCBncmFjZWZ1bGx5IGZhbGxiYWNrIHRvXG4gKiBgRGF0ZS5ub3coKWAgaWYgaXQgZG9lc24ndCBleGlzdC4gV2UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggPCAxNSBmb3Igbm93XG4gKiBiZWNhdXNlIG9mIEZhY2Vib29rJ3MgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS5cbiAqL1xuaWYgKCFjdXJQZXJmb3JtYW5jZSB8fCAhY3VyUGVyZm9ybWFuY2Uubm93KSB7XG4gIGN1clBlcmZvcm1hbmNlID0gRGF0ZTtcbn1cblxudmFyIHBlcmZvcm1hbmNlTm93ID0gY3VyUGVyZm9ybWFuY2Uubm93LmJpbmQoY3VyUGVyZm9ybWFuY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBlcmZvcm1hbmNlTm93OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBzaGFsbG93RXF1YWxcbiAqIEB0eXBlY2hlY2tzXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogUGVyZm9ybXMgZXF1YWxpdHkgYnkgaXRlcmF0aW5nIHRocm91Z2gga2V5cyBvbiBhbiBvYmplY3QgYW5kIHJldHVybmluZyBmYWxzZVxuICogd2hlbiBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3RseSBlcXVhbCBiZXR3ZWVuIHRoZSBhcmd1bWVudHMuXG4gKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWVzIG9mIGFsbCBrZXlzIGFyZSBzdHJpY3RseSBlcXVhbC5cbiAqL1xuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIpIHtcbiAgaWYgKG9iakEgPT09IG9iakIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuICB2YXIgYkhhc093blByb3BlcnR5ID0gaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghYkhhc093blByb3BlcnR5KGtleXNBW2ldKSB8fCBvYmpBW2tleXNBW2ldXSAhPT0gb2JqQltrZXlzQVtpXV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaGFsbG93RXF1YWw7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB0b0FycmF5XG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQ29udmVydCBhcnJheS1saWtlIG9iamVjdHMgdG8gYXJyYXlzLlxuICpcbiAqIFRoaXMgQVBJIGFzc3VtZXMgdGhlIGNhbGxlciBrbm93cyB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgdHlwZS4gRm9yIGxlc3NcbiAqIHdlbGwgZGVmaW5lZCBpbnB1dHMgdXNlIGNyZWF0ZUFycmF5RnJvbU1peGVkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufGZpbGVsaXN0fSBvYmpcbiAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblxuICAvLyBTb21lIGJyb3dzZSBidWlsdGluIG9iamVjdHMgY2FuIHJlcG9ydCB0eXBlb2YgJ2Z1bmN0aW9uJyAoZS5nLiBOb2RlTGlzdCBpblxuICAvLyBvbGQgdmVyc2lvbnMgb2YgU2FmYXJpKS5cbiAgISghQXJyYXkuaXNBcnJheShvYmopICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogQXJyYXktbGlrZSBvYmplY3QgZXhwZWN0ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgISh0eXBlb2YgbGVuZ3RoID09PSAnbnVtYmVyJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IG5lZWRzIGEgbGVuZ3RoIHByb3BlcnR5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICEobGVuZ3RoID09PSAwIHx8IGxlbmd0aCAtIDEgaW4gb2JqKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3Qgc2hvdWxkIGhhdmUga2V5cyBmb3IgaW5kaWNlcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAvLyBPbGQgSUUgZG9lc24ndCBnaXZlIGNvbGxlY3Rpb25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlucHV0c1xuICAvLyB3aXRob3V0IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdodCB0byB0aGVcbiAgLy8gZmFsbGJhY2suXG4gIGlmIChvYmouaGFzT3duUHJvcGVydHkpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkjc2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGwgYmFjayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBhbGwga2V5cyBoYXZlIGEgdmFsdWUsXG4gIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNwYXJzZWx5IHBvcHVsYXRlZCBpbnB1dHMuXG4gIHZhciByZXQgPSBBcnJheShsZW5ndGgpO1xuICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbGVuZ3RoOyBpaSsrKSB7XG4gICAgcmV0W2lpXSA9IG9ialtpaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0FycmF5O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5bVltcHpMMnhwWWk5MGIwRnljbUY1TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0IwYjBGeWNtRjVYRzRnS2lCQWRIbHdaV05vWldOcmMxeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nUTI5dWRtVnlkQ0JoY25KaGVTMXNhV3RsSUc5aWFtVmpkSE1nZEc4Z1lYSnlZWGx6TGx4dUlDcGNiaUFxSUZSb2FYTWdRVkJKSUdGemMzVnRaWE1nZEdobElHTmhiR3hsY2lCcmJtOTNjeUIwYUdVZ1kyOXVkR1Z1ZEhNZ2IyWWdkR2hsSUdSaGRHRWdkSGx3WlM0Z1JtOXlJR3hsYzNOY2JpQXFJSGRsYkd3Z1pHVm1hVzVsWkNCcGJuQjFkSE1nZFhObElHTnlaV0YwWlVGeWNtRjVSbkp2YlUxcGVHVmtMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZHWjFibU4wYVc5dWZHWnBiR1ZzYVhOMGZTQnZZbXBjYmlBcUlFQnlaWFIxY200Z2UyRnljbUY1ZlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUIwYjBGeWNtRjVLRzlpYWlrZ2UxeHVJQ0IyWVhJZ2JHVnVaM1JvSUQwZ2IySnFMbXhsYm1kMGFEdGNibHh1SUNBdkx5QlRiMjFsSUdKeWIzZHpaU0JpZFdsc2RHbHVJRzlpYW1WamRITWdZMkZ1SUhKbGNHOXlkQ0IwZVhCbGIyWWdKMloxYm1OMGFXOXVKeUFvWlM1bkxpQk9iMlJsVEdsemRDQnBibHh1SUNBdkx5QnZiR1FnZG1WeWMybHZibk1nYjJZZ1UyRm1ZWEpwS1M1Y2JpQWdJU2doUVhKeVlYa3VhWE5CY25KaGVTaHZZbW9wSUNZbUlDaDBlWEJsYjJZZ2IySnFJRDA5UFNBbmIySnFaV04wSnlCOGZDQjBlWEJsYjJZZ2IySnFJRDA5UFNBblpuVnVZM1JwYjI0bktTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRHOUJjbkpoZVRvZ1FYSnlZWGt0YkdsclpTQnZZbXBsWTNRZ1pYaHdaV04wWldRbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJU2gwZVhCbGIyWWdiR1Z1WjNSb0lEMDlQU0FuYm5WdFltVnlKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5kRzlCY25KaGVUb2dUMkpxWldOMElHNWxaV1J6SUdFZ2JHVnVaM1JvSUhCeWIzQmxjblI1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDRW9iR1Z1WjNSb0lEMDlQU0F3SUh4OElHeGxibWQwYUNBdElERWdhVzRnYjJKcUtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkMGIwRnljbUY1T2lCUFltcGxZM1FnYzJodmRXeGtJR2hoZG1VZ2EyVjVjeUJtYjNJZ2FXNWthV05sY3ljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQXZMeUJQYkdRZ1NVVWdaRzlsYzI0bmRDQm5hWFpsSUdOdmJHeGxZM1JwYjI1eklHRmpZMlZ6Y3lCMGJ5Qm9ZWE5QZDI1UWNtOXdaWEowZVM0Z1FYTnpkVzFsSUdsdWNIVjBjMXh1SUNBdkx5QjNhWFJvYjNWMElHMWxkR2h2WkNCM2FXeHNJSFJvY205M0lHUjFjbWx1WnlCMGFHVWdjMnhwWTJVZ1kyRnNiQ0JoYm1RZ2MydHBjQ0J6ZEhKaGFXZG9kQ0IwYnlCMGFHVmNiaUFnTHk4Z1ptRnNiR0poWTJzdVhHNGdJR2xtSUNodlltb3VhR0Z6VDNkdVVISnZjR1Z5ZEhrcElIdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHOWlhaWs3WEc0Z0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4dUlDQWdJQ0FnTHk4Z1NVVWdQQ0E1SUdSdlpYTWdibTkwSUhOMWNIQnZjblFnUVhKeVlYa2pjMnhwWTJVZ2IyNGdZMjlzYkdWamRHbHZibk1nYjJKcVpXTjBjMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzh2SUVaaGJHd2dZbUZqYXlCMGJ5QmpiM0I1YVc1bklHdGxlU0JpZVNCclpYa3VJRlJvYVhNZ1lYTnpkVzFsY3lCaGJHd2dhMlY1Y3lCb1lYWmxJR0VnZG1Gc2RXVXNYRzRnSUM4dklITnZJSGRwYkd3Z2JtOTBJSEJ5WlhObGNuWmxJSE53WVhKelpXeDVJSEJ2Y0hWc1lYUmxaQ0JwYm5CMWRITXVYRzRnSUhaaGNpQnlaWFFnUFNCQmNuSmhlU2hzWlc1bmRHZ3BPMXh1SUNCbWIzSWdLSFpoY2lCcGFTQTlJREE3SUdscElEd2diR1Z1WjNSb095QnBhU3NyS1NCN1hHNGdJQ0FnY21WMFcybHBYU0E5SUc5aWFsdHBhVjA3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEpsZER0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0IwYjBGeWNtRjVPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgd2FybmluZ1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCcuL2VtcHR5RnVuY3Rpb24nKTtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB3YXJuaW5nID0gZnVuY3Rpb24gKGNvbmRpdGlvbiwgZm9ybWF0KSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkge1xuICAgICAgcmV0dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHByb3B0eXBlIGNoZWNrLlxuICAgIH1cblxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfSBjYXRjaCAoeCkge31cbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2FybmluZztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OW1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRRdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCM1lYSnVhVzVuWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1pXMXdkSGxHZFc1amRHbHZiaUE5SUhKbGNYVnBjbVVvSnk0dlpXMXdkSGxHZFc1amRHbHZiaWNwTzF4dVhHNHZLaXBjYmlBcUlGTnBiV2xzWVhJZ2RHOGdhVzUyWVhKcFlXNTBJR0oxZENCdmJteDVJR3h2WjNNZ1lTQjNZWEp1YVc1bklHbG1JSFJvWlNCamIyNWthWFJwYjI0Z2FYTWdibTkwSUcxbGRDNWNiaUFxSUZSb2FYTWdZMkZ1SUdKbElIVnpaV1FnZEc4Z2JHOW5JR2x6YzNWbGN5QnBiaUJrWlhabGJHOXdiV1Z1ZENCbGJuWnBjbTl1YldWdWRITWdhVzRnWTNKcGRHbGpZV3hjYmlBcUlIQmhkR2h6TGlCU1pXMXZkbWx1WnlCMGFHVWdiRzluWjJsdVp5QmpiMlJsSUdadmNpQndjbTlrZFdOMGFXOXVJR1Z1ZG1seWIyNXRaVzUwY3lCM2FXeHNJR3RsWlhBZ2RHaGxYRzRnS2lCellXMWxJR3h2WjJsaklHRnVaQ0JtYjJ4c2IzY2dkR2hsSUhOaGJXVWdZMjlrWlNCd1lYUm9jeTVjYmlBcUwxeHVYRzUyWVhJZ2QyRnlibWx1WnlBOUlHVnRjSFI1Um5WdVkzUnBiMjQ3WEc1Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJSGRoY201cGJtY2dQU0JtZFc1amRHbHZiaUFvWTI5dVpHbDBhVzl1TENCbWIzSnRZWFFwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJmYkdWdUlEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDd2dZWEpuY3lBOUlFRnljbUY1S0Y5c1pXNGdQaUF5SUQ4Z1gyeGxiaUF0SURJZ09pQXdLU3dnWDJ0bGVTQTlJREk3SUY5clpYa2dQQ0JmYkdWdU95QmZhMlY1S3lzcElIdGNiaUFnSUNBZ0lHRnlaM05iWDJ0bGVTQXRJREpkSUQwZ1lYSm5kVzFsYm5SelcxOXJaWGxkTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNobWIzSnRZWFFnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZGdkMkZ5Ym1sdVp5aGpiMjVrYVhScGIyNHNJR1p2Y20xaGRDd2dMaTR1WVhKbmN5bGdJSEpsY1hWcGNtVnpJR0VnZDJGeWJtbHVaeUFuSUNzZ0oyMWxjM05oWjJVZ1lYSm5kVzFsYm5RbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9abTl5YldGMExtbHVaR1Y0VDJZb0owWmhhV3hsWkNCRGIyMXdiM05wZEdVZ2NISnZjRlI1Y0dVNklDY3BJRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200N0lDOHZJRWxuYm05eVpTQkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUWdjSEp2Y0hSNWNHVWdZMmhsWTJzdVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRmpiMjVrYVhScGIyNHBJSHRjYmlBZ0lDQWdJSFpoY2lCaGNtZEpibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQjJZWElnYldWemMyRm5aU0E5SUNkWFlYSnVhVzVuT2lBbklDc2dabTl5YldGMExuSmxjR3hoWTJVb0x5VnpMMmNzSUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnlaM05iWVhKblNXNWtaWGdySzEwN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1YzI5c1pTQWhQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2lodFpYTnpZV2RsS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQzh2SUMwdExTQlhaV3hqYjIxbElIUnZJR1JsWW5WbloybHVaeUJTWldGamRDQXRMUzFjYmlBZ0lDQWdJQ0FnTHk4Z1ZHaHBjeUJsY25KdmNpQjNZWE1nZEdoeWIzZHVJR0Z6SUdFZ1kyOXVkbVZ1YVdWdVkyVWdjMjhnZEdoaGRDQjViM1VnWTJGdUlIVnpaU0IwYUdseklITjBZV05yWEc0Z0lDQWdJQ0FnSUM4dklIUnZJR1pwYm1RZ2RHaGxJR05oYkd4emFYUmxJSFJvWVhRZ1kyRjFjMlZrSUhSb2FYTWdkMkZ5Ym1sdVp5QjBieUJtYVhKbExseHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb2JXVnpjMkZuWlNrN1hHNGdJQ0FnSUNCOUlHTmhkR05vSUNoNEtTQjdmVnh1SUNBZ0lIMWNiaUFnZlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0IzWVhKdWFXNW5PeUpkZlE9PSIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RET00nKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgdXBkYXRlID0gcmVxdWlyZSgncmVhY3QtYWRkb25zLXVwZGF0ZScpO1xuXG52YXIgVG9hc3RNZXNzYWdlID0gUmVhY3QuY3JlYXRlRmFjdG9yeShyZXF1aXJlKFwiLi9Ub2FzdE1lc3NhZ2VcIikpO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gIGRpc3BsYXlOYW1lOiBcIlRvYXN0Q29udGFpbmVyXCIsXG5cbiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpIHtcbiAgICB0aGlzLl9ub3RpZnkodGhpcy5wcm9wcy50b2FzdFR5cGUuZXJyb3IsIG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpO1xuICB9LFxuXG4gIGluZm86IGZ1bmN0aW9uIGluZm8obWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSkge1xuICAgIHRoaXMuX25vdGlmeSh0aGlzLnByb3BzLnRvYXN0VHlwZS5pbmZvLCBtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKTtcbiAgfSxcblxuICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpIHtcbiAgICB0aGlzLl9ub3RpZnkodGhpcy5wcm9wcy50b2FzdFR5cGUuc3VjY2VzcywgbWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSk7XG4gIH0sXG5cbiAgd2FybmluZzogZnVuY3Rpb24gd2FybmluZyhtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKSB7XG4gICAgdGhpcy5fbm90aWZ5KHRoaXMucHJvcHMudG9hc3RUeXBlLndhcm5pbmcsIG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpO1xuICB9LFxuXG4gIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICB2YXIgcmVmcyA9IHRoaXMucmVmcztcbiAgICB2YXIga2V5O1xuICAgIGZvciAoa2V5IGluIHJlZnMpIHtcbiAgICAgIHJlZnNba2V5XS5oaWRlVG9hc3QoZmFsc2UpO1xuICAgIH1cbiAgfSxcblxuICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uIGdldERlZmF1bHRQcm9wcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9hc3RUeXBlOiB7XG4gICAgICAgIGVycm9yOiBcImVycm9yXCIsXG4gICAgICAgIGluZm86IFwiaW5mb1wiLFxuICAgICAgICBzdWNjZXNzOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgd2FybmluZzogXCJ3YXJuaW5nXCJcbiAgICAgIH0sXG4gICAgICBpZDogXCJ0b2FzdC1jb250YWluZXJcIixcbiAgICAgIHRvYXN0TWVzc2FnZUZhY3Rvcnk6IFRvYXN0TWVzc2FnZSxcbiAgICAgIHByZXZlbnREdXBsaWNhdGVzOiBmYWxzZSxcbiAgICAgIG5ld2VzdE9uVG9wOiB0cnVlLFxuICAgICAgb25DbGljazogbm9vcFxuICAgIH07XG4gIH0sXG5cbiAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvYXN0czogW10sXG4gICAgICB0b2FzdElkOiAwLFxuICAgICAgcHJldmlvdXNNZXNzYWdlOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyKHRoaXMucHJvcHMsIHRoaXMuc3RhdGUpO1xuICB9LFxuXG4gIF9ub3RpZnk6IGZ1bmN0aW9uIF9ub3RpZnkodHlwZSwgbWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChwcm9wcy5wcmV2ZW50RHVwbGljYXRlcykge1xuICAgICAgaWYgKHN0YXRlLnByZXZpb3VzTWVzc2FnZSA9PT0gbWVzc2FnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBrZXkgPSBzdGF0ZS50b2FzdElkKys7XG4gICAgdmFyIHRvYXN0SWQgPSBrZXk7XG4gICAgdmFyIG5ld1RvYXN0ID0gdXBkYXRlKG9wdGlvbnNPdmVycmlkZSB8fCB7fSwge1xuICAgICAgJG1lcmdlOiB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgdG9hc3RJZDogdG9hc3RJZCxcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIHJlZjogXCJ0b2FzdHNfX1wiICsga2V5LFxuICAgICAgICBoYW5kbGVPbkNsaWNrOiB0aGlzLl9oYW5kbGVfdG9hc3Rfb25fY2xpY2ssXG4gICAgICAgIGhhbmRsZVJlbW92ZTogdGhpcy5faGFuZGxlX3RvYXN0X3JlbW92ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciB0b2FzdE9wZXJhdGlvbiA9IHt9O1xuICAgIHRvYXN0T3BlcmF0aW9uW1wiXCIgKyAocHJvcHMubmV3ZXN0T25Ub3AgPyBcIiR1bnNoaWZ0XCIgOiBcIiRwdXNoXCIpXSA9IFtuZXdUb2FzdF07XG5cbiAgICB2YXIgbmV3U3RhdGUgPSB1cGRhdGUoc3RhdGUsIHtcbiAgICAgIHRvYXN0czogdG9hc3RPcGVyYXRpb24sXG4gICAgICBwcmV2aW91c01lc3NhZ2U6IHsgJHNldDogbWVzc2FnZSB9XG4gICAgfSk7XG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gIH0sXG5cbiAgX2hhbmRsZV90b2FzdF9vbl9jbGljazogZnVuY3Rpb24gX2hhbmRsZV90b2FzdF9vbl9jbGljayhldmVudCkge1xuICAgIHRoaXMucHJvcHMub25DbGljayhldmVudCk7XG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfSxcblxuICBfaGFuZGxlX3RvYXN0X3JlbW92ZTogZnVuY3Rpb24gX2hhbmRsZV90b2FzdF9yZW1vdmUodG9hc3RJZCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlO1xuXG4gICAgc3RhdGUudG9hc3RzW1wiXCIgKyAodGhpcy5wcm9wcy5uZXdlc3RPblRvcCA/IFwicmVkdWNlUmlnaHRcIiA6IFwicmVkdWNlXCIpXShmdW5jdGlvbiAoZm91bmQsIHRvYXN0LCBpbmRleCkge1xuICAgICAgaWYgKGZvdW5kIHx8IHRvYXN0LnRvYXN0SWQgIT09IHRvYXN0SWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgX3RoaXMuc2V0U3RhdGUodXBkYXRlKHN0YXRlLCB7XG4gICAgICAgIHRvYXN0czogeyAkc3BsaWNlOiBbW2luZGV4LCAxXV0gfVxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSwgZmFsc2UpO1xuICB9LFxuXG4gIF9yZW5kZXI6IGZ1bmN0aW9uIF9yZW5kZXIocHJvcHMsIHN0YXRlKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImRpdlwiLFxuICAgICAgX2V4dGVuZHMoe30sIHByb3BzLCB7IFwiYXJpYS1saXZlXCI6IFwicG9saXRlXCIsIHJvbGU6IFwiYWxlcnRcIiB9KSxcbiAgICAgIHN0YXRlLnRvYXN0cy5tYXAoZnVuY3Rpb24gKHRvYXN0KSB7XG4gICAgICAgIHJldHVybiBwcm9wcy50b2FzdE1lc3NhZ2VGYWN0b3J5KHRvYXN0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBDU1NDb3JlID0gcmVxdWlyZShcImZianMvbGliL0NTU0NvcmVcIik7XG52YXIgUmVhY3RUcmFuc2l0aW9uRXZlbnRzID0gcmVxdWlyZShcInJlYWN0L2xpYi9SZWFjdFRyYW5zaXRpb25FdmVudHNcIik7XG52YXIgUmVhY3RET00gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcbnZhciBUSUNLID0gMTc7XG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiBnZXREZWZhdWx0UHJvcHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zaXRpb246IG51bGwsIC8vc29tZSBleGFtcGxlcyBkZWZpbmVkIGluIGluZGV4LnNjc3MgKHNjYWxlLCBmYWRlSW5PdXQsIHJvdGF0ZSlcbiAgICAgIHNob3dBbmltYXRpb246IFwiYW5pbWF0ZWQgYm91bmNlSW5cIiwgLy9vciBvdGhlciBhbmltYXRpb25zIGZyb20gYW5pbWF0ZS5jc3NcbiAgICAgIGhpZGVBbmltYXRpb246IFwiYW5pbWF0ZWQgYm91bmNlT3V0XCIsXG4gICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgZXh0ZW5kZWRUaW1lT3V0OiAxMDAwXG4gICAgfTtcbiAgfSxcblxuICBjb21wb25lbnRXaWxsTW91bnQ6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxNb3VudCgpIHtcbiAgICB0aGlzLmNsYXNzTmFtZVF1ZXVlID0gW107XG4gICAgdGhpcy5pc0hpZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW50ZXJ2YWxJZCA9IG51bGw7XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy5fc2hvdyhwcm9wcyk7XG5cbiAgICB2YXIgb25IaWRlQ29tcGxldGUgPSBmdW5jdGlvbiBvbkhpZGVDb21wbGV0ZSgpIHtcbiAgICAgIGlmIChfdGhpcy5pc0hpZGluZykge1xuICAgICAgICBfdGhpcy5fc2V0X2lzX2hpZGluZyhmYWxzZSk7XG4gICAgICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5yZW1vdmVFbmRFdmVudExpc3RlbmVyKG5vZGUsIG9uSGlkZUNvbXBsZXRlKTtcbiAgICAgICAgX3RoaXMuX2hhbmRsZV9yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcbiAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMuYWRkRW5kRXZlbnRMaXN0ZW5lcihub2RlLCBvbkhpZGVDb21wbGV0ZSk7XG5cbiAgICBpZiAoMCA8IHByb3BzLnRpbWVPdXQpIHtcbiAgICAgIHRoaXMuX3NldF9pbnRlcnZhbF9pZChzZXRUaW1lb3V0KHRoaXMuaGlkZVRvYXN0LCBwcm9wcy50aW1lT3V0KSk7XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgfVxuICB9LFxuICBfc2V0X3RyYW5zaXRpb246IGZ1bmN0aW9uIF9zZXRfdHJhbnNpdGlvbihoaWRlKSB7XG4gICAgdmFyIGFuaW1hdGlvblR5cGUgPSBoaWRlID8gXCJsZWF2ZVwiIDogXCJlbnRlclwiO1xuICAgIHZhciBub2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMucHJvcHMudHJhbnNpdGlvbiArIFwiLVwiICsgYW5pbWF0aW9uVHlwZTtcbiAgICB2YXIgYWN0aXZlQ2xhc3NOYW1lID0gY2xhc3NOYW1lICsgXCItYWN0aXZlXCI7XG5cbiAgICB2YXIgZW5kTGlzdGVuZXIgPSBmdW5jdGlvbiBlbmRMaXN0ZW5lcihlKSB7XG4gICAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gbm9kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIENTU0NvcmUucmVtb3ZlQ2xhc3Mobm9kZSwgY2xhc3NOYW1lKTtcbiAgICAgIENTU0NvcmUucmVtb3ZlQ2xhc3Mobm9kZSwgYWN0aXZlQ2xhc3NOYW1lKTtcblxuICAgICAgUmVhY3RUcmFuc2l0aW9uRXZlbnRzLnJlbW92ZUVuZEV2ZW50TGlzdGVuZXIobm9kZSwgZW5kTGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMuYWRkRW5kRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7XG5cbiAgICBDU1NDb3JlLmFkZENsYXNzKG5vZGUsIGNsYXNzTmFtZSk7XG5cbiAgICAvLyBOZWVkIHRvIGRvIHRoaXMgdG8gYWN0dWFsbHkgdHJpZ2dlciBhIHRyYW5zaXRpb24uXG4gICAgdGhpcy5fcXVldWVfY2xhc3MoYWN0aXZlQ2xhc3NOYW1lKTtcbiAgfSxcblxuICBfY2xlYXJfdHJhbnNpdGlvbjogZnVuY3Rpb24gX2NsZWFyX3RyYW5zaXRpb24oaGlkZSkge1xuICAgIHZhciBub2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgdmFyIGFuaW1hdGlvblR5cGUgPSBoaWRlID8gXCJsZWF2ZVwiIDogXCJlbnRlclwiO1xuICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLnByb3BzLnRyYW5zaXRpb24gKyBcIi1cIiArIGFuaW1hdGlvblR5cGU7XG4gICAgdmFyIGFjdGl2ZUNsYXNzTmFtZSA9IGNsYXNzTmFtZSArIFwiLWFjdGl2ZVwiO1xuXG4gICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBjbGFzc05hbWUpO1xuICAgIENTU0NvcmUucmVtb3ZlQ2xhc3Mobm9kZSwgYWN0aXZlQ2xhc3NOYW1lKTtcbiAgfSxcblxuICBfc2V0X2FuaW1hdGlvbjogZnVuY3Rpb24gX3NldF9hbmltYXRpb24oaGlkZSkge1xuICAgIHZhciBub2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgdmFyIGFuaW1hdGlvbnMgPSB0aGlzLl9nZXRfYW5pbWF0aW9uX2NsYXNzZXMoaGlkZSk7XG4gICAgdmFyIGVuZExpc3RlbmVyID0gZnVuY3Rpb24gZW5kTGlzdGVuZXIoZSkge1xuICAgICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IG5vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhbmltYXRpb25zLmZvckVhY2goZnVuY3Rpb24gKGFuaW0pIHtcbiAgICAgICAgQ1NTQ29yZS5yZW1vdmVDbGFzcyhub2RlLCBhbmltKTtcbiAgICAgIH0pO1xuXG4gICAgICBSZWFjdFRyYW5zaXRpb25FdmVudHMucmVtb3ZlRW5kRXZlbnRMaXN0ZW5lcihub2RlLCBlbmRMaXN0ZW5lcik7XG4gICAgfTtcblxuICAgIFJlYWN0VHJhbnNpdGlvbkV2ZW50cy5hZGRFbmRFdmVudExpc3RlbmVyKG5vZGUsIGVuZExpc3RlbmVyKTtcblxuICAgIGFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoYW5pbSkge1xuICAgICAgQ1NTQ29yZS5hZGRDbGFzcyhub2RlLCBhbmltKTtcbiAgICB9KTtcbiAgfSxcblxuICBfZ2V0X2FuaW1hdGlvbl9jbGFzc2VzOiBmdW5jdGlvbiBfZ2V0X2FuaW1hdGlvbl9jbGFzc2VzKGhpZGUpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgdmFyIGFuaW1hdGlvbnMgPSBoaWRlID8gcHJvcHMuaGlkZUFuaW1hdGlvbiA6IHByb3BzLnNob3dBbmltYXRpb247XG4gICAgaWYgKFwiW29iamVjdCBBcnJheV1cIiA9PT0gdG9TdHJpbmcuY2FsbChhbmltYXRpb25zKSkge1xuICAgICAgcmV0dXJuIGFuaW1hdGlvbnM7XG4gICAgfSBlbHNlIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgYW5pbWF0aW9ucykge1xuICAgICAgcmV0dXJuIGFuaW1hdGlvbnMuc3BsaXQoXCIgXCIpO1xuICAgIH1cbiAgfSxcblxuICBfY2xlYXJfYW5pbWF0aW9uOiBmdW5jdGlvbiBfY2xlYXJfYW5pbWF0aW9uKGhpZGUpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5fZ2V0X2FuaW1hdGlvbl9jbGFzc2VzKGhpZGUpO1xuICAgIGFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICBDU1NDb3JlLnJlbW92ZUNsYXNzKFJlYWN0RE9NLmZpbmRET01Ob2RlKF90aGlzMiksIGFuaW1hdGlvbik7XG4gICAgfSk7XG4gIH0sXG5cbiAgX3F1ZXVlX2NsYXNzOiBmdW5jdGlvbiBfcXVldWVfY2xhc3MoY2xhc3NOYW1lKSB7XG4gICAgdGhpcy5jbGFzc05hbWVRdWV1ZS5wdXNoKGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoIXRoaXMudGltZW91dCkge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLl9mbHVzaF9jbGFzc19uYW1lX3F1ZXVlLCBUSUNLKTtcbiAgICB9XG4gIH0sXG5cbiAgX2ZsdXNoX2NsYXNzX25hbWVfcXVldWU6IGZ1bmN0aW9uIF9mbHVzaF9jbGFzc19uYW1lX3F1ZXVlKCkge1xuICAgIGlmICh0aGlzLmlzTW91bnRlZCgpKSB7XG4gICAgICB0aGlzLmNsYXNzTmFtZVF1ZXVlLmZvckVhY2goQ1NTQ29yZS5hZGRDbGFzcy5iaW5kKENTU0NvcmUsIFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpKSk7XG4gICAgfVxuICAgIHRoaXMuY2xhc3NOYW1lUXVldWUubGVuZ3RoID0gMDtcbiAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xuICB9LFxuXG4gIF9zaG93OiBmdW5jdGlvbiBfc2hvdygpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHByb3BzLnRyYW5zaXRpb24pIHtcbiAgICAgIHRoaXMuX3NldF90cmFuc2l0aW9uKCk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5zaG93QW5pbWF0aW9uKSB7XG4gICAgICB0aGlzLl9zZXRfYW5pbWF0aW9uKCk7XG4gICAgfVxuICB9LFxuXG4gIGhhbmRsZU1vdXNlRW50ZXI6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgdGhpcy5fc2V0X2ludGVydmFsX2lkKG51bGwpO1xuICAgIGlmICh0aGlzLmlzSGlkaW5nKSB7XG4gICAgICB0aGlzLl9zZXRfaXNfaGlkaW5nKGZhbHNlKTtcblxuICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgICAgaWYgKHByb3BzLmhpZGVBbmltYXRpb24pIHtcbiAgICAgICAgdGhpcy5fY2xlYXJfYW5pbWF0aW9uKHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wcy50cmFuc2l0aW9uKSB7XG4gICAgICAgIHRoaXMuX2NsZWFyX3RyYW5zaXRpb24odHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGhhbmRsZU1vdXNlTGVhdmU6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlTGVhdmUoKSB7XG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgIGlmICghdGhpcy5pc0hpZGluZyAmJiAoMCA8IHByb3BzLnRpbWVPdXQgfHwgMCA8IHByb3BzLmV4dGVuZGVkVGltZU91dCkpIHtcbiAgICAgIHRoaXMuX3NldF9pbnRlcnZhbF9pZChzZXRUaW1lb3V0KHRoaXMuaGlkZVRvYXN0LCBwcm9wcy5leHRlbmRlZFRpbWVPdXQpKTtcbiAgICB9XG4gIH0sXG5cbiAgaGlkZVRvYXN0OiBmdW5jdGlvbiBoaWRlVG9hc3Qob3ZlcnJpZGUpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHRoaXMuaXNIaWRpbmcgfHwgbnVsbCA9PSB0aGlzLmludGVydmFsSWQgJiYgIW92ZXJyaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0X2lzX2hpZGluZyh0cnVlKTtcbiAgICBpZiAocHJvcHMudHJhbnNpdGlvbikge1xuICAgICAgdGhpcy5fc2V0X3RyYW5zaXRpb24odHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5oaWRlQW5pbWF0aW9uKSB7XG4gICAgICB0aGlzLl9zZXRfYW5pbWF0aW9uKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oYW5kbGVfcmVtb3ZlKCk7XG4gICAgfVxuICB9LFxuXG4gIF9zZXRfaW50ZXJ2YWxfaWQ6IGZ1bmN0aW9uIF9zZXRfaW50ZXJ2YWxfaWQoaW50ZXJ2YWxJZCkge1xuICAgIHRoaXMuaW50ZXJ2YWxJZCA9IGludGVydmFsSWQ7XG4gIH0sXG5cbiAgX3NldF9pc19oaWRpbmc6IGZ1bmN0aW9uIF9zZXRfaXNfaGlkaW5nKGlzSGlkaW5nKSB7XG4gICAgdGhpcy5pc0hpZGluZyA9IGlzSGlkaW5nO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xudmFyIFJlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIHVwZGF0ZSA9IHJlcXVpcmUoJ3JlYWN0LWFkZG9ucy11cGRhdGUnKTtcbnZhciBjeCA9IHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxudmFyIFRvYXN0TWVzc2FnZVNwZWMgPSB7XG4gIGRpc3BsYXlOYW1lOiBcIlRvYXN0TWVzc2FnZVwiLFxuXG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3BzKCkge1xuICAgIHZhciBpY29uQ2xhc3NOYW1lcyA9IHtcbiAgICAgIGVycm9yOiBcInRvYXN0LWVycm9yXCIsXG4gICAgICBpbmZvOiBcInRvYXN0LWluZm9cIixcbiAgICAgIHN1Y2Nlc3M6IFwidG9hc3Qtc3VjY2Vzc1wiLFxuICAgICAgd2FybmluZzogXCJ0b2FzdC13YXJuaW5nXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzTmFtZTogXCJ0b2FzdFwiLFxuICAgICAgaWNvbkNsYXNzTmFtZXM6IGljb25DbGFzc05hbWVzLFxuICAgICAgdGl0bGVDbGFzc05hbWU6IFwidG9hc3QtdGl0bGVcIixcbiAgICAgIG1lc3NhZ2VDbGFzc05hbWU6IFwidG9hc3QtbWVzc2FnZVwiLFxuICAgICAgdGFwVG9EaXNtaXNzOiB0cnVlLFxuICAgICAgY2xvc2VCdXR0b246IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuICBoYW5kbGVPbkNsaWNrOiBmdW5jdGlvbiBoYW5kbGVPbkNsaWNrKGV2ZW50KSB7XG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgIHByb3BzLmhhbmRsZU9uQ2xpY2soZXZlbnQpO1xuICAgIGlmIChwcm9wcy50YXBUb0Rpc21pc3MpIHtcbiAgICAgIHRoaXMuaGlkZVRvYXN0KHRydWUpO1xuICAgIH1cbiAgfSxcblxuICBfaGFuZGxlX2Nsb3NlX2J1dHRvbl9jbGljazogZnVuY3Rpb24gX2hhbmRsZV9jbG9zZV9idXR0b25fY2xpY2soZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmhpZGVUb2FzdCh0cnVlKTtcbiAgfSxcblxuICBfaGFuZGxlX3JlbW92ZTogZnVuY3Rpb24gX2hhbmRsZV9yZW1vdmUoKSB7XG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgIHByb3BzLmhhbmRsZVJlbW92ZShwcm9wcy50b2FzdElkKTtcbiAgfSxcblxuICBfcmVuZGVyX2Nsb3NlX2J1dHRvbjogZnVuY3Rpb24gX3JlbmRlcl9jbG9zZV9idXR0b24ocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMuY2xvc2VCdXR0b24gPyBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHsgY2xhc3NOYW1lOiBcInRvYXN0LWNsb3NlLWJ1dHRvblwiLCByb2xlOiBcImJ1dHRvblwiLFxuICAgICAgb25DbGljazogdGhpcy5faGFuZGxlX2Nsb3NlX2J1dHRvbl9jbGljayxcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogXCImdGltZXM7XCIgfVxuICAgIH0pIDogZmFsc2U7XG4gIH0sXG5cbiAgX3JlbmRlcl90aXRsZV9lbGVtZW50OiBmdW5jdGlvbiBfcmVuZGVyX3RpdGxlX2VsZW1lbnQocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudGl0bGUgPyBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgY2xhc3NOYW1lOiBwcm9wcy50aXRsZUNsYXNzTmFtZSB9LFxuICAgICAgcHJvcHMudGl0bGVcbiAgICApIDogZmFsc2U7XG4gIH0sXG5cbiAgX3JlbmRlcl9tZXNzYWdlX2VsZW1lbnQ6IGZ1bmN0aW9uIF9yZW5kZXJfbWVzc2FnZV9lbGVtZW50KHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLm1lc3NhZ2UgPyBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgY2xhc3NOYW1lOiBwcm9wcy5tZXNzYWdlQ2xhc3NOYW1lIH0sXG4gICAgICBwcm9wcy5tZXNzYWdlXG4gICAgKSA6IGZhbHNlO1xuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG5cbiAgICB2YXIgaWNvbkNsYXNzTmFtZSA9IHByb3BzLmljb25DbGFzc05hbWUgfHwgcHJvcHMuaWNvbkNsYXNzTmFtZXNbcHJvcHMudHlwZV07XG5cbiAgICB2YXIgdG9hc3RDbGFzcyA9IHt9O1xuICAgIHRvYXN0Q2xhc3NbcHJvcHMuY2xhc3NOYW1lXSA9IHRydWU7XG4gICAgdG9hc3RDbGFzc1tpY29uQ2xhc3NOYW1lXSA9IHRydWU7XG5cbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7IGNsYXNzTmFtZTogY3godG9hc3RDbGFzcyksIHN0eWxlOiBwcm9wcy5zdHlsZSB8fCB7fSxcbiAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVPbkNsaWNrLFxuICAgICAgICBvbk1vdXNlRW50ZXI6IHRoaXMuaGFuZGxlTW91c2VFbnRlcixcbiAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZU1vdXNlTGVhdmUgfSxcbiAgICAgIHRoaXMuX3JlbmRlcl9jbG9zZV9idXR0b24ocHJvcHMpLFxuICAgICAgdGhpcy5fcmVuZGVyX3RpdGxlX2VsZW1lbnQocHJvcHMpLFxuICAgICAgdGhpcy5fcmVuZGVyX21lc3NhZ2VfZWxlbWVudChwcm9wcylcbiAgICApO1xuICB9XG59O1xuXG52YXIgYW5pbWF0aW9uID0gUmVhY3QuY3JlYXRlQ2xhc3ModXBkYXRlKFRvYXN0TWVzc2FnZVNwZWMsIHtcbiAgZGlzcGxheU5hbWU6IHsgJHNldDogXCJUb2FzdE1lc3NhZ2UuYW5pbWF0aW9uXCIgfSxcbiAgbWl4aW5zOiB7ICRzZXQ6IFtyZXF1aXJlKFwiLi9hbmltYXRpb25NaXhpblwiKV0gfVxufSkpO1xuXG52YXIgalF1ZXJ5ID0gUmVhY3QuY3JlYXRlQ2xhc3ModXBkYXRlKFRvYXN0TWVzc2FnZVNwZWMsIHtcbiAgZGlzcGxheU5hbWU6IHsgJHNldDogXCJUb2FzdE1lc3NhZ2UualF1ZXJ5XCIgfSxcbiAgbWl4aW5zOiB7ICRzZXQ6IFtyZXF1aXJlKFwiLi9qUXVlcnlNaXhpblwiKV0gfVxufSkpO1xuXG4vKlxuICogYXNzaWduIGRlZmF1bHQgbm9vcCBmdW5jdGlvbnNcbiAqL1xuVG9hc3RNZXNzYWdlU3BlYy5oYW5kbGVNb3VzZUVudGVyID0gbm9vcDtcblRvYXN0TWVzc2FnZVNwZWMuaGFuZGxlTW91c2VMZWF2ZSA9IG5vb3A7XG5Ub2FzdE1lc3NhZ2VTcGVjLmhpZGVUb2FzdCA9IG5vb3A7XG5cbnZhciBUb2FzdE1lc3NhZ2UgPSBtb2R1bGUuZXhwb3J0cyA9IFJlYWN0LmNyZWF0ZUNsYXNzKFRvYXN0TWVzc2FnZVNwZWMpO1xuVG9hc3RNZXNzYWdlLmFuaW1hdGlvbiA9IGFuaW1hdGlvbjtcblRvYXN0TWVzc2FnZS5qUXVlcnkgPSBqUXVlcnk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG52YXIgX3JlYWN0RG9tID0gcmVxdWlyZShcInJlYWN0LWRvbVwiKTtcblxudmFyIF9yZWFjdERvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdERvbSk7XG5cbmZ1bmN0aW9uIGNhbGxfc2hvd19tZXRob2QoJG5vZGUsIHByb3BzKSB7XG4gICRub2RlW3Byb3BzLnNob3dNZXRob2RdKHtcbiAgICBkdXJhdGlvbjogcHJvcHMuc2hvd0R1cmF0aW9uLFxuICAgIGVhc2luZzogcHJvcHMuc2hvd0Vhc2luZ1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3BzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIiB9LFxuICAgICAgLy8gZWZmZWN0aXZlICQuaGlkZSgpXG4gICAgICBzaG93TWV0aG9kOiBcImZhZGVJblwiLCAvLywgc2xpZGVEb3duLCBhbmQgc2hvdyBhcmUgYnVpbHQgaW50byBqUXVlcnlcbiAgICAgIHNob3dEdXJhdGlvbjogMzAwLFxuICAgICAgc2hvd0Vhc2luZzogXCJzd2luZ1wiLCAvLyBhbmQgbGluZWFyIGFyZSBidWlsdCBpbnRvIGpRdWVyeVxuICAgICAgaGlkZU1ldGhvZDogXCJmYWRlT3V0XCIsXG4gICAgICBoaWRlRHVyYXRpb246IDEwMDAsXG4gICAgICBoaWRlRWFzaW5nOiBcInN3aW5nXCIsXG4gICAgICAvL1xuICAgICAgdGltZU91dDogNTAwMCxcbiAgICAgIGV4dGVuZGVkVGltZU91dDogMTAwMFxuICAgIH07XG4gIH0sXG5cbiAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVydmFsSWQ6IG51bGwsXG4gICAgICBpc0hpZGluZzogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgY2FsbF9zaG93X21ldGhvZCh0aGlzLl9nZXRfJF9ub2RlKCksIHByb3BzKTtcbiAgICBpZiAoMCA8IHByb3BzLnRpbWVPdXQpIHtcbiAgICAgIHRoaXMuX3NldF9pbnRlcnZhbF9pZChzZXRUaW1lb3V0KHRoaXMuaGlkZVRvYXN0LCBwcm9wcy50aW1lT3V0KSk7XG4gICAgfVxuICB9LFxuXG4gIGhhbmRsZU1vdXNlRW50ZXI6IGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuc3RhdGUuaW50ZXJ2YWxJZCk7XG4gICAgdGhpcy5fc2V0X2ludGVydmFsX2lkKG51bGwpO1xuICAgIHRoaXMuX3NldF9pc19oaWRpbmcoZmFsc2UpO1xuXG4gICAgY2FsbF9zaG93X21ldGhvZCh0aGlzLl9nZXRfJF9ub2RlKCkuc3RvcCh0cnVlLCB0cnVlKSwgdGhpcy5wcm9wcyk7XG4gIH0sXG5cbiAgaGFuZGxlTW91c2VMZWF2ZTogZnVuY3Rpb24gaGFuZGxlTW91c2VMZWF2ZSgpIHtcbiAgICB2YXIgcHJvcHMgPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKCF0aGlzLnN0YXRlLmlzSGlkaW5nICYmICgwIDwgcHJvcHMudGltZU91dCB8fCAwIDwgcHJvcHMuZXh0ZW5kZWRUaW1lT3V0KSkge1xuICAgICAgdGhpcy5fc2V0X2ludGVydmFsX2lkKHNldFRpbWVvdXQodGhpcy5oaWRlVG9hc3QsIHByb3BzLmV4dGVuZGVkVGltZU91dCkpO1xuICAgIH1cbiAgfSxcblxuICBoaWRlVG9hc3Q6IGZ1bmN0aW9uIGhpZGVUb2FzdChvdmVycmlkZSkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChzdGF0ZS5pc0hpZGluZyB8fCBudWxsID09IHN0YXRlLmludGVydmFsSWQgJiYgIW92ZXJyaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoeyBpc0hpZGluZzogdHJ1ZSB9KTtcblxuICAgIHRoaXMuX2dldF8kX25vZGUoKVtwcm9wcy5oaWRlTWV0aG9kXSh7XG4gICAgICBkdXJhdGlvbjogcHJvcHMuaGlkZUR1cmF0aW9uLFxuICAgICAgZWFzaW5nOiBwcm9wcy5oaWRlRWFzaW5nLFxuICAgICAgY29tcGxldGU6IHRoaXMuX2hhbmRsZV9yZW1vdmVcbiAgICB9KTtcbiAgfSxcblxuICBfZ2V0XyRfbm9kZTogZnVuY3Rpb24gX2dldF8kX25vZGUoKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbiAgICByZXR1cm4galF1ZXJ5KF9yZWFjdERvbTJbXCJkZWZhdWx0XCJdLmZpbmRET01Ob2RlKHRoaXMpKTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVmICovXG4gIH0sXG5cbiAgX3NldF9pbnRlcnZhbF9pZDogZnVuY3Rpb24gX3NldF9pbnRlcnZhbF9pZChpbnRlcnZhbElkKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpbnRlcnZhbElkOiBpbnRlcnZhbElkXG4gICAgfSk7XG4gIH0sXG5cbiAgX3NldF9pc19oaWRpbmc6IGZ1bmN0aW9uIF9zZXRfaXNfaGlkaW5nKGlzSGlkaW5nKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0hpZGluZzogaXNIaWRpbmdcbiAgICB9KTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcbmV4cG9ydHMuVG9hc3RDb250YWluZXIgPSByZXF1aXJlKFwiLi9Ub2FzdENvbnRhaW5lclwiKTtcbmV4cG9ydHMuVG9hc3RNZXNzYWdlID0gcmVxdWlyZShcIi4vVG9hc3RNZXNzYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgncmVhY3QvbGliL3VwZGF0ZScpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBBdXRvRm9jdXNVdGlsc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUnKTtcbnZhciBmb2N1c05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9mb2N1c05vZGUnKTtcblxudmFyIE1peGluID0ge1xuICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgZm9jdXNOb2RlKGZpbmRET01Ob2RlKHRoaXMpKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBBdXRvRm9jdXNVdGlscyA9IHtcbiAgTWl4aW46IE1peGluLFxuXG4gIGZvY3VzRE9NQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgZm9jdXNOb2RlKFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKSk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgQmVmb3JlSW5wdXRFdmVudFBsdWdpblxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZSA9IHJlcXVpcmUoJy4vRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlJyk7XG52YXIgU3ludGhldGljQ29tcG9zaXRpb25FdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljQ29tcG9zaXRpb25FdmVudCcpO1xudmFyIFN5bnRoZXRpY0lucHV0RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0lucHV0RXZlbnQnKTtcblxudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcblxudmFyIEVORF9LRVlDT0RFUyA9IFs5LCAxMywgMjcsIDMyXTsgLy8gVGFiLCBSZXR1cm4sIEVzYywgU3BhY2VcbnZhciBTVEFSVF9LRVlDT0RFID0gMjI5O1xuXG52YXIgY2FuVXNlQ29tcG9zaXRpb25FdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnQ29tcG9zaXRpb25FdmVudCcgaW4gd2luZG93O1xuXG52YXIgZG9jdW1lbnRNb2RlID0gbnVsbDtcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHtcbiAgZG9jdW1lbnRNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlO1xufVxuXG4vLyBXZWJraXQgb2ZmZXJzIGEgdmVyeSB1c2VmdWwgYHRleHRJbnB1dGAgZXZlbnQgdGhhdCBjYW4gYmUgdXNlZCB0b1xuLy8gZGlyZWN0bHkgcmVwcmVzZW50IGBiZWZvcmVJbnB1dGAuIFRoZSBJRSBgdGV4dGlucHV0YCBldmVudCBpcyBub3QgYXNcbi8vIHVzZWZ1bCwgc28gd2UgZG9uJ3QgdXNlIGl0LlxudmFyIGNhblVzZVRleHRJbnB1dEV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdUZXh0RXZlbnQnIGluIHdpbmRvdyAmJiAhZG9jdW1lbnRNb2RlICYmICFpc1ByZXN0bygpO1xuXG4vLyBJbiBJRTkrLCB3ZSBoYXZlIGFjY2VzcyB0byBjb21wb3NpdGlvbiBldmVudHMsIGJ1dCB0aGUgZGF0YSBzdXBwbGllZFxuLy8gYnkgdGhlIG5hdGl2ZSBjb21wb3NpdGlvbmVuZCBldmVudCBtYXkgYmUgaW5jb3JyZWN0LiBKYXBhbmVzZSBpZGVvZ3JhcGhpY1xuLy8gc3BhY2VzLCBmb3IgaW5zdGFuY2UgKFxcdTMwMDApIGFyZSBub3QgcmVjb3JkZWQgY29ycmVjdGx5LlxudmFyIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCB8fCBkb2N1bWVudE1vZGUgJiYgZG9jdW1lbnRNb2RlID4gOCAmJiBkb2N1bWVudE1vZGUgPD0gMTEpO1xuXG4vKipcbiAqIE9wZXJhIDw9IDEyIGluY2x1ZGVzIFRleHRFdmVudCBpbiB3aW5kb3csIGJ1dCBkb2VzIG5vdCBmaXJlXG4gKiB0ZXh0IGlucHV0IGV2ZW50cy4gUmVseSBvbiBrZXlwcmVzcyBpbnN0ZWFkLlxuICovXG5mdW5jdGlvbiBpc1ByZXN0bygpIHtcbiAgdmFyIG9wZXJhID0gd2luZG93Lm9wZXJhO1xuICByZXR1cm4gdHlwZW9mIG9wZXJhID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3BlcmEudmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBwYXJzZUludChvcGVyYS52ZXJzaW9uKCksIDEwKSA8PSAxMjtcbn1cblxudmFyIFNQQUNFQkFSX0NPREUgPSAzMjtcbnZhciBTUEFDRUJBUl9DSEFSID0gU3RyaW5nLmZyb21DaGFyQ29kZShTUEFDRUJBUl9DT0RFKTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xuXG4vLyBFdmVudHMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgbmFtZXMuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgYmVmb3JlSW5wdXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkJlZm9yZUlucHV0OiBudWxsIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25CZWZvcmVJbnB1dENhcHR1cmU6IG51bGwgfSlcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogW3RvcExldmVsVHlwZXMudG9wQ29tcG9zaXRpb25FbmQsIHRvcExldmVsVHlwZXMudG9wS2V5UHJlc3MsIHRvcExldmVsVHlwZXMudG9wVGV4dElucHV0LCB0b3BMZXZlbFR5cGVzLnRvcFBhc3RlXVxuICB9LFxuICBjb21wb3NpdGlvbkVuZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ29tcG9zaXRpb25FbmQ6IG51bGwgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZTogbnVsbCB9KVxuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wTGV2ZWxUeXBlcy50b3BCbHVyLCB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uRW5kLCB0b3BMZXZlbFR5cGVzLnRvcEtleURvd24sIHRvcExldmVsVHlwZXMudG9wS2V5UHJlc3MsIHRvcExldmVsVHlwZXMudG9wS2V5VXAsIHRvcExldmVsVHlwZXMudG9wTW91c2VEb3duXVxuICB9LFxuICBjb21wb3NpdGlvblN0YXJ0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db21wb3NpdGlvblN0YXJ0OiBudWxsIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZTogbnVsbCB9KVxuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wTGV2ZWxUeXBlcy50b3BCbHVyLCB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uU3RhcnQsIHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzcywgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcCwgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd25dXG4gIH0sXG4gIGNvbXBvc2l0aW9uVXBkYXRlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db21wb3NpdGlvblVwZGF0ZTogbnVsbCB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlOiBudWxsIH0pXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcEJsdXIsIHRvcExldmVsVHlwZXMudG9wQ29tcG9zaXRpb25VcGRhdGUsIHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzcywgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcCwgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd25dXG4gIH1cbn07XG5cbi8vIFRyYWNrIHdoZXRoZXIgd2UndmUgZXZlciBoYW5kbGVkIGEga2V5cHJlc3Mgb24gdGhlIHNwYWNlIGtleS5cbnZhciBoYXNTcGFjZUtleXByZXNzID0gZmFsc2U7XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYSBuYXRpdmUga2V5cHJlc3MgZXZlbnQgaXMgYXNzdW1lZCB0byBiZSBhIGNvbW1hbmQuXG4gKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgRmlyZWZveCBmaXJlcyBga2V5cHJlc3NgIGV2ZW50cyBmb3Iga2V5IGNvbW1hbmRzXG4gKiAoY3V0LCBjb3B5LCBzZWxlY3QtYWxsLCBldGMuKSBldmVuIHRob3VnaCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiAobmF0aXZlRXZlbnQuY3RybEtleSB8fCBuYXRpdmVFdmVudC5hbHRLZXkgfHwgbmF0aXZlRXZlbnQubWV0YUtleSkgJiZcbiAgLy8gY3RybEtleSAmJiBhbHRLZXkgaXMgZXF1aXZhbGVudCB0byBBbHRHciwgYW5kIGlzIG5vdCBhIGNvbW1hbmQuXG4gICEobmF0aXZlRXZlbnQuY3RybEtleSAmJiBuYXRpdmVFdmVudC5hbHRLZXkpO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZSBuYXRpdmUgdG9wIGxldmVsIGV2ZW50cyBpbnRvIGV2ZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBlKSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uU3RhcnQ6XG4gICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDb21wb3NpdGlvbkVuZDpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDb21wb3NpdGlvblVwZGF0ZTpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uVXBkYXRlO1xuICB9XG59XG5cbi8qKlxuICogRG9lcyBvdXIgZmFsbGJhY2sgYmVzdC1ndWVzcyBtb2RlbCB0aGluayB0aGlzIGV2ZW50IHNpZ25pZmllcyB0aGF0XG4gKiBjb21wb3NpdGlvbiBoYXMgYmVndW4/XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wS2V5RG93biAmJiBuYXRpdmVFdmVudC5rZXlDb2RlID09PSBTVEFSVF9LRVlDT0RFO1xufVxuXG4vKipcbiAqIERvZXMgb3VyIGZhbGxiYWNrIG1vZGUgdGhpbmsgdGhhdCB0aGlzIGV2ZW50IGlzIHRoZSBlbmQgb2YgY29tcG9zaXRpb24/XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcDpcbiAgICAgIC8vIENvbW1hbmQga2V5cyBpbnNlcnQgb3IgY2xlYXIgSU1FIGlucHV0LlxuICAgICAgcmV0dXJuIEVORF9LRVlDT0RFUy5pbmRleE9mKG5hdGl2ZUV2ZW50LmtleUNvZGUpICE9PSAtMTtcbiAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5RG93bjpcbiAgICAgIC8vIEV4cGVjdCBJTUUga2V5Q29kZSBvbiBlYWNoIGtleWRvd24uIElmIHdlIGdldCBhbnkgb3RoZXJcbiAgICAgIC8vIGNvZGUgd2UgbXVzdCBoYXZlIGV4aXRlZCBlYXJsaWVyLlxuICAgICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmtleUNvZGUgIT09IFNUQVJUX0tFWUNPREU7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzOlxuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd246XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEJsdXI6XG4gICAgICAvLyBFdmVudHMgYXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGNhbmNlbGxpbmcgSU1FLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEdvb2dsZSBJbnB1dCBUb29scyBwcm92aWRlcyBjb21wb3NpdGlvbiBkYXRhIHZpYSBhIEN1c3RvbUV2ZW50LFxuICogd2l0aCB0aGUgYGRhdGFgIHByb3BlcnR5IHBvcHVsYXRlZCBpbiB0aGUgYGRldGFpbGAgb2JqZWN0LiBJZiB0aGlzXG4gKiBpcyBhdmFpbGFibGUgb24gdGhlIGV2ZW50IG9iamVjdCwgdXNlIGl0LiBJZiBub3QsIHRoaXMgaXMgYSBwbGFpblxuICogY29tcG9zaXRpb24gZXZlbnQgYW5kIHdlIGhhdmUgbm90aGluZyBzcGVjaWFsIHRvIGV4dHJhY3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHs/c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXREYXRhRnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG4gIHZhciBkZXRhaWwgPSBuYXRpdmVFdmVudC5kZXRhaWw7XG4gIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gZGV0YWlsKSB7XG4gICAgcmV0dXJuIGRldGFpbC5kYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBUcmFjayB0aGUgY3VycmVudCBJTUUgY29tcG9zaXRpb24gZmFsbGJhY2sgb2JqZWN0LCBpZiBhbnkuXG52YXIgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LlxuICovXG5mdW5jdGlvbiBleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGV2ZW50VHlwZTtcbiAgdmFyIGZhbGxiYWNrRGF0YTtcblxuICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVudCkge1xuICAgIGV2ZW50VHlwZSA9IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSk7XG4gIH0gZWxzZSBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbikge1xuICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICB9XG5cbiAgaWYgKCFldmVudFR5cGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSkge1xuICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBzdGF0aWNhbGx5IGFuZCBtdXN0IG5vdCBiZVxuICAgIC8vIG92ZXJ3cml0dGVuIHdoaWxlIGNvbXBvc2l0aW9uIGNvbnRpbnVlcy5cbiAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAmJiBldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydCkge1xuICAgICAgY3VycmVudENvbXBvc2l0aW9uID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZCh0b3BMZXZlbFRhcmdldCk7XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQpIHtcbiAgICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICAgICAgZmFsbGJhY2tEYXRhID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmdldFBvb2xlZChldmVudFR5cGUsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgaWYgKGZhbGxiYWNrRGF0YSkge1xuICAgIC8vIEluamVjdCBkYXRhIGdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrIHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LlxuICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuXG4gICAgZXZlbnQuZGF0YSA9IGZhbGxiYWNrRGF0YTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VzdG9tRGF0YSA9IGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAgIGlmIChjdXN0b21EYXRhICE9PSBudWxsKSB7XG4gICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0YTtcbiAgICB9XG4gIH1cblxuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbXBvc2l0aW9uRW5kOlxuICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzczpcbiAgICAgIC8qKlxuICAgICAgICogSWYgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29hbCBpcyB0byBtYWtlXG4gICAgICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWFsIGNhc2U6IHRoZSBzcGFjZWJhciBrZXkuXG4gICAgICAgKiBJbiBXZWJraXQsIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBhIHNwYWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50XG4gICAgICAgKiBjYW5jZWxzIGNoYXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93c2VyXG4gICAgICAgKiB0byBmYWxsIGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZpb3Igb2Ygc2Nyb2xsaW5nIHRoZVxuICAgICAgICogcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBUcmFja2luZyBhdDpcbiAgICAgICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNTUxMDNcbiAgICAgICAqXG4gICAgICAgKiBUbyBhdm9pZCB0aGlzIGlzc3VlLCB1c2UgdGhlIGtleXByZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgXG4gICAgICAgKiBldmVudCBpcyBhdmFpbGFibGUuXG4gICAgICAgKi9cbiAgICAgIHZhciB3aGljaCA9IG5hdGl2ZUV2ZW50LndoaWNoO1xuICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVybiBTUEFDRUJBUl9DSEFSO1xuXG4gICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRleHRJbnB1dDpcbiAgICAgIC8vIFJlY29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUgRE9NLlxuICAgICAgdmFyIGNoYXJzID0gbmF0aXZlRXZlbnQuZGF0YTtcblxuICAgICAgLy8gSWYgaXQncyBhIHNwYWNlYmFyIGNoYXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWRcbiAgICAgIC8vIGl0IGF0IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlhdGVseS4gQW5kcm9pZCBDaHJvbWVcbiAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywgc28gd2UgbmVlZCB0byBibGFja2xpc3QgaXQuXG4gICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFSX0NIQVIgJiYgaGFzU3BhY2VLZXlwcmVzcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoYXJzO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEZvciBvdGhlciBuYXRpdmUgZXZlbnQgdHlwZXMsIGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBgdGV4dElucHV0YCBldmVudCwgZXh0cmFjdCB0aGVcbiAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lucHV0RXZlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIGZhbGxiYWNrIHN0cmluZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5mdW5jdGlvbiBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNpbmcgYSBmYWxsYmFjayB0byBkbyBzbyxcbiAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2VkIGNoYXJhY3RlcnMgZnJvbSB0aGUgZmFsbGJhY2sgb2JqZWN0LlxuICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BDb21wb3NpdGlvbkVuZCB8fCBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICAgIHZhciBjaGFycyA9IGN1cnJlbnRDb21wb3NpdGlvbi5nZXREYXRhKCk7XG4gICAgICBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucmVsZWFzZShjdXJyZW50Q29tcG9zaXRpb24pO1xuICAgICAgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDtcbiAgICAgIHJldHVybiBjaGFycztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQYXN0ZTpcbiAgICAgIC8vIElmIGEgcGFzdGUgZXZlbnQgb2NjdXJzIGFmdGVyIGEga2V5cHJlc3MsIHRocm93IG91dCB0aGUgaW5wdXRcbiAgICAgIC8vIGNoYXJzLiBQYXN0ZSBldmVudHMgc2hvdWxkIG5vdCBsZWFkIHRvIEJlZm9yZUlucHV0IGV2ZW50cy5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzczpcbiAgICAgIC8qKlxuICAgICAgICogQXMgb2YgdjI3LCBGaXJlZm94IG1heSBmaXJlIGtleXByZXNzIGV2ZW50cyBldmVuIHdoZW4gbm8gY2hhcmFjdGVyXG4gICAgICAgKiB3aWxsIGJlIGluc2VydGVkLiBBIGZldyBwb3NzaWJpbGl0aWVzOlxuICAgICAgICpcbiAgICAgICAqIC0gYHdoaWNoYCBpcyBgMGAuIEFycm93IGtleXMsIEVzYyBrZXksIGV0Yy5cbiAgICAgICAqXG4gICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBubyBjaGFyIGlzIGF2YWlsYWJsZS5cbiAgICAgICAqICAgRXg6ICdBbHRHciArIGRgIGluIFBvbGlzaC4gVGhlcmUgaXMgbm8gbW9kaWZpZWQgY2hhcmFjdGVyIGZvclxuICAgICAgICogICB0aGlzIGtleSBjb21iaW5hdGlvbiBhbmQgbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkIGludG8gdGhlXG4gICAgICAgKiAgIGRvY3VtZW50LCBidXQgRkYgZmlyZXMgdGhlIGtleXByZXNzIGZvciBjaGFyIGNvZGUgYDEwMGAgYW55d2F5LlxuICAgICAgICogICBObyBgaW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuXG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBjb2RlLCBidXQgYSBjb21tYW5kIGNvbWJpbmF0aW9uIGlzXG4gICAgICAgKiAgIGJlaW5nIHVzZWQuIEV4OiBgQ21kK0NgLiBObyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQsIGFuZCBub1xuICAgICAgICogICBgaW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuXG4gICAgICAgKi9cbiAgICAgIGlmIChuYXRpdmVFdmVudC53aGljaCAmJiAhaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDb21wb3NpdGlvbkVuZDpcbiAgICAgIHJldHVybiB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSA/IG51bGwgOiBuYXRpdmVFdmVudC5kYXRhO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3QgYSBTeW50aGV0aWNJbnB1dEV2ZW50IGZvciBgYmVmb3JlSW5wdXRgLCBiYXNlZCBvbiBlaXRoZXIgbmF0aXZlXG4gKiBgdGV4dElucHV0YCBvciBmYWxsYmFjayBiZWhhdmlvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNJbnB1dEV2ZW50LlxuICovXG5mdW5jdGlvbiBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGNoYXJzO1xuXG4gIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkge1xuICAgIGNoYXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfVxuXG4gIC8vIElmIG5vIGNoYXJhY3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVudCBzaG91bGRcbiAgLy8gYmUgZmlyZWQuXG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuYmVmb3JlSW5wdXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgZXZlbnQuZGF0YSA9IGNoYXJzO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaFxuICogaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5cbiAqXG4gKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0aGUgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50XG4gKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQgSUUuIFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXJcbiAqIGBvbktleVByZXNzYCBhbmQgYG9uQ29tcG9zaXRpb25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC5cbiAqXG4gKiBgYmVmb3JlSW5wdXRgIGlzIHNwZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG4gKiB0aGUgYGlucHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBoYXNcbiAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRyYXJ5IHRvIHRoZSBzcGVjLiBUaHVzLCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdFxuICogYXZhaWxhYmxlIGV2ZW50IHRvIGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGluc2VydGVkXG4gKiBpbnRvIHRoZSB0YXJnZXQgbm9kZS5cbiAqXG4gKiBUaGlzIHBsdWdpbiBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywgdGh1c1xuICogYWxsb3dpbmcgdXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBmb3IgYm90aCBgYmVmb3JlSW5wdXRgIGFuZFxuICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy5cbiAqL1xudmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSB7XG5cbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgcmV0dXJuIFtleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpXTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBDU1NQcm9wZXJ0eVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4XCIuXG4gKi9cbnZhciBpc1VuaXRsZXNzTnVtYmVyID0ge1xuICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogdHJ1ZSxcbiAgYm94RmxleDogdHJ1ZSxcbiAgYm94RmxleEdyb3VwOiB0cnVlLFxuICBib3hPcmRpbmFsR3JvdXA6IHRydWUsXG4gIGNvbHVtbkNvdW50OiB0cnVlLFxuICBmbGV4OiB0cnVlLFxuICBmbGV4R3JvdzogdHJ1ZSxcbiAgZmxleFBvc2l0aXZlOiB0cnVlLFxuICBmbGV4U2hyaW5rOiB0cnVlLFxuICBmbGV4TmVnYXRpdmU6IHRydWUsXG4gIGZsZXhPcmRlcjogdHJ1ZSxcbiAgZm9udFdlaWdodDogdHJ1ZSxcbiAgbGluZUNsYW1wOiB0cnVlLFxuICBsaW5lSGVpZ2h0OiB0cnVlLFxuICBvcGFjaXR5OiB0cnVlLFxuICBvcmRlcjogdHJ1ZSxcbiAgb3JwaGFuczogdHJ1ZSxcbiAgdGFiU2l6ZTogdHJ1ZSxcbiAgd2lkb3dzOiB0cnVlLFxuICB6SW5kZXg6IHRydWUsXG4gIHpvb206IHRydWUsXG5cbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogdHJ1ZSxcbiAgc3RvcE9wYWNpdHk6IHRydWUsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IHRydWUsXG4gIHN0cm9rZU9wYWNpdHk6IHRydWUsXG4gIHN0cm9rZVdpZHRoOiB0cnVlXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXggdmVuZG9yLXNwZWNpZmljIHByZWZpeCwgZWc6IFdlYmtpdFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBzdHlsZSBuYW1lLCBlZzogdHJhbnNpdGlvbkR1cmF0aW9uXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHN0eWxlIG5hbWUgcHJlZml4ZWQgd2l0aCBgcHJlZml4YCwgcHJvcGVybHkgY2FtZWxDYXNlZCwgZWc6XG4gKiBXZWJraXRUcmFuc2l0aW9uRHVyYXRpb25cbiAqL1xuZnVuY3Rpb24gcHJlZml4S2V5KHByZWZpeCwga2V5KSB7XG4gIHJldHVybiBwcmVmaXggKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgc3R5bGUgbmFtZXMgdGhhdCBtYXkgY29tZSBwYXNzZWQgaW4gcHJlZml4ZWQgYnkgYWRkaW5nIHBlcm11dGF0aW9uc1xuICogb2YgdmVuZG9yIHByZWZpeGVzLlxuICovXG52YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdtcycsICdNb3onLCAnTyddO1xuXG4vLyBVc2luZyBPYmplY3Qua2V5cyBoZXJlLCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuXG4vLyBpbmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVzIG92ZXIgdGhlIG5ld2x5IGFkZGVkIHByb3BzIHRvby5cbk9iamVjdC5rZXlzKGlzVW5pdGxlc3NOdW1iZXIpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgcHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG4gICAgaXNVbml0bGVzc051bWJlcltwcmVmaXhLZXkocHJlZml4LCBwcm9wKV0gPSBpc1VuaXRsZXNzTnVtYmVyW3Byb3BdO1xuICB9KTtcbn0pO1xuXG4vKipcbiAqIE1vc3Qgc3R5bGUgcHJvcGVydGllcyBjYW4gYmUgdW5zZXQgYnkgZG9pbmcgLnN0eWxlW3Byb3BdID0gJycgYnV0IElFOFxuICogZG9lc24ndCBsaWtlIGRvaW5nIHRoYXQgd2l0aCBzaG9ydGhhbmQgcHJvcGVydGllcyBzbyBmb3IgdGhlIHByb3BlcnRpZXMgdGhhdFxuICogSUU4IGJyZWFrcyBvbiwgd2hpY2ggYXJlIGxpc3RlZCBoZXJlLCB3ZSBpbnN0ZWFkIHVuc2V0IGVhY2ggb2YgdGhlXG4gKiBpbmRpdmlkdWFsIHByb3BlcnRpZXMuIFNlZSBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM4NS5cbiAqIFRoZSA0LXZhbHVlICdjbG9jaycgcHJvcGVydGllcyBsaWtlIG1hcmdpbiwgcGFkZGluZywgYm9yZGVyLXdpZHRoIHNlZW0gdG9cbiAqIGJlaGF2ZSB3aXRob3V0IGFueSBwcm9ibGVtcy4gQ3VyaW91c2x5LCBsaXN0LXN0eWxlIHdvcmtzIHRvbyB3aXRob3V0IGFueVxuICogc3BlY2lhbCBwcm9kZGluZy5cbiAqL1xudmFyIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucyA9IHtcbiAgYmFja2dyb3VuZDoge1xuICAgIGJhY2tncm91bmRBdHRhY2htZW50OiB0cnVlLFxuICAgIGJhY2tncm91bmRDb2xvcjogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IHRydWVcbiAgfSxcbiAgYmFja2dyb3VuZFBvc2l0aW9uOiB7XG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlXG4gIH0sXG4gIGJvcmRlcjoge1xuICAgIGJvcmRlcldpZHRoOiB0cnVlLFxuICAgIGJvcmRlclN0eWxlOiB0cnVlLFxuICAgIGJvcmRlckNvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlckJvdHRvbToge1xuICAgIGJvcmRlckJvdHRvbVdpZHRoOiB0cnVlLFxuICAgIGJvcmRlckJvdHRvbVN0eWxlOiB0cnVlLFxuICAgIGJvcmRlckJvdHRvbUNvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlckxlZnQ6IHtcbiAgICBib3JkZXJMZWZ0V2lkdGg6IHRydWUsXG4gICAgYm9yZGVyTGVmdFN0eWxlOiB0cnVlLFxuICAgIGJvcmRlckxlZnRDb2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJSaWdodDoge1xuICAgIGJvcmRlclJpZ2h0V2lkdGg6IHRydWUsXG4gICAgYm9yZGVyUmlnaHRTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJSaWdodENvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlclRvcDoge1xuICAgIGJvcmRlclRvcFdpZHRoOiB0cnVlLFxuICAgIGJvcmRlclRvcFN0eWxlOiB0cnVlLFxuICAgIGJvcmRlclRvcENvbG9yOiB0cnVlXG4gIH0sXG4gIGZvbnQ6IHtcbiAgICBmb250U3R5bGU6IHRydWUsXG4gICAgZm9udFZhcmlhbnQ6IHRydWUsXG4gICAgZm9udFdlaWdodDogdHJ1ZSxcbiAgICBmb250U2l6ZTogdHJ1ZSxcbiAgICBsaW5lSGVpZ2h0OiB0cnVlLFxuICAgIGZvbnRGYW1pbHk6IHRydWVcbiAgfSxcbiAgb3V0bGluZToge1xuICAgIG91dGxpbmVXaWR0aDogdHJ1ZSxcbiAgICBvdXRsaW5lU3R5bGU6IHRydWUsXG4gICAgb3V0bGluZUNvbG9yOiB0cnVlXG4gIH1cbn07XG5cbnZhciBDU1NQcm9wZXJ0eSA9IHtcbiAgaXNVbml0bGVzc051bWJlcjogaXNVbml0bGVzc051bWJlcixcbiAgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOiBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHk7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NhbWVsaXplU3R5bGVOYW1lJyk7XG52YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IHJlcXVpcmUoJy4vZGFuZ2Vyb3VzU3R5bGVWYWx1ZScpO1xudmFyIGh5cGhlbmF0ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGliL2h5cGhlbmF0ZVN0eWxlTmFtZScpO1xudmFyIG1lbW9pemVTdHJpbmdPbmx5ID0gcmVxdWlyZSgnZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHknKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgcHJvY2Vzc1N0eWxlTmFtZSA9IG1lbW9pemVTdHJpbmdPbmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHlsZU5hbWUpO1xufSk7XG5cbnZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IGZhbHNlO1xudmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NGbG9hdCc7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHZhciB0ZW1wU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcbiAgdHJ5IHtcbiAgICAvLyBJRTggdGhyb3dzIFwiSW52YWxpZCBhcmd1bWVudC5cIiBpZiByZXNldHRpbmcgc2hvcnRoYW5kIHN0eWxlIHByb3BlcnRpZXMuXG4gICAgdGVtcFN0eWxlLmZvbnQgPSAnJztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnID0gdHJ1ZTtcbiAgfVxuICAvLyBJRTggb25seSBzdXBwb3J0cyBhY2Nlc3NpbmcgY3NzRmxvYXQgKHN0YW5kYXJkKSBhcyBzdHlsZUZsb2F0XG4gIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdzdHlsZUZsb2F0JztcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNvcnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG4gIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS87XG5cbiAgLy8gc3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9uXG4gIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztcblxuICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9O1xuICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fTtcblxuICB2YXIgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSkpIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIHZhciB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpKSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnU3R5bGUgcHJvcGVydHkgdmFsdWVzIHNob3VsZG5cXCd0IGNvbnRhaW4gYSBzZW1pY29sb24uICcgKyAnVHJ5IFwiJXM6ICVzXCIgaW5zdGVhZC4nLCBuYW1lLCB2YWx1ZS5yZXBsYWNlKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiwgJycpKSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKi9cbiAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIENTUyBwcm9wZXJ0aWVzLlxuICovXG52YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0ge1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIGZvciB1c2UgYXMgaW5saW5lIHN0eWxlczpcbiAgICpcbiAgICogICA+IGNyZWF0ZU1hcmt1cEZvclN0eWxlcyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pXG4gICAqICAgXCJ3aWR0aDoyMDBweDtoZWlnaHQ6MDtcIlxuICAgKlxuICAgKiBVbmRlZmluZWQgdmFsdWVzIGFyZSBpZ25vcmVkIHNvIHRoYXQgZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcgaXMgZWFzaWVyLlxuICAgKiBUaGUgcmVzdWx0IHNob3VsZCBiZSBIVE1MLWVzY2FwZWQgYmVmb3JlIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICogQHJldHVybiB7P3N0cmluZ31cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0eWxlcykge1xuICAgIHZhciBzZXJpYWxpemVkID0gJyc7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBzdHlsZVZhbHVlID0gc3R5bGVzW3N0eWxlTmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICBzZXJpYWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JztcbiAgICAgICAgc2VyaWFsaXplZCArPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSkgKyAnOyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZXJpYWxpemVkIHx8IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciBtdWx0aXBsZSBzdHlsZXMgb24gYSBub2RlLiAgSWYgYSB2YWx1ZSBpcyBzcGVjaWZpZWQgYXNcbiAgICogJycgKGVtcHR5IHN0cmluZyksIHRoZSBjb3JyZXNwb25kaW5nIHN0eWxlIHByb3BlcnR5IHdpbGwgYmUgdW5zZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzXG4gICAqL1xuICBzZXRWYWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcykge1xuICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0pO1xuICAgICAgfVxuICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0pO1xuICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0Jykge1xuICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNjZXNzb3I7XG4gICAgICB9XG4gICAgICBpZiAoc3R5bGVWYWx1ZSkge1xuICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBleHBhbnNpb24gPSBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyAmJiBDU1NQcm9wZXJ0eS5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTtcbiAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuICAgICAgICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3b24ndCBsaWtlIHVuc2V0dGluZywgc28gdW5zZXQgZWFjaFxuICAgICAgICAgIC8vIGNvbXBvbmVudCB0byBwbGFjYXRlIGl0XG4gICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcbiAgICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoQ1NTUHJvcGVydHlPcGVyYXRpb25zLCAnQ1NTUHJvcGVydHlPcGVyYXRpb25zJywge1xuICBzZXRWYWx1ZUZvclN0eWxlczogJ3NldFZhbHVlRm9yU3R5bGVzJ1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RFUxTlFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnUTFOVFVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1elhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRU5UVTFCeWIzQmxjblI1SUQwZ2NtVnhkV2x5WlNnbkxpOURVMU5RY205d1pYSjBlU2NwTzF4dWRtRnlJRVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlJYaGxZM1YwYVc5dVJXNTJhWEp2Ym0xbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEZCbGNtWWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVR1Z5WmljcE8xeHVYRzUyWVhJZ1kyRnRaV3hwZW1WVGRIbHNaVTVoYldVZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOWpZVzFsYkdsNlpWTjBlV3hsVG1GdFpTY3BPMXh1ZG1GeUlHUmhibWRsY205MWMxTjBlV3hsVm1Gc2RXVWdQU0J5WlhGMWFYSmxLQ2N1TDJSaGJtZGxjbTkxYzFOMGVXeGxWbUZzZFdVbktUdGNiblpoY2lCb2VYQm9aVzVoZEdWVGRIbHNaVTVoYldVZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOW9lWEJvWlc1aGRHVlRkSGxzWlU1aGJXVW5LVHRjYm5aaGNpQnRaVzF2YVhwbFUzUnlhVzVuVDI1c2VTQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMjFsYlc5cGVtVlRkSEpwYm1kUGJteDVKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dWRtRnlJSEJ5YjJObGMzTlRkSGxzWlU1aGJXVWdQU0J0WlcxdmFYcGxVM1J5YVc1blQyNXNlU2htZFc1amRHbHZiaUFvYzNSNWJHVk9ZVzFsS1NCN1hHNGdJSEpsZEhWeWJpQm9lWEJvWlc1aGRHVlRkSGxzWlU1aGJXVW9jM1I1YkdWT1lXMWxLVHRjYm4wcE8xeHVYRzUyWVhJZ2FHRnpVMmh2Y25Sb1lXNWtVSEp2Y0dWeWRIbENkV2NnUFNCbVlXeHpaVHRjYm5aaGNpQnpkSGxzWlVac2IyRjBRV05qWlhOemIzSWdQU0FuWTNOelJteHZZWFFuTzF4dWFXWWdLRVY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwTG1OaGJsVnpaVVJQVFNrZ2UxeHVJQ0IyWVhJZ2RHVnRjRk4wZVd4bElEMGdaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnblpHbDJKeWt1YzNSNWJHVTdYRzRnSUhSeWVTQjdYRzRnSUNBZ0x5OGdTVVU0SUhSb2NtOTNjeUJjSWtsdWRtRnNhV1FnWVhKbmRXMWxiblF1WENJZ2FXWWdjbVZ6WlhSMGFXNW5JSE5vYjNKMGFHRnVaQ0J6ZEhsc1pTQndjbTl3WlhKMGFXVnpMbHh1SUNBZ0lIUmxiWEJUZEhsc1pTNW1iMjUwSUQwZ0p5YzdYRzRnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNCb1lYTlRhRzl5ZEdoaGJtUlFjbTl3WlhKMGVVSjFaeUE5SUhSeWRXVTdYRzRnSUgxY2JpQWdMeThnU1VVNElHOXViSGtnYzNWd2NHOXlkSE1nWVdOalpYTnphVzVuSUdOemMwWnNiMkYwSUNoemRHRnVaR0Z5WkNrZ1lYTWdjM1I1YkdWR2JHOWhkRnh1SUNCcFppQW9aRzlqZFcxbGJuUXVaRzlqZFcxbGJuUkZiR1Z0Wlc1MExuTjBlV3hsTG1OemMwWnNiMkYwSUQwOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQnpkSGxzWlVac2IyRjBRV05qWlhOemIzSWdQU0FuYzNSNWJHVkdiRzloZENjN1hHNGdJSDFjYm4xY2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnTHk4Z0oyMXpWSEpoYm5ObWIzSnRKeUJwY3lCamIzSnlaV04wTENCaWRYUWdkR2hsSUc5MGFHVnlJSEJ5WldacGVHVnpJSE5vYjNWc1pDQmlaU0JqWVhCcGRHRnNhWHBsWkZ4dUlDQjJZWElnWW1Ga1ZtVnVaRzl5WldSVGRIbHNaVTVoYldWUVlYUjBaWEp1SUQwZ0wxNG9QenAzWldKcmFYUjhiVzk2Zkc4cFcwRXRXbDB2TzF4dVhHNGdJQzh2SUhOMGVXeGxJSFpoYkhWbGN5QnphRzkxYkdSdUozUWdZMjl1ZEdGcGJpQmhJSE5sYldsamIyeHZibHh1SUNCMllYSWdZbUZrVTNSNWJHVldZV3gxWlZkcGRHaFRaVzFwWTI5c2IyNVFZWFIwWlhKdUlEMGdMenRjWEhNcUpDODdYRzVjYmlBZ2RtRnlJSGRoY201bFpGTjBlV3hsVG1GdFpYTWdQU0I3ZlR0Y2JpQWdkbUZ5SUhkaGNtNWxaRk4wZVd4bFZtRnNkV1Z6SUQwZ2UzMDdYRzVjYmlBZ2RtRnlJSGRoY201SWVYQm9aVzVoZEdWa1UzUjViR1ZPWVcxbElEMGdablZ1WTNScGIyNGdLRzVoYldVcElIdGNiaUFnSUNCcFppQW9kMkZ5Ym1Wa1UzUjViR1ZPWVcxbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU0FtSmlCM1lYSnVaV1JUZEhsc1pVNWhiV1Z6VzI1aGJXVmRLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2QyRnlibVZrVTNSNWJHVk9ZVzFsYzF0dVlXMWxYU0E5SUhSeWRXVTdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFZibk4xY0hCdmNuUmxaQ0J6ZEhsc1pTQndjbTl3WlhKMGVTQWxjeTRnUkdsa0lIbHZkU0J0WldGdUlDVnpQeWNzSUc1aGJXVXNJR05oYldWc2FYcGxVM1I1YkdWT1lXMWxLRzVoYldVcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZUdGNibHh1SUNCMllYSWdkMkZ5YmtKaFpGWmxibVJ2Y21Wa1UzUjViR1ZPWVcxbElEMGdablZ1WTNScGIyNGdLRzVoYldVcElIdGNiaUFnSUNCcFppQW9kMkZ5Ym1Wa1UzUjViR1ZPWVcxbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU0FtSmlCM1lYSnVaV1JUZEhsc1pVNWhiV1Z6VzI1aGJXVmRLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2QyRnlibVZrVTNSNWJHVk9ZVzFsYzF0dVlXMWxYU0E5SUhSeWRXVTdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFZibk4xY0hCdmNuUmxaQ0IyWlc1a2IzSXRjSEpsWm1sNFpXUWdjM1I1YkdVZ2NISnZjR1Z5ZEhrZ0pYTXVJRVJwWkNCNWIzVWdiV1ZoYmlBbGN6OG5MQ0J1WVcxbExDQnVZVzFsTG1Ob1lYSkJkQ2d3S1M1MGIxVndjR1Z5UTJGelpTZ3BJQ3NnYm1GdFpTNXpiR2xqWlNneEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMDdYRzVjYmlBZ2RtRnlJSGRoY201VGRIbHNaVlpoYkhWbFYybDBhRk5sYldsamIyeHZiaUE5SUdaMWJtTjBhVzl1SUNodVlXMWxMQ0IyWVd4MVpTa2dlMXh1SUNBZ0lHbG1JQ2gzWVhKdVpXUlRkSGxzWlZaaGJIVmxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaDJZV3gxWlNrZ0ppWWdkMkZ5Ym1Wa1UzUjViR1ZXWVd4MVpYTmJkbUZzZFdWZEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZDJGeWJtVmtVM1I1YkdWV1lXeDFaWE5iZG1Gc2RXVmRJRDBnZEhKMVpUdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxTjBlV3hsSUhCeWIzQmxjblI1SUhaaGJIVmxjeUJ6YUc5MWJHUnVYRnduZENCamIyNTBZV2x1SUdFZ2MyVnRhV052Ykc5dUxpQW5JQ3NnSjFSeWVTQmNJaVZ6T2lBbGMxd2lJR2x1YzNSbFlXUXVKeXdnYm1GdFpTd2dkbUZzZFdVdWNtVndiR0ZqWlNoaVlXUlRkSGxzWlZaaGJIVmxWMmwwYUZObGJXbGpiMnh2YmxCaGRIUmxjbTRzSUNjbktTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdWY2JpQWdJQ292WEc0Z0lIWmhjaUIzWVhKdVZtRnNhV1JUZEhsc1pTQTlJR1oxYm1OMGFXOXVJQ2h1WVcxbExDQjJZV3gxWlNrZ2UxeHVJQ0FnSUdsbUlDaHVZVzFsTG1sdVpHVjRUMllvSnkwbktTQStJQzB4S1NCN1hHNGdJQ0FnSUNCM1lYSnVTSGx3YUdWdVlYUmxaRk4wZVd4bFRtRnRaU2h1WVcxbEtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHSmhaRlpsYm1SdmNtVmtVM1I1YkdWT1lXMWxVR0YwZEdWeWJpNTBaWE4wS0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0IzWVhKdVFtRmtWbVZ1Wkc5eVpXUlRkSGxzWlU1aGJXVW9ibUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoaVlXUlRkSGxzWlZaaGJIVmxWMmwwYUZObGJXbGpiMnh2YmxCaGRIUmxjbTR1ZEdWemRDaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lIZGhjbTVUZEhsc1pWWmhiSFZsVjJsMGFGTmxiV2xqYjJ4dmJpaHVZVzFsTENCMllXeDFaU2s3WEc0Z0lDQWdmVnh1SUNCOU8xeHVmVnh1WEc0dktpcGNiaUFxSUU5d1pYSmhkR2x2Ym5NZ1ptOXlJR1JsWVd4cGJtY2dkMmwwYUNCRFUxTWdjSEp2Y0dWeWRHbGxjeTVjYmlBcUwxeHVkbUZ5SUVOVFUxQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5QTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMlZ5YVdGc2FYcGxjeUJoSUcxaGNIQnBibWNnYjJZZ2MzUjViR1VnY0hKdmNHVnlkR2xsY3lCbWIzSWdkWE5sSUdGeklHbHViR2x1WlNCemRIbHNaWE02WEc0Z0lDQXFYRzRnSUNBcUlDQWdQaUJqY21WaGRHVk5ZWEpyZFhCR2IzSlRkSGxzWlhNb2UzZHBaSFJvT2lBbk1qQXdjSGduTENCb1pXbG5hSFE2SURCOUtWeHVJQ0FnS2lBZ0lGd2lkMmxrZEdnNk1qQXdjSGc3YUdWcFoyaDBPakE3WENKY2JpQWdJQ3BjYmlBZ0lDb2dWVzVrWldacGJtVmtJSFpoYkhWbGN5QmhjbVVnYVdkdWIzSmxaQ0J6YnlCMGFHRjBJR1JsWTJ4aGNtRjBhWFpsSUhCeWIyZHlZVzF0YVc1bklHbHpJR1ZoYzJsbGNpNWNiaUFnSUNvZ1ZHaGxJSEpsYzNWc2RDQnphRzkxYkdRZ1ltVWdTRlJOVEMxbGMyTmhjR1ZrSUdKbFptOXlaU0JwYm5ObGNuUnBiMjRnYVc1MGJ5QjBhR1VnUkU5TkxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjM1I1YkdWelhHNGdJQ0FxSUVCeVpYUjFjbTRnZXo5emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCamNtVmhkR1ZOWVhKcmRYQkdiM0pUZEhsc1pYTTZJR1oxYm1OMGFXOXVJQ2h6ZEhsc1pYTXBJSHRjYmlBZ0lDQjJZWElnYzJWeWFXRnNhWHBsWkNBOUlDY25PMXh1SUNBZ0lHWnZjaUFvZG1GeUlITjBlV3hsVG1GdFpTQnBiaUJ6ZEhsc1pYTXBJSHRjYmlBZ0lDQWdJR2xtSUNnaGMzUjViR1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSE4wZVd4bFRtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMllYSWdjM1I1YkdWV1lXeDFaU0E5SUhOMGVXeGxjMXR6ZEhsc1pVNWhiV1ZkTzF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnZDJGeWJsWmhiR2xrVTNSNWJHVW9jM1I1YkdWT1lXMWxMQ0J6ZEhsc1pWWmhiSFZsS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaHpkSGxzWlZaaGJIVmxJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnYzJWeWFXRnNhWHBsWkNBclBTQndjbTlqWlhOelUzUjViR1ZPWVcxbEtITjBlV3hsVG1GdFpTa2dLeUFuT2ljN1hHNGdJQ0FnSUNBZ0lITmxjbWxoYkdsNlpXUWdLejBnWkdGdVoyVnliM1Z6VTNSNWJHVldZV3gxWlNoemRIbHNaVTVoYldVc0lITjBlV3hsVm1Gc2RXVXBJQ3NnSnpzbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjMlZ5YVdGc2FYcGxaQ0I4ZkNCdWRXeHNPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUnpJSFJvWlNCMllXeDFaU0JtYjNJZ2JYVnNkR2x3YkdVZ2MzUjViR1Z6SUc5dUlHRWdibTlrWlM0Z0lFbG1JR0VnZG1Gc2RXVWdhWE1nYzNCbFkybG1hV1ZrSUdGelhHNGdJQ0FxSUNjbklDaGxiWEIwZVNCemRISnBibWNwTENCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCemRIbHNaU0J3Y205d1pYSjBlU0IzYVd4c0lHSmxJSFZ1YzJWMExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUc1dlpHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhOMGVXeGxjMXh1SUNBZ0tpOWNiaUFnYzJWMFZtRnNkV1ZHYjNKVGRIbHNaWE02SUdaMWJtTjBhVzl1SUNodWIyUmxMQ0J6ZEhsc1pYTXBJSHRjYmlBZ0lDQjJZWElnYzNSNWJHVWdQU0J1YjJSbExuTjBlV3hsTzF4dUlDQWdJR1p2Y2lBb2RtRnlJSE4wZVd4bFRtRnRaU0JwYmlCemRIbHNaWE1wSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hjM1I1YkdWekxtaGhjMDkzYmxCeWIzQmxjblI1S0hOMGVXeGxUbUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQjNZWEp1Vm1Gc2FXUlRkSGxzWlNoemRIbHNaVTVoYldVc0lITjBlV3hsYzF0emRIbHNaVTVoYldWZEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIWmhjaUJ6ZEhsc1pWWmhiSFZsSUQwZ1pHRnVaMlZ5YjNWelUzUjViR1ZXWVd4MVpTaHpkSGxzWlU1aGJXVXNJSE4wZVd4bGMxdHpkSGxzWlU1aGJXVmRLVHRjYmlBZ0lDQWdJR2xtSUNoemRIbHNaVTVoYldVZ1BUMDlJQ2RtYkc5aGRDY3BJSHRjYmlBZ0lDQWdJQ0FnYzNSNWJHVk9ZVzFsSUQwZ2MzUjViR1ZHYkc5aGRFRmpZMlZ6YzI5eU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSE4wZVd4bFZtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2MzUjViR1ZiYzNSNWJHVk9ZVzFsWFNBOUlITjBlV3hsVm1Gc2RXVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWlhod1lXNXphVzl1SUQwZ2FHRnpVMmh2Y25Sb1lXNWtVSEp2Y0dWeWRIbENkV2NnSmlZZ1ExTlRVSEp2Y0dWeWRIa3VjMmh2Y25Sb1lXNWtVSEp2Y0dWeWRIbEZlSEJoYm5OcGIyNXpXM04wZVd4bFRtRnRaVjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaGxlSEJoYm5OcGIyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlRhRzl5ZEdoaGJtUWdjSEp2Y0dWeWRIa2dkR2hoZENCSlJUZ2dkMjl1SjNRZ2JHbHJaU0IxYm5ObGRIUnBibWNzSUhOdklIVnVjMlYwSUdWaFkyaGNiaUFnSUNBZ0lDQWdJQ0F2THlCamIyMXdiMjVsYm5RZ2RHOGdjR3hoWTJGMFpTQnBkRnh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdsdVpHbDJhV1IxWVd4VGRIbHNaVTVoYldVZ2FXNGdaWGh3WVc1emFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkSGxzWlZ0cGJtUnBkbWxrZFdGc1UzUjViR1ZPWVcxbFhTQTlJQ2NuTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0J6ZEhsc1pWdHpkSGxzWlU1aGJXVmRJRDBnSnljN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dWZUdGNibHh1VW1WaFkzUlFaWEptTG0xbFlYTjFjbVZOWlhSb2IyUnpLRU5UVTFCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3l3Z0owTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeWNzSUh0Y2JpQWdjMlYwVm1Gc2RXVkdiM0pUZEhsc1pYTTZJQ2R6WlhSV1lXeDFaVVp2Y2xOMGVXeGxjeWRjYm4wcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRU5UVTFCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3pzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENhbGxiYWNrUXVldWVcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgcHNldWRvLWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2YgY29tcG9uZW50cyB3YWl0aW5nIHRvXG4gKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50cyBgUG9vbGVkQ2xhc3NgLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEluc3RlYWQsIHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuXG4gKlxuICogQGNsYXNzIFJlYWN0TW91bnRSZWFkeVxuICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3NcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBDYWxsYmFja1F1ZXVlKCkge1xuICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG59XG5cbmFzc2lnbihDYWxsYmFja1F1ZXVlLnByb3RvdHlwZSwge1xuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0IENvbnRleHQgdG8gY2FsbCBgY2FsbGJhY2tgIHdpdGguXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZTogZnVuY3Rpb24gKGNhbGxiYWNrLCBjb250ZXh0KSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IFtdO1xuICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107XG4gICAgdGhpcy5fY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIHRoaXMuX2NvbnRleHRzLnB1c2goY29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNhbGxiYWNrcyBhbmQgY2xlYXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyXG4gICAqIHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBvciB1cGRhdGVkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5vdGlmeUFsbDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3M7XG4gICAgdmFyIGNvbnRleHRzID0gdGhpcy5fY29udGV4dHM7XG4gICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgIShjYWxsYmFja3MubGVuZ3RoID09PSBjb250ZXh0cy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBjb250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSk7XG4gICAgICB9XG4gICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICAgIGNvbnRleHRzLmxlbmd0aCA9IDA7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG5cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FsbGJhY2tRdWV1ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOURZV3hzWW1GamExRjFaWFZsTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JEWVd4c1ltRmphMUYxWlhWbFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVRzl2YkdWa1EyeGhjM01nUFNCeVpYRjFhWEpsS0NjdUwxQnZiMnhsWkVOc1lYTnpKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVMeW9xWEc0Z0tpQkJJSE53WldOcFlXeHBlbVZrSUhCelpYVmtieTFsZG1WdWRDQnRiMlIxYkdVZ2RHOGdhR1ZzY0NCclpXVndJSFJ5WVdOcklHOW1JR052YlhCdmJtVnVkSE1nZDJGcGRHbHVaeUIwYjF4dUlDb2dZbVVnYm05MGFXWnBaV1FnZDJobGJpQjBhR1ZwY2lCRVQwMGdjbVZ3Y21WelpXNTBZWFJwYjI1eklHRnlaU0JoZG1GcGJHRmliR1VnWm05eUlIVnpaUzVjYmlBcVhHNGdLaUJVYUdseklHbHRjR3hsYldWdWRITWdZRkJ2YjJ4bFpFTnNZWE56WUN3Z2MyOGdlVzkxSUhOb2IzVnNaQ0J1WlhabGNpQnVaV1ZrSUhSdklHbHVjM1JoYm5ScFlYUmxJSFJvYVhNdVhHNGdLaUJKYm5OMFpXRmtMQ0IxYzJVZ1lFTmhiR3hpWVdOclVYVmxkV1V1WjJWMFVHOXZiR1ZrS0NsZ0xseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCU1pXRmpkRTF2ZFc1MFVtVmhaSGxjYmlBcUlFQnBiWEJzWlcxbGJuUnpJRkJ2YjJ4bFpFTnNZWE56WEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxTDF4dVpuVnVZM1JwYjI0Z1EyRnNiR0poWTJ0UmRXVjFaU2dwSUh0Y2JpQWdkR2hwY3k1ZlkyRnNiR0poWTJ0eklEMGdiblZzYkR0Y2JpQWdkR2hwY3k1ZlkyOXVkR1Y0ZEhNZ1BTQnVkV3hzTzF4dWZWeHVYRzVoYzNOcFoyNG9RMkZzYkdKaFkydFJkV1YxWlM1d2NtOTBiM1I1Y0dVc0lIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1JXNXhkV1YxWlhNZ1lTQmpZV3hzWW1GamF5QjBieUJpWlNCcGJuWnZhMlZrSUhkb1pXNGdZRzV2ZEdsbWVVRnNiR0FnYVhNZ2FXNTJiMnRsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dTVzUyYjJ0bFpDQjNhR1Z1SUdCdWIzUnBabmxCYkd4Z0lHbHpJR2x1ZG05clpXUXVYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ1kyOXVkR1Y0ZENCRGIyNTBaWGgwSUhSdklHTmhiR3dnWUdOaGJHeGlZV05yWUNCM2FYUm9MbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Z1Y1hWbGRXVTZJR1oxYm1OMGFXOXVJQ2hqWVd4c1ltRmpheXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFJvYVhNdVgyTmhiR3hpWVdOcmN5QTlJSFJvYVhNdVgyTmhiR3hpWVdOcmN5QjhmQ0JiWFR0Y2JpQWdJQ0IwYUdsekxsOWpiMjUwWlhoMGN5QTlJSFJvYVhNdVgyTnZiblJsZUhSeklIeDhJRnRkTzF4dUlDQWdJSFJvYVhNdVgyTmhiR3hpWVdOcmN5NXdkWE5vS0dOaGJHeGlZV05yS1R0Y2JpQWdJQ0IwYUdsekxsOWpiMjUwWlhoMGN5NXdkWE5vS0dOdmJuUmxlSFFwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWeklHRnNiQ0JsYm5GMVpYVmxaQ0JqWVd4c1ltRmphM01nWVc1a0lHTnNaV0Z5Y3lCMGFHVWdjWFZsZFdVdUlGUm9hWE1nYVhNZ2FXNTJiMnRsWkNCaFpuUmxjbHh1SUNBZ0tpQjBhR1VnUkU5TklISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlHRWdZMjl0Y0c5dVpXNTBJR2hoY3lCaVpXVnVJR055WldGMFpXUWdiM0lnZFhCa1lYUmxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQnViM1JwWm5sQmJHdzZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IyWVhJZ1kyRnNiR0poWTJ0eklEMGdkR2hwY3k1ZlkyRnNiR0poWTJ0ek8xeHVJQ0FnSUhaaGNpQmpiMjUwWlhoMGN5QTlJSFJvYVhNdVgyTnZiblJsZUhSek8xeHVJQ0FnSUdsbUlDaGpZV3hzWW1GamEzTXBJSHRjYmlBZ0lDQWdJQ0VvWTJGc2JHSmhZMnR6TG14bGJtZDBhQ0E5UFQwZ1kyOXVkR1Y0ZEhNdWJHVnVaM1JvS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2ROYVhOdFlYUmphR1ZrSUd4cGMzUWdiMllnWTI5dWRHVjRkSE1nYVc0Z1kyRnNiR0poWTJzZ2NYVmxkV1VuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjBhR2x6TGw5allXeHNZbUZqYTNNZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRITWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQmpZV3hzWW1GamEzTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyRnNiR0poWTJ0elcybGRMbU5oYkd3b1kyOXVkR1Y0ZEhOYmFWMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZMkZzYkdKaFkydHpMbXhsYm1kMGFDQTlJREE3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBjeTVzWlc1bmRHZ2dQU0F3TzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVnpaWFJ6SUhSb1pTQnBiblJsY201aGJDQnhkV1YxWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0J5WlhObGREb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFJvYVhNdVgyTmhiR3hpWVdOcmN5QTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRITWdQU0J1ZFd4c08xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJnVUc5dmJHVmtRMnhoYzNOZ0lHeHZiMnR6SUdadmNpQjBhR2x6TGx4dUlDQWdLaTljYmlBZ1pHVnpkSEoxWTNSdmNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFJvYVhNdWNtVnpaWFFvS1R0Y2JpQWdmVnh1WEc1OUtUdGNibHh1VUc5dmJHVmtRMnhoYzNNdVlXUmtVRzl2YkdsdVoxUnZLRU5oYkd4aVlXTnJVWFZsZFdVcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRU5oYkd4aVlXTnJVWFZsZFdVN0lsMTkiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgQ2hhbmdlRXZlbnRQbHVnaW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRUYXJnZXQnKTtcbnZhciBpc0V2ZW50U3VwcG9ydGVkID0gcmVxdWlyZSgnLi9pc0V2ZW50U3VwcG9ydGVkJyk7XG52YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gcmVxdWlyZSgnLi9pc1RleHRJbnB1dEVsZW1lbnQnKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG5cbnZhciB0b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcztcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIGNoYW5nZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ2hhbmdlOiBudWxsIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25DaGFuZ2VDYXB0dXJlOiBudWxsIH0pXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcEJsdXIsIHRvcExldmVsVHlwZXMudG9wQ2hhbmdlLCB0b3BMZXZlbFR5cGVzLnRvcENsaWNrLCB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzLCB0b3BMZXZlbFR5cGVzLnRvcElucHV0LCB0b3BMZXZlbFR5cGVzLnRvcEtleURvd24sIHRvcExldmVsVHlwZXMudG9wS2V5VXAsIHRvcExldmVsVHlwZXMudG9wU2VsZWN0aW9uQ2hhbmdlXVxuICB9XG59O1xuXG4vKipcbiAqIEZvciBJRSBzaGltc1xuICovXG52YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVudElEID0gbnVsbDtcbnZhciBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AgPSBudWxsO1xuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBgY2hhbmdlYCBldmVudFxuICovXG5mdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG52YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gZmFsc2U7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIFNlZSBgaGFuZGxlQ2hhbmdlYCBjb21tZW50IGJlbG93XG4gIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2NoYW5nZScpICYmICghKCdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTtcbn1cblxuZnVuY3Rpb24gbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkge1xuICB2YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5jaGFuZ2UsIGFjdGl2ZUVsZW1lbnRJRCwgbmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KSk7XG4gIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG5cbiAgLy8gSWYgY2hhbmdlIGFuZCBwcm9wZXJ0eWNoYW5nZSBidWJibGVkLCB3ZSdkIGp1c3QgYmluZCB0byBpdCBsaWtlIGFsbCB0aGVcbiAgLy8gb3RoZXIgZXZlbnRzIGFuZCBoYXZlIGl0IGdvIHRocm91Z2ggUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLiBTaW5jZSBpdFxuICAvLyBkb2Vzbid0LCB3ZSBtYW51YWxseSBsaXN0ZW4gZm9yIHRoZSBldmVudHMgYW5kIHNvIHdlIGhhdmUgdG8gZW5xdWV1ZSBhbmRcbiAgLy8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFudWFsbHkuXG4gIC8vXG4gIC8vIEJhdGNoaW5nIGlzIG5lY2Vzc2FyeSBoZXJlIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGFsbCBldmVudCBoYW5kbGVycyBydW5cbiAgLy8gYmVmb3JlIHRoZSBuZXh0IHJlcmVuZGVyIChpbmNsdWRpbmcgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgdG8gYW5jZXN0b3JcbiAgLy8gZWxlbWVudHMgaW5zdGVhZCBvZiBkaXJlY3RseSBvbiB0aGUgaW5wdXQpLiBXaXRob3V0IHRoaXMsIGNvbnRyb2xsZWRcbiAgLy8gY29tcG9uZW50cyBkb24ndCB3b3JrIHByb3Blcmx5IGluIGNvbmp1bmN0aW9uIHdpdGggZXZlbnQgYnViYmxpbmcgYmVjYXVzZVxuICAvLyB0aGUgY29tcG9uZW50IGlzIHJlcmVuZGVyZWQgYW5kIHRoZSB2YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBldmVudFxuICAvLyBoYW5kbGVycyBjYW4gcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MDguXG4gIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhydW5FdmVudEluQmF0Y2gsIGV2ZW50KTtcbn1cblxuZnVuY3Rpb24gcnVuRXZlbnRJbkJhdGNoKGV2ZW50KSB7XG4gIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpO1xuICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldElEKSB7XG4gIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4gIGFjdGl2ZUVsZW1lbnRJRCA9IHRhcmdldElEO1xuICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQpO1xufVxuXG5mdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpIHtcbiAgaWYgKCFhY3RpdmVFbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG4gIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJREZvckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BDaGFuZ2UpIHtcbiAgICByZXR1cm4gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgfVxufVxuZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTgodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzKSB7XG4gICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuICAgIHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEJsdXIpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuICB9XG59XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnRcbiAqL1xudmFyIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0IHdoZW5cbiAgLy8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3JlIGl0cyBpbnB1dCBldmVudHNcbiAgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOSk7XG59XG5cbi8qKlxuICogKEZvciBvbGQgSUUuKSBSZXBsYWNlbWVudCBnZXR0ZXIvc2V0dGVyIGZvciB0aGUgYHZhbHVlYCBwcm9wZXJ0eSB0aGF0IGdldHNcbiAqIHNldCBvbiB0aGUgYWN0aXZlIGVsZW1lbnQuXG4gKi9cbnZhciBuZXdWYWx1ZVByb3AgPSB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBhY3RpdmVFbGVtZW50VmFsdWVQcm9wLmdldC5jYWxsKHRoaXMpO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAvLyBDYXN0IHRvIGEgc3RyaW5nIHNvIHdlIGNhbiBkbyBlcXVhbGl0eSBjaGVja3MuXG4gICAgYWN0aXZlRWxlbWVudFZhbHVlID0gJycgKyB2YWw7XG4gICAgYWN0aXZlRWxlbWVudFZhbHVlUHJvcC5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICB9XG59O1xuXG4vKipcbiAqIChGb3Igb2xkIElFLikgU3RhcnRzIHRyYWNraW5nIHByb3BlcnR5Y2hhbmdlIGV2ZW50cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnRcbiAqIGFuZCBvdmVycmlkZSB0aGUgdmFsdWUgcHJvcGVydHkgc28gdGhhdCB3ZSBjYW4gZGlzdGluZ3Vpc2ggdXNlciBldmVudHMgZnJvbVxuICogdmFsdWUgY2hhbmdlcyBpbiBKUy5cbiAqL1xuZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0SUQpIHtcbiAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudElEID0gdGFyZ2V0SUQ7XG4gIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgJ3ZhbHVlJyk7XG5cbiAgLy8gTm90IGd1YXJkZWQgaW4gYSBjYW5EZWZpbmVQcm9wZXJ0eSBjaGVjazogSUU4IHN1cHBvcnRzIGRlZmluZVByb3BlcnR5IG9ubHlcbiAgLy8gb24gRE9NIGVsZW1lbnRzXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhY3RpdmVFbGVtZW50LCAndmFsdWUnLCBuZXdWYWx1ZVByb3ApO1xuICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xufVxuXG4vKipcbiAqIChGb3Igb2xkIElFLikgUmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIGZyb20gdGhlIGN1cnJlbnRseS10cmFja2VkIGVsZW1lbnQsXG4gKiBpZiBhbnkgZXhpc3RzLlxuICovXG5mdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpIHtcbiAgaWYgKCFhY3RpdmVFbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gZGVsZXRlIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSBkZWZpbml0aW9uXG4gIGRlbGV0ZSBhY3RpdmVFbGVtZW50LnZhbHVlO1xuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXG4gIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50VmFsdWUgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gbnVsbDtcbn1cblxuLyoqXG4gKiAoRm9yIG9sZCBJRS4pIEhhbmRsZXMgYSBwcm9wZXJ0eWNoYW5nZSBldmVudCwgc2VuZGluZyBhIGBjaGFuZ2VgIGV2ZW50IGlmXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSBlbGVtZW50IGhhcyBjaGFuZ2VkLlxuICovXG5mdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVudCkge1xuICBpZiAobmF0aXZlRXZlbnQucHJvcGVydHlOYW1lICE9PSAndmFsdWUnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciB2YWx1ZSA9IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gIGlmICh2YWx1ZSA9PT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IHZhbHVlO1xuXG4gIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZlbnQpO1xufVxuXG4vKipcbiAqIElmIGEgYGNoYW5nZWAgZXZlbnQgc2hvdWxkIGJlIGZpcmVkLCByZXR1cm5zIHRoZSB0YXJnZXQncyBJRC5cbiAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0SURGb3JJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BJbnB1dCkge1xuICAgIC8vIEluIG1vZGVybiBicm93c2VycyAoaS5lLiwgbm90IElFOCBvciBJRTkpLCB0aGUgaW5wdXQgZXZlbnQgaXMgZXhhY3RseVxuICAgIC8vIHdoYXQgd2Ugd2FudCBzbyBmYWxsIHRocm91Z2ggaGVyZSBhbmQgdHJpZ2dlciBhbiBhYnN0cmFjdCBldmVudFxuICAgIHJldHVybiB0b3BMZXZlbFRhcmdldElEO1xuICB9XG59XG5cbi8vIEZvciBJRTggYW5kIElFOS5cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRJRSh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wRm9jdXMpIHtcbiAgICAvLyBJbiBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVlIGNoYW5nZXMgYnkgYWRkaW5nIGFcbiAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMgd2l0aCBwcm9wZXJ0eU5hbWVcbiAgICAvLyBlcXVhbCB0byAndmFsdWUnXG4gICAgLy8gSW4gSUU5LCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBpbnB1dCBldmVudHMgYnV0IGlzIGJ1Z2d5IGFuZFxuICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0IGNvbnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlXG4gICAgLy8gYXBwZWFycyB0byBmaXJlIGluIGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRob3NlIGFuZFxuICAgIC8vIGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgIC8vIEluIGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYgdGhlIHZhbHVlXG4gICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVmaW5lIGEgc2V0dGVyIGZvciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXNcbiAgICAvLyBvdXIgYWN0aXZlRWxlbWVudFZhbHVlIHZhcmlhYmxlLCBhbGxvd2luZyB1cyB0byBpZ25vcmUgdGhvc2UgY2hhbmdlc1xuICAgIC8vXG4gICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICAgIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEJsdXIpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICB9XG59XG5cbi8vIEZvciBJRTggYW5kIElFOS5cbmZ1bmN0aW9uIGdldFRhcmdldElERm9ySW5wdXRFdmVudElFKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BTZWxlY3Rpb25DaGFuZ2UgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEtleVVwIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duKSB7XG4gICAgLy8gT24gdGhlIHNlbGVjdGlvbmNoYW5nZSBldmVudCwgdGhlIHRhcmdldCBpcyBqdXN0IGRvY3VtZW50IHdoaWNoIGlzbid0XG4gICAgLy8gaGVscGZ1bCBmb3IgdXMgc28ganVzdCBjaGVjayBhY3RpdmVFbGVtZW50IGluc3RlYWQuXG4gICAgLy9cbiAgICAvLyA5OSUgb2YgdGhlIHRpbWUsIGtleWRvd24gYW5kIGtleXVwIGFyZW4ndCBuZWNlc3NhcnkuIElFOCBmYWlscyB0byBmaXJlXG4gICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFmdGVyIHNldHRpbmcgYHZhbHVlYCBmcm9tIGFcbiAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkga2V5ZG93biwga2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1c3VhbGx5XG4gICAgLy8gZ2V0cyBpdCBhbmQgY2F0Y2hpbmcga2V5ZG93biBsZXRzIHVzIGZpcmUgYW4gZXZlbnQgZm9yIHRoZSBmaXJzdFxuICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBrZXkgcmVwZWF0IChpdCdsbCBiZSBhIGxpdHRsZSBkZWxheWVkOiByaWdodFxuICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0cm9rZSkuIE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvXG4gICAgLy8gZmlyZSBzZWxlY3Rpb25jaGFuZ2Ugbm9ybWFsbHkuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZlRWxlbWVudC52YWx1ZSAhPT0gYWN0aXZlRWxlbWVudFZhbHVlKSB7XG4gICAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSBhY3RpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRJRDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNsaWNrYCBldmVudFxuICovXG5mdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVsZW0pIHtcbiAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuXG4gIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3NzIGFsbCBicm93c2Vycywgd2hlcmVhcyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlXG4gIC8vIHVudGlsIGBibHVyYCBpbiBJRTguXG4gIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiAoZWxlbS50eXBlID09PSAnY2hlY2tib3gnIHx8IGVsZW0udHlwZSA9PT0gJ3JhZGlvJyk7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldElERm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wQ2xpY2spIHtcbiAgICByZXR1cm4gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmlyZXMgYXQgYSB0aW1lIHdoZW4gaXQncyBwb3NzaWJsZSB0b1xuICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91dCBzZWVpbmcgYSBmbGlja2VyLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG4gKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRleHRhcmVhXG4gKiAtIHNlbGVjdFxuICovXG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG5cbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHN9XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cbiAgICB2YXIgZ2V0VGFyZ2V0SURGdW5jLCBoYW5kbGVFdmVudEZ1bmM7XG4gICAgaWYgKHNob3VsZFVzZUNoYW5nZUV2ZW50KHRvcExldmVsVGFyZ2V0KSkge1xuICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuICAgICAgICBnZXRUYXJnZXRJREZ1bmMgPSBnZXRUYXJnZXRJREZvckNoYW5nZUV2ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTg7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RleHRJbnB1dEVsZW1lbnQodG9wTGV2ZWxUYXJnZXQpKSB7XG4gICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVkKSB7XG4gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9ySW5wdXRFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9ySW5wdXRFdmVudElFO1xuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50SUU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG91bGRVc2VDbGlja0V2ZW50KHRvcExldmVsVGFyZ2V0KSkge1xuICAgICAgZ2V0VGFyZ2V0SURGdW5jID0gZ2V0VGFyZ2V0SURGb3JDbGlja0V2ZW50O1xuICAgIH1cblxuICAgIGlmIChnZXRUYXJnZXRJREZ1bmMpIHtcbiAgICAgIHZhciB0YXJnZXRJRCA9IGdldFRhcmdldElERnVuYyh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKTtcbiAgICAgIGlmICh0YXJnZXRJRCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5jaGFuZ2UsIHRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgICBldmVudC50eXBlID0gJ2NoYW5nZSc7XG4gICAgICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFuZGxlRXZlbnRGdW5jKSB7XG4gICAgICBoYW5kbGVFdmVudEZ1bmModG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIENsaWVudFJlYWN0Um9vdEluZGV4XG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIG5leHRSZWFjdFJvb3RJbmRleCA9IDA7XG5cbnZhciBDbGllbnRSZWFjdFJvb3RJbmRleCA9IHtcbiAgY3JlYXRlUmVhY3RSb290SW5kZXg6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbmV4dFJlYWN0Um9vdEluZGV4Kys7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2xpZW50UmVhY3RSb290SW5kZXg7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBET01DaGlsZHJlbk9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRGFuZ2VyID0gcmVxdWlyZSgnLi9EYW5nZXInKTtcbnZhciBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBJbnNlcnRzIGBjaGlsZE5vZGVgIGFzIGEgY2hpbGQgb2YgYHBhcmVudE5vZGVgIGF0IHRoZSBgaW5kZXhgLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50Tm9kZSBQYXJlbnQgbm9kZSBpbiB3aGljaCB0byBpbnNlcnQuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNoaWxkTm9kZSBDaGlsZCBub2RlIHRvIGluc2VydC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCBpbmRleCkge1xuICAvLyBCeSBleHBsb2l0aW5nIGFycmF5cyByZXR1cm5pbmcgYHVuZGVmaW5lZGAgZm9yIGFuIHVuZGVmaW5lZCBpbmRleCwgd2UgY2FuXG4gIC8vIHJlbHkgZXhjbHVzaXZlbHkgb24gYGluc2VydEJlZm9yZShub2RlLCBudWxsKWAgaW5zdGVhZCBvZiBhbHNvIHVzaW5nXG4gIC8vIGBhcHBlbmRDaGlsZChub2RlKWAuIEhvd2V2ZXIsIHVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbFxuICAvLyBicm93c2VycyBzbyB3ZSBtdXN0IHJlcGxhY2UgaXQgd2l0aCBgbnVsbGAuXG5cbiAgLy8gZml4IHJlbmRlciBvcmRlciBlcnJvciBpbiBzYWZhcmlcbiAgLy8gSUU4IHdpbGwgdGhyb3cgZXJyb3Igd2hlbiBpbmRleCBvdXQgb2YgbGlzdCBzaXplLlxuICB2YXIgYmVmb3JlQ2hpbGQgPSBpbmRleCA+PSBwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoID8gbnVsbCA6IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5pdGVtKGluZGV4KTtcblxuICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZE5vZGUsIGJlZm9yZUNoaWxkKTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi5cbiAqL1xudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHtcblxuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLFxuXG4gIHVwZGF0ZVRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy4gVGhlXG4gICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7YXJyYXk8c3RyaW5nPn0gbWFya3VwTGlzdCBMaXN0IG9mIG1hcmt1cCBzdHJpbmdzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb2Nlc3NVcGRhdGVzOiBmdW5jdGlvbiAodXBkYXRlcywgbWFya3VwTGlzdCkge1xuICAgIHZhciB1cGRhdGU7XG4gICAgLy8gTWFwcGluZyBmcm9tIHBhcmVudCBJRHMgdG8gaW5pdGlhbCBjaGlsZCBvcmRlcmluZ3MuXG4gICAgdmFyIGluaXRpYWxDaGlsZHJlbiA9IG51bGw7XG4gICAgLy8gTGlzdCBvZiBjaGlsZHJlbiB0aGF0IHdpbGwgYmUgbW92ZWQgb3IgcmVtb3ZlZC5cbiAgICB2YXIgdXBkYXRlZENoaWxkcmVuID0gbnVsbDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXBkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdXBkYXRlID0gdXBkYXRlc1tpXTtcbiAgICAgIGlmICh1cGRhdGUudHlwZSA9PT0gUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuTU9WRV9FWElTVElORyB8fCB1cGRhdGUudHlwZSA9PT0gUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuUkVNT1ZFX05PREUpIHtcbiAgICAgICAgdmFyIHVwZGF0ZWRJbmRleCA9IHVwZGF0ZS5mcm9tSW5kZXg7XG4gICAgICAgIHZhciB1cGRhdGVkQ2hpbGQgPSB1cGRhdGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzW3VwZGF0ZWRJbmRleF07XG4gICAgICAgIHZhciBwYXJlbnRJRCA9IHVwZGF0ZS5wYXJlbnRJRDtcblxuICAgICAgICAhdXBkYXRlZENoaWxkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NVcGRhdGVzKCk6IFVuYWJsZSB0byBmaW5kIGNoaWxkICVzIG9mIGVsZW1lbnQuIFRoaXMgJyArICdwcm9iYWJseSBtZWFucyB0aGUgRE9NIHdhcyB1bmV4cGVjdGVkbHkgbXV0YXRlZCAoZS5nLiwgYnkgdGhlICcgKyAnYnJvd3NlciksIHVzdWFsbHkgZHVlIHRvIGZvcmdldHRpbmcgYSA8dGJvZHk+IHdoZW4gdXNpbmcgdGFibGVzLCAnICsgJ25lc3RpbmcgdGFncyBsaWtlIDxmb3JtPiwgPHA+LCBvciA8YT4sIG9yIHVzaW5nIG5vbi1TVkcgZWxlbWVudHMgJyArICdpbiBhbiA8c3ZnPiBwYXJlbnQuIFRyeSBpbnNwZWN0aW5nIHRoZSBjaGlsZCBub2RlcyBvZiB0aGUgZWxlbWVudCAnICsgJ3dpdGggUmVhY3QgSUQgYCVzYC4nLCB1cGRhdGVkSW5kZXgsIHBhcmVudElEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaW5pdGlhbENoaWxkcmVuID0gaW5pdGlhbENoaWxkcmVuIHx8IHt9O1xuICAgICAgICBpbml0aWFsQ2hpbGRyZW5bcGFyZW50SURdID0gaW5pdGlhbENoaWxkcmVuW3BhcmVudElEXSB8fCBbXTtcbiAgICAgICAgaW5pdGlhbENoaWxkcmVuW3BhcmVudElEXVt1cGRhdGVkSW5kZXhdID0gdXBkYXRlZENoaWxkO1xuXG4gICAgICAgIHVwZGF0ZWRDaGlsZHJlbiA9IHVwZGF0ZWRDaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgdXBkYXRlZENoaWxkcmVuLnB1c2godXBkYXRlZENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVuZGVyZWRNYXJrdXA7XG4gICAgLy8gbWFya3VwTGlzdCBpcyBlaXRoZXIgYSBsaXN0IG9mIG1hcmt1cCBvciBqdXN0IGEgbGlzdCBvZiBlbGVtZW50c1xuICAgIGlmIChtYXJrdXBMaXN0Lmxlbmd0aCAmJiB0eXBlb2YgbWFya3VwTGlzdFswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlbmRlcmVkTWFya3VwID0gRGFuZ2VyLmRhbmdlcm91c2x5UmVuZGVyTWFya3VwKG1hcmt1cExpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlZE1hcmt1cCA9IG1hcmt1cExpc3Q7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHVwZGF0ZWQgY2hpbGRyZW4gZmlyc3Qgc28gdGhhdCBgdG9JbmRleGAgaXMgY29uc2lzdGVudC5cbiAgICBpZiAodXBkYXRlZENoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHVwZGF0ZWRDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB1cGRhdGVkQ2hpbGRyZW5bal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1cGRhdGVkQ2hpbGRyZW5bal0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuICAgICAgdXBkYXRlID0gdXBkYXRlc1trXTtcbiAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5JTlNFUlRfTUFSS1VQOlxuICAgICAgICAgIGluc2VydENoaWxkQXQodXBkYXRlLnBhcmVudE5vZGUsIHJlbmRlcmVkTWFya3VwW3VwZGF0ZS5tYXJrdXBJbmRleF0sIHVwZGF0ZS50b0luZGV4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5NT1ZFX0VYSVNUSU5HOlxuICAgICAgICAgIGluc2VydENoaWxkQXQodXBkYXRlLnBhcmVudE5vZGUsIGluaXRpYWxDaGlsZHJlblt1cGRhdGUucGFyZW50SURdW3VwZGF0ZS5mcm9tSW5kZXhdLCB1cGRhdGUudG9JbmRleCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuU0VUX01BUktVUDpcbiAgICAgICAgICBzZXRJbm5lckhUTUwodXBkYXRlLnBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5URVhUX0NPTlRFTlQ6XG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQodXBkYXRlLnBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5SRU1PVkVfTk9ERTpcbiAgICAgICAgICAvLyBBbHJlYWR5IHJlbW92ZWQgYnkgdGhlIGZvci1sb29wIGFib3ZlLlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoRE9NQ2hpbGRyZW5PcGVyYXRpb25zLCAnRE9NQ2hpbGRyZW5PcGVyYXRpb25zJywge1xuICB1cGRhdGVUZXh0Q29udGVudDogJ3VwZGF0ZVRleHRDb250ZW50J1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NQ2hpbGRyZW5PcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RVQwMURhR2xzWkhKbGJrOXdaWEpoZEdsdmJuTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFUlBUVU5vYVd4a2NtVnVUM0JsY21GMGFXOXVjMXh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCRVlXNW5aWElnUFNCeVpYRjFhWEpsS0NjdUwwUmhibWRsY2ljcE8xeHVkbUZ5SUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5Y3BPMXh1ZG1GeUlGSmxZV04wVUdWeVppQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFaWEptSnlrN1hHNWNiblpoY2lCelpYUkpibTVsY2toVVRVd2dQU0J5WlhGMWFYSmxLQ2N1TDNObGRFbHVibVZ5U0ZSTlRDY3BPMXh1ZG1GeUlITmxkRlJsZUhSRGIyNTBaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXpaWFJVWlhoMFEyOXVkR1Z1ZENjcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc0dktpcGNiaUFxSUVsdWMyVnlkSE1nWUdOb2FXeGtUbTlrWldBZ1lYTWdZU0JqYUdsc1pDQnZaaUJnY0dGeVpXNTBUbTlrWldBZ1lYUWdkR2hsSUdCcGJtUmxlR0F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCd1lYSmxiblJPYjJSbElGQmhjbVZ1ZENCdWIyUmxJR2x1SUhkb2FXTm9JSFJ2SUdsdWMyVnlkQzVjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMmhwYkdST2IyUmxJRU5vYVd4a0lHNXZaR1VnZEc4Z2FXNXpaWEowTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHbHVaR1Y0SUVsdVpHVjRJR0YwSUhkb2FXTm9JSFJ2SUdsdWMyVnlkQ0IwYUdVZ1kyaHBiR1F1WEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FXNXpaWEowUTJocGJHUkJkQ2h3WVhKbGJuUk9iMlJsTENCamFHbHNaRTV2WkdVc0lHbHVaR1Y0S1NCN1hHNGdJQzh2SUVKNUlHVjRjR3h2YVhScGJtY2dZWEp5WVhseklISmxkSFZ5Ym1sdVp5QmdkVzVrWldacGJtVmtZQ0JtYjNJZ1lXNGdkVzVrWldacGJtVmtJR2x1WkdWNExDQjNaU0JqWVc1Y2JpQWdMeThnY21Wc2VTQmxlR05zZFhOcGRtVnNlU0J2YmlCZ2FXNXpaWEowUW1WbWIzSmxLRzV2WkdVc0lHNTFiR3dwWUNCcGJuTjBaV0ZrSUc5bUlHRnNjMjhnZFhOcGJtZGNiaUFnTHk4Z1lHRndjR1Z1WkVOb2FXeGtLRzV2WkdVcFlDNGdTRzkzWlhabGNpd2dkWE5wYm1jZ1lIVnVaR1ZtYVc1bFpHQWdhWE1nYm05MElHRnNiRzkzWldRZ1lua2dZV3hzWEc0Z0lDOHZJR0p5YjNkelpYSnpJSE52SUhkbElHMTFjM1FnY21Wd2JHRmpaU0JwZENCM2FYUm9JR0J1ZFd4c1lDNWNibHh1SUNBdkx5Qm1hWGdnY21WdVpHVnlJRzl5WkdWeUlHVnljbTl5SUdsdUlITmhabUZ5YVZ4dUlDQXZMeUJKUlRnZ2QybHNiQ0IwYUhKdmR5Qmxjbkp2Y2lCM2FHVnVJR2x1WkdWNElHOTFkQ0J2WmlCc2FYTjBJSE5wZW1VdVhHNGdJSFpoY2lCaVpXWnZjbVZEYUdsc1pDQTlJR2x1WkdWNElENDlJSEJoY21WdWRFNXZaR1V1WTJocGJHUk9iMlJsY3k1c1pXNW5kR2dnUHlCdWRXeHNJRG9nY0dGeVpXNTBUbTlrWlM1amFHbHNaRTV2WkdWekxtbDBaVzBvYVc1a1pYZ3BPMXh1WEc0Z0lIQmhjbVZ1ZEU1dlpHVXVhVzV6WlhKMFFtVm1iM0psS0dOb2FXeGtUbTlrWlN3Z1ltVm1iM0psUTJocGJHUXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFOXdaWEpoZEdsdmJuTWdabTl5SUhWd1pHRjBhVzVuSUhkcGRHZ2dSRTlOSUdOb2FXeGtjbVZ1TGx4dUlDb3ZYRzUyWVhJZ1JFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpJRDBnZTF4dVhHNGdJR1JoYm1kbGNtOTFjMng1VW1Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd09pQkVZVzVuWlhJdVpHRnVaMlZ5YjNWemJIbFNaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEFzWEc1Y2JpQWdkWEJrWVhSbFZHVjRkRU52Ym5SbGJuUTZJSE5sZEZSbGVIUkRiMjUwWlc1MExGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVmNHUmhkR1Z6SUdFZ1kyOXRjRzl1Wlc1MEozTWdZMmhwYkdSeVpXNGdZbmtnY0hKdlkyVnpjMmx1WnlCaElITmxjbWxsY3lCdlppQjFjR1JoZEdWekxpQlVhR1ZjYmlBZ0lDb2dkWEJrWVhSbElHTnZibVpwWjNWeVlYUnBiMjV6SUdGeVpTQmxZV05vSUdWNGNHVmpkR1ZrSUhSdklHaGhkbVVnWVNCZ2NHRnlaVzUwVG05a1pXQWdjSEp2Y0dWeWRIa3VYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3WVhKeVlYazhiMkpxWldOMFBuMGdkWEJrWVhSbGN5Qk1hWE4wSUc5bUlIVndaR0YwWlNCamIyNW1hV2QxY21GMGFXOXVjeTVjYmlBZ0lDb2dRSEJoY21GdElIdGhjbkpoZVR4emRISnBibWMrZlNCdFlYSnJkWEJNYVhOMElFeHBjM1FnYjJZZ2JXRnlhM1Z3SUhOMGNtbHVaM011WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnY0hKdlkyVnpjMVZ3WkdGMFpYTTZJR1oxYm1OMGFXOXVJQ2gxY0dSaGRHVnpMQ0J0WVhKcmRYQk1hWE4wS1NCN1hHNGdJQ0FnZG1GeUlIVndaR0YwWlR0Y2JpQWdJQ0F2THlCTllYQndhVzVuSUdaeWIyMGdjR0Z5Wlc1MElFbEVjeUIwYnlCcGJtbDBhV0ZzSUdOb2FXeGtJRzl5WkdWeWFXNW5jeTVjYmlBZ0lDQjJZWElnYVc1cGRHbGhiRU5vYVd4a2NtVnVJRDBnYm5Wc2JEdGNiaUFnSUNBdkx5Qk1hWE4wSUc5bUlHTm9hV3hrY21WdUlIUm9ZWFFnZDJsc2JDQmlaU0J0YjNabFpDQnZjaUJ5WlcxdmRtVmtMbHh1SUNBZ0lIWmhjaUIxY0dSaGRHVmtRMmhwYkdSeVpXNGdQU0J1ZFd4c08xeHVYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQjFjR1JoZEdWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IxY0dSaGRHVWdQU0IxY0dSaGRHVnpXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tIVndaR0YwWlM1MGVYQmxJRDA5UFNCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1TlQxWkZYMFZZU1ZOVVNVNUhJSHg4SUhWd1pHRjBaUzUwZVhCbElEMDlQU0JTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVTUlUxUFZrVmZUazlFUlNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnZFhCa1lYUmxaRWx1WkdWNElEMGdkWEJrWVhSbExtWnliMjFKYm1SbGVEdGNiaUFnSUNBZ0lDQWdkbUZ5SUhWd1pHRjBaV1JEYUdsc1pDQTlJSFZ3WkdGMFpTNXdZWEpsYm5ST2IyUmxMbU5vYVd4a1RtOWtaWE5iZFhCa1lYUmxaRWx1WkdWNFhUdGNiaUFnSUNBZ0lDQWdkbUZ5SUhCaGNtVnVkRWxFSUQwZ2RYQmtZWFJsTG5CaGNtVnVkRWxFTzF4dVhHNGdJQ0FnSUNBZ0lDRjFjR1JoZEdWa1EyaHBiR1FnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5jSEp2WTJWemMxVndaR0YwWlhNb0tUb2dWVzVoWW14bElIUnZJR1pwYm1RZ1kyaHBiR1FnSlhNZ2IyWWdaV3hsYldWdWRDNGdWR2hwY3lBbklDc2dKM0J5YjJKaFlteDVJRzFsWVc1eklIUm9aU0JFVDAwZ2QyRnpJSFZ1Wlhod1pXTjBaV1JzZVNCdGRYUmhkR1ZrSUNobExtY3VMQ0JpZVNCMGFHVWdKeUFySUNkaWNtOTNjMlZ5S1N3Z2RYTjFZV3hzZVNCa2RXVWdkRzhnWm05eVoyVjBkR2x1WnlCaElEeDBZbTlrZVQ0Z2QyaGxiaUIxYzJsdVp5QjBZV0pzWlhNc0lDY2dLeUFuYm1WemRHbHVaeUIwWVdkeklHeHBhMlVnUEdadmNtMCtMQ0E4Y0Q0c0lHOXlJRHhoUGl3Z2IzSWdkWE5wYm1jZ2JtOXVMVk5XUnlCbGJHVnRaVzUwY3lBbklDc2dKMmx1SUdGdUlEeHpkbWMrSUhCaGNtVnVkQzRnVkhKNUlHbHVjM0JsWTNScGJtY2dkR2hsSUdOb2FXeGtJRzV2WkdWeklHOW1JSFJvWlNCbGJHVnRaVzUwSUNjZ0t5QW5kMmwwYUNCU1pXRmpkQ0JKUkNCZ0pYTmdMaWNzSUhWd1pHRjBaV1JKYm1SbGVDd2djR0Z5Wlc1MFNVUXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ0lDQnBibWwwYVdGc1EyaHBiR1J5Wlc0Z1BTQnBibWwwYVdGc1EyaHBiR1J5Wlc0Z2ZId2dlMzA3WEc0Z0lDQWdJQ0FnSUdsdWFYUnBZV3hEYUdsc1pISmxibHR3WVhKbGJuUkpSRjBnUFNCcGJtbDBhV0ZzUTJocGJHUnlaVzViY0dGeVpXNTBTVVJkSUh4OElGdGRPMXh1SUNBZ0lDQWdJQ0JwYm1sMGFXRnNRMmhwYkdSeVpXNWJjR0Z5Wlc1MFNVUmRXM1Z3WkdGMFpXUkpibVJsZUYwZ1BTQjFjR1JoZEdWa1EyaHBiR1E3WEc1Y2JpQWdJQ0FnSUNBZ2RYQmtZWFJsWkVOb2FXeGtjbVZ1SUQwZ2RYQmtZWFJsWkVOb2FXeGtjbVZ1SUh4OElGdGRPMXh1SUNBZ0lDQWdJQ0IxY0dSaGRHVmtRMmhwYkdSeVpXNHVjSFZ6YUNoMWNHUmhkR1ZrUTJocGJHUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ5Wlc1a1pYSmxaRTFoY210MWNEdGNiaUFnSUNBdkx5QnRZWEpyZFhCTWFYTjBJR2x6SUdWcGRHaGxjaUJoSUd4cGMzUWdiMllnYldGeWEzVndJRzl5SUdwMWMzUWdZU0JzYVhOMElHOW1JR1ZzWlcxbGJuUnpYRzRnSUNBZ2FXWWdLRzFoY210MWNFeHBjM1F1YkdWdVozUm9JQ1ltSUhSNWNHVnZaaUJ0WVhKcmRYQk1hWE4wV3pCZElEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJQ0FnY21WdVpHVnlaV1JOWVhKcmRYQWdQU0JFWVc1blpYSXVaR0Z1WjJWeWIzVnpiSGxTWlc1a1pYSk5ZWEpyZFhBb2JXRnlhM1Z3VEdsemRDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGJtUmxjbVZrVFdGeWEzVndJRDBnYldGeWEzVndUR2x6ZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCU1pXMXZkbVVnZFhCa1lYUmxaQ0JqYUdsc1pISmxiaUJtYVhKemRDQnpieUIwYUdGMElHQjBiMGx1WkdWNFlDQnBjeUJqYjI1emFYTjBaVzUwTGx4dUlDQWdJR2xtSUNoMWNHUmhkR1ZrUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUdvZ1BTQXdPeUJxSUR3Z2RYQmtZWFJsWkVOb2FXeGtjbVZ1TG14bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQWdJSFZ3WkdGMFpXUkRhR2xzWkhKbGJsdHFYUzV3WVhKbGJuUk9iMlJsTG5KbGJXOTJaVU5vYVd4a0tIVndaR0YwWldSRGFHbHNaSEpsYmx0cVhTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2F5QTlJREE3SUdzZ1BDQjFjR1JoZEdWekxteGxibWQwYURzZ2F5c3JLU0I3WEc0Z0lDQWdJQ0IxY0dSaGRHVWdQU0IxY0dSaGRHVnpXMnRkTzF4dUlDQWdJQ0FnYzNkcGRHTm9JQ2gxY0dSaGRHVXVkSGx3WlNrZ2UxeHVJQ0FnSUNBZ0lDQmpZWE5sSUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6TGtsT1UwVlNWRjlOUVZKTFZWQTZYRzRnSUNBZ0lDQWdJQ0FnYVc1elpYSjBRMmhwYkdSQmRDaDFjR1JoZEdVdWNHRnlaVzUwVG05a1pTd2djbVZ1WkdWeVpXUk5ZWEpyZFhCYmRYQmtZWFJsTG0xaGNtdDFjRWx1WkdWNFhTd2dkWEJrWVhSbExuUnZTVzVrWlhncE8xeHVJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6TGsxUFZrVmZSVmhKVTFSSlRrYzZYRzRnSUNBZ0lDQWdJQ0FnYVc1elpYSjBRMmhwYkdSQmRDaDFjR1JoZEdVdWNHRnlaVzUwVG05a1pTd2dhVzVwZEdsaGJFTm9hV3hrY21WdVczVndaR0YwWlM1d1lYSmxiblJKUkYxYmRYQmtZWFJsTG1aeWIyMUpibVJsZUYwc0lIVndaR0YwWlM1MGIwbHVaR1Y0S1R0Y2JpQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVUUlZSZlRVRlNTMVZRT2x4dUlDQWdJQ0FnSUNBZ0lITmxkRWx1Ym1WeVNGUk5UQ2gxY0dSaGRHVXVjR0Z5Wlc1MFRtOWtaU3dnZFhCa1lYUmxMbU52Ym5SbGJuUXBPMXh1SUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0JqWVhObElGSmxZV04wVFhWc2RHbERhR2xzWkZWd1pHRjBaVlI1Y0dWekxsUkZXRlJmUTA5T1ZFVk9WRHBjYmlBZ0lDQWdJQ0FnSUNCelpYUlVaWGgwUTI5dWRHVnVkQ2gxY0dSaGRHVXVjR0Z5Wlc1MFRtOWtaU3dnZFhCa1lYUmxMbU52Ym5SbGJuUXBPMXh1SUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0JqWVhObElGSmxZV04wVFhWc2RHbERhR2xzWkZWd1pHRjBaVlI1Y0dWekxsSkZUVTlXUlY5T1QwUkZPbHh1SUNBZ0lDQWdJQ0FnSUM4dklFRnNjbVZoWkhrZ2NtVnRiM1psWkNCaWVTQjBhR1VnWm05eUxXeHZiM0FnWVdKdmRtVXVYRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JuMDdYRzVjYmxKbFlXTjBVR1Z5Wmk1dFpXRnpkWEpsVFdWMGFHOWtjeWhFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5Nc0lDZEVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk1uTENCN1hHNGdJSFZ3WkdGMFpWUmxlSFJEYjI1MFpXNTBPaUFuZFhCa1lYUmxWR1Y0ZEVOdmJuUmxiblFuWEc1OUtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5NN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERPTVByb3BlcnR5XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG5mdW5jdGlvbiBjaGVja01hc2sodmFsdWUsIGJpdG1hc2spIHtcbiAgcmV0dXJuICh2YWx1ZSAmIGJpdG1hc2spID09PSBiaXRtYXNrO1xufVxuXG52YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyB0byBhIGNvbmZpZ3VyYXRpb24gdGhhdFxuICAgKiBzcGVjaWZpZXMgaG93IHRoZSBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0eSBzaG91bGQgYmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQuXG4gICAqL1xuICBNVVNUX1VTRV9BVFRSSUJVVEU6IDB4MSxcbiAgTVVTVF9VU0VfUFJPUEVSVFk6IDB4MixcbiAgSEFTX1NJREVfRUZGRUNUUzogMHg0LFxuICBIQVNfQk9PTEVBTl9WQUxVRTogMHg4LFxuICBIQVNfTlVNRVJJQ19WQUxVRTogMHgxMCxcbiAgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6IDB4MjAgfCAweDEwLFxuICBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOiAweDQwLFxuXG4gIC8qKlxuICAgKiBJbmplY3Qgc29tZSBzcGVjaWFsaXplZCBrbm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBvYmplY3RcbiAgICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwgcmV0dXJuIHRydWVcbiAgICogaWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERPTSB2ZXJiYXRpbS4gVXNlZnVsIGZvciBkYXRhLSogb3IgYXJpYS0qXG4gICAqIGF0dHJpYnV0ZXMgd2hlcmUgaXQncyBpbXBvc3NpYmxlIHRvIGVudW1lcmF0ZSBhbGwgb2YgdGhlIHBvc3NpYmxlXG4gICAqIGF0dHJpYnV0ZSBuYW1lcyxcbiAgICpcbiAgICogUHJvcGVydGllczogb2JqZWN0IG1hcHBpbmcgRE9NIHByb3BlcnR5IG5hbWUgdG8gb25lIG9mIHRoZVxuICAgKiBET01Qcm9wZXJ0eUluamVjdGlvbiBjb25zdGFudHMgb3IgbnVsbC4gSWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVyZSxcbiAgICogaXQgd29uJ3QgZ2V0IHdyaXR0ZW4gdG8gdGhlIERPTS5cbiAgICpcbiAgICogRE9NQXR0cmlidXRlTmFtZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET01cbiAgICogYXR0cmlidXRlIG5hbWUuIEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgKipsb3dlcmNhc2UqKlxuICAgKiBub3JtYWxpemVkIG5hbWUuXG4gICAqXG4gICAqIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET01cbiAgICogYXR0cmlidXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmllZCB1c2Ugbm8gbmFtZXNwYWNlLilcbiAgICpcbiAgICogRE9NUHJvcGVydHlOYW1lczogc2ltaWxhciB0byBET01BdHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVzLlxuICAgKiBQcm9wZXJ0eSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBuYW1lLlxuICAgKlxuICAgKiBET01NdXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1aXJlIHNwZWNpYWwgbXV0YXRpb24gbWV0aG9kcy4gSWZcbiAgICogYHZhbHVlYCBpcyB1bmRlZmluZWQsIHRoZSBtdXRhdGlvbiBtZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVzY3JpYmVkIGFib3ZlLlxuICAgKi9cbiAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChkb21Qcm9wZXJ0eUNvbmZpZykge1xuICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9wZXJ0eUluamVjdGlvbjtcbiAgICB2YXIgUHJvcGVydGllcyA9IGRvbVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXMgfHwge307XG4gICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9O1xuICAgIHZhciBET01BdHRyaWJ1dGVOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9O1xuICAgIHZhciBET01Qcm9wZXJ0eU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlOYW1lcyB8fCB7fTtcbiAgICB2YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0YXRpb25NZXRob2RzIHx8IHt9O1xuXG4gICAgaWYgKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRlKSB7XG4gICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGllcykge1xuICAgICAgISFET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpbmplY3RET01Qcm9wZXJ0eUNvbmZpZyguLi4pOiBZb3VcXCdyZSB0cnlpbmcgdG8gaW5qZWN0IERPTSBwcm9wZXJ0eSAnICsgJ1xcJyVzXFwnIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gaW5qZWN0ZWQuIFlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5ICcgKyAnaW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcgdHdpY2UsIG9yIHlvdSBtYXkgYmUgJyArICdpbmplY3RpbmcgdHdvIGNvbmZpZ3MgdGhhdCBoYXZlIGNvbmZsaWN0aW5nIHByb3BlcnR5IG5hbWVzLicsIHByb3BOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHZhciBsb3dlckNhc2VkID0gcHJvcE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9wTmFtZV07XG5cbiAgICAgIHZhciBwcm9wZXJ0eUluZm8gPSB7XG4gICAgICAgIGF0dHJpYnV0ZU5hbWU6IGxvd2VyQ2FzZWQsXG4gICAgICAgIGF0dHJpYnV0ZU5hbWVzcGFjZTogbnVsbCxcbiAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wTmFtZSxcbiAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGwsXG5cbiAgICAgICAgbXVzdFVzZUF0dHJpYnV0ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9BVFRSSUJVVEUpLFxuICAgICAgICBtdXN0VXNlUHJvcGVydHk6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFkpLFxuICAgICAgICBoYXNTaWRlRWZmZWN0czogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfU0lERV9FRkZFQ1RTKSxcbiAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSxcbiAgICAgICAgaGFzTnVtZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFKSxcbiAgICAgICAgaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpXG4gICAgICB9O1xuXG4gICAgICAhKCFwcm9wZXJ0eUluZm8ubXVzdFVzZUF0dHJpYnV0ZSB8fCAhcHJvcGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IENhbm5vdCByZXF1aXJlIHVzaW5nIGJvdGggYXR0cmlidXRlIGFuZCBwcm9wZXJ0eTogJXMnLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgIShwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5IHx8ICFwcm9wZXJ0eUluZm8uaGFzU2lkZUVmZmVjdHMpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBQcm9wZXJ0aWVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMgbXVzdCB1c2UgcHJvcGVydHk6ICVzJywgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAxKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0eTogVmFsdWUgY2FuIGJlIG9uZSBvZiBib29sZWFuLCBvdmVybG9hZGVkIGJvb2xlYW4sIG9yICcgKyAnbnVtZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2VyQ2FzZWRdID0gcHJvcE5hbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBET01BdHRyaWJ1dGVOYW1lc1twcm9wTmFtZV07XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlTmFtZTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1dGVOYW1lXSA9IHByb3BOYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNwYWNlc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChET01Qcm9wZXJ0eU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lID0gRE9NUHJvcGVydHlOYW1lc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChET01NdXRhdGlvbk1ldGhvZHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAgICAgIERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJvcGVydHlJbmZvO1xuICAgIH1cbiAgfVxufTtcbnZhciBkZWZhdWx0VmFsdWVDYWNoZSA9IHt9O1xuXG4vKipcbiAqIERPTVByb3BlcnR5IGV4cG9ydHMgbG9va3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9uczpcbiAqXG4gKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuICogICB0cnVlXG4gKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnZm9vYmFyJ11cbiAqICAgdW5kZWZpbmVkXG4gKlxuICogQWx0aG91Z2ggdGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4gZ2VuZXJhbC5cbiAqXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHNcbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LW1pc3NpbmdcbiAqL1xudmFyIERPTVByb3BlcnR5ID0ge1xuXG4gIElEX0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdGlkJyxcblxuICAvKipcbiAgICogTWFwIGZyb20gcHJvcGVydHkgXCJzdGFuZGFyZCBuYW1lXCIgdG8gYW4gb2JqZWN0IHdpdGggaW5mbyBhYm91dCBob3cgdG8gc2V0XG4gICAqIHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNoIG9iamVjdCBjb250YWluczpcbiAgICpcbiAgICogYXR0cmlidXRlTmFtZTpcbiAgICogICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1cCBvciB3aXRoIGAqQXR0cmlidXRlKClgLlxuICAgKiBhdHRyaWJ1dGVOYW1lc3BhY2VcbiAgICogcHJvcGVydHlOYW1lOlxuICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAoVGhpcyBpbmNsdWRlcyBwcm9wZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0b1xuICAgKiAgIGV4dGVybmFsIGZhY3RvcnMuKVxuICAgKiBtdXRhdGlvbk1ldGhvZDpcbiAgICogICBJZiBub24tbnVsbCwgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFmdGVyXG4gICAqICAgaW5pdGlhbCByZW5kZXIuXG4gICAqIG11c3RVc2VBdHRyaWJ1dGU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCB1c2luZyBgKkF0dHJpYnV0ZSgpYC5cbiAgICogICAoVGhpcyBpbmNsdWRlcyBhbnl0aGluZyB0aGF0IGZhaWxzIGA8cHJvcE5hbWU+IGluIDxlbGVtZW50PmAuKVxuICAgKiBtdXN0VXNlUHJvcGVydHk6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHkuXG4gICAqIGhhc1NpZGVFZmZlY3RzOlxuICAgKiAgIFdoZXRoZXIgb3Igbm90IHNldHRpbmcgYSB2YWx1ZSBjYXVzZXMgc2lkZSBlZmZlY3RzIHN1Y2ggYXMgdHJpZ2dlcmluZ1xuICAgKiAgIHJlc291cmNlcyB0byBiZSBsb2FkZWQgb3IgdGV4dCBzZWxlY3Rpb24gY2hhbmdlcy4gSWYgdHJ1ZSwgd2UgcmVhZCBmcm9tXG4gICAqICAgdGhlIERPTSBiZWZvcmUgdXBkYXRpbmcgdG8gZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGlzIG9ubHkgc2V0IGlmIGl0IGhhc1xuICAgKiAgIGNoYW5nZWQuXG4gICAqIGhhc0Jvb2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzTnVtZXJpY1ZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIG51bWVyaWMgYW5kIHNob3VsZCBiZVxuICAgKiAgIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZlXG4gICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdlbGwgYXMgd2l0aCBhIHZhbHVlLlxuICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2VudCB3aXRob3V0IGEgdmFsdWUgd2hlblxuICAgKiAgIHN0cmljdGx5IGVxdWFsIHRvIHRydWU7IHByZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4gIHByb3BlcnRpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5IG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG4gICAqIHRvIHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBfX0RFVl9fLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB7fSA6IG51bGwsXG5cbiAgLyoqXG4gICAqIEFsbCBvZiB0aGUgaXNDdXN0b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gaW5qZWN0ZWQuXG4gICAqL1xuICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6IFtdLFxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlzQ3VzdG9tQXR0cmlidXRlRm4gPSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbaV07XG4gICAgICBpZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IHByb3BlcnR5IHZhbHVlIGZvciBhIERPTSBwcm9wZXJ0eSAoaS5lLiwgbm90IGFuXG4gICAqIGF0dHJpYnV0ZSkuIE1vc3QgZGVmYXVsdCB2YWx1ZXMgYXJlICcnIG9yIGZhbHNlLCBidXQgbm90IGFsbC4gV29yc2UgeWV0LFxuICAgKiBzb21lIChpbiBwYXJ0aWN1bGFyLCBgdHlwZWApIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGVsZW1lbnQuXG4gICAqXG4gICAqIFRPRE86IElzIGl0IGJldHRlciB0byBncmFiIGFsbCB0aGUgcG9zc2libGUgcHJvcGVydGllcyB3aGVuIGNyZWF0aW5nIGFuXG4gICAqIGVsZW1lbnQgdG8gYXZvaWQgaGF2aW5nIHRvIGNyZWF0ZSB0aGUgc2FtZSBlbGVtZW50IHR3aWNlP1xuICAgKi9cbiAgZ2V0RGVmYXVsdFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlTmFtZSwgcHJvcCkge1xuICAgIHZhciBub2RlRGVmYXVsdHMgPSBkZWZhdWx0VmFsdWVDYWNoZVtub2RlTmFtZV07XG4gICAgdmFyIHRlc3RFbGVtZW50O1xuICAgIGlmICghbm9kZURlZmF1bHRzKSB7XG4gICAgICBkZWZhdWx0VmFsdWVDYWNoZVtub2RlTmFtZV0gPSBub2RlRGVmYXVsdHMgPSB7fTtcbiAgICB9XG4gICAgaWYgKCEocHJvcCBpbiBub2RlRGVmYXVsdHMpKSB7XG4gICAgICB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpO1xuICAgICAgbm9kZURlZmF1bHRzW3Byb3BdID0gdGVzdEVsZW1lbnRbcHJvcF07XG4gICAgfVxuICAgIHJldHVybiBub2RlRGVmYXVsdHNbcHJvcF07XG4gIH0sXG5cbiAgaW5qZWN0aW9uOiBET01Qcm9wZXJ0eUluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOUVUMDFRY205d1pYSjBlUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnUkU5TlVISnZjR1Z5ZEhsY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNibVoxYm1OMGFXOXVJR05vWldOclRXRnpheWgyWVd4MVpTd2dZbWwwYldGemF5a2dlMXh1SUNCeVpYUjFjbTRnS0haaGJIVmxJQ1lnWW1sMGJXRnpheWtnUFQwOUlHSnBkRzFoYzJzN1hHNTlYRzVjYm5aaGNpQkVUMDFRY205d1pYSjBlVWx1YW1WamRHbHZiaUE5SUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoY0hCcGJtY2dabkp2YlNCdWIzSnRZV3hwZW1Wa0xDQmpZVzFsYkdOaGMyVmtJSEJ5YjNCbGNuUjVJRzVoYldWeklIUnZJR0VnWTI5dVptbG5kWEpoZEdsdmJpQjBhR0YwWEc0Z0lDQXFJSE53WldOcFptbGxjeUJvYjNjZ2RHaGxJR0Z6YzI5amFXRjBaV1FnUkU5TklIQnliM0JsY25SNUlITm9iM1ZzWkNCaVpTQmhZMk5sYzNObFpDQnZjaUJ5Wlc1a1pYSmxaQzVjYmlBZ0lDb3ZYRzRnSUUxVlUxUmZWVk5GWDBGVVZGSkpRbFZVUlRvZ01IZ3hMRnh1SUNCTlZWTlVYMVZUUlY5UVVrOVFSVkpVV1RvZ01IZ3lMRnh1SUNCSVFWTmZVMGxFUlY5RlJrWkZRMVJUT2lBd2VEUXNYRzRnSUVoQlUxOUNUMDlNUlVGT1gxWkJURlZGT2lBd2VEZ3NYRzRnSUVoQlUxOU9WVTFGVWtsRFgxWkJURlZGT2lBd2VERXdMRnh1SUNCSVFWTmZVRTlUU1ZSSlZrVmZUbFZOUlZKSlExOVdRVXhWUlRvZ01IZ3lNQ0I4SURCNE1UQXNYRzRnSUVoQlUxOVBWa1ZTVEU5QlJFVkVYMEpQVDB4RlFVNWZWa0ZNVlVVNklEQjROREFzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1YW1WamRDQnpiMjFsSUhOd1pXTnBZV3hwZW1Wa0lHdHViM2RzWldSblpTQmhZbTkxZENCMGFHVWdSRTlOTGlCVWFHbHpJSFJoYTJWeklHRWdZMjl1Wm1sbklHOWlhbVZqZEZ4dUlDQWdLaUIzYVhSb0lIUm9aU0JtYjJ4c2IzZHBibWNnY0hKdmNHVnlkR2xsY3pwY2JpQWdJQ3BjYmlBZ0lDb2dhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVTZJR1oxYm1OMGFXOXVJSFJvWVhRZ1oybDJaVzRnWVc0Z1lYUjBjbWxpZFhSbElHNWhiV1VnZDJsc2JDQnlaWFIxY200Z2RISjFaVnh1SUNBZ0tpQnBaaUJwZENCallXNGdZbVVnYVc1elpYSjBaV1FnYVc1MGJ5QjBhR1VnUkU5TklIWmxjbUpoZEdsdExpQlZjMlZtZFd3Z1ptOXlJR1JoZEdFdEtpQnZjaUJoY21saExTcGNiaUFnSUNvZ1lYUjBjbWxpZFhSbGN5QjNhR1Z5WlNCcGRDZHpJR2x0Y0c5emMybGliR1VnZEc4Z1pXNTFiV1Z5WVhSbElHRnNiQ0J2WmlCMGFHVWdjRzl6YzJsaWJHVmNiaUFnSUNvZ1lYUjBjbWxpZFhSbElHNWhiV1Z6TEZ4dUlDQWdLbHh1SUNBZ0tpQlFjbTl3WlhKMGFXVnpPaUJ2WW1wbFkzUWdiV0Z3Y0dsdVp5QkVUMDBnY0hKdmNHVnlkSGtnYm1GdFpTQjBieUJ2Ym1VZ2IyWWdkR2hsWEc0Z0lDQXFJRVJQVFZCeWIzQmxjblI1U1c1cVpXTjBhVzl1SUdOdmJuTjBZVzUwY3lCdmNpQnVkV3hzTGlCSlppQjViM1Z5SUdGMGRISnBZblYwWlNCcGMyNG5kQ0JwYmlCb1pYSmxMRnh1SUNBZ0tpQnBkQ0IzYjI0bmRDQm5aWFFnZDNKcGRIUmxiaUIwYnlCMGFHVWdSRTlOTGx4dUlDQWdLbHh1SUNBZ0tpQkVUMDFCZEhSeWFXSjFkR1ZPWVcxbGN6b2diMkpxWldOMElHMWhjSEJwYm1jZ1VtVmhZM1FnWVhSMGNtbGlkWFJsSUc1aGJXVWdkRzhnZEdobElFUlBUVnh1SUNBZ0tpQmhkSFJ5YVdKMWRHVWdibUZ0WlM0Z1FYUjBjbWxpZFhSbElHNWhiV1Z6SUc1dmRDQnpjR1ZqYVdacFpXUWdkWE5sSUhSb1pTQXFLbXh2ZDJWeVkyRnpaU29xWEc0Z0lDQXFJRzV2Y20xaGJHbDZaV1FnYm1GdFpTNWNiaUFnSUNwY2JpQWdJQ29nUkU5TlFYUjBjbWxpZFhSbFRtRnRaWE53WVdObGN6b2diMkpxWldOMElHMWhjSEJwYm1jZ1VtVmhZM1FnWVhSMGNtbGlkWFJsSUc1aGJXVWdkRzhnZEdobElFUlBUVnh1SUNBZ0tpQmhkSFJ5YVdKMWRHVWdibUZ0WlhOd1lXTmxJRlZTVEM0Z0tFRjBkSEpwWW5WMFpTQnVZVzFsY3lCdWIzUWdjM0JsWTJsbWFXVmtJSFZ6WlNCdWJ5QnVZVzFsYzNCaFkyVXVLVnh1SUNBZ0tseHVJQ0FnS2lCRVQwMVFjbTl3WlhKMGVVNWhiV1Z6T2lCemFXMXBiR0Z5SUhSdklFUlBUVUYwZEhKcFluVjBaVTVoYldWeklHSjFkQ0JtYjNJZ1JFOU5JSEJ5YjNCbGNuUnBaWE11WEc0Z0lDQXFJRkJ5YjNCbGNuUjVJRzVoYldWeklHNXZkQ0J6Y0dWamFXWnBaV1FnZFhObElIUm9aU0J1YjNKdFlXeHBlbVZrSUc1aGJXVXVYRzRnSUNBcVhHNGdJQ0FxSUVSUFRVMTFkR0YwYVc5dVRXVjBhRzlrY3pvZ1VISnZjR1Z5ZEdsbGN5QjBhR0YwSUhKbGNYVnBjbVVnYzNCbFkybGhiQ0J0ZFhSaGRHbHZiaUJ0WlhSb2IyUnpMaUJKWmx4dUlDQWdLaUJnZG1Gc2RXVmdJR2x6SUhWdVpHVm1hVzVsWkN3Z2RHaGxJRzExZEdGMGFXOXVJRzFsZEdodlpDQnphRzkxYkdRZ2RXNXpaWFFnZEdobElIQnliM0JsY25SNUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdaRzl0VUhKdmNHVnlkSGxEYjI1bWFXY2dkR2hsSUdOdmJtWnBaeUJoY3lCa1pYTmpjbWxpWldRZ1lXSnZkbVV1WEc0Z0lDQXFMMXh1SUNCcGJtcGxZM1JFVDAxUWNtOXdaWEowZVVOdmJtWnBaem9nWm5WdVkzUnBiMjRnS0dSdmJWQnliM0JsY25SNVEyOXVabWxuS1NCN1hHNGdJQ0FnZG1GeUlFbHVhbVZqZEdsdmJpQTlJRVJQVFZCeWIzQmxjblI1U1c1cVpXTjBhVzl1TzF4dUlDQWdJSFpoY2lCUWNtOXdaWEowYVdWeklEMGdaRzl0VUhKdmNHVnlkSGxEYjI1bWFXY3VVSEp2Y0dWeWRHbGxjeUI4ZkNCN2ZUdGNiaUFnSUNCMllYSWdSRTlOUVhSMGNtbGlkWFJsVG1GdFpYTndZV05sY3lBOUlHUnZiVkJ5YjNCbGNuUjVRMjl1Wm1sbkxrUlBUVUYwZEhKcFluVjBaVTVoYldWemNHRmpaWE1nZkh3Z2UzMDdYRzRnSUNBZ2RtRnlJRVJQVFVGMGRISnBZblYwWlU1aGJXVnpJRDBnWkc5dFVISnZjR1Z5ZEhsRGIyNW1hV2N1UkU5TlFYUjBjbWxpZFhSbFRtRnRaWE1nZkh3Z2UzMDdYRzRnSUNBZ2RtRnlJRVJQVFZCeWIzQmxjblI1VG1GdFpYTWdQU0JrYjIxUWNtOXdaWEowZVVOdmJtWnBaeTVFVDAxUWNtOXdaWEowZVU1aGJXVnpJSHg4SUh0OU8xeHVJQ0FnSUhaaGNpQkVUMDFOZFhSaGRHbHZiazFsZEdodlpITWdQU0JrYjIxUWNtOXdaWEowZVVOdmJtWnBaeTVFVDAxTmRYUmhkR2x2YmsxbGRHaHZaSE1nZkh3Z2UzMDdYRzVjYmlBZ0lDQnBaaUFvWkc5dFVISnZjR1Z5ZEhsRGIyNW1hV2N1YVhORGRYTjBiMjFCZEhSeWFXSjFkR1VwSUh0Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNUxsOXBjME4xYzNSdmJVRjBkSEpwWW5WMFpVWjFibU4wYVc5dWN5NXdkWE5vS0dSdmJWQnliM0JsY25SNVEyOXVabWxuTG1selEzVnpkRzl0UVhSMGNtbGlkWFJsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ3Y205d1RtRnRaU0JwYmlCUWNtOXdaWEowYVdWektTQjdYRzRnSUNBZ0lDQWhJVVJQVFZCeWIzQmxjblI1TG5CeWIzQmxjblJwWlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMmx1YW1WamRFUlBUVkJ5YjNCbGNuUjVRMjl1Wm1sbktDNHVMaWs2SUZsdmRWeGNKM0psSUhSeWVXbHVaeUIwYnlCcGJtcGxZM1FnUkU5TklIQnliM0JsY25SNUlDY2dLeUFuWEZ3bkpYTmNYQ2NnZDJocFkyZ2dhR0Z6SUdGc2NtVmhaSGtnWW1WbGJpQnBibXBsWTNSbFpDNGdXVzkxSUcxaGVTQmlaU0JoWTJOcFpHVnVkR0ZzYkhrZ0p5QXJJQ2RwYm1wbFkzUnBibWNnZEdobElITmhiV1VnUkU5TklIQnliM0JsY25SNUlHTnZibVpwWnlCMGQybGpaU3dnYjNJZ2VXOTFJRzFoZVNCaVpTQW5JQ3NnSjJsdWFtVmpkR2x1WnlCMGQyOGdZMjl1Wm1sbmN5QjBhR0YwSUdoaGRtVWdZMjl1Wm14cFkzUnBibWNnY0hKdmNHVnlkSGtnYm1GdFpYTXVKeXdnY0hKdmNFNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDQWdkbUZ5SUd4dmQyVnlRMkZ6WldRZ1BTQndjbTl3VG1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dUlDQWdJQ0FnZG1GeUlIQnliM0JEYjI1bWFXY2dQU0JRY205d1pYSjBhV1Z6VzNCeWIzQk9ZVzFsWFR0Y2JseHVJQ0FnSUNBZ2RtRnlJSEJ5YjNCbGNuUjVTVzVtYnlBOUlIdGNiaUFnSUNBZ0lDQWdZWFIwY21saWRYUmxUbUZ0WlRvZ2JHOTNaWEpEWVhObFpDeGNiaUFnSUNBZ0lDQWdZWFIwY21saWRYUmxUbUZ0WlhOd1lXTmxPaUJ1ZFd4c0xGeHVJQ0FnSUNBZ0lDQndjbTl3WlhKMGVVNWhiV1U2SUhCeWIzQk9ZVzFsTEZ4dUlDQWdJQ0FnSUNCdGRYUmhkR2x2YmsxbGRHaHZaRG9nYm5Wc2JDeGNibHh1SUNBZ0lDQWdJQ0J0ZFhOMFZYTmxRWFIwY21saWRYUmxPaUJqYUdWamEwMWhjMnNvY0hKdmNFTnZibVpwWnl3Z1NXNXFaV04wYVc5dUxrMVZVMVJmVlZORlgwRlVWRkpKUWxWVVJTa3NYRzRnSUNBZ0lDQWdJRzExYzNSVmMyVlFjbTl3WlhKMGVUb2dZMmhsWTJ0TllYTnJLSEJ5YjNCRGIyNW1hV2NzSUVsdWFtVmpkR2x2Ymk1TlZWTlVYMVZUUlY5UVVrOVFSVkpVV1Nrc1hHNGdJQ0FnSUNBZ0lHaGhjMU5wWkdWRlptWmxZM1J6T2lCamFHVmphMDFoYzJzb2NISnZjRU52Ym1acFp5d2dTVzVxWldOMGFXOXVMa2hCVTE5VFNVUkZYMFZHUmtWRFZGTXBMRnh1SUNBZ0lDQWdJQ0JvWVhOQ2IyOXNaV0Z1Vm1Gc2RXVTZJR05vWldOclRXRnpheWh3Y205d1EyOXVabWxuTENCSmJtcGxZM1JwYjI0dVNFRlRYMEpQVDB4RlFVNWZWa0ZNVlVVcExGeHVJQ0FnSUNBZ0lDQm9ZWE5PZFcxbGNtbGpWbUZzZFdVNklHTm9aV05yVFdGemF5aHdjbTl3UTI5dVptbG5MQ0JKYm1wbFkzUnBiMjR1U0VGVFgwNVZUVVZTU1VOZlZrRk1WVVVwTEZ4dUlDQWdJQ0FnSUNCb1lYTlFiM05wZEdsMlpVNTFiV1Z5YVdOV1lXeDFaVG9nWTJobFkydE5ZWE5yS0hCeWIzQkRiMjVtYVdjc0lFbHVhbVZqZEdsdmJpNUlRVk5mVUU5VFNWUkpWa1ZmVGxWTlJWSkpRMTlXUVV4VlJTa3NYRzRnSUNBZ0lDQWdJR2hoYzA5MlpYSnNiMkZrWldSQ2IyOXNaV0Z1Vm1Gc2RXVTZJR05vWldOclRXRnpheWh3Y205d1EyOXVabWxuTENCSmJtcGxZM1JwYjI0dVNFRlRYMDlXUlZKTVQwRkVSVVJmUWs5UFRFVkJUbDlXUVV4VlJTbGNiaUFnSUNBZ0lIMDdYRzVjYmlBZ0lDQWdJQ0VvSVhCeWIzQmxjblI1U1c1bWJ5NXRkWE4wVlhObFFYUjBjbWxpZFhSbElIeDhJQ0Z3Y205d1pYSjBlVWx1Wm04dWJYVnpkRlZ6WlZCeWIzQmxjblI1S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RFVDAxUWNtOXdaWEowZVRvZ1EyRnVibTkwSUhKbGNYVnBjbVVnZFhOcGJtY2dZbTkwYUNCaGRIUnlhV0oxZEdVZ1lXNWtJSEJ5YjNCbGNuUjVPaUFsY3ljc0lIQnliM0JPWVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FoS0hCeWIzQmxjblI1U1c1bWJ5NXRkWE4wVlhObFVISnZjR1Z5ZEhrZ2ZId2dJWEJ5YjNCbGNuUjVTVzVtYnk1b1lYTlRhV1JsUldabVpXTjBjeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5SRTlOVUhKdmNHVnlkSGs2SUZCeWIzQmxjblJwWlhNZ2RHaGhkQ0JvWVhabElITnBaR1VnWldabVpXTjBjeUJ0ZFhOMElIVnpaU0J3Y205d1pYSjBlVG9nSlhNbkxDQndjbTl3VG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSVNod2NtOXdaWEowZVVsdVptOHVhR0Z6UW05dmJHVmhibFpoYkhWbElDc2djSEp2Y0dWeWRIbEpibVp2TG1oaGMwNTFiV1Z5YVdOV1lXeDFaU0FySUhCeWIzQmxjblI1U1c1bWJ5NW9ZWE5QZG1WeWJHOWhaR1ZrUW05dmJHVmhibFpoYkhWbElEdzlJREVwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFJQVFZCeWIzQmxjblI1T2lCV1lXeDFaU0JqWVc0Z1ltVWdiMjVsSUc5bUlHSnZiMnhsWVc0c0lHOTJaWEpzYjJGa1pXUWdZbTl2YkdWaGJpd2diM0lnSnlBcklDZHVkVzFsY21saklIWmhiSFZsTENCaWRYUWdibTkwSUdFZ1kyOXRZbWx1WVhScGIyNDZJQ1Z6Snl3Z2NISnZjRTVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnUkU5TlVISnZjR1Z5ZEhrdVoyVjBVRzl6YzJsaWJHVlRkR0Z1WkdGeVpFNWhiV1ZiYkc5M1pYSkRZWE5sWkYwZ1BTQndjbTl3VG1GdFpUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0VSUFRVRjBkSEpwWW5WMFpVNWhiV1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdZWFIwY21saWRYUmxUbUZ0WlNBOUlFUlBUVUYwZEhKcFluVjBaVTVoYldWelczQnliM0JPWVcxbFhUdGNiaUFnSUNBZ0lDQWdjSEp2Y0dWeWRIbEpibVp2TG1GMGRISnBZblYwWlU1aGJXVWdQU0JoZEhSeWFXSjFkR1ZPWVcxbE8xeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJRVJQVFZCeWIzQmxjblI1TG1kbGRGQnZjM05wWW14bFUzUmhibVJoY21ST1lXMWxXMkYwZEhKcFluVjBaVTVoYldWZElEMGdjSEp2Y0U1aGJXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tFUlBUVUYwZEhKcFluVjBaVTVoYldWemNHRmpaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhCeWIzQmxjblI1U1c1bWJ5NWhkSFJ5YVdKMWRHVk9ZVzFsYzNCaFkyVWdQU0JFVDAxQmRIUnlhV0oxZEdWT1lXMWxjM0JoWTJWelczQnliM0JPWVcxbFhUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0VSUFRWQnliM0JsY25SNVRtRnRaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhCeWIzQmxjblI1U1c1bWJ5NXdjbTl3WlhKMGVVNWhiV1VnUFNCRVQwMVFjbTl3WlhKMGVVNWhiV1Z6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRVJQVFUxMWRHRjBhVzl1VFdWMGFHOWtjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3VG1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnY0hKdmNHVnlkSGxKYm1adkxtMTFkR0YwYVc5dVRXVjBhRzlrSUQwZ1JFOU5UWFYwWVhScGIyNU5aWFJvYjJSelczQnliM0JPWVcxbFhUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdSRTlOVUhKdmNHVnlkSGt1Y0hKdmNHVnlkR2xsYzF0d2NtOXdUbUZ0WlYwZ1BTQndjbTl3WlhKMGVVbHVabTg3WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1ZG1GeUlHUmxabUYxYkhSV1lXeDFaVU5oWTJobElEMGdlMzA3WEc1Y2JpOHFLbHh1SUNvZ1JFOU5VSEp2Y0dWeWRIa2daWGh3YjNKMGN5QnNiMjlyZFhBZ2IySnFaV04wY3lCMGFHRjBJR05oYmlCaVpTQjFjMlZrSUd4cGEyVWdablZ1WTNScGIyNXpPbHh1SUNwY2JpQXFJQ0FnUGlCRVQwMVFjbTl3WlhKMGVTNXBjMVpoYkdsa1d5ZHBaQ2RkWEc0Z0tpQWdJSFJ5ZFdWY2JpQXFJQ0FnUGlCRVQwMVFjbTl3WlhKMGVTNXBjMVpoYkdsa1d5ZG1iMjlpWVhJblhWeHVJQ29nSUNCMWJtUmxabWx1WldSY2JpQXFYRzRnS2lCQmJIUm9iM1ZuYUNCMGFHbHpJRzFoZVNCaVpTQmpiMjVtZFhOcGJtY3NJR2wwSUhCbGNtWnZjbTF6SUdKbGRIUmxjaUJwYmlCblpXNWxjbUZzTGx4dUlDcGNiaUFxSUVCelpXVWdhSFIwY0RvdkwycHpjR1Z5Wmk1amIyMHZhMlY1TFdWNGFYTjBjMXh1SUNvZ1FITmxaU0JvZEhSd09pOHZhbk53WlhKbUxtTnZiUzlyWlhrdGJXbHpjMmx1WjF4dUlDb3ZYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIa2dQU0I3WEc1Y2JpQWdTVVJmUVZSVVVrbENWVlJGWDA1QlRVVTZJQ2RrWVhSaExYSmxZV04wYVdRbkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCTllYQWdabkp2YlNCd2NtOXdaWEowZVNCY0luTjBZVzVrWVhKa0lHNWhiV1ZjSWlCMGJ5QmhiaUJ2WW1wbFkzUWdkMmwwYUNCcGJtWnZJR0ZpYjNWMElHaHZkeUIwYnlCelpYUmNiaUFnSUNvZ2RHaGxJSEJ5YjNCbGNuUjVJR2x1SUhSb1pTQkVUMDB1SUVWaFkyZ2diMkpxWldOMElHTnZiblJoYVc1ek9seHVJQ0FnS2x4dUlDQWdLaUJoZEhSeWFXSjFkR1ZPWVcxbE9seHVJQ0FnS2lBZ0lGVnpaV1FnZDJobGJpQnlaVzVrWlhKcGJtY2diV0Z5YTNWd0lHOXlJSGRwZEdnZ1lDcEJkSFJ5YVdKMWRHVW9LV0F1WEc0Z0lDQXFJR0YwZEhKcFluVjBaVTVoYldWemNHRmpaVnh1SUNBZ0tpQndjbTl3WlhKMGVVNWhiV1U2WEc0Z0lDQXFJQ0FnVlhObFpDQnZiaUJFVDAwZ2JtOWtaU0JwYm5OMFlXNWpaWE11SUNoVWFHbHpJR2x1WTJ4MVpHVnpJSEJ5YjNCbGNuUnBaWE1nZEdoaGRDQnRkWFJoZEdVZ1pIVmxJSFJ2WEc0Z0lDQXFJQ0FnWlhoMFpYSnVZV3dnWm1GamRHOXljeTRwWEc0Z0lDQXFJRzExZEdGMGFXOXVUV1YwYUc5a09seHVJQ0FnS2lBZ0lFbG1JRzV2YmkxdWRXeHNMQ0IxYzJWa0lHbHVjM1JsWVdRZ2IyWWdkR2hsSUhCeWIzQmxjblI1SUc5eUlHQnpaWFJCZEhSeWFXSjFkR1VvS1dBZ1lXWjBaWEpjYmlBZ0lDb2dJQ0JwYm1sMGFXRnNJSEpsYm1SbGNpNWNiaUFnSUNvZ2JYVnpkRlZ6WlVGMGRISnBZblYwWlRwY2JpQWdJQ29nSUNCWGFHVjBhR1Z5SUhSb1pTQndjbTl3WlhKMGVTQnRkWE4wSUdKbElHRmpZMlZ6YzJWa0lHRnVaQ0J0ZFhSaGRHVmtJSFZ6YVc1bklHQXFRWFIwY21saWRYUmxLQ2xnTGx4dUlDQWdLaUFnSUNoVWFHbHpJR2x1WTJ4MVpHVnpJR0Z1ZVhSb2FXNW5JSFJvWVhRZ1ptRnBiSE1nWUR4d2NtOXdUbUZ0WlQ0Z2FXNGdQR1ZzWlcxbGJuUStZQzRwWEc0Z0lDQXFJRzExYzNSVmMyVlFjbTl3WlhKMGVUcGNiaUFnSUNvZ0lDQlhhR1YwYUdWeUlIUm9aU0J3Y205d1pYSjBlU0J0ZFhOMElHSmxJR0ZqWTJWemMyVmtJR0Z1WkNCdGRYUmhkR1ZrSUdGeklHRnVJRzlpYW1WamRDQndjbTl3WlhKMGVTNWNiaUFnSUNvZ2FHRnpVMmxrWlVWbVptVmpkSE02WEc0Z0lDQXFJQ0FnVjJobGRHaGxjaUJ2Y2lCdWIzUWdjMlYwZEdsdVp5QmhJSFpoYkhWbElHTmhkWE5sY3lCemFXUmxJR1ZtWm1WamRITWdjM1ZqYUNCaGN5QjBjbWxuWjJWeWFXNW5YRzRnSUNBcUlDQWdjbVZ6YjNWeVkyVnpJSFJ2SUdKbElHeHZZV1JsWkNCdmNpQjBaWGgwSUhObGJHVmpkR2x2YmlCamFHRnVaMlZ6TGlCSlppQjBjblZsTENCM1pTQnlaV0ZrSUdaeWIyMWNiaUFnSUNvZ0lDQjBhR1VnUkU5TklHSmxabTl5WlNCMWNHUmhkR2x1WnlCMGJ5Qmxibk4xY21VZ2RHaGhkQ0IwYUdVZ2RtRnNkV1VnYVhNZ2IyNXNlU0J6WlhRZ2FXWWdhWFFnYUdGelhHNGdJQ0FxSUNBZ1kyaGhibWRsWkM1Y2JpQWdJQ29nYUdGelFtOXZiR1ZoYmxaaGJIVmxPbHh1SUNBZ0tpQWdJRmRvWlhSb1pYSWdkR2hsSUhCeWIzQmxjblI1SUhOb2IzVnNaQ0JpWlNCeVpXMXZkbVZrSUhkb1pXNGdjMlYwSUhSdklHRWdabUZzYzJWNUlIWmhiSFZsTGx4dUlDQWdLaUJvWVhOT2RXMWxjbWxqVm1Gc2RXVTZYRzRnSUNBcUlDQWdWMmhsZEdobGNpQjBhR1VnY0hKdmNHVnlkSGtnYlhWemRDQmlaU0J1ZFcxbGNtbGpJRzl5SUhCaGNuTmxJR0Z6SUdFZ2JuVnRaWEpwWXlCaGJtUWdjMmh2ZFd4a0lHSmxYRzRnSUNBcUlDQWdjbVZ0YjNabFpDQjNhR1Z1SUhObGRDQjBieUJoSUdaaGJITmxlU0IyWVd4MVpTNWNiaUFnSUNvZ2FHRnpVRzl6YVhScGRtVk9kVzFsY21salZtRnNkV1U2WEc0Z0lDQXFJQ0FnVjJobGRHaGxjaUIwYUdVZ2NISnZjR1Z5ZEhrZ2JYVnpkQ0JpWlNCd2IzTnBkR2wyWlNCdWRXMWxjbWxqSUc5eUlIQmhjbk5sSUdGeklHRWdjRzl6YVhScGRtVmNiaUFnSUNvZ0lDQnVkVzFsY21saklHRnVaQ0J6YUc5MWJHUWdZbVVnY21WdGIzWmxaQ0IzYUdWdUlITmxkQ0IwYnlCaElHWmhiSE5sZVNCMllXeDFaUzVjYmlBZ0lDb2dhR0Z6VDNabGNteHZZV1JsWkVKdmIyeGxZVzVXWVd4MVpUcGNiaUFnSUNvZ0lDQlhhR1YwYUdWeUlIUm9aU0J3Y205d1pYSjBlU0JqWVc0Z1ltVWdkWE5sWkNCaGN5QmhJR1pzWVdjZ1lYTWdkMlZzYkNCaGN5QjNhWFJvSUdFZ2RtRnNkV1V1WEc0Z0lDQXFJQ0FnVW1WdGIzWmxaQ0IzYUdWdUlITjBjbWxqZEd4NUlHVnhkV0ZzSUhSdklHWmhiSE5sT3lCd2NtVnpaVzUwSUhkcGRHaHZkWFFnWVNCMllXeDFaU0IzYUdWdVhHNGdJQ0FxSUNBZ2MzUnlhV04wYkhrZ1pYRjFZV3dnZEc4Z2RISjFaVHNnY0hKbGMyVnVkQ0IzYVhSb0lHRWdkbUZzZFdVZ2IzUm9aWEozYVhObExseHVJQ0FnS2k5Y2JpQWdjSEp2Y0dWeWRHbGxjem9nZTMwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUUxaGNIQnBibWNnWm5KdmJTQnNiM2RsY21OaGMyVWdjSEp2Y0dWeWRIa2dibUZ0WlhNZ2RHOGdkR2hsSUhCeWIzQmxjbXg1SUdOaGMyVmtJSFpsY25OcGIyNHNJSFZ6WldSY2JpQWdJQ29nZEc4Z2QyRnliaUJwYmlCMGFHVWdZMkZ6WlNCdlppQnRhWE56YVc1bklIQnliM0JsY25ScFpYTXVJRUYyWVdsc1lXSnNaU0J2Ym14NUlHbHVJRjlmUkVWV1gxOHVYRzRnSUNBcUlFQjBlWEJsSUh0UFltcGxZM1I5WEc0Z0lDQXFMMXh1SUNCblpYUlFiM056YVdKc1pWTjBZVzVrWVhKa1RtRnRaVG9nY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIdDlJRG9nYm5Wc2JDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FXeHNJRzltSUhSb1pTQnBjME4xYzNSdmJVRjBkSEpwWW5WMFpTZ3BJR1oxYm1OMGFXOXVjeUIwYUdGMElHaGhkbVVnWW1WbGJpQnBibXBsWTNSbFpDNWNiaUFnSUNvdlhHNGdJRjlwYzBOMWMzUnZiVUYwZEhKcFluVjBaVVoxYm1OMGFXOXVjem9nVzEwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOb1pXTnJjeUIzYUdWMGFHVnlJR0VnY0hKdmNHVnlkSGtnYm1GdFpTQnBjeUJoSUdOMWMzUnZiU0JoZEhSeWFXSjFkR1V1WEc0Z0lDQXFJRUJ0WlhSb2IyUmNiaUFnSUNvdlhHNGdJR2x6UTNWemRHOXRRWFIwY21saWRYUmxPaUJtZFc1amRHbHZiaUFvWVhSMGNtbGlkWFJsVG1GdFpTa2dlMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dSRTlOVUhKdmNHVnlkSGt1WDJselEzVnpkRzl0UVhSMGNtbGlkWFJsUm5WdVkzUnBiMjV6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnYVhORGRYTjBiMjFCZEhSeWFXSjFkR1ZHYmlBOUlFUlBUVkJ5YjNCbGNuUjVMbDlwYzBOMWMzUnZiVUYwZEhKcFluVjBaVVoxYm1OMGFXOXVjMXRwWFR0Y2JpQWdJQ0FnSUdsbUlDaHBjME4xYzNSdmJVRjBkSEpwWW5WMFpVWnVLR0YwZEhKcFluVjBaVTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2RHaGxJR1JsWm1GMWJIUWdjSEp2Y0dWeWRIa2dkbUZzZFdVZ1ptOXlJR0VnUkU5TklIQnliM0JsY25SNUlDaHBMbVV1TENCdWIzUWdZVzVjYmlBZ0lDb2dZWFIwY21saWRYUmxLUzRnVFc5emRDQmtaV1poZFd4MElIWmhiSFZsY3lCaGNtVWdKeWNnYjNJZ1ptRnNjMlVzSUdKMWRDQnViM1FnWVd4c0xpQlhiM0p6WlNCNVpYUXNYRzRnSUNBcUlITnZiV1VnS0dsdUlIQmhjblJwWTNWc1lYSXNJR0IwZVhCbFlDa2dkbUZ5ZVNCa1pYQmxibVJwYm1jZ2IyNGdkR2hsSUhSNWNHVWdiMllnWld4bGJXVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1ZFOUVUem9nU1hNZ2FYUWdZbVYwZEdWeUlIUnZJR2R5WVdJZ1lXeHNJSFJvWlNCd2IzTnphV0pzWlNCd2NtOXdaWEowYVdWeklIZG9aVzRnWTNKbFlYUnBibWNnWVc1Y2JpQWdJQ29nWld4bGJXVnVkQ0IwYnlCaGRtOXBaQ0JvWVhacGJtY2dkRzhnWTNKbFlYUmxJSFJvWlNCellXMWxJR1ZzWlcxbGJuUWdkSGRwWTJVL1hHNGdJQ0FxTDF4dUlDQm5aWFJFWldaaGRXeDBWbUZzZFdWR2IzSlFjbTl3WlhKMGVUb2dablZ1WTNScGIyNGdLRzV2WkdWT1lXMWxMQ0J3Y205d0tTQjdYRzRnSUNBZ2RtRnlJRzV2WkdWRVpXWmhkV3gwY3lBOUlHUmxabUYxYkhSV1lXeDFaVU5oWTJobFcyNXZaR1ZPWVcxbFhUdGNiaUFnSUNCMllYSWdkR1Z6ZEVWc1pXMWxiblE3WEc0Z0lDQWdhV1lnS0NGdWIyUmxSR1ZtWVhWc2RITXBJSHRjYmlBZ0lDQWdJR1JsWm1GMWJIUldZV3gxWlVOaFkyaGxXMjV2WkdWT1lXMWxYU0E5SUc1dlpHVkVaV1poZFd4MGN5QTlJSHQ5TzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvSVNod2NtOXdJR2x1SUc1dlpHVkVaV1poZFd4MGN5a3BJSHRjYmlBZ0lDQWdJSFJsYzNSRmJHVnRaVzUwSUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2h1YjJSbFRtRnRaU2s3WEc0Z0lDQWdJQ0J1YjJSbFJHVm1ZWFZzZEhOYmNISnZjRjBnUFNCMFpYTjBSV3hsYldWdWRGdHdjbTl3WFR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNXZaR1ZFWldaaGRXeDBjMXR3Y205d1hUdGNiaUFnZlN4Y2JseHVJQ0JwYm1wbFkzUnBiMjQ2SUVSUFRWQnliM0JsY25SNVNXNXFaV04wYVc5dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUVSUFRWQnliM0JsY25SNU95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBET01Qcm9wZXJ0eU9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcblxudmFyIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8vIFNpbXBsaWZpZWQgc3Vic2V0XG52YXIgVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVggPSAvXlthLXpBLVpfXVtcXHdcXC5cXC1dKiQvO1xudmFyIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTtcbnZhciB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTtcblxuZnVuY3Rpb24gaXNBdHRyaWJ1dGVOYW1lU2FmZShhdHRyaWJ1dGVOYW1lKSB7XG4gIGlmICh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhdHRyaWJ1dGUgbmFtZTogYCVzYCcsIGF0dHJpYnV0ZU5hbWUpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSAmJiAhdmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSAmJiBpc05hTih2YWx1ZSkgfHwgcHJvcGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlICYmIHZhbHVlIDwgMSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gZmFsc2U7XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciByZWFjdFByb3BzID0ge1xuICAgIGNoaWxkcmVuOiB0cnVlLFxuICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB0cnVlLFxuICAgIGtleTogdHJ1ZSxcbiAgICByZWY6IHRydWVcbiAgfTtcbiAgdmFyIHdhcm5lZFByb3BlcnRpZXMgPSB7fTtcblxuICB2YXIgd2FyblVua25vd25Qcm9wZXJ0eSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHJlYWN0UHJvcHMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgcmVhY3RQcm9wc1tuYW1lXSB8fCB3YXJuZWRQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gdHJ1ZTtcbiAgICB2YXIgbG93ZXJDYXNlZE5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBkYXRhLSogYXR0cmlidXRlcyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvblxuICAgIHZhciBzdGFuZGFyZE5hbWUgPSBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShsb3dlckNhc2VkTmFtZSkgPyBsb3dlckNhc2VkTmFtZSA6IERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2VyQ2FzZWROYW1lXSA6IG51bGw7XG5cbiAgICAvLyBGb3Igbm93LCBvbmx5IHdhcm4gd2hlbiB3ZSBoYXZlIGEgc3VnZ2VzdGVkIGNvcnJlY3Rpb24uIFRoaXMgcHJldmVudHNcbiAgICAvLyBsb2dnaW5nIHRvbyBtdWNoIHdoZW4gdXNpbmcgdHJhbnNmZXJQcm9wc1RvLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHN0YW5kYXJkTmFtZSA9PSBudWxsLCAnVW5rbm93biBET00gcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8nLCBuYW1lLCBzdGFuZGFyZE5hbWUpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBET00gcHJvcGVydGllcy5cbiAqL1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHtcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBJRCBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFVuZXNjYXBlZCBJRC5cbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9ySUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKGlkKTtcbiAgfSxcblxuICBzZXRBdHRyaWJ1dGVGb3JJRDogZnVuY3Rpb24gKG5vZGUsIGlkKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUsIGlkKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIGEgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICogQHJldHVybiB7P3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgbnVsbCBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAgICBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTtcbiAgICAgIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsgJz1cIlwiJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblVua25vd25Qcm9wZXJ0eShuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIGN1c3RvbSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqL1xuICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RVc2VBdHRyaWJ1dGUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTtcbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2U7XG4gICAgICAgIC8vIGBzZXRBdHRyaWJ1dGVgIHdpdGggb2JqZWN0cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBpbiBJRTgvOSxcbiAgICAgICAgLy8gKCcnICsgdmFsdWUpIG1ha2VzIGl0IG91dHB1dCB0aGUgY29ycmVjdCB0b1N0cmluZygpLXZhbHVlLlxuICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7XG4gICAgICAgIC8vIE11c3QgZXhwbGljaXRseSBjYXN0IHZhbHVlcyBmb3IgSEFTX1NJREVfRUZGRUNUUy1wcm9wZXJ0aWVzIHRvIHRoZVxuICAgICAgICAvLyBwcm9wZXJ0eSB0eXBlIGJlZm9yZSBjb21wYXJpbmc7IG9ubHkgYHZhbHVlYCBkb2VzIGFuZCBpcyBzdHJpbmcuXG4gICAgICAgIGlmICghcHJvcGVydHlJbmZvLmhhc1NpZGVFZmZlY3RzIHx8ICcnICsgbm9kZVtwcm9wTmFtZV0gIT09ICcnICsgdmFsdWUpIHtcbiAgICAgICAgICAvLyBDb250cmFyeSB0byBgc2V0QXR0cmlidXRlYCwgb2JqZWN0IHByb3BlcnRpZXMgYXJlIHByb3Blcmx5XG4gICAgICAgICAgLy8gYHRvU3RyaW5nYGVkIGJ5IElFOC85LlxuICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUobm9kZSwgbmFtZSwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblVua25vd25Qcm9wZXJ0eShuYW1lKTtcbiAgICB9XG4gIH0sXG5cbiAgc2V0VmFsdWVGb3JBdHRyaWJ1dGU6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkge1xuICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnICsgdmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICovXG4gIGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG4gICAgICBpZiAobXV0YXRpb25NZXRob2QpIHtcbiAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RVc2VBdHRyaWJ1dGUpIHtcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUocHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZTtcbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IERPTVByb3BlcnR5LmdldERlZmF1bHRWYWx1ZUZvclByb3BlcnR5KG5vZGUubm9kZU5hbWUsIHByb3BOYW1lKTtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eUluZm8uaGFzU2lkZUVmZmVjdHMgfHwgJycgKyBub2RlW3Byb3BOYW1lXSAhPT0gZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5Vbmtub3duUHJvcGVydHkobmFtZSk7XG4gICAgfVxuICB9XG5cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhET01Qcm9wZXJ0eU9wZXJhdGlvbnMsICdET01Qcm9wZXJ0eU9wZXJhdGlvbnMnLCB7XG4gIHNldFZhbHVlRm9yUHJvcGVydHk6ICdzZXRWYWx1ZUZvclByb3BlcnR5JyxcbiAgc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ICdzZXRWYWx1ZUZvckF0dHJpYnV0ZScsXG4gIGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6ICdkZWxldGVWYWx1ZUZvclByb3BlcnR5J1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NUHJvcGVydHlPcGVyYXRpb25zO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1YzF4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkVUMDFRY205d1pYSjBlU0E5SUhKbGNYVnBjbVVvSnk0dlJFOU5VSEp2Y0dWeWRIa25LVHRjYm5aaGNpQlNaV0ZqZEZCbGNtWWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVR1Z5WmljcE8xeHVYRzUyWVhJZ2NYVnZkR1ZCZEhSeWFXSjFkR1ZXWVd4MVpVWnZja0p5YjNkelpYSWdQU0J5WlhGMWFYSmxLQ2N1TDNGMWIzUmxRWFIwY21saWRYUmxWbUZzZFdWR2IzSkNjbTkzYzJWeUp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1THk4Z1UybHRjR3hwWm1sbFpDQnpkV0p6WlhSY2JuWmhjaUJXUVV4SlJGOUJWRlJTU1VKVlZFVmZUa0ZOUlY5U1JVZEZXQ0E5SUM5ZVcyRXRla0V0V2w5ZFcxeGNkMXhjTGx4Y0xWMHFKQzg3WEc1MllYSWdhV3hzWldkaGJFRjBkSEpwWW5WMFpVNWhiV1ZEWVdOb1pTQTlJSHQ5TzF4dWRtRnlJSFpoYkdsa1lYUmxaRUYwZEhKcFluVjBaVTVoYldWRFlXTm9aU0E5SUh0OU8xeHVYRzVtZFc1amRHbHZiaUJwYzBGMGRISnBZblYwWlU1aGJXVlRZV1psS0dGMGRISnBZblYwWlU1aGJXVXBJSHRjYmlBZ2FXWWdLSFpoYkdsa1lYUmxaRUYwZEhKcFluVjBaVTVoYldWRFlXTm9aUzVvWVhOUGQyNVFjbTl3WlhKMGVTaGhkSFJ5YVdKMWRHVk9ZVzFsS1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0I5WEc0Z0lHbG1JQ2hwYkd4bFoyRnNRWFIwY21saWRYUmxUbUZ0WlVOaFkyaGxMbWhoYzA5M2JsQnliM0JsY25SNUtHRjBkSEpwWW5WMFpVNWhiV1VwS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc0Z0lHbG1JQ2hXUVV4SlJGOUJWRlJTU1VKVlZFVmZUa0ZOUlY5U1JVZEZXQzUwWlhOMEtHRjBkSEpwWW5WMFpVNWhiV1VwS1NCN1hHNGdJQ0FnZG1Gc2FXUmhkR1ZrUVhSMGNtbGlkWFJsVG1GdFpVTmhZMmhsVzJGMGRISnBZblYwWlU1aGJXVmRJRDBnZEhKMVpUdGNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dUlDQnBiR3hsWjJGc1FYUjBjbWxpZFhSbFRtRnRaVU5oWTJobFcyRjBkSEpwWW5WMFpVNWhiV1ZkSUQwZ2RISjFaVHRjYmlBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZEpiblpoYkdsa0lHRjBkSEpwWW5WMFpTQnVZVzFsT2lCZ0pYTmdKeXdnWVhSMGNtbGlkWFJsVG1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lISmxkSFZ5YmlCbVlXeHpaVHRjYm4xY2JseHVablZ1WTNScGIyNGdjMmh2ZFd4a1NXZHViM0psVm1Gc2RXVW9jSEp2Y0dWeWRIbEpibVp2TENCMllXeDFaU2tnZTF4dUlDQnlaWFIxY200Z2RtRnNkV1VnUFQwZ2JuVnNiQ0I4ZkNCd2NtOXdaWEowZVVsdVptOHVhR0Z6UW05dmJHVmhibFpoYkhWbElDWW1JQ0YyWVd4MVpTQjhmQ0J3Y205d1pYSjBlVWx1Wm04dWFHRnpUblZ0WlhKcFkxWmhiSFZsSUNZbUlHbHpUbUZPS0haaGJIVmxLU0I4ZkNCd2NtOXdaWEowZVVsdVptOHVhR0Z6VUc5emFYUnBkbVZPZFcxbGNtbGpWbUZzZFdVZ0ppWWdkbUZzZFdVZ1BDQXhJSHg4SUhCeWIzQmxjblI1U1c1bWJ5NW9ZWE5QZG1WeWJHOWhaR1ZrUW05dmJHVmhibFpoYkhWbElDWW1JSFpoYkhWbElEMDlQU0JtWVd4elpUdGNibjFjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdkbUZ5SUhKbFlXTjBVSEp2Y0hNZ1BTQjdYRzRnSUNBZ1kyaHBiR1J5Wlc0NklIUnlkV1VzWEc0Z0lDQWdaR0Z1WjJWeWIzVnpiSGxUWlhSSmJtNWxja2hVVFV3NklIUnlkV1VzWEc0Z0lDQWdhMlY1T2lCMGNuVmxMRnh1SUNBZ0lISmxaam9nZEhKMVpWeHVJQ0I5TzF4dUlDQjJZWElnZDJGeWJtVmtVSEp2Y0dWeWRHbGxjeUE5SUh0OU8xeHVYRzRnSUhaaGNpQjNZWEp1Vlc1cmJtOTNibEJ5YjNCbGNuUjVJRDBnWm5WdVkzUnBiMjRnS0c1aGJXVXBJSHRjYmlBZ0lDQnBaaUFvY21WaFkzUlFjbTl3Y3k1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQW1KaUJ5WldGamRGQnliM0J6VzI1aGJXVmRJSHg4SUhkaGNtNWxaRkJ5YjNCbGNuUnBaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ0ppWWdkMkZ5Ym1Wa1VISnZjR1Z5ZEdsbGMxdHVZVzFsWFNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSGRoY201bFpGQnliM0JsY25ScFpYTmJibUZ0WlYwZ1BTQjBjblZsTzF4dUlDQWdJSFpoY2lCc2IzZGxja05oYzJWa1RtRnRaU0E5SUc1aGJXVXVkRzlNYjNkbGNrTmhjMlVvS1R0Y2JseHVJQ0FnSUM4dklHUmhkR0V0S2lCaGRIUnlhV0oxZEdWeklITm9iM1ZzWkNCaVpTQnNiM2RsY21OaGMyVTdJSE4xWjJkbGMzUWdkR2hsSUd4dmQyVnlZMkZ6WlNCMlpYSnphVzl1WEc0Z0lDQWdkbUZ5SUhOMFlXNWtZWEprVG1GdFpTQTlJRVJQVFZCeWIzQmxjblI1TG1selEzVnpkRzl0UVhSMGNtbGlkWFJsS0d4dmQyVnlRMkZ6WldST1lXMWxLU0EvSUd4dmQyVnlRMkZ6WldST1lXMWxJRG9nUkU5TlVISnZjR1Z5ZEhrdVoyVjBVRzl6YzJsaWJHVlRkR0Z1WkdGeVpFNWhiV1V1YUdGelQzZHVVSEp2Y0dWeWRIa29iRzkzWlhKRFlYTmxaRTVoYldVcElEOGdSRTlOVUhKdmNHVnlkSGt1WjJWMFVHOXpjMmxpYkdWVGRHRnVaR0Z5WkU1aGJXVmJiRzkzWlhKRFlYTmxaRTVoYldWZElEb2diblZzYkR0Y2JseHVJQ0FnSUM4dklFWnZjaUJ1YjNjc0lHOXViSGtnZDJGeWJpQjNhR1Z1SUhkbElHaGhkbVVnWVNCemRXZG5aWE4wWldRZ1kyOXljbVZqZEdsdmJpNGdWR2hwY3lCd2NtVjJaVzUwYzF4dUlDQWdJQzh2SUd4dloyZHBibWNnZEc5dklHMTFZMmdnZDJobGJpQjFjMmx1WnlCMGNtRnVjMlpsY2xCeWIzQnpWRzh1WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvYzNSaGJtUmhjbVJPWVcxbElEMDlJRzUxYkd3c0lDZFZibXR1YjNkdUlFUlBUU0J3Y205d1pYSjBlU0FsY3k0Z1JHbGtJSGx2ZFNCdFpXRnVJQ1Z6UHljc0lHNWhiV1VzSUhOMFlXNWtZWEprVG1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1QzQmxjbUYwYVc5dWN5Qm1iM0lnWkdWaGJHbHVaeUIzYVhSb0lFUlBUU0J3Y205d1pYSjBhV1Z6TGx4dUlDb3ZYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJRzFoY210MWNDQm1iM0lnZEdobElFbEVJSEJ5YjNCbGNuUjVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1ZXNWxjMk5oY0dWa0lFbEVMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFMWhjbXQxY0NCemRISnBibWN1WEc0Z0lDQXFMMXh1SUNCamNtVmhkR1ZOWVhKcmRYQkdiM0pKUkRvZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlFUlBUVkJ5YjNCbGNuUjVMa2xFWDBGVVZGSkpRbFZVUlY5T1FVMUZJQ3NnSnowbklDc2djWFZ2ZEdWQmRIUnlhV0oxZEdWV1lXeDFaVVp2Y2tKeWIzZHpaWElvYVdRcE8xeHVJQ0I5TEZ4dVhHNGdJSE5sZEVGMGRISnBZblYwWlVadmNrbEVPaUJtZFc1amRHbHZiaUFvYm05a1pTd2dhV1FwSUh0Y2JpQWdJQ0J1YjJSbExuTmxkRUYwZEhKcFluVjBaU2hFVDAxUWNtOXdaWEowZVM1SlJGOUJWRlJTU1VKVlZFVmZUa0ZOUlN3Z2FXUXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUcxaGNtdDFjQ0JtYjNJZ1lTQndjbTl3WlhKMGVTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzVoYldWY2JpQWdJQ29nUUhCaGNtRnRJSHNxZlNCMllXeDFaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIcy9jM1J5YVc1bmZTQk5ZWEpyZFhBZ2MzUnlhVzVuTENCdmNpQnVkV3hzSUdsbUlIUm9aU0J3Y205d1pYSjBlU0IzWVhNZ2FXNTJZV3hwWkM1Y2JpQWdJQ292WEc0Z0lHTnlaV0YwWlUxaGNtdDFjRVp2Y2xCeWIzQmxjblI1T2lCbWRXNWpkR2x2YmlBb2JtRnRaU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQjJZWElnY0hKdmNHVnlkSGxKYm1adklEMGdSRTlOVUhKdmNHVnlkSGt1Y0hKdmNHVnlkR2xsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQS9JRVJQVFZCeWIzQmxjblI1TG5CeWIzQmxjblJwWlhOYmJtRnRaVjBnT2lCdWRXeHNPMXh1SUNBZ0lHbG1JQ2h3Y205d1pYSjBlVWx1Wm04cElIdGNiaUFnSUNBZ0lHbG1JQ2h6YUc5MWJHUkpaMjV2Y21WV1lXeDFaU2h3Y205d1pYSjBlVWx1Wm04c0lIWmhiSFZsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5YzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjJZWElnWVhSMGNtbGlkWFJsVG1GdFpTQTlJSEJ5YjNCbGNuUjVTVzVtYnk1aGRIUnlhV0oxZEdWT1lXMWxPMXh1SUNBZ0lDQWdhV1lnS0hCeWIzQmxjblI1U1c1bWJ5NW9ZWE5DYjI5c1pXRnVWbUZzZFdVZ2ZId2djSEp2Y0dWeWRIbEpibVp2TG1oaGMwOTJaWEpzYjJGa1pXUkNiMjlzWldGdVZtRnNkV1VnSmlZZ2RtRnNkV1VnUFQwOUlIUnlkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGMGRISnBZblYwWlU1aGJXVWdLeUFuUFZ3aVhDSW5PMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHRjBkSEpwWW5WMFpVNWhiV1VnS3lBblBTY2dLeUJ4ZFc5MFpVRjBkSEpwWW5WMFpWWmhiSFZsUm05eVFuSnZkM05sY2loMllXeDFaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hFVDAxUWNtOXdaWEowZVM1cGMwTjFjM1J2YlVGMGRISnBZblYwWlNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNjbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1aGJXVWdLeUFuUFNjZ0t5QnhkVzkwWlVGMGRISnBZblYwWlZaaGJIVmxSbTl5UW5KdmQzTmxjaWgyWVd4MVpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IzWVhKdVZXNXJibTkzYmxCeWIzQmxjblI1S0c1aGJXVXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJ0WVhKcmRYQWdabTl5SUdFZ1kzVnpkRzl0SUhCeWIzQmxjblI1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2V5cDlJSFpoYkhWbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnVFdGeWEzVndJSE4wY21sdVp5d2diM0lnWlcxd2RIa2djM1J5YVc1bklHbG1JSFJvWlNCd2NtOXdaWEowZVNCM1lYTWdhVzUyWVd4cFpDNWNiaUFnSUNvdlhHNGdJR055WldGMFpVMWhjbXQxY0VadmNrTjFjM1J2YlVGMGRISnBZblYwWlRvZ1puVnVZM1JwYjI0Z0tHNWhiV1VzSUhaaGJIVmxLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwRjBkSEpwWW5WMFpVNWhiV1ZUWVdabEtHNWhiV1VwSUh4OElIWmhiSFZsSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFuSnp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWhiV1VnS3lBblBTY2dLeUJ4ZFc5MFpVRjBkSEpwWW5WMFpWWmhiSFZsUm05eVFuSnZkM05sY2loMllXeDFaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkSE1nZEdobElIWmhiSFZsSUdadmNpQmhJSEJ5YjNCbGNuUjVJRzl1SUdFZ2JtOWtaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZiR1Z0Wlc1MGZTQnViMlJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnVZVzFsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdLbjBnZG1Gc2RXVmNiaUFnSUNvdlhHNGdJSE5sZEZaaGJIVmxSbTl5VUhKdmNHVnlkSGs2SUdaMWJtTjBhVzl1SUNodWIyUmxMQ0J1WVcxbExDQjJZV3gxWlNrZ2UxeHVJQ0FnSUhaaGNpQndjbTl3WlhKMGVVbHVabThnUFNCRVQwMVFjbTl3WlhKMGVTNXdjbTl3WlhKMGFXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwSUQ4Z1JFOU5VSEp2Y0dWeWRIa3VjSEp2Y0dWeWRHbGxjMXR1WVcxbFhTQTZJRzUxYkd3N1hHNGdJQ0FnYVdZZ0tIQnliM0JsY25SNVNXNW1ieWtnZTF4dUlDQWdJQ0FnZG1GeUlHMTFkR0YwYVc5dVRXVjBhRzlrSUQwZ2NISnZjR1Z5ZEhsSmJtWnZMbTExZEdGMGFXOXVUV1YwYUc5a08xeHVJQ0FnSUNBZ2FXWWdLRzExZEdGMGFXOXVUV1YwYUc5a0tTQjdYRzRnSUNBZ0lDQWdJRzExZEdGMGFXOXVUV1YwYUc5a0tHNXZaR1VzSUhaaGJIVmxLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvYzJodmRXeGtTV2R1YjNKbFZtRnNkV1VvY0hKdmNHVnlkSGxKYm1adkxDQjJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1a1pXeGxkR1ZXWVd4MVpVWnZjbEJ5YjNCbGNuUjVLRzV2WkdVc0lHNWhiV1VwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNod2NtOXdaWEowZVVsdVptOHViWFZ6ZEZWelpVRjBkSEpwWW5WMFpTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1lYUjBjbWxpZFhSbFRtRnRaU0E5SUhCeWIzQmxjblI1U1c1bWJ5NWhkSFJ5YVdKMWRHVk9ZVzFsTzF4dUlDQWdJQ0FnSUNCMllYSWdibUZ0WlhOd1lXTmxJRDBnY0hKdmNHVnlkSGxKYm1adkxtRjBkSEpwWW5WMFpVNWhiV1Z6Y0dGalpUdGNiaUFnSUNBZ0lDQWdMeThnWUhObGRFRjBkSEpwWW5WMFpXQWdkMmwwYUNCdlltcGxZM1J6SUdKbFkyOXRaWE1nYjI1c2VTQmdXMjlpYW1WamRGMWdJR2x1SUVsRk9DODVMRnh1SUNBZ0lDQWdJQ0F2THlBb0p5Y2dLeUIyWVd4MVpTa2diV0ZyWlhNZ2FYUWdiM1YwY0hWMElIUm9aU0JqYjNKeVpXTjBJSFJ2VTNSeWFXNW5LQ2t0ZG1Gc2RXVXVYRzRnSUNBZ0lDQWdJR2xtSUNodVlXMWxjM0JoWTJVcElIdGNiaUFnSUNBZ0lDQWdJQ0J1YjJSbExuTmxkRUYwZEhKcFluVjBaVTVUS0c1aGJXVnpjR0ZqWlN3Z1lYUjBjbWxpZFhSbFRtRnRaU3dnSnljZ0t5QjJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jSEp2Y0dWeWRIbEpibVp2TG1oaGMwSnZiMnhsWVc1V1lXeDFaU0I4ZkNCd2NtOXdaWEowZVVsdVptOHVhR0Z6VDNabGNteHZZV1JsWkVKdmIyeGxZVzVXWVd4MVpTQW1KaUIyWVd4MVpTQTlQVDBnZEhKMVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUc1dlpHVXVjMlYwUVhSMGNtbGlkWFJsS0dGMGRISnBZblYwWlU1aGJXVXNJQ2NuS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsTG5ObGRFRjBkSEpwWW5WMFpTaGhkSFJ5YVdKMWRHVk9ZVzFsTENBbkp5QXJJSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhCeWIzQk9ZVzFsSUQwZ2NISnZjR1Z5ZEhsSmJtWnZMbkJ5YjNCbGNuUjVUbUZ0WlR0Y2JpQWdJQ0FnSUNBZ0x5OGdUWFZ6ZENCbGVIQnNhV05wZEd4NUlHTmhjM1FnZG1Gc2RXVnpJR1p2Y2lCSVFWTmZVMGxFUlY5RlJrWkZRMVJUTFhCeWIzQmxjblJwWlhNZ2RHOGdkR2hsWEc0Z0lDQWdJQ0FnSUM4dklIQnliM0JsY25SNUlIUjVjR1VnWW1WbWIzSmxJR052YlhCaGNtbHVaenNnYjI1c2VTQmdkbUZzZFdWZ0lHUnZaWE1nWVc1a0lHbHpJSE4wY21sdVp5NWNiaUFnSUNBZ0lDQWdhV1lnS0NGd2NtOXdaWEowZVVsdVptOHVhR0Z6VTJsa1pVVm1abVZqZEhNZ2ZId2dKeWNnS3lCdWIyUmxXM0J5YjNCT1lXMWxYU0FoUFQwZ0p5Y2dLeUIyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFTnZiblJ5WVhKNUlIUnZJR0J6WlhSQmRIUnlhV0oxZEdWZ0xDQnZZbXBsWTNRZ2NISnZjR1Z5ZEdsbGN5QmhjbVVnY0hKdmNHVnliSGxjYmlBZ0lDQWdJQ0FnSUNBdkx5QmdkRzlUZEhKcGJtZGdaV1FnWW5rZ1NVVTRMemt1WEc0Z0lDQWdJQ0FnSUNBZ2JtOWtaVnR3Y205d1RtRnRaVjBnUFNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvUkU5TlVISnZjR1Z5ZEhrdWFYTkRkWE4wYjIxQmRIUnlhV0oxZEdVb2JtRnRaU2twSUh0Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NXpaWFJXWVd4MVpVWnZja0YwZEhKcFluVjBaU2h1YjJSbExDQnVZVzFsTENCMllXeDFaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCM1lYSnVWVzVyYm05M2JsQnliM0JsY25SNUtHNWhiV1VwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCelpYUldZV3gxWlVadmNrRjBkSEpwWW5WMFpUb2dablZ1WTNScGIyNGdLRzV2WkdVc0lHNWhiV1VzSUhaaGJIVmxLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwRjBkSEpwWW5WMFpVNWhiV1ZUWVdabEtHNWhiV1VwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gyWVd4MVpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnViMlJsTG5KbGJXOTJaVUYwZEhKcFluVjBaU2h1WVcxbEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYm05a1pTNXpaWFJCZEhSeWFXSjFkR1VvYm1GdFpTd2dKeWNnS3lCMllXeDFaU2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpXeGxkR1Z6SUhSb1pTQjJZV3gxWlNCbWIzSWdZU0J3Y205d1pYSjBlU0J2YmlCaElHNXZaR1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdibTlrWlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibUZ0WlZ4dUlDQWdLaTljYmlBZ1pHVnNaWFJsVm1Gc2RXVkdiM0pRY205d1pYSjBlVG9nWm5WdVkzUnBiMjRnS0c1dlpHVXNJRzVoYldVcElIdGNiaUFnSUNCMllYSWdjSEp2Y0dWeWRIbEpibVp2SUQwZ1JFOU5VSEp2Y0dWeWRIa3VjSEp2Y0dWeWRHbGxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NBL0lFUlBUVkJ5YjNCbGNuUjVMbkJ5YjNCbGNuUnBaWE5iYm1GdFpWMGdPaUJ1ZFd4c08xeHVJQ0FnSUdsbUlDaHdjbTl3WlhKMGVVbHVabThwSUh0Y2JpQWdJQ0FnSUhaaGNpQnRkWFJoZEdsdmJrMWxkR2h2WkNBOUlIQnliM0JsY25SNVNXNW1ieTV0ZFhSaGRHbHZiazFsZEdodlpEdGNiaUFnSUNBZ0lHbG1JQ2h0ZFhSaGRHbHZiazFsZEdodlpDa2dlMXh1SUNBZ0lDQWdJQ0J0ZFhSaGRHbHZiazFsZEdodlpDaHViMlJsTENCMWJtUmxabWx1WldRcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHdjbTl3WlhKMGVVbHVabTh1YlhWemRGVnpaVUYwZEhKcFluVjBaU2tnZTF4dUlDQWdJQ0FnSUNCdWIyUmxMbkpsYlc5MlpVRjBkSEpwWW5WMFpTaHdjbTl3WlhKMGVVbHVabTh1WVhSMGNtbGlkWFJsVG1GdFpTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY0hKdmNFNWhiV1VnUFNCd2NtOXdaWEowZVVsdVptOHVjSEp2Y0dWeWRIbE9ZVzFsTzF4dUlDQWdJQ0FnSUNCMllYSWdaR1ZtWVhWc2RGWmhiSFZsSUQwZ1JFOU5VSEp2Y0dWeWRIa3VaMlYwUkdWbVlYVnNkRlpoYkhWbFJtOXlVSEp2Y0dWeWRIa29ibTlrWlM1dWIyUmxUbUZ0WlN3Z2NISnZjRTVoYldVcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVhCeWIzQmxjblI1U1c1bWJ5NW9ZWE5UYVdSbFJXWm1aV04wY3lCOGZDQW5KeUFySUc1dlpHVmJjSEp2Y0U1aGJXVmRJQ0U5UFNCa1pXWmhkV3gwVm1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdWIyUmxXM0J5YjNCT1lXMWxYU0E5SUdSbFptRjFiSFJXWVd4MVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9SRTlOVUhKdmNHVnlkSGt1YVhORGRYTjBiMjFCZEhSeWFXSjFkR1VvYm1GdFpTa3BJSHRjYmlBZ0lDQWdJRzV2WkdVdWNtVnRiM1psUVhSMGNtbGlkWFJsS0c1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZDJGeWJsVnVhMjV2ZDI1UWNtOXdaWEowZVNodVlXMWxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVmVHRjYmx4dVVtVmhZM1JRWlhKbUxtMWxZWE4xY21WTlpYUm9iMlJ6S0VSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5d2dKMFJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3ljc0lIdGNiaUFnYzJWMFZtRnNkV1ZHYjNKUWNtOXdaWEowZVRvZ0ozTmxkRlpoYkhWbFJtOXlVSEp2Y0dWeWRIa25MRnh1SUNCelpYUldZV3gxWlVadmNrRjBkSEpwWW5WMFpUb2dKM05sZEZaaGJIVmxSbTl5UVhSMGNtbGlkWFJsSnl4Y2JpQWdaR1ZzWlhSbFZtRnNkV1ZHYjNKUWNtOXdaWEowZVRvZ0oyUmxiR1YwWlZaaGJIVmxSbTl5VUhKdmNHVnlkSGtuWEc1OUtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERhbmdlclxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSByZXF1aXJlKCdmYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAnKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGdldE1hcmt1cFdyYXAgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRNYXJrdXBXcmFwJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBPUEVOX1RBR19OQU1FX0VYUCA9IC9eKDxbXiBcXC8+XSspLztcbnZhciBSRVNVTFRfSU5ERVhfQVRUUiA9ICdkYXRhLWRhbmdlci1pbmRleCc7XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGBub2RlTmFtZWAgZnJvbSBhIHN0cmluZyBvZiBtYXJrdXAuXG4gKlxuICogTk9URTogRXh0cmFjdGluZyB0aGUgYG5vZGVOYW1lYCBkb2VzIG5vdCByZXF1aXJlIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoXG4gKiBiZWNhdXNlIHdlIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgUmVhY3QtZ2VuZXJhdGVkIG1hcmt1cCAoaS5lLiB0aGVyZSBhcmUgbm9cbiAqIHNwYWNlcyBzdXJyb3VuZGluZyB0aGUgb3BlbmluZyB0YWcgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGUpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAqIEByZXR1cm4ge3N0cmluZ30gTm9kZSBuYW1lIG9mIHRoZSBzdXBwbGllZCBtYXJrdXAuXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2V4dHJhY3Qtbm9kZW5hbWVcbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7XG4gIHJldHVybiBtYXJrdXAuc3Vic3RyaW5nKDEsIG1hcmt1cC5pbmRleE9mKCcgJykpO1xufVxuXG52YXIgRGFuZ2VyID0ge1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIG1hcmt1cCBpbnRvIGFuIGFycmF5IG9mIG5vZGVzLiBUaGUgbWFya3VwIGlzIGV4cGVjdGVkIHRvIHJlbmRlclxuICAgKiBpbnRvIGEgbGlzdCBvZiByb290IG5vZGVzLiBBbHNvLCB0aGUgbGVuZ3RoIG9mIGByZXN1bHRMaXN0YCBhbmRcbiAgICogYG1hcmt1cExpc3RgIHNob3VsZCBiZSB0aGUgc2FtZS5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxzdHJpbmc+fSBtYXJrdXBMaXN0IExpc3Qgb2YgbWFya3VwIHN0cmluZ3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50Pn0gTGlzdCBvZiByZW5kZXJlZCBub2Rlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlbmRlck1hcmt1cDogZnVuY3Rpb24gKG1hcmt1cExpc3QpIHtcbiAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVuZGVyTWFya3VwKC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgd29ya2VyICcgKyAndGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxseSAnICsgJ2JlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0IHRlc3Rpbmcgb3IgdXNlICcgKyAnUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciBub2RlTmFtZTtcbiAgICB2YXIgbWFya3VwQnlOb2RlTmFtZSA9IHt9O1xuICAgIC8vIEdyb3VwIG1hcmt1cCBieSBgbm9kZU5hbWVgIGlmIGEgd3JhcCBpcyBuZWNlc3NhcnksIGVsc2UgYnkgJyonLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3VwTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgIW1hcmt1cExpc3RbaV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZW5kZXJNYXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXBMaXN0W2ldKTtcbiAgICAgIG5vZGVOYW1lID0gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkgPyBub2RlTmFtZSA6ICcqJztcbiAgICAgIG1hcmt1cEJ5Tm9kZU5hbWVbbm9kZU5hbWVdID0gbWFya3VwQnlOb2RlTmFtZVtub2RlTmFtZV0gfHwgW107XG4gICAgICBtYXJrdXBCeU5vZGVOYW1lW25vZGVOYW1lXVtpXSA9IG1hcmt1cExpc3RbaV07XG4gICAgfVxuICAgIHZhciByZXN1bHRMaXN0ID0gW107XG4gICAgdmFyIHJlc3VsdExpc3RBc3NpZ25tZW50Q291bnQgPSAwO1xuICAgIGZvciAobm9kZU5hbWUgaW4gbWFya3VwQnlOb2RlTmFtZSkge1xuICAgICAgaWYgKCFtYXJrdXBCeU5vZGVOYW1lLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXJrdXBMaXN0QnlOb2RlTmFtZSA9IG1hcmt1cEJ5Tm9kZU5hbWVbbm9kZU5hbWVdO1xuXG4gICAgICAvLyBUaGlzIGZvci1pbiBsb29wIHNraXBzIHRoZSBob2xlcyBvZiB0aGUgc3BhcnNlIGFycmF5LiBUaGUgb3JkZXIgb2ZcbiAgICAgIC8vIGl0ZXJhdGlvbiBzaG91bGQgZm9sbG93IHRoZSBvcmRlciBvZiBhc3NpZ25tZW50LCB3aGljaCBoYXBwZW5zIHRvIG1hdGNoXG4gICAgICAvLyBudW1lcmljYWwgaW5kZXggb3JkZXIsIGJ1dCB3ZSBkb24ndCByZWx5IG9uIHRoYXQuXG4gICAgICB2YXIgcmVzdWx0SW5kZXg7XG4gICAgICBmb3IgKHJlc3VsdEluZGV4IGluIG1hcmt1cExpc3RCeU5vZGVOYW1lKSB7XG4gICAgICAgIGlmIChtYXJrdXBMaXN0QnlOb2RlTmFtZS5oYXNPd25Qcm9wZXJ0eShyZXN1bHRJbmRleCkpIHtcbiAgICAgICAgICB2YXIgbWFya3VwID0gbWFya3VwTGlzdEJ5Tm9kZU5hbWVbcmVzdWx0SW5kZXhdO1xuXG4gICAgICAgICAgLy8gUHVzaCB0aGUgcmVxdWVzdGVkIG1hcmt1cCB3aXRoIGFuIGFkZGl0aW9uYWwgUkVTVUxUX0lOREVYX0FUVFJcbiAgICAgICAgICAvLyBhdHRyaWJ1dGUuICBJZiB0aGUgbWFya3VwIGRvZXMgbm90IHN0YXJ0IHdpdGggYSA8IGNoYXJhY3RlciwgaXRcbiAgICAgICAgICAvLyB3aWxsIGJlIGRpc2NhcmRlZCBiZWxvdyAod2l0aCBhbiBhcHByb3ByaWF0ZSBjb25zb2xlLmVycm9yKS5cbiAgICAgICAgICBtYXJrdXBMaXN0QnlOb2RlTmFtZVtyZXN1bHRJbmRleF0gPSBtYXJrdXAucmVwbGFjZShPUEVOX1RBR19OQU1FX0VYUCxcbiAgICAgICAgICAvLyBUaGlzIGluZGV4IHdpbGwgYmUgcGFyc2VkIGJhY2sgb3V0IGJlbG93LlxuICAgICAgICAgICckMSAnICsgUkVTVUxUX0lOREVYX0FUVFIgKyAnPVwiJyArIHJlc3VsdEluZGV4ICsgJ1wiICcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbmRlciBlYWNoIGdyb3VwIG9mIG1hcmt1cCB3aXRoIHNpbWlsYXIgd3JhcHBpbmcgYG5vZGVOYW1lYC5cbiAgICAgIHZhciByZW5kZXJOb2RlcyA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXBMaXN0QnlOb2RlTmFtZS5qb2luKCcnKSwgZW1wdHlGdW5jdGlvbiAvLyBEbyBub3RoaW5nIHNwZWNpYWwgd2l0aCA8c2NyaXB0PiB0YWdzLlxuICAgICAgKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByZW5kZXJOb2Rlcy5sZW5ndGg7ICsraikge1xuICAgICAgICB2YXIgcmVuZGVyTm9kZSA9IHJlbmRlck5vZGVzW2pdO1xuICAgICAgICBpZiAocmVuZGVyTm9kZS5oYXNBdHRyaWJ1dGUgJiYgcmVuZGVyTm9kZS5oYXNBdHRyaWJ1dGUoUkVTVUxUX0lOREVYX0FUVFIpKSB7XG5cbiAgICAgICAgICByZXN1bHRJbmRleCA9ICtyZW5kZXJOb2RlLmdldEF0dHJpYnV0ZShSRVNVTFRfSU5ERVhfQVRUUik7XG4gICAgICAgICAgcmVuZGVyTm9kZS5yZW1vdmVBdHRyaWJ1dGUoUkVTVUxUX0lOREVYX0FUVFIpO1xuXG4gICAgICAgICAgISFyZXN1bHRMaXN0Lmhhc093blByb3BlcnR5KHJlc3VsdEluZGV4KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdEYW5nZXI6IEFzc2lnbmluZyB0byBhbiBhbHJlYWR5LW9jY3VwaWVkIHJlc3VsdCBpbmRleC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICByZXN1bHRMaXN0W3Jlc3VsdEluZGV4XSA9IHJlbmRlck5vZGU7XG5cbiAgICAgICAgICAvLyBUaGlzIHNob3VsZCBtYXRjaCByZXN1bHRMaXN0Lmxlbmd0aCBhbmQgbWFya3VwTGlzdC5sZW5ndGggd2hlblxuICAgICAgICAgIC8vIHdlJ3JlIGRvbmUuXG4gICAgICAgICAgcmVzdWx0TGlzdEFzc2lnbm1lbnRDb3VudCArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdEYW5nZXI6IERpc2NhcmRpbmcgdW5leHBlY3RlZCBub2RlOicsIHJlbmRlck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWx0aG91Z2ggcmVzdWx0TGlzdCB3YXMgcG9wdWxhdGVkIG91dCBvZiBvcmRlciwgaXQgc2hvdWxkIG5vdyBiZSBhIGRlbnNlXG4gICAgLy8gYXJyYXkuXG4gICAgIShyZXN1bHRMaXN0QXNzaWdubWVudENvdW50ID09PSByZXN1bHRMaXN0Lmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRGFuZ2VyOiBEaWQgbm90IGFzc2lnbiB0byBldmVyeSBpbmRleCBvZiByZXN1bHRMaXN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICEocmVzdWx0TGlzdC5sZW5ndGggPT09IG1hcmt1cExpc3QubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdEYW5nZXI6IEV4cGVjdGVkIG1hcmt1cCB0byByZW5kZXIgJXMgbm9kZXMsIGJ1dCByZW5kZXJlZCAlcy4nLCBtYXJrdXBMaXN0Lmxlbmd0aCwgcmVzdWx0TGlzdC5sZW5ndGgpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiByZXN1bHRMaXN0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIG5vZGUgd2l0aCBhIHN0cmluZyBvZiBtYXJrdXAgYXQgaXRzIGN1cnJlbnQgcG9zaXRpb24gd2l0aGluIGl0c1xuICAgKiBwYXJlbnQuIFRoZSBtYXJrdXAgbXVzdCByZW5kZXIgaW50byBhIHNpbmdsZSByb290IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gb2xkQ2hpbGQgQ2hpbGQgbm9kZSB0byByZXBsYWNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0byByZW5kZXIgaW4gcGxhY2Ugb2YgdGhlIGNoaWxkIG5vZGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwKSB7XG4gICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVuZGVyIG1hcmt1cCBpbiBhICcgKyAnd29ya2VyIHRocmVhZC4gTWFrZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9jdW1lbnRgIGFyZSBhdmFpbGFibGUgJyArICdnbG9iYWxseSBiZWZvcmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSAnICsgJ1JlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICFtYXJrdXAgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEob2xkQ2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnaHRtbCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgJyArICc8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVpcmtzIG1ha2UgdGhpcyB1bnJlbGlhYmxlICcgKyAnYW5kL29yIHNsb3cuIElmIHlvdSB3YW50IHRvIHJlbmRlciB0byB0aGUgcm9vdCB5b3UgbXVzdCB1c2UgJyArICdzZXJ2ZXIgcmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgbmV3Q2hpbGQ7XG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICBuZXdDaGlsZCA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDaGlsZCA9IG1hcmt1cDtcbiAgICB9XG4gICAgb2xkQ2hpbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKTtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhbmdlcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOUVZVzVuWlhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnUkdGdVoyVnlYRzRnS2lCQWRIbHdaV05vWldOcmN5QnpkR0YwYVdNdGIyNXNlVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUVWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZSWGhsWTNWMGFXOXVSVzUyYVhKdmJtMWxiblFuS1R0Y2JseHVkbUZ5SUdOeVpXRjBaVTV2WkdWelJuSnZiVTFoY210MWNDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMk55WldGMFpVNXZaR1Z6Um5KdmJVMWhjbXQxY0NjcE8xeHVkbUZ5SUdWdGNIUjVSblZ1WTNScGIyNGdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlsYlhCMGVVWjFibU4wYVc5dUp5azdYRzUyWVhJZ1oyVjBUV0Z5YTNWd1YzSmhjQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJkbGRFMWhjbXQxY0ZkeVlYQW5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVkbUZ5SUU5UVJVNWZWRUZIWDA1QlRVVmZSVmhRSUQwZ0wxNG9QRnRlSUZ4Y0x6NWRLeWt2TzF4dWRtRnlJRkpGVTFWTVZGOUpUa1JGV0Y5QlZGUlNJRDBnSjJSaGRHRXRaR0Z1WjJWeUxXbHVaR1Y0Snp0Y2JseHVMeW9xWEc0Z0tpQkZlSFJ5WVdOMGN5QjBhR1VnWUc1dlpHVk9ZVzFsWUNCbWNtOXRJR0VnYzNSeWFXNW5JRzltSUcxaGNtdDFjQzVjYmlBcVhHNGdLaUJPVDFSRk9pQkZlSFJ5WVdOMGFXNW5JSFJvWlNCZ2JtOWtaVTVoYldWZ0lHUnZaWE1nYm05MElISmxjWFZwY21VZ1lTQnlaV2QxYkdGeUlHVjRjSEpsYzNOcGIyNGdiV0YwWTJoY2JpQXFJR0psWTJGMWMyVWdkMlVnYldGclpTQmhjM04xYlhCMGFXOXVjeUJoWW05MWRDQlNaV0ZqZEMxblpXNWxjbUYwWldRZ2JXRnlhM1Z3SUNocExtVXVJSFJvWlhKbElHRnlaU0J1YjF4dUlDb2djM0JoWTJWeklITjFjbkp2ZFc1a2FXNW5JSFJvWlNCdmNHVnVhVzVuSUhSaFp5QmhibVFnZEdobGNtVWdhWE1nWVhRZ2JHVmhjM1FnYjI1bElHRjBkSEpwWW5WMFpTa3VYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMWhjbXQxY0NCVGRISnBibWNnYjJZZ2JXRnlhM1Z3TGx4dUlDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQk9iMlJsSUc1aGJXVWdiMllnZEdobElITjFjSEJzYVdWa0lHMWhjbXQxY0M1Y2JpQXFJRUJ6WldVZ2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdlpYaDBjbUZqZEMxdWIyUmxibUZ0WlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhST2IyUmxUbUZ0WlNodFlYSnJkWEFwSUh0Y2JpQWdjbVYwZFhKdUlHMWhjbXQxY0M1emRXSnpkSEpwYm1jb01Td2diV0Z5YTNWd0xtbHVaR1Y0VDJZb0p5QW5LU2s3WEc1OVhHNWNiblpoY2lCRVlXNW5aWElnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGJtUmxjbk1nYldGeWEzVndJR2x1ZEc4Z1lXNGdZWEp5WVhrZ2IyWWdibTlrWlhNdUlGUm9aU0J0WVhKcmRYQWdhWE1nWlhod1pXTjBaV1FnZEc4Z2NtVnVaR1Z5WEc0Z0lDQXFJR2x1ZEc4Z1lTQnNhWE4wSUc5bUlISnZiM1FnYm05a1pYTXVJRUZzYzI4c0lIUm9aU0JzWlc1bmRHZ2diMllnWUhKbGMzVnNkRXhwYzNSZ0lHRnVaRnh1SUNBZ0tpQmdiV0Z5YTNWd1RHbHpkR0FnYzJodmRXeGtJR0psSUhSb1pTQnpZVzFsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyRnljbUY1UEhOMGNtbHVaejU5SUcxaGNtdDFjRXhwYzNRZ1RHbHpkQ0J2WmlCdFlYSnJkWEFnYzNSeWFXNW5jeUIwYnlCeVpXNWtaWEl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkZ5Y21GNVBFUlBUVVZzWlcxbGJuUStmU0JNYVhOMElHOW1JSEpsYm1SbGNtVmtJRzV2WkdWekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHUmhibWRsY205MWMyeDVVbVZ1WkdWeVRXRnlhM1Z3T2lCbWRXNWpkR2x2YmlBb2JXRnlhM1Z3VEdsemRDa2dlMXh1SUNBZ0lDRkZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQzVqWVc1VmMyVkVUMDBnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5aR0Z1WjJWeWIzVnpiSGxTWlc1a1pYSk5ZWEpyZFhBb0xpNHVLVG9nUTJGdWJtOTBJSEpsYm1SbGNpQnRZWEpyZFhBZ2FXNGdZU0IzYjNKclpYSWdKeUFySUNkMGFISmxZV1F1SUUxaGEyVWdjM1Z5WlNCZ2QybHVaRzkzWUNCaGJtUWdZR1J2WTNWdFpXNTBZQ0JoY21VZ1lYWmhhV3hoWW14bElHZHNiMkpoYkd4NUlDY2dLeUFuWW1WbWIzSmxJSEpsY1hWcGNtbHVaeUJTWldGamRDQjNhR1Z1SUhWdWFYUWdkR1Z6ZEdsdVp5QnZjaUIxYzJVZ0p5QXJJQ2RTWldGamRFUlBUVk5sY25abGNpNXlaVzVrWlhKVWIxTjBjbWx1WnlCbWIzSWdjMlZ5ZG1WeUlISmxibVJsY21sdVp5NG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZG1GeUlHNXZaR1ZPWVcxbE8xeHVJQ0FnSUhaaGNpQnRZWEpyZFhCQ2VVNXZaR1ZPWVcxbElEMGdlMzA3WEc0Z0lDQWdMeThnUjNKdmRYQWdiV0Z5YTNWd0lHSjVJR0J1YjJSbFRtRnRaV0FnYVdZZ1lTQjNjbUZ3SUdseklHNWxZMlZ6YzJGeWVTd2daV3h6WlNCaWVTQW5LaWN1WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J0WVhKcmRYQk1hWE4wTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWhiV0Z5YTNWd1RHbHpkRnRwWFNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RrWVc1blpYSnZkWE5zZVZKbGJtUmxjazFoY210MWNDZ3VMaTRwT2lCTmFYTnphVzVuSUcxaGNtdDFjQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQnViMlJsVG1GdFpTQTlJR2RsZEU1dlpHVk9ZVzFsS0cxaGNtdDFjRXhwYzNSYmFWMHBPMXh1SUNBZ0lDQWdibTlrWlU1aGJXVWdQU0JuWlhSTllYSnJkWEJYY21Gd0tHNXZaR1ZPWVcxbEtTQS9JRzV2WkdWT1lXMWxJRG9nSnlvbk8xeHVJQ0FnSUNBZ2JXRnlhM1Z3UW5sT2IyUmxUbUZ0WlZ0dWIyUmxUbUZ0WlYwZ1BTQnRZWEpyZFhCQ2VVNXZaR1ZPWVcxbFcyNXZaR1ZPWVcxbFhTQjhmQ0JiWFR0Y2JpQWdJQ0FnSUcxaGNtdDFjRUo1VG05a1pVNWhiV1ZiYm05a1pVNWhiV1ZkVzJsZElEMGdiV0Z5YTNWd1RHbHpkRnRwWFR0Y2JpQWdJQ0I5WEc0Z0lDQWdkbUZ5SUhKbGMzVnNkRXhwYzNRZ1BTQmJYVHRjYmlBZ0lDQjJZWElnY21WemRXeDBUR2x6ZEVGemMybG5ibTFsYm5SRGIzVnVkQ0E5SURBN1hHNGdJQ0FnWm05eUlDaHViMlJsVG1GdFpTQnBiaUJ0WVhKcmRYQkNlVTV2WkdWT1lXMWxLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lXMWhjbXQxY0VKNVRtOWtaVTVoYldVdWFHRnpUM2R1VUhKdmNHVnlkSGtvYm05a1pVNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RtRnlJRzFoY210MWNFeHBjM1JDZVU1dlpHVk9ZVzFsSUQwZ2JXRnlhM1Z3UW5sT2IyUmxUbUZ0WlZ0dWIyUmxUbUZ0WlYwN1hHNWNiaUFnSUNBZ0lDOHZJRlJvYVhNZ1ptOXlMV2x1SUd4dmIzQWdjMnRwY0hNZ2RHaGxJR2h2YkdWeklHOW1JSFJvWlNCemNHRnljMlVnWVhKeVlYa3VJRlJvWlNCdmNtUmxjaUJ2Wmx4dUlDQWdJQ0FnTHk4Z2FYUmxjbUYwYVc5dUlITm9iM1ZzWkNCbWIyeHNiM2NnZEdobElHOXlaR1Z5SUc5bUlHRnpjMmxuYm0xbGJuUXNJSGRvYVdOb0lHaGhjSEJsYm5NZ2RHOGdiV0YwWTJoY2JpQWdJQ0FnSUM4dklHNTFiV1Z5YVdOaGJDQnBibVJsZUNCdmNtUmxjaXdnWW5WMElIZGxJR1J2YmlkMElISmxiSGtnYjI0Z2RHaGhkQzVjYmlBZ0lDQWdJSFpoY2lCeVpYTjFiSFJKYm1SbGVEdGNiaUFnSUNBZ0lHWnZjaUFvY21WemRXeDBTVzVrWlhnZ2FXNGdiV0Z5YTNWd1RHbHpkRUo1VG05a1pVNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzFoY210MWNFeHBjM1JDZVU1dlpHVk9ZVzFsTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEpsYzNWc2RFbHVaR1Y0S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCdFlYSnJkWEFnUFNCdFlYSnJkWEJNYVhOMFFubE9iMlJsVG1GdFpWdHlaWE4xYkhSSmJtUmxlRjA3WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJRZFhOb0lIUm9aU0J5WlhGMVpYTjBaV1FnYldGeWEzVndJSGRwZEdnZ1lXNGdZV1JrYVhScGIyNWhiQ0JTUlZOVlRGUmZTVTVFUlZoZlFWUlVVbHh1SUNBZ0lDQWdJQ0FnSUM4dklHRjBkSEpwWW5WMFpTNGdJRWxtSUhSb1pTQnRZWEpyZFhBZ1pHOWxjeUJ1YjNRZ2MzUmhjblFnZDJsMGFDQmhJRHdnWTJoaGNtRmpkR1Z5TENCcGRGeHVJQ0FnSUNBZ0lDQWdJQzh2SUhkcGJHd2dZbVVnWkdselkyRnlaR1ZrSUdKbGJHOTNJQ2gzYVhSb0lHRnVJR0Z3Y0hKdmNISnBZWFJsSUdOdmJuTnZiR1V1WlhKeWIzSXBMbHh1SUNBZ0lDQWdJQ0FnSUcxaGNtdDFjRXhwYzNSQ2VVNXZaR1ZPWVcxbFczSmxjM1ZzZEVsdVpHVjRYU0E5SUcxaGNtdDFjQzV5WlhCc1lXTmxLRTlRUlU1ZlZFRkhYMDVCVFVWZlJWaFFMRnh1SUNBZ0lDQWdJQ0FnSUM4dklGUm9hWE1nYVc1a1pYZ2dkMmxzYkNCaVpTQndZWEp6WldRZ1ltRmpheUJ2ZFhRZ1ltVnNiM2N1WEc0Z0lDQWdJQ0FnSUNBZ0p5UXhJQ2NnS3lCU1JWTlZURlJmU1U1RVJWaGZRVlJVVWlBcklDYzlYQ0luSUNzZ2NtVnpkV3gwU1c1a1pYZ2dLeUFuWENJZ0p5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z1VtVnVaR1Z5SUdWaFkyZ2daM0p2ZFhBZ2IyWWdiV0Z5YTNWd0lIZHBkR2dnYzJsdGFXeGhjaUIzY21Gd2NHbHVaeUJnYm05a1pVNWhiV1ZnTGx4dUlDQWdJQ0FnZG1GeUlISmxibVJsY2s1dlpHVnpJRDBnWTNKbFlYUmxUbTlrWlhOR2NtOXRUV0Z5YTNWd0tHMWhjbXQxY0V4cGMzUkNlVTV2WkdWT1lXMWxMbXB2YVc0b0p5Y3BMQ0JsYlhCMGVVWjFibU4wYVc5dUlDOHZJRVJ2SUc1dmRHaHBibWNnYzNCbFkybGhiQ0IzYVhSb0lEeHpZM0pwY0hRK0lIUmhaM011WEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCcUlEMGdNRHNnYWlBOElISmxibVJsY2s1dlpHVnpMbXhsYm1kMGFEc2dLeXRxS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ5Wlc1a1pYSk9iMlJsSUQwZ2NtVnVaR1Z5VG05a1pYTmJhbDA3WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaVzVrWlhKT2IyUmxMbWhoYzBGMGRISnBZblYwWlNBbUppQnlaVzVrWlhKT2IyUmxMbWhoYzBGMGRISnBZblYwWlNoU1JWTlZURlJmU1U1RVJWaGZRVlJVVWlrcElIdGNibHh1SUNBZ0lDQWdJQ0FnSUhKbGMzVnNkRWx1WkdWNElEMGdLM0psYm1SbGNrNXZaR1V1WjJWMFFYUjBjbWxpZFhSbEtGSkZVMVZNVkY5SlRrUkZXRjlCVkZSU0tUdGNiaUFnSUNBZ0lDQWdJQ0J5Wlc1a1pYSk9iMlJsTG5KbGJXOTJaVUYwZEhKcFluVjBaU2hTUlZOVlRGUmZTVTVFUlZoZlFWUlVVaWs3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWhJWEpsYzNWc2RFeHBjM1F1YUdGelQzZHVVSEp2Y0dWeWRIa29jbVZ6ZFd4MFNXNWtaWGdwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFJoYm1kbGNqb2dRWE56YVdkdWFXNW5JSFJ2SUdGdUlHRnNjbVZoWkhrdGIyTmpkWEJwWldRZ2NtVnpkV3gwSUdsdVpHVjRMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDQWdJQ0FnSUhKbGMzVnNkRXhwYzNSYmNtVnpkV3gwU1c1a1pYaGRJRDBnY21WdVpHVnlUbTlrWlR0Y2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUZSb2FYTWdjMmh2ZFd4a0lHMWhkR05vSUhKbGMzVnNkRXhwYzNRdWJHVnVaM1JvSUdGdVpDQnRZWEpyZFhCTWFYTjBMbXhsYm1kMGFDQjNhR1Z1WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkMlVuY21VZ1pHOXVaUzVjYmlBZ0lDQWdJQ0FnSUNCeVpYTjFiSFJNYVhOMFFYTnphV2R1YldWdWRFTnZkVzUwSUNzOUlERTdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OdmJHVXVaWEp5YjNJb0owUmhibWRsY2pvZ1JHbHpZMkZ5WkdsdVp5QjFibVY0Y0dWamRHVmtJRzV2WkdVNkp5d2djbVZ1WkdWeVRtOWtaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCQmJIUm9iM1ZuYUNCeVpYTjFiSFJNYVhOMElIZGhjeUJ3YjNCMWJHRjBaV1FnYjNWMElHOW1JRzl5WkdWeUxDQnBkQ0J6YUc5MWJHUWdibTkzSUdKbElHRWdaR1Z1YzJWY2JpQWdJQ0F2THlCaGNuSmhlUzVjYmlBZ0lDQWhLSEpsYzNWc2RFeHBjM1JCYzNOcFoyNXRaVzUwUTI5MWJuUWdQVDA5SUhKbGMzVnNkRXhwYzNRdWJHVnVaM1JvS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RFWVc1blpYSTZJRVJwWkNCdWIzUWdZWE56YVdkdUlIUnZJR1YyWlhKNUlHbHVaR1Y0SUc5bUlISmxjM1ZzZEV4cGMzUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0lTaHlaWE4xYkhSTWFYTjBMbXhsYm1kMGFDQTlQVDBnYldGeWEzVndUR2x6ZEM1c1pXNW5kR2dwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFJoYm1kbGNqb2dSWGh3WldOMFpXUWdiV0Z5YTNWd0lIUnZJSEpsYm1SbGNpQWxjeUJ1YjJSbGN5d2dZblYwSUhKbGJtUmxjbVZrSUNWekxpY3NJRzFoY210MWNFeHBjM1F1YkdWdVozUm9MQ0J5WlhOMWJIUk1hWE4wTG14bGJtZDBhQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRXhwYzNRN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsY0d4aFkyVnpJR0VnYm05a1pTQjNhWFJvSUdFZ2MzUnlhVzVuSUc5bUlHMWhjbXQxY0NCaGRDQnBkSE1nWTNWeWNtVnVkQ0J3YjNOcGRHbHZiaUIzYVhSb2FXNGdhWFJ6WEc0Z0lDQXFJSEJoY21WdWRDNGdWR2hsSUcxaGNtdDFjQ0J0ZFhOMElISmxibVJsY2lCcGJuUnZJR0VnYzJsdVoyeGxJSEp2YjNRZ2JtOWtaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZiR1Z0Wlc1MGZTQnZiR1JEYUdsc1pDQkRhR2xzWkNCdWIyUmxJSFJ2SUhKbGNHeGhZMlV1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnRZWEpyZFhBZ1RXRnlhM1Z3SUhSdklISmxibVJsY2lCcGJpQndiR0ZqWlNCdlppQjBhR1VnWTJocGJHUWdibTlrWlM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCa1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRG9nWm5WdVkzUnBiMjRnS0c5c1pFTm9hV3hrTENCdFlYSnJkWEFwSUh0Y2JpQWdJQ0FoUlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RdVkyRnVWWE5sUkU5TklEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJSaGJtZGxjbTkxYzJ4NVVtVndiR0ZqWlU1dlpHVlhhWFJvVFdGeWEzVndLQzR1TGlrNklFTmhibTV2ZENCeVpXNWtaWElnYldGeWEzVndJR2x1SUdFZ0p5QXJJQ2QzYjNKclpYSWdkR2h5WldGa0xpQk5ZV3RsSUhOMWNtVWdZSGRwYm1SdmQyQWdZVzVrSUdCa2IyTjFiV1Z1ZEdBZ1lYSmxJR0YyWVdsc1lXSnNaU0FuSUNzZ0oyZHNiMkpoYkd4NUlHSmxabTl5WlNCeVpYRjFhWEpwYm1jZ1VtVmhZM1FnZDJobGJpQjFibWwwSUhSbGMzUnBibWNnYjNJZ2RYTmxJQ2NnS3lBblVtVmhZM1JFVDAxVFpYSjJaWEl1Y21WdVpHVnlWRzlUZEhKcGJtY29LU0JtYjNJZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1Wnk0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJVzFoY210MWNDQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNka1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjQ2d1TGk0cE9pQk5hWE56YVc1bklHMWhjbXQxY0M0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJU2h2YkdSRGFHbHNaQzUwWVdkT1lXMWxMblJ2VEc5M1pYSkRZWE5sS0NrZ0lUMDlJQ2RvZEcxc0p5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblpHRnVaMlZ5YjNWemJIbFNaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEFvTGk0dUtUb2dRMkZ1Ym05MElISmxjR3hoWTJVZ2JXRnlhM1Z3SUc5bUlIUm9aU0FuSUNzZ0p6eG9kRzFzUGlCdWIyUmxMaUJVYUdseklHbHpJR0psWTJGMWMyVWdZbkp2ZDNObGNpQnhkV2x5YTNNZ2JXRnJaU0IwYUdseklIVnVjbVZzYVdGaWJHVWdKeUFySUNkaGJtUXZiM0lnYzJ4dmR5NGdTV1lnZVc5MUlIZGhiblFnZEc4Z2NtVnVaR1Z5SUhSdklIUm9aU0J5YjI5MElIbHZkU0J0ZFhOMElIVnpaU0FuSUNzZ0ozTmxjblpsY2lCeVpXNWtaWEpwYm1jdUlGTmxaU0JTWldGamRFUlBUVk5sY25abGNpNXlaVzVrWlhKVWIxTjBjbWx1WnlncExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhaaGNpQnVaWGREYUdsc1pEdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHMWhjbXQxY0NBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJRzVsZDBOb2FXeGtJRDBnWTNKbFlYUmxUbTlrWlhOR2NtOXRUV0Z5YTNWd0tHMWhjbXQxY0N3Z1pXMXdkSGxHZFc1amRHbHZiaWxiTUYwN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJRzVsZDBOb2FXeGtJRDBnYldGeWEzVndPMXh1SUNBZ0lIMWNiaUFnSUNCdmJHUkRhR2xzWkM1d1lYSmxiblJPYjJSbExuSmxjR3hoWTJWRGFHbHNaQ2h1WlhkRGFHbHNaQ3dnYjJ4a1EyaHBiR1FwTzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdSR0Z1WjJWeU95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xuXG4vKipcbiAqIE1vZHVsZSB0aGF0IGlzIGluamVjdGFibGUgaW50byBgRXZlbnRQbHVnaW5IdWJgLCB0aGF0IHNwZWNpZmllcyBhXG4gKiBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9mIGBFdmVudFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dFxuICogcGx1Z2lucywgd2l0aG91dCBoYXZpbmcgdG8gcGFja2FnZSBldmVyeSBvbmUgb2YgdGhlbS4gVGhpcyBpcyBiZXR0ZXIgdGhhblxuICogaGF2aW5nIHBsdWdpbnMgYmUgb3JkZXJlZCBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2VcbiAqIHRoYXQgb3JkZXJpbmcgd291bGQgYmUgaW5mbHVlbmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLlxuICogYFJlc3BvbmRlckV2ZW50UGx1Z2luYCBtdXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZlbnRQbHVnaW5gIHNvIHRoYXRcbiAqIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29udmVuaWVudCBpbiBgU2ltcGxlRXZlbnRQbHVnaW5gIGhhbmRsZXJzLlxuICovXG52YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBba2V5T2YoeyBSZXNwb25kZXJFdmVudFBsdWdpbjogbnVsbCB9KSwga2V5T2YoeyBTaW1wbGVFdmVudFBsdWdpbjogbnVsbCB9KSwga2V5T2YoeyBUYXBFdmVudFBsdWdpbjogbnVsbCB9KSwga2V5T2YoeyBFbnRlckxlYXZlRXZlbnRQbHVnaW46IG51bGwgfSksIGtleU9mKHsgQ2hhbmdlRXZlbnRQbHVnaW46IG51bGwgfSksIGtleU9mKHsgU2VsZWN0RXZlbnRQbHVnaW46IG51bGwgfSksIGtleU9mKHsgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogbnVsbCB9KV07XG5cbm1vZHVsZS5leHBvcnRzID0gRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXI7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEVudGVyTGVhdmVFdmVudFBsdWdpblxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpO1xuXG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xudmFyIGdldEZpcnN0UmVhY3RET00gPSBSZWFjdE1vdW50LmdldEZpcnN0UmVhY3RET007XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBtb3VzZUVudGVyOiB7XG4gICAgcmVnaXN0cmF0aW9uTmFtZToga2V5T2YoeyBvbk1vdXNlRW50ZXI6IG51bGwgfSksXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU91dCwgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU92ZXJdXG4gIH0sXG4gIG1vdXNlTGVhdmU6IHtcbiAgICByZWdpc3RyYXRpb25OYW1lOiBrZXlPZih7IG9uTW91c2VMZWF2ZTogbnVsbCB9KSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3V0LCB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3Zlcl1cbiAgfVxufTtcblxudmFyIGV4dHJhY3RlZEV2ZW50cyA9IFtudWxsLCBudWxsXTtcblxudmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9IHtcblxuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIC8qKlxuICAgKiBGb3IgYWxtb3N0IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJvdXQsIHRoZXJlIHdpbGwgYmUgYm90aCBhIHRvcC1sZXZlbFxuICAgKiBgbW91c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBldmVudCB0aGF0IG9jY3Vycy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0XG4gICAqIHdlIGRvIG5vdCBleHRyYWN0IGR1cGxpY2F0ZSBldmVudHMuIEhvd2V2ZXIsIG1vdmluZyB0aGUgbW91c2UgaW50byB0aGVcbiAgICogYnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3QgZmlyZSBhIGBtb3VzZW91dGAgZXZlbnQuIEluIHRoaXMgY2FzZSwgd2UgdXNlXG4gICAqIHRoZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzfVxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wTW91c2VPdmVyICYmIChuYXRpdmVFdmVudC5yZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LmZyb21FbGVtZW50KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0b3BMZXZlbFR5cGUgIT09IHRvcExldmVsVHlwZXMudG9wTW91c2VPdXQgJiYgdG9wTGV2ZWxUeXBlICE9PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3Zlcikge1xuICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBpbiBvciBtb3VzZSBvdXQgLSBpZ25vcmluZy5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciB3aW47XG4gICAgaWYgKHRvcExldmVsVGFyZ2V0LndpbmRvdyA9PT0gdG9wTGV2ZWxUYXJnZXQpIHtcbiAgICAgIC8vIGB0b3BMZXZlbFRhcmdldGAgaXMgcHJvYmFibHkgYSB3aW5kb3cgb2JqZWN0LlxuICAgICAgd2luID0gdG9wTGV2ZWxUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cbiAgICAgIHZhciBkb2MgPSB0b3BMZXZlbFRhcmdldC5vd25lckRvY3VtZW50O1xuICAgICAgaWYgKGRvYykge1xuICAgICAgICB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbiA9IHdpbmRvdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZnJvbTtcbiAgICB2YXIgdG87XG4gICAgdmFyIGZyb21JRCA9ICcnO1xuICAgIHZhciB0b0lEID0gJyc7XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU91dCkge1xuICAgICAgZnJvbSA9IHRvcExldmVsVGFyZ2V0O1xuICAgICAgZnJvbUlEID0gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgICAgIHRvID0gZ2V0Rmlyc3RSZWFjdERPTShuYXRpdmVFdmVudC5yZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnRvRWxlbWVudCk7XG4gICAgICBpZiAodG8pIHtcbiAgICAgICAgdG9JRCA9IFJlYWN0TW91bnQuZ2V0SUQodG8pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG8gPSB3aW47XG4gICAgICB9XG4gICAgICB0byA9IHRvIHx8IHdpbjtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbSA9IHdpbjtcbiAgICAgIHRvID0gdG9wTGV2ZWxUYXJnZXQ7XG4gICAgICB0b0lEID0gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICAgIC8vIE5vdGhpbmcgcGVydGFpbnMgdG8gb3VyIG1hbmFnZWQgY29tcG9uZW50cy5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBsZWF2ZSA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbUlELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIGxlYXZlLnR5cGUgPSAnbW91c2VsZWF2ZSc7XG4gICAgbGVhdmUudGFyZ2V0ID0gZnJvbTtcbiAgICBsZWF2ZS5yZWxhdGVkVGFyZ2V0ID0gdG87XG5cbiAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvSUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgZW50ZXIudHlwZSA9ICdtb3VzZWVudGVyJztcbiAgICBlbnRlci50YXJnZXQgPSB0bztcbiAgICBlbnRlci5yZWxhdGVkVGFyZ2V0ID0gZnJvbTtcblxuICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbUlELCB0b0lEKTtcblxuICAgIGV4dHJhY3RlZEV2ZW50c1swXSA9IGxlYXZlO1xuICAgIGV4dHJhY3RlZEV2ZW50c1sxXSA9IGVudGVyO1xuXG4gICAgcmV0dXJuIGV4dHJhY3RlZEV2ZW50cztcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVudGVyTGVhdmVFdmVudFBsdWdpbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRDb25zdGFudHNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBrZXlNaXJyb3IgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlNaXJyb3InKTtcblxudmFyIFByb3BhZ2F0aW9uUGhhc2VzID0ga2V5TWlycm9yKHsgYnViYmxlZDogbnVsbCwgY2FwdHVyZWQ6IG51bGwgfSk7XG5cbi8qKlxuICogVHlwZXMgb2YgcmF3IHNpZ25hbHMgZnJvbSB0aGUgYnJvd3NlciBjYXVnaHQgYXQgdGhlIHRvcCBsZXZlbC5cbiAqL1xudmFyIHRvcExldmVsVHlwZXMgPSBrZXlNaXJyb3Ioe1xuICB0b3BBYm9ydDogbnVsbCxcbiAgdG9wQmx1cjogbnVsbCxcbiAgdG9wQ2FuUGxheTogbnVsbCxcbiAgdG9wQ2FuUGxheVRocm91Z2g6IG51bGwsXG4gIHRvcENoYW5nZTogbnVsbCxcbiAgdG9wQ2xpY2s6IG51bGwsXG4gIHRvcENvbXBvc2l0aW9uRW5kOiBudWxsLFxuICB0b3BDb21wb3NpdGlvblN0YXJ0OiBudWxsLFxuICB0b3BDb21wb3NpdGlvblVwZGF0ZTogbnVsbCxcbiAgdG9wQ29udGV4dE1lbnU6IG51bGwsXG4gIHRvcENvcHk6IG51bGwsXG4gIHRvcEN1dDogbnVsbCxcbiAgdG9wRG91YmxlQ2xpY2s6IG51bGwsXG4gIHRvcERyYWc6IG51bGwsXG4gIHRvcERyYWdFbmQ6IG51bGwsXG4gIHRvcERyYWdFbnRlcjogbnVsbCxcbiAgdG9wRHJhZ0V4aXQ6IG51bGwsXG4gIHRvcERyYWdMZWF2ZTogbnVsbCxcbiAgdG9wRHJhZ092ZXI6IG51bGwsXG4gIHRvcERyYWdTdGFydDogbnVsbCxcbiAgdG9wRHJvcDogbnVsbCxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6IG51bGwsXG4gIHRvcEVtcHRpZWQ6IG51bGwsXG4gIHRvcEVuY3J5cHRlZDogbnVsbCxcbiAgdG9wRW5kZWQ6IG51bGwsXG4gIHRvcEVycm9yOiBudWxsLFxuICB0b3BGb2N1czogbnVsbCxcbiAgdG9wSW5wdXQ6IG51bGwsXG4gIHRvcEtleURvd246IG51bGwsXG4gIHRvcEtleVByZXNzOiBudWxsLFxuICB0b3BLZXlVcDogbnVsbCxcbiAgdG9wTG9hZDogbnVsbCxcbiAgdG9wTG9hZGVkRGF0YTogbnVsbCxcbiAgdG9wTG9hZGVkTWV0YWRhdGE6IG51bGwsXG4gIHRvcExvYWRTdGFydDogbnVsbCxcbiAgdG9wTW91c2VEb3duOiBudWxsLFxuICB0b3BNb3VzZU1vdmU6IG51bGwsXG4gIHRvcE1vdXNlT3V0OiBudWxsLFxuICB0b3BNb3VzZU92ZXI6IG51bGwsXG4gIHRvcE1vdXNlVXA6IG51bGwsXG4gIHRvcFBhc3RlOiBudWxsLFxuICB0b3BQYXVzZTogbnVsbCxcbiAgdG9wUGxheTogbnVsbCxcbiAgdG9wUGxheWluZzogbnVsbCxcbiAgdG9wUHJvZ3Jlc3M6IG51bGwsXG4gIHRvcFJhdGVDaGFuZ2U6IG51bGwsXG4gIHRvcFJlc2V0OiBudWxsLFxuICB0b3BTY3JvbGw6IG51bGwsXG4gIHRvcFNlZWtlZDogbnVsbCxcbiAgdG9wU2Vla2luZzogbnVsbCxcbiAgdG9wU2VsZWN0aW9uQ2hhbmdlOiBudWxsLFxuICB0b3BTdGFsbGVkOiBudWxsLFxuICB0b3BTdWJtaXQ6IG51bGwsXG4gIHRvcFN1c3BlbmQ6IG51bGwsXG4gIHRvcFRleHRJbnB1dDogbnVsbCxcbiAgdG9wVGltZVVwZGF0ZTogbnVsbCxcbiAgdG9wVG91Y2hDYW5jZWw6IG51bGwsXG4gIHRvcFRvdWNoRW5kOiBudWxsLFxuICB0b3BUb3VjaE1vdmU6IG51bGwsXG4gIHRvcFRvdWNoU3RhcnQ6IG51bGwsXG4gIHRvcFZvbHVtZUNoYW5nZTogbnVsbCxcbiAgdG9wV2FpdGluZzogbnVsbCxcbiAgdG9wV2hlZWw6IG51bGxcbn0pO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSB7XG4gIHRvcExldmVsVHlwZXM6IHRvcExldmVsVHlwZXMsXG4gIFByb3BhZ2F0aW9uUGhhc2VzOiBQcm9wYWdhdGlvblBoYXNlc1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudENvbnN0YW50czsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV2ZW50UGx1Z2luSHViXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGlscycpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSByZXF1aXJlKCcuL2FjY3VtdWxhdGVJbnRvJyk7XG52YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gcmVxdWlyZSgnLi9mb3JFYWNoQWNjdW11bGF0ZWQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEludGVybmFsIHN0b3JlIGZvciBldmVudCBsaXN0ZW5lcnNcbiAqL1xudmFyIGxpc3RlbmVyQmFuayA9IHt9O1xuXG4vKipcbiAqIEludGVybmFsIHF1ZXVlIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWNjdW11bGF0ZWQgdGhlaXIgZGlzcGF0Y2hlcyBhbmQgYXJlXG4gKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlzcGF0Y2hlcyBleGVjdXRlZC5cbiAqL1xudmFyIGV2ZW50UXVldWUgPSBudWxsO1xuXG4vKipcbiAqIERpc3BhdGNoZXMgYW4gZXZlbnQgYW5kIHJlbGVhc2VzIGl0IGJhY2sgaW50byB0aGUgcG9vbCwgdW5sZXNzIHBlcnNpc3RlbnQuXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBldmVudCBTeW50aGV0aWMgZXZlbnQgdG8gYmUgZGlzcGF0Y2hlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICogQHByaXZhdGVcbiAqL1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSA9IGZ1bmN0aW9uIChldmVudCwgc2ltdWxhdGVkKSB7XG4gIGlmIChldmVudCkge1xuICAgIEV2ZW50UGx1Z2luVXRpbHMuZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpO1xuXG4gICAgaWYgKCFldmVudC5pc1BlcnNpc3RlbnQoKSkge1xuICAgICAgZXZlbnQuY29uc3RydWN0b3IucmVsZWFzZShldmVudCk7XG4gICAgfVxuICB9XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCA9IGZ1bmN0aW9uIChlKSB7XG4gIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgdHJ1ZSk7XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsID0gZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCBmYWxzZSk7XG59O1xuXG4vKipcbiAqIC0gYEluc3RhbmNlSGFuZGxlYDogW3JlcXVpcmVkXSBNb2R1bGUgdGhhdCBwZXJmb3JtcyBsb2dpY2FsIHRyYXZlcnNhbHMgb2YgRE9NXG4gKiAgIGhpZXJhcmNoeSBnaXZlbiBpZHMgb2YgdGhlIGxvZ2ljYWwgRE9NIGVsZW1lbnRzIGludm9sdmVkLlxuICovXG52YXIgSW5zdGFuY2VIYW5kbGUgPSBudWxsO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUluc3RhbmNlSGFuZGxlKCkge1xuICB2YXIgdmFsaWQgPSBJbnN0YW5jZUhhbmRsZSAmJiBJbnN0YW5jZUhhbmRsZS50cmF2ZXJzZVR3b1BoYXNlICYmIEluc3RhbmNlSGFuZGxlLnRyYXZlcnNlRW50ZXJMZWF2ZTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodmFsaWQsICdJbnN0YW5jZUhhbmRsZSBub3QgaW5qZWN0ZWQgYmVmb3JlIHVzZSEnKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgdW5pZmllZCBpbnRlcmZhY2UgZm9yIGV2ZW50IHBsdWdpbnMgdG8gYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLlxuICpcbiAqIEV2ZW50IHBsdWdpbnMgY2FuIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICBgZXh0cmFjdEV2ZW50c2Age2Z1bmN0aW9uKHN0cmluZywgRE9NRXZlbnRUYXJnZXQsIHN0cmluZywgb2JqZWN0KTogKn1cbiAqICAgICBSZXF1aXJlZC4gV2hlbiBhIHRvcC1sZXZlbCBldmVudCBpcyBmaXJlZCwgdGhpcyBtZXRob2QgaXMgZXhwZWN0ZWQgdG9cbiAqICAgICBleHRyYWN0IHN5bnRoZXRpYyBldmVudHMgdGhhdCB3aWxsIGluIHR1cm4gYmUgcXVldWVkIGFuZCBkaXNwYXRjaGVkLlxuICpcbiAqICAgYGV2ZW50VHlwZXNgIHtvYmplY3R9XG4gKiAgICAgT3B0aW9uYWwsIHBsdWdpbnMgdGhhdCBmaXJlIGV2ZW50cyBtdXN0IHB1Ymxpc2ggYSBtYXBwaW5nIG9mIHJlZ2lzdHJhdGlvblxuICogICAgIG5hbWVzIHRoYXQgYXJlIHVzZWQgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLiBWYWx1ZXMgb2YgdGhpcyBtYXBwaW5nIG11c3RcbiAqICAgICBiZSBvYmplY3RzIHRoYXQgY29udGFpbiBgcmVnaXN0cmF0aW9uTmFtZWAgb3IgYHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzYC5cbiAqXG4gKiAgIGBleGVjdXRlRGlzcGF0Y2hgIHtmdW5jdGlvbihvYmplY3QsIGZ1bmN0aW9uLCBzdHJpbmcpfVxuICogICAgIE9wdGlvbmFsLCBhbGxvd3MgcGx1Z2lucyB0byBvdmVycmlkZSBob3cgYW4gZXZlbnQgZ2V0cyBkaXNwYXRjaGVkLiBCeVxuICogICAgIGRlZmF1bHQsIHRoZSBsaXN0ZW5lciBpcyBzaW1wbHkgaW52b2tlZC5cbiAqXG4gKiBFYWNoIHBsdWdpbiB0aGF0IGlzIGluamVjdGVkIGludG8gYEV2ZW50c1BsdWdpbkh1YmAgaXMgaW1tZWRpYXRlbHkgb3BlcmFibGUuXG4gKlxuICogQHB1YmxpY1xuICovXG52YXIgRXZlbnRQbHVnaW5IdWIgPSB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZHMgZm9yIGluamVjdGluZyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBpbmplY3Rpb246IHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBJbmplY3RlZE1vdW50XG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGluamVjdE1vdW50OiBFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RNb3VudCxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBJbmplY3RlZEluc3RhbmNlSGFuZGxlXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGluamVjdEluc3RhbmNlSGFuZGxlOiBmdW5jdGlvbiAoSW5qZWN0ZWRJbnN0YW5jZUhhbmRsZSkge1xuICAgICAgSW5zdGFuY2VIYW5kbGUgPSBJbmplY3RlZEluc3RhbmNlSGFuZGxlO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVJbnN0YW5jZUhhbmRsZSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBnZXRJbnN0YW5jZUhhbmRsZTogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVJbnN0YW5jZUhhbmRsZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEluc3RhbmNlSGFuZGxlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXJcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZVxuXG4gIH0sXG5cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncyxcblxuICByZWdpc3RyYXRpb25OYW1lTW9kdWxlczogRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxcblxuICAvKipcbiAgICogU3RvcmVzIGBsaXN0ZW5lcmAgYXQgYGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtpZF1gLiBJcyBpZGVtcG90ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIERPTSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBsaXN0ZW5lciBUaGUgY2FsbGJhY2sgdG8gc3RvcmUuXG4gICAqL1xuICBwdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgICEodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtcbiAgICBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtpZF0gPSBsaXN0ZW5lcjtcblxuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKSB7XG4gICAgICBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICByZXR1cm4gYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgJiYgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVbaWRdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBuZXZlciBiZSBudWxsIC0tIHdoZW4gaXMgaXQ/XG4gICAgaWYgKGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVbaWRdO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0aGUgRE9NIGVsZW1lbnQgd2l0aCB0aGUgc3VwcGxpZWQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqL1xuICBkZWxldGVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIChpZCkge1xuICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4gICAgICBpZiAoIWxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtpZF0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG4gICAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2lkXTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsbG93cyByZWdpc3RlcmVkIHBsdWdpbnMgYW4gb3Bwb3J0dW5pdHkgdG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3AtbGV2ZWxcbiAgICogbmF0aXZlIGJyb3dzZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGV2ZW50cztcbiAgICB2YXIgcGx1Z2lucyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIE5vdCBldmVyeSBwbHVnaW4gaW4gdGhlIG9yZGVyaW5nIG1heSBiZSBsb2FkZWQgYXQgcnVudGltZS5cbiAgICAgIHZhciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07XG4gICAgICBpZiAocG9zc2libGVQbHVnaW4pIHtcbiAgICAgICAgdmFyIGV4dHJhY3RlZEV2ZW50cyA9IHBvc3NpYmxlUGx1Z2luLmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykge1xuICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVkIHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlvbiAoZXZlbnRzKSB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkge1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAvLyBldmVudHMgZ2V0IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBpZiAoc2ltdWxhdGVkKSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncHJvY2Vzc0V2ZW50UXVldWUoKTogQWRkaXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nICcgKyAnYW4gZXZlbnQgcXVldWUuIFN1cHBvcnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byByZXRocm93IGlmIGFueSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuXG4gICAgUmVhY3RFcnJvclV0aWxzLnJldGhyb3dDYXVnaHRFcnJvcigpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUaGVzZSBhcmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIVxuICAgKi9cbiAgX19wdXJnZTogZnVuY3Rpb24gKCkge1xuICAgIGxpc3RlbmVyQmFuayA9IHt9O1xuICB9LFxuXG4gIF9fZ2V0TGlzdGVuZXJCYW5rOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQmFuaztcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luSHViO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5RmRtVnVkRkJzZFdkcGJraDFZaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnUlhabGJuUlFiSFZuYVc1SWRXSmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1SUQwZ2NtVnhkV2x5WlNnbkxpOUZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVKeWs3WEc1MllYSWdSWFpsYm5SUWJIVm5hVzVWZEdsc2N5QTlJSEpsY1hWcGNtVW9KeTR2UlhabGJuUlFiSFZuYVc1VmRHbHNjeWNwTzF4dWRtRnlJRkpsWVdOMFJYSnliM0pWZEdsc2N5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZjbkp2Y2xWMGFXeHpKeWs3WEc1Y2JuWmhjaUJoWTJOMWJYVnNZWFJsU1c1MGJ5QTlJSEpsY1hWcGNtVW9KeTR2WVdOamRXMTFiR0YwWlVsdWRHOG5LVHRjYm5aaGNpQm1iM0pGWVdOb1FXTmpkVzExYkdGMFpXUWdQU0J5WlhGMWFYSmxLQ2N1TDJadmNrVmhZMmhCWTJOMWJYVnNZWFJsWkNjcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYmk4cUtseHVJQ29nU1c1MFpYSnVZV3dnYzNSdmNtVWdabTl5SUdWMlpXNTBJR3hwYzNSbGJtVnljMXh1SUNvdlhHNTJZWElnYkdsemRHVnVaWEpDWVc1cklEMGdlMzA3WEc1Y2JpOHFLbHh1SUNvZ1NXNTBaWEp1WVd3Z2NYVmxkV1VnYjJZZ1pYWmxiblJ6SUhSb1lYUWdhR0YyWlNCaFkyTjFiWFZzWVhSbFpDQjBhR1ZwY2lCa2FYTndZWFJqYUdWeklHRnVaQ0JoY21WY2JpQXFJSGRoYVhScGJtY2dkRzhnYUdGMlpTQjBhR1ZwY2lCa2FYTndZWFJqYUdWeklHVjRaV04xZEdWa0xseHVJQ292WEc1MllYSWdaWFpsYm5SUmRXVjFaU0E5SUc1MWJHdzdYRzVjYmk4cUtseHVJQ29nUkdsemNHRjBZMmhsY3lCaGJpQmxkbVZ1ZENCaGJtUWdjbVZzWldGelpYTWdhWFFnWW1GamF5QnBiblJ2SUhSb1pTQndiMjlzTENCMWJteGxjM01nY0dWeWMybHpkR1Z1ZEM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUdWMlpXNTBJRk41Ym5Sb1pYUnBZeUJsZG1WdWRDQjBieUJpWlNCa2FYTndZWFJqYUdWa0xseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0J6YVcxMWJHRjBaV1FnU1dZZ2RHaGxJR1YyWlc1MElHbHpJSE5wYlhWc1lYUmxaQ0FvWTJoaGJtZGxjeUJsZUc0Z1ltVm9ZWFpwYjNJcFhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNTJZWElnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5CYm1SU1pXeGxZWE5sSUQwZ1puVnVZM1JwYjI0Z0tHVjJaVzUwTENCemFXMTFiR0YwWldRcElIdGNiaUFnYVdZZ0tHVjJaVzUwS1NCN1hHNGdJQ0FnUlhabGJuUlFiSFZuYVc1VmRHbHNjeTVsZUdWamRYUmxSR2x6Y0dGMFkyaGxjMGx1VDNKa1pYSW9aWFpsYm5Rc0lITnBiWFZzWVhSbFpDazdYRzVjYmlBZ0lDQnBaaUFvSVdWMlpXNTBMbWx6VUdWeWMybHpkR1Z1ZENncEtTQjdYRzRnSUNBZ0lDQmxkbVZ1ZEM1amIyNXpkSEoxWTNSdmNpNXlaV3hsWVhObEtHVjJaVzUwS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1MllYSWdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkJibVJTWld4bFlYTmxVMmx0ZFd4aGRHVmtJRDBnWm5WdVkzUnBiMjRnS0dVcElIdGNiaUFnY21WMGRYSnVJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpRVzVrVW1Wc1pXRnpaU2hsTENCMGNuVmxLVHRjYm4wN1hHNTJZWElnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5CYm1SU1pXeGxZWE5sVkc5d1RHVjJaV3dnUFNCbWRXNWpkR2x2YmlBb1pTa2dlMXh1SUNCeVpYUjFjbTRnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5CYm1SU1pXeGxZWE5sS0dVc0lHWmhiSE5sS1R0Y2JuMDdYRzVjYmk4cUtseHVJQ29nTFNCZ1NXNXpkR0Z1WTJWSVlXNWtiR1ZnT2lCYmNtVnhkV2x5WldSZElFMXZaSFZzWlNCMGFHRjBJSEJsY21admNtMXpJR3h2WjJsallXd2dkSEpoZG1WeWMyRnNjeUJ2WmlCRVQwMWNiaUFxSUNBZ2FHbGxjbUZ5WTJoNUlHZHBkbVZ1SUdsa2N5QnZaaUIwYUdVZ2JHOW5hV05oYkNCRVQwMGdaV3hsYldWdWRITWdhVzUyYjJ4MlpXUXVYRzRnS2k5Y2JuWmhjaUJKYm5OMFlXNWpaVWhoYm1Sc1pTQTlJRzUxYkd3N1hHNWNibVoxYm1OMGFXOXVJSFpoYkdsa1lYUmxTVzV6ZEdGdVkyVklZVzVrYkdVb0tTQjdYRzRnSUhaaGNpQjJZV3hwWkNBOUlFbHVjM1JoYm1ObFNHRnVaR3hsSUNZbUlFbHVjM1JoYm1ObFNHRnVaR3hsTG5SeVlYWmxjbk5sVkhkdlVHaGhjMlVnSmlZZ1NXNXpkR0Z1WTJWSVlXNWtiR1V1ZEhKaGRtVnljMlZGYm5SbGNreGxZWFpsTzF4dUlDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWgyWVd4cFpDd2dKMGx1YzNSaGJtTmxTR0Z1Wkd4bElHNXZkQ0JwYm1wbFkzUmxaQ0JpWldadmNtVWdkWE5sSVNjcElEb2dkVzVrWldacGJtVmtPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGUm9hWE1nYVhNZ1lTQjFibWxtYVdWa0lHbHVkR1Z5Wm1GalpTQm1iM0lnWlhabGJuUWdjR3gxWjJsdWN5QjBieUJpWlNCcGJuTjBZV3hzWldRZ1lXNWtJR052Ym1acFozVnlaV1F1WEc0Z0tseHVJQ29nUlhabGJuUWdjR3gxWjJsdWN5QmpZVzRnYVcxd2JHVnRaVzUwSUhSb1pTQm1iMnhzYjNkcGJtY2djSEp2Y0dWeWRHbGxjenBjYmlBcVhHNGdLaUFnSUdCbGVIUnlZV04wUlhabGJuUnpZQ0I3Wm5WdVkzUnBiMjRvYzNSeWFXNW5MQ0JFVDAxRmRtVnVkRlJoY21kbGRDd2djM1J5YVc1bkxDQnZZbXBsWTNRcE9pQXFmVnh1SUNvZ0lDQWdJRkpsY1hWcGNtVmtMaUJYYUdWdUlHRWdkRzl3TFd4bGRtVnNJR1YyWlc1MElHbHpJR1pwY21Wa0xDQjBhR2x6SUcxbGRHaHZaQ0JwY3lCbGVIQmxZM1JsWkNCMGIxeHVJQ29nSUNBZ0lHVjRkSEpoWTNRZ2MzbHVkR2hsZEdsaklHVjJaVzUwY3lCMGFHRjBJSGRwYkd3Z2FXNGdkSFZ5YmlCaVpTQnhkV1YxWldRZ1lXNWtJR1JwYzNCaGRHTm9aV1F1WEc0Z0tseHVJQ29nSUNCZ1pYWmxiblJVZVhCbGMyQWdlMjlpYW1WamRIMWNiaUFxSUNBZ0lDQlBjSFJwYjI1aGJDd2djR3gxWjJsdWN5QjBhR0YwSUdacGNtVWdaWFpsYm5SeklHMTFjM1FnY0hWaWJHbHphQ0JoSUcxaGNIQnBibWNnYjJZZ2NtVm5hWE4wY21GMGFXOXVYRzRnS2lBZ0lDQWdibUZ0WlhNZ2RHaGhkQ0JoY21VZ2RYTmxaQ0IwYnlCeVpXZHBjM1JsY2lCc2FYTjBaVzVsY25NdUlGWmhiSFZsY3lCdlppQjBhR2x6SUcxaGNIQnBibWNnYlhWemRGeHVJQ29nSUNBZ0lHSmxJRzlpYW1WamRITWdkR2hoZENCamIyNTBZV2x1SUdCeVpXZHBjM1J5WVhScGIyNU9ZVzFsWUNCdmNpQmdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhOZ0xseHVJQ3BjYmlBcUlDQWdZR1Y0WldOMWRHVkVhWE53WVhSamFHQWdlMloxYm1OMGFXOXVLRzlpYW1WamRDd2dablZ1WTNScGIyNHNJSE4wY21sdVp5bDlYRzRnS2lBZ0lDQWdUM0IwYVc5dVlXd3NJR0ZzYkc5M2N5QndiSFZuYVc1eklIUnZJRzkyWlhKeWFXUmxJR2h2ZHlCaGJpQmxkbVZ1ZENCblpYUnpJR1JwYzNCaGRHTm9aV1F1SUVKNVhHNGdLaUFnSUNBZ1pHVm1ZWFZzZEN3Z2RHaGxJR3hwYzNSbGJtVnlJR2x6SUhOcGJYQnNlU0JwYm5admEyVmtMbHh1SUNwY2JpQXFJRVZoWTJnZ2NHeDFaMmx1SUhSb1lYUWdhWE1nYVc1cVpXTjBaV1FnYVc1MGJ5QmdSWFpsYm5SelVHeDFaMmx1U0hWaVlDQnBjeUJwYlcxbFpHbGhkR1ZzZVNCdmNHVnlZV0pzWlM1Y2JpQXFYRzRnS2lCQWNIVmliR2xqWEc0Z0tpOWNiblpoY2lCRmRtVnVkRkJzZFdkcGJraDFZaUE5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVFdWMGFHOWtjeUJtYjNJZ2FXNXFaV04wYVc1bklHUmxjR1Z1WkdWdVkybGxjeTVjYmlBZ0lDb3ZYRzRnSUdsdWFtVmpkR2x2YmpvZ2UxeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlFbHVhbVZqZEdWa1RXOTFiblJjYmlBZ0lDQWdLaUJBY0hWaWJHbGpYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2FXNXFaV04wVFc5MWJuUTZJRVYyWlc1MFVHeDFaMmx1VlhScGJITXVhVzVxWldOMGFXOXVMbWx1YW1WamRFMXZkVzUwTEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUVsdWFtVmpkR1ZrU1c1emRHRnVZMlZJWVc1a2JHVmNiaUFnSUNBZ0tpQkFjSFZpYkdsalhHNGdJQ0FnSUNvdlhHNGdJQ0FnYVc1cVpXTjBTVzV6ZEdGdVkyVklZVzVrYkdVNklHWjFibU4wYVc5dUlDaEpibXBsWTNSbFpFbHVjM1JoYm1ObFNHRnVaR3hsS1NCN1hHNGdJQ0FnSUNCSmJuTjBZVzVqWlVoaGJtUnNaU0E5SUVsdWFtVmpkR1ZrU1c1emRHRnVZMlZJWVc1a2JHVTdYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQjJZV3hwWkdGMFpVbHVjM1JoYm1ObFNHRnVaR3hsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JseHVJQ0FnSUdkbGRFbHVjM1JoYm1ObFNHRnVaR3hsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQjJZV3hwWkdGMFpVbHVjM1JoYm1ObFNHRnVaR3hsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnU1c1emRHRnVZMlZJWVc1a2JHVTdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdZWEp5WVhsOUlFbHVhbVZqZEdWa1JYWmxiblJRYkhWbmFXNVBjbVJsY2x4dUlDQWdJQ0FxSUVCd2RXSnNhV05jYmlBZ0lDQWdLaTljYmlBZ0lDQnBibXBsWTNSRmRtVnVkRkJzZFdkcGJrOXlaR1Z5T2lCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxtbHVhbVZqZEVWMlpXNTBVR3gxWjJsdVQzSmtaWElzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYVc1cVpXTjBaV1JPWVcxbGMxUnZVR3gxWjJsdWN5Qk5ZWEFnWm5KdmJTQnVZVzFsY3lCMGJ5QndiSFZuYVc0Z2JXOWtkV3hsY3k1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0JwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBibk5DZVU1aGJXVTZJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1YVc1cVpXTjBSWFpsYm5SUWJIVm5hVzV6UW5sT1lXMWxYRzVjYmlBZ2ZTeGNibHh1SUNCbGRtVnVkRTVoYldWRWFYTndZWFJqYUVOdmJtWnBaM002SUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdVpYWmxiblJPWVcxbFJHbHpjR0YwWTJoRGIyNW1hV2R6TEZ4dVhHNGdJSEpsWjJsemRISmhkR2x2Yms1aGJXVk5iMlIxYkdWek9pQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbkpsWjJsemRISmhkR2x2Yms1aGJXVk5iMlIxYkdWekxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVGRHOXlaWE1nWUd4cGMzUmxibVZ5WUNCaGRDQmdiR2x6ZEdWdVpYSkNZVzVyVzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkVzJsa1hXQXVJRWx6SUdsa1pXMXdiM1JsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnBaQ0JKUkNCdlppQjBhR1VnUkU5TklHVnNaVzFsYm5RdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldkcGMzUnlZWFJwYjI1T1lXMWxJRTVoYldVZ2IyWWdiR2x6ZEdWdVpYSWdLR1V1Wnk0Z1lHOXVRMnhwWTJ0Z0tTNWNiaUFnSUNvZ1FIQmhjbUZ0SUhzL1puVnVZM1JwYjI1OUlHeHBjM1JsYm1WeUlGUm9aU0JqWVd4c1ltRmpheUIwYnlCemRHOXlaUzVjYmlBZ0lDb3ZYRzRnSUhCMWRFeHBjM1JsYm1WeU9pQm1kVzVqZEdsdmJpQW9hV1FzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VzSUd4cGMzUmxibVZ5S1NCN1hHNGdJQ0FnSVNoMGVYQmxiMllnYkdsemRHVnVaWElnUFQwOUlDZG1kVzVqZEdsdmJpY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVjRjR1ZqZEdWa0lDVnpJR3hwYzNSbGJtVnlJSFJ2SUdKbElHRWdablZ1WTNScGIyNHNJR2x1YzNSbFlXUWdaMjkwSUhSNWNHVWdKWE1uTENCeVpXZHBjM1J5WVhScGIyNU9ZVzFsTENCMGVYQmxiMllnYkdsemRHVnVaWElwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUJpWVc1clJtOXlVbVZuYVhOMGNtRjBhVzl1VG1GdFpTQTlJR3hwYzNSbGJtVnlRbUZ1YTF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFNCOGZDQW9iR2x6ZEdWdVpYSkNZVzVyVzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkSUQwZ2UzMHBPMXh1SUNBZ0lHSmhibXRHYjNKU1pXZHBjM1J5WVhScGIyNU9ZVzFsVzJsa1hTQTlJR3hwYzNSbGJtVnlPMXh1WEc0Z0lDQWdkbUZ5SUZCc2RXZHBiazF2WkhWc1pTQTlJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTmJjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMDdYRzRnSUNBZ2FXWWdLRkJzZFdkcGJrMXZaSFZzWlNBbUppQlFiSFZuYVc1TmIyUjFiR1V1Wkdsa1VIVjBUR2x6ZEdWdVpYSXBJSHRjYmlBZ0lDQWdJRkJzZFdkcGJrMXZaSFZzWlM1a2FXUlFkWFJNYVhOMFpXNWxjaWhwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z2JHbHpkR1Z1WlhJcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRWxFSUc5bUlIUm9aU0JFVDAwZ1pXeGxiV1Z1ZEM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEpsWjJsemRISmhkR2x2Yms1aGJXVWdUbUZ0WlNCdlppQnNhWE4wWlc1bGNpQW9aUzVuTGlCZ2IyNURiR2xqYTJBcExseHVJQ0FnS2lCQWNtVjBkWEp1SUhzL1puVnVZM1JwYjI1OUlGUm9aU0J6ZEc5eVpXUWdZMkZzYkdKaFkyc3VYRzRnSUNBcUwxeHVJQ0JuWlhSTWFYTjBaVzVsY2pvZ1puVnVZM1JwYjI0Z0tHbGtMQ0J5WldkcGMzUnlZWFJwYjI1T1lXMWxLU0I3WEc0Z0lDQWdkbUZ5SUdKaGJtdEdiM0pTWldkcGMzUnlZWFJwYjI1T1lXMWxJRDBnYkdsemRHVnVaWEpDWVc1clczSmxaMmx6ZEhKaGRHbHZiazVoYldWZE8xeHVJQ0FnSUhKbGRIVnliaUJpWVc1clJtOXlVbVZuYVhOMGNtRjBhVzl1VG1GdFpTQW1KaUJpWVc1clJtOXlVbVZuYVhOMGNtRjBhVzl1VG1GdFpWdHBaRjA3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUmxiR1YwWlhNZ1lTQnNhWE4wWlc1bGNpQm1jbTl0SUhSb1pTQnlaV2RwYzNSeVlYUnBiMjRnWW1GdWF5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR2xrSUVsRUlHOW1JSFJvWlNCRVQwMGdaV3hsYldWdWRDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKbFoybHpkSEpoZEdsdmJrNWhiV1VnVG1GdFpTQnZaaUJzYVhOMFpXNWxjaUFvWlM1bkxpQmdiMjVEYkdsamEyQXBMbHh1SUNBZ0tpOWNiaUFnWkdWc1pYUmxUR2x6ZEdWdVpYSTZJR1oxYm1OMGFXOXVJQ2hwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ2UxeHVJQ0FnSUhaaGNpQlFiSFZuYVc1TmIyUjFiR1VnUFNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6VzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkTzF4dUlDQWdJR2xtSUNoUWJIVm5hVzVOYjJSMWJHVWdKaVlnVUd4MVoybHVUVzlrZFd4bExuZHBiR3hFWld4bGRHVk1hWE4wWlc1bGNpa2dlMXh1SUNBZ0lDQWdVR3gxWjJsdVRXOWtkV3hsTG5kcGJHeEVaV3hsZEdWTWFYTjBaVzVsY2locFpDd2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJR0poYm10R2IzSlNaV2RwYzNSeVlYUnBiMjVPWVcxbElEMGdiR2x6ZEdWdVpYSkNZVzVyVzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkTzF4dUlDQWdJQzh2SUZSUFJFODZJRlJvYVhNZ2MyaHZkV3hrSUc1bGRtVnlJR0psSUc1MWJHd2dMUzBnZDJobGJpQnBjeUJwZEQ5Y2JpQWdJQ0JwWmlBb1ltRnVhMFp2Y2xKbFoybHpkSEpoZEdsdmJrNWhiV1VwSUh0Y2JpQWdJQ0FnSUdSbGJHVjBaU0JpWVc1clJtOXlVbVZuYVhOMGNtRjBhVzl1VG1GdFpWdHBaRjA3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpXeGxkR1Z6SUdGc2JDQnNhWE4wWlc1bGNuTWdabTl5SUhSb1pTQkVUMDBnWld4bGJXVnVkQ0IzYVhSb0lIUm9aU0J6ZFhCd2JHbGxaQ0JKUkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRWxFSUc5bUlIUm9aU0JFVDAwZ1pXeGxiV1Z1ZEM1Y2JpQWdJQ292WEc0Z0lHUmxiR1YwWlVGc2JFeHBjM1JsYm1WeWN6b2dablZ1WTNScGIyNGdLR2xrS1NCN1hHNGdJQ0FnWm05eUlDaDJZWElnY21WbmFYTjBjbUYwYVc5dVRtRnRaU0JwYmlCc2FYTjBaVzVsY2tKaGJtc3BJSHRjYmlBZ0lDQWdJR2xtSUNnaGJHbHpkR1Z1WlhKQ1lXNXJXM0psWjJsemRISmhkR2x2Yms1aGJXVmRXMmxrWFNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkbUZ5SUZCc2RXZHBiazF2WkhWc1pTQTlJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1Y21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTmJjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMDdYRzRnSUNBZ0lDQnBaaUFvVUd4MVoybHVUVzlrZFd4bElDWW1JRkJzZFdkcGJrMXZaSFZzWlM1M2FXeHNSR1ZzWlhSbFRHbHpkR1Z1WlhJcElIdGNiaUFnSUNBZ0lDQWdVR3gxWjJsdVRXOWtkV3hsTG5kcGJHeEVaV3hsZEdWTWFYTjBaVzVsY2locFpDd2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR1JsYkdWMFpTQnNhWE4wWlc1bGNrSmhibXRiY21WbmFYTjBjbUYwYVc5dVRtRnRaVjFiYVdSZE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRV3hzYjNkeklISmxaMmx6ZEdWeVpXUWdjR3gxWjJsdWN5QmhiaUJ2Y0hCdmNuUjFibWwwZVNCMGJ5QmxlSFJ5WVdOMElHVjJaVzUwY3lCbWNtOXRJSFJ2Y0Mxc1pYWmxiRnh1SUNBZ0tpQnVZWFJwZG1VZ1luSnZkM05sY2lCbGRtVnVkSE11WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMGIzQk1aWFpsYkZSNWNHVWdVbVZqYjNKa0lHWnliMjBnWUVWMlpXNTBRMjl1YzNSaGJuUnpZQzVjYmlBZ0lDb2dRSEJoY21GdElIdEVUMDFGZG1WdWRGUmhjbWRsZEgwZ2RHOXdUR1YyWld4VVlYSm5aWFFnVkdobElHeHBjM1JsYm1sdVp5QmpiMjF3YjI1bGJuUWdjbTl2ZENCdWIyUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHOXdUR1YyWld4VVlYSm5aWFJKUkNCSlJDQnZaaUJnZEc5d1RHVjJaV3hVWVhKblpYUmdMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2JtRjBhWFpsUlhabGJuUWdUbUYwYVhabElHSnliM2R6WlhJZ1pYWmxiblF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdleXA5SUVGdUlHRmpZM1Z0ZFd4aGRHbHZiaUJ2WmlCemVXNTBhR1YwYVdNZ1pYWmxiblJ6TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWNGRISmhZM1JGZG1WdWRITTZJR1oxYm1OMGFXOXVJQ2gwYjNCTVpYWmxiRlI1Y0dVc0lIUnZjRXhsZG1Wc1ZHRnlaMlYwTENCMGIzQk1aWFpsYkZSaGNtZGxkRWxFTENCdVlYUnBkbVZGZG1WdWRDd2dibUYwYVhabFJYWmxiblJVWVhKblpYUXBJSHRjYmlBZ0lDQjJZWElnWlhabGJuUnpPMXh1SUNBZ0lIWmhjaUJ3YkhWbmFXNXpJRDBnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1d2JIVm5hVzV6TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnY0d4MVoybHVjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0x5OGdUbTkwSUdWMlpYSjVJSEJzZFdkcGJpQnBiaUIwYUdVZ2IzSmtaWEpwYm1jZ2JXRjVJR0psSUd4dllXUmxaQ0JoZENCeWRXNTBhVzFsTGx4dUlDQWdJQ0FnZG1GeUlIQnZjM05wWW14bFVHeDFaMmx1SUQwZ2NHeDFaMmx1YzF0cFhUdGNiaUFnSUNBZ0lHbG1JQ2h3YjNOemFXSnNaVkJzZFdkcGJpa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1pYaDBjbUZqZEdWa1JYWmxiblJ6SUQwZ2NHOXpjMmxpYkdWUWJIVm5hVzR1WlhoMGNtRmpkRVYyWlc1MGN5aDBiM0JNWlhabGJGUjVjR1VzSUhSdmNFeGxkbVZzVkdGeVoyVjBMQ0IwYjNCTVpYWmxiRlJoY21kbGRFbEVMQ0J1WVhScGRtVkZkbVZ1ZEN3Z2JtRjBhWFpsUlhabGJuUlVZWEpuWlhRcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWlhoMGNtRmpkR1ZrUlhabGJuUnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pYWmxiblJ6SUQwZ1lXTmpkVzExYkdGMFpVbHVkRzhvWlhabGJuUnpMQ0JsZUhSeVlXTjBaV1JGZG1WdWRITXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCbGRtVnVkSE03WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnVjWFZsZFdWeklHRWdjM2x1ZEdobGRHbGpJR1YyWlc1MElIUm9ZWFFnYzJodmRXeGtJR0psSUdScGMzQmhkR05vWldRZ2QyaGxibHh1SUNBZ0tpQmdjSEp2WTJWemMwVjJaVzUwVVhWbGRXVmdJR2x6SUdsdWRtOXJaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdaWFpsYm5SeklFRnVJR0ZqWTNWdGRXeGhkR2x2YmlCdlppQnplVzUwYUdWMGFXTWdaWFpsYm5SekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWRmRtVnVkSE02SUdaMWJtTjBhVzl1SUNobGRtVnVkSE1wSUh0Y2JpQWdJQ0JwWmlBb1pYWmxiblJ6S1NCN1hHNGdJQ0FnSUNCbGRtVnVkRkYxWlhWbElEMGdZV05qZFcxMWJHRjBaVWx1ZEc4b1pYWmxiblJSZFdWMVpTd2daWFpsYm5SektUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVJwYzNCaGRHTm9aWE1nWVd4c0lITjViblJvWlhScFl5QmxkbVZ1ZEhNZ2IyNGdkR2hsSUdWMlpXNTBJSEYxWlhWbExseHVJQ0FnS2x4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUhCeWIyTmxjM05GZG1WdWRGRjFaWFZsT2lCbWRXNWpkR2x2YmlBb2MybHRkV3hoZEdWa0tTQjdYRzRnSUNBZ0x5OGdVMlYwSUdCbGRtVnVkRkYxWlhWbFlDQjBieUJ1ZFd4c0lHSmxabTl5WlNCd2NtOWpaWE56YVc1bklHbDBJSE52SUhSb1lYUWdkMlVnWTJGdUlIUmxiR3dnYVdZZ2JXOXlaVnh1SUNBZ0lDOHZJR1YyWlc1MGN5Qm5aWFFnWlc1eGRXVjFaV1FnZDJocGJHVWdjSEp2WTJWemMybHVaeTVjYmlBZ0lDQjJZWElnY0hKdlkyVnpjMmx1WjBWMlpXNTBVWFZsZFdVZ1BTQmxkbVZ1ZEZGMVpYVmxPMXh1SUNBZ0lHVjJaVzUwVVhWbGRXVWdQU0J1ZFd4c08xeHVJQ0FnSUdsbUlDaHphVzExYkdGMFpXUXBJSHRjYmlBZ0lDQWdJR1p2Y2tWaFkyaEJZMk4xYlhWc1lYUmxaQ2h3Y205alpYTnphVzVuUlhabGJuUlJkV1YxWlN3Z1pYaGxZM1YwWlVScGMzQmhkR05vWlhOQmJtUlNaV3hsWVhObFUybHRkV3hoZEdWa0tUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWm05eVJXRmphRUZqWTNWdGRXeGhkR1ZrS0hCeWIyTmxjM05wYm1kRmRtVnVkRkYxWlhWbExDQmxlR1ZqZFhSbFJHbHpjR0YwWTJobGMwRnVaRkpsYkdWaGMyVlViM0JNWlhabGJDazdYRzRnSUNBZ2ZWeHVJQ0FnSUNFaFpYWmxiblJSZFdWMVpTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkd2NtOWpaWE56UlhabGJuUlJkV1YxWlNncE9pQkJaR1JwZEdsdmJtRnNJR1YyWlc1MGN5QjNaWEpsSUdWdWNYVmxkV1ZrSUhkb2FXeGxJSEJ5YjJObGMzTnBibWNnSnlBcklDZGhiaUJsZG1WdWRDQnhkV1YxWlM0Z1UzVndjRzl5ZENCbWIzSWdkR2hwY3lCb1lYTWdibTkwSUhsbGRDQmlaV1Z1SUdsdGNHeGxiV1Z1ZEdWa0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0F2THlCVWFHbHpJSGR2ZFd4a0lHSmxJR0VnWjI5dlpDQjBhVzFsSUhSdklISmxkR2h5YjNjZ2FXWWdZVzU1SUc5bUlIUm9aU0JsZG1WdWRDQm9ZVzVrYkdWeWN5QjBhSEpsZHk1Y2JpQWdJQ0JTWldGamRFVnljbTl5VlhScGJITXVjbVYwYUhKdmQwTmhkV2RvZEVWeWNtOXlLQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aWE5sSUdGeVpTQnVaV1ZrWldRZ1ptOXlJSFJsYzNSeklHOXViSGt1SUVSdklHNXZkQ0IxYzJVaFhHNGdJQ0FxTDF4dUlDQmZYM0IxY21kbE9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdiR2x6ZEdWdVpYSkNZVzVySUQwZ2UzMDdYRzRnSUgwc1hHNWNiaUFnWDE5blpYUk1hWE4wWlc1bGNrSmhibXM2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnYkdsemRHVnVaWEpDWVc1ck8xeHVJQ0I5WEc1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnUlhabGJuUlFiSFZuYVc1SWRXSTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudFBsdWdpblJlZ2lzdHJ5XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEluamVjdGFibGUgb3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lucy5cbiAqL1xudmFyIEV2ZW50UGx1Z2luT3JkZXIgPSBudWxsO1xuXG4vKipcbiAqIEluamVjdGFibGUgbWFwcGluZyBmcm9tIG5hbWVzIHRvIGV2ZW50IHBsdWdpbiBtb2R1bGVzLlxuICovXG52YXIgbmFtZXNUb1BsdWdpbnMgPSB7fTtcblxuLyoqXG4gKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0ZWQgcGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCkge1xuICBpZiAoIUV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAvLyBXYWl0IHVudGlsIGFuIGBFdmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3RlZC5cbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICB2YXIgcGx1Z2luSW5kZXggPSBFdmVudFBsdWdpbk9yZGVyLmluZGV4T2YocGx1Z2luTmFtZSk7XG4gICAgIShwbHVnaW5JbmRleCA+IC0xKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2ZW50IHBsdWdpbnMgdGhhdCBkbyBub3QgZXhpc3QgaW4gJyArICd0aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgICFQbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFuIGBleHRyYWN0RXZlbnRzYCAnICsgJ21ldGhvZCwgYnV0IGAlc2AgZG9lcyBub3QuJywgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0gPSBQbHVnaW5Nb2R1bGU7XG4gICAgdmFyIHB1Ymxpc2hlZEV2ZW50cyA9IFBsdWdpbk1vZHVsZS5ldmVudFR5cGVzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBwdWJsaXNoZWRFdmVudHMpIHtcbiAgICAgICFwdWJsaXNoRXZlbnRGb3JQbHVnaW4ocHVibGlzaGVkRXZlbnRzW2V2ZW50TmFtZV0sIFBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBGYWlsZWQgdG8gcHVibGlzaCBldmVudCBgJXNgIGZvciBwbHVnaW4gYCVzYC4nLCBldmVudE5hbWUsIHBsdWdpbk5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYW4gZXZlbnQgc28gdGhhdCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1Z2luLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXZlbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lICcgKyAnZXZlbnQgbmFtZSwgYCVzYC4nLCBldmVudE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXSA9IGRpc3BhdGNoQ29uZmlnO1xuXG4gIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO1xuICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICBmb3IgKHZhciBwaGFzZU5hbWUgaW4gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAgIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZU5hbWUpKSB7XG4gICAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lID0gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VOYW1lXTtcbiAgICAgICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocGhhc2VkUmVnaXN0cmF0aW9uTmFtZSwgUGx1Z2luTW9kdWxlLCBldmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSwgUGx1Z2luTW9kdWxlLCBldmVudE5hbWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYSByZWdpc3RyYXRpb24gbmFtZSB0aGF0IGlzIHVzZWQgdG8gaWRlbnRpZnkgZGlzcGF0Y2hlZCBldmVudHMgYW5kXG4gKiBjYW4gYmUgdXNlZCB3aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIFJlZ2lzdHJhdGlvbiBuYW1lIHRvIGFkZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocmVnaXN0cmF0aW9uTmFtZSwgUGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcbiAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSAnICsgJ3JlZ2lzdHJhdGlvbiBuYW1lLCBgJXNgLicsIHJlZ2lzdHJhdGlvbk5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA9IFBsdWdpbk1vZHVsZTtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gUGx1Z2luTW9kdWxlLmV2ZW50VHlwZXNbZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHBsdWdpbnMgc28gdGhhdCB0aGV5IGNhbiBleHRyYWN0IGFuZCBkaXNwYXRjaCBldmVudHMuXG4gKlxuICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9XG4gKi9cbnZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0ge1xuXG4gIC8qKlxuICAgKiBPcmRlcmVkIGxpc3Qgb2YgaW5qZWN0ZWQgcGx1Z2lucy5cbiAgICovXG4gIHBsdWdpbnM6IFtdLFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gZXZlbnQgbmFtZSB0byBkaXNwYXRjaCBjb25maWdcbiAgICovXG4gIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFtZSB0byBwbHVnaW4gbW9kdWxlXG4gICAqL1xuICByZWdpc3RyYXRpb25OYW1lTW9kdWxlczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFtZSB0byBldmVudCBuYW1lXG4gICAqL1xuICByZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOiB7fSxcblxuICAvKipcbiAgICogSW5qZWN0cyBhbiBvcmRlcmluZyBvZiBwbHVnaW5zIChieSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZ1xuICAgKiB0byBiZSBkZWNvdXBsZWQgZnJvbSBpbmplY3Rpb24gb2YgdGhlIGFjdHVhbCBwbHVnaW5zIHNvIHRoYXQgb3JkZXJpbmcgaXNcbiAgICogYWx3YXlzIGRldGVybWluaXN0aWMgcmVnYXJkbGVzcyBvZiBwYWNrYWdpbmcsIG9uLXRoZS1mbHkgaW5qZWN0aW9uLCBldGMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXJ9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBmdW5jdGlvbiAoSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKSB7XG4gICAgISFFdmVudFBsdWdpbk9yZGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1vcmUgdGhhbiAnICsgJ29uY2UuIFlvdSBhcmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgLy8gQ2xvbmUgdGhlIG9yZGVyaW5nIHNvIGl0IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVkLlxuICAgIEV2ZW50UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpO1xuICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEluamVjdHMgcGx1Z2lucyB0byBiZSB1c2VkIGJ5IGBFdmVudFBsdWdpbkh1YmAuIFRoZSBwbHVnaW4gbmFtZXMgbXVzdCBiZVxuICAgKiBpbiB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLlxuICAgKlxuICAgKiBQbHVnaW5zIGNhbiBiZSBpbmplY3RlZCBhcyBwYXJ0IG9mIHBhZ2UgaW5pdGlhbGl6YXRpb24gb3Igb24tdGhlLWZseS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfVxuICAgKi9cbiAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuICAgIHZhciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcbiAgICAgIGlmICghaW5qZWN0ZWROYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gUGx1Z2luTW9kdWxlKSB7XG4gICAgICAgICEhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCB0d28gZGlmZmVyZW50IGV2ZW50IHBsdWdpbnMgJyArICd1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPSBQbHVnaW5Nb2R1bGU7XG4gICAgICAgIGlzT3JkZXJpbmdEaXJ0eSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc09yZGVyaW5nRGlydHkpIHtcbiAgICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBMb29rcyB1cCB0aGUgcGx1Z2luIGZvciB0aGUgc3VwcGxpZWQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBBIHN5bnRoZXRpYyBldmVudC5cbiAgICogQHJldHVybiB7P29iamVjdH0gVGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWQgdGhlIHN1cHBsaWVkIGV2ZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFBsdWdpbk1vZHVsZUZvckV2ZW50OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSBldmVudC5kaXNwYXRjaENvbmZpZztcbiAgICBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZV0gfHwgbnVsbDtcbiAgICB9XG4gICAgZm9yICh2YXIgcGhhc2UgaW4gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAgIGlmICghZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2UpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VdXTtcbiAgICAgIGlmIChQbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIHVuaXQgdGVzdGluZy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZXNldEV2ZW50UGx1Z2luczogZnVuY3Rpb24gKCkge1xuICAgIEV2ZW50UGx1Z2luT3JkZXIgPSBudWxsO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHtcbiAgICAgIGlmIChuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuICAgICAgICBkZWxldGUgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICB9XG4gICAgfVxuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAwO1xuXG4gICAgdmFyIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MpIHtcbiAgICAgIGlmIChldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSkge1xuICAgICAgICBkZWxldGUgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcbiAgICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGluIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzKSB7XG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocmVnaXN0cmF0aW9uTmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnk7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNubGNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nU1c1cVpXTjBZV0pzWlNCdmNtUmxjbWx1WnlCdlppQmxkbVZ1ZENCd2JIVm5hVzV6TGx4dUlDb3ZYRzUyWVhJZ1JYWmxiblJRYkhWbmFXNVBjbVJsY2lBOUlHNTFiR3c3WEc1Y2JpOHFLbHh1SUNvZ1NXNXFaV04wWVdKc1pTQnRZWEJ3YVc1bklHWnliMjBnYm1GdFpYTWdkRzhnWlhabGJuUWdjR3gxWjJsdUlHMXZaSFZzWlhNdVhHNGdLaTljYm5aaGNpQnVZVzFsYzFSdlVHeDFaMmx1Y3lBOUlIdDlPMXh1WEc0dktpcGNiaUFxSUZKbFkyOXRjSFYwWlhNZ2RHaGxJSEJzZFdkcGJpQnNhWE4wSUhWemFXNW5JSFJvWlNCcGJtcGxZM1JsWkNCd2JIVm5hVzV6SUdGdVpDQndiSFZuYVc0Z2IzSmtaWEpwYm1jdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnY21WamIyMXdkWFJsVUd4MVoybHVUM0prWlhKcGJtY29LU0I3WEc0Z0lHbG1JQ2doUlhabGJuUlFiSFZuYVc1UGNtUmxjaWtnZTF4dUlDQWdJQzh2SUZkaGFYUWdkVzUwYVd3Z1lXNGdZRVYyWlc1MFVHeDFaMmx1VDNKa1pYSmdJR2x6SUdsdWFtVmpkR1ZrTGx4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQm1iM0lnS0haaGNpQndiSFZuYVc1T1lXMWxJR2x1SUc1aGJXVnpWRzlRYkhWbmFXNXpLU0I3WEc0Z0lDQWdkbUZ5SUZCc2RXZHBiazF2WkhWc1pTQTlJRzVoYldWelZHOVFiSFZuYVc1elczQnNkV2RwYms1aGJXVmRPMXh1SUNBZ0lIWmhjaUJ3YkhWbmFXNUpibVJsZUNBOUlFVjJaVzUwVUd4MVoybHVUM0prWlhJdWFXNWtaWGhQWmlod2JIVm5hVzVPWVcxbEtUdGNiaUFnSUNBaEtIQnNkV2RwYmtsdVpHVjRJRDRnTFRFcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rNklFTmhibTV2ZENCcGJtcGxZM1FnWlhabGJuUWdjR3gxWjJsdWN5QjBhR0YwSUdSdklHNXZkQ0JsZUdsemRDQnBiaUFuSUNzZ0ozUm9aU0J3YkhWbmFXNGdiM0prWlhKcGJtY3NJR0FsYzJBdUp5d2djR3gxWjJsdVRtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaEZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbkJzZFdkcGJuTmJjR3gxWjJsdVNXNWtaWGhkS1NCN1hHNGdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdJVkJzZFdkcGJrMXZaSFZzWlM1bGVIUnlZV04wUlhabGJuUnpJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNuazZJRVYyWlc1MElIQnNkV2RwYm5NZ2JYVnpkQ0JwYlhCc1pXMWxiblFnWVc0Z1lHVjRkSEpoWTNSRmRtVnVkSE5nSUNjZ0t5QW5iV1YwYUc5a0xDQmlkWFFnWUNWellDQmtiMlZ6SUc1dmRDNG5MQ0J3YkhWbmFXNU9ZVzFsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXdiSFZuYVc1elczQnNkV2RwYmtsdVpHVjRYU0E5SUZCc2RXZHBiazF2WkhWc1pUdGNiaUFnSUNCMllYSWdjSFZpYkdsemFHVmtSWFpsYm5SeklEMGdVR3gxWjJsdVRXOWtkV3hsTG1WMlpXNTBWSGx3WlhNN1hHNGdJQ0FnWm05eUlDaDJZWElnWlhabGJuUk9ZVzFsSUdsdUlIQjFZbXhwYzJobFpFVjJaVzUwY3lrZ2UxeHVJQ0FnSUNBZ0lYQjFZbXhwYzJoRmRtVnVkRVp2Y2xCc2RXZHBiaWh3ZFdKc2FYTm9aV1JGZG1WdWRITmJaWFpsYm5ST1lXMWxYU3dnVUd4MVoybHVUVzlrZFd4bExDQmxkbVZ1ZEU1aGJXVXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNuazZJRVpoYVd4bFpDQjBieUJ3ZFdKc2FYTm9JR1YyWlc1MElHQWxjMkFnWm05eUlIQnNkV2RwYmlCZ0pYTmdMaWNzSUdWMlpXNTBUbUZ0WlN3Z2NHeDFaMmx1VG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUZCMVlteHBjMmhsY3lCaGJpQmxkbVZ1ZENCemJ5QjBhR0YwSUdsMElHTmhiaUJpWlNCa2FYTndZWFJqYUdWa0lHSjVJSFJvWlNCemRYQndiR2xsWkNCd2JIVm5hVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR1JwYzNCaGRHTm9RMjl1Wm1sbklFUnBjM0JoZEdOb0lHTnZibVpwWjNWeVlYUnBiMjRnWm05eUlIUm9aU0JsZG1WdWRDNWNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JRYkhWbmFXNU5iMlIxYkdVZ1VHeDFaMmx1SUhCMVlteHBjMmhwYm1jZ2RHaGxJR1YyWlc1MExseHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUIwYUdVZ1pYWmxiblFnZDJGeklITjFZMk5sYzNObWRXeHNlU0J3ZFdKc2FYTm9aV1F1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCd2RXSnNhWE5vUlhabGJuUkdiM0pRYkhWbmFXNG9aR2x6Y0dGMFkyaERiMjVtYVdjc0lGQnNkV2RwYmsxdlpIVnNaU3dnWlhabGJuUk9ZVzFsS1NCN1hHNGdJQ0VoUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1bGRtVnVkRTVoYldWRWFYTndZWFJqYUVOdmJtWnBaM011YUdGelQzZHVVSEp2Y0dWeWRIa29aWFpsYm5ST1lXMWxLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZkbVZ1ZEZCc2RXZHBia2gxWWpvZ1RXOXlaU0IwYUdGdUlHOXVaU0J3YkhWbmFXNGdZWFIwWlcxd2RHVmtJSFJ2SUhCMVlteHBjMmdnZEdobElITmhiV1VnSnlBcklDZGxkbVZ1ZENCdVlXMWxMQ0JnSlhOZ0xpY3NJR1YyWlc1MFRtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0JGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG1WMlpXNTBUbUZ0WlVScGMzQmhkR05vUTI5dVptbG5jMXRsZG1WdWRFNWhiV1ZkSUQwZ1pHbHpjR0YwWTJoRGIyNW1hV2M3WEc1Y2JpQWdkbUZ5SUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpJRDBnWkdsemNHRjBZMmhEYjI1bWFXY3VjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNN1hHNGdJR2xtSUNod2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjeWtnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJSEJvWVhObFRtRnRaU0JwYmlCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJvWVhObFRtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldVZ1BTQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsYzF0d2FHRnpaVTVoYldWZE8xeHVJQ0FnSUNBZ0lDQndkV0pzYVhOb1VtVm5hWE4wY21GMGFXOXVUbUZ0WlNod2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxMQ0JRYkhWbmFXNU5iMlIxYkdVc0lHVjJaVzUwVG1GdFpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0dScGMzQmhkR05vUTI5dVptbG5MbkpsWjJsemRISmhkR2x2Yms1aGJXVXBJSHRjYmlBZ0lDQndkV0pzYVhOb1VtVm5hWE4wY21GMGFXOXVUbUZ0WlNoa2FYTndZWFJqYUVOdmJtWnBaeTV5WldkcGMzUnlZWFJwYjI1T1lXMWxMQ0JRYkhWbmFXNU5iMlIxYkdVc0lHVjJaVzUwVG1GdFpTazdYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHWmhiSE5sTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkIxWW14cGMyaGxjeUJoSUhKbFoybHpkSEpoZEdsdmJpQnVZVzFsSUhSb1lYUWdhWE1nZFhObFpDQjBieUJwWkdWdWRHbG1lU0JrYVhOd1lYUmphR1ZrSUdWMlpXNTBjeUJoYm1SY2JpQXFJR05oYmlCaVpTQjFjMlZrSUhkcGRHZ2dZRVYyWlc1MFVHeDFaMmx1U0hWaUxuQjFkRXhwYzNSbGJtVnlZQ0IwYnlCeVpXZHBjM1JsY2lCc2FYTjBaVzVsY25NdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKbFoybHpkSEpoZEdsdmJrNWhiV1VnVW1WbmFYTjBjbUYwYVc5dUlHNWhiV1VnZEc4Z1lXUmtMbHh1SUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUZCc2RXZHBiazF2WkhWc1pTQlFiSFZuYVc0Z2NIVmliR2x6YUdsdVp5QjBhR1VnWlhabGJuUXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJ3ZFdKc2FYTm9VbVZuYVhOMGNtRjBhVzl1VG1GdFpTaHlaV2RwYzNSeVlYUnBiMjVPWVcxbExDQlFiSFZuYVc1TmIyUjFiR1VzSUdWMlpXNTBUbUZ0WlNrZ2UxeHVJQ0FoSVVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE5iY21WbmFYTjBjbUYwYVc5dVRtRnRaVjBnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5SWFpsYm5SUWJIVm5hVzVJZFdJNklFMXZjbVVnZEdoaGJpQnZibVVnY0d4MVoybHVJR0YwZEdWdGNIUmxaQ0IwYnlCd2RXSnNhWE5vSUhSb1pTQnpZVzFsSUNjZ0t5QW5jbVZuYVhOMGNtRjBhVzl1SUc1aGJXVXNJR0FsYzJBdUp5d2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbkpsWjJsemRISmhkR2x2Yms1aGJXVk5iMlIxYkdWelczSmxaMmx6ZEhKaGRHbHZiazVoYldWZElEMGdVR3gxWjJsdVRXOWtkV3hsTzF4dUlDQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbkpsWjJsemRISmhkR2x2Yms1aGJXVkVaWEJsYm1SbGJtTnBaWE5iY21WbmFYTjBjbUYwYVc5dVRtRnRaVjBnUFNCUWJIVm5hVzVOYjJSMWJHVXVaWFpsYm5SVWVYQmxjMXRsZG1WdWRFNWhiV1ZkTG1SbGNHVnVaR1Z1WTJsbGN6dGNibjFjYmx4dUx5b3FYRzRnS2lCU1pXZHBjM1JsY25NZ2NHeDFaMmx1Y3lCemJ5QjBhR0YwSUhSb1pYa2dZMkZ1SUdWNGRISmhZM1FnWVc1a0lHUnBjM0JoZEdOb0lHVjJaVzUwY3k1Y2JpQXFYRzRnS2lCQWMyVmxJSHRGZG1WdWRGQnNkV2RwYmtoMVluMWNiaUFxTDF4dWRtRnlJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmtnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUU5eVpHVnlaV1FnYkdsemRDQnZaaUJwYm1wbFkzUmxaQ0J3YkhWbmFXNXpMbHh1SUNBZ0tpOWNiaUFnY0d4MVoybHVjem9nVzEwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUUxaGNIQnBibWNnWm5KdmJTQmxkbVZ1ZENCdVlXMWxJSFJ2SUdScGMzQmhkR05vSUdOdmJtWnBaMXh1SUNBZ0tpOWNiaUFnWlhabGJuUk9ZVzFsUkdsemNHRjBZMmhEYjI1bWFXZHpPaUI3ZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVFdGd2NHbHVaeUJtY205dElISmxaMmx6ZEhKaGRHbHZiaUJ1WVcxbElIUnZJSEJzZFdkcGJpQnRiMlIxYkdWY2JpQWdJQ292WEc0Z0lISmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6T2lCN2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1RXRndjR2x1WnlCbWNtOXRJSEpsWjJsemRISmhkR2x2YmlCdVlXMWxJSFJ2SUdWMlpXNTBJRzVoYldWY2JpQWdJQ292WEc0Z0lISmxaMmx6ZEhKaGRHbHZiazVoYldWRVpYQmxibVJsYm1OcFpYTTZJSHQ5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1wbFkzUnpJR0Z1SUc5eVpHVnlhVzVuSUc5bUlIQnNkV2RwYm5NZ0tHSjVJSEJzZFdkcGJpQnVZVzFsS1M0Z1ZHaHBjeUJoYkd4dmQzTWdkR2hsSUc5eVpHVnlhVzVuWEc0Z0lDQXFJSFJ2SUdKbElHUmxZMjkxY0d4bFpDQm1jbTl0SUdsdWFtVmpkR2x2YmlCdlppQjBhR1VnWVdOMGRXRnNJSEJzZFdkcGJuTWdjMjhnZEdoaGRDQnZjbVJsY21sdVp5QnBjMXh1SUNBZ0tpQmhiSGRoZVhNZ1pHVjBaWEp0YVc1cGMzUnBZeUJ5WldkaGNtUnNaWE56SUc5bUlIQmhZMnRoWjJsdVp5d2diMjR0ZEdobExXWnNlU0JwYm1wbFkzUnBiMjRzSUdWMFl5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRoY25KaGVYMGdTVzVxWldOMFpXUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaUJBYzJWbElIdEZkbVZ1ZEZCc2RXZHBia2gxWWk1cGJtcGxZM1JwYjI0dWFXNXFaV04wUlhabGJuUlFiSFZuYVc1UGNtUmxjbjFjYmlBZ0lDb3ZYRzRnSUdsdWFtVmpkRVYyWlc1MFVHeDFaMmx1VDNKa1pYSTZJR1oxYm1OMGFXOXVJQ2hKYm1wbFkzUmxaRVYyWlc1MFVHeDFaMmx1VDNKa1pYSXBJSHRjYmlBZ0lDQWhJVVYyWlc1MFVHeDFaMmx1VDNKa1pYSWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVUb2dRMkZ1Ym05MElHbHVhbVZqZENCbGRtVnVkQ0J3YkhWbmFXNGdiM0prWlhKcGJtY2diVzl5WlNCMGFHRnVJQ2NnS3lBbmIyNWpaUzRnV1c5MUlHRnlaU0JzYVd0bGJIa2dkSEo1YVc1bklIUnZJR3h2WVdRZ2JXOXlaU0IwYUdGdUlHOXVaU0JqYjNCNUlHOW1JRkpsWVdOMExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0F2THlCRGJHOXVaU0IwYUdVZ2IzSmtaWEpwYm1jZ2MyOGdhWFFnWTJGdWJtOTBJR0psSUdSNWJtRnRhV05oYkd4NUlHMTFkR0YwWldRdVhHNGdJQ0FnUlhabGJuUlFiSFZuYVc1UGNtUmxjaUE5SUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YkdsalpTNWpZV3hzS0VsdWFtVmpkR1ZrUlhabGJuUlFiSFZuYVc1UGNtUmxjaWs3WEc0Z0lDQWdjbVZqYjIxd2RYUmxVR3gxWjJsdVQzSmtaWEpwYm1jb0tUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1cVpXTjBjeUJ3YkhWbmFXNXpJSFJ2SUdKbElIVnpaV1FnWW5rZ1lFVjJaVzUwVUd4MVoybHVTSFZpWUM0Z1ZHaGxJSEJzZFdkcGJpQnVZVzFsY3lCdGRYTjBJR0psWEc0Z0lDQXFJR2x1SUhSb1pTQnZjbVJsY21sdVp5QnBibXBsWTNSbFpDQmllU0JnYVc1cVpXTjBSWFpsYm5SUWJIVm5hVzVQY21SbGNtQXVYRzRnSUNBcVhHNGdJQ0FxSUZCc2RXZHBibk1nWTJGdUlHSmxJR2x1YW1WamRHVmtJR0Z6SUhCaGNuUWdiMllnY0dGblpTQnBibWwwYVdGc2FYcGhkR2x2YmlCdmNpQnZiaTEwYUdVdFpteDVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYVc1cVpXTjBaV1JPWVcxbGMxUnZVR3gxWjJsdWN5Qk5ZWEFnWm5KdmJTQnVZVzFsY3lCMGJ5QndiSFZuYVc0Z2JXOWtkV3hsY3k1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFJRUJ6WldVZ2UwVjJaVzUwVUd4MVoybHVTSFZpTG1sdWFtVmpkR2x2Ymk1cGJtcGxZM1JGZG1WdWRGQnNkV2RwYm5OQ2VVNWhiV1Y5WEc0Z0lDQXFMMXh1SUNCcGJtcGxZM1JGZG1WdWRGQnNkV2RwYm5OQ2VVNWhiV1U2SUdaMWJtTjBhVzl1SUNocGJtcGxZM1JsWkU1aGJXVnpWRzlRYkhWbmFXNXpLU0I3WEc0Z0lDQWdkbUZ5SUdselQzSmtaWEpwYm1kRWFYSjBlU0E5SUdaaGJITmxPMXh1SUNBZ0lHWnZjaUFvZG1GeUlIQnNkV2RwYms1aGJXVWdhVzRnYVc1cVpXTjBaV1JPWVcxbGMxUnZVR3gxWjJsdWN5a2dlMXh1SUNBZ0lDQWdhV1lnS0NGcGJtcGxZM1JsWkU1aGJXVnpWRzlRYkhWbmFXNXpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnNkV2RwYms1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZG1GeUlGQnNkV2RwYmsxdlpIVnNaU0E5SUdsdWFtVmpkR1ZrVG1GdFpYTlViMUJzZFdkcGJuTmJjR3gxWjJsdVRtRnRaVjA3WEc0Z0lDQWdJQ0JwWmlBb0lXNWhiV1Z6Vkc5UWJIVm5hVzV6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJzZFdkcGJrNWhiV1VwSUh4OElHNWhiV1Z6Vkc5UWJIVm5hVzV6VzNCc2RXZHBiazVoYldWZElDRTlQU0JRYkhWbmFXNU5iMlIxYkdVcElIdGNiaUFnSUNBZ0lDQWdJU0Z1WVcxbGMxUnZVR3gxWjJsdWMxdHdiSFZuYVc1T1lXMWxYU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVPaUJEWVc1dWIzUWdhVzVxWldOMElIUjNieUJrYVdabVpYSmxiblFnWlhabGJuUWdjR3gxWjJsdWN5QW5JQ3NnSjNWemFXNW5JSFJvWlNCellXMWxJRzVoYldVc0lHQWxjMkF1Snl3Z2NHeDFaMmx1VG1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNCdVlXMWxjMVJ2VUd4MVoybHVjMXR3YkhWbmFXNU9ZVzFsWFNBOUlGQnNkV2RwYmsxdlpIVnNaVHRjYmlBZ0lDQWdJQ0FnYVhOUGNtUmxjbWx1WjBScGNuUjVJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHbHpUM0prWlhKcGJtZEVhWEowZVNrZ2UxeHVJQ0FnSUNBZ2NtVmpiMjF3ZFhSbFVHeDFaMmx1VDNKa1pYSnBibWNvS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFeHZiMnR6SUhWd0lIUm9aU0J3YkhWbmFXNGdabTl5SUhSb1pTQnpkWEJ3YkdsbFpDQmxkbVZ1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHVjJaVzUwSUVFZ2MzbHVkR2hsZEdsaklHVjJaVzUwTGx4dUlDQWdLaUJBY21WMGRYSnVJSHMvYjJKcVpXTjBmU0JVYUdVZ2NHeDFaMmx1SUhSb1lYUWdZM0psWVhSbFpDQjBhR1VnYzNWd2NHeHBaV1FnWlhabGJuUXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdaMlYwVUd4MVoybHVUVzlrZFd4bFJtOXlSWFpsYm5RNklHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUhaaGNpQmthWE53WVhSamFFTnZibVpwWnlBOUlHVjJaVzUwTG1ScGMzQmhkR05vUTI5dVptbG5PMXh1SUNBZ0lHbG1JQ2hrYVhOd1lYUmphRU52Ym1acFp5NXlaV2RwYzNSeVlYUnBiMjVPWVcxbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsYzF0a2FYTndZWFJqYUVOdmJtWnBaeTV5WldkcGMzUnlZWFJwYjI1T1lXMWxYU0I4ZkNCdWRXeHNPMXh1SUNBZ0lIMWNiaUFnSUNCbWIzSWdLSFpoY2lCd2FHRnpaU0JwYmlCa2FYTndZWFJqYUVOdmJtWnBaeTV3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0NGa2FYTndZWFJqYUVOdmJtWnBaeTV3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2FHRnpaU2twSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCMllYSWdVR3gxWjJsdVRXOWtkV3hsSUQwZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsYzF0a2FYTndZWFJqYUVOdmJtWnBaeTV3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGMxdHdhR0Z6WlYxZE8xeHVJQ0FnSUNBZ2FXWWdLRkJzZFdkcGJrMXZaSFZzWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1VHeDFaMmx1VFc5a2RXeGxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUlhod2IzTmxaQ0JtYjNJZ2RXNXBkQ0IwWlhOMGFXNW5MbHh1SUNBZ0tpQkFjSEpwZG1GMFpWeHVJQ0FnS2k5Y2JpQWdYM0psYzJWMFJYWmxiblJRYkhWbmFXNXpPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnUlhabGJuUlFiSFZuYVc1UGNtUmxjaUE5SUc1MWJHdzdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NHeDFaMmx1VG1GdFpTQnBiaUJ1WVcxbGMxUnZVR3gxWjJsdWN5a2dlMXh1SUNBZ0lDQWdhV1lnS0c1aGJXVnpWRzlRYkhWbmFXNXpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnNkV2RwYms1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUdSbGJHVjBaU0J1WVcxbGMxUnZVR3gxWjJsdWMxdHdiSFZuYVc1T1lXMWxYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXdiSFZuYVc1ekxteGxibWQwYUNBOUlEQTdYRzVjYmlBZ0lDQjJZWElnWlhabGJuUk9ZVzFsUkdsemNHRjBZMmhEYjI1bWFXZHpJRDBnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1bGRtVnVkRTVoYldWRWFYTndZWFJqYUVOdmJtWnBaM003WEc0Z0lDQWdabTl5SUNoMllYSWdaWFpsYm5ST1lXMWxJR2x1SUdWMlpXNTBUbUZ0WlVScGMzQmhkR05vUTI5dVptbG5jeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHVjJaVzUwVG1GdFpVUnBjM0JoZEdOb1EyOXVabWxuY3k1b1lYTlBkMjVRY205d1pYSjBlU2hsZG1WdWRFNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lHUmxiR1YwWlNCbGRtVnVkRTVoYldWRWFYTndZWFJqYUVOdmJtWnBaM05iWlhabGJuUk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE1nUFNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6TzF4dUlDQWdJR1p2Y2lBb2RtRnlJSEpsWjJsemRISmhkR2x2Yms1aGJXVWdhVzRnY21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTXBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHlaV2RwYzNSeVlYUnBiMjVPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JrWld4bGRHVWdjbVZuYVhOMGNtRjBhVzl1VG1GdFpVMXZaSFZzWlhOYmNtVm5hWE4wY21GMGFXOXVUbUZ0WlYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllVHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQbHVnaW5VdGlsc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIFJlYWN0RXJyb3JVdGlscyA9IHJlcXVpcmUoJy4vUmVhY3RFcnJvclV0aWxzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEluamVjdGVkIGRlcGVuZGVuY2llczpcbiAqL1xuXG4vKipcbiAqIC0gYE1vdW50YDogW3JlcXVpcmVkXSBNb2R1bGUgdGhhdCBjYW4gY29udmVydCBiZXR3ZWVuIFJlYWN0IGRvbSBJRHMgYW5kXG4gKiAgIGFjdHVhbCBub2RlIHJlZmVyZW5jZXMuXG4gKi9cbnZhciBpbmplY3Rpb24gPSB7XG4gIE1vdW50OiBudWxsLFxuICBpbmplY3RNb3VudDogZnVuY3Rpb24gKEluamVjdGVkTW91bnQpIHtcbiAgICBpbmplY3Rpb24uTW91bnQgPSBJbmplY3RlZE1vdW50O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhJbmplY3RlZE1vdW50ICYmIEluamVjdGVkTW91bnQuZ2V0Tm9kZSAmJiBJbmplY3RlZE1vdW50LmdldElELCAnRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0TW91bnQoLi4uKTogSW5qZWN0ZWQgTW91bnQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBnZXROb2RlIG9yIGdldElELicpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xuXG5mdW5jdGlvbiBpc0VuZGlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZVVwIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BUb3VjaEVuZCB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wVG91Y2hDYW5jZWw7XG59XG5cbmZ1bmN0aW9uIGlzTW92ZWlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU1vdmUgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoTW92ZTtcbn1cbmZ1bmN0aW9uIGlzU3RhcnRpc2godG9wTGV2ZWxUeXBlKSB7XG4gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wTW91c2VEb3duIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BUb3VjaFN0YXJ0O1xufVxuXG52YXIgdmFsaWRhdGVFdmVudERpc3BhdGNoZXM7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgICB2YXIgZGlzcGF0Y2hJRHMgPSBldmVudC5fZGlzcGF0Y2hJRHM7XG5cbiAgICB2YXIgbGlzdGVuZXJzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKTtcbiAgICB2YXIgaWRzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSURzKTtcbiAgICB2YXIgSURzTGVuID0gaWRzSXNBcnIgPyBkaXNwYXRjaElEcy5sZW5ndGggOiBkaXNwYXRjaElEcyA/IDEgOiAwO1xuICAgIHZhciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aCA6IGRpc3BhdGNoTGlzdGVuZXJzID8gMSA6IDA7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpZHNJc0FyciA9PT0gbGlzdGVuZXJzSXNBcnIgJiYgSURzTGVuID09PSBsaXN0ZW5lcnNMZW4sICdFdmVudFBsdWdpblV0aWxzOiBJbnZhbGlkIGBldmVudGAuJykgOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggdGhlIGV2ZW50IHRvIHRoZSBsaXN0ZW5lci5cbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50IFN5bnRoZXRpY0V2ZW50IHRvIGhhbmRsZVxuICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBsaXN0ZW5lciBBcHBsaWNhdGlvbi1sZXZlbCBjYWxsYmFja1xuICogQHBhcmFtIHtzdHJpbmd9IGRvbUlEIERPTSBpZCB0byBwYXNzIHRvIHRoZSBjYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBkb21JRCkge1xuICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgJ3Vua25vd24tZXZlbnQnO1xuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gaW5qZWN0aW9uLk1vdW50LmdldE5vZGUoZG9tSUQpO1xuICBpZiAoc2ltdWxhdGVkKSB7XG4gICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQsIGRvbUlEKTtcbiAgfSBlbHNlIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKHR5cGUsIGxpc3RlbmVyLCBldmVudCwgZG9tSUQpO1xuICB9XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaElEcyA9IGV2ZW50Ll9kaXNwYXRjaElEcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMgYW5kIElEcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cbiAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVyc1tpXSwgZGlzcGF0Y2hJRHNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykge1xuICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0Y2hJRHMpO1xuICB9XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaElEcyA9IG51bGw7XG59XG5cbi8qKlxuICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wc1xuICogYXQgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC5cbiAqXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnNcbiAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJRHMgPSBldmVudC5fZGlzcGF0Y2hJRHM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuZXJzIGFuZCBJRHMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMuXG4gICAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3BhdGNoSURzW2ldKSkge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hJRHNbaV07XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRjaElEcykpIHtcbiAgICAgIHJldHVybiBkaXNwYXRjaElEcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHNlZSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbFxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7XG4gIHZhciByZXQgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCk7XG4gIGV2ZW50Ll9kaXNwYXRjaElEcyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogRXhlY3V0aW9uIG9mIGEgXCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2hcbiAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9yLiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlXG4gKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICogcmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdoZW5cbiAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwiIGRpc3BhdGNoZXMuXG4gKlxuICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhlIHNpbmdsZSBkaXNwYXRjaC5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2ZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIHZhciBkaXNwYXRjaExpc3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJRCA9IGV2ZW50Ll9kaXNwYXRjaElEcztcbiAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2V4ZWN1dGVEaXJlY3REaXNwYXRjaCguLi4pOiBJbnZhbGlkIGBldmVudGAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIoZXZlbnQsIGRpc3BhdGNoSUQpIDogbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoSURzID0gbnVsbDtcbiAgcmV0dXJuIHJlcztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZmYgbnVtYmVyIG9mIGRpc3BhdGNoZXMgYWNjdW11bGF0ZWQgaXMgZ3JlYXRlciB0aGFuIDAuXG4gKi9cbmZ1bmN0aW9uIGhhc0Rpc3BhdGNoZXMoZXZlbnQpIHtcbiAgcmV0dXJuICEhZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xufVxuXG4vKipcbiAqIEdlbmVyYWwgdXRpbGl0aWVzIHRoYXQgYXJlIHVzZWZ1bCBpbiBjcmVhdGluZyBjdXN0b20gRXZlbnQgUGx1Z2lucy5cbiAqL1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSB7XG4gIGlzRW5kaXNoOiBpc0VuZGlzaCxcbiAgaXNNb3ZlaXNoOiBpc01vdmVpc2gsXG4gIGlzU3RhcnRpc2g6IGlzU3RhcnRpc2gsXG5cbiAgZXhlY3V0ZURpcmVjdERpc3BhdGNoOiBleGVjdXRlRGlyZWN0RGlzcGF0Y2gsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyLFxuICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlLFxuICBoYXNEaXNwYXRjaGVzOiBoYXNEaXNwYXRjaGVzLFxuXG4gIGdldE5vZGU6IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBpbmplY3Rpb24uTW91bnQuZ2V0Tm9kZShpZCk7XG4gIH0sXG4gIGdldElEOiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBpbmplY3Rpb24uTW91bnQuZ2V0SUQobm9kZSk7XG4gIH0sXG5cbiAgaW5qZWN0aW9uOiBpbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5VdGlscztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOUZkbVZ1ZEZCc2RXZHBibFYwYVd4ekxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRVYyWlc1MFVHeDFaMmx1VlhScGJITmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJGZG1WdWRFTnZibk4wWVc1MGN5QTlJSEpsY1hWcGNtVW9KeTR2UlhabGJuUkRiMjV6ZEdGdWRITW5LVHRjYm5aaGNpQlNaV0ZqZEVWeWNtOXlWWFJwYkhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJYSnliM0pWZEdsc2N5Y3BPMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVMeW9xWEc0Z0tpQkpibXBsWTNSbFpDQmtaWEJsYm1SbGJtTnBaWE02WEc0Z0tpOWNibHh1THlvcVhHNGdLaUF0SUdCTmIzVnVkR0E2SUZ0eVpYRjFhWEpsWkYwZ1RXOWtkV3hsSUhSb1lYUWdZMkZ1SUdOdmJuWmxjblFnWW1WMGQyVmxiaUJTWldGamRDQmtiMjBnU1VSeklHRnVaRnh1SUNvZ0lDQmhZM1IxWVd3Z2JtOWtaU0J5WldabGNtVnVZMlZ6TGx4dUlDb3ZYRzUyWVhJZ2FXNXFaV04wYVc5dUlEMGdlMXh1SUNCTmIzVnVkRG9nYm5Wc2JDeGNiaUFnYVc1cVpXTjBUVzkxYm5RNklHWjFibU4wYVc5dUlDaEpibXBsWTNSbFpFMXZkVzUwS1NCN1hHNGdJQ0FnYVc1cVpXTjBhVzl1TGsxdmRXNTBJRDBnU1c1cVpXTjBaV1JOYjNWdWREdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1NXNXFaV04wWldSTmIzVnVkQ0FtSmlCSmJtcGxZM1JsWkUxdmRXNTBMbWRsZEU1dlpHVWdKaVlnU1c1cVpXTjBaV1JOYjNWdWRDNW5aWFJKUkN3Z0owVjJaVzUwVUd4MVoybHVWWFJwYkhNdWFXNXFaV04wYVc5dUxtbHVhbVZqZEUxdmRXNTBLQzR1TGlrNklFbHVhbVZqZEdWa0lFMXZkVzUwSUNjZ0t5QW5iVzlrZFd4bElHbHpJRzFwYzNOcGJtY2daMlYwVG05a1pTQnZjaUJuWlhSSlJDNG5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUIwYjNCTVpYWmxiRlI1Y0dWeklEMGdSWFpsYm5SRGIyNXpkR0Z1ZEhNdWRHOXdUR1YyWld4VWVYQmxjenRjYmx4dVpuVnVZM1JwYjI0Z2FYTkZibVJwYzJnb2RHOXdUR1YyWld4VWVYQmxLU0I3WEc0Z0lISmxkSFZ5YmlCMGIzQk1aWFpsYkZSNWNHVWdQVDA5SUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VFc5MWMyVlZjQ0I4ZkNCMGIzQk1aWFpsYkZSNWNHVWdQVDA5SUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vkc5MVkyaEZibVFnZkh3Z2RHOXdUR1YyWld4VWVYQmxJRDA5UFNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZSdmRXTm9RMkZ1WTJWc08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCcGMwMXZkbVZwYzJnb2RHOXdUR1YyWld4VWVYQmxLU0I3WEc0Z0lISmxkSFZ5YmlCMGIzQk1aWFpsYkZSNWNHVWdQVDA5SUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VFc5MWMyVk5iM1psSUh4OElIUnZjRXhsZG1Wc1ZIbHdaU0E5UFQwZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVWIzVmphRTF2ZG1VN1hHNTlYRzVtZFc1amRHbHZiaUJwYzFOMFlYSjBhWE5vS0hSdmNFeGxkbVZzVkhsd1pTa2dlMXh1SUNCeVpYUjFjbTRnZEc5d1RHVjJaV3hVZVhCbElEMDlQU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRTF2ZFhObFJHOTNiaUI4ZkNCMGIzQk1aWFpsYkZSNWNHVWdQVDA5SUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vkc5MVkyaFRkR0Z5ZER0Y2JuMWNibHh1ZG1GeUlIWmhiR2xrWVhSbFJYWmxiblJFYVhOd1lYUmphR1Z6TzF4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdkbUZzYVdSaGRHVkZkbVZ1ZEVScGMzQmhkR05vWlhNZ1BTQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNCMllYSWdaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTWdQU0JsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTTdYRzRnSUNBZ2RtRnlJR1JwYzNCaGRHTm9TVVJ6SUQwZ1pYWmxiblF1WDJScGMzQmhkR05vU1VSek8xeHVYRzRnSUNBZ2RtRnlJR3hwYzNSbGJtVnljMGx6UVhKeUlEMGdRWEp5WVhrdWFYTkJjbkpoZVNoa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3lrN1hHNGdJQ0FnZG1GeUlHbGtjMGx6UVhKeUlEMGdRWEp5WVhrdWFYTkJjbkpoZVNoa2FYTndZWFJqYUVsRWN5azdYRzRnSUNBZ2RtRnlJRWxFYzB4bGJpQTlJR2xrYzBselFYSnlJRDhnWkdsemNHRjBZMmhKUkhNdWJHVnVaM1JvSURvZ1pHbHpjR0YwWTJoSlJITWdQeUF4SURvZ01EdGNiaUFnSUNCMllYSWdiR2x6ZEdWdVpYSnpUR1Z1SUQwZ2JHbHpkR1Z1WlhKelNYTkJjbklnUHlCa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3k1c1pXNW5kR2dnT2lCa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3lBL0lERWdPaUF3TzF4dVhHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2FXUnpTWE5CY25JZ1BUMDlJR3hwYzNSbGJtVnljMGx6UVhKeUlDWW1JRWxFYzB4bGJpQTlQVDBnYkdsemRHVnVaWEp6VEdWdUxDQW5SWFpsYm5SUWJIVm5hVzVWZEdsc2N6b2dTVzUyWVd4cFpDQmdaWFpsYm5SZ0xpY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFUnBjM0JoZEdOb0lIUm9aU0JsZG1WdWRDQjBieUIwYUdVZ2JHbHpkR1Z1WlhJdVhHNGdLaUJBY0dGeVlXMGdlMU41Ym5Sb1pYUnBZMFYyWlc1MGZTQmxkbVZ1ZENCVGVXNTBhR1YwYVdORmRtVnVkQ0IwYnlCb1lXNWtiR1ZjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ2MybHRkV3hoZEdWa0lFbG1JSFJvWlNCbGRtVnVkQ0JwY3lCemFXMTFiR0YwWldRZ0tHTm9ZVzVuWlhNZ1pYaHVJR0psYUdGMmFXOXlLVnh1SUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ2JHbHpkR1Z1WlhJZ1FYQndiR2xqWVhScGIyNHRiR1YyWld3Z1kyRnNiR0poWTJ0Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmtiMjFKUkNCRVQwMGdhV1FnZEc4Z2NHRnpjeUIwYnlCMGFHVWdZMkZzYkdKaFkyc3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHVjRaV04xZEdWRWFYTndZWFJqYUNobGRtVnVkQ3dnYzJsdGRXeGhkR1ZrTENCc2FYTjBaVzVsY2l3Z1pHOXRTVVFwSUh0Y2JpQWdkbUZ5SUhSNWNHVWdQU0JsZG1WdWRDNTBlWEJsSUh4OElDZDFibXR1YjNkdUxXVjJaVzUwSnp0Y2JpQWdaWFpsYm5RdVkzVnljbVZ1ZEZSaGNtZGxkQ0E5SUdsdWFtVmpkR2x2Ymk1TmIzVnVkQzVuWlhST2IyUmxLR1J2YlVsRUtUdGNiaUFnYVdZZ0tITnBiWFZzWVhSbFpDa2dlMXh1SUNBZ0lGSmxZV04wUlhKeWIzSlZkR2xzY3k1cGJuWnZhMlZIZFdGeVpHVmtRMkZzYkdKaFkydFhhWFJvUTJGMFkyZ29kSGx3WlN3Z2JHbHpkR1Z1WlhJc0lHVjJaVzUwTENCa2IyMUpSQ2s3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnVW1WaFkzUkZjbkp2Y2xWMGFXeHpMbWx1ZG05clpVZDFZWEprWldSRFlXeHNZbUZqYXloMGVYQmxMQ0JzYVhOMFpXNWxjaXdnWlhabGJuUXNJR1J2YlVsRUtUdGNiaUFnZlZ4dUlDQmxkbVZ1ZEM1amRYSnlaVzUwVkdGeVoyVjBJRDBnYm5Wc2JEdGNibjFjYmx4dUx5b3FYRzRnS2lCVGRHRnVaR0Z5WkM5emFXMXdiR1VnYVhSbGNtRjBhVzl1SUhSb2NtOTFaMmdnWVc0Z1pYWmxiblFuY3lCamIyeHNaV04wWldRZ1pHbHpjR0YwWTJobGN5NWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pYaGxZM1YwWlVScGMzQmhkR05vWlhOSmJrOXlaR1Z5S0dWMlpXNTBMQ0J6YVcxMWJHRjBaV1FwSUh0Y2JpQWdkbUZ5SUdScGMzQmhkR05vVEdsemRHVnVaWEp6SUQwZ1pYWmxiblF1WDJScGMzQmhkR05vVEdsemRHVnVaWEp6TzF4dUlDQjJZWElnWkdsemNHRjBZMmhKUkhNZ1BTQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoSlJITTdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdkbUZzYVdSaGRHVkZkbVZ1ZEVScGMzQmhkR05vWlhNb1pYWmxiblFwTzF4dUlDQjlYRzRnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0dScGMzQmhkR05vVEdsemRHVnVaWEp6S1NrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1pHbHpjR0YwWTJoTWFYTjBaVzVsY25NdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR2xtSUNobGRtVnVkQzVwYzFCeWIzQmhaMkYwYVc5dVUzUnZjSEJsWkNncEtTQjdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdUR2x6ZEdWdVpYSnpJR0Z1WkNCSlJITWdZWEpsSUhSM2J5QndZWEpoYkd4bGJDQmhjbkpoZVhNZ2RHaGhkQ0JoY21VZ1lXeDNZWGx6SUdsdUlITjVibU11WEc0Z0lDQWdJQ0JsZUdWamRYUmxSR2x6Y0dGMFkyZ29aWFpsYm5Rc0lITnBiWFZzWVhSbFpDd2daR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTmJhVjBzSUdScGMzQmhkR05vU1VSelcybGRLVHRjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0JwWmlBb1pHbHpjR0YwWTJoTWFYTjBaVzVsY25NcElIdGNiaUFnSUNCbGVHVmpkWFJsUkdsemNHRjBZMmdvWlhabGJuUXNJSE5wYlhWc1lYUmxaQ3dnWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1zSUdScGMzQmhkR05vU1VSektUdGNiaUFnZlZ4dUlDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25NZ1BTQnVkV3hzTzF4dUlDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoSlJITWdQU0J1ZFd4c08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMFlXNWtZWEprTDNOcGJYQnNaU0JwZEdWeVlYUnBiMjRnZEdoeWIzVm5hQ0JoYmlCbGRtVnVkQ2R6SUdOdmJHeGxZM1JsWkNCa2FYTndZWFJqYUdWekxDQmlkWFFnYzNSdmNITmNiaUFxSUdGMElIUm9aU0JtYVhKemRDQmthWE53WVhSamFDQmxlR1ZqZFhScGIyNGdjbVYwZFhKdWFXNW5JSFJ5ZFdVc0lHRnVaQ0J5WlhSMWNtNXpJSFJvWVhRZ2FXUXVYRzRnS2x4dUlDb2dRSEpsZEhWeWJpQjdQM04wY21sdVozMGdhV1FnYjJZZ2RHaGxJR1pwY25OMElHUnBjM0JoZEdOb0lHVjRaV04xZEdsdmJpQjNhRzhuY3lCc2FYTjBaVzVsY2lCeVpYUjFjbTV6WEc0Z0tpQjBjblZsTENCdmNpQnVkV3hzSUdsbUlHNXZJR3hwYzNSbGJtVnlJSEpsZEhWeWJtVmtJSFJ5ZFdVdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6U1c1UGNtUmxjbE4wYjNCQmRGUnlkV1ZKYlhCc0tHVjJaVzUwS1NCN1hHNGdJSFpoY2lCa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3lBOUlHVjJaVzUwTGw5a2FYTndZWFJqYUV4cGMzUmxibVZ5Y3p0Y2JpQWdkbUZ5SUdScGMzQmhkR05vU1VSeklEMGdaWFpsYm5RdVgyUnBjM0JoZEdOb1NVUnpPMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSFpoYkdsa1lYUmxSWFpsYm5SRWFYTndZWFJqYUdWektHVjJaVzUwS1R0Y2JpQWdmVnh1SUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3lrcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHUnBjM0JoZEdOb1RHbHpkR1Z1WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pYWmxiblF1YVhOUWNtOXdZV2RoZEdsdmJsTjBiM0J3WldRb0tTa2dlMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDOHZJRXhwYzNSbGJtVnljeUJoYm1RZ1NVUnpJR0Z5WlNCMGQyOGdjR0Z5WVd4c1pXd2dZWEp5WVhseklIUm9ZWFFnWVhKbElHRnNkMkY1Y3lCcGJpQnplVzVqTGx4dUlDQWdJQ0FnYVdZZ0tHUnBjM0JoZEdOb1RHbHpkR1Z1WlhKelcybGRLR1YyWlc1MExDQmthWE53WVhSamFFbEVjMXRwWFNrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHUnBjM0JoZEdOb1NVUnpXMmxkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUdsbUlDaGthWE53WVhSamFFeHBjM1JsYm1WeWN5a2dlMXh1SUNBZ0lHbG1JQ2hrYVhOd1lYUmphRXhwYzNSbGJtVnljeWhsZG1WdWRDd2daR2x6Y0dGMFkyaEpSSE1wS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWkdsemNHRjBZMmhKUkhNN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJ1ZFd4c08xeHVmVnh1WEc0dktpcGNiaUFxSUVCelpXVWdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkpiazl5WkdWeVUzUnZjRUYwVkhKMVpVbHRjR3hjYmlBcUwxeHVablZ1WTNScGIyNGdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkpiazl5WkdWeVUzUnZjRUYwVkhKMVpTaGxkbVZ1ZENrZ2UxeHVJQ0IyWVhJZ2NtVjBJRDBnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5KYms5eVpHVnlVM1J2Y0VGMFZISjFaVWx0Y0d3b1pYWmxiblFwTzF4dUlDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoSlJITWdQU0J1ZFd4c08xeHVJQ0JsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTWdQU0J1ZFd4c08xeHVJQ0J5WlhSMWNtNGdjbVYwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVY0WldOMWRHbHZiaUJ2WmlCaElGd2laR2x5WldOMFhDSWdaR2x6Y0dGMFkyZ2dMU0IwYUdWeVpTQnRkWE4wSUdKbElHRjBJRzF2YzNRZ2IyNWxJR1JwYzNCaGRHTm9YRzRnS2lCaFkyTjFiWFZzWVhSbFpDQnZiaUIwYUdVZ1pYWmxiblFnYjNJZ2FYUWdhWE1nWTI5dWMybGtaWEpsWkNCaGJpQmxjbkp2Y2k0Z1NYUWdaRzlsYzI0bmRDQnlaV0ZzYkhrZ2JXRnJaVnh1SUNvZ2MyVnVjMlVnWm05eUlHRnVJR1YyWlc1MElIZHBkR2dnYlhWc2RHbHdiR1VnWkdsemNHRjBZMmhsY3lBb1luVmlZbXhsWkNrZ2RHOGdhMlZsY0NCMGNtRmpheUJ2WmlCMGFHVmNiaUFxSUhKbGRIVnliaUIyWVd4MVpYTWdZWFFnWldGamFDQmthWE53WVhSamFDQmxlR1ZqZFhScGIyNHNJR0oxZENCcGRDQmtiMlZ6SUhSbGJtUWdkRzhnYldGclpTQnpaVzV6WlNCM2FHVnVYRzRnS2lCa1pXRnNhVzVuSUhkcGRHZ2dYQ0prYVhKbFkzUmNJaUJrYVhOd1lYUmphR1Z6TGx4dUlDcGNiaUFxSUVCeVpYUjFjbTRnZXlwOUlGUm9aU0J5WlhSMWNtNGdkbUZzZFdVZ2IyWWdaWGhsWTNWMGFXNW5JSFJvWlNCemFXNW5iR1VnWkdsemNHRjBZMmd1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1Y0WldOMWRHVkVhWEpsWTNSRWFYTndZWFJqYUNobGRtVnVkQ2tnZTF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhaaGJHbGtZWFJsUlhabGJuUkVhWE53WVhSamFHVnpLR1YyWlc1MEtUdGNiaUFnZlZ4dUlDQjJZWElnWkdsemNHRjBZMmhNYVhOMFpXNWxjaUE5SUdWMlpXNTBMbDlrYVhOd1lYUmphRXhwYzNSbGJtVnljenRjYmlBZ2RtRnlJR1JwYzNCaGRHTm9TVVFnUFNCbGRtVnVkQzVmWkdsemNHRjBZMmhKUkhNN1hHNGdJQ0VoUVhKeVlYa3VhWE5CY25KaGVTaGthWE53WVhSamFFeHBjM1JsYm1WeUtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkbGVHVmpkWFJsUkdseVpXTjBSR2x6Y0dGMFkyZ29MaTR1S1RvZ1NXNTJZV3hwWkNCZ1pYWmxiblJnTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2RtRnlJSEpsY3lBOUlHUnBjM0JoZEdOb1RHbHpkR1Z1WlhJZ1B5QmthWE53WVhSamFFeHBjM1JsYm1WeUtHVjJaVzUwTENCa2FYTndZWFJqYUVsRUtTQTZJRzUxYkd3N1hHNGdJR1YyWlc1MExsOWthWE53WVhSamFFeHBjM1JsYm1WeWN5QTlJRzUxYkd3N1hHNGdJR1YyWlc1MExsOWthWE53WVhSamFFbEVjeUE5SUc1MWJHdzdYRzRnSUhKbGRIVnliaUJ5WlhNN1hHNTlYRzVjYmk4cUtseHVJQ29nUUhCaGNtRnRJSHRUZVc1MGFHVjBhV05GZG1WdWRIMGdaWFpsYm5SY2JpQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWm1JRzUxYldKbGNpQnZaaUJrYVhOd1lYUmphR1Z6SUdGalkzVnRkV3hoZEdWa0lHbHpJR2R5WldGMFpYSWdkR2hoYmlBd0xseHVJQ292WEc1bWRXNWpkR2x2YmlCb1lYTkVhWE53WVhSamFHVnpLR1YyWlc1MEtTQjdYRzRnSUhKbGRIVnliaUFoSVdWMlpXNTBMbDlrYVhOd1lYUmphRXhwYzNSbGJtVnljenRjYm4xY2JseHVMeW9xWEc0Z0tpQkhaVzVsY21Gc0lIVjBhV3hwZEdsbGN5QjBhR0YwSUdGeVpTQjFjMlZtZFd3Z2FXNGdZM0psWVhScGJtY2dZM1Z6ZEc5dElFVjJaVzUwSUZCc2RXZHBibk11WEc0Z0tpOWNiblpoY2lCRmRtVnVkRkJzZFdkcGJsVjBhV3h6SUQwZ2UxeHVJQ0JwYzBWdVpHbHphRG9nYVhORmJtUnBjMmdzWEc0Z0lHbHpUVzkyWldsemFEb2dhWE5OYjNabGFYTm9MRnh1SUNCcGMxTjBZWEowYVhOb09pQnBjMU4wWVhKMGFYTm9MRnh1WEc0Z0lHVjRaV04xZEdWRWFYSmxZM1JFYVhOd1lYUmphRG9nWlhobFkzVjBaVVJwY21WamRFUnBjM0JoZEdOb0xGeHVJQ0JsZUdWamRYUmxSR2x6Y0dGMFkyaGxjMGx1VDNKa1pYSTZJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpTVzVQY21SbGNpeGNiaUFnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5KYms5eVpHVnlVM1J2Y0VGMFZISjFaVG9nWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5KYms5eVpHVnlVM1J2Y0VGMFZISjFaU3hjYmlBZ2FHRnpSR2x6Y0dGMFkyaGxjem9nYUdGelJHbHpjR0YwWTJobGN5eGNibHh1SUNCblpYUk9iMlJsT2lCbWRXNWpkR2x2YmlBb2FXUXBJSHRjYmlBZ0lDQnlaWFIxY200Z2FXNXFaV04wYVc5dUxrMXZkVzUwTG1kbGRFNXZaR1VvYVdRcE8xeHVJQ0I5TEZ4dUlDQm5aWFJKUkRvZ1puVnVZM1JwYjI0Z0tHNXZaR1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdhVzVxWldOMGFXOXVMazF2ZFc1MExtZGxkRWxFS0c1dlpHVXBPMXh1SUNCOUxGeHVYRzRnSUdsdWFtVmpkR2x2YmpvZ2FXNXFaV04wYVc5dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUVWMlpXNTBVR3gxWjJsdVZYUnBiSE03SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQcm9wYWdhdG9yc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7XG5cbnZhciBQcm9wYWdhdGlvblBoYXNlcyA9IEV2ZW50Q29uc3RhbnRzLlByb3BhZ2F0aW9uUGhhc2VzO1xudmFyIGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7XG5cbi8qKlxuICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCByZWdpc3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudFxuICogXCJwaGFzZXNcIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5lcnMgYnkgYSBnaXZlbiBwaGFzZS5cbiAqL1xuZnVuY3Rpb24gbGlzdGVuZXJBdFBoYXNlKGlkLCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkge1xuICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdO1xuICByZXR1cm4gZ2V0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xufVxuXG4vKipcbiAqIFRhZ3MgYSBgU3ludGhldGljRXZlbnRgIHdpdGggZGlzcGF0Y2hlZCBsaXN0ZW5lcnMuIENyZWF0aW5nIHRoaXMgZnVuY3Rpb25cbiAqIGhlcmUsIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBiaW5kIG9yIGNyZWF0ZSBmdW5jdGlvbnMgZm9yIGVhY2ggZXZlbnQuXG4gKiBNdXRhdGluZyB0aGUgZXZlbnQncyBtZW1iZXJzIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBjcmVhdGUgYSB3cmFwcGluZ1xuICogXCJkaXNwYXRjaFwiIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhkb21JRCwgdXB3YXJkcywgZXZlbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkb21JRCwgJ0Rpc3BhdGNoaW5nIGlkIG11c3Qgbm90IGJlIG51bGwnKSA6IHVuZGVmaW5lZDtcbiAgfVxuICB2YXIgcGhhc2UgPSB1cHdhcmRzID8gUHJvcGFnYXRpb25QaGFzZXMuYnViYmxlZCA6IFByb3BhZ2F0aW9uUGhhc2VzLmNhcHR1cmVkO1xuICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lckF0UGhhc2UoZG9tSUQsIGV2ZW50LCBwaGFzZSk7XG4gIGlmIChsaXN0ZW5lcikge1xuICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpO1xuICAgIGV2ZW50Ll9kaXNwYXRjaElEcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaElEcywgZG9tSUQpO1xuICB9XG59XG5cbi8qKlxuICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdFxuICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG4gKiBlYWNoIGV2ZW50IGFuZCBwZXJmb3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhXG4gKiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXlcbiAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5nZXRJbnN0YW5jZUhhbmRsZSgpLnRyYXZlcnNlVHdvUGhhc2UoZXZlbnQuZGlzcGF0Y2hNYXJrZXIsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFNhbWUgYXMgYGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVgLCBidXQgc2tpcHMgb3ZlciB0aGUgdGFyZ2V0SUQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5nZXRJbnN0YW5jZUhhbmRsZSgpLnRyYXZlcnNlVHdvUGhhc2VTa2lwVGFyZ2V0KGV2ZW50LmRpc3BhdGNoTWFya2VyLCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2FyZCB0byBkaXJlY3Rpb24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZFxuICogcmVnaXN0cmF0aW9uIG5hbWVzLiBTYW1lIGFzIGBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhvdXRcbiAqIHJlcXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNwYXRjaGVkIElELlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhpZCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7XG4gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gICAgICBldmVudC5fZGlzcGF0Y2hJRHMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJRHMsIGlkKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9uIGFuIGBTeW50aGV0aWNFdmVudGAsIGJ1dCBvbmx5IGZvciB0aGVcbiAqIGBkaXNwYXRjaE1hcmtlcmAuXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudFxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIGFjY3VtdWxhdGVEaXNwYXRjaGVzKGV2ZW50LmRpc3BhdGNoTWFya2VyLCBudWxsLCBldmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb21JRCwgdG9JRCkge1xuICBFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uZ2V0SW5zdGFuY2VIYW5kbGUoKS50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbUlELCB0b0lELCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVudGVyKTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKTtcbn1cblxuLyoqXG4gKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0ZXJucywgZWFjaCBvZiB3aGljaCB3aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudFxuICogb2YgaW5mb3JtYXRpb24sIGFuZCBnZW5lcmF0ZSBhIHNldCBvZiBcImRpc3BhdGNoIHJlYWR5IGV2ZW50IG9iamVjdHNcIiAtIHdoaWNoXG4gKiBhcmUgc2V0cyBvZiBldmVudHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdGF0ZWQgd2l0aCBhIHNldCBvZiBkaXNwYXRjaGVkXG4gKiBsaXN0ZW5lciBmdW5jdGlvbnMvaWRzLiBUaGUgQVBJIGlzIGRlc2lnbmVkIHRoaXMgd2F5IHRvIGRpc2NvdXJhZ2UgdGhlc2VcbiAqIHByb3BhZ2F0aW9uIHN0cmF0ZWdpZXMgZnJvbSBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGRpc3BhdGNoZXMsIHNpbmNlIHdlXG4gKiBhbHdheXMgd2FudCB0byBjb2xsZWN0IHRoZSBlbnRpcmUgc2V0IG9mIGRpc3BhdGNoZXMgYmVmb3JlIGV4ZWN1dGluZyBldmVudCBhXG4gKiBzaW5nbGUgb25lLlxuICpcbiAqIEBjb25zdHJ1Y3RvciBFdmVudFByb3BhZ2F0b3JzXG4gKi9cbnZhciBFdmVudFByb3BhZ2F0b3JzID0ge1xuICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzLFxuICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQsXG4gIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyxcbiAgYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzOiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQcm9wYWdhdG9ycztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOUZkbVZ1ZEZCeWIzQmhaMkYwYjNKekxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQkZkbVZ1ZEZCeWIzQmhaMkYwYjNKelhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdSWFpsYm5SRGIyNXpkR0Z1ZEhNZ1BTQnlaWEYxYVhKbEtDY3VMMFYyWlc1MFEyOXVjM1JoYm5Sekp5azdYRzUyWVhJZ1JYWmxiblJRYkhWbmFXNUlkV0lnUFNCeVpYRjFhWEpsS0NjdUwwVjJaVzUwVUd4MVoybHVTSFZpSnlrN1hHNWNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzUyWVhJZ1lXTmpkVzExYkdGMFpVbHVkRzhnUFNCeVpYRjFhWEpsS0NjdUwyRmpZM1Z0ZFd4aGRHVkpiblJ2SnlrN1hHNTJZWElnWm05eVJXRmphRUZqWTNWdGRXeGhkR1ZrSUQwZ2NtVnhkV2x5WlNnbkxpOW1iM0pGWVdOb1FXTmpkVzExYkdGMFpXUW5LVHRjYmx4dWRtRnlJRkJ5YjNCaFoyRjBhVzl1VUdoaGMyVnpJRDBnUlhabGJuUkRiMjV6ZEdGdWRITXVVSEp2Y0dGbllYUnBiMjVRYUdGelpYTTdYRzUyWVhJZ1oyVjBUR2x6ZEdWdVpYSWdQU0JGZG1WdWRGQnNkV2RwYmtoMVlpNW5aWFJNYVhOMFpXNWxjanRjYmx4dUx5b3FYRzRnS2lCVGIyMWxJR1YyWlc1MElIUjVjR1Z6SUdoaGRtVWdZU0J1YjNScGIyNGdiMllnWkdsbVptVnlaVzUwSUhKbFoybHpkSEpoZEdsdmJpQnVZVzFsY3lCbWIzSWdaR2xtWm1WeVpXNTBYRzRnS2lCY0luQm9ZWE5sYzF3aUlHOW1JSEJ5YjNCaFoyRjBhVzl1TGlCVWFHbHpJR1pwYm1SeklHeHBjM1JsYm1WeWN5QmllU0JoSUdkcGRtVnVJSEJvWVhObExseHVJQ292WEc1bWRXNWpkR2x2YmlCc2FYTjBaVzVsY2tGMFVHaGhjMlVvYVdRc0lHVjJaVzUwTENCd2NtOXdZV2RoZEdsdmJsQm9ZWE5sS1NCN1hHNGdJSFpoY2lCeVpXZHBjM1J5WVhScGIyNU9ZVzFsSUQwZ1pYWmxiblF1WkdsemNHRjBZMmhEYjI1bWFXY3VjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhOYmNISnZjR0ZuWVhScGIyNVFhR0Z6WlYwN1hHNGdJSEpsZEhWeWJpQm5aWFJNYVhOMFpXNWxjaWhwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nVkdGbmN5QmhJR0JUZVc1MGFHVjBhV05GZG1WdWRHQWdkMmwwYUNCa2FYTndZWFJqYUdWa0lHeHBjM1JsYm1WeWN5NGdRM0psWVhScGJtY2dkR2hwY3lCbWRXNWpkR2x2Ymx4dUlDb2dhR1Z5WlN3Z1lXeHNiM2R6SUhWeklIUnZJRzV2ZENCb1lYWmxJSFJ2SUdKcGJtUWdiM0lnWTNKbFlYUmxJR1oxYm1OMGFXOXVjeUJtYjNJZ1pXRmphQ0JsZG1WdWRDNWNiaUFxSUUxMWRHRjBhVzVuSUhSb1pTQmxkbVZ1ZENkeklHMWxiV0psY25NZ1lXeHNiM2R6SUhWeklIUnZJRzV2ZENCb1lYWmxJSFJ2SUdOeVpXRjBaU0JoSUhkeVlYQndhVzVuWEc0Z0tpQmNJbVJwYzNCaGRHTm9YQ0lnYjJKcVpXTjBJSFJvWVhRZ2NHRnBjbk1nZEdobElHVjJaVzUwSUhkcGRHZ2dkR2hsSUd4cGMzUmxibVZ5TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJoWTJOMWJYVnNZWFJsUkdseVpXTjBhVzl1WVd4RWFYTndZWFJqYUdWektHUnZiVWxFTENCMWNIZGhjbVJ6TENCbGRtVnVkQ2tnZTF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHUnZiVWxFTENBblJHbHpjR0YwWTJocGJtY2dhV1FnYlhWemRDQnViM1FnWW1VZ2JuVnNiQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc0Z0lIWmhjaUJ3YUdGelpTQTlJSFZ3ZDJGeVpITWdQeUJRY205d1lXZGhkR2x2YmxCb1lYTmxjeTVpZFdKaWJHVmtJRG9nVUhKdmNHRm5ZWFJwYjI1UWFHRnpaWE11WTJGd2RIVnlaV1E3WEc0Z0lIWmhjaUJzYVhOMFpXNWxjaUE5SUd4cGMzUmxibVZ5UVhSUWFHRnpaU2hrYjIxSlJDd2daWFpsYm5Rc0lIQm9ZWE5sS1R0Y2JpQWdhV1lnS0d4cGMzUmxibVZ5S1NCN1hHNGdJQ0FnWlhabGJuUXVYMlJwYzNCaGRHTm9UR2x6ZEdWdVpYSnpJRDBnWVdOamRXMTFiR0YwWlVsdWRHOG9aWFpsYm5RdVgyUnBjM0JoZEdOb1RHbHpkR1Z1WlhKekxDQnNhWE4wWlc1bGNpazdYRzRnSUNBZ1pYWmxiblF1WDJScGMzQmhkR05vU1VSeklEMGdZV05qZFcxMWJHRjBaVWx1ZEc4b1pYWmxiblF1WDJScGMzQmhkR05vU1VSekxDQmtiMjFKUkNrN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkRiMnhzWldOMElHUnBjM0JoZEdOb1pYTWdLRzExYzNRZ1ltVWdaVzUwYVhKbGJIa2dZMjlzYkdWamRHVmtJR0psWm05eVpTQmthWE53WVhSamFHbHVaeUF0SUhObFpTQjFibWwwWEc0Z0tpQjBaWE4wY3lrdUlFeGhlbWxzZVNCaGJHeHZZMkYwWlNCMGFHVWdZWEp5WVhrZ2RHOGdZMjl1YzJWeWRtVWdiV1Z0YjNKNUxpQWdWMlVnYlhWemRDQnNiMjl3SUhSb2NtOTFaMmhjYmlBcUlHVmhZMmdnWlhabGJuUWdZVzVrSUhCbGNtWnZjbTBnZEdobElIUnlZWFpsY25OaGJDQm1iM0lnWldGamFDQnZibVV1SUZkbElHTmhibTV2ZENCd1pYSm1iM0p0SUdGY2JpQXFJSE5wYm1kc1pTQjBjbUYyWlhKellXd2dabTl5SUhSb1pTQmxiblJwY21VZ1kyOXNiR1ZqZEdsdmJpQnZaaUJsZG1WdWRITWdZbVZqWVhWelpTQmxZV05vSUdWMlpXNTBJRzFoZVZ4dUlDb2dhR0YyWlNCaElHUnBabVpsY21WdWRDQjBZWEpuWlhRdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdGalkzVnRkV3hoZEdWVWQyOVFhR0Z6WlVScGMzQmhkR05vWlhOVGFXNW5iR1VvWlhabGJuUXBJSHRjYmlBZ2FXWWdLR1YyWlc1MElDWW1JR1YyWlc1MExtUnBjM0JoZEdOb1EyOXVabWxuTG5Cb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpLU0I3WEc0Z0lDQWdSWFpsYm5SUWJIVm5hVzVJZFdJdWFXNXFaV04wYVc5dUxtZGxkRWx1YzNSaGJtTmxTR0Z1Wkd4bEtDa3VkSEpoZG1WeWMyVlVkMjlRYUdGelpTaGxkbVZ1ZEM1a2FYTndZWFJqYUUxaGNtdGxjaXdnWVdOamRXMTFiR0YwWlVScGNtVmpkR2x2Ym1Gc1JHbHpjR0YwWTJobGN5d2daWFpsYm5RcE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dVMkZ0WlNCaGN5QmdZV05qZFcxMWJHRjBaVlIzYjFCb1lYTmxSR2x6Y0dGMFkyaGxjMU5wYm1kc1pXQXNJR0oxZENCemEybHdjeUJ2ZG1WeUlIUm9aU0IwWVhKblpYUkpSQzVjYmlBcUwxeHVablZ1WTNScGIyNGdZV05qZFcxMWJHRjBaVlIzYjFCb1lYTmxSR2x6Y0dGMFkyaGxjMU5wYm1kc1pWTnJhWEJVWVhKblpYUW9aWFpsYm5RcElIdGNiaUFnYVdZZ0tHVjJaVzUwSUNZbUlHVjJaVzUwTG1ScGMzQmhkR05vUTI5dVptbG5MbkJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWektTQjdYRzRnSUNBZ1JYWmxiblJRYkhWbmFXNUlkV0l1YVc1cVpXTjBhVzl1TG1kbGRFbHVjM1JoYm1ObFNHRnVaR3hsS0NrdWRISmhkbVZ5YzJWVWQyOVFhR0Z6WlZOcmFYQlVZWEpuWlhRb1pYWmxiblF1WkdsemNHRjBZMmhOWVhKclpYSXNJR0ZqWTNWdGRXeGhkR1ZFYVhKbFkzUnBiMjVoYkVScGMzQmhkR05vWlhNc0lHVjJaVzUwS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmpZM1Z0ZFd4aGRHVnpJSGRwZEdodmRYUWdjbVZuWVhKa0lIUnZJR1JwY21WamRHbHZiaXdnWkc5bGN5QnViM1FnYkc5dmF5Qm1iM0lnY0doaGMyVmtYRzRnS2lCeVpXZHBjM1J5WVhScGIyNGdibUZ0WlhNdUlGTmhiV1VnWVhNZ1lHRmpZM1Z0ZFd4aGRHVkVhWEpsWTNSRWFYTndZWFJqYUdWelUybHVaMnhsWUNCaWRYUWdkMmwwYUc5MWRGeHVJQ29nY21WeGRXbHlhVzVuSUhSb1lYUWdkR2hsSUdCa2FYTndZWFJqYUUxaGNtdGxjbUFnWW1VZ2RHaGxJSE5oYldVZ1lYTWdkR2hsSUdScGMzQmhkR05vWldRZ1NVUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHRmpZM1Z0ZFd4aGRHVkVhWE53WVhSamFHVnpLR2xrTENCcFoyNXZjbVZrUkdseVpXTjBhVzl1TENCbGRtVnVkQ2tnZTF4dUlDQnBaaUFvWlhabGJuUWdKaVlnWlhabGJuUXVaR2x6Y0dGMFkyaERiMjVtYVdjdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ2UxeHVJQ0FnSUhaaGNpQnlaV2RwYzNSeVlYUnBiMjVPWVcxbElEMGdaWFpsYm5RdVpHbHpjR0YwWTJoRGIyNW1hV2N1Y21WbmFYTjBjbUYwYVc5dVRtRnRaVHRjYmlBZ0lDQjJZWElnYkdsemRHVnVaWElnUFNCblpYUk1hWE4wWlc1bGNpaHBaQ3dnY21WbmFYTjBjbUYwYVc5dVRtRnRaU2s3WEc0Z0lDQWdhV1lnS0d4cGMzUmxibVZ5S1NCN1hHNGdJQ0FnSUNCbGRtVnVkQzVmWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1nUFNCaFkyTjFiWFZzWVhSbFNXNTBieWhsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTXNJR3hwYzNSbGJtVnlLVHRjYmlBZ0lDQWdJR1YyWlc1MExsOWthWE53WVhSamFFbEVjeUE5SUdGalkzVnRkV3hoZEdWSmJuUnZLR1YyWlc1MExsOWthWE53WVhSamFFbEVjeXdnYVdRcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmpZM1Z0ZFd4aGRHVnpJR1JwYzNCaGRHTm9aWE1nYjI0Z1lXNGdZRk41Ym5Sb1pYUnBZMFYyWlc1MFlDd2dZblYwSUc5dWJIa2dabTl5SUhSb1pWeHVJQ29nWUdScGMzQmhkR05vVFdGeWEyVnlZQzVjYmlBcUlFQndZWEpoYlNCN1UzbHVkR2hsZEdsalJYWmxiblI5SUdWMlpXNTBYRzRnS2k5Y2JtWjFibU4wYVc5dUlHRmpZM1Z0ZFd4aGRHVkVhWEpsWTNSRWFYTndZWFJqYUdWelUybHVaMnhsS0dWMlpXNTBLU0I3WEc0Z0lHbG1JQ2hsZG1WdWRDQW1KaUJsZG1WdWRDNWthWE53WVhSamFFTnZibVpwWnk1eVpXZHBjM1J5WVhScGIyNU9ZVzFsS1NCN1hHNGdJQ0FnWVdOamRXMTFiR0YwWlVScGMzQmhkR05vWlhNb1pYWmxiblF1WkdsemNHRjBZMmhOWVhKclpYSXNJRzUxYkd3c0lHVjJaVzUwS1R0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmhZMk4xYlhWc1lYUmxWSGR2VUdoaGMyVkVhWE53WVhSamFHVnpLR1YyWlc1MGN5a2dlMXh1SUNCbWIzSkZZV05vUVdOamRXMTFiR0YwWldRb1pYWmxiblJ6TENCaFkyTjFiWFZzWVhSbFZIZHZVR2hoYzJWRWFYTndZWFJqYUdWelUybHVaMnhsS1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWVdOamRXMTFiR0YwWlZSM2IxQm9ZWE5sUkdsemNHRjBZMmhsYzFOcmFYQlVZWEpuWlhRb1pYWmxiblJ6S1NCN1hHNGdJR1p2Y2tWaFkyaEJZMk4xYlhWc1lYUmxaQ2hsZG1WdWRITXNJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE5UYVc1bmJHVlRhMmx3VkdGeVoyVjBLVHRjYm4xY2JseHVablZ1WTNScGIyNGdZV05qZFcxMWJHRjBaVVZ1ZEdWeVRHVmhkbVZFYVhOd1lYUmphR1Z6S0d4bFlYWmxMQ0JsYm5SbGNpd2dabkp2YlVsRUxDQjBiMGxFS1NCN1hHNGdJRVYyWlc1MFVHeDFaMmx1U0hWaUxtbHVhbVZqZEdsdmJpNW5aWFJKYm5OMFlXNWpaVWhoYm1Sc1pTZ3BMblJ5WVhabGNuTmxSVzUwWlhKTVpXRjJaU2htY205dFNVUXNJSFJ2U1VRc0lHRmpZM1Z0ZFd4aGRHVkVhWE53WVhSamFHVnpMQ0JzWldGMlpTd2daVzUwWlhJcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCaFkyTjFiWFZzWVhSbFJHbHlaV04wUkdsemNHRjBZMmhsY3lobGRtVnVkSE1wSUh0Y2JpQWdabTl5UldGamFFRmpZM1Z0ZFd4aGRHVmtLR1YyWlc1MGN5d2dZV05qZFcxMWJHRjBaVVJwY21WamRFUnBjM0JoZEdOb1pYTlRhVzVuYkdVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVFZ2MyMWhiR3dnYzJWMElHOW1JSEJ5YjNCaFoyRjBhVzl1SUhCaGRIUmxjbTV6TENCbFlXTm9JRzltSUhkb2FXTm9JSGRwYkd3Z1lXTmpaWEIwSUdFZ2MyMWhiR3dnWVcxdmRXNTBYRzRnS2lCdlppQnBibVp2Y20xaGRHbHZiaXdnWVc1a0lHZGxibVZ5WVhSbElHRWdjMlYwSUc5bUlGd2laR2x6Y0dGMFkyZ2djbVZoWkhrZ1pYWmxiblFnYjJKcVpXTjBjMXdpSUMwZ2QyaHBZMmhjYmlBcUlHRnlaU0J6WlhSeklHOW1JR1YyWlc1MGN5QjBhR0YwSUdoaGRtVWdZV3h5WldGa2VTQmlaV1Z1SUdGdWJtOTBZWFJsWkNCM2FYUm9JR0VnYzJWMElHOW1JR1JwYzNCaGRHTm9aV1JjYmlBcUlHeHBjM1JsYm1WeUlHWjFibU4wYVc5dWN5OXBaSE11SUZSb1pTQkJVRWtnYVhNZ1pHVnphV2R1WldRZ2RHaHBjeUIzWVhrZ2RHOGdaR2x6WTI5MWNtRm5aU0IwYUdWelpWeHVJQ29nY0hKdmNHRm5ZWFJwYjI0Z2MzUnlZWFJsWjJsbGN5Qm1jbTl0SUdGamRIVmhiR3g1SUdWNFpXTjFkR2x1WnlCMGFHVWdaR2x6Y0dGMFkyaGxjeXdnYzJsdVkyVWdkMlZjYmlBcUlHRnNkMkY1Y3lCM1lXNTBJSFJ2SUdOdmJHeGxZM1FnZEdobElHVnVkR2x5WlNCelpYUWdiMllnWkdsemNHRjBZMmhsY3lCaVpXWnZjbVVnWlhobFkzVjBhVzVuSUdWMlpXNTBJR0ZjYmlBcUlITnBibWRzWlNCdmJtVXVYRzRnS2x4dUlDb2dRR052Ym5OMGNuVmpkRzl5SUVWMlpXNTBVSEp2Y0dGbllYUnZjbk5jYmlBcUwxeHVkbUZ5SUVWMlpXNTBVSEp2Y0dGbllYUnZjbk1nUFNCN1hHNGdJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE02SUdGalkzVnRkV3hoZEdWVWQyOVFhR0Z6WlVScGMzQmhkR05vWlhNc1hHNGdJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE5UYTJsd1ZHRnlaMlYwT2lCaFkyTjFiWFZzWVhSbFZIZHZVR2hoYzJWRWFYTndZWFJqYUdWelUydHBjRlJoY21kbGRDeGNiaUFnWVdOamRXMTFiR0YwWlVScGNtVmpkRVJwYzNCaGRHTm9aWE02SUdGalkzVnRkV3hoZEdWRWFYSmxZM1JFYVhOd1lYUmphR1Z6TEZ4dUlDQmhZMk4xYlhWc1lYUmxSVzUwWlhKTVpXRjJaVVJwYzNCaGRHTm9aWE02SUdGalkzVnRkV3hoZEdWRmJuUmxja3hsWVhabFJHbHpjR0YwWTJobGMxeHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCRmRtVnVkRkJ5YjNCaFoyRjBiM0p6T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IHJlcXVpcmUoJy4vZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcicpO1xuXG4vKipcbiAqIFRoaXMgaGVscGVyIGNsYXNzIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0ZXh0IGNvbnRlbnQgb2YgYSB0YXJnZXQgbm9kZSxcbiAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFmdGVyIGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogSWRlbnRpZnkgdGhlIG5vZGUgd2hlcmUgc2VsZWN0aW9uIGN1cnJlbnRseSBiZWdpbnMsIHRoZW4gb2JzZXJ2ZVxuICogYm90aCBpdHMgdGV4dCBjb250ZW50IGFuZCBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcbiAqIGJyb3dzZXIgbWF5IG5hdGl2ZWx5IHJlcGxhY2UgdGhlIHRhcmdldCBub2RlIGR1cmluZyBjb21wb3NpdGlvbiwgd2UgY2FuXG4gKiB1c2UgaXRzIHBvc2l0aW9uIHRvIGZpbmQgaXRzIHJlcGxhY2VtZW50LlxuICpcbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHJvb3RcbiAqL1xuZnVuY3Rpb24gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHtcbiAgdGhpcy5fcm9vdCA9IHJvb3Q7XG4gIHRoaXMuX3N0YXJ0VGV4dCA9IHRoaXMuZ2V0VGV4dCgpO1xuICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xufVxuXG5hc3NpZ24oRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLnByb3RvdHlwZSwge1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fcm9vdCA9IG51bGw7XG4gICAgdGhpcy5fc3RhcnRUZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCB0ZXh0IG9mIGlucHV0LlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXRUZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCd2YWx1ZScgaW4gdGhpcy5fcm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yb290W2dldFRleHRDb250ZW50QWNjZXNzb3IoKV07XG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgZGlmZmVyaW5nIHN1YnN0cmluZyBiZXR3ZWVuIHRoZSBpbml0aWFsbHkgc3RvcmVkXG4gICAqIHRleHQgY29udGVudCBhbmQgdGhlIGN1cnJlbnQgY29udGVudC5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0RGF0YTogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9mYWxsYmFja1RleHQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0O1xuICAgIHZhciBzdGFydFZhbHVlID0gdGhpcy5fc3RhcnRUZXh0O1xuICAgIHZhciBzdGFydExlbmd0aCA9IHN0YXJ0VmFsdWUubGVuZ3RoO1xuICAgIHZhciBlbmQ7XG4gICAgdmFyIGVuZFZhbHVlID0gdGhpcy5nZXRUZXh0KCk7XG4gICAgdmFyIGVuZExlbmd0aCA9IGVuZFZhbHVlLmxlbmd0aDtcblxuICAgIGZvciAoc3RhcnQgPSAwOyBzdGFydCA8IHN0YXJ0TGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoc3RhcnRWYWx1ZVtzdGFydF0gIT09IGVuZFZhbHVlW3N0YXJ0XSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbWluRW5kID0gc3RhcnRMZW5ndGggLSBzdGFydDtcbiAgICBmb3IgKGVuZCA9IDE7IGVuZCA8PSBtaW5FbmQ7IGVuZCsrKSB7XG4gICAgICBpZiAoc3RhcnRWYWx1ZVtzdGFydExlbmd0aCAtIGVuZF0gIT09IGVuZFZhbHVlW2VuZExlbmd0aCAtIGVuZF0pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNsaWNlVGFpbCA9IGVuZCA+IDEgPyAxIC0gZW5kIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IGVuZFZhbHVlLnNsaWNlKHN0YXJ0LCBzbGljZVRhaWwpO1xuICAgIHJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7XG4gIH1cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEhUTUxET01Qcm9wZXJ0eUNvbmZpZ1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIE1VU1RfVVNFX0FUVFJJQlVURSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5NVVNUX1VTRV9BVFRSSUJVVEU7XG52YXIgTVVTVF9VU0VfUFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7XG52YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7XG52YXIgSEFTX1NJREVfRUZGRUNUUyA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfU0lERV9FRkZFQ1RTO1xudmFyIEhBU19OVU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFO1xudmFyIEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFO1xudmFyIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTtcblxudmFyIGhhc1NWRztcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgdmFyIGltcGxlbWVudGF0aW9uID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb247XG4gIGhhc1NWRyA9IGltcGxlbWVudGF0aW9uICYmIGltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUgJiYgaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNCYXNpY1N0cnVjdHVyZScsICcxLjEnKTtcbn1cblxudmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHtcbiAgaXNDdXN0b21BdHRyaWJ1dGU6IFJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKC9eKGRhdGF8YXJpYSktW2Etel9dW2EtelxcZF8uXFwtXSokLyksXG4gIFByb3BlcnRpZXM6IHtcbiAgICAvKipcbiAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzXG4gICAgICovXG4gICAgYWNjZXB0OiBudWxsLFxuICAgIGFjY2VwdENoYXJzZXQ6IG51bGwsXG4gICAgYWNjZXNzS2V5OiBudWxsLFxuICAgIGFjdGlvbjogbnVsbCxcbiAgICBhbGxvd0Z1bGxTY3JlZW46IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgYWx0OiBudWxsLFxuICAgIGFzeW5jOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBhdXRvQ29tcGxldGU6IG51bGwsXG4gICAgLy8gYXV0b0ZvY3VzIGlzIHBvbHlmaWxsZWQvbm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlsc1xuICAgIC8vIGF1dG9Gb2N1czogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYXV0b1BsYXk6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNhcHR1cmU6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNlbGxQYWRkaW5nOiBudWxsLFxuICAgIGNlbGxTcGFjaW5nOiBudWxsLFxuICAgIGNoYXJTZXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBjaGFsbGVuZ2U6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNsYXNzSUQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAvLyBUbyBzZXQgY2xhc3NOYW1lIG9uIFNWRyBlbGVtZW50cywgaXQncyBuZWNlc3NhcnkgdG8gdXNlIC5zZXRBdHRyaWJ1dGU7XG4gICAgLy8gdGhpcyB3b3JrcyBvbiBIVE1MIGVsZW1lbnRzIHRvbyBpbiBhbGwgYnJvd3NlcnMgZXhjZXB0IElFOC4gQ29udmVuaWVudGx5LFxuICAgIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgU1ZHIGFuZCBzbyB3ZSBjYW4gc2ltcGx5IHVzZSB0aGUgYXR0cmlidXRlIGluXG4gICAgLy8gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IFNWRyBhbmQgdGhlIHByb3BlcnR5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QsXG4gICAgLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIEhUTUwgb3IgU1ZHLlxuICAgIGNsYXNzTmFtZTogaGFzU1ZHID8gTVVTVF9VU0VfQVRUUklCVVRFIDogTVVTVF9VU0VfUFJPUEVSVFksXG4gICAgY29sczogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgY29sU3BhbjogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGNvbnRlbnRFZGl0YWJsZTogbnVsbCxcbiAgICBjb250ZXh0TWVudTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGNvbnRyb2xzOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNvb3JkczogbnVsbCxcbiAgICBjcm9zc09yaWdpbjogbnVsbCxcbiAgICBkYXRhOiBudWxsLCAvLyBGb3IgYDxvYmplY3QgLz5gIGFjdHMgYXMgYHNyY2AuXG4gICAgZGF0ZVRpbWU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAnZGVmYXVsdCc6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBkaXI6IG51bGwsXG4gICAgZGlzYWJsZWQ6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuICAgIGRyYWdnYWJsZTogbnVsbCxcbiAgICBlbmNUeXBlOiBudWxsLFxuICAgIGZvcm06IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtQWN0aW9uOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZm9ybUVuY1R5cGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtTWV0aG9kOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZm9ybU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGZvcm1UYXJnZXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmcmFtZUJvcmRlcjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGhlYWRlcnM6IG51bGwsXG4gICAgaGVpZ2h0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaGlkZGVuOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBoaWdoOiBudWxsLFxuICAgIGhyZWY6IG51bGwsXG4gICAgaHJlZkxhbmc6IG51bGwsXG4gICAgaHRtbEZvcjogbnVsbCxcbiAgICBodHRwRXF1aXY6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBpZDogTVVTVF9VU0VfUFJPUEVSVFksXG4gICAgaW5wdXRNb2RlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaW50ZWdyaXR5OiBudWxsLFxuICAgIGlzOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAga2V5UGFyYW1zOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAga2V5VHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGtpbmQ6IG51bGwsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsaXN0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbG9vcDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBsb3c6IG51bGwsXG4gICAgbWFuaWZlc3Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtYXJnaW5IZWlnaHQ6IG51bGwsXG4gICAgbWFyZ2luV2lkdGg6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1heExlbmd0aDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1lZGlhOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbWVkaWFHcm91cDogbnVsbCxcbiAgICBtZXRob2Q6IG51bGwsXG4gICAgbWluOiBudWxsLFxuICAgIG1pbkxlbmd0aDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG11bHRpcGxlOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG11dGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG5hbWU6IG51bGwsXG4gICAgbm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgb3BlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgb3B0aW11bTogbnVsbCxcbiAgICBwYXR0ZXJuOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyOiBudWxsLFxuICAgIHBvc3RlcjogbnVsbCxcbiAgICBwcmVsb2FkOiBudWxsLFxuICAgIHJhZGlvR3JvdXA6IG51bGwsXG4gICAgcmVhZE9ubHk6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgcmVsOiBudWxsLFxuICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByb2xlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcm93czogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgcm93U3BhbjogbnVsbCxcbiAgICBzYW5kYm94OiBudWxsLFxuICAgIHNjb3BlOiBudWxsLFxuICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgc2Nyb2xsaW5nOiBudWxsLFxuICAgIHNlYW1sZXNzOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzaGFwZTogbnVsbCxcbiAgICBzaXplOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzaXplczogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHNwYW46IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHNwZWxsQ2hlY2s6IG51bGwsXG4gICAgc3JjOiBudWxsLFxuICAgIHNyY0RvYzogTVVTVF9VU0VfUFJPUEVSVFksXG4gICAgc3JjTGFuZzogbnVsbCxcbiAgICBzcmNTZXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsXG4gICAgc3RlcDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICBzdW1tYXJ5OiBudWxsLFxuICAgIHRhYkluZGV4OiBudWxsLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHVzZU1hcDogbnVsbCxcbiAgICB2YWx1ZTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfU0lERV9FRkZFQ1RTLFxuICAgIHdpZHRoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgd21vZGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB3cmFwOiBudWxsLFxuXG4gICAgLyoqXG4gICAgICogUkRGYSBQcm9wZXJ0aWVzXG4gICAgICovXG4gICAgYWJvdXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBkYXRhdHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGlubGlzdDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHByZWZpeDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLlxuICAgIHByb3BlcnR5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcmVzb3VyY2U6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAndHlwZW9mJzogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHZvY2FiOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG5cbiAgICAvKipcbiAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllc1xuICAgICAqL1xuICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3VwcG9ydGVkIGluIE1vYmlsZSBTYWZhcmkgZm9yXG4gICAgLy8ga2V5Ym9hcmQgaGludHMuXG4gICAgYXV0b0NhcGl0YWxpemU6IG51bGwsXG4gICAgYXV0b0NvcnJlY3Q6IG51bGwsXG4gICAgLy8gYXV0b1NhdmUgYWxsb3dzIFdlYktpdC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRzXG4gICAgYXV0b1NhdmU6IG51bGwsXG4gICAgLy8gY29sb3IgaXMgZm9yIFNhZmFyaSBtYXNrLWljb24gbGlua1xuICAgIGNvbG9yOiBudWxsLFxuICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2NvcGUsIGl0ZW1UeXBlIGFyZSBmb3JcbiAgICAvLyBNaWNyb2RhdGEgc3VwcG9ydC4gU2VlIGh0dHA6Ly9zY2hlbWEub3JnL2RvY3MvZ3MuaHRtbFxuICAgIGl0ZW1Qcm9wOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaXRlbVNjb3BlOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBpdGVtVHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwgYnV0XG4gICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIHRoZSBXSEFUV0cgc3BlYyBkb2N1bWVudC4gU2VlXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbWljcm9kYXRhLmh0bWwjbWljcm9kYXRhLWRvbS1hcGlcbiAgICBpdGVtSUQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpdGVtUmVmOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gcmVzdWx0cyBzaG93IGxvb2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0XG4gICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcbiAgICByZXN1bHRzOiBudWxsLFxuICAgIC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0aW9ucyBvbiBhbiBpZnJhbWVcbiAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgb24gSUU8MTBcbiAgICBzZWN1cml0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgY29udHJvbHMgZm9jdXMgYmVoYXZpb3JcbiAgICB1bnNlbGVjdGFibGU6IE1VU1RfVVNFX0FUVFJJQlVURVxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge1xuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnXG4gIH0sXG4gIERPTVByb3BlcnR5TmFtZXM6IHtcbiAgICBhdXRvQ2FwaXRhbGl6ZTogJ2F1dG9jYXBpdGFsaXplJyxcbiAgICBhdXRvQ29tcGxldGU6ICdhdXRvY29tcGxldGUnLFxuICAgIGF1dG9Db3JyZWN0OiAnYXV0b2NvcnJlY3QnLFxuICAgIGF1dG9Gb2N1czogJ2F1dG9mb2N1cycsXG4gICAgYXV0b1BsYXk6ICdhdXRvcGxheScsXG4gICAgYXV0b1NhdmU6ICdhdXRvc2F2ZScsXG4gICAgLy8gYGVuY29kaW5nYCBpcyBlcXVpdmFsZW50IHRvIGBlbmN0eXBlYCwgSUU4IGxhY2tzIGFuIGBlbmN0eXBlYCBzZXR0ZXIuXG4gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvZm9ybXMuaHRtbCNkb20tZnMtZW5jb2RpbmdcbiAgICBlbmNUeXBlOiAnZW5jb2RpbmcnLFxuICAgIGhyZWZMYW5nOiAnaHJlZmxhbmcnLFxuICAgIHJhZGlvR3JvdXA6ICdyYWRpb2dyb3VwJyxcbiAgICBzcGVsbENoZWNrOiAnc3BlbGxjaGVjaycsXG4gICAgc3JjRG9jOiAnc3JjZG9jJyxcbiAgICBzcmNTZXQ6ICdzcmNzZXQnXG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgTGlua2VkVmFsdWVVdGlsc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZXMnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25zJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaGFzUmVhZE9ubHlWYWx1ZSA9IHtcbiAgJ2J1dHRvbic6IHRydWUsXG4gICdjaGVja2JveCc6IHRydWUsXG4gICdpbWFnZSc6IHRydWUsXG4gICdoaWRkZW4nOiB0cnVlLFxuICAncmFkaW8nOiB0cnVlLFxuICAncmVzZXQnOiB0cnVlLFxuICAnc3VibWl0JzogdHJ1ZVxufTtcblxuZnVuY3Rpb24gX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcykge1xuICAhKGlucHV0UHJvcHMuY2hlY2tlZExpbmsgPT0gbnVsbCB8fCBpbnB1dFByb3BzLnZhbHVlTGluayA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYgeW91IHdhbnQgdG8gdXNlICcgKyAnY2hlY2tlZExpbmssIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpIHtcbiAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG4gICEoaW5wdXRQcm9wcy52YWx1ZSA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSB2YWx1ZUxpbmsgYW5kIGEgdmFsdWUgb3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50ICcgKyAndG8gdXNlIHZhbHVlIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gJyArICdJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZCBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byAnICsgJ3VzZSBjaGVja2VkTGluaycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxudmFyIHByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIG9uQ2hhbmdlOiBSZWFjdFByb3BUeXBlcy5mdW5jXG59O1xuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBQcm92aWRlIGEgbGlua2VkIGB2YWx1ZWAgYXR0cmlidXRlIGZvciBjb250cm9sbGVkIGZvcm1zLiBZb3Ugc2hvdWxkIG5vdCB1c2VcbiAqIHRoaXMgb3V0c2lkZSBvZiB0aGUgUmVhY3RET00gY29udHJvbGxlZCBmb3JtIGNvbXBvbmVudHMuXG4gKi9cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0ge1xuICBjaGVja1Byb3BUeXBlczogZnVuY3Rpb24gKHRhZ05hbWUsIHByb3BzLCBvd25lcikge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIHRhZ05hbWUsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCk7XG4gICAgICB9XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBmb3JtIHByb3BUeXBlOiAlcyVzJywgZXJyb3IubWVzc2FnZSwgYWRkZW5kdW0pIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlucHV0IGVpdGhlciBmcm9tIHZhbHVlIHByb3Agb3IgbGluay5cbiAgICovXG4gIGdldFZhbHVlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IGNoZWNrZWQgc3RhdHVzIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSBjaGVja2VkIHByb3BcbiAgICogICAgICAgICAgICAgb3IgbGluay5cbiAgICovXG4gIGdldENoZWNrZWQ6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcbiAgICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAgZXhlY3V0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcywgZXZlbnQpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcbiAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy5vbkNoYW5nZS5jYWxsKHVuZGVmaW5lZCwgZXZlbnQpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5TWFXNXJaV1JXWVd4MVpWVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2MxeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFjbTl3Vkhsd1pYTW5LVHRjYm5aaGNpQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6SnlrN1hHNWNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1MllYSWdhR0Z6VW1WaFpFOXViSGxXWVd4MVpTQTlJSHRjYmlBZ0oySjFkSFJ2YmljNklIUnlkV1VzWEc0Z0lDZGphR1ZqYTJKdmVDYzZJSFJ5ZFdVc1hHNGdJQ2RwYldGblpTYzZJSFJ5ZFdVc1hHNGdJQ2RvYVdSa1pXNG5PaUIwY25WbExGeHVJQ0FuY21Ga2FXOG5PaUIwY25WbExGeHVJQ0FuY21WelpYUW5PaUIwY25WbExGeHVJQ0FuYzNWaWJXbDBKem9nZEhKMVpWeHVmVHRjYmx4dVpuVnVZM1JwYjI0Z1gyRnpjMlZ5ZEZOcGJtZHNaVXhwYm1zb2FXNXdkWFJRY205d2N5a2dlMXh1SUNBaEtHbHVjSFYwVUhKdmNITXVZMmhsWTJ0bFpFeHBibXNnUFQwZ2JuVnNiQ0I4ZkNCcGJuQjFkRkJ5YjNCekxuWmhiSFZsVEdsdWF5QTlQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRFlXNXViM1FnY0hKdmRtbGtaU0JoSUdOb1pXTnJaV1JNYVc1cklHRnVaQ0JoSUhaaGJIVmxUR2x1YXk0Z1NXWWdlVzkxSUhkaGJuUWdkRzhnZFhObElDY2dLeUFuWTJobFkydGxaRXhwYm1zc0lIbHZkU0J3Y205aVlXSnNlU0JrYjI1Y1hDZDBJSGRoYm5RZ2RHOGdkWE5sSUhaaGJIVmxUR2x1YXlCaGJtUWdkbWxqWlNCMlpYSnpZUzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzU5WEc1bWRXNWpkR2x2YmlCZllYTnpaWEowVm1Gc2RXVk1hVzVyS0dsdWNIVjBVSEp2Y0hNcElIdGNiaUFnWDJGemMyVnlkRk5wYm1kc1pVeHBibXNvYVc1d2RYUlFjbTl3Y3lrN1hHNGdJQ0VvYVc1d2RYUlFjbTl3Y3k1MllXeDFaU0E5UFNCdWRXeHNJQ1ltSUdsdWNIVjBVSEp2Y0hNdWIyNURhR0Z1WjJVZ1BUMGdiblZzYkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUTJGdWJtOTBJSEJ5YjNacFpHVWdZU0IyWVd4MVpVeHBibXNnWVc1a0lHRWdkbUZzZFdVZ2IzSWdiMjVEYUdGdVoyVWdaWFpsYm5RdUlFbG1JSGx2ZFNCM1lXNTBJQ2NnS3lBbmRHOGdkWE5sSUhaaGJIVmxJRzl5SUc5dVEyaGhibWRsTENCNWIzVWdjSEp2WW1GaWJIa2daRzl1WEZ3bmRDQjNZVzUwSUhSdklIVnpaU0IyWVd4MVpVeHBibXN1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmZZWE56WlhKMFEyaGxZMnRsWkV4cGJtc29hVzV3ZFhSUWNtOXdjeWtnZTF4dUlDQmZZWE56WlhKMFUybHVaMnhsVEdsdWF5aHBibkIxZEZCeWIzQnpLVHRjYmlBZ0lTaHBibkIxZEZCeWIzQnpMbU5vWldOclpXUWdQVDBnYm5Wc2JDQW1KaUJwYm5CMWRGQnliM0J6TG05dVEyaGhibWRsSUQwOUlHNTFiR3dwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKME5oYm01dmRDQndjbTkyYVdSbElHRWdZMmhsWTJ0bFpFeHBibXNnWVc1a0lHRWdZMmhsWTJ0bFpDQndjbTl3WlhKMGVTQnZjaUJ2YmtOb1lXNW5aU0JsZG1WdWRDNGdKeUFySUNkSlppQjViM1VnZDJGdWRDQjBieUIxYzJVZ1kyaGxZMnRsWkNCdmNpQnZia05vWVc1blpTd2dlVzkxSUhCeWIySmhZbXg1SUdSdmJseGNKM1FnZDJGdWRDQjBieUFuSUNzZ0ozVnpaU0JqYUdWamEyVmtUR2x1YXljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVkbUZ5SUhCeWIzQlVlWEJsY3lBOUlIdGNiaUFnZG1Gc2RXVTZJR1oxYm1OMGFXOXVJQ2h3Y205d2N5d2djSEp2Y0U1aGJXVXNJR052YlhCdmJtVnVkRTVoYldVcElIdGNiaUFnSUNCcFppQW9JWEJ5YjNCelczQnliM0JPWVcxbFhTQjhmQ0JvWVhOU1pXRmtUMjVzZVZaaGJIVmxXM0J5YjNCekxuUjVjR1ZkSUh4OElIQnliM0J6TG05dVEyaGhibWRsSUh4OElIQnliM0J6TG5KbFlXUlBibXg1SUh4OElIQnliM0J6TG1ScGMyRmliR1ZrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlCRmNuSnZjaWduV1c5MUlIQnliM1pwWkdWa0lHRWdZSFpoYkhWbFlDQndjbTl3SUhSdklHRWdabTl5YlNCbWFXVnNaQ0IzYVhSb2IzVjBJR0Z1SUNjZ0t5QW5ZRzl1UTJoaGJtZGxZQ0JvWVc1a2JHVnlMaUJVYUdseklIZHBiR3dnY21WdVpHVnlJR0VnY21WaFpDMXZibXg1SUdacFpXeGtMaUJKWmlBbklDc2dKM1JvWlNCbWFXVnNaQ0J6YUc5MWJHUWdZbVVnYlhWMFlXSnNaU0IxYzJVZ1lHUmxabUYxYkhSV1lXeDFaV0F1SUU5MGFHVnlkMmx6WlN3Z0p5QXJJQ2R6WlhRZ1pXbDBhR1Z5SUdCdmJrTm9ZVzVuWldBZ2IzSWdZSEpsWVdSUGJteDVZQzRuS1R0Y2JpQWdmU3hjYmlBZ1kyaGxZMnRsWkRvZ1puVnVZM1JwYjI0Z0tIQnliM0J6TENCd2NtOXdUbUZ0WlN3Z1kyOXRjRzl1Wlc1MFRtRnRaU2tnZTF4dUlDQWdJR2xtSUNnaGNISnZjSE5iY0hKdmNFNWhiV1ZkSUh4OElIQnliM0J6TG05dVEyaGhibWRsSUh4OElIQnliM0J6TG5KbFlXUlBibXg1SUh4OElIQnliM0J6TG1ScGMyRmliR1ZrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlCRmNuSnZjaWduV1c5MUlIQnliM1pwWkdWa0lHRWdZR05vWldOclpXUmdJSEJ5YjNBZ2RHOGdZU0JtYjNKdElHWnBaV3hrSUhkcGRHaHZkWFFnWVc0Z0p5QXJJQ2RnYjI1RGFHRnVaMlZnSUdoaGJtUnNaWEl1SUZSb2FYTWdkMmxzYkNCeVpXNWtaWElnWVNCeVpXRmtMVzl1YkhrZ1ptbGxiR1F1SUVsbUlDY2dLeUFuZEdobElHWnBaV3hrSUhOb2IzVnNaQ0JpWlNCdGRYUmhZbXhsSUhWelpTQmdaR1ZtWVhWc2RFTm9aV05yWldSZ0xpQlBkR2hsY25kcGMyVXNJQ2NnS3lBbmMyVjBJR1ZwZEdobGNpQmdiMjVEYUdGdVoyVmdJRzl5SUdCeVpXRmtUMjVzZVdBdUp5azdYRzRnSUgwc1hHNGdJRzl1UTJoaGJtZGxPaUJTWldGamRGQnliM0JVZVhCbGN5NW1kVzVqWEc1OU8xeHVYRzUyWVhJZ2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WeklEMGdlMzA3WEc1bWRXNWpkR2x2YmlCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb2IzZHVaWElwSUh0Y2JpQWdhV1lnS0c5M2JtVnlLU0I3WEc0Z0lDQWdkbUZ5SUc1aGJXVWdQU0J2ZDI1bGNpNW5aWFJPWVcxbEtDazdYRzRnSUNBZ2FXWWdLRzVoYldVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbklFTm9aV05ySUhSb1pTQnlaVzVrWlhJZ2JXVjBhRzlrSUc5bUlHQW5JQ3NnYm1GdFpTQXJJQ2RnTGljN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUFuSnp0Y2JuMWNibHh1THlvcVhHNGdLaUJRY205MmFXUmxJR0VnYkdsdWEyVmtJR0IyWVd4MVpXQWdZWFIwY21saWRYUmxJR1p2Y2lCamIyNTBjbTlzYkdWa0lHWnZjbTF6TGlCWmIzVWdjMmh2ZFd4a0lHNXZkQ0IxYzJWY2JpQXFJSFJvYVhNZ2IzVjBjMmxrWlNCdlppQjBhR1VnVW1WaFkzUkVUMDBnWTI5dWRISnZiR3hsWkNCbWIzSnRJR052YlhCdmJtVnVkSE11WEc0Z0tpOWNiblpoY2lCTWFXNXJaV1JXWVd4MVpWVjBhV3h6SUQwZ2UxeHVJQ0JqYUdWamExQnliM0JVZVhCbGN6b2dablZ1WTNScGIyNGdLSFJoWjA1aGJXVXNJSEJ5YjNCekxDQnZkMjVsY2lrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUhCeWIzQk9ZVzFsSUdsdUlIQnliM0JVZVhCbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0hCeWIzQlVlWEJsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1RtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR1Z5Y205eUlEMGdjSEp2Y0ZSNWNHVnpXM0J5YjNCT1lXMWxYU2h3Y205d2N5d2djSEp2Y0U1aGJXVXNJSFJoWjA1aGJXVXNJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdWNISnZjQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JwWmlBb1pYSnliM0lnYVc1emRHRnVZMlZ2WmlCRmNuSnZjaUFtSmlBaEtHVnljbTl5TG0xbGMzTmhaMlVnYVc0Z2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WektTa2dlMXh1SUNBZ0lDQWdJQ0F2THlCUGJteDVJRzF2Ym1sMGIzSWdkR2hwY3lCbVlXbHNkWEpsSUc5dVkyVWdZbVZqWVhWelpTQjBhR1Z5WlNCMFpXNWtjeUIwYnlCaVpTQmhJR3h2ZENCdlppQjBhR1ZjYmlBZ0lDQWdJQ0FnTHk4Z2MyRnRaU0JsY25KdmNpNWNiaUFnSUNBZ0lDQWdiRzluWjJWa1ZIbHdaVVpoYVd4MWNtVnpXMlZ5Y205eUxtMWxjM05oWjJWZElEMGdkSEoxWlR0Y2JseHVJQ0FnSUNBZ0lDQjJZWElnWVdSa1pXNWtkVzBnUFNCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb2IzZHVaWElwTzF4dUlDQWdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0owWmhhV3hsWkNCbWIzSnRJSEJ5YjNCVWVYQmxPaUFsY3lWekp5d2daWEp5YjNJdWJXVnpjMkZuWlN3Z1lXUmtaVzVrZFcwcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR2x1Y0hWMFVISnZjSE1nVUhKdmNITWdabTl5SUdadmNtMGdZMjl0Y0c5dVpXNTBYRzRnSUNBcUlFQnlaWFIxY200Z2V5cDlJR04xY25KbGJuUWdkbUZzZFdVZ2IyWWdkR2hsSUdsdWNIVjBJR1ZwZEdobGNpQm1jbTl0SUhaaGJIVmxJSEJ5YjNBZ2IzSWdiR2x1YXk1Y2JpQWdJQ292WEc0Z0lHZGxkRlpoYkhWbE9pQm1kVzVqZEdsdmJpQW9hVzV3ZFhSUWNtOXdjeWtnZTF4dUlDQWdJR2xtSUNocGJuQjFkRkJ5YjNCekxuWmhiSFZsVEdsdWF5a2dlMXh1SUNBZ0lDQWdYMkZ6YzJWeWRGWmhiSFZsVEdsdWF5aHBibkIxZEZCeWIzQnpLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBibkIxZEZCeWIzQnpMblpoYkhWbFRHbHVheTUyWVd4MVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR2x1Y0hWMFVISnZjSE11ZG1Gc2RXVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JwYm5CMWRGQnliM0J6SUZCeWIzQnpJR1p2Y2lCbWIzSnRJR052YlhCdmJtVnVkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIc3FmU0JqZFhKeVpXNTBJR05vWldOclpXUWdjM1JoZEhWeklHOW1JSFJvWlNCcGJuQjFkQ0JsYVhSb1pYSWdabkp2YlNCamFHVmphMlZrSUhCeWIzQmNiaUFnSUNvZ0lDQWdJQ0FnSUNBZ0lDQWdiM0lnYkdsdWF5NWNiaUFnSUNvdlhHNGdJR2RsZEVOb1pXTnJaV1E2SUdaMWJtTjBhVzl1SUNocGJuQjFkRkJ5YjNCektTQjdYRzRnSUNBZ2FXWWdLR2x1Y0hWMFVISnZjSE11WTJobFkydGxaRXhwYm1zcElIdGNiaUFnSUNBZ0lGOWhjM05sY25SRGFHVmphMlZrVEdsdWF5aHBibkIxZEZCeWIzQnpLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBibkIxZEZCeWIzQnpMbU5vWldOclpXUk1hVzVyTG5aaGJIVmxPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYVc1d2RYUlFjbTl3Y3k1amFHVmphMlZrTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2FXNXdkWFJRY205d2N5QlFjbTl3Y3lCbWIzSWdabTl5YlNCamIyMXdiMjVsYm5SY2JpQWdJQ29nUUhCaGNtRnRJSHRUZVc1MGFHVjBhV05GZG1WdWRIMGdaWFpsYm5RZ1kyaGhibWRsSUdWMlpXNTBJSFJ2SUdoaGJtUnNaVnh1SUNBZ0tpOWNiaUFnWlhobFkzVjBaVTl1UTJoaGJtZGxPaUJtZFc1amRHbHZiaUFvYVc1d2RYUlFjbTl3Y3l3Z1pYWmxiblFwSUh0Y2JpQWdJQ0JwWmlBb2FXNXdkWFJRY205d2N5NTJZV3gxWlV4cGJtc3BJSHRjYmlBZ0lDQWdJRjloYzNObGNuUldZV3gxWlV4cGJtc29hVzV3ZFhSUWNtOXdjeWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzV3ZFhSUWNtOXdjeTUyWVd4MVpVeHBibXN1Y21WeGRXVnpkRU5vWVc1blpTaGxkbVZ1ZEM1MFlYSm5aWFF1ZG1Gc2RXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9hVzV3ZFhSUWNtOXdjeTVqYUdWamEyVmtUR2x1YXlrZ2UxeHVJQ0FnSUNBZ1gyRnpjMlZ5ZEVOb1pXTnJaV1JNYVc1cktHbHVjSFYwVUhKdmNITXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHbHVjSFYwVUhKdmNITXVZMmhsWTJ0bFpFeHBibXN1Y21WeGRXVnpkRU5vWVc1blpTaGxkbVZ1ZEM1MFlYSm5aWFF1WTJobFkydGxaQ2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hwYm5CMWRGQnliM0J6TG05dVEyaGhibWRsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVc1d2RYUlFjbTl3Y3k1dmJrTm9ZVzVuWlM1allXeHNLSFZ1WkdWbWFXNWxaQ3dnWlhabGJuUXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBPYmplY3QuYXNzaWduXG4gKi9cblxuLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLW9iamVjdC5hc3NpZ25cblxuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2VzKSB7XG4gIGlmICh0YXJnZXQgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gdGFyZ2V0IGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICB9XG5cbiAgdmFyIHRvID0gT2JqZWN0KHRhcmdldCk7XG4gIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbiAgZm9yICh2YXIgbmV4dEluZGV4ID0gMTsgbmV4dEluZGV4IDwgYXJndW1lbnRzLmxlbmd0aDsgbmV4dEluZGV4KyspIHtcbiAgICB2YXIgbmV4dFNvdXJjZSA9IGFyZ3VtZW50c1tuZXh0SW5kZXhdO1xuICAgIGlmIChuZXh0U291cmNlID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBmcm9tID0gT2JqZWN0KG5leHRTb3VyY2UpO1xuXG4gICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgYWNjZXNzb3JzIG5vciBwcm94aWVzLiBUaGVyZWZvcmUgdGhpc1xuICAgIC8vIGNvcHkgY2Fubm90IHRocm93LiBJZiB3ZSBldmVyIHN1cHBvcnRlZCB0aGlzIHRoZW4gd2UgbXVzdCBoYW5kbGVcbiAgICAvLyBleGNlcHRpb25zIGFuZCBzaWRlLWVmZmVjdHMuIFdlIGRvbid0IHN1cHBvcnQgc3ltYm9scyBzbyB0aGV5IHdvbid0XG4gICAgLy8gYmUgdHJhbnNmZXJyZWQuXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuICAgICAgICB0b1trZXldID0gZnJvbVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ247IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBQb29sZWRDbGFzc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mXG4gKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG4gKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvXG4gKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXG4gKiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmlsZXMuXG4gKi9cbnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJvbSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pO1xuICB9XG59O1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTtcbiAgfVxufTtcblxudmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzKTtcbiAgfVxufTtcblxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpO1xuICB9XG59O1xuXG52YXIgZml2ZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0LCBhNSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCwgYTUpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSk7XG4gIH1cbn07XG5cbnZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIGluc3RhbmNlLmRlc3RydWN0b3IoKTtcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5wb29sU2l6ZSkge1xuICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTtcbiAgfVxufTtcblxudmFyIERFRkFVTFRfUE9PTF9TSVpFID0gMTA7XG52YXIgREVGQVVMVF9QT09MRVIgPSBvbmVBcmd1bWVudFBvb2xlcjtcblxuLyoqXG4gKiBBdWdtZW50cyBgQ29weUNvbnN0cnVjdG9yYCB0byBiZSBhIHBvb2xhYmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzXG4gKiBpdHNlbGYgKHN0YXRpY2FsbHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0b3JcbiAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQgd2lsbCBsb29rIGZvciBhXG4gKiBwcm90b3R5cGljYWwgYGRlc3RydWN0b3JgIG9uIGluc3RhbmNlcyAob3B0aW9uYWwpLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG4gKi9cbnZhciBhZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcbiAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yO1xuICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTtcbiAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSO1xuICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7XG4gICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTtcbiAgfVxuICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjtcbiAgcmV0dXJuIE5ld0tsYXNzO1xufTtcblxudmFyIFBvb2xlZENsYXNzID0ge1xuICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcbiAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLFxuICB0d29Bcmd1bWVudFBvb2xlcjogdHdvQXJndW1lbnRQb29sZXIsXG4gIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIsXG4gIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyLFxuICBmaXZlQXJndW1lbnRQb29sZXI6IGZpdmVBcmd1bWVudFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVFiMjlzWldSRGJHRnpjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZCdmIyeGxaRU5zWVhOelhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dVM1JoZEdsaklIQnZiMnhsY25NdUlGTmxkbVZ5WVd3Z1kzVnpkRzl0SUhabGNuTnBiMjV6SUdadmNpQmxZV05vSUhCdmRHVnVkR2xoYkNCdWRXMWlaWElnYjJaY2JpQXFJR0Z5WjNWdFpXNTBjeTRnUVNCamIyMXdiR1YwWld4NUlHZGxibVZ5YVdNZ2NHOXZiR1Z5SUdseklHVmhjM2tnZEc4Z2FXMXdiR1Z0Wlc1MExDQmlkWFFnZDI5MWJHUmNiaUFxSUhKbGNYVnBjbVVnWVdOalpYTnphVzVuSUhSb1pTQmdZWEpuZFcxbGJuUnpZQ0J2WW1wbFkzUXVJRWx1SUdWaFkyZ2diMllnZEdobGMyVXNJR0IwYUdsellDQnlaV1psY25NZ2RHOWNiaUFxSUhSb1pTQkRiR0Z6Y3lCcGRITmxiR1lzSUc1dmRDQmhiaUJwYm5OMFlXNWpaUzRnU1dZZ1lXNTVJRzkwYUdWeWN5QmhjbVVnYm1WbFpHVmtMQ0J6YVcxd2JIa2dZV1JrSUhSb1pXMWNiaUFxSUdobGNtVXNJRzl5SUdsdUlIUm9aV2x5SUc5M2JpQm1hV3hsY3k1Y2JpQXFMMXh1ZG1GeUlHOXVaVUZ5WjNWdFpXNTBVRzl2YkdWeUlEMGdablZ1WTNScGIyNGdLR052Y0hsR2FXVnNaSE5HY205dEtTQjdYRzRnSUhaaGNpQkxiR0Z6Y3lBOUlIUm9hWE03WEc0Z0lHbG1JQ2hMYkdGemN5NXBibk4wWVc1alpWQnZiMnd1YkdWdVozUm9LU0I3WEc0Z0lDQWdkbUZ5SUdsdWMzUmhibU5sSUQwZ1MyeGhjM011YVc1emRHRnVZMlZRYjI5c0xuQnZjQ2dwTzF4dUlDQWdJRXRzWVhOekxtTmhiR3dvYVc1emRHRnVZMlVzSUdOdmNIbEdhV1ZzWkhOR2NtOXRLVHRjYmlBZ0lDQnlaWFIxY200Z2FXNXpkR0Z1WTJVN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QkxiR0Z6Y3loamIzQjVSbWxsYkdSelJuSnZiU2s3WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUIwZDI5QmNtZDFiV1Z1ZEZCdmIyeGxjaUE5SUdaMWJtTjBhVzl1SUNoaE1Td2dZVElwSUh0Y2JpQWdkbUZ5SUV0c1lYTnpJRDBnZEdocGN6dGNiaUFnYVdZZ0tFdHNZWE56TG1sdWMzUmhibU5sVUc5dmJDNXNaVzVuZEdncElIdGNiaUFnSUNCMllYSWdhVzV6ZEdGdVkyVWdQU0JMYkdGemN5NXBibk4wWVc1alpWQnZiMnd1Y0c5d0tDazdYRzRnSUNBZ1MyeGhjM011WTJGc2JDaHBibk4wWVc1alpTd2dZVEVzSUdFeUtUdGNiaUFnSUNCeVpYUjFjbTRnYVc1emRHRnVZMlU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCTGJHRnpjeWhoTVN3Z1lUSXBPMXh1SUNCOVhHNTlPMXh1WEc1MllYSWdkR2h5WldWQmNtZDFiV1Z1ZEZCdmIyeGxjaUE5SUdaMWJtTjBhVzl1SUNoaE1Td2dZVElzSUdFektTQjdYRzRnSUhaaGNpQkxiR0Z6Y3lBOUlIUm9hWE03WEc0Z0lHbG1JQ2hMYkdGemN5NXBibk4wWVc1alpWQnZiMnd1YkdWdVozUm9LU0I3WEc0Z0lDQWdkbUZ5SUdsdWMzUmhibU5sSUQwZ1MyeGhjM011YVc1emRHRnVZMlZRYjI5c0xuQnZjQ2dwTzF4dUlDQWdJRXRzWVhOekxtTmhiR3dvYVc1emRHRnVZMlVzSUdFeExDQmhNaXdnWVRNcE8xeHVJQ0FnSUhKbGRIVnliaUJwYm5OMFlXNWpaVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUV0c1lYTnpLR0V4TENCaE1pd2dZVE1wTzF4dUlDQjlYRzU5TzF4dVhHNTJZWElnWm05MWNrRnlaM1Z0Wlc1MFVHOXZiR1Z5SUQwZ1puVnVZM1JwYjI0Z0tHRXhMQ0JoTWl3Z1lUTXNJR0UwS1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR0V4TENCaE1pd2dZVE1zSUdFMEtUdGNiaUFnSUNCeVpYUjFjbTRnYVc1emRHRnVZMlU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCTGJHRnpjeWhoTVN3Z1lUSXNJR0V6TENCaE5DazdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQm1hWFpsUVhKbmRXMWxiblJRYjI5c1pYSWdQU0JtZFc1amRHbHZiaUFvWVRFc0lHRXlMQ0JoTXl3Z1lUUXNJR0UxS1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR0V4TENCaE1pd2dZVE1zSUdFMExDQmhOU2s3WEc0Z0lDQWdjbVYwZFhKdUlHbHVjM1JoYm1ObE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dTMnhoYzNNb1lURXNJR0V5TENCaE15d2dZVFFzSUdFMUtUdGNiaUFnZlZ4dWZUdGNibHh1ZG1GeUlITjBZVzVrWVhKa1VtVnNaV0Z6WlhJZ1BTQm1kVzVqZEdsdmJpQW9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2RtRnlJRXRzWVhOeklEMGdkR2hwY3p0Y2JpQWdJU2hwYm5OMFlXNWpaU0JwYm5OMFlXNWpaVzltSUV0c1lYTnpLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFVjbmxwYm1jZ2RHOGdjbVZzWldGelpTQmhiaUJwYm5OMFlXNWpaU0JwYm5SdklHRWdjRzl2YkNCdlppQmhJR1JwWm1abGNtVnVkQ0IwZVhCbExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdhVzV6ZEdGdVkyVXVaR1Z6ZEhKMVkzUnZjaWdwTzF4dUlDQnBaaUFvUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG14bGJtZDBhQ0E4SUV0c1lYTnpMbkJ2YjJ4VGFYcGxLU0I3WEc0Z0lDQWdTMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbkIxYzJnb2FXNXpkR0Z1WTJVcE8xeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ1JFVkdRVlZNVkY5UVQwOU1YMU5KV2tVZ1BTQXhNRHRjYm5aaGNpQkVSVVpCVlV4VVgxQlBUMHhGVWlBOUlHOXVaVUZ5WjNWdFpXNTBVRzl2YkdWeU8xeHVYRzR2S2lwY2JpQXFJRUYxWjIxbGJuUnpJR0JEYjNCNVEyOXVjM1J5ZFdOMGIzSmdJSFJ2SUdKbElHRWdjRzl2YkdGaWJHVWdZMnhoYzNNc0lHRjFaMjFsYm5ScGJtY2diMjVzZVNCMGFHVWdZMnhoYzNOY2JpQXFJR2wwYzJWc1ppQW9jM1JoZEdsallXeHNlU2tnYm05MElHRmtaR2x1WnlCaGJua2djSEp2ZEc5MGVYQnBZMkZzSUdacFpXeGtjeTRnUVc1NUlFTnZjSGxEYjI1emRISjFZM1J2Y2x4dUlDb2dlVzkxSUdkcGRtVWdkR2hwY3lCdFlYa2dhR0YyWlNCaElHQndiMjlzVTJsNlpXQWdjSEp2Y0dWeWRIa3NJR0Z1WkNCM2FXeHNJR3h2YjJzZ1ptOXlJR0ZjYmlBcUlIQnliM1J2ZEhsd2FXTmhiQ0JnWkdWemRISjFZM1J2Y21BZ2IyNGdhVzV6ZEdGdVkyVnpJQ2h2Y0hScGIyNWhiQ2t1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnUTI5d2VVTnZibk4wY25WamRHOXlJRU52Ym5OMGNuVmpkRzl5SUhSb1lYUWdZMkZ1SUdKbElIVnpaV1FnZEc4Z2NtVnpaWFF1WEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQndiMjlzWlhJZ1EzVnpkRzl0YVhwaFlteGxJSEJ2YjJ4bGNpNWNiaUFxTDF4dWRtRnlJR0ZrWkZCdmIyeHBibWRVYnlBOUlHWjFibU4wYVc5dUlDaERiM0I1UTI5dWMzUnlkV04wYjNJc0lIQnZiMnhsY2lrZ2UxeHVJQ0IyWVhJZ1RtVjNTMnhoYzNNZ1BTQkRiM0I1UTI5dWMzUnlkV04wYjNJN1hHNGdJRTVsZDB0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkNBOUlGdGRPMXh1SUNCT1pYZExiR0Z6Y3k1blpYUlFiMjlzWldRZ1BTQndiMjlzWlhJZ2ZId2dSRVZHUVZWTVZGOVFUMDlNUlZJN1hHNGdJR2xtSUNnaFRtVjNTMnhoYzNNdWNHOXZiRk5wZW1VcElIdGNiaUFnSUNCT1pYZExiR0Z6Y3k1d2IyOXNVMmw2WlNBOUlFUkZSa0ZWVEZSZlVFOVBURjlUU1ZwRk8xeHVJQ0I5WEc0Z0lFNWxkMHRzWVhOekxuSmxiR1ZoYzJVZ1BTQnpkR0Z1WkdGeVpGSmxiR1ZoYzJWeU8xeHVJQ0J5WlhSMWNtNGdUbVYzUzJ4aGMzTTdYRzU5TzF4dVhHNTJZWElnVUc5dmJHVmtRMnhoYzNNZ1BTQjdYRzRnSUdGa1pGQnZiMnhwYm1kVWJ6b2dZV1JrVUc5dmJHbHVaMVJ2TEZ4dUlDQnZibVZCY21kMWJXVnVkRkJ2YjJ4bGNqb2diMjVsUVhKbmRXMWxiblJRYjI5c1pYSXNYRzRnSUhSM2IwRnlaM1Z0Wlc1MFVHOXZiR1Z5T2lCMGQyOUJjbWQxYldWdWRGQnZiMnhsY2l4Y2JpQWdkR2h5WldWQmNtZDFiV1Z1ZEZCdmIyeGxjam9nZEdoeVpXVkJjbWQxYldWdWRGQnZiMnhsY2l4Y2JpQWdabTkxY2tGeVozVnRaVzUwVUc5dmJHVnlPaUJtYjNWeVFYSm5kVzFsYm5SUWIyOXNaWElzWEc0Z0lHWnBkbVZCY21kMWJXVnVkRkJ2YjJ4bGNqb2dabWwyWlVGeVozVnRaVzUwVUc5dmJHVnlYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGQnZiMnhsWkVOc1lYTnpPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NID0gcmVxdWlyZSgnLi9SZWFjdERPTScpO1xudmFyIFJlYWN0RE9NU2VydmVyID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlcnZlcicpO1xudmFyIFJlYWN0SXNvbW9ycGhpYyA9IHJlcXVpcmUoJy4vUmVhY3RJc29tb3JwaGljJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBkZXByZWNhdGVkID0gcmVxdWlyZSgnLi9kZXByZWNhdGVkJyk7XG5cbi8vIGB2ZXJzaW9uYCB3aWxsIGJlIGFkZGVkIGhlcmUgYnkgUmVhY3RJc29tb3JwaGljLlxudmFyIFJlYWN0ID0ge307XG5cbmFzc2lnbihSZWFjdCwgUmVhY3RJc29tb3JwaGljKTtcblxuYXNzaWduKFJlYWN0LCB7XG4gIC8vIFJlYWN0RE9NXG4gIGZpbmRET01Ob2RlOiBkZXByZWNhdGVkKCdmaW5kRE9NTm9kZScsICdSZWFjdERPTScsICdyZWFjdC1kb20nLCBSZWFjdERPTSwgUmVhY3RET00uZmluZERPTU5vZGUpLFxuICByZW5kZXI6IGRlcHJlY2F0ZWQoJ3JlbmRlcicsICdSZWFjdERPTScsICdyZWFjdC1kb20nLCBSZWFjdERPTSwgUmVhY3RET00ucmVuZGVyKSxcbiAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZGVwcmVjYXRlZCgndW5tb3VudENvbXBvbmVudEF0Tm9kZScsICdSZWFjdERPTScsICdyZWFjdC1kb20nLCBSZWFjdERPTSwgUmVhY3RET00udW5tb3VudENvbXBvbmVudEF0Tm9kZSksXG5cbiAgLy8gUmVhY3RET01TZXJ2ZXJcbiAgcmVuZGVyVG9TdHJpbmc6IGRlcHJlY2F0ZWQoJ3JlbmRlclRvU3RyaW5nJywgJ1JlYWN0RE9NU2VydmVyJywgJ3JlYWN0LWRvbS9zZXJ2ZXInLCBSZWFjdERPTVNlcnZlciwgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcpLFxuICByZW5kZXJUb1N0YXRpY01hcmt1cDogZGVwcmVjYXRlZCgncmVuZGVyVG9TdGF0aWNNYXJrdXAnLCAnUmVhY3RET01TZXJ2ZXInLCAncmVhY3QtZG9tL3NlcnZlcicsIFJlYWN0RE9NU2VydmVyLCBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0YXRpY01hcmt1cClcbn0pO1xuXG5SZWFjdC5fX1NFQ1JFVF9ET01fRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9IFJlYWN0RE9NO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGlkV2FybktleSA9ICdfZ2V0RE9NTm9kZURpZFdhcm4nO1xuXG52YXIgUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4gPSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJlZCBieSB0aGlzIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybiB7RE9NRWxlbWVudH0gVGhlIHJvb3Qgbm9kZSBvZiB0aGlzIGNvbXBvbmVudC5cbiAgICogQGZpbmFsXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIGdldERPTU5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0aGlzLmNvbnN0cnVjdG9yW2RpZFdhcm5LZXldLCAnJXMuZ2V0RE9NTm9kZSguLi4pIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJyArICdSZWFjdERPTS5maW5kRE9NTm9kZShpbnN0YW5jZSkgaW5zdGVhZC4nLCBSZWFjdEluc3RhbmNlTWFwLmdldCh0aGlzKS5nZXROYW1lKCkgfHwgdGhpcy50YWdOYW1lIHx8ICdVbmtub3duJykgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25zdHJ1Y3RvcltkaWRXYXJuS2V5XSA9IHRydWU7XG4gICAgcmV0dXJuIGZpbmRET01Ob2RlKHRoaXMpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0QnJvd3NlckNvbXBvbmVudE1peGluO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRUp5YjNkelpYSkRiMjF3YjI1bGJuUk5hWGhwYmk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JDY205M2MyVnlRMjl0Y0c5dVpXNTBUV2w0YVc1Y2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFbHVjM1JoYm1ObFRXRndKeWs3WEc1Y2JuWmhjaUJtYVc1a1JFOU5UbTlrWlNBOUlISmxjWFZwY21Vb0p5NHZabWx1WkVSUFRVNXZaR1VuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNTJZWElnWkdsa1YyRnlia3RsZVNBOUlDZGZaMlYwUkU5TlRtOWtaVVJwWkZkaGNtNG5PMXh1WEc1MllYSWdVbVZoWTNSQ2NtOTNjMlZ5UTI5dGNHOXVaVzUwVFdsNGFXNGdQU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklIUm9aU0JFVDAwZ2JtOWtaU0J5Wlc1a1pYSmxaQ0JpZVNCMGFHbHpJR052YlhCdmJtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFOU5SV3hsYldWdWRIMGdWR2hsSUhKdmIzUWdibTlrWlNCdlppQjBhR2x6SUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ29nUUdacGJtRnNYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvdlhHNGdJR2RsZEVSUFRVNXZaR1U2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aDBhR2x6TG1OdmJuTjBjblZqZEc5eVcyUnBaRmRoY201TFpYbGRMQ0FuSlhNdVoyVjBSRTlOVG05a1pTZ3VMaTRwSUdseklHUmxjSEpsWTJGMFpXUXVJRkJzWldGelpTQjFjMlVnSnlBcklDZFNaV0ZqZEVSUFRTNW1hVzVrUkU5TlRtOWtaU2hwYm5OMFlXNWpaU2tnYVc1emRHVmhaQzRuTENCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3TG1kbGRDaDBhR2x6S1M1blpYUk9ZVzFsS0NrZ2ZId2dkR2hwY3k1MFlXZE9ZVzFsSUh4OElDZFZibXR1YjNkdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdkR2hwY3k1amIyNXpkSEoxWTNSdmNsdGthV1JYWVhKdVMyVjVYU0E5SUhSeWRXVTdYRzRnSUNBZ2NtVjBkWEp1SUdacGJtUkVUMDFPYjJSbEtIUm9hWE1wTzF4dUlDQjlYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUW5KdmQzTmxja052YlhCdmJtVnVkRTFwZUdsdU95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlclxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTtcbnZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJlZ2lzdHJ5Jyk7XG52YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHJlcXVpcmUoJy4vUmVhY3RFdmVudEVtaXR0ZXJNaXhpbicpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgnLi9WaWV3cG9ydE1ldHJpY3MnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcblxuLyoqXG4gKiBTdW1tYXJ5IG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGV2ZW50IGhhbmRsaW5nOlxuICpcbiAqICAtIFRvcC1sZXZlbCBkZWxlZ2F0aW9uIGlzIHVzZWQgdG8gdHJhcCBtb3N0IG5hdGl2ZSBicm93c2VyIGV2ZW50cy4gVGhpc1xuICogICAgbWF5IG9ubHkgb2NjdXIgaW4gdGhlIG1haW4gdGhyZWFkIGFuZCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2ZcbiAqICAgIFJlYWN0RXZlbnRMaXN0ZW5lciwgd2hpY2ggaXMgaW5qZWN0ZWQgYW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2FibGVcbiAqICAgIGV2ZW50IHNvdXJjZXMuIFRoaXMgaXMgdGhlIG9ubHkgd29yayB0aGF0IG9jY3VycyBpbiB0aGUgbWFpbiB0aHJlYWQuXG4gKlxuICogIC0gV2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBsaWNhdGUgZXZlbnRzIHRvIGFjY291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBUaGlzXG4gKiAgICBtYXkgYmUgZG9uZSBpbiB0aGUgd29ya2VyIHRocmVhZC5cbiAqXG4gKiAgLSBGb3J3YXJkIHRoZXNlIG5hdGl2ZSBldmVudHMgKHdpdGggdGhlIGFzc29jaWF0ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0b1xuICogICAgdHJhcCBpdCkgdG8gYEV2ZW50UGx1Z2luSHViYCwgd2hpY2ggaW4gdHVybiB3aWxsIGFzayBwbHVnaW5zIGlmIHRoZXkgd2FudFxuICogICAgdG8gZXh0cmFjdCBhbnkgc3ludGhldGljIGV2ZW50cy5cbiAqXG4gKiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB3aWxsIHRoZW4gcHJvY2VzcyBlYWNoIGV2ZW50IGJ5IGFubm90YXRpbmcgdGhlbSB3aXRoXG4gKiAgICBcImRpc3BhdGNoZXNcIiwgYSBzZXF1ZW5jZSBvZiBsaXN0ZW5lcnMgYW5kIElEcyB0aGF0IGNhcmUgYWJvdXQgdGhhdCBldmVudC5cbiAqXG4gKiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB0aGVuIGRpc3BhdGNoZXMgdGhlIGV2ZW50cy5cbiAqXG4gKiBPdmVydmlldyBvZiBSZWFjdCBhbmQgdGhlIGV2ZW50IHN5c3RlbTpcbiAqXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuXG4gKiB8ICAgIERPTSAgICAgfCAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuXG4gKiAgICAgICB8ICAgICAgICAgICAuXG4gKiAgICAgICB2ICAgICAgICAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuXG4gKiB8IFJlYWN0RXZlbnQgfCAgICAuXG4gKiB8ICBMaXN0ZW5lciAgfCAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICArLS0tLS0tLS0rfFNpbXBsZUV2ZW50fFxuICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgIHwgICAgICAgICB8UGx1Z2luICAgICB8XG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgdiAgICAgICAgICstLS0tLS0tLS0tLStcbiAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLStcbiAqIHwgICAgICstLS0tLS0tLS0tLS4tLS0+fEV2ZW50UGx1Z2luSHVifCAgICAgICAgICAgICAgICAgICAgfCAgICBFdmVudCAgIHxcbiAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tKyAgfCBQcm9wYWdhdG9yc3xcbiAqIHwgUmVhY3RFdmVudCB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAgfFRhcEV2ZW50ICAgfCAgfC0tLS0tLS0tLS0tLXxcbiAqIHwgIEVtaXR0ZXIgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfDwtLS0rfFBsdWdpbiAgICAgfCAgfG90aGVyIHBsdWdpbnxcbiAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tKyAgfCAgdXRpbGl0aWVzIHxcbiAqIHwgICAgICstLS0tLS0tLS0tLS4tLS0+fCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLStcbiAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tK1xuICogKy0tLS0tfC0tLS0tLSsgICAgLiAgICAgICAgICAgICAgICBeICAgICAgICArLS0tLS0tLS0tLS0rXG4gKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgIHwgICAgICAgIHxFbnRlci9MZWF2ZXxcbiAqICAgICAgICsgICAgICAgICAgIC4gICAgICAgICAgICAgICAgKy0tLS0tLS0rfFBsdWdpbiAgICAgfFxuICogKy0tLS0tLS0tLS0tLS0rICAgLiAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4gKiB8IGFwcGxpY2F0aW9uIHwgICAuXG4gKiB8LS0tLS0tLS0tLS0tLXwgICAuXG4gKiB8ICAgICAgICAgICAgIHwgICAuXG4gKiB8ICAgICAgICAgICAgIHwgICAuXG4gKiArLS0tLS0tLS0tLS0tLSsgICAuXG4gKiAgICAgICAgICAgICAgICAgICAuXG4gKiAgICBSZWFjdCBDb3JlICAgICAuICBHZW5lcmFsIFB1cnBvc2UgRXZlbnQgUGx1Z2luIFN5c3RlbVxuICovXG5cbnZhciBhbHJlYWR5TGlzdGVuaW5nVG8gPSB7fTtcbnZhciBpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSA9IGZhbHNlO1xudmFyIHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlciA9IDA7XG5cbi8vIEZvciBldmVudHMgbGlrZSAnc3VibWl0JyB3aGljaCBkb24ndCBjb25zaXN0ZW50bHkgYnViYmxlICh3aGljaCB3ZSB0cmFwIGF0IGFcbi8vIGxvd2VyIG5vZGUgdGhhbiBgZG9jdW1lbnRgKSwgYmluZGluZyBhdCBgZG9jdW1lbnRgIHdvdWxkIGNhdXNlIGR1cGxpY2F0ZVxuLy8gZXZlbnRzIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBoZXJlXG52YXIgdG9wRXZlbnRNYXBwaW5nID0ge1xuICB0b3BBYm9ydDogJ2Fib3J0JyxcbiAgdG9wQmx1cjogJ2JsdXInLFxuICB0b3BDYW5QbGF5OiAnY2FucGxheScsXG4gIHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLFxuICB0b3BDaGFuZ2U6ICdjaGFuZ2UnLFxuICB0b3BDbGljazogJ2NsaWNrJyxcbiAgdG9wQ29tcG9zaXRpb25FbmQ6ICdjb21wb3NpdGlvbmVuZCcsXG4gIHRvcENvbXBvc2l0aW9uU3RhcnQ6ICdjb21wb3NpdGlvbnN0YXJ0JyxcbiAgdG9wQ29tcG9zaXRpb25VcGRhdGU6ICdjb21wb3NpdGlvbnVwZGF0ZScsXG4gIHRvcENvbnRleHRNZW51OiAnY29udGV4dG1lbnUnLFxuICB0b3BDb3B5OiAnY29weScsXG4gIHRvcEN1dDogJ2N1dCcsXG4gIHRvcERvdWJsZUNsaWNrOiAnZGJsY2xpY2snLFxuICB0b3BEcmFnOiAnZHJhZycsXG4gIHRvcERyYWdFbmQ6ICdkcmFnZW5kJyxcbiAgdG9wRHJhZ0VudGVyOiAnZHJhZ2VudGVyJyxcbiAgdG9wRHJhZ0V4aXQ6ICdkcmFnZXhpdCcsXG4gIHRvcERyYWdMZWF2ZTogJ2RyYWdsZWF2ZScsXG4gIHRvcERyYWdPdmVyOiAnZHJhZ292ZXInLFxuICB0b3BEcmFnU3RhcnQ6ICdkcmFnc3RhcnQnLFxuICB0b3BEcm9wOiAnZHJvcCcsXG4gIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLFxuICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG4gIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsXG4gIHRvcEVuZGVkOiAnZW5kZWQnLFxuICB0b3BFcnJvcjogJ2Vycm9yJyxcbiAgdG9wRm9jdXM6ICdmb2N1cycsXG4gIHRvcElucHV0OiAnaW5wdXQnLFxuICB0b3BLZXlEb3duOiAna2V5ZG93bicsXG4gIHRvcEtleVByZXNzOiAna2V5cHJlc3MnLFxuICB0b3BLZXlVcDogJ2tleXVwJyxcbiAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJyxcbiAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0JyxcbiAgdG9wTW91c2VEb3duOiAnbW91c2Vkb3duJyxcbiAgdG9wTW91c2VNb3ZlOiAnbW91c2Vtb3ZlJyxcbiAgdG9wTW91c2VPdXQ6ICdtb3VzZW91dCcsXG4gIHRvcE1vdXNlT3ZlcjogJ21vdXNlb3ZlcicsXG4gIHRvcE1vdXNlVXA6ICdtb3VzZXVwJyxcbiAgdG9wUGFzdGU6ICdwYXN0ZScsXG4gIHRvcFBhdXNlOiAncGF1c2UnLFxuICB0b3BQbGF5OiAncGxheScsXG4gIHRvcFBsYXlpbmc6ICdwbGF5aW5nJyxcbiAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG4gIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxcbiAgdG9wU2Nyb2xsOiAnc2Nyb2xsJyxcbiAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcbiAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLFxuICB0b3BTZWxlY3Rpb25DaGFuZ2U6ICdzZWxlY3Rpb25jaGFuZ2UnLFxuICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG4gIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcbiAgdG9wVGV4dElucHV0OiAndGV4dElucHV0JyxcbiAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuICB0b3BUb3VjaENhbmNlbDogJ3RvdWNoY2FuY2VsJyxcbiAgdG9wVG91Y2hFbmQ6ICd0b3VjaGVuZCcsXG4gIHRvcFRvdWNoTW92ZTogJ3RvdWNobW92ZScsXG4gIHRvcFRvdWNoU3RhcnQ6ICd0b3VjaHN0YXJ0JyxcbiAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2FpdGluZzogJ3dhaXRpbmcnLFxuICB0b3BXaGVlbDogJ3doZWVsJ1xufTtcblxuLyoqXG4gKiBUbyBlbnN1cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBvbiB0aGUgcGFnZVxuICovXG52YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJzSUQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpO1xuXG5mdW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KSB7XG4gIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEgaG9zdCBvYmplY3QgYW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgXG4gIC8vIGRpcmVjdGx5LlxuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0ZW5lcnNJREtleSkpIHtcbiAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9IHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlcisrO1xuICAgIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTtcbiAgfVxuICByZXR1cm4gYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTtcbn1cblxuLyoqXG4gKiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3JcbiAqIGV4YW1wbGU6XG4gKlxuICogICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIucHV0TGlzdGVuZXIoJ215SUQnLCAnb25DbGljaycsIG15RnVuY3Rpb24pO1xuICpcbiAqIFRoaXMgd291bGQgYWxsb2NhdGUgYSBcInJlZ2lzdHJhdGlvblwiIG9mIGAoJ29uQ2xpY2snLCBteUZ1bmN0aW9uKWAgb24gJ215SUQnLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gYXNzaWduKHt9LCBSZWFjdEV2ZW50RW1pdHRlck1peGluLCB7XG5cbiAgLyoqXG4gICAqIEluamVjdGFibGUgZXZlbnQgYmFja2VuZFxuICAgKi9cbiAgUmVhY3RFdmVudExpc3RlbmVyOiBudWxsLFxuXG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBSZWFjdEV2ZW50TGlzdGVuZXJcbiAgICAgKi9cbiAgICBpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChSZWFjdEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5zZXRIYW5kbGVUb3BMZXZlbChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaGFuZGxlVG9wTGV2ZWwpO1xuICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciA9IFJlYWN0RXZlbnRMaXN0ZW5lcjtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgd2hldGhlciBvciBub3QgYW55IGNyZWF0ZWQgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgVHJ1ZSBpZiBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAqL1xuICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkge1xuICAgIGlmIChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyKSB7XG4gICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZW5hYmxlZCk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGNhbGxiYWNrcyBhcmUgZW5hYmxlZC5cbiAgICovXG4gIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIShSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyICYmIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXZSBsaXN0ZW4gZm9yIGJ1YmJsZWQgdG91Y2ggZXZlbnRzIG9uIHRoZSBkb2N1bWVudCBvYmplY3QuXG4gICAqXG4gICAqIEZpcmVmb3ggdjguMDEgKGFuZCBwb3NzaWJseSBvdGhlcnMpIGV4aGliaXRlZCBzdHJhbmdlIGJlaGF2aW9yIHdoZW5cbiAgICogbW91bnRpbmcgYG9ubW91c2Vtb3ZlYCBldmVudHMgYXQgc29tZSBub2RlIHRoYXQgd2FzIG5vdCB0aGUgZG9jdW1lbnRcbiAgICogZWxlbWVudC4gVGhlIHN5bXB0b21zIHdlcmUgdGhhdCBpZiB5b3VyIG1vdXNlIGlzIG5vdCBtb3Zpbmcgb3ZlciBzb21ldGhpbmdcbiAgICogY29udGFpbmVkIHdpdGhpbiB0aGF0IG1vdW50IHBvaW50IChmb3IgZXhhbXBsZSBvbiB0aGUgYmFja2dyb3VuZCkgdGhlXG4gICAqIHRvcC1sZXZlbCBsaXN0ZW5lcnMgZm9yIGBvbm1vdXNlbW92ZWAgd29uJ3QgYmUgY2FsbGVkLiBIb3dldmVyLCBpZiB5b3VcbiAgICogcmVnaXN0ZXIgdGhlIGBtb3VzZW1vdmVgIG9uIHRoZSBkb2N1bWVudCBvYmplY3QsIHRoZW4gaXQgd2lsbCBvZiBjb3Vyc2VcbiAgICogY2F0Y2ggYWxsIGBtb3VzZW1vdmVgcy4gVGhpcyBhbG9uZyB3aXRoIGlPUyBxdWlya3MsIGp1c3RpZmllcyByZXN0cmljdGluZ1xuICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIHRvIHRoZSBkb2N1bWVudCBvYmplY3Qgb25seSwgYXQgbGVhc3QgZm9yIHRoZXNlXG4gICAqIG1vdmVtZW50IHR5cGVzIG9mIGV2ZW50cyBhbmQgcG9zc2libHkgYWxsIGV2ZW50cy5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbFxuICAgKlxuICAgKiBBbHNvLCBga2V5dXBgL2BrZXlwcmVzc2AvYGtleWRvd25gIGRvIG5vdCBidWJibGUgdG8gdGhlIHdpbmRvdyBvbiBJRSwgYnV0XG4gICAqIHRoZXkgYnViYmxlIHRvIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50RG9jdW1lbnRIYW5kbGUgRG9jdW1lbnQgd2hpY2ggb3ducyB0aGUgY29udGFpbmVyXG4gICAqL1xuICBsaXN0ZW5UbzogZnVuY3Rpb24gKHJlZ2lzdHJhdGlvbk5hbWUsIGNvbnRlbnREb2N1bWVudEhhbmRsZSkge1xuICAgIHZhciBtb3VudEF0ID0gY29udGVudERvY3VtZW50SGFuZGxlO1xuICAgIHZhciBpc0xpc3RlbmluZyA9IGdldExpc3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQpO1xuICAgIHZhciBkZXBlbmRlbmNpZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV07XG5cbiAgICB2YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldO1xuICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkgJiYgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7XG4gICAgICAgIGlmIChkZXBlbmRlbmN5ID09PSB0b3BMZXZlbFR5cGVzLnRvcFdoZWVsKSB7XG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcFdoZWVsLCAnd2hlZWwnLCBtb3VudEF0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwnKSkge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wV2hlZWwsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2FwdHVyZSBhIGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuXG4gICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbFxuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wV2hlZWwsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSB0b3BMZXZlbFR5cGVzLnRvcFNjcm9sbCkge1xuXG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wU2Nyb2xsLCAnc2Nyb2xsJywgbW91bnRBdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcFNjcm9sbCwgJ3Njcm9sbCcsIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09IHRvcExldmVsVHlwZXMudG9wRm9jdXMgfHwgZGVwZW5kZW5jeSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BCbHVyKSB7XG5cbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXMnLCB0cnVlKSkge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcEZvY3VzLCAnZm9jdXMnLCBtb3VudEF0KTtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlcy50b3BCbHVyLCAnYmx1cicsIG1vdW50QXQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXNpbicpKSB7XG4gICAgICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJibGUuXG4gICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhlLmh0bWxcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGVzLnRvcEZvY3VzLCAnZm9jdXNpbicsIG1vdW50QXQpO1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZXMudG9wQmx1ciwgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBvbmNlXG4gICAgICAgICAgaXNMaXN0ZW5pbmdbdG9wTGV2ZWxUeXBlcy50b3BCbHVyXSA9IHRydWU7XG4gICAgICAgICAgaXNMaXN0ZW5pbmdbdG9wTGV2ZWxUeXBlcy50b3BGb2N1c10gPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkge1xuICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChkZXBlbmRlbmN5LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5jeV0sIG1vdW50QXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuICAgIHJldHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG4gIH0sXG5cbiAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gd2luZG93IHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cy4gV2UgY2FjaGUgc2Nyb2xsIHZhbHVlcyBzbyB0aGF0XG4gICAqIGFwcGxpY2F0aW9uIGNvZGUgY2FuIGFjY2VzcyB0aGVtIHdpdGhvdXQgdHJpZ2dlcmluZyByZWZsb3dzLlxuICAgKlxuICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Njcm9sbC5odG1sXG4gICAqL1xuICBlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlKSB7XG4gICAgICB2YXIgcmVmcmVzaCA9IFZpZXdwb3J0TWV0cmljcy5yZWZyZXNoU2Nyb2xsVmFsdWVzO1xuICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUocmVmcmVzaCk7XG4gICAgICBpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSA9IHRydWU7XG4gICAgfVxuICB9LFxuXG4gIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczogRXZlbnRQbHVnaW5IdWIuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLFxuXG4gIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiBFdmVudFBsdWdpbkh1Yi5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxcblxuICBwdXRMaXN0ZW5lcjogRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXIsXG5cbiAgZ2V0TGlzdGVuZXI6IEV2ZW50UGx1Z2luSHViLmdldExpc3RlbmVyLFxuXG4gIGRlbGV0ZUxpc3RlbmVyOiBFdmVudFBsdWdpbkh1Yi5kZWxldGVMaXN0ZW5lcixcblxuICBkZWxldGVBbGxMaXN0ZW5lcnM6IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUFsbExpc3RlbmVyc1xuXG59KTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciwgJ1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicsIHtcbiAgcHV0TGlzdGVuZXI6ICdwdXRMaXN0ZW5lcicsXG4gIGRlbGV0ZUxpc3RlbmVyOiAnZGVsZXRlTGlzdGVuZXInXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXI7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENoaWxkUmVjb25jaWxlclxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xuXG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSkge1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgdmFyIGtleVVuaXF1ZSA9IGNoaWxkSW5zdGFuY2VzW25hbWVdID09PSB1bmRlZmluZWQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoa2V5VW5pcXVlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJywgbmFtZSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7XG4gICAgY2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCBudWxsKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZlxuICogY2hpbGRyZW4uIEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2hcbiAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi5cbiAqL1xudmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogR2VuZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNhc2VcbiAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGROb2RlcyBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICogQHJldHVybiB7P29iamVjdH0gQSBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgY2hpbGRJbnN0YW5jZXMgPSB7fTtcbiAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3RlZENoaWxkTm9kZXMsIGluc3RhbnRpYXRlQ2hpbGQsIGNoaWxkSW5zdGFuY2VzKTtcbiAgICByZXR1cm4gY2hpbGRJbnN0YW5jZXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9vYmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBhIHdheSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRlcmF0b3JzXG4gICAgLy8gaW5zdGVhZCBvZiBmb3IuLmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQgY2hlY2sgaWYgYW4gaXRlbSBoYXNcbiAgICAvLyBtb3ZlZC5cbiAgICAvLyBUT0RPOiBJZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28gdGhhdCB3ZVxuICAgIC8vIGNhbiBxdWlja2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC5cbiAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIG5hbWU7XG4gICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikge1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdO1xuICAgICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgdmFyIG5leHRDaGlsZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgbnVsbCk7XG4gICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZEluc3RhbmNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBVbm1vdW50IGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkge1xuICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGRyZW5bbmFtZV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cbiAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuKSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiByZW5kZXJlZENoaWxkcmVuKSB7XG4gICAgICBpZiAocmVuZGVyZWRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV07XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHJlbmRlcmVkQ2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRSZWNvbmNpbGVyO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE5DMHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUTJocGJHUlNaV052Ym1OcGJHVnlYRzRnS2lCQWRIbHdaV05vWldOcmN5QnpkR0YwYVdNdGIyNXNlVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBVbVZqYjI1amFXeGxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JTWldOdmJtTnBiR1Z5SnlrN1hHNWNiblpoY2lCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ2MyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMM05vYjNWc1pGVndaR0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBKeWs3WEc1MllYSWdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxiaUE5SUhKbGNYVnBjbVVvSnk0dmRISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm1aMWJtTjBhVzl1SUdsdWMzUmhiblJwWVhSbFEyaHBiR1FvWTJocGJHUkpibk4wWVc1alpYTXNJR05vYVd4a0xDQnVZVzFsS1NCN1hHNGdJQzh2SUZkbElHWnZkVzVrSUdFZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObExseHVJQ0IyWVhJZ2EyVjVWVzVwY1hWbElEMGdZMmhwYkdSSmJuTjBZVzVqWlhOYmJtRnRaVjBnUFQwOUlIVnVaR1ZtYVc1bFpEdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhyWlhsVmJtbHhkV1VzSUNkbWJHRjBkR1Z1UTJocGJHUnlaVzRvTGk0dUtUb2dSVzVqYjNWdWRHVnlaV1FnZEhkdklHTm9hV3hrY21WdUlIZHBkR2dnZEdobElITmhiV1VnYTJWNUxDQW5JQ3NnSjJBbGMyQXVJRU5vYVd4a0lHdGxlWE1nYlhWemRDQmlaU0IxYm1seGRXVTdJSGRvWlc0Z2RIZHZJR05vYVd4a2NtVnVJSE5vWVhKbElHRWdhMlY1TENCdmJteDVJQ2NnS3lBbmRHaGxJR1pwY25OMElHTm9hV3hrSUhkcGJHd2dZbVVnZFhObFpDNG5MQ0J1WVcxbEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVJQ0JwWmlBb1kyaHBiR1FnSVQwZ2JuVnNiQ0FtSmlCclpYbFZibWx4ZFdVcElIdGNiaUFnSUNCamFHbHNaRWx1YzNSaGJtTmxjMXR1WVcxbFhTQTlJR2x1YzNSaGJuUnBZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9ZMmhwYkdRc0lHNTFiR3dwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSWdjSEp2ZG1sa1pYTWdhR1ZzY0dWeWN5Qm1iM0lnYVc1cGRHbGhiR2w2YVc1bklHOXlJSFZ3WkdGMGFXNW5JR0VnYzJWMElHOW1YRzRnS2lCamFHbHNaSEpsYmk0Z1NYUnpJRzkxZEhCMWRDQnBjeUJ6ZFdsMFlXSnNaU0JtYjNJZ2NHRnpjMmx1WnlCcGRDQnZiblJ2SUZKbFlXTjBUWFZzZEdsRGFHbHNaQ0IzYUdsamFGeHVJQ29nWkc5bGN5QmthV1ptWldRZ2NtVnZjbVJsY21sdVp5QmhibVFnYVc1elpYSjBhVzl1TGx4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSWdQU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaVzVsY21GMFpYTWdZU0JjSW0xdmRXNTBJR2x0WVdkbFhDSWdabTl5SUdWaFkyZ2diMllnZEdobElITjFjSEJzYVdWa0lHTm9hV3hrY21WdUxpQkpiaUIwYUdVZ1kyRnpaVnh1SUNBZ0tpQnZaaUJnVW1WaFkzUkVUMDFEYjIxd2IyNWxiblJnTENCaElHMXZkVzUwSUdsdFlXZGxJR2x6SUdFZ2MzUnlhVzVuSUc5bUlHMWhjbXQxY0M1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQnVaWE4wWldSRGFHbHNaRTV2WkdWeklFNWxjM1JsWkNCamFHbHNaQ0J0WVhCekxseHVJQ0FnS2lCQWNtVjBkWEp1SUhzL2IySnFaV04wZlNCQklITmxkQ0J2WmlCamFHbHNaQ0JwYm5OMFlXNWpaWE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnYVc1emRHRnVkR2xoZEdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tHNWxjM1JsWkVOb2FXeGtUbTlrWlhNc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdhV1lnS0c1bGMzUmxaRU5vYVd4a1RtOWtaWE1nUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCamFHbHNaRWx1YzNSaGJtTmxjeUE5SUh0OU8xeHVJQ0FnSUhSeVlYWmxjbk5sUVd4c1EyaHBiR1J5Wlc0b2JtVnpkR1ZrUTJocGJHUk9iMlJsY3l3Z2FXNXpkR0Z1ZEdsaGRHVkRhR2xzWkN3Z1kyaHBiR1JKYm5OMFlXNWpaWE1wTzF4dUlDQWdJSEpsZEhWeWJpQmphR2xzWkVsdWMzUmhibU5sY3p0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWEJrWVhSbGN5QjBhR1VnY21WdVpHVnlaV1FnWTJocGJHUnlaVzRnWVc1a0lISmxkSFZ5Ym5NZ1lTQnVaWGNnYzJWMElHOW1JR05vYVd4a2NtVnVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUhCeVpYWkRhR2xzWkhKbGJpQlFjbVYyYVc5MWMyeDVJR2x1YVhScFlXeHBlbVZrSUhObGRDQnZaaUJqYUdsc1pISmxiaTVjYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQnVaWGgwUTJocGJHUnlaVzRnUm14aGRDQmphR2xzWkNCbGJHVnRaVzUwSUcxaGNITXVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJuUmxlSFJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMjlpYW1WamRIMGdRU0J1WlhjZ2MyVjBJRzltSUdOb2FXeGtJR2x1YzNSaGJtTmxjeTVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0IxY0dSaGRHVkRhR2xzWkhKbGJqb2dablZ1WTNScGIyNGdLSEJ5WlhaRGFHbHNaSEpsYml3Z2JtVjRkRU5vYVd4a2NtVnVMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUM4dklGZGxJR04xY25KbGJuUnNlU0JrYjI0bmRDQm9ZWFpsSUdFZ2QyRjVJSFJ2SUhSeVlXTnJJRzF2ZG1WeklHaGxjbVVnWW5WMElHbG1JSGRsSUhWelpTQnBkR1Z5WVhSdmNuTmNiaUFnSUNBdkx5QnBibk4wWldGa0lHOW1JR1p2Y2k0dWFXNGdkMlVnWTJGdUlIcHBjQ0IwYUdVZ2FYUmxjbUYwYjNKeklHRnVaQ0JqYUdWamF5QnBaaUJoYmlCcGRHVnRJR2hoYzF4dUlDQWdJQzh2SUcxdmRtVmtMbHh1SUNBZ0lDOHZJRlJQUkU4NklFbG1JRzV2ZEdocGJtY2dhR0Z6SUdOb1lXNW5aV1FzSUhKbGRIVnliaUIwYUdVZ2NISmxka05vYVd4a2NtVnVJRzlpYW1WamRDQnpieUIwYUdGMElIZGxYRzRnSUNBZ0x5OGdZMkZ1SUhGMWFXTnJiSGtnWW1GcGJHOTFkQ0JwWmlCdWIzUm9hVzVuSUdoaGN5QmphR0Z1WjJWa0xseHVJQ0FnSUdsbUlDZ2hibVY0ZEVOb2FXeGtjbVZ1SUNZbUlDRndjbVYyUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JpQWdJQ0IyWVhJZ2JtRnRaVHRjYmlBZ0lDQm1iM0lnS0c1aGJXVWdhVzRnYm1WNGRFTm9hV3hrY21WdUtTQjdYRzRnSUNBZ0lDQnBaaUFvSVc1bGVIUkRhR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQndjbVYyUTJocGJHUWdQU0J3Y21WMlEyaHBiR1J5Wlc0Z0ppWWdjSEpsZGtOb2FXeGtjbVZ1VzI1aGJXVmRPMXh1SUNBZ0lDQWdkbUZ5SUhCeVpYWkZiR1Z0Wlc1MElEMGdjSEpsZGtOb2FXeGtJQ1ltSUhCeVpYWkRhR2xzWkM1ZlkzVnljbVZ1ZEVWc1pXMWxiblE3WEc0Z0lDQWdJQ0IyWVhJZ2JtVjRkRVZzWlcxbGJuUWdQU0J1WlhoMFEyaHBiR1J5Wlc1YmJtRnRaVjA3WEc0Z0lDQWdJQ0JwWmlBb2NISmxka05vYVd4a0lDRTlJRzUxYkd3Z0ppWWdjMmh2ZFd4a1ZYQmtZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9jSEpsZGtWc1pXMWxiblFzSUc1bGVIUkZiR1Z0Wlc1MEtTa2dlMXh1SUNBZ0lDQWdJQ0JTWldGamRGSmxZMjl1WTJsc1pYSXVjbVZqWldsMlpVTnZiWEJ2Ym1WdWRDaHdjbVYyUTJocGJHUXNJRzVsZUhSRmJHVnRaVzUwTENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJRzVsZUhSRGFHbHNaSEpsYmx0dVlXMWxYU0E5SUhCeVpYWkRhR2xzWkR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbVYyUTJocGJHUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCU1pXRmpkRkpsWTI5dVkybHNaWEl1ZFc1dGIzVnVkRU52YlhCdmJtVnVkQ2h3Y21WMlEyaHBiR1FzSUc1aGJXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUM4dklGUm9aU0JqYUdsc1pDQnRkWE4wSUdKbElHbHVjM1JoYm5ScFlYUmxaQ0JpWldadmNtVWdhWFFuY3lCdGIzVnVkR1ZrTGx4dUlDQWdJQ0FnSUNCMllYSWdibVY0ZEVOb2FXeGtTVzV6ZEdGdVkyVWdQU0JwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLRzVsZUhSRmJHVnRaVzUwTENCdWRXeHNLVHRjYmlBZ0lDQWdJQ0FnYm1WNGRFTm9hV3hrY21WdVcyNWhiV1ZkSUQwZ2JtVjRkRU5vYVd4a1NXNXpkR0Z1WTJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJQzh2SUZWdWJXOTFiblFnWTJocGJHUnlaVzRnZEdoaGRDQmhjbVVnYm04Z2JHOXVaMlZ5SUhCeVpYTmxiblF1WEc0Z0lDQWdabTl5SUNodVlXMWxJR2x1SUhCeVpYWkRhR2xzWkhKbGJpa2dlMXh1SUNBZ0lDQWdhV1lnS0hCeVpYWkRhR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU0FtSmlBaEtHNWxlSFJEYUdsc1pISmxiaUFtSmlCdVpYaDBRMmhwYkdSeVpXNHVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2twS1NCN1hHNGdJQ0FnSUNBZ0lGSmxZV04wVW1WamIyNWphV3hsY2k1MWJtMXZkVzUwUTI5dGNHOXVaVzUwS0hCeVpYWkRhR2xzWkhKbGJsdHVZVzFsWFNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVaWGgwUTJocGJHUnlaVzQ3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVnViVzkxYm5SeklHRnNiQ0J5Wlc1a1pYSmxaQ0JqYUdsc1pISmxiaTRnVkdocGN5QnphRzkxYkdRZ1ltVWdkWE5sWkNCMGJ5QmpiR1ZoYmlCMWNDQmphR2xzWkhKbGJseHVJQ0FnS2lCM2FHVnVJSFJvYVhNZ1kyOXRjRzl1Wlc1MElHbHpJSFZ1Ylc5MWJuUmxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCeVpXNWtaWEpsWkVOb2FXeGtjbVZ1SUZCeVpYWnBiM1Z6YkhrZ2FXNXBkR2xoYkdsNlpXUWdjMlYwSUc5bUlHTm9hV3hrY21WdUxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lIVnViVzkxYm5SRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tISmxibVJsY21Wa1EyaHBiR1J5Wlc0cElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCdVlXMWxJR2x1SUhKbGJtUmxjbVZrUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUdsbUlDaHlaVzVrWlhKbFpFTm9hV3hrY21WdUxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaVzVrWlhKbFpFTm9hV3hrSUQwZ2NtVnVaR1Z5WldSRGFHbHNaSEpsYmx0dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnVW1WaFkzUlNaV052Ym1OcGJHVnlMblZ1Ylc5MWJuUkRiMjF3YjI1bGJuUW9jbVZ1WkdWeVpXUkRhR2xzWkNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRGFHbHNaRkpsWTI5dVkybHNaWEk3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENoaWxkcmVuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcjtcbnZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXI7XG5cbnZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9IC9cXC8oPyFcXC8pL2c7XG5mdW5jdGlvbiBlc2NhcGVVc2VyUHJvdmlkZWRLZXkodGV4dCkge1xuICByZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgJy8vJyk7XG59XG5cbi8qKlxuICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG4gKiB0cmF2ZXJzYWwuIEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgRm9yRWFjaEJvb2tLZWVwaW5nXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gZm9yRWFjaEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguXG4gKiBAcGFyYW0gez8qfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gY29udGV4dCB3aXRoLlxuICovXG5mdW5jdGlvbiBGb3JFYWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0aW9uLCBmb3JFYWNoQ29udGV4dCkge1xuICB0aGlzLmZ1bmMgPSBmb3JFYWNoRnVuY3Rpb247XG4gIHRoaXMuY29udGV4dCA9IGZvckVhY2hDb250ZXh0O1xuICB0aGlzLmNvdW50ID0gMDtcbn1cbkZvckVhY2hCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5mdW5jID0gbnVsbDtcbiAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgdGhpcy5jb3VudCA9IDA7XG59O1xuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZvckVhY2hCb29rS2VlcGluZywgdHdvQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlvbiBmb3JFYWNoU2luZ2xlQ2hpbGQoYm9va0tlZXBpbmcsIGNoaWxkLCBuYW1lKSB7XG4gIHZhciBmdW5jID0gYm9va0tlZXBpbmcuZnVuYztcbiAgdmFyIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xuXG4gIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7XG59XG5cbi8qKlxuICogSXRlcmF0ZXMgdGhyb3VnaCBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogVGhlIHByb3ZpZGVkIGZvckVhY2hGdW5jKGNoaWxkLCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZvckVhY2hGdW5jXG4gKiBAcGFyYW0geyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuICovXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gRm9yRWFjaEJvb2tLZWVwaW5nLmdldFBvb2xlZChmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGQsIHRyYXZlcnNlQ29udGV4dCk7XG4gIEZvckVhY2hCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG4gKiBtYXBwaW5nLiBBbGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxsYmFja3MuXG4gKlxuICogQGNvbnN0cnVjdG9yIE1hcEJvb2tLZWVwaW5nXG4gKiBAcGFyYW0geyEqfSBtYXBSZXN1bHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gbWFwRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG4gKiBAcGFyYW0gez8qfSBtYXBDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG4gKi9cbmZ1bmN0aW9uIE1hcEJvb2tLZWVwaW5nKG1hcFJlc3VsdCwga2V5UHJlZml4LCBtYXBGdW5jdGlvbiwgbWFwQ29udGV4dCkge1xuICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcbiAgdGhpcy5rZXlQcmVmaXggPSBrZXlQcmVmaXg7XG4gIHRoaXMuZnVuYyA9IG1hcEZ1bmN0aW9uO1xuICB0aGlzLmNvbnRleHQgPSBtYXBDb250ZXh0O1xuICB0aGlzLmNvdW50ID0gMDtcbn1cbk1hcEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnJlc3VsdCA9IG51bGw7XG4gIHRoaXMua2V5UHJlZml4ID0gbnVsbDtcbiAgdGhpcy5mdW5jID0gbnVsbDtcbiAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgdGhpcy5jb3VudCA9IDA7XG59O1xuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKE1hcEJvb2tLZWVwaW5nLCBmb3VyQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlvbiBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0KGJvb2tLZWVwaW5nLCBjaGlsZCwgY2hpbGRLZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGJvb2tLZWVwaW5nLnJlc3VsdDtcbiAgdmFyIGtleVByZWZpeCA9IGJvb2tLZWVwaW5nLmtleVByZWZpeDtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jO1xuICB2YXIgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cbiAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7XG4gICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtcbiAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleShtYXBwZWRDaGlsZCxcbiAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgIGtleVByZWZpeCArIChtYXBwZWRDaGlsZCAhPT0gY2hpbGQgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5IHx8ICcnKSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHtcbiAgdmFyIGVzY2FwZWRQcmVmaXggPSAnJztcbiAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG4gICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNvbnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpO1xuICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogVGhlIHByb3ZpZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZnVuYyBUaGUgbWFwIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBjb250ZXh0IENvbnRleHQgZm9yIG1hcEZ1bmN0aW9uLlxuICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGZ1bmMsIGNvbnRleHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENvdW50IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhc1xuICogYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbi5cbiAqL1xuZnVuY3Rpb24gY291bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXksIG51bGwpO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYSBjaGlsZHJlbiBvYmplY3QgKHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCkgYW5kXG4gKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHByb3ByaWF0ZWx5IHJlLWtleWVkIGNoaWxkcmVuLlxuICovXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHtcbiAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLFxuICBtYXA6IG1hcENoaWxkcmVuLFxuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxuICBjb3VudDogY291bnRDaGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDbGFzc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudCcpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9ucycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcycpO1xudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIGtleU1pcnJvciA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU1pcnJvcicpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgTUlYSU5TX0tFWSA9IGtleU9mKHsgbWl4aW5zOiBudWxsIH0pO1xuXG4vKipcbiAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuXG4gKi9cbnZhciBTcGVjUG9saWN5ID0ga2V5TWlycm9yKHtcbiAgLyoqXG4gICAqIFRoZXNlIG1ldGhvZHMgbWF5IGJlIGRlZmluZWQgb25seSBvbmNlIGJ5IHRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIG9yIG1peGluLlxuICAgKi9cbiAgREVGSU5FX09OQ0U6IG51bGwsXG4gIC8qKlxuICAgKiBUaGVzZSBtZXRob2RzIG1heSBiZSBkZWZpbmVkIGJ5IGJvdGggdGhlIGNsYXNzIHNwZWNpZmljYXRpb24gYW5kIG1peGlucy5cbiAgICogU3Vic2VxdWVudCBkZWZpbml0aW9ucyB3aWxsIGJlIGNoYWluZWQuIFRoZXNlIG1ldGhvZHMgbXVzdCByZXR1cm4gdm9pZC5cbiAgICovXG4gIERFRklORV9NQU5ZOiBudWxsLFxuICAvKipcbiAgICogVGhlc2UgbWV0aG9kcyBhcmUgb3ZlcnJpZGluZyB0aGUgYmFzZSBjbGFzcy5cbiAgICovXG4gIE9WRVJSSURFX0JBU0U6IG51bGwsXG4gIC8qKlxuICAgKiBUaGVzZSBtZXRob2RzIGFyZSBzaW1pbGFyIHRvIERFRklORV9NQU5ZLCBleGNlcHQgd2UgYXNzdW1lIHRoZXkgcmV0dXJuXG4gICAqIG9iamVjdHMuIFdlIHRyeSB0byBtZXJnZSB0aGUga2V5cyBvZiB0aGUgcmV0dXJuIHZhbHVlcyBvZiBhbGwgdGhlIG1peGVkIGluXG4gICAqIGZ1bmN0aW9ucy4gSWYgdGhlcmUgaXMgYSBrZXkgY29uZmxpY3Qgd2UgdGhyb3cuXG4gICAqL1xuICBERUZJTkVfTUFOWV9NRVJHRUQ6IG51bGxcbn0pO1xuXG52YXIgaW5qZWN0ZWRNaXhpbnMgPSBbXTtcblxudmFyIHdhcm5lZFNldFByb3BzID0gZmFsc2U7XG5mdW5jdGlvbiB3YXJuU2V0UHJvcHMoKSB7XG4gIGlmICghd2FybmVkU2V0UHJvcHMpIHtcbiAgICB3YXJuZWRTZXRQcm9wcyA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdzZXRQcm9wcyguLi4pIGFuZCByZXBsYWNlUHJvcHMoLi4uKSBhcmUgZGVwcmVjYXRlZC4gJyArICdJbnN0ZWFkLCBjYWxsIHJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLicpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ29tcG9zaXRlIGNvbXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBjb21wb25lbnRzIHRoYXQgY29tcG9zZSBvdGhlciBjb21wb3NpdGVcbiAqIG9yIG5hdGl2ZSBjb21wb25lbnRzLlxuICpcbiAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2ZcbiAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3NcbiAqIHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxuICpcbiAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2PjtcbiAqICAgICB9XG4gKiAgIH0pO1xuICpcbiAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmVcbiAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXG4gKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcbiAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZS5cbiAqXG4gKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2VcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHthcnJheX1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBtaXhpbnM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvblxuICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgcHJvdG90eXBlIChzdGF0aWMgbWV0aG9kcykuXG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgc3RhdGljczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBwcm9wVHlwZXM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29udGV4dFR5cGVzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNoaWxkQ29udGV4dFR5cGVzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8vID09PT0gRGVmaW5pdGlvbiBtZXRob2RzID09PT1cblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG4gICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1c2luZyBhbiBgaW5gIGNoZWNrKS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuICAgKiBvbiBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC5cbiAgICpcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGdldERlZmF1bHRQcm9wczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQsXG5cbiAgLyoqXG4gICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZFxuICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG4gICAqXG4gICAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICogICAgIHJldHVybiB7XG4gICAqICAgICAgIGlzT246IGZhbHNlLFxuICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKVxuICAgKiAgICAgfVxuICAgKiAgIH1cbiAgICpcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZTogU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQsXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBnZXRDaGlsZENvbnRleHQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VELFxuXG4gIC8qKlxuICAgKiBVc2VzIHByb3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5kZXIgdGhlXG4gICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHNvXG4gICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuICAgKlxuICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTtcbiAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+O1xuICAgKiAgIH1cbiAgICpcbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gICAqIEBub3NpZGVlZmZlY3RzXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgcmVuZGVyOiBTcGVjUG9saWN5LkRFRklORV9PTkNFLFxuXG4gIC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09XG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLlxuICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxuICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC5cbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb21wb25lbnRXaWxsTW91bnQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb21wb25lbnREaWRNb3VudDogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogSW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRTdGF0ZWAuIEN1cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuXG4gICAqXG4gICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkge1xuICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAqICAgICAgIGxpa2VzSW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50XG4gICAqICAgICB9KTtcbiAgICogICB9XG4gICAqXG4gICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG4gICAqIHRyYW5zaXRpb24gbWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJZiB5b3VcbiAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2ZcbiAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcbiAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudFxuICAgKiB1cGRhdGUuXG4gICAqXG4gICAqICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHtcbiAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fFxuICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuICAgKiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG4gICAqICAgfVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBTcGVjUG9saWN5LkRFRklORV9PTkNFLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG4gICAqIGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YCB0byBgbmV4dFByb3BzYCwgYG5leHRTdGF0ZWBcbiAgICogYW5kIGBuZXh0Q29udGV4dGAuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuXG4gICAqXG4gICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb21wb25lbnRXaWxsVXBkYXRlOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNlbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgKiBiZWVuIHVwZGF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2U3RhdGVcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q29udGV4dFxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudERpZFVwZGF0ZTogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmVcbiAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy5cbiAgICpcbiAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuXG4gICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LlxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50OiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG4gICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAb3ZlcnJpZGFibGVcbiAgICovXG4gIHVwZGF0ZUNvbXBvbmVudDogU3BlY1BvbGljeS5PVkVSUklERV9CQVNFXG5cbn07XG5cbi8qKlxuICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxuICpcbiAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb25cbiAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWNcbiAqIGFuZCBhcmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRlXG4gKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIFwic3RhdGljc1wiIGtleSB1bmRlclxuICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLlxuICovXG52YXIgUkVTRVJWRURfU1BFQ19LRVlTID0ge1xuICBkaXNwbGF5TmFtZTogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkge1xuICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gIH0sXG4gIG1peGluczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtcbiAgICBpZiAobWl4aW5zKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMuY2hpbGRDb250ZXh0KTtcbiAgICB9XG4gICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBhc3NpZ24oe30sIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLCBjaGlsZENvbnRleHRUeXBlcyk7XG4gIH0sXG4gIGNvbnRleHRUeXBlczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMuY29udGV4dCk7XG4gICAgfVxuICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IGFzc2lnbih7fSwgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLCBjb250ZXh0VHlwZXMpO1xuICB9LFxuICAvKipcbiAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzXG4gICAqIGF1dG9tYXRpYyBtZXJnaW5nLlxuICAgKi9cbiAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGdldERlZmF1bHRQcm9wcykge1xuICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcywgZ2V0RGVmYXVsdFByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzO1xuICAgIH1cbiAgfSxcbiAgcHJvcFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3BUeXBlcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKTtcbiAgICB9XG4gICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMsIHByb3BUeXBlcyk7XG4gIH0sXG4gIHN0YXRpY3M6IGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcbiAgfSxcbiAgYXV0b2JpbmQ6IGZ1bmN0aW9uICgpIHt9IH07XG5cbi8vIG5vb3BcbmZ1bmN0aW9uIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gdHlwZURlZikge1xuICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFuIGludmFyaWFudCBzbyBjb21wb25lbnRzXG4gICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0IG5vdCBpbiBfX0RFVl9fXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgdHlwZURlZltwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUocHJvdG8sIG5hbWUpIHtcbiAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXSA6IG51bGw7XG5cbiAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICEoc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5PVkVSUklERV9CQVNFKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJyArICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICsgJ2RvIG5vdCBvdmVybGFwIHdpdGggUmVhY3QgbWV0aG9kcy4nLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gIGlmIChwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICEoc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWSB8fCBzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICsgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAnICsgJ3RvIGEgbWl4aW4uJywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG4gKiBzcGVjaWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGluZyBSZWFjdCBjbGFzc3Nlcy5cbiAqL1xuZnVuY3Rpb24gbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpIHtcbiAgaWYgKCFzcGVjKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgISh0eXBlb2Ygc3BlYyAhPT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91XFwncmUgYXR0ZW1wdGluZyB0byAnICsgJ3VzZSBhIGNvbXBvbmVudCBjbGFzcyBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgISFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoc3BlYykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91XFwncmUgYXR0ZW1wdGluZyB0byAnICsgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICB2YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbiAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lXG4gIC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwgd2hldGhlclxuICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy5cbiAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkpIHtcbiAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9yLCBzcGVjLm1peGlucyk7XG4gIH1cblxuICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcbiAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChuYW1lID09PSBNSVhJTlNfS0VZKSB7XG4gICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJvdmUuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdO1xuICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUocHJvdG8sIG5hbWUpO1xuXG4gICAgaWYgKFJFU0VSVkVEX1NQRUNfS0VZUy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgUkVTRVJWRURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVjdG9yLCBwcm9wZXJ0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNldHVwIG1ldGhvZHMgb24gcHJvdG90eXBlOlxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBzaG91bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgYm91bmQ6XG4gICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwiKS5cbiAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVkIGluKS5cbiAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nO1xuICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID0gaXNGdW5jdGlvbiAmJiAhaXNSZWFjdENsYXNzTWV0aG9kICYmICFpc0FscmVhZHlEZWZpbmVkICYmIHNwZWMuYXV0b2JpbmQgIT09IGZhbHNlO1xuXG4gICAgICBpZiAoc2hvdWxkQXV0b0JpbmQpIHtcbiAgICAgICAgaWYgKCFwcm90by5fX3JlYWN0QXV0b0JpbmRNYXApIHtcbiAgICAgICAgICBwcm90by5fX3JlYWN0QXV0b0JpbmRNYXAgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBwcm90by5fX3JlYWN0QXV0b0JpbmRNYXBbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXG4gICAgICAgICAgLy8gVGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXG4gICAgICAgICAgIShpc1JlYWN0Q2xhc3NNZXRob2QgJiYgKHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VEIHx8IHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTlkpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgJyArICd3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuJywgc3BlY1BvbGljeSwgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwgdGhlIGV4aXN0aW5nXG4gICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLlxuICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCkge1xuICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWSkge1xuICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcbiAgICAgICAgICAgIC8vIGF0IHByb2ZpbGluZyB0b29scy5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICBpZiAoIXN0YXRpY3MpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG4gICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcbiAgICBpZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBpc1Jlc2VydmVkID0gKG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTKTtcbiAgICAhIWlzUmVzZXJ2ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHJlc2VydmVkICcgKyAncHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wiIGtleS4gRGVmaW5lIGl0ICcgKyAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSAnICsgJ2NvbnN0cnVjdG9yLicsIG5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBpc0luaGVyaXRlZCA9IChuYW1lIGluIENvbnN0cnVjdG9yKTtcbiAgICAhIWlzSW5oZXJpdGVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSAnICsgJ2R1ZSB0byBhIG1peGluLicsIG5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3RcbiAqIEByZXR1cm4ge29iamVjdH0gb25lIGFmdGVyIGl0IGhhcyBiZWVuIG11dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuICAhKG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1lcmdlIG5vbi1vYmplY3RzLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7XG4gICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAhKG9uZVtrZXldID09PSB1bmRlZmluZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogJyArICdUcmllZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCAnICsgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICsgJ2dldEluaXRpYWxTdGF0ZSgpIG9yIGdldERlZmF1bHRQcm9wcygpIG1ldGhvZHMgcmV0dXJuaW5nIG9iamVjdHMgJyArICd3aXRoIGNsYXNoaW5nIGtleXMuJywga2V5KSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb25lO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7XG4gICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmIChhID09IG51bGwpIHtcbiAgICAgIHJldHVybiBiO1xuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG4gICAgdmFyIGMgPSB7fTtcbiAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpO1xuICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBpZ25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG4gICAgb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbi8qKlxuICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLlxuICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBib3VuZCBtZXRob2QuXG4gKi9cbmZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkge1xuICB2YXIgYm91bmRNZXRob2QgPSBtZXRob2QuYmluZChjb21wb25lbnQpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51bGw7XG4gICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuY29uc3RydWN0b3IuZGlzcGxheU5hbWU7XG4gICAgdmFyIF9iaW5kID0gYm91bmRNZXRob2QuYmluZDtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBibG9jay1zY29wZWQtdmFyLCBuby11bmRlZiAqL1xuICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbiAobmV3VGhpcykge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbFxuICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvXG4gICAgICAvLyBsZXQncyB3YXJuLlxuICAgICAgaWYgKG5ld1RoaXMgIT09IGNvbXBvbmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsIGNvbXBvbmVudE5hbWUpIDogdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdiaW5kKCk6IFlvdSBhcmUgYmluZGluZyBhIGNvbXBvbmVudCBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4gJyArICdSZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGluIGEgaGlnaC1wZXJmb3JtYW5jZSAnICsgJ3dheSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJywgY29tcG9uZW50TmFtZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgICAgIH1cbiAgICAgIHZhciByZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcbiAgICAgIHJldHVybiByZWJvdW5kTWV0aG9kO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGJvdW5kTWV0aG9kO1xufVxuXG4vKipcbiAqIEJpbmRzIGFsbCBhdXRvLWJvdW5kIG1ldGhvZHMgaW4gYSBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICovXG5mdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2RzKGNvbXBvbmVudCkge1xuICBmb3IgKHZhciBhdXRvQmluZEtleSBpbiBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kTWFwKSB7XG4gICAgaWYgKGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRNYXAuaGFzT3duUHJvcGVydHkoYXV0b0JpbmRLZXkpKSB7XG4gICAgICB2YXIgbWV0aG9kID0gY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZE1hcFthdXRvQmluZEtleV07XG4gICAgICBjb21wb25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBiYXNlIGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmRcbiAqIHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuXG4gKi9cbnZhciBSZWFjdENsYXNzTWl4aW4gPSB7XG5cbiAgLyoqXG4gICAqIFRPRE86IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudFxuICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRoYXQuXG4gICAqL1xuICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChuZXdTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLCBuZXdTdGF0ZSk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVyLmlzTW91bnRlZCh0aGlzKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsUHJvcHMgU3Vic2V0IG9mIHRoZSBuZXh0IHByb3BzLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHByb3BzIGFyZSB1cGRhdGVkLlxuICAgKiBAZmluYWxcbiAgICogQHB1YmxpY1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgc2V0UHJvcHM6IGZ1bmN0aW9uIChwYXJ0aWFsUHJvcHMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5TZXRQcm9wcygpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFByb3BzKHRoaXMsIHBhcnRpYWxQcm9wcyk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYWxsIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1Byb3BzIFN1YnNldCBvZiB0aGUgbmV4dCBwcm9wcy5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBwcm9wcyBhcmUgdXBkYXRlZC5cbiAgICogQGZpbmFsXG4gICAqIEBwdWJsaWNcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHJlcGxhY2VQcm9wczogZnVuY3Rpb24gKG5ld1Byb3BzLCBjYWxsYmFjaykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuU2V0UHJvcHMoKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlUHJvcHModGhpcywgbmV3UHJvcHMpO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHt9O1xuYXNzaWduKFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q2xhc3NNaXhpbik7XG5cbi8qKlxuICogTW9kdWxlIGZvciBjcmVhdGluZyBjb21wb3NpdGUgY29tcG9uZW50cy5cbiAqXG4gKiBAY2xhc3MgUmVhY3RDbGFzc1xuICovXG52YXIgUmVhY3RDbGFzcyA9IHtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21wb25lbnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVuZGVyYCkuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVuY3Rpb24uXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGNyZWF0ZUNsYXNzOiBmdW5jdGlvbiAoc3BlYykge1xuICAgIHZhciBDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyBvdmVycmlkZGVuIGJ5IG1vY2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZFxuICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLlxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9yeSBvciAnICsgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeScpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBXaXJlIHVwIGF1dG8tYmluZGluZ1xuICAgICAgaWYgKHRoaXMuX19yZWFjdEF1dG9CaW5kTWFwKSB7XG4gICAgICAgIGJpbmRBdXRvQmluZE1ldGhvZHModGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuXG4gICAgICAvLyBSZWFjdENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwgdGhleSB1c2UgdGhlXG4gICAgICAvLyBnZXRJbml0aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxNb3VudCBtZXRob2RzIGZvciBpbml0aWFsaXphdGlvbi5cblxuICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cbiAgICAgICAgaWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICd1bmRlZmluZWQnICYmIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvbikge1xuICAgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG4gICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgICBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCcsIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0ZTtcbiAgICB9O1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG5cbiAgICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwgQ29uc3RydWN0b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBhZnRlciBhbGwgbWl4aW5zIGhhdmUgYmVlbiBtZXJnZWQuXG4gICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgQ29uc3RydWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1lcyBpcyBvayxcbiAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBpdCdzIG5vdCwgdGhlbiBpdCdzIGxpa2VseSBhXG4gICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuICAgICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3RydWN0b3IgcmVzcGVjdGl2ZWx5LlxuICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSwgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7XG4gICAgICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfSxcblxuICBpbmplY3Rpb246IHtcbiAgICBpbmplY3RNaXhpbjogZnVuY3Rpb24gKG1peGluKSB7XG4gICAgICBpbmplY3RlZE1peGlucy5wdXNoKG1peGluKTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENsYXNzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRU5zWVhOekxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFTnNZWE56WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5RbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpKeWs3WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6SnlrN1hHNTJZWElnVW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJsYlhCMGVVOWlhbVZqZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1VDJKcVpXTjBKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNTJZWElnYTJWNVRXbHljbTl5SUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmEyVjVUV2x5Y205eUp5azdYRzUyWVhJZ2EyVjVUMllnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5clpYbFBaaWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUJOU1ZoSlRsTmZTMFZaSUQwZ2EyVjVUMllvZXlCdGFYaHBibk02SUc1MWJHd2dmU2s3WEc1Y2JpOHFLbHh1SUNvZ1VHOXNhV05wWlhNZ2RHaGhkQ0JrWlhOamNtbGlaU0J0WlhSb2IyUnpJR2x1SUdCU1pXRmpkRU5zWVhOelNXNTBaWEptWVdObFlDNWNiaUFxTDF4dWRtRnlJRk53WldOUWIyeHBZM2tnUFNCclpYbE5hWEp5YjNJb2UxeHVJQ0F2S2lwY2JpQWdJQ29nVkdobGMyVWdiV1YwYUc5a2N5QnRZWGtnWW1VZ1pHVm1hVzVsWkNCdmJteDVJRzl1WTJVZ1lua2dkR2hsSUdOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0Z2IzSWdiV2w0YVc0dVhHNGdJQ0FxTDF4dUlDQkVSVVpKVGtWZlQwNURSVG9nYm5Wc2JDeGNiaUFnTHlvcVhHNGdJQ0FxSUZSb1pYTmxJRzFsZEdodlpITWdiV0Y1SUdKbElHUmxabWx1WldRZ1lua2dZbTkwYUNCMGFHVWdZMnhoYzNNZ2MzQmxZMmxtYVdOaGRHbHZiaUJoYm1RZ2JXbDRhVzV6TGx4dUlDQWdLaUJUZFdKelpYRjFaVzUwSUdSbFptbHVhWFJwYjI1eklIZHBiR3dnWW1VZ1kyaGhhVzVsWkM0Z1ZHaGxjMlVnYldWMGFHOWtjeUJ0ZFhOMElISmxkSFZ5YmlCMmIybGtMbHh1SUNBZ0tpOWNiaUFnUkVWR1NVNUZYMDFCVGxrNklHNTFiR3dzWEc0Z0lDOHFLbHh1SUNBZ0tpQlVhR1Z6WlNCdFpYUm9iMlJ6SUdGeVpTQnZkbVZ5Y21sa2FXNW5JSFJvWlNCaVlYTmxJR05zWVhOekxseHVJQ0FnS2k5Y2JpQWdUMVpGVWxKSlJFVmZRa0ZUUlRvZ2JuVnNiQ3hjYmlBZ0x5b3FYRzRnSUNBcUlGUm9aWE5sSUcxbGRHaHZaSE1nWVhKbElITnBiV2xzWVhJZ2RHOGdSRVZHU1U1RlgwMUJUbGtzSUdWNFkyVndkQ0IzWlNCaGMzTjFiV1VnZEdobGVTQnlaWFIxY201Y2JpQWdJQ29nYjJKcVpXTjBjeTRnVjJVZ2RISjVJSFJ2SUcxbGNtZGxJSFJvWlNCclpYbHpJRzltSUhSb1pTQnlaWFIxY200Z2RtRnNkV1Z6SUc5bUlHRnNiQ0IwYUdVZ2JXbDRaV1FnYVc1Y2JpQWdJQ29nWm5WdVkzUnBiMjV6TGlCSlppQjBhR1Z5WlNCcGN5QmhJR3RsZVNCamIyNW1iR2xqZENCM1pTQjBhSEp2ZHk1Y2JpQWdJQ292WEc0Z0lFUkZSa2xPUlY5TlFVNVpYMDFGVWtkRlJEb2diblZzYkZ4dWZTazdYRzVjYm5aaGNpQnBibXBsWTNSbFpFMXBlR2x1Y3lBOUlGdGRPMXh1WEc1MllYSWdkMkZ5Ym1Wa1UyVjBVSEp2Y0hNZ1BTQm1ZV3h6WlR0Y2JtWjFibU4wYVc5dUlIZGhjbTVUWlhSUWNtOXdjeWdwSUh0Y2JpQWdhV1lnS0NGM1lYSnVaV1JUWlhSUWNtOXdjeWtnZTF4dUlDQWdJSGRoY201bFpGTmxkRkJ5YjNCeklEMGdkSEoxWlR0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjNObGRGQnliM0J6S0M0dUxpa2dZVzVrSUhKbGNHeGhZMlZRY205d2N5Z3VMaTRwSUdGeVpTQmtaWEJ5WldOaGRHVmtMaUFuSUNzZ0owbHVjM1JsWVdRc0lHTmhiR3dnY21WdVpHVnlJR0ZuWVdsdUlHRjBJSFJvWlNCMGIzQWdiR1YyWld3dUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCRGIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MGN5QmhjbVVnYUdsbmFHVnlMV3hsZG1Wc0lHTnZiWEJ2Ym1WdWRITWdkR2hoZENCamIyMXdiM05sSUc5MGFHVnlJR052YlhCdmMybDBaVnh1SUNvZ2IzSWdibUYwYVhabElHTnZiWEJ2Ym1WdWRITXVYRzRnS2x4dUlDb2dWRzhnWTNKbFlYUmxJR0VnYm1WM0lIUjVjR1VnYjJZZ1lGSmxZV04wUTJ4aGMzTmdMQ0J3WVhOeklHRWdjM0JsWTJsbWFXTmhkR2x2YmlCdlpseHVJQ29nZVc5MWNpQnVaWGNnWTJ4aGMzTWdkRzhnWUZKbFlXTjBMbU55WldGMFpVTnNZWE56WUM0Z1ZHaGxJRzl1YkhrZ2NtVnhkV2x5WlcxbGJuUWdiMllnZVc5MWNpQmpiR0Z6YzF4dUlDb2djM0JsWTJsbWFXTmhkR2x2YmlCcGN5QjBhR0YwSUhsdmRTQnBiWEJzWlcxbGJuUWdZU0JnY21WdVpHVnlZQ0J0WlhSb2IyUXVYRzRnS2x4dUlDb2dJQ0IyWVhJZ1RYbERiMjF3YjI1bGJuUWdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0tpQWdJQ0FnY21WdVpHVnlPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQXFJQ0FnSUNBZ0lISmxkSFZ5YmlBOFpHbDJQa2hsYkd4dklGZHZjbXhrUEM5a2FYWStPMXh1SUNvZ0lDQWdJSDFjYmlBcUlDQWdmU2s3WEc0Z0tseHVJQ29nVkdobElHTnNZWE56SUhOd1pXTnBabWxqWVhScGIyNGdjM1Z3Y0c5eWRITWdZU0J6Y0dWamFXWnBZeUJ3Y205MGIyTnZiQ0J2WmlCdFpYUm9iMlJ6SUhSb1lYUWdhR0YyWlZ4dUlDb2djM0JsWTJsaGJDQnRaV0Z1YVc1bklDaGxMbWN1SUdCeVpXNWtaWEpnS1M0Z1UyVmxJR0JTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sWUNCbWIzSmNiaUFxSUcxdmNtVWdkR2hsSUdOdmJYQnlaV2hsYm5OcGRtVWdjSEp2ZEc5amIyd3VJRUZ1ZVNCdmRHaGxjaUJ3Y205d1pYSjBhV1Z6SUdGdVpDQnRaWFJvYjJSeklHbHVJSFJvWlZ4dUlDb2dZMnhoYzNNZ2MzQmxZMmxtYVdOaGRHbHZiaUIzYVd4c0lHSmxJR0YyWVdsc1lXSnNaU0J2YmlCMGFHVWdjSEp2ZEc5MGVYQmxMbHh1SUNwY2JpQXFJRUJwYm5SbGNtWmhZMlVnVW1WaFkzUkRiR0Z6YzBsdWRHVnlabUZqWlZ4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JuWmhjaUJTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sSUQwZ2UxeHVYRzRnSUM4cUtseHVJQ0FnS2lCQmJpQmhjbkpoZVNCdlppQk5hWGhwYmlCdlltcGxZM1J6SUhSdklHbHVZMngxWkdVZ2QyaGxiaUJrWldacGJtbHVaeUI1YjNWeUlHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhSNWNHVWdlMkZ5Y21GNWZWeHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHMXBlR2x1Y3pvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRVzRnYjJKcVpXTjBJR052Ym5SaGFXNXBibWNnY0hKdmNHVnlkR2xsY3lCaGJtUWdiV1YwYUc5a2N5QjBhR0YwSUhOb2IzVnNaQ0JpWlNCa1pXWnBibVZrSUc5dVhHNGdJQ0FxSUhSb1pTQmpiMjF3YjI1bGJuUW5jeUJqYjI1emRISjFZM1J2Y2lCcGJuTjBaV0ZrSUc5bUlHbDBjeUJ3Y205MGIzUjVjR1VnS0hOMFlYUnBZeUJ0WlhSb2IyUnpLUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIUjVjR1VnZTI5aWFtVmpkSDFjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTnpPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpXWnBibWwwYVc5dUlHOW1JSEJ5YjNBZ2RIbHdaWE1nWm05eUlIUm9hWE1nWTI5dGNHOXVaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFkSGx3WlNCN2IySnFaV04wZlZ4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUhCeWIzQlVlWEJsY3pvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1ZtYVc1cGRHbHZiaUJ2WmlCamIyNTBaWGgwSUhSNWNHVnpJR1p2Y2lCMGFHbHpJR052YlhCdmJtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIUjVjR1VnZTI5aWFtVmpkSDFjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0JqYjI1MFpYaDBWSGx3WlhNNklGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGtzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVJsWm1sdWFYUnBiMjRnYjJZZ1kyOXVkR1Y0ZENCMGVYQmxjeUIwYUdseklHTnZiWEJ2Ym1WdWRDQnpaWFJ6SUdadmNpQnBkSE1nWTJocGJHUnlaVzR1WEc0Z0lDQXFYRzRnSUNBcUlFQjBlWEJsSUh0dlltcGxZM1I5WEc0Z0lDQXFJRUJ2Y0hScGIyNWhiRnh1SUNBZ0tpOWNiaUFnWTJocGJHUkRiMjUwWlhoMFZIbHdaWE02SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5OGdQVDA5UFNCRVpXWnBibWwwYVc5dUlHMWxkR2h2WkhNZ1BUMDlQVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWa0lIZG9aVzRnZEdobElHTnZiWEJ2Ym1WdWRDQnBjeUJ0YjNWdWRHVmtMaUJXWVd4MVpYTWdhVzRnZEdobElHMWhjSEJwYm1jZ2QybHNiQ0JpWlNCelpYUWdiMjVjYmlBZ0lDb2dZSFJvYVhNdWNISnZjSE5nSUdsbUlIUm9ZWFFnY0hKdmNDQnBjeUJ1YjNRZ2MzQmxZMmxtYVdWa0lDaHBMbVV1SUhWemFXNW5JR0Z1SUdCcGJtQWdZMmhsWTJzcExseHVJQ0FnS2x4dUlDQWdLaUJVYUdseklHMWxkR2h2WkNCcGN5QnBiblp2YTJWa0lHSmxabTl5WlNCZ1oyVjBTVzVwZEdsaGJGTjBZWFJsWUNCaGJtUWdkR2hsY21WbWIzSmxJR05oYm01dmRDQnlaV3g1WEc0Z0lDQXFJRzl1SUdCMGFHbHpMbk4wWVhSbFlDQnZjaUIxYzJVZ1lIUm9hWE11YzJWMFUzUmhkR1ZnTGx4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHZZbXBsWTNSOVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ1oyVjBSR1ZtWVhWc2RGQnliM0J6T2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpYMDFGVWtkRlJDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNTJiMnRsWkNCdmJtTmxJR0psWm05eVpTQjBhR1VnWTI5dGNHOXVaVzUwSUdseklHMXZkVzUwWldRdUlGUm9aU0J5WlhSMWNtNGdkbUZzZFdVZ2QybHNiQ0JpWlNCMWMyVmtYRzRnSUNBcUlHRnpJSFJvWlNCcGJtbDBhV0ZzSUhaaGJIVmxJRzltSUdCMGFHbHpMbk4wWVhSbFlDNWNiaUFnSUNwY2JpQWdJQ29nSUNCblpYUkpibWwwYVdGc1UzUmhkR1U2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnS2lBZ0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNvZ0lDQWdJQ0FnYVhOUGJqb2dabUZzYzJVc1hHNGdJQ0FxSUNBZ0lDQWdJR1p2YjBKaGVqb2dibVYzSUVKaGVrWnZieWdwWEc0Z0lDQXFJQ0FnSUNCOVhHNGdJQ0FxSUNBZ2ZWeHVJQ0FnS2x4dUlDQWdLaUJBY21WMGRYSnVJSHR2WW1wbFkzUjlYRzRnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnS2k5Y2JpQWdaMlYwU1c1cGRHbGhiRk4wWVhSbE9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaWDAxRlVrZEZSQ3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEpsZEhWeWJpQjdiMkpxWldOMGZWeHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHZGxkRU5vYVd4a1EyOXVkR1Y0ZERvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XVjlOUlZKSFJVUXNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVnpaWE1nY0hKdmNITWdabkp2YlNCZ2RHaHBjeTV3Y205d2MyQWdZVzVrSUhOMFlYUmxJR1p5YjIwZ1lIUm9hWE11YzNSaGRHVmdJSFJ2SUhKbGJtUmxjaUIwYUdWY2JpQWdJQ29nYzNSeWRXTjBkWEpsSUc5bUlIUm9aU0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFNXZJR2QxWVhKaGJuUmxaWE1nWVhKbElHMWhaR1VnWVdKdmRYUWdkMmhsYmlCdmNpQm9iM2NnYjJaMFpXNGdkR2hwY3lCdFpYUm9iMlFnYVhNZ2FXNTJiMnRsWkN3Z2MyOWNiaUFnSUNvZ2FYUWdiWFZ6ZENCdWIzUWdhR0YyWlNCemFXUmxJR1ZtWm1WamRITXVYRzRnSUNBcVhHNGdJQ0FxSUNBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNvZ0lDQWdJSFpoY2lCdVlXMWxJRDBnZEdocGN5NXdjbTl3Y3k1dVlXMWxPMXh1SUNBZ0tpQWdJQ0FnY21WMGRYSnVJRHhrYVhZK1NHVnNiRzhzSUh0dVlXMWxmU0U4TDJScGRqNDdYRzRnSUNBcUlDQWdmVnh1SUNBZ0tseHVJQ0FnS2lCQWNtVjBkWEp1SUh0U1pXRmpkRU52YlhCdmJtVnVkSDFjYmlBZ0lDb2dRRzV2YzJsa1pXVm1abVZqZEhOY2JpQWdJQ29nUUhKbGNYVnBjbVZrWEc0Z0lDQXFMMXh1SUNCeVpXNWtaWEk2SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDA5T1EwVXNYRzVjYmlBZ0x5OGdQVDA5UFNCRVpXeGxaMkYwWlNCdFpYUm9iMlJ6SUQwOVBUMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNTJiMnRsWkNCM2FHVnVJSFJvWlNCamIyMXdiMjVsYm5RZ2FYTWdhVzVwZEdsaGJHeDVJR055WldGMFpXUWdZVzVrSUdGaWIzVjBJSFJ2SUdKbElHMXZkVzUwWldRdVhHNGdJQ0FxSUZSb2FYTWdiV0Y1SUdoaGRtVWdjMmxrWlNCbFptWmxZM1J6TENCaWRYUWdZVzU1SUdWNGRHVnlibUZzSUhOMVluTmpjbWx3ZEdsdmJuTWdiM0lnWkdGMFlTQmpjbVZoZEdWa1hHNGdJQ0FxSUdKNUlIUm9hWE1nYldWMGFHOWtJRzExYzNRZ1ltVWdZMnhsWVc1bFpDQjFjQ0JwYmlCZ1kyOXRjRzl1Wlc1MFYybHNiRlZ1Ylc5MWJuUmdMbHh1SUNBZ0tseHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHTnZiWEJ2Ym1WdWRGZHBiR3hOYjNWdWREb2dVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1N4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0IzYUdWdUlIUm9aU0JqYjIxd2IyNWxiblFnYUdGeklHSmxaVzRnYlc5MWJuUmxaQ0JoYm1RZ2FHRnpJR0VnUkU5TklISmxjSEpsYzJWdWRHRjBhVzl1TGx4dUlDQWdLaUJJYjNkbGRtVnlMQ0IwYUdWeVpTQnBjeUJ1YnlCbmRXRnlZVzUwWldVZ2RHaGhkQ0IwYUdVZ1JFOU5JRzV2WkdVZ2FYTWdhVzRnZEdobElHUnZZM1Z0Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJWYzJVZ2RHaHBjeUJoY3lCaGJpQnZjSEJ2Y25SMWJtbDBlU0IwYnlCdmNHVnlZWFJsSUc5dUlIUm9aU0JFVDAwZ2QyaGxiaUIwYUdVZ1kyOXRjRzl1Wlc1MElHaGhjMXh1SUNBZ0tpQmlaV1Z1SUcxdmRXNTBaV1FnS0dsdWFYUnBZV3hwZW1Wa0lHRnVaQ0J5Wlc1a1pYSmxaQ2tnWm05eUlIUm9aU0JtYVhKemRDQjBhVzFsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJSEp2YjNST2IyUmxJRVJQVFNCbGJHVnRaVzUwSUhKbGNISmxjMlZ1ZEdsdVp5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwT2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWa0lHSmxabTl5WlNCMGFHVWdZMjl0Y0c5dVpXNTBJSEpsWTJWcGRtVnpJRzVsZHlCd2NtOXdjeTVjYmlBZ0lDcGNiaUFnSUNvZ1ZYTmxJSFJvYVhNZ1lYTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdjbVZoWTNRZ2RHOGdZU0J3Y205d0lIUnlZVzV6YVhScGIyNGdZbmtnZFhCa1lYUnBibWNnZEdobFhHNGdJQ0FxSUhOMFlYUmxJSFZ6YVc1bklHQjBhR2x6TG5ObGRGTjBZWFJsWUM0Z1EzVnljbVZ1ZENCd2NtOXdjeUJoY21VZ1lXTmpaWE56WldRZ2RtbGhJR0IwYUdsekxuQnliM0J6WUM1Y2JpQWdJQ3BjYmlBZ0lDb2dJQ0JqYjIxd2IyNWxiblJYYVd4c1VtVmpaV2wyWlZCeWIzQnpPaUJtZFc1amRHbHZiaWh1WlhoMFVISnZjSE1zSUc1bGVIUkRiMjUwWlhoMEtTQjdYRzRnSUNBcUlDQWdJQ0IwYUdsekxuTmxkRk4wWVhSbEtIdGNiaUFnSUNvZ0lDQWdJQ0FnYkdsclpYTkpibU55WldGemFXNW5PaUJ1WlhoMFVISnZjSE11YkdsclpVTnZkVzUwSUQ0Z2RHaHBjeTV3Y205d2N5NXNhV3RsUTI5MWJuUmNiaUFnSUNvZ0lDQWdJSDBwTzF4dUlDQWdLaUFnSUgxY2JpQWdJQ3BjYmlBZ0lDb2dUazlVUlRvZ1ZHaGxjbVVnYVhNZ2JtOGdaWEYxYVhaaGJHVnVkQ0JnWTI5dGNHOXVaVzUwVjJsc2JGSmxZMlZwZG1WVGRHRjBaV0F1SUVGdUlHbHVZMjl0YVc1bklIQnliM0JjYmlBZ0lDb2dkSEpoYm5OcGRHbHZiaUJ0WVhrZ1kyRjFjMlVnWVNCemRHRjBaU0JqYUdGdVoyVXNJR0oxZENCMGFHVWdiM0J3YjNOcGRHVWdhWE1nYm05MElIUnlkV1V1SUVsbUlIbHZkVnh1SUNBZ0tpQnVaV1ZrSUdsMExDQjViM1VnWVhKbElIQnliMkpoWW14NUlHeHZiMnRwYm1jZ1ptOXlJR0JqYjIxd2IyNWxiblJYYVd4c1ZYQmtZWFJsWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHNWxlSFJRY205d2MxeHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHTnZiWEJ2Ym1WdWRGZHBiR3hTWldObGFYWmxVSEp2Y0hNNklGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGtzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1ZG05clpXUWdkMmhwYkdVZ1pHVmphV1JwYm1jZ2FXWWdkR2hsSUdOdmJYQnZibVZ1ZENCemFHOTFiR1FnWW1VZ2RYQmtZWFJsWkNCaGN5QmhJSEpsYzNWc2RDQnZabHh1SUNBZ0tpQnlaV05sYVhacGJtY2dibVYzSUhCeWIzQnpMQ0J6ZEdGMFpTQmhibVF2YjNJZ1kyOXVkR1Y0ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dWWE5sSUhSb2FYTWdZWE1nWVc0Z2IzQndiM0owZFc1cGRIa2dkRzhnWUhKbGRIVnliaUJtWVd4elpXQWdkMmhsYmlCNWIzVW5jbVVnWTJWeWRHRnBiaUIwYUdGMElIUm9aVnh1SUNBZ0tpQjBjbUZ1YzJsMGFXOXVJSFJ2SUhSb1pTQnVaWGNnY0hKdmNITXZjM1JoZEdVdlkyOXVkR1Y0ZENCM2FXeHNJRzV2ZENCeVpYRjFhWEpsSUdFZ1kyOXRjRzl1Wlc1MFhHNGdJQ0FxSUhWd1pHRjBaUzVjYmlBZ0lDcGNiaUFnSUNvZ0lDQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1U2SUdaMWJtTjBhVzl1S0c1bGVIUlFjbTl3Y3l3Z2JtVjRkRk4wWVhSbExDQnVaWGgwUTI5dWRHVjRkQ2tnZTF4dUlDQWdLaUFnSUNBZ2NtVjBkWEp1SUNGbGNYVmhiQ2h1WlhoMFVISnZjSE1zSUhSb2FYTXVjSEp2Y0hNcElIeDhYRzRnSUNBcUlDQWdJQ0FnSUNGbGNYVmhiQ2h1WlhoMFUzUmhkR1VzSUhSb2FYTXVjM1JoZEdVcElIeDhYRzRnSUNBcUlDQWdJQ0FnSUNGbGNYVmhiQ2h1WlhoMFEyOXVkR1Y0ZEN3Z2RHaHBjeTVqYjI1MFpYaDBLVHRjYmlBZ0lDb2dJQ0I5WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCdVpYaDBVSEp2Y0hOY2JpQWdJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0J1WlhoMFUzUmhkR1ZjYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQnVaWGgwUTI5dWRHVjRkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlIUm9aU0JqYjIxd2IyNWxiblFnYzJodmRXeGtJSFZ3WkdGMFpTNWNiaUFnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FxTDF4dUlDQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1U2SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDA5T1EwVXNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVkbTlyWldRZ2QyaGxiaUIwYUdVZ1kyOXRjRzl1Wlc1MElHbHpJR0ZpYjNWMElIUnZJSFZ3WkdGMFpTQmtkV1VnZEc4Z1lTQjBjbUZ1YzJsMGFXOXVJR1p5YjIxY2JpQWdJQ29nWUhSb2FYTXVjSEp2Y0hOZ0xDQmdkR2hwY3k1emRHRjBaV0FnWVc1a0lHQjBhR2x6TG1OdmJuUmxlSFJnSUhSdklHQnVaWGgwVUhKdmNITmdMQ0JnYm1WNGRGTjBZWFJsWUZ4dUlDQWdLaUJoYm1RZ1lHNWxlSFJEYjI1MFpYaDBZQzVjYmlBZ0lDcGNiaUFnSUNvZ1ZYTmxJSFJvYVhNZ1lYTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdjR1Z5Wm05eWJTQndjbVZ3WVhKaGRHbHZiaUJpWldadmNtVWdZVzRnZFhCa1lYUmxJRzlqWTNWeWN5NWNiaUFnSUNwY2JpQWdJQ29nVGs5VVJUb2dXVzkxSUNvcVkyRnVibTkwS2lvZ2RYTmxJR0IwYUdsekxuTmxkRk4wWVhSbEtDbGdJR2x1SUhSb2FYTWdiV1YwYUc5a0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdibVY0ZEZCeWIzQnpYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRk4wWVhSbFhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRFTnZiblJsZUhSY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVmU0IwY21GdWMyRmpkR2x2Ymx4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJYQnZibVZ1ZEZkcGJHeFZjR1JoZEdVNklGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGtzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1ZG05clpXUWdkMmhsYmlCMGFHVWdZMjl0Y0c5dVpXNTBKM01nUkU5TklISmxjSEpsYzJWdWRHRjBhVzl1SUdoaGN5QmlaV1Z1SUhWd1pHRjBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlGVnpaU0IwYUdseklHRnpJR0Z1SUc5d2NHOXlkSFZ1YVhSNUlIUnZJRzl3WlhKaGRHVWdiMjRnZEdobElFUlBUU0IzYUdWdUlIUm9aU0JqYjIxd2IyNWxiblFnYUdGelhHNGdJQ0FxSUdKbFpXNGdkWEJrWVhSbFpDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJ5WlhaUWNtOXdjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlIQnlaWFpUZEdGMFpWeHVJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUhCeVpYWkRiMjUwWlhoMFhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2NtOXZkRTV2WkdVZ1JFOU5JR1ZzWlcxbGJuUWdjbVZ3Y21WelpXNTBhVzVuSUhSb1pTQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnS2k5Y2JpQWdZMjl0Y0c5dVpXNTBSR2xrVlhCa1lYUmxPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZrSUhkb1pXNGdkR2hsSUdOdmJYQnZibVZ1ZENCcGN5QmhZbTkxZENCMGJ5QmlaU0J5WlcxdmRtVmtJR1p5YjIwZ2FYUnpJSEJoY21WdWRDQmhibVFnYUdGMlpWeHVJQ0FnS2lCcGRITWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVJR1JsYzNSeWIzbGxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1ZYTmxJSFJvYVhNZ1lYTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdaR1ZoYkd4dlkyRjBaU0JoYm5rZ1pYaDBaWEp1WVd3Z2NtVnpiM1Z5WTJWekxseHVJQ0FnS2x4dUlDQWdLaUJPVDFSRk9pQlVhR1Z5WlNCcGN5QnVieUJnWTI5dGNHOXVaVzUwUkdsa1ZXNXRiM1Z1ZEdBZ2MybHVZMlVnZVc5MWNpQmpiMjF3YjI1bGJuUWdkMmxzYkNCb1lYWmxJR0psWlc1Y2JpQWdJQ29nWkdWemRISnZlV1ZrSUdKNUlIUm9ZWFFnY0c5cGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ1kyOXRjRzl1Wlc1MFYybHNiRlZ1Ylc5MWJuUTZJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxrc1hHNWNiaUFnTHk4Z1BUMDlQU0JCWkhaaGJtTmxaQ0J0WlhSb2IyUnpJRDA5UFQxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVlhCa1lYUmxjeUIwYUdVZ1kyOXRjRzl1Wlc1MEozTWdZM1Z5Y21WdWRHeDVJRzF2ZFc1MFpXUWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQ2VTQmtaV1poZFd4MExDQjBhR2x6SUdsdGNHeGxiV1Z1ZEhNZ1VtVmhZM1FuY3lCeVpXNWtaWEpwYm1jZ1lXNWtJSEpsWTI5dVkybHNhV0YwYVc5dUlHRnNaMjl5YVhSb2JTNWNiaUFnSUNvZ1UyOXdhR2x6ZEdsallYUmxaQ0JqYkdsbGJuUnpJRzFoZVNCM2FYTm9JSFJ2SUc5MlpYSnlhV1JsSUhSb2FYTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFJRUJ2ZG1WeWNtbGtZV0pzWlZ4dUlDQWdLaTljYmlBZ2RYQmtZWFJsUTI5dGNHOXVaVzUwT2lCVGNHVmpVRzlzYVdONUxrOVdSVkpTU1VSRlgwSkJVMFZjYmx4dWZUdGNibHh1THlvcVhHNGdLaUJOWVhCd2FXNW5JR1p5YjIwZ1kyeGhjM01nYzNCbFkybG1hV05oZEdsdmJpQnJaWGx6SUhSdklITndaV05wWVd3Z2NISnZZMlZ6YzJsdVp5Qm1kVzVqZEdsdmJuTXVYRzRnS2x4dUlDb2dRV3gwYUc5MVoyZ2dkR2hsYzJVZ1lYSmxJR1JsWTJ4aGNtVmtJR3hwYTJVZ2FXNXpkR0Z1WTJVZ2NISnZjR1Z5ZEdsbGN5QnBiaUIwYUdVZ2MzQmxZMmxtYVdOaGRHbHZibHh1SUNvZ2QyaGxiaUJrWldacGJtbHVaeUJqYkdGemMyVnpJSFZ6YVc1bklHQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemMyQXNJSFJvWlhrZ1lYSmxJR0ZqZEhWaGJHeDVJSE4wWVhScFkxeHVJQ29nWVc1a0lHRnlaU0JoWTJObGMzTnBZbXhsSUc5dUlIUm9aU0JqYjI1emRISjFZM1J2Y2lCcGJuTjBaV0ZrSUc5bUlIUm9aU0J3Y205MGIzUjVjR1V1SUVSbGMzQnBkR1ZjYmlBcUlHSmxhVzVuSUhOMFlYUnBZeXdnZEdobGVTQnRkWE4wSUdKbElHUmxabWx1WldRZ2IzVjBjMmxrWlNCdlppQjBhR1VnWENKemRHRjBhV056WENJZ2EyVjVJSFZ1WkdWeVhHNGdLaUIzYUdsamFDQmhiR3dnYjNSb1pYSWdjM1JoZEdsaklHMWxkR2h2WkhNZ1lYSmxJR1JsWm1sdVpXUXVYRzRnS2k5Y2JuWmhjaUJTUlZORlVsWkZSRjlUVUVWRFgwdEZXVk1nUFNCN1hHNGdJR1JwYzNCc1lYbE9ZVzFsT2lCbWRXNWpkR2x2YmlBb1EyOXVjM1J5ZFdOMGIzSXNJR1JwYzNCc1lYbE9ZVzFsS1NCN1hHNGdJQ0FnUTI5dWMzUnlkV04wYjNJdVpHbHpjR3hoZVU1aGJXVWdQU0JrYVhOd2JHRjVUbUZ0WlR0Y2JpQWdmU3hjYmlBZ2JXbDRhVzV6T2lCbWRXNWpkR2x2YmlBb1EyOXVjM1J5ZFdOMGIzSXNJRzFwZUdsdWN5a2dlMXh1SUNBZ0lHbG1JQ2h0YVhocGJuTXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYldsNGFXNXpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHMXBlRk53WldOSmJuUnZRMjl0Y0c5dVpXNTBLRU52Ym5OMGNuVmpkRzl5TENCdGFYaHBibk5iYVYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1kyaHBiR1JEYjI1MFpYaDBWSGx3WlhNNklHWjFibU4wYVc5dUlDaERiMjV6ZEhKMVkzUnZjaXdnWTJocGJHUkRiMjUwWlhoMFZIbHdaWE1wSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkbUZzYVdSaGRHVlVlWEJsUkdWbUtFTnZibk4wY25WamRHOXlMQ0JqYUdsc1pFTnZiblJsZUhSVWVYQmxjeXdnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dWN5NWphR2xzWkVOdmJuUmxlSFFwTzF4dUlDQWdJSDFjYmlBZ0lDQkRiMjV6ZEhKMVkzUnZjaTVqYUdsc1pFTnZiblJsZUhSVWVYQmxjeUE5SUdGemMybG5iaWg3ZlN3Z1EyOXVjM1J5ZFdOMGIzSXVZMmhwYkdSRGIyNTBaWGgwVkhsd1pYTXNJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpLVHRjYmlBZ2ZTeGNiaUFnWTI5dWRHVjRkRlI1Y0dWek9pQm1kVzVqZEdsdmJpQW9RMjl1YzNSeWRXTjBiM0lzSUdOdmJuUmxlSFJVZVhCbGN5a2dlMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMllXeHBaR0YwWlZSNWNHVkVaV1lvUTI5dWMzUnlkV04wYjNJc0lHTnZiblJsZUhSVWVYQmxjeXdnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dWN5NWpiMjUwWlhoMEtUdGNiaUFnSUNCOVhHNGdJQ0FnUTI5dWMzUnlkV04wYjNJdVkyOXVkR1Y0ZEZSNWNHVnpJRDBnWVhOemFXZHVLSHQ5TENCRGIyNXpkSEoxWTNSdmNpNWpiMjUwWlhoMFZIbHdaWE1zSUdOdmJuUmxlSFJVZVhCbGN5azdYRzRnSUgwc1hHNGdJQzhxS2x4dUlDQWdLaUJUY0dWamFXRnNJR05oYzJVZ1oyVjBSR1ZtWVhWc2RGQnliM0J6SUhkb2FXTm9JSE5vYjNWc1pDQnRiM1psSUdsdWRHOGdjM1JoZEdsamN5QmlkWFFnY21WeGRXbHlaWE5jYmlBZ0lDb2dZWFYwYjIxaGRHbGpJRzFsY21kcGJtY3VYRzRnSUNBcUwxeHVJQ0JuWlhSRVpXWmhkV3gwVUhKdmNITTZJR1oxYm1OMGFXOXVJQ2hEYjI1emRISjFZM1J2Y2l3Z1oyVjBSR1ZtWVhWc2RGQnliM0J6S1NCN1hHNGdJQ0FnYVdZZ0tFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5a2dlMXh1SUNBZ0lDQWdRMjl1YzNSeWRXTjBiM0l1WjJWMFJHVm1ZWFZzZEZCeWIzQnpJRDBnWTNKbFlYUmxUV1Z5WjJWa1VtVnpkV3gwUm5WdVkzUnBiMjRvUTI5dWMzUnlkV04wYjNJdVoyVjBSR1ZtWVhWc2RGQnliM0J6TENCblpYUkVaV1poZFd4MFVISnZjSE1wTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQkRiMjV6ZEhKMVkzUnZjaTVuWlhSRVpXWmhkV3gwVUhKdmNITWdQU0JuWlhSRVpXWmhkV3gwVUhKdmNITTdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQndjbTl3Vkhsd1pYTTZJR1oxYm1OMGFXOXVJQ2hEYjI1emRISjFZM1J2Y2l3Z2NISnZjRlI1Y0dWektTQjdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhaaGJHbGtZWFJsVkhsd1pVUmxaaWhEYjI1emRISjFZM1J2Y2l3Z2NISnZjRlI1Y0dWekxDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6TG5CeWIzQXBPMXh1SUNBZ0lIMWNiaUFnSUNCRGIyNXpkSEoxWTNSdmNpNXdjbTl3Vkhsd1pYTWdQU0JoYzNOcFoyNG9lMzBzSUVOdmJuTjBjblZqZEc5eUxuQnliM0JVZVhCbGN5d2djSEp2Y0ZSNWNHVnpLVHRjYmlBZ2ZTeGNiaUFnYzNSaGRHbGpjem9nWm5WdVkzUnBiMjRnS0VOdmJuTjBjblZqZEc5eUxDQnpkR0YwYVdOektTQjdYRzRnSUNBZ2JXbDRVM1JoZEdsalUzQmxZMGx1ZEc5RGIyMXdiMjVsYm5Rb1EyOXVjM1J5ZFdOMGIzSXNJSE4wWVhScFkzTXBPMXh1SUNCOUxGeHVJQ0JoZFhSdlltbHVaRG9nWm5WdVkzUnBiMjRnS0NrZ2UzMGdmVHRjYmx4dUx5OGdibTl2Y0Z4dVpuVnVZM1JwYjI0Z2RtRnNhV1JoZEdWVWVYQmxSR1ZtS0VOdmJuTjBjblZqZEc5eUxDQjBlWEJsUkdWbUxDQnNiMk5oZEdsdmJpa2dlMXh1SUNCbWIzSWdLSFpoY2lCd2NtOXdUbUZ0WlNCcGJpQjBlWEJsUkdWbUtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWRVpXWXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQXZMeUIxYzJVZ1lTQjNZWEp1YVc1bklHbHVjM1JsWVdRZ2IyWWdZVzRnYVc1MllYSnBZVzUwSUhOdklHTnZiWEJ2Ym1WdWRITmNiaUFnSUNBZ0lDOHZJR1J2YmlkMElITm9iM2NnZFhBZ2FXNGdjSEp2WkNCaWRYUWdibTkwSUdsdUlGOWZSRVZXWDE5Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIUjVjR1Z2WmlCMGVYQmxSR1ZtVzNCeWIzQk9ZVzFsWFNBOVBUMGdKMloxYm1OMGFXOXVKeXdnSnlWek9pQWxjeUIwZVhCbElHQWxjMkFnYVhNZ2FXNTJZV3hwWkRzZ2FYUWdiWFZ6ZENCaVpTQmhJR1oxYm1OMGFXOXVMQ0IxYzNWaGJHeDVJR1p5YjIwZ0p5QXJJQ2RTWldGamRDNVFjbTl3Vkhsd1pYTXVKeXdnUTI5dWMzUnlkV04wYjNJdVpHbHpjR3hoZVU1aGJXVWdmSHdnSjFKbFlXTjBRMnhoYzNNbkxDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGMxdHNiMk5oZEdsdmJsMHNJSEJ5YjNCT1lXMWxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2RtRnNhV1JoZEdWTlpYUm9iMlJQZG1WeWNtbGtaU2h3Y205MGJ5d2dibUZ0WlNrZ2UxeHVJQ0IyWVhJZ2MzQmxZMUJ2YkdsamVTQTlJRkpsWVdOMFEyeGhjM05KYm5SbGNtWmhZMlV1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ1B5QlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxXMjVoYldWZElEb2diblZzYkR0Y2JseHVJQ0F2THlCRWFYTmhiR3h2ZHlCdmRtVnljbWxrYVc1bklHOW1JR0poYzJVZ1kyeGhjM01nYldWMGFHOWtjeUIxYm14bGMzTWdaWGh3YkdsamFYUnNlU0JoYkd4dmQyVmtMbHh1SUNCcFppQW9VbVZoWTNSRGJHRnpjMDFwZUdsdUxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBLU0I3WEc0Z0lDQWdJU2h6Y0dWalVHOXNhV041SUQwOVBTQlRjR1ZqVUc5c2FXTjVMazlXUlZKU1NVUkZYMEpCVTBVcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBRMnhoYzNOSmJuUmxjbVpoWTJVNklGbHZkU0JoY21VZ1lYUjBaVzF3ZEdsdVp5QjBieUJ2ZG1WeWNtbGtaU0FuSUNzZ0oyQWxjMkFnWm5KdmJTQjViM1Z5SUdOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0dUlFVnVjM1Z5WlNCMGFHRjBJSGx2ZFhJZ2JXVjBhRzlrSUc1aGJXVnpJQ2NnS3lBblpHOGdibTkwSUc5MlpYSnNZWEFnZDJsMGFDQlNaV0ZqZENCdFpYUm9iMlJ6TGljc0lHNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dVhHNGdJQzh2SUVScGMyRnNiRzkzSUdSbFptbHVhVzVuSUcxbGRHaHZaSE1nYlc5eVpTQjBhR0Z1SUc5dVkyVWdkVzVzWlhOeklHVjRjR3hwWTJsMGJIa2dZV3hzYjNkbFpDNWNiaUFnYVdZZ0tIQnliM1J2TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTQjdYRzRnSUNBZ0lTaHpjR1ZqVUc5c2FXTjVJRDA5UFNCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpJSHg4SUhOd1pXTlFiMnhwWTNrZ1BUMDlJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxsZlRVVlNSMFZFS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sT2lCWmIzVWdZWEpsSUdGMGRHVnRjSFJwYm1jZ2RHOGdaR1ZtYVc1bElDY2dLeUFuWUNWellDQnZiaUI1YjNWeUlHTnZiWEJ2Ym1WdWRDQnRiM0psSUhSb1lXNGdiMjVqWlM0Z1ZHaHBjeUJqYjI1bWJHbGpkQ0J0WVhrZ1ltVWdaSFZsSUNjZ0t5QW5kRzhnWVNCdGFYaHBiaTRuTENCdVlXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQk5hWGhwYmlCb1pXeHdaWElnZDJocFkyZ2dhR0Z1Wkd4bGN5QndiMnhwWTNrZ2RtRnNhV1JoZEdsdmJpQmhibVFnY21WelpYSjJaV1JjYmlBcUlITndaV05wWm1sallYUnBiMjRnYTJWNWN5QjNhR1Z1SUdKMWFXeGthVzVuSUZKbFlXTjBJR05zWVhOemMyVnpMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnRhWGhUY0dWalNXNTBiME52YlhCdmJtVnVkQ2hEYjI1emRISjFZM1J2Y2l3Z2MzQmxZeWtnZTF4dUlDQnBaaUFvSVhOd1pXTXBJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmx4dUlDQWhLSFI1Y0dWdlppQnpjR1ZqSUNFOVBTQW5ablZ1WTNScGIyNG5LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOc1lYTnpPaUJaYjNWY1hDZHlaU0JoZEhSbGJYQjBhVzVuSUhSdklDY2dLeUFuZFhObElHRWdZMjl0Y0c5dVpXNTBJR05zWVhOeklHRnpJR0VnYldsNGFXNHVJRWx1YzNSbFlXUXNJR3AxYzNRZ2RYTmxJR0VnY21WbmRXeGhjaUJ2WW1wbFkzUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FoSVZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENoemNHVmpLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOc1lYTnpPaUJaYjNWY1hDZHlaU0JoZEhSbGJYQjBhVzVuSUhSdklDY2dLeUFuZFhObElHRWdZMjl0Y0c5dVpXNTBJR0Z6SUdFZ2JXbDRhVzR1SUVsdWMzUmxZV1FzSUdwMWMzUWdkWE5sSUdFZ2NtVm5kV3hoY2lCdlltcGxZM1F1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lIWmhjaUJ3Y205MGJ5QTlJRU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlR0Y2JseHVJQ0F2THlCQ2VTQm9ZVzVrYkdsdVp5QnRhWGhwYm5NZ1ltVm1iM0psSUdGdWVTQnZkR2hsY2lCd2NtOXdaWEowYVdWekxDQjNaU0JsYm5OMWNtVWdkR2hsSUhOaGJXVmNiaUFnTHk4Z1kyaGhhVzVwYm1jZ2IzSmtaWElnYVhNZ1lYQndiR2xsWkNCMGJ5QnRaWFJvYjJSeklIZHBkR2dnUkVWR1NVNUZYMDFCVGxrZ2NHOXNhV041TENCM2FHVjBhR1Z5WEc0Z0lDOHZJRzFwZUdsdWN5QmhjbVVnYkdsemRHVmtJR0psWm05eVpTQnZjaUJoWm5SbGNpQjBhR1Z6WlNCdFpYUm9iMlJ6SUdsdUlIUm9aU0J6Y0dWakxseHVJQ0JwWmlBb2MzQmxZeTVvWVhOUGQyNVFjbTl3WlhKMGVTaE5TVmhKVGxOZlMwVlpLU2tnZTF4dUlDQWdJRkpGVTBWU1ZrVkVYMU5RUlVOZlMwVlpVeTV0YVhocGJuTW9RMjl1YzNSeWRXTjBiM0lzSUhOd1pXTXViV2w0YVc1ektUdGNiaUFnZlZ4dVhHNGdJR1p2Y2lBb2RtRnlJRzVoYldVZ2FXNGdjM0JsWXlrZ2UxeHVJQ0FnSUdsbUlDZ2hjM0JsWXk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzVoYldVZ1BUMDlJRTFKV0VsT1UxOUxSVmtwSUh0Y2JpQWdJQ0FnSUM4dklGZGxJR2hoZG1VZ1lXeHlaV0ZrZVNCb1lXNWtiR1ZrSUcxcGVHbHVjeUJwYmlCaElITndaV05wWVd3Z1kyRnpaU0JoWW05MlpTNWNiaUFnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQndjbTl3WlhKMGVTQTlJSE53WldOYmJtRnRaVjA3WEc0Z0lDQWdkbUZzYVdSaGRHVk5aWFJvYjJSUGRtVnljbWxrWlNod2NtOTBieXdnYm1GdFpTazdYRzVjYmlBZ0lDQnBaaUFvVWtWVFJWSldSVVJmVTFCRlExOUxSVmxUTG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTmJibUZ0WlYwb1EyOXVjM1J5ZFdOMGIzSXNJSEJ5YjNCbGNuUjVLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdVMlYwZFhBZ2JXVjBhRzlrY3lCdmJpQndjbTkwYjNSNWNHVTZYRzRnSUNBZ0lDQXZMeUJVYUdVZ1ptOXNiRzkzYVc1bklHMWxiV0psY2lCdFpYUm9iMlJ6SUhOb2IzVnNaQ0J1YjNRZ1ltVWdZWFYwYjIxaGRHbGpZV3hzZVNCaWIzVnVaRHBjYmlBZ0lDQWdJQzh2SURFdUlFVjRjR1ZqZEdWa0lGSmxZV04wUTJ4aGMzTWdiV1YwYUc5a2N5QW9hVzRnZEdobElGd2lhVzUwWlhKbVlXTmxYQ0lwTGx4dUlDQWdJQ0FnTHk4Z01pNGdUM1psY25KcFpHUmxiaUJ0WlhSb2IyUnpJQ2gwYUdGMElIZGxjbVVnYldsNFpXUWdhVzRwTGx4dUlDQWdJQ0FnZG1GeUlHbHpVbVZoWTNSRGJHRnpjMDFsZEdodlpDQTlJRkpsWVdOMFEyeGhjM05KYm5SbGNtWmhZMlV1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrN1hHNGdJQ0FnSUNCMllYSWdhWE5CYkhKbFlXUjVSR1ZtYVc1bFpDQTlJSEJ5YjNSdkxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBPMXh1SUNBZ0lDQWdkbUZ5SUdselJuVnVZM1JwYjI0Z1BTQjBlWEJsYjJZZ2NISnZjR1Z5ZEhrZ1BUMDlJQ2RtZFc1amRHbHZiaWM3WEc0Z0lDQWdJQ0IyWVhJZ2MyaHZkV3hrUVhWMGIwSnBibVFnUFNCcGMwWjFibU4wYVc5dUlDWW1JQ0ZwYzFKbFlXTjBRMnhoYzNOTlpYUm9iMlFnSmlZZ0lXbHpRV3h5WldGa2VVUmxabWx1WldRZ0ppWWdjM0JsWXk1aGRYUnZZbWx1WkNBaFBUMGdabUZzYzJVN1hHNWNiaUFnSUNBZ0lHbG1JQ2h6YUc5MWJHUkJkWFJ2UW1sdVpDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYQnliM1J2TGw5ZmNtVmhZM1JCZFhSdlFtbHVaRTFoY0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEJ5YjNSdkxsOWZjbVZoWTNSQmRYUnZRbWx1WkUxaGNDQTlJSHQ5TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIQnliM1J2TGw5ZmNtVmhZM1JCZFhSdlFtbHVaRTFoY0Z0dVlXMWxYU0E5SUhCeWIzQmxjblI1TzF4dUlDQWdJQ0FnSUNCd2NtOTBiMXR1WVcxbFhTQTlJSEJ5YjNCbGNuUjVPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dselFXeHlaV0ZrZVVSbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnYzNCbFkxQnZiR2xqZVNBOUlGSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVmJibUZ0WlYwN1hHNWNiaUFnSUNBZ0lDQWdJQ0F2THlCVWFHVnpaU0JqWVhObGN5QnphRzkxYkdRZ1lXeHlaV0ZrZVNCaVpTQmpZWFZuYUhRZ1lua2dkbUZzYVdSaGRHVk5aWFJvYjJSUGRtVnljbWxrWlM1Y2JpQWdJQ0FnSUNBZ0lDQWhLR2x6VW1WaFkzUkRiR0Z6YzAxbGRHaHZaQ0FtSmlBb2MzQmxZMUJ2YkdsamVTQTlQVDBnVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dWOU5SVkpIUlVRZ2ZId2djM0JsWTFCdmJHbGplU0E5UFQwZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU2twSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFEyeGhjM002SUZWdVpYaHdaV04wWldRZ2MzQmxZeUJ3YjJ4cFkza2dKWE1nWm05eUlHdGxlU0FsY3lBbklDc2dKM2RvWlc0Z2JXbDRhVzVuSUdsdUlHTnZiWEJ2Ym1WdWRDQnpjR1ZqY3k0bkxDQnpjR1ZqVUc5c2FXTjVMQ0J1WVcxbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJHYjNJZ2JXVjBhRzlrY3lCM2FHbGphQ0JoY21VZ1pHVm1hVzVsWkNCdGIzSmxJSFJvWVc0Z2IyNWpaU3dnWTJGc2JDQjBhR1VnWlhocGMzUnBibWRjYmlBZ0lDQWdJQ0FnSUNBdkx5QnRaWFJvYjJSeklHSmxabTl5WlNCallXeHNhVzVuSUhSb1pTQnVaWGNnY0hKdmNHVnlkSGtzSUcxbGNtZHBibWNnYVdZZ1lYQndjbTl3Y21saGRHVXVYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tITndaV05RYjJ4cFkza2dQVDA5SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsbGZUVVZTUjBWRUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtOTBiMXR1WVcxbFhTQTlJR055WldGMFpVMWxjbWRsWkZKbGMzVnNkRVoxYm1OMGFXOXVLSEJ5YjNSdlcyNWhiV1ZkTENCd2NtOXdaWEowZVNrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h6Y0dWalVHOXNhV041SUQwOVBTQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205MGIxdHVZVzFsWFNBOUlHTnlaV0YwWlVOb1lXbHVaV1JHZFc1amRHbHZiaWh3Y205MGIxdHVZVzFsWFN3Z2NISnZjR1Z5ZEhrcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCd2NtOTBiMXR1WVcxbFhTQTlJSEJ5YjNCbGNuUjVPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJCWkdRZ2RtVnlZbTl6WlNCa2FYTndiR0Y1VG1GdFpTQjBieUIwYUdVZ1puVnVZM1JwYjI0c0lIZG9hV05vSUdobGJIQnpJSGRvWlc0Z2JHOXZhMmx1WjF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnWVhRZ2NISnZabWxzYVc1bklIUnZiMnh6TGx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ3Y205d1pYSjBlU0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUJ6Y0dWakxtUnBjM0JzWVhsT1lXMWxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEJ5YjNSdlcyNWhiV1ZkTG1ScGMzQnNZWGxPWVcxbElEMGdjM0JsWXk1a2FYTndiR0Y1VG1GdFpTQXJJQ2RmSnlBcklHNWhiV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlHMXBlRk4wWVhScFkxTndaV05KYm5SdlEyOXRjRzl1Wlc1MEtFTnZibk4wY25WamRHOXlMQ0J6ZEdGMGFXTnpLU0I3WEc0Z0lHbG1JQ2doYzNSaGRHbGpjeWtnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQm1iM0lnS0haaGNpQnVZVzFsSUdsdUlITjBZWFJwWTNNcElIdGNiaUFnSUNCMllYSWdjSEp2Y0dWeWRIa2dQU0J6ZEdGMGFXTnpXMjVoYldWZE8xeHVJQ0FnSUdsbUlDZ2hjM1JoZEdsamN5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdselVtVnpaWEoyWldRZ1BTQW9ibUZ0WlNCcGJpQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTXBPMXh1SUNBZ0lDRWhhWE5TWlhObGNuWmxaQ0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOc1lYTnpPaUJaYjNVZ1lYSmxJR0YwZEdWdGNIUnBibWNnZEc4Z1pHVm1hVzVsSUdFZ2NtVnpaWEoyWldRZ0p5QXJJQ2R3Y205d1pYSjBlU3dnWUNWellDd2dkR2hoZENCemFHOTFiR1J1WEZ3bmRDQmlaU0J2YmlCMGFHVWdYQ0p6ZEdGMGFXTnpYQ0lnYTJWNUxpQkVaV1pwYm1VZ2FYUWdKeUFySUNkaGN5QmhiaUJwYm5OMFlXNWpaU0J3Y205d1pYSjBlU0JwYm5OMFpXRmtPeUJwZENCM2FXeHNJSE4wYVd4c0lHSmxJR0ZqWTJWemMybGliR1VnYjI0Z2RHaGxJQ2NnS3lBblkyOXVjM1J5ZFdOMGIzSXVKeXdnYm1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnZG1GeUlHbHpTVzVvWlhKcGRHVmtJRDBnS0c1aGJXVWdhVzRnUTI5dWMzUnlkV04wYjNJcE8xeHVJQ0FnSUNFaGFYTkpibWhsY21sMFpXUWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JEYkdGemN6b2dXVzkxSUdGeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUdSbFptbHVaU0FuSUNzZ0oyQWxjMkFnYjI0Z2VXOTFjaUJqYjIxd2IyNWxiblFnYlc5eVpTQjBhR0Z1SUc5dVkyVXVJRlJvYVhNZ1kyOXVabXhwWTNRZ2JXRjVJR0psSUNjZ0t5QW5aSFZsSUhSdklHRWdiV2w0YVc0dUp5d2dibUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lFTnZibk4wY25WamRHOXlXMjVoYldWZElEMGdjSEp2Y0dWeWRIazdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJOWlhKblpTQjBkMjhnYjJKcVpXTjBjeXdnWW5WMElIUm9jbTkzSUdsbUlHSnZkR2dnWTI5dWRHRnBiaUIwYUdVZ2MyRnRaU0JyWlhrdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc5dVpTQlVhR1VnWm1seWMzUWdiMkpxWldOMExDQjNhR2xqYUNCcGN5QnRkWFJoZEdWa0xseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSFIzYnlCVWFHVWdjMlZqYjI1a0lHOWlhbVZqZEZ4dUlDb2dRSEpsZEhWeWJpQjdiMkpxWldOMGZTQnZibVVnWVdaMFpYSWdhWFFnYUdGeklHSmxaVzRnYlhWMFlYUmxaQ0IwYnlCamIyNTBZV2x1SUdWMlpYSjVkR2hwYm1jZ2FXNGdkSGR2TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJ0WlhKblpVbHVkRzlYYVhSb1RtOUVkWEJzYVdOaGRHVkxaWGx6S0c5dVpTd2dkSGR2S1NCN1hHNGdJQ0VvYjI1bElDWW1JSFIzYnlBbUppQjBlWEJsYjJZZ2IyNWxJRDA5UFNBbmIySnFaV04wSnlBbUppQjBlWEJsYjJZZ2RIZHZJRDA5UFNBbmIySnFaV04wSnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuYldWeVoyVkpiblJ2VjJsMGFFNXZSSFZ3YkdsallYUmxTMlY1Y3lncE9pQkRZVzV1YjNRZ2JXVnlaMlVnYm05dUxXOWlhbVZqZEhNdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJR1p2Y2lBb2RtRnlJR3RsZVNCcGJpQjBkMjhwSUh0Y2JpQWdJQ0JwWmlBb2RIZHZMbWhoYzA5M2JsQnliM0JsY25SNUtHdGxlU2twSUh0Y2JpQWdJQ0FnSUNFb2IyNWxXMnRsZVYwZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5iV1Z5WjJWSmJuUnZWMmwwYUU1dlJIVndiR2xqWVhSbFMyVjVjeWdwT2lBbklDc2dKMVJ5YVdWa0lIUnZJRzFsY21kbElIUjNieUJ2WW1wbFkzUnpJSGRwZEdnZ2RHaGxJSE5oYldVZ2EyVjVPaUJnSlhOZ0xpQlVhR2x6SUdOdmJtWnNhV04wSUNjZ0t5QW5iV0Y1SUdKbElHUjFaU0IwYnlCaElHMXBlR2x1T3lCcGJpQndZWEowYVdOMWJHRnlMQ0IwYUdseklHMWhlU0JpWlNCallYVnpaV1FnWW5rZ2RIZHZJQ2NnS3lBbloyVjBTVzVwZEdsaGJGTjBZWFJsS0NrZ2IzSWdaMlYwUkdWbVlYVnNkRkJ5YjNCektDa2diV1YwYUc5a2N5QnlaWFIxY201cGJtY2diMkpxWldOMGN5QW5JQ3NnSjNkcGRHZ2dZMnhoYzJocGJtY2dhMlY1Y3k0bkxDQnJaWGtwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lHOXVaVnRyWlhsZElEMGdkSGR2VzJ0bGVWMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdmJtVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaElHWjFibU4wYVc5dUlIUm9ZWFFnYVc1MmIydGxjeUIwZDI4Z1puVnVZM1JwYjI1eklHRnVaQ0J0WlhKblpYTWdkR2hsYVhJZ2NtVjBkWEp1SUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0J2Ym1VZ1JuVnVZM1JwYjI0Z2RHOGdhVzUyYjJ0bElHWnBjbk4wTGx4dUlDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdkSGR2SUVaMWJtTjBhVzl1SUhSdklHbHVkbTlyWlNCelpXTnZibVF1WEc0Z0tpQkFjbVYwZFhKdUlIdG1kVzVqZEdsdmJuMGdSblZ1WTNScGIyNGdkR2hoZENCcGJuWnZhMlZ6SUhSb1pTQjBkMjhnWVhKbmRXMWxiblFnWm5WdVkzUnBiMjV6TGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsVFdWeVoyVmtVbVZ6ZFd4MFJuVnVZM1JwYjI0b2IyNWxMQ0IwZDI4cElIdGNiaUFnY21WMGRYSnVJR1oxYm1OMGFXOXVJRzFsY21kbFpGSmxjM1ZzZENncElIdGNiaUFnSUNCMllYSWdZU0E5SUc5dVpTNWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJSFpoY2lCaUlEMGdkSGR2TG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ2FXWWdLR0VnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR0k3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hpSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJoTzF4dUlDQWdJSDFjYmlBZ0lDQjJZWElnWXlBOUlIdDlPMXh1SUNBZ0lHMWxjbWRsU1c1MGIxZHBkR2hPYjBSMWNHeHBZMkYwWlV0bGVYTW9ZeXdnWVNrN1hHNGdJQ0FnYldWeVoyVkpiblJ2VjJsMGFFNXZSSFZ3YkdsallYUmxTMlY1Y3loakxDQmlLVHRjYmlBZ0lDQnlaWFIxY200Z1l6dGNiaUFnZlR0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWm5WdVkzUnBiMjRnZEdoaGRDQnBiblp2YTJWeklIUjNieUJtZFc1amRHbHZibk1nWVc1a0lHbG5ibTl5WlhNZ2RHaGxhWElnY21WMGRYSnVJSFpoYkdWekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlHOXVaU0JHZFc1amRHbHZiaUIwYnlCcGJuWnZhMlVnWm1seWMzUXVYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCMGQyOGdSblZ1WTNScGIyNGdkRzhnYVc1MmIydGxJSE5sWTI5dVpDNWNiaUFxSUVCeVpYUjFjbTRnZTJaMWJtTjBhVzl1ZlNCR2RXNWpkR2x2YmlCMGFHRjBJR2x1ZG05clpYTWdkR2hsSUhSM2J5QmhjbWQxYldWdWRDQm1kVzVqZEdsdmJuTXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJqY21WaGRHVkRhR0ZwYm1Wa1JuVnVZM1JwYjI0b2IyNWxMQ0IwZDI4cElIdGNiaUFnY21WMGRYSnVJR1oxYm1OMGFXOXVJR05vWVdsdVpXUkdkVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnZibVV1WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNCMGQyOHVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkNhVzVrY3lCaElHMWxkR2h2WkNCMGJ5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JqYjIxd2IyNWxiblFnUTI5dGNHOXVaVzUwSUhkb2IzTmxJRzFsZEdodlpDQnBjeUJuYjJsdVp5QjBieUJpWlNCaWIzVnVaQzVjYmlBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlHMWxkR2h2WkNCTlpYUm9iMlFnZEc4Z1ltVWdZbTkxYm1RdVhHNGdLaUJBY21WMGRYSnVJSHRtZFc1amRHbHZibjBnVkdobElHSnZkVzVrSUcxbGRHaHZaQzVjYmlBcUwxeHVablZ1WTNScGIyNGdZbWx1WkVGMWRHOUNhVzVrVFdWMGFHOWtLR052YlhCdmJtVnVkQ3dnYldWMGFHOWtLU0I3WEc0Z0lIWmhjaUJpYjNWdVpFMWxkR2h2WkNBOUlHMWxkR2h2WkM1aWFXNWtLR052YlhCdmJtVnVkQ2s3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnWW05MWJtUk5aWFJvYjJRdVgxOXlaV0ZqZEVKdmRXNWtRMjl1ZEdWNGRDQTlJR052YlhCdmJtVnVkRHRjYmlBZ0lDQmliM1Z1WkUxbGRHaHZaQzVmWDNKbFlXTjBRbTkxYm1STlpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdZbTkxYm1STlpYUm9iMlF1WDE5eVpXRmpkRUp2ZFc1a1FYSm5kVzFsYm5SeklEMGdiblZzYkR0Y2JpQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFRtRnRaU0E5SUdOdmJYQnZibVZ1ZEM1amIyNXpkSEoxWTNSdmNpNWthWE53YkdGNVRtRnRaVHRjYmlBZ0lDQjJZWElnWDJKcGJtUWdQU0JpYjNWdVpFMWxkR2h2WkM1aWFXNWtPMXh1SUNBZ0lDOHFJR1Z6YkdsdWRDMWthWE5oWW14bElHSnNiMk5yTFhOamIzQmxaQzEyWVhJc0lHNXZMWFZ1WkdWbUlDb3ZYRzRnSUNBZ1ltOTFibVJOWlhSb2IyUXVZbWx1WkNBOUlHWjFibU4wYVc5dUlDaHVaWGRVYUdsektTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQmZiR1Z1SUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN3Z1lYSm5jeUE5SUVGeWNtRjVLRjlzWlc0Z1BpQXhJRDhnWDJ4bGJpQXRJREVnT2lBd0tTd2dYMnRsZVNBOUlERTdJRjlyWlhrZ1BDQmZiR1Z1T3lCZmEyVjVLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1lYSm5jMXRmYTJWNUlDMGdNVjBnUFNCaGNtZDFiV1Z1ZEhOYlgydGxlVjA3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklGVnpaWElnYVhNZ2RISjVhVzVuSUhSdklHSnBibVFvS1NCaGJpQmhkWFJ2WW05MWJtUWdiV1YwYUc5a095QjNaU0JsWm1abFkzUnBkbVZzZVNCM2FXeHNYRzRnSUNBZ0lDQXZMeUJwWjI1dmNtVWdkR2hsSUhaaGJIVmxJRzltSUZ3aWRHaHBjMXdpSUhSb1lYUWdkR2hsSUhWelpYSWdhWE1nZEhKNWFXNW5JSFJ2SUhWelpTd2djMjljYmlBZ0lDQWdJQzh2SUd4bGRDZHpJSGRoY200dVhHNGdJQ0FnSUNCcFppQW9ibVYzVkdocGN5QWhQVDBnWTI5dGNHOXVaVzUwSUNZbUlHNWxkMVJvYVhNZ0lUMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RpYVc1a0tDazZJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQnRaWFJvYjJSeklHMWhlU0J2Ym14NUlHSmxJR0p2ZFc1a0lIUnZJSFJvWlNBbklDc2dKMk52YlhCdmJtVnVkQ0JwYm5OMFlXNWpaUzRnVTJWbElDVnpKeXdnWTI5dGNHOXVaVzUwVG1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0NGaGNtZHpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjJKcGJtUW9LVG9nV1c5MUlHRnlaU0JpYVc1a2FXNW5JR0VnWTI5dGNHOXVaVzUwSUcxbGRHaHZaQ0IwYnlCMGFHVWdZMjl0Y0c5dVpXNTBMaUFuSUNzZ0oxSmxZV04wSUdSdlpYTWdkR2hwY3lCbWIzSWdlVzkxSUdGMWRHOXRZWFJwWTJGc2JIa2dhVzRnWVNCb2FXZG9MWEJsY21admNtMWhibU5sSUNjZ0t5QW5kMkY1TENCemJ5QjViM1VnWTJGdUlITmhabVZzZVNCeVpXMXZkbVVnZEdocGN5QmpZV3hzTGlCVFpXVWdKWE1uTENCamIyMXdiMjVsYm5ST1lXMWxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdKdmRXNWtUV1YwYUc5a08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RtRnlJSEpsWW05MWJtUk5aWFJvYjJRZ1BTQmZZbWx1WkM1aGNIQnNlU2hpYjNWdVpFMWxkR2h2WkN3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lISmxZbTkxYm1STlpYUm9iMlF1WDE5eVpXRmpkRUp2ZFc1a1EyOXVkR1Y0ZENBOUlHTnZiWEJ2Ym1WdWREdGNiaUFnSUNBZ0lISmxZbTkxYm1STlpYUm9iMlF1WDE5eVpXRmpkRUp2ZFc1a1RXVjBhRzlrSUQwZ2JXVjBhRzlrTzF4dUlDQWdJQ0FnY21WaWIzVnVaRTFsZEdodlpDNWZYM0psWVdOMFFtOTFibVJCY21kMWJXVnVkSE1nUFNCaGNtZHpPMXh1SUNBZ0lDQWdjbVYwZFhKdUlISmxZbTkxYm1STlpYUm9iMlE3WEc0Z0lDQWdJQ0F2S2lCbGMyeHBiblF0Wlc1aFlteGxJQ292WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdZbTkxYm1STlpYUm9iMlE3WEc1OVhHNWNiaThxS2x4dUlDb2dRbWx1WkhNZ1lXeHNJR0YxZEc4dFltOTFibVFnYldWMGFHOWtjeUJwYmlCaElHTnZiWEJ2Ym1WdWRDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXRjRzl1Wlc1MElFTnZiWEJ2Ym1WdWRDQjNhRzl6WlNCdFpYUm9iMlFnYVhNZ1oyOXBibWNnZEc4Z1ltVWdZbTkxYm1RdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKcGJtUkJkWFJ2UW1sdVpFMWxkR2h2WkhNb1kyOXRjRzl1Wlc1MEtTQjdYRzRnSUdadmNpQW9kbUZ5SUdGMWRHOUNhVzVrUzJWNUlHbHVJR052YlhCdmJtVnVkQzVmWDNKbFlXTjBRWFYwYjBKcGJtUk5ZWEFwSUh0Y2JpQWdJQ0JwWmlBb1kyOXRjRzl1Wlc1MExsOWZjbVZoWTNSQmRYUnZRbWx1WkUxaGNDNW9ZWE5QZDI1UWNtOXdaWEowZVNoaGRYUnZRbWx1WkV0bGVTa3BJSHRjYmlBZ0lDQWdJSFpoY2lCdFpYUm9iMlFnUFNCamIyMXdiMjVsYm5RdVgxOXlaV0ZqZEVGMWRHOUNhVzVrVFdGd1cyRjFkRzlDYVc1a1MyVjVYVHRjYmlBZ0lDQWdJR052YlhCdmJtVnVkRnRoZFhSdlFtbHVaRXRsZVYwZ1BTQmlhVzVrUVhWMGIwSnBibVJOWlhSb2IyUW9ZMjl0Y0c5dVpXNTBMQ0J0WlhSb2IyUXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRUZrWkNCdGIzSmxJSFJ2SUhSb1pTQlNaV0ZqZEVOc1lYTnpJR0poYzJVZ1kyeGhjM011SUZSb1pYTmxJR0Z5WlNCaGJHd2diR1ZuWVdONUlHWmxZWFIxY21WeklHRnVaRnh1SUNvZ2RHaGxjbVZtYjNKbElHNXZkQ0JoYkhKbFlXUjVJSEJoY25RZ2IyWWdkR2hsSUcxdlpHVnliaUJTWldGamRFTnZiWEJ2Ym1WdWRDNWNiaUFxTDF4dWRtRnlJRkpsWVdOMFEyeGhjM05OYVhocGJpQTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWRTlFVHpvZ1ZHaHBjeUIzYVd4c0lHSmxJR1JsY0hKbFkyRjBaV1FnWW1WallYVnpaU0J6ZEdGMFpTQnphRzkxYkdRZ1lXeDNZWGx6SUd0bFpYQWdZU0JqYjI1emFYTjBaVzUwWEc0Z0lDQXFJSFI1Y0dVZ2MybG5ibUYwZFhKbElHRnVaQ0IwYUdVZ2IyNXNlU0IxYzJVZ1kyRnpaU0JtYjNJZ2RHaHBjeXdnYVhNZ2RHOGdZWFp2YVdRZ2RHaGhkQzVjYmlBZ0lDb3ZYRzRnSUhKbGNHeGhZMlZUZEdGMFpUb2dablZ1WTNScGIyNGdLRzVsZDFOMFlYUmxMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJSFJvYVhNdWRYQmtZWFJsY2k1bGJuRjFaWFZsVW1Wd2JHRmpaVk4wWVhSbEtIUm9hWE1zSUc1bGQxTjBZWFJsS1R0Y2JpQWdJQ0JwWmlBb1kyRnNiR0poWTJzcElIdGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxjaTVsYm5GMVpYVmxRMkZzYkdKaFkyc29kR2hwY3l3Z1kyRnNiR0poWTJzcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMmhsWTJ0eklIZG9aWFJvWlhJZ2IzSWdibTkwSUhSb2FYTWdZMjl0Y0c5emFYUmxJR052YlhCdmJtVnVkQ0JwY3lCdGIzVnVkR1ZrTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JVY25WbElHbG1JRzF2ZFc1MFpXUXNJR1poYkhObElHOTBhR1Z5ZDJselpTNWNiaUFnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb3ZYRzRnSUdselRXOTFiblJsWkRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblZ3WkdGMFpYSXVhWE5OYjNWdWRHVmtLSFJvYVhNcE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUWlhSeklHRWdjM1ZpYzJWMElHOW1JSFJvWlNCd2NtOXdjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCaGNuUnBZV3hRY205d2N5QlRkV0p6WlhRZ2IyWWdkR2hsSUc1bGVIUWdjSEp2Y0hNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCRFlXeHNaV1FnWVdaMFpYSWdjSEp2Y0hNZ1lYSmxJSFZ3WkdGMFpXUXVYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaUJBY0hWaWJHbGpYRzRnSUNBcUlFQmtaWEJ5WldOaGRHVmtYRzRnSUNBcUwxeHVJQ0J6WlhSUWNtOXdjem9nWm5WdVkzUnBiMjRnS0hCaGNuUnBZV3hRY205d2N5d2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2QyRnlibE5sZEZCeWIzQnpLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11ZFhCa1lYUmxjaTVsYm5GMVpYVmxVMlYwVUhKdmNITW9kR2hwY3l3Z2NHRnlkR2xoYkZCeWIzQnpLVHRjYmlBZ0lDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbGNpNWxibkYxWlhWbFEyRnNiR0poWTJzb2RHaHBjeXdnWTJGc2JHSmhZMnNwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVndiR0ZqWlNCaGJHd2dkR2hsSUhCeWIzQnpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1WM1VISnZjSE1nVTNWaWMyVjBJRzltSUhSb1pTQnVaWGgwSUhCeWIzQnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OW1kVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dRMkZzYkdWa0lHRm1kR1Z5SUhCeWIzQnpJR0Z5WlNCMWNHUmhkR1ZrTGx4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvZ1FIQjFZbXhwWTF4dUlDQWdLaUJBWkdWd2NtVmpZWFJsWkZ4dUlDQWdLaTljYmlBZ2NtVndiR0ZqWlZCeWIzQnpPaUJtZFc1amRHbHZiaUFvYm1WM1VISnZjSE1zSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSGRoY201VFpYUlFjbTl3Y3lncE8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlZKbGNHeGhZMlZRY205d2N5aDBhR2x6TENCdVpYZFFjbTl3Y3lrN1hHNGdJQ0FnYVdZZ0tHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVU5oYkd4aVlXTnJLSFJvYVhNc0lHTmhiR3hpWVdOcktUdGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNiblpoY2lCU1pXRmpkRU5zWVhOelEyOXRjRzl1Wlc1MElEMGdablZ1WTNScGIyNGdLQ2tnZTMwN1hHNWhjM05wWjI0b1VtVmhZM1JEYkdGemMwTnZiWEJ2Ym1WdWRDNXdjbTkwYjNSNWNHVXNJRkpsWVdOMFEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTd2dVbVZoWTNSRGJHRnpjMDFwZUdsdUtUdGNibHh1THlvcVhHNGdLaUJOYjJSMWJHVWdabTl5SUdOeVpXRjBhVzVuSUdOdmJYQnZjMmwwWlNCamIyMXdiMjVsYm5SekxseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCU1pXRmpkRU5zWVhOelhHNGdLaTljYm5aaGNpQlNaV0ZqZEVOc1lYTnpJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJR0VnWTI5dGNHOXphWFJsSUdOdmJYQnZibVZ1ZENCamJHRnpjeUJuYVhabGJpQmhJR05zWVhOeklITndaV05wWm1sallYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCemNHVmpJRU5zWVhOeklITndaV05wWm1sallYUnBiMjRnS0hkb2FXTm9JRzExYzNRZ1pHVm1hVzVsSUdCeVpXNWtaWEpnS1M1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Wm5WdVkzUnBiMjU5SUVOdmJYQnZibVZ1ZENCamIyNXpkSEoxWTNSdmNpQm1kVzVqZEdsdmJpNWNiaUFnSUNvZ1FIQjFZbXhwWTF4dUlDQWdLaTljYmlBZ1kzSmxZWFJsUTJ4aGMzTTZJR1oxYm1OMGFXOXVJQ2h6Y0dWaktTQjdYRzRnSUNBZ2RtRnlJRU52Ym5OMGNuVmpkRzl5SUQwZ1puVnVZM1JwYjI0Z0tIQnliM0J6TENCamIyNTBaWGgwTENCMWNHUmhkR1Z5S1NCN1hHNGdJQ0FnSUNBdkx5QlVhR2x6SUdOdmJuTjBjblZqZEc5eUlHbHpJRzkyWlhKeWFXUmtaVzRnWW5rZ2JXOWphM011SUZSb1pTQmhjbWQxYldWdWRDQnBjeUIxYzJWa1hHNGdJQ0FnSUNBdkx5QmllU0J0YjJOcmN5QjBieUJoYzNObGNuUWdiMjRnZDJoaGRDQm5aWFJ6SUcxdmRXNTBaV1F1WEc1Y2JpQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIUm9hWE1nYVc1emRHRnVZMlZ2WmlCRGIyNXpkSEoxWTNSdmNpd2dKMU52YldWMGFHbHVaeUJwY3lCallXeHNhVzVuSUdFZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUdScGNtVmpkR3g1TGlCVmMyVWdZU0JtWVdOMGIzSjVJRzl5SUNjZ0t5QW5TbE5ZSUdsdWMzUmxZV1F1SUZObFpUb2dhSFIwY0hNNkx5OW1ZaTV0WlM5eVpXRmpkQzFzWldkaFkzbG1ZV04wYjNKNUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklGZHBjbVVnZFhBZ1lYVjBieTFpYVc1a2FXNW5YRzRnSUNBZ0lDQnBaaUFvZEdocGN5NWZYM0psWVdOMFFYVjBiMEpwYm1STllYQXBJSHRjYmlBZ0lDQWdJQ0FnWW1sdVpFRjFkRzlDYVc1a1RXVjBhRzlrY3loMGFHbHpLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZEdocGN5NXdjbTl3Y3lBOUlIQnliM0J6TzF4dUlDQWdJQ0FnZEdocGN5NWpiMjUwWlhoMElEMGdZMjl1ZEdWNGREdGNiaUFnSUNBZ0lIUm9hWE11Y21WbWN5QTlJR1Z0Y0hSNVQySnFaV04wTzF4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWeUlEMGdkWEJrWVhSbGNpQjhmQ0JTWldGamRFNXZiM0JWY0dSaGRHVlJkV1YxWlR0Y2JseHVJQ0FnSUNBZ2RHaHBjeTV6ZEdGMFpTQTlJRzUxYkd3N1hHNWNiaUFnSUNBZ0lDOHZJRkpsWVdOMFEyeGhjM05sY3lCa2IyVnpiaWQwSUdoaGRtVWdZMjl1YzNSeWRXTjBiM0p6TGlCSmJuTjBaV0ZrTENCMGFHVjVJSFZ6WlNCMGFHVmNiaUFnSUNBZ0lDOHZJR2RsZEVsdWFYUnBZV3hUZEdGMFpTQmhibVFnWTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwSUcxbGRHaHZaSE1nWm05eUlHbHVhWFJwWVd4cGVtRjBhVzl1TGx4dVhHNGdJQ0FnSUNCMllYSWdhVzVwZEdsaGJGTjBZWFJsSUQwZ2RHaHBjeTVuWlhSSmJtbDBhV0ZzVTNSaGRHVWdQeUIwYUdsekxtZGxkRWx1YVhScFlXeFRkR0YwWlNncElEb2diblZzYkR0Y2JpQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUM4dklGZGxJR0ZzYkc5M0lHRjFkRzh0Ylc5amEzTWdkRzhnY0hKdlkyVmxaQ0JoY3lCcFppQjBhR1Y1SjNKbElISmxkSFZ5Ym1sdVp5QnVkV3hzTGx4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHbHVhWFJwWVd4VGRHRjBaU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY2dKaVlnZEdocGN5NW5aWFJKYm1sMGFXRnNVM1JoZEdVdVgybHpUVzlqYTBaMWJtTjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVkdocGN5QnBjeUJ3Y205aVlXSnNlU0JpWVdRZ2NISmhZM1JwWTJVdUlFTnZibk5wWkdWeUlIZGhjbTVwYm1jZ2FHVnlaU0JoYm1SY2JpQWdJQ0FnSUNBZ0lDQXZMeUJrWlhCeVpXTmhkR2x1WnlCMGFHbHpJR052Ym5abGJtbGxibU5sTGx4dUlDQWdJQ0FnSUNBZ0lHbHVhWFJwWVd4VGRHRjBaU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0VvZEhsd1pXOW1JR2x1YVhScFlXeFRkR0YwWlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnSVVGeWNtRjVMbWx6UVhKeVlYa29hVzVwZEdsaGJGTjBZWFJsS1NrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuSlhNdVoyVjBTVzVwZEdsaGJGTjBZWFJsS0NrNklHMTFjM1FnY21WMGRYSnVJR0Z1SUc5aWFtVmpkQ0J2Y2lCdWRXeHNKeXdnUTI5dWMzUnlkV04wYjNJdVpHbHpjR3hoZVU1aGJXVWdmSHdnSjFKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0lDQjBhR2x6TG5OMFlYUmxJRDBnYVc1cGRHbGhiRk4wWVhSbE8xeHVJQ0FnSUgwN1hHNGdJQ0FnUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbElEMGdibVYzSUZKbFlXTjBRMnhoYzNORGIyMXdiMjVsYm5Rb0tUdGNiaUFnSUNCRGIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXVZMjl1YzNSeWRXTjBiM0lnUFNCRGIyNXpkSEoxWTNSdmNqdGNibHh1SUNBZ0lHbHVhbVZqZEdWa1RXbDRhVzV6TG1admNrVmhZMmdvYldsNFUzQmxZMGx1ZEc5RGIyMXdiMjVsYm5RdVltbHVaQ2h1ZFd4c0xDQkRiMjV6ZEhKMVkzUnZjaWtwTzF4dVhHNGdJQ0FnYldsNFUzQmxZMGx1ZEc5RGIyMXdiMjVsYm5Rb1EyOXVjM1J5ZFdOMGIzSXNJSE53WldNcE8xeHVYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaU0IwYUdVZ1pHVm1ZWFZzZEZCeWIzQnpJSEJ5YjNCbGNuUjVJR0ZtZEdWeUlHRnNiQ0J0YVhocGJuTWdhR0YyWlNCaVpXVnVJRzFsY21kbFpDNWNiaUFnSUNCcFppQW9RMjl1YzNSeWRXTjBiM0l1WjJWMFJHVm1ZWFZzZEZCeWIzQnpLU0I3WEc0Z0lDQWdJQ0JEYjI1emRISjFZM1J2Y2k1a1pXWmhkV3gwVUhKdmNITWdQU0JEYjI1emRISjFZM1J2Y2k1blpYUkVaV1poZFd4MFVISnZjSE1vS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdMeThnVkdocGN5QnBjeUJoSUhSaFp5QjBieUJwYm1ScFkyRjBaU0IwYUdGMElIUm9aU0IxYzJVZ2IyWWdkR2hsYzJVZ2JXVjBhRzlrSUc1aGJXVnpJR2x6SUc5ckxGeHVJQ0FnSUNBZ0x5OGdjMmx1WTJVZ2FYUW5jeUIxYzJWa0lIZHBkR2dnWTNKbFlYUmxRMnhoYzNNdUlFbG1JR2wwSjNNZ2JtOTBMQ0IwYUdWdUlHbDBKM01nYkdsclpXeDVJR0ZjYmlBZ0lDQWdJQzh2SUcxcGMzUmhhMlVnYzI4Z2QyVW5iR3dnZDJGeWJpQjViM1VnZEc4Z2RYTmxJSFJvWlNCemRHRjBhV01nY0hKdmNHVnlkSGtzSUhCeWIzQmxjblI1WEc0Z0lDQWdJQ0F2THlCcGJtbDBhV0ZzYVhwbGNpQnZjaUJqYjI1emRISjFZM1J2Y2lCeVpYTndaV04wYVhabGJIa3VYRzRnSUNBZ0lDQnBaaUFvUTI5dWMzUnlkV04wYjNJdVoyVjBSR1ZtWVhWc2RGQnliM0J6S1NCN1hHNGdJQ0FnSUNBZ0lFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5NXBjMUpsWVdOMFEyeGhjM05CY0hCeWIzWmxaQ0E5SUh0OU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLRU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlM1blpYUkpibWwwYVdGc1UzUmhkR1VwSUh0Y2JpQWdJQ0FnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVjSEp2ZEc5MGVYQmxMbWRsZEVsdWFYUnBZV3hUZEdGMFpTNXBjMUpsWVdOMFEyeGhjM05CY0hCeWIzWmxaQ0E5SUh0OU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUNGRGIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXVjbVZ1WkdWeUlEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJOeVpXRjBaVU5zWVhOektDNHVMaWs2SUVOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0Z2JYVnpkQ0JwYlhCc1pXMWxiblFnWVNCZ2NtVnVaR1Z5WUNCdFpYUm9iMlF1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LQ0ZEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dVdVkyOXRjRzl1Wlc1MFUyaHZkV3hrVlhCa1lYUmxMQ0FuSlhNZ2FHRnpJR0VnYldWMGFHOWtJR05oYkd4bFpDQW5JQ3NnSjJOdmJYQnZibVZ1ZEZOb2IzVnNaRlZ3WkdGMFpTZ3BMaUJFYVdRZ2VXOTFJRzFsWVc0Z2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxLQ2svSUNjZ0t5QW5WR2hsSUc1aGJXVWdhWE1nY0doeVlYTmxaQ0JoY3lCaElIRjFaWE4wYVc5dUlHSmxZMkYxYzJVZ2RHaGxJR1oxYm1OMGFXOXVJR2x6SUNjZ0t5QW5aWGh3WldOMFpXUWdkRzhnY21WMGRYSnVJR0VnZG1Gc2RXVXVKeXdnYzNCbFl5NWthWE53YkdGNVRtRnRaU0I4ZkNBblFTQmpiMjF3YjI1bGJuUW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRkRiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1V1WTI5dGNHOXVaVzUwVjJsc2JGSmxZMmxsZG1WUWNtOXdjeXdnSnlWeklHaGhjeUJoSUcxbGRHaHZaQ0JqWVd4c1pXUWdKeUFySUNkamIyMXdiMjVsYm5SWGFXeHNVbVZqYVdWMlpWQnliM0J6S0NrdUlFUnBaQ0I1YjNVZ2JXVmhiaUJqYjIxd2IyNWxiblJYYVd4c1VtVmpaV2wyWlZCeWIzQnpLQ2svSnl3Z2MzQmxZeTVrYVhOd2JHRjVUbUZ0WlNCOGZDQW5RU0JqYjIxd2IyNWxiblFuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QlNaV1IxWTJVZ2RHbHRaU0J6Y0dWdWRDQmtiMmx1WnlCc2IyOXJkWEJ6SUdKNUlITmxkSFJwYm1jZ2RHaGxjMlVnYjI0Z2RHaGxJSEJ5YjNSdmRIbHdaUzVjYmlBZ0lDQm1iM0lnS0haaGNpQnRaWFJvYjJST1lXMWxJR2x1SUZKbFlXTjBRMnhoYzNOSmJuUmxjbVpoWTJVcElIdGNiaUFnSUNBZ0lHbG1JQ2doUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbFcyMWxkR2h2WkU1aGJXVmRLU0I3WEc0Z0lDQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxuQnliM1J2ZEhsd1pWdHRaWFJvYjJST1lXMWxYU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUVOdmJuTjBjblZqZEc5eU8xeHVJQ0I5TEZ4dVhHNGdJR2x1YW1WamRHbHZiam9nZTF4dUlDQWdJR2x1YW1WamRFMXBlR2x1T2lCbWRXNWpkR2x2YmlBb2JXbDRhVzRwSUh0Y2JpQWdJQ0FnSUdsdWFtVmpkR1ZrVFdsNGFXNXpMbkIxYzJnb2JXbDRhVzRwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUTJ4aGMzTTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENvbXBvbmVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4gKi9cbmZ1bmN0aW9uIFJlYWN0Q29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8vIHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuXG4vKipcbiAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgdG8gbXV0YXRlXG4gKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBydW4gc3luY2hyb25vdXNseSxcbiAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuICogY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHlcbiAqIGNvbXBsZXRlZC5cbiAqXG4gKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3RhdGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW5cbiAqIHRoZSBmdXR1cmUgKG5vdCBzeW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8gZGF0ZVxuICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcbiAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlXG4gKiBzaG91bGRDb21wb25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250ZXh0IHdpbGwgbm90IHlldCBiZVxuICogYXNzaWduZWQgdG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0b1xuICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRcbiAqL1xuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2spIHtcbiAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhICcgKyAnZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwYXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlvdSBwYXNzZWQgYW4gdW5kZWZpbmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQsIHVzZSBmb3JjZVVwZGF0ZSgpLicpIDogdW5kZWZpbmVkO1xuICB9XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgcGFydGlhbFN0YXRlKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cbi8qKlxuICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gKlxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gKlxuICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAqXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICogd2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNcbiAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG4gICAgZ2V0RE9NTm9kZTogWydnZXRET01Ob2RlJywgJ1VzZSBSZWFjdERPTS5maW5kRE9NTm9kZShjb21wb25lbnQpIGluc3RlYWQuJ10sXG4gICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VQcm9wczogWydyZXBsYWNlUHJvcHMnLCAnSW5zdGVhZCwgY2FsbCByZW5kZXIgYWdhaW4gYXQgdGhlIHRvcCBsZXZlbC4nXSxcbiAgICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4nXSxcbiAgICBzZXRQcm9wczogWydzZXRQcm9wcycsICdJbnN0ZWFkLCBjYWxsIHJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLiddXG4gIH07XG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykge1xuICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLikgaXMgZGVwcmVjYXRlZCBpbiBwbGFpbiBKYXZhU2NyaXB0IFJlYWN0IGNsYXNzZXMuICVzJywgaW5mb1swXSwgaW5mb1sxXSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBmb3IgKHZhciBmbk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3duUHJvcGVydHkoZm5OYW1lKSkge1xuICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFTnZiWEJ2Ym1WdWRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUTI5dGNHOXVaVzUwWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUbTl2Y0ZWd1pHRjBaVkYxWlhWbEp5azdYRzVjYm5aaGNpQmpZVzVFWldacGJtVlFjbTl3WlhKMGVTQTlJSEpsY1hWcGNtVW9KeTR2WTJGdVJHVm1hVzVsVUhKdmNHVnlkSGtuS1R0Y2JuWmhjaUJsYlhCMGVVOWlhbVZqZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1VDJKcVpXTjBKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVMeW9xWEc0Z0tpQkNZWE5sSUdOc1lYTnpJR2hsYkhCbGNuTWdabTl5SUhSb1pTQjFjR1JoZEdsdVp5QnpkR0YwWlNCdlppQmhJR052YlhCdmJtVnVkQzVjYmlBcUwxeHVablZ1WTNScGIyNGdVbVZoWTNSRGIyMXdiMjVsYm5Rb2NISnZjSE1zSUdOdmJuUmxlSFFzSUhWd1pHRjBaWElwSUh0Y2JpQWdkR2hwY3k1d2NtOXdjeUE5SUhCeWIzQnpPMXh1SUNCMGFHbHpMbU52Ym5SbGVIUWdQU0JqYjI1MFpYaDBPMXh1SUNCMGFHbHpMbkpsWm5NZ1BTQmxiWEIwZVU5aWFtVmpkRHRjYmlBZ0x5OGdWMlVnYVc1cGRHbGhiR2w2WlNCMGFHVWdaR1ZtWVhWc2RDQjFjR1JoZEdWeUlHSjFkQ0IwYUdVZ2NtVmhiQ0J2Ym1VZ1oyVjBjeUJwYm1wbFkzUmxaQ0JpZVNCMGFHVmNiaUFnTHk4Z2NtVnVaR1Z5WlhJdVhHNGdJSFJvYVhNdWRYQmtZWFJsY2lBOUlIVndaR0YwWlhJZ2ZId2dVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1U3WEc1OVhHNWNibEpsWVdOMFEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTNXBjMUpsWVdOMFEyOXRjRzl1Wlc1MElEMGdlMzA3WEc1Y2JpOHFLbHh1SUNvZ1UyVjBjeUJoSUhOMVluTmxkQ0J2WmlCMGFHVWdjM1JoZEdVdUlFRnNkMkY1Y3lCMWMyVWdkR2hwY3lCMGJ5QnRkWFJoZEdWY2JpQXFJSE4wWVhSbExpQlpiM1VnYzJodmRXeGtJSFJ5WldGMElHQjBhR2x6TG5OMFlYUmxZQ0JoY3lCcGJXMTFkR0ZpYkdVdVhHNGdLbHh1SUNvZ1ZHaGxjbVVnYVhNZ2JtOGdaM1ZoY21GdWRHVmxJSFJvWVhRZ1lIUm9hWE11YzNSaGRHVmdJSGRwYkd3Z1ltVWdhVzF0WldScFlYUmxiSGtnZFhCa1lYUmxaQ3dnYzI5Y2JpQXFJR0ZqWTJWemMybHVaeUJnZEdocGN5NXpkR0YwWldBZ1lXWjBaWElnWTJGc2JHbHVaeUIwYUdseklHMWxkR2h2WkNCdFlYa2djbVYwZFhKdUlIUm9aU0J2YkdRZ2RtRnNkV1V1WEc0Z0tseHVJQ29nVkdobGNtVWdhWE1nYm04Z1ozVmhjbUZ1ZEdWbElIUm9ZWFFnWTJGc2JITWdkRzhnWUhObGRGTjBZWFJsWUNCM2FXeHNJSEoxYmlCemVXNWphSEp2Ym05MWMyeDVMRnh1SUNvZ1lYTWdkR2hsZVNCdFlYa2daWFpsYm5SMVlXeHNlU0JpWlNCaVlYUmphR1ZrSUhSdloyVjBhR1Z5TGlBZ1dXOTFJR05oYmlCd2NtOTJhV1JsSUdGdUlHOXdkR2x2Ym1Gc1hHNGdLaUJqWVd4c1ltRmpheUIwYUdGMElIZHBiR3dnWW1VZ1pYaGxZM1YwWldRZ2QyaGxiaUIwYUdVZ1kyRnNiQ0IwYnlCelpYUlRkR0YwWlNCcGN5QmhZM1IxWVd4c2VWeHVJQ29nWTI5dGNHeGxkR1ZrTGx4dUlDcGNiaUFxSUZkb1pXNGdZU0JtZFc1amRHbHZiaUJwY3lCd2NtOTJhV1JsWkNCMGJ5QnpaWFJUZEdGMFpTd2dhWFFnZDJsc2JDQmlaU0JqWVd4c1pXUWdZWFFnYzI5dFpTQndiMmx1ZENCcGJseHVJQ29nZEdobElHWjFkSFZ5WlNBb2JtOTBJSE41Ym1Ob2NtOXViM1Z6YkhrcExpQkpkQ0IzYVd4c0lHSmxJR05oYkd4bFpDQjNhWFJvSUhSb1pTQjFjQ0IwYnlCa1lYUmxYRzRnS2lCamIyMXdiMjVsYm5RZ1lYSm5kVzFsYm5SeklDaHpkR0YwWlN3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTGlCVWFHVnpaU0IyWVd4MVpYTWdZMkZ1SUdKbElHUnBabVpsY21WdWRGeHVJQ29nWm5KdmJTQjBhR2x6TGlvZ1ltVmpZWFZ6WlNCNWIzVnlJR1oxYm1OMGFXOXVJRzFoZVNCaVpTQmpZV3hzWldRZ1lXWjBaWElnY21WalpXbDJaVkJ5YjNCeklHSjFkQ0JpWldadmNtVmNiaUFxSUhOb2IzVnNaRU52YlhCdmJtVnVkRlZ3WkdGMFpTd2dZVzVrSUhSb2FYTWdibVYzSUhOMFlYUmxMQ0J3Y205d2N5d2dZVzVrSUdOdmJuUmxlSFFnZDJsc2JDQnViM1FnZVdWMElHSmxYRzRnS2lCaGMzTnBaMjVsWkNCMGJ5QjBhR2x6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmR1oxYm1OMGFXOXVmU0J3WVhKMGFXRnNVM1JoZEdVZ1RtVjRkQ0J3WVhKMGFXRnNJSE4wWVhSbElHOXlJR1oxYm1OMGFXOXVJSFJ2WEc0Z0tpQWdJQ0FnSUNBZ2NISnZaSFZqWlNCdVpYaDBJSEJoY25ScFlXd2djM1JoZEdVZ2RHOGdZbVVnYldWeVoyVmtJSGRwZEdnZ1kzVnljbVZ1ZENCemRHRjBaUzVjYmlBcUlFQndZWEpoYlNCN1AyWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QkRZV3hzWldRZ1lXWjBaWElnYzNSaGRHVWdhWE1nZFhCa1lYUmxaQzVjYmlBcUlFQm1hVzVoYkZ4dUlDb2dRSEJ5YjNSbFkzUmxaRnh1SUNvdlhHNVNaV0ZqZEVOdmJYQnZibVZ1ZEM1d2NtOTBiM1I1Y0dVdWMyVjBVM1JoZEdVZ1BTQm1kVzVqZEdsdmJpQW9jR0Z5ZEdsaGJGTjBZWFJsTENCallXeHNZbUZqYXlrZ2UxeHVJQ0FoS0hSNWNHVnZaaUJ3WVhKMGFXRnNVM1JoZEdVZ1BUMDlJQ2R2WW1wbFkzUW5JSHg4SUhSNWNHVnZaaUJ3WVhKMGFXRnNVM1JoZEdVZ1BUMDlJQ2RtZFc1amRHbHZiaWNnZkh3Z2NHRnlkR2xoYkZOMFlYUmxJRDA5SUc1MWJHd3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozTmxkRk4wWVhSbEtDNHVMaWs2SUhSaGEyVnpJR0Z1SUc5aWFtVmpkQ0J2WmlCemRHRjBaU0IyWVhKcFlXSnNaWE1nZEc4Z2RYQmtZWFJsSUc5eUlHRWdKeUFySUNkbWRXNWpkR2x2YmlCM2FHbGphQ0J5WlhSMWNtNXpJR0Z1SUc5aWFtVmpkQ0J2WmlCemRHRjBaU0IyWVhKcFlXSnNaWE11SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hCaGNuUnBZV3hUZEdGMFpTQWhQU0J1ZFd4c0xDQW5jMlYwVTNSaGRHVW9MaTR1S1RvZ1dXOTFJSEJoYzNObFpDQmhiaUIxYm1SbFptbHVaV1FnYjNJZ2JuVnNiQ0J6ZEdGMFpTQnZZbXBsWTNRN0lDY2dLeUFuYVc1emRHVmhaQ3dnZFhObElHWnZjbU5sVlhCa1lYUmxLQ2t1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdkR2hwY3k1MWNHUmhkR1Z5TG1WdWNYVmxkV1ZUWlhSVGRHRjBaU2gwYUdsekxDQndZWEowYVdGc1UzUmhkR1VwTzF4dUlDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVOaGJHeGlZV05yS0hSb2FYTXNJR05oYkd4aVlXTnJLVHRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCR2IzSmpaWE1nWVc0Z2RYQmtZWFJsTGlCVWFHbHpJSE5vYjNWc1pDQnZibXg1SUdKbElHbHVkbTlyWldRZ2QyaGxiaUJwZENCcGN5QnJibTkzYmlCM2FYUm9YRzRnS2lCalpYSjBZV2x1ZEhrZ2RHaGhkQ0IzWlNCaGNtVWdLaXB1YjNRcUtpQnBiaUJoSUVSUFRTQjBjbUZ1YzJGamRHbHZiaTVjYmlBcVhHNGdLaUJaYjNVZ2JXRjVJSGRoYm5RZ2RHOGdZMkZzYkNCMGFHbHpJSGRvWlc0Z2VXOTFJR3R1YjNjZ2RHaGhkQ0J6YjIxbElHUmxaWEJsY2lCaGMzQmxZM1FnYjJZZ2RHaGxYRzRnS2lCamIyMXdiMjVsYm5RbmN5QnpkR0YwWlNCb1lYTWdZMmhoYm1kbFpDQmlkWFFnWUhObGRGTjBZWFJsWUNCM1lYTWdibTkwSUdOaGJHeGxaQzVjYmlBcVhHNGdLaUJVYUdseklIZHBiR3dnYm05MElHbHVkbTlyWlNCZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxZQ3dnWW5WMElHbDBJSGRwYkd3Z2FXNTJiMnRsWEc0Z0tpQmdZMjl0Y0c5dVpXNTBWMmxzYkZWd1pHRjBaV0FnWVc1a0lHQmpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVmdMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJEWVd4c1pXUWdZV1owWlhJZ2RYQmtZWFJsSUdseklHTnZiWEJzWlhSbExseHVJQ29nUUdacGJtRnNYRzRnS2lCQWNISnZkR1ZqZEdWa1hHNGdLaTljYmxKbFlXTjBRMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaUzVtYjNKalpWVndaR0YwWlNBOUlHWjFibU4wYVc5dUlDaGpZV3hzWW1GamF5a2dlMXh1SUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVWnZjbU5sVlhCa1lYUmxLSFJvYVhNcE8xeHVJQ0JwWmlBb1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVTmhiR3hpWVdOcktIUm9hWE1zSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaWEJ5WldOaGRHVmtJRUZRU1hNdUlGUm9aWE5sSUVGUVNYTWdkWE5sWkNCMGJ5QmxlR2x6ZENCdmJpQmpiR0Z6YzJsaklGSmxZV04wSUdOc1lYTnpaWE1nWW5WMElITnBibU5sWEc0Z0tpQjNaU0IzYjNWc1pDQnNhV3RsSUhSdklHUmxjSEpsWTJGMFpTQjBhR1Z0TENCM1pTZHlaU0J1YjNRZ1oyOXBibWNnZEc4Z2JXOTJaU0IwYUdWdElHOTJaWElnZEc4Z2RHaHBjMXh1SUNvZ2JXOWtaWEp1SUdKaGMyVWdZMnhoYzNNdUlFbHVjM1JsWVdRc0lIZGxJR1JsWm1sdVpTQmhJR2RsZEhSbGNpQjBhR0YwSUhkaGNtNXpJR2xtSUdsMEozTWdZV05qWlhOelpXUXVYRzRnS2k5Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJSFpoY2lCa1pYQnlaV05oZEdWa1FWQkpjeUE5SUh0Y2JpQWdJQ0JuWlhSRVQwMU9iMlJsT2lCYkoyZGxkRVJQVFU1dlpHVW5MQ0FuVlhObElGSmxZV04wUkU5TkxtWnBibVJFVDAxT2IyUmxLR052YlhCdmJtVnVkQ2tnYVc1emRHVmhaQzRuWFN4Y2JpQWdJQ0JwYzAxdmRXNTBaV1E2SUZzbmFYTk5iM1Z1ZEdWa0p5d2dKMGx1YzNSbFlXUXNJRzFoYTJVZ2MzVnlaU0IwYnlCamJHVmhiaUIxY0NCemRXSnpZM0pwY0hScGIyNXpJR0Z1WkNCd1pXNWthVzVuSUhKbGNYVmxjM1J6SUdsdUlDY2dLeUFuWTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5RZ2RHOGdjSEpsZG1WdWRDQnRaVzF2Y25rZ2JHVmhhM011SjEwc1hHNGdJQ0FnY21Wd2JHRmpaVkJ5YjNCek9pQmJKM0psY0d4aFkyVlFjbTl3Y3ljc0lDZEpibk4wWldGa0xDQmpZV3hzSUhKbGJtUmxjaUJoWjJGcGJpQmhkQ0IwYUdVZ2RHOXdJR3hsZG1Wc0xpZGRMRnh1SUNBZ0lISmxjR3hoWTJWVGRHRjBaVG9nV3lkeVpYQnNZV05sVTNSaGRHVW5MQ0FuVW1WbVlXTjBiM0lnZVc5MWNpQmpiMlJsSUhSdklIVnpaU0J6WlhSVGRHRjBaU0JwYm5OMFpXRmtJQ2h6WldVZ0p5QXJJQ2RvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2Wm1GalpXSnZiMnN2Y21WaFkzUXZhWE56ZFdWekx6TXlNellwTGlkZExGeHVJQ0FnSUhObGRGQnliM0J6T2lCYkozTmxkRkJ5YjNCekp5d2dKMGx1YzNSbFlXUXNJR05oYkd3Z2NtVnVaR1Z5SUdGbllXbHVJR0YwSUhSb1pTQjBiM0FnYkdWMlpXd3VKMTFjYmlBZ2ZUdGNiaUFnZG1GeUlHUmxabWx1WlVSbGNISmxZMkYwYVc5dVYyRnlibWx1WnlBOUlHWjFibU4wYVc5dUlDaHRaWFJvYjJST1lXMWxMQ0JwYm1adktTQjdYRzRnSUNBZ2FXWWdLR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVLU0I3WEc0Z0lDQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb1VtVmhZM1JEYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTENCdFpYUm9iMlJPWVcxbExDQjdYRzRnSUNBZ0lDQWdJR2RsZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBbkpYTW9MaTR1S1NCcGN5QmtaWEJ5WldOaGRHVmtJR2x1SUhCc1lXbHVJRXBoZG1GVFkzSnBjSFFnVW1WaFkzUWdZMnhoYzNObGN5NGdKWE1uTENCcGJtWnZXekJkTENCcGJtWnZXekZkS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lIMDdYRzRnSUdadmNpQW9kbUZ5SUdadVRtRnRaU0JwYmlCa1pYQnlaV05oZEdWa1FWQkpjeWtnZTF4dUlDQWdJR2xtSUNoa1pYQnlaV05oZEdWa1FWQkpjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaG1iazVoYldVcEtTQjdYRzRnSUNBZ0lDQmtaV1pwYm1WRVpYQnlaV05oZEdsdmJsZGhjbTVwYm1jb1ptNU9ZVzFsTENCa1pYQnlaV05oZEdWa1FWQkpjMXRtYms1aGJXVmRLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFTnZiWEJ2Ym1WdWREc2lYWDA9IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0RE9NSURPcGVyYXRpb25zJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xuXG4vKipcbiAqIEFic3RyYWN0cyBhd2F5IGFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNvbmNpbGVyIHRoYXQgcmVxdWlyZXMga25vd2xlZGdlIG9mXG4gKiB0aGUgYnJvd3NlciBjb250ZXh0LiBUT0RPOiBUaGVzZSBjYWxsZXJzIHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGF2b2lkIHRoZVxuICogbmVlZCBmb3IgdGhpcyBpbmplY3Rpb24uXG4gKi9cbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHtcblxuICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsXG5cbiAgcmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDogUmVhY3RET01JRE9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlELFxuXG4gIC8qKlxuICAgKiBJZiBhIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQgcmVxdWlyZXMgdGhhdCBzb21lIHJlc291cmNlcyBiZSBjbGVhbmVkIHVwLFxuICAgKiBzcGVjaWZ5IHRoaXMgaW4gdGhlIGluamVjdGVkIE1peGluLiBJbiB0aGUgRE9NLCB3ZSB3b3VsZCBsaWtlbHkgd2FudCB0b1xuICAgKiBwdXJnZSBhbnkgY2FjaGVkIG5vZGUgSUQgbG9va3Vwcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHVubW91bnRJREZyb21FbnZpcm9ubWVudDogZnVuY3Rpb24gKHJvb3ROb2RlSUQpIHtcbiAgICBSZWFjdE1vdW50LnB1cmdlSUQocm9vdE5vZGVJRCk7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGluamVjdGVkID0gZmFsc2U7XG5cbnZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0ge1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNsZWFudXAgaG9vay4gKHNlcnZlciB2cy5cbiAgICogYnJvd3NlciBldGMpLiBFeGFtcGxlOiBBIGJyb3dzZXIgc3lzdGVtIGNhY2hlcyBET00gbm9kZXMgYmFzZWQgb24gY29tcG9uZW50XG4gICAqIElEIGFuZCBtdXN0IHJlbW92ZSB0aGF0IGNhY2hlIGVudHJ5IHdoZW4gdGhpcyBpbnN0YW5jZSBpcyB1bm1vdW50ZWQuXG4gICAqL1xuICB1bm1vdW50SURGcm9tRW52aXJvbm1lbnQ6IG51bGwsXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBzd2FwcGluZyBvdXQgbW91bnQgaW1hZ2VzIGluIHRoZSBtaWRkbGUgb2ZcbiAgICogdGhlIHRyZWUuXG4gICAqL1xuICByZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEOiBudWxsLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3IgcHJvY2Vzc2luZyBhIHF1ZXVlIG9mIGNoaWxkIHVwZGF0ZXMuIFdpbGxcbiAgICogbGF0ZXIgbW92ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25lbnRzLlxuICAgKi9cbiAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogbnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICBpbmplY3RFbnZpcm9ubWVudDogZnVuY3Rpb24gKGVudmlyb25tZW50KSB7XG4gICAgICAhIWluamVjdGVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQudW5tb3VudElERnJvbUVudmlyb25tZW50ID0gZW52aXJvbm1lbnQudW5tb3VudElERnJvbUVudmlyb25tZW50O1xuICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEID0gZW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDtcbiAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyA9IGVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM7XG4gICAgICBpbmplY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVOdmJYQnZibVZ1ZEVWdWRtbHliMjV0Wlc1MExtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYm5aaGNpQnBibXBsWTNSbFpDQTlJR1poYkhObE8xeHVYRzUyWVhJZ1VtVmhZM1JEYjIxd2IyNWxiblJGYm5acGNtOXViV1Z1ZENBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1QzQjBhVzl1WVd4c2VTQnBibXBsWTNSaFlteGxJR1Z1ZG1seWIyNXRaVzUwSUdSbGNHVnVaR1Z1ZENCamJHVmhiblZ3SUdodmIyc3VJQ2h6WlhKMlpYSWdkbk11WEc0Z0lDQXFJR0p5YjNkelpYSWdaWFJqS1M0Z1JYaGhiWEJzWlRvZ1FTQmljbTkzYzJWeUlITjVjM1JsYlNCallXTm9aWE1nUkU5TklHNXZaR1Z6SUdKaGMyVmtJRzl1SUdOdmJYQnZibVZ1ZEZ4dUlDQWdLaUJKUkNCaGJtUWdiWFZ6ZENCeVpXMXZkbVVnZEdoaGRDQmpZV05vWlNCbGJuUnllU0IzYUdWdUlIUm9hWE1nYVc1emRHRnVZMlVnYVhNZ2RXNXRiM1Z1ZEdWa0xseHVJQ0FnS2k5Y2JpQWdkVzV0YjNWdWRFbEVSbkp2YlVWdWRtbHliMjV0Wlc1ME9pQnVkV3hzTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJQY0hScGIyNWhiR3g1SUdsdWFtVmpkR0ZpYkdVZ2FHOXZheUJtYjNJZ2MzZGhjSEJwYm1jZ2IzVjBJRzF2ZFc1MElHbHRZV2RsY3lCcGJpQjBhR1VnYldsa1pHeGxJRzltWEc0Z0lDQXFJSFJvWlNCMGNtVmxMbHh1SUNBZ0tpOWNiaUFnY21Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd1FubEpSRG9nYm5Wc2JDeGNibHh1SUNBdktpcGNiaUFnSUNvZ1QzQjBhVzl1WVd4c2VTQnBibXBsWTNSaFlteGxJR2h2YjJzZ1ptOXlJSEJ5YjJObGMzTnBibWNnWVNCeGRXVjFaU0J2WmlCamFHbHNaQ0IxY0dSaGRHVnpMaUJYYVd4c1hHNGdJQ0FxSUd4aGRHVnlJRzF2ZG1VZ2FXNTBieUJOZFd4MGFVTm9hV3hrUTI5dGNHOXVaVzUwY3k1Y2JpQWdJQ292WEc0Z0lIQnliMk5sYzNORGFHbHNaSEpsYmxWd1pHRjBaWE02SUc1MWJHd3NYRzVjYmlBZ2FXNXFaV04wYVc5dU9pQjdYRzRnSUNBZ2FXNXFaV04wUlc1MmFYSnZibTFsYm5RNklHWjFibU4wYVc5dUlDaGxiblpwY205dWJXVnVkQ2tnZTF4dUlDQWdJQ0FnSVNGcGJtcGxZM1JsWkNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWREb2dhVzVxWldOMFJXNTJhWEp2Ym0xbGJuUW9LU0JqWVc0Z2IyNXNlU0JpWlNCallXeHNaV1FnYjI1alpTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCU1pXRmpkRU52YlhCdmJtVnVkRVZ1ZG1seWIyNXRaVzUwTG5WdWJXOTFiblJKUkVaeWIyMUZiblpwY205dWJXVnVkQ0E5SUdWdWRtbHliMjV0Wlc1MExuVnViVzkxYm5SSlJFWnliMjFGYm5acGNtOXViV1Z1ZER0Y2JpQWdJQ0FnSUZKbFlXTjBRMjl0Y0c5dVpXNTBSVzUyYVhKdmJtMWxiblF1Y21Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd1FubEpSQ0E5SUdWdWRtbHliMjV0Wlc1MExuSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRUo1U1VRN1hHNGdJQ0FnSUNCU1pXRmpkRU52YlhCdmJtVnVkRVZ1ZG1seWIyNXRaVzUwTG5CeWIyTmxjM05EYUdsc1pISmxibFZ3WkdGMFpYTWdQU0JsYm5acGNtOXViV1Z1ZEM1d2NtOWpaWE56UTJocGJHUnlaVzVWY0dSaGRHVnpPMXh1SUNBZ0lDQWdhVzVxWldOMFpXUWdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlUXVldWUnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSB7XG4gIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG4gIGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpIHt9XG5TdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICByZXR1cm4gQ29tcG9uZW50KHRoaXMucHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTtcbn07XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiAtIGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGluc3RhbmNlIGlzIG5vdyByZXRhaW5lZC5cbiAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcbiAqICAgLSByZW5kZXJcbiAqICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdXG4gKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl1cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudERpZE1vdW50XVxuICogICAgIC0gY29tcG9uZW50RGlkTW91bnRcbiAqXG4gKiAgICAgICBVcGRhdGUgUGhhc2VzOlxuICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5IGNhbGxlZCBpZiBwYXJlbnQgdXBkYXRlZClcbiAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZVxuICogICAgICAgICAgIC0gcmVuZGVyXG4gKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFzZXNdXG4gKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlXG4gKlxuICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnRcbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxVbm1vdW50XVxuICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdXG4gKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxuICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBBbiBpbmNyZW1lbnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBUaGlzIGlzXG4gKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFjdFVwZGF0ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgbmV4dE1vdW50SUQgPSAxO1xuXG4vKipcbiAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVDb21wb25lbnQucHJvdG90eXBlfVxuICovXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnRNaXhpbiA9IHtcblxuICAvKipcbiAgICogQmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIGNvbXBvc2l0ZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRlUXVldWVcbiAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblxuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcblxuICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSAwO1xuICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVzIGFuZCBSZWFjdFVwZGF0ZVF1ZXVlLlxuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLl9tb3VudE9yZGVyID0gbmV4dE1vdW50SUQrKztcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gcm9vdElEO1xuXG4gICAgdmFyIHB1YmxpY1Byb3BzID0gdGhpcy5fcHJvY2Vzc1Byb3BzKHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzKTtcbiAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBwdWJsaWMgY2xhc3NcbiAgICB2YXIgaW5zdDtcbiAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXG4gICAgLy8gVGhpcyBpcyBhIHdheSB0byBkZXRlY3QgaWYgQ29tcG9uZW50IGlzIGEgc3RhdGVsZXNzIGFycm93IGZ1bmN0aW9uXG4gICAgLy8gY29tcG9uZW50LCB3aGljaCBpcyBub3QgbmV3YWJsZS4gSXQgbWlnaHQgbm90IGJlIDEwMCUgcmVsaWFibGUgYnV0IGlzXG4gICAgLy8gc29tZXRoaW5nIHdlIGNhbiBkbyB1bnRpbCB3ZSBzdGFydCBkZXRlY3RpbmcgdGhhdCBDb21wb25lbnQgZXh0ZW5kc1xuICAgIC8vIFJlYWN0LkNvbXBvbmVudC4gV2UgYWxyZWFkeSBhc3N1bWUgdGhhdCB0eXBlb2YgQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nLlxuICAgIHZhciBjYW5JbnN0YW50aWF0ZSA9ICgncHJvdG90eXBlJyBpbiBDb21wb25lbnQpO1xuXG4gICAgaWYgKGNhbkluc3RhbnRpYXRlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpbnN0ID0gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgUmVhY3RVcGRhdGVRdWV1ZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3QgPSBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCBSZWFjdFVwZGF0ZVF1ZXVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNhbkluc3RhbnRpYXRlIHx8IGluc3QgPT09IG51bGwgfHwgaW5zdCA9PT0gZmFsc2UgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGluc3QpKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0O1xuICAgICAgaW5zdCA9IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4gZWFybHlcbiAgICAgIC8vIHdhcm5pbmcgbm93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBpZiAoaW5zdC5yZW5kZXIgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLCByZXR1cm5lZCAnICsgJ251bGwvZmFsc2UgZnJvbSBhIHN0YXRlbGVzcyBjb21wb25lbnQsIG9yIHRyaWVkIHRvIHJlbmRlciBhbiAnICsgJ2VsZW1lbnQgd2hvc2UgdHlwZSBpcyBhIGZ1bmN0aW9uIHRoYXQgaXNuXFwndCBhIFJlYWN0IGNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2Ugc3VwcG9ydCBFUzYgaW5oZXJpdGluZyBmcm9tIFJlYWN0LkNvbXBvbmVudCwgdGhlIG1vZHVsZSBwYXR0ZXJuLFxuICAgICAgICAvLyBhbmQgc3RhdGVsZXNzIGNvbXBvbmVudHMsIGJ1dCBub3QgRVM2IGNsYXNzZXMgdGhhdCBkb24ndCBleHRlbmRcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgfHwgIWNhbkluc3RhbnRpYXRlIHx8ICEoaW5zdCBpbnN0YW5jZW9mIENvbXBvbmVudCksICclcyguLi4pOiBSZWFjdCBjb21wb25lbnQgY2xhc3NlcyBtdXN0IGV4dGVuZCBSZWFjdC5Db21wb25lbnQuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFzIGEgY29udmVuaWVuY2UgZm9yXG4gICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0cmFjdGlvbnMsIHdlIHNldCB0aGVtIHVwIGFmdGVyIHRoZSBmYWN0LlxuICAgIGluc3QucHJvcHMgPSBwdWJsaWNQcm9wcztcbiAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuICAgIGluc3QucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgIGluc3QudXBkYXRlciA9IFJlYWN0VXBkYXRlUXVldWU7XG5cbiAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7XG5cbiAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFNpbmNlIHBsYWluIEpTIGNsYXNzZXMgYXJlIGRlZmluZWQgd2l0aG91dCBhbnkgc3BlY2lhbCBpbml0aWFsaXphdGlvblxuICAgICAgLy8gbG9naWMsIHdlIGNhbiBub3QgY2F0Y2ggY29tbW9uIGVycm9ycyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvXG4gICAgICAvLyBjYXRjaCB0aGVtIGhlcmUsIGF0IGluaXRpYWxpemF0aW9uIHRpbWUsIGluc3RlYWQuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXRJbml0aWFsU3RhdGUgfHwgaW5zdC5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBtZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJvcHMgfHwgaW5zdC5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LnByb3BUeXBlcywgJ3Byb3BUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5lIHByb3BUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudERpZFVubW91bnQgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50RGlkVW5tb3VudCgpLiBCdXQgdGhlcmUgaXMgbm8gc3VjaCBsaWZlY3ljbGUgbWV0aG9kLiAnICsgJ0RpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsVW5tb3VudCgpPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbnN0LnN0YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICB9XG4gICAgISh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50KSB7XG4gICAgICBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgLy8gV2hlbiBtb3VudGluZywgY2FsbHMgdG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxsIHNldFxuICAgICAgLy8gYHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlYCB3aXRob3V0IHRyaWdnZXJpbmcgYSByZS1yZW5kZXIuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtcbiAgICAgICAgaW5zdC5zdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaW5zdC5wcm9wcywgaW5zdC5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBub3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50LCB3ZSBub3cgcmVuZGVyXG4gICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVtZW50KTtcblxuICAgIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQsIHJvb3RJRCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuICAgIGlmIChpbnN0LmNvbXBvbmVudERpZE1vdW50KSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkTW91bnQsIGluc3QpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVudGAuXG4gICAqXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVubW91bnQpIHtcbiAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcbiAgICB9XG5cbiAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCk7XG4gICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblxuICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzXG4gICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVudCBpcyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcbiAgICAvLyBpdCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSByZXNldC5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIC8vIFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5IG5lZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMgbm9cbiAgICAvLyBsb25nZXIgYWNjZXNzaWJsZS5cbiAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuXG4gICAgLy8gRGVsZXRlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJvcGVybHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG4gICAgLy8gbGVha3MgYSByZWZlcmVuY2UgdG8gdGhlIHB1YmxpYyBpbnN0YW5jZS5cbiAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0KTtcblxuICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMgZXZlbiBhZnRlciB0aGV5J3ZlIGJlZW5cbiAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRsZXJzKS5cbiAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LnN0YXRlID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2BcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IG51bGw7XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGNvbnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7XG4gICAgaWYgKCFjb250ZXh0VHlwZXMpIHtcbiAgICAgIHJldHVybiBlbXB0eU9iamVjdDtcbiAgICB9XG4gICAgbWFza2VkQ29udGV4dCA9IHt9O1xuICAgIGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRUeXBlcykge1xuICAgICAgbWFza2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBgY29udGV4dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFyZSB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRleHQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChDb21wb25lbnQuY29udGV4dFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJvcFR5cGVzKENvbXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMuY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHRcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChjdXJyZW50Q29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0ICYmIGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG4gICAgaWYgKGNoaWxkQ29udGV4dCkge1xuICAgICAgISh0eXBlb2YgQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byAnICsgJ3VzZSBnZXRDaGlsZENvbnRleHQoKS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0aGlzLl9jaGVja1Byb3BUeXBlcyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jaGlsZENvbnRleHQpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHtcbiAgICAgICAgIShuYW1lIGluIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVzXCIgaXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFzc2lnbih7fSwgY3VycmVudENvbnRleHQsIGNoaWxkQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50Q29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogUHJvY2Vzc2VzIHByb3BzIGJ5IHNldHRpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuc3BlY2lmaWVkIHByb3BzIGFuZFxuICAgKiBhc3NlcnRpbmcgdGhhdCB0aGUgcHJvcHMgYXJlIHZhbGlkLiBEb2VzIG5vdCBtdXRhdGUgaXRzIGFyZ3VtZW50OyByZXR1cm5zXG4gICAqIGEgbmV3IHByb3BzIG9iamVjdCB3aXRoIGRlZmF1bHRzIG1lcmdlZCBpbi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1Byb3BzXG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzUHJvcHM6IGZ1bmN0aW9uIChuZXdQcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChDb21wb25lbnQucHJvcFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJvcFR5cGVzKENvbXBvbmVudC5wcm9wVHlwZXMsIG5ld1Byb3BzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLnByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3UHJvcHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFzc2VydCB0aGF0IHRoZSBwcm9wcyBhcmUgdmFsaWRcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BUeXBlcyBNYXAgb2YgcHJvcCBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2NoZWNrUHJvcFR5cGVzOiBmdW5jdGlvbiAocHJvcFR5cGVzLCBwcm9wcywgbG9jYXRpb24pIHtcbiAgICAvLyBUT0RPOiBTdG9wIHZhbGlkYXRpbmcgcHJvcCB0eXBlcyBoZXJlIGFuZCBvbmx5IHVzZSB0aGUgZWxlbWVudFxuICAgIC8vIHZhbGlkYXRpb24uXG4gICAgdmFyIGNvbXBvbmVudE5hbWUgPSB0aGlzLmdldE5hbWUoKTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgISh0eXBlb2YgcHJvcFR5cGVzW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgJyArICdmcm9tIFJlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGV4dGVuZCB0aGlzIGxvZ2ljIGZvciBzaW1pbGFyIGVycm9ycyBpblxuICAgICAgICAgIC8vIHRvcC1sZXZlbCByZW5kZXIgY2FsbHMsIHNvIEknbSBhYnN0cmFjdGluZyBpdCBhd2F5IGludG9cbiAgICAgICAgICAvLyBhIGZ1bmN0aW9uIHRvIG1pbmltaXplIHJlZmFjdG9yaW5nIGluIHRoZSBmdXR1cmVcbiAgICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0odGhpcyk7XG5cbiAgICAgICAgICBpZiAobG9jYXRpb24gPT09IFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCkge1xuICAgICAgICAgICAgLy8gUHJlZmFjZSBnaXZlcyB1cyBzb21ldGhpbmcgdG8gYmxhY2tsaXN0IGluIHdhcm5pbmcgbW9kdWxlXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIENvbnRleHQgVHlwZXM6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIG5leHRDb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtcblxuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9wZW5kaW5nU3RhdGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYFxuICAgKiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHtcbiAgICBpZiAodGhpcy5fcGVuZGluZ0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQgfHwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9jb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0aGlzLl9jb250ZXh0KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGFuZFxuICAgKiBzaG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9kcyBhcmUgY2FsbGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0XG4gICAqIHNraXBwZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5kIHRoZSBET01cbiAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG4gICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2UGFyZW50RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnRcbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICB2YXIgbmV4dENvbnRleHQgPSB0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0ID8gaW5zdC5jb250ZXh0IDogdGhpcy5fcHJvY2Vzc0NvbnRleHQobmV4dFVubWFza2VkQ29udGV4dCk7XG4gICAgdmFyIG5leHRQcm9wcztcblxuICAgIC8vIERpc3Rpbmd1aXNoIGJldHdlZW4gYSBwcm9wcyB1cGRhdGUgdmVyc3VzIGEgc2ltcGxlIHN0YXRlIHVwZGF0ZVxuICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCA9PT0gbmV4dFBhcmVudEVsZW1lbnQpIHtcbiAgICAgIC8vIFNraXAgY2hlY2tpbmcgcHJvcCB0eXBlcyBhZ2FpbiAtLSB3ZSBkb24ndCByZWFkIGluc3QucHJvcHMgdG8gYXZvaWRcbiAgICAgIC8vIHdhcm5pbmcgZm9yIERPTSBjb21wb25lbnQgcHJvcHMgaW4gdGhpcyB1cGdyYWRlXG4gICAgICBuZXh0UHJvcHMgPSBuZXh0UGFyZW50RWxlbWVudC5wcm9wcztcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFByb3BzID0gdGhpcy5fcHJvY2Vzc1Byb3BzKG5leHRQYXJlbnRFbGVtZW50LnByb3BzKTtcbiAgICAgIC8vIEFuIHVwZGF0ZSBoZXJlIHdpbGwgc2NoZWR1bGUgYW4gdXBkYXRlIGJ1dCBpbW1lZGlhdGVseSBzZXRcbiAgICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVzIGdldHNcbiAgICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgbmV4dCBiYXRjaC5cblxuICAgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcykge1xuICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG5cbiAgICB2YXIgc2hvdWxkVXBkYXRlID0gdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlIHx8ICFpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSB8fCBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBzaG91bGRVcGRhdGUgIT09ICd1bmRlZmluZWQnLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJldHVybmVkIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1cmUgdG8gcmV0dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgICAvLyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAuXG4gICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBkZXRlcm1pbmVkIHRoYXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0aWxsIHdhbnRcbiAgICAgIC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRoZSB1cGRhdGUuXG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRQYXJlbnRFbGVtZW50O1xuICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4gICAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuICAgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBfcHJvY2Vzc1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZTtcbiAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcblxuICAgIGlmICghcXVldWUpIHtcbiAgICAgIHJldHVybiBpbnN0LnN0YXRlO1xuICAgIH1cblxuICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHF1ZXVlWzBdO1xuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUgPSBhc3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVswXSA6IGluc3Quc3RhdGUpO1xuICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcnRpYWwgPSBxdWV1ZVtpXTtcbiAgICAgIGFzc2lnbihuZXh0U3RhdGUsIHR5cGVvZiBwYXJ0aWFsID09PSAnZnVuY3Rpb24nID8gcGFydGlhbC5jYWxsKGluc3QsIG5leHRTdGF0ZSwgcHJvcHMsIGNvbnRleHQpIDogcGFydGlhbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfSxcblxuICAvKipcbiAgICogTWVyZ2VzIG5ldyBwcm9wcyBhbmQgc3RhdGUsIG5vdGlmaWVzIGRlbGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZFxuICAgKiBwZXJmb3JtcyB1cGRhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBOZXh0IGVsZW1lbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlIE5leHQgb2JqZWN0IHRvIHNldCBhcyBzdGF0ZS5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dCBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/b2JqZWN0fSB1bm1hc2tlZENvbnRleHRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4dCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBkYXRlID0gQm9vbGVhbihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZSk7XG4gICAgdmFyIHByZXZQcm9wcztcbiAgICB2YXIgcHJldlN0YXRlO1xuICAgIHZhciBwcmV2Q29udGV4dDtcbiAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7XG4gICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzO1xuICAgICAgcHJldlN0YXRlID0gaW5zdC5zdGF0ZTtcbiAgICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250ZXh0O1xuICAgIH1cblxuICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHtcbiAgICAgIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDtcbiAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7XG5cbiAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KTtcblxuICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB2YXIgcHJldlJlbmRlcmVkRWxlbWVudCA9IHByZXZDb21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIG5leHRSZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcbiAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVudCkpIHtcbiAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVzZSB0d28gSURzIGFyZSBhY3R1YWxseSB0aGUgc2FtZSEgQnV0IG5vdGhpbmcgc2hvdWxkIHJlbHkgb24gdGhhdC5cbiAgICAgIHZhciB0aGlzSUQgPSB0aGlzLl9yb290Tm9kZUlEO1xuICAgICAgdmFyIHByZXZDb21wb25lbnRJRCA9IHByZXZDb21wb25lbnRJbnN0YW5jZS5fcm9vdE5vZGVJRDtcbiAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG5cbiAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50KTtcbiAgICAgIHZhciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LCB0aGlzSUQsIHRyYW5zYWN0aW9uLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTtcbiAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQocHJldkNvbXBvbmVudElELCBuZXh0TWFya3VwKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEOiBmdW5jdGlvbiAocHJldkNvbXBvbmVudElELCBuZXh0TWFya3VwKSB7XG4gICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEKHByZXZDb21wb25lbnRJRCwgbmV4dE1hcmt1cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciByZW5kZXJlZENvbXBvbmVudCA9IGluc3QucmVuZGVyKCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgaWYgKHR5cGVvZiByZW5kZXJlZENvbXBvbmVudCA9PT0gJ3VuZGVmaW5lZCcgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1bmN0aW9uKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG4gICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgIHJlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbmRlcmVkQ29tcG9uZW50O1xuICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuICAgIHRyeSB7XG4gICAgICByZW5kZXJlZENvbXBvbmVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgIShcbiAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcbiAgICByZW5kZXJlZENvbXBvbmVudCA9PT0gbnVsbCB8fCByZW5kZXJlZENvbXBvbmVudCA9PT0gZmFsc2UgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHJlbmRlcmVkQ29tcG9uZW50KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMucmVuZGVyKCk6IEEgdmFsaWQgUmVhY3RDb21wb25lbnQgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlICcgKyAncmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJlZnMgb2JqZWN0IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgUmVmZXJlbmNlIG5hbWUuXG4gICAqIEBwYXJhbSB7Y29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLlxuICAgKiBAZmluYWxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGF0dGFjaFJlZjogZnVuY3Rpb24gKHJlZiwgY29tcG9uZW50KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgIShpbnN0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudCAmJiBjb21wb25lbnQuZ2V0TmFtZSA/IGNvbXBvbmVudC5nZXROYW1lKCkgOiAnYSBjb21wb25lbnQnO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHVibGljQ29tcG9uZW50SW5zdGFuY2UgIT0gbnVsbCwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBiZSBnaXZlbiByZWZzICcgKyAnKFNlZSByZWYgXCIlc1wiIGluICVzIGNyZWF0ZWQgYnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFjY2VzcyB0aGlzIHJlZiB3aWxsIGZhaWwuJywgcmVmLCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5hbWUoKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3QucmVmcyA9IHt9IDogaW5zdC5yZWZzO1xuICAgIHJlZnNbcmVmXSA9IHB1YmxpY0NvbXBvbmVudEluc3RhbmNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyBhIHJlZmVyZW5jZSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGV0YWNoUmVmOiBmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmcztcbiAgICBkZWxldGUgcmVmc1tyZWZdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBpdFxuICAgKiBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvciBudWxsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldE5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLm5hbWUgfHwgbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3aGF0XG4gICAqIGlzIGV4cG9zZWQgYnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3RhdGVsZXNzXG4gICAqIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgaWYgKGluc3QgaW5zdGFuY2VvZiBTdGF0ZWxlc3NDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdDtcbiAgfSxcblxuICAvLyBTdHViXG4gIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBudWxsXG5cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhSZWFjdENvbXBvc2l0ZUNvbXBvbmVudE1peGluLCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCB7XG4gIG1vdW50Q29tcG9uZW50OiAnbW91bnRDb21wb25lbnQnLFxuICB1cGRhdGVDb21wb25lbnQ6ICd1cGRhdGVDb21wb25lbnQnLFxuICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiAnX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCdcbn0pO1xuXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7XG5cbiAgTWl4aW46IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50TWl4aW5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRGeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMjl0Y0c5dVpXNTBSVzUyYVhKdmJtMWxiblFuS1R0Y2JuWmhjaUJTWldGamRFTjFjbkpsYm5SUGQyNWxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEZFhKeVpXNTBUM2R1WlhJbktUdGNiblpoY2lCU1pXRmpkRVZzWlcxbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSV3hsYldWdWRDY3BPMXh1ZG1GeUlGSmxZV04wU1c1emRHRnVZMlZOWVhBZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFNXNXpkR0Z1WTJWTllYQW5LVHRjYm5aaGNpQlNaV0ZqZEZCbGNtWWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVR1Z5WmljcE8xeHVkbUZ5SUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJuTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJuTW5LVHRjYm5aaGNpQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE1uS1R0Y2JuWmhjaUJTWldGamRGSmxZMjl1WTJsc1pYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVbVZqYjI1amFXeGxjaWNwTzF4dWRtRnlJRkpsWVdOMFZYQmtZWFJsVVhWbGRXVWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBWWEJrWVhSbFVYVmxkV1VuS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJR1Z0Y0hSNVQySnFaV04wSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlpXMXdkSGxQWW1wbFkzUW5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JuWmhjaUJ6YUc5MWJHUlZjR1JoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmMyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5RbktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzVtZFc1amRHbHZiaUJuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NCN1hHNGdJSFpoY2lCdmQyNWxjaUE5SUdOdmJYQnZibVZ1ZEM1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1WDI5M2JtVnlJSHg4SUc1MWJHdzdYRzRnSUdsbUlDaHZkMjVsY2lrZ2UxeHVJQ0FnSUhaaGNpQnVZVzFsSUQwZ2IzZHVaWEl1WjJWMFRtRnRaU2dwTzF4dUlDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeUJEYUdWamF5QjBhR1VnY21WdVpHVnlJRzFsZEdodlpDQnZaaUJnSnlBcklHNWhiV1VnS3lBbllDNG5PMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z0p5YzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlGTjBZWFJsYkdWemMwTnZiWEJ2Ym1WdWRDaERiMjF3YjI1bGJuUXBJSHQ5WEc1VGRHRjBaV3hsYzNORGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbExuSmxibVJsY2lBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ2RtRnlJRU52YlhCdmJtVnVkQ0E5SUZKbFlXTjBTVzV6ZEdGdVkyVk5ZWEF1WjJWMEtIUm9hWE1wTGw5amRYSnlaVzUwUld4bGJXVnVkQzUwZVhCbE8xeHVJQ0J5WlhSMWNtNGdRMjl0Y0c5dVpXNTBLSFJvYVhNdWNISnZjSE1zSUhSb2FYTXVZMjl1ZEdWNGRDd2dkR2hwY3k1MWNHUmhkR1Z5S1R0Y2JuMDdYRzVjYmk4cUtseHVJQ29nTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0SUZSb1pTQk1hV1psTFVONVkyeGxJRzltSUdFZ1EyOXRjRzl6YVhSbElFTnZiWEJ2Ym1WdWRDQXRMUzB0TFMwdExTMHRMUzB0TFMwdExTMWNiaUFxWEc0Z0tpQXRJR052Ym5OMGNuVmpkRzl5T2lCSmJtbDBhV0ZzYVhwaGRHbHZiaUJ2WmlCemRHRjBaUzRnVkdobElHbHVjM1JoYm1ObElHbHpJRzV2ZHlCeVpYUmhhVzVsWkM1Y2JpQXFJQ0FnTFNCamIyMXdiMjVsYm5SWGFXeHNUVzkxYm5SY2JpQXFJQ0FnTFNCeVpXNWtaWEpjYmlBcUlDQWdMU0JiWTJocGJHUnlaVzRuY3lCamIyNXpkSEoxWTNSdmNuTmRYRzRnS2lBZ0lDQWdMU0JiWTJocGJHUnlaVzRuY3lCamIyMXdiMjVsYm5SWGFXeHNUVzkxYm5RZ1lXNWtJSEpsYm1SbGNsMWNiaUFxSUNBZ0lDQXRJRnRqYUdsc1pISmxiaWR6SUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwWFZ4dUlDb2dJQ0FnSUMwZ1kyOXRjRzl1Wlc1MFJHbGtUVzkxYm5SY2JpQXFYRzRnS2lBZ0lDQWdJQ0JWY0dSaGRHVWdVR2hoYzJWek9seHVJQ29nSUNBZ0lDQWdMU0JqYjIxd2IyNWxiblJYYVd4c1VtVmpaV2wyWlZCeWIzQnpJQ2h2Ym14NUlHTmhiR3hsWkNCcFppQndZWEpsYm5RZ2RYQmtZWFJsWkNsY2JpQXFJQ0FnSUNBZ0lDMGdjMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsWEc0Z0tpQWdJQ0FnSUNBZ0lDMGdZMjl0Y0c5dVpXNTBWMmxzYkZWd1pHRjBaVnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDMGdjbVZ1WkdWeVhHNGdLaUFnSUNBZ0lDQWdJQ0FnTFNCYlkyaHBiR1J5Wlc0bmN5QmpiMjV6ZEhKMVkzUnZjbk1nYjNJZ2NtVmpaV2wyWlNCd2NtOXdjeUJ3YUdGelpYTmRYRzRnS2lBZ0lDQWdJQ0FnSUMwZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbFhHNGdLbHh1SUNvZ0lDQWdJQzBnWTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5SY2JpQXFJQ0FnSUNBdElGdGphR2xzWkhKbGJpZHpJR052YlhCdmJtVnVkRmRwYkd4VmJtMXZkVzUwWFZ4dUlDb2dJQ0F0SUZ0amFHbHNaSEpsYmlCa1pYTjBjbTk1WldSZFhHNGdLaUF0SUNoa1pYTjBjbTk1WldRcE9pQlVhR1VnYVc1emRHRnVZMlVnYVhNZ2JtOTNJR0pzWVc1ckxDQnlaV3hsWVhObFpDQmllU0JTWldGamRDQmhibVFnY21WaFpIa2dabTl5SUVkRExseHVJQ3BjYmlBcUlDMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0WEc0Z0tpOWNibHh1THlvcVhHNGdLaUJCYmlCcGJtTnlaVzFsYm5ScGJtY2dTVVFnWVhOemFXZHVaV1FnZEc4Z1pXRmphQ0JqYjIxd2IyNWxiblFnZDJobGJpQnBkQ0JwY3lCdGIzVnVkR1ZrTGlCVWFHbHpJR2x6WEc0Z0tpQjFjMlZrSUhSdklHVnVabTl5WTJVZ2RHaGxJRzl5WkdWeUlHbHVJSGRvYVdOb0lHQlNaV0ZqZEZWd1pHRjBaWE5nSUhWd1pHRjBaWE1nWkdseWRIa2dZMjl0Y0c5dVpXNTBjeTVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNTJZWElnYm1WNGRFMXZkVzUwU1VRZ1BTQXhPMXh1WEc0dktpcGNiaUFxSUVCc1pXNWtjeUI3VW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxmVnh1SUNvdlhHNTJZWElnVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUk5hWGhwYmlBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1FtRnpaU0JqYjI1emRISjFZM1J2Y2lCbWIzSWdZV3hzSUdOdmJYQnZjMmwwWlNCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCbGJHVnRaVzUwWEc0Z0lDQXFJRUJtYVc1aGJGeHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHTnZibk4wY25WamREb2dablZ1WTNScGIyNGdLR1ZzWlcxbGJuUXBJSHRjYmlBZ0lDQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ0E5SUdWc1pXMWxiblE3WEc0Z0lDQWdkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZhVzV6ZEdGdVkyVWdQU0J1ZFd4c08xeHVYRzRnSUNBZ0x5OGdVMlZsSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1ZjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuUld4bGJXVnVkQ0E5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRTWlhCc1lXTmxVM1JoZEdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blJtOXlZMlZWY0dSaGRHVWdQU0JtWVd4elpUdGNibHh1SUNBZ0lIUm9hWE11WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwSUQwZ2JuVnNiRHRjYmx4dUlDQWdJSFJvYVhNdVgyTnZiblJsZUhRZ1BTQnVkV3hzTzF4dUlDQWdJSFJvYVhNdVgyMXZkVzUwVDNKa1pYSWdQU0F3TzF4dUlDQWdJSFJvYVhNdVgzUnZjRXhsZG1Wc1YzSmhjSEJsY2lBOUlHNTFiR3c3WEc1Y2JpQWdJQ0F2THlCVFpXVWdVbVZoWTNSVmNHUmhkR1Z6SUdGdVpDQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbExseHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTWdQU0J1ZFd4c08xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsY3lCMGFHVWdZMjl0Y0c5dVpXNTBMQ0J5Wlc1a1pYSnpJRzFoY210MWNDd2dZVzVrSUhKbFoybHpkR1Z5Y3lCbGRtVnVkQ0JzYVhOMFpXNWxjbk11WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCeWIyOTBTVVFnUkU5TklFbEVJRzltSUhSb1pTQnliMjkwSUc1dlpHVXVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym54U1pXRmpkRk5sY25abGNsSmxibVJsY21sdVoxUnlZVzV6WVdOMGFXOXVmU0IwY21GdWMyRmpkR2x2Ymx4dUlDQWdLaUJBY21WMGRYSnVJSHMvYzNSeWFXNW5mU0JTWlc1a1pYSmxaQ0J0WVhKcmRYQWdkRzhnWW1VZ2FXNXpaWEowWldRZ2FXNTBieUIwYUdVZ1JFOU5MbHh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCdGIzVnVkRU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0hKdmIzUkpSQ3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcElIdGNiaUFnSUNCMGFHbHpMbDlqYjI1MFpYaDBJRDBnWTI5dWRHVjRkRHRjYmlBZ0lDQjBhR2x6TGw5dGIzVnVkRTl5WkdWeUlEMGdibVY0ZEUxdmRXNTBTVVFyS3p0Y2JpQWdJQ0IwYUdsekxsOXliMjkwVG05a1pVbEVJRDBnY205dmRFbEVPMXh1WEc0Z0lDQWdkbUZ5SUhCMVlteHBZMUJ5YjNCeklEMGdkR2hwY3k1ZmNISnZZMlZ6YzFCeWIzQnpLSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpLVHRjYmlBZ0lDQjJZWElnY0hWaWJHbGpRMjl1ZEdWNGRDQTlJSFJvYVhNdVgzQnliMk5sYzNORGIyNTBaWGgwS0dOdmJuUmxlSFFwTzF4dVhHNGdJQ0FnZG1GeUlFTnZiWEJ2Ym1WdWRDQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5SNWNHVTdYRzVjYmlBZ0lDQXZMeUJKYm1sMGFXRnNhWHBsSUhSb1pTQndkV0pzYVdNZ1kyeGhjM05jYmlBZ0lDQjJZWElnYVc1emREdGNiaUFnSUNCMllYSWdjbVZ1WkdWeVpXUkZiR1Z0Wlc1ME8xeHVYRzRnSUNBZ0x5OGdWR2hwY3lCcGN5QmhJSGRoZVNCMGJ5QmtaWFJsWTNRZ2FXWWdRMjl0Y0c5dVpXNTBJR2x6SUdFZ2MzUmhkR1ZzWlhOeklHRnljbTkzSUdaMWJtTjBhVzl1WEc0Z0lDQWdMeThnWTI5dGNHOXVaVzUwTENCM2FHbGphQ0JwY3lCdWIzUWdibVYzWVdKc1pTNGdTWFFnYldsbmFIUWdibTkwSUdKbElERXdNQ1VnY21Wc2FXRmliR1VnWW5WMElHbHpYRzRnSUNBZ0x5OGdjMjl0WlhSb2FXNW5JSGRsSUdOaGJpQmtieUIxYm5ScGJDQjNaU0J6ZEdGeWRDQmtaWFJsWTNScGJtY2dkR2hoZENCRGIyMXdiMjVsYm5RZ1pYaDBaVzVrYzF4dUlDQWdJQzh2SUZKbFlXTjBMa052YlhCdmJtVnVkQzRnVjJVZ1lXeHlaV0ZrZVNCaGMzTjFiV1VnZEdoaGRDQjBlWEJsYjJZZ1EyOXRjRzl1Wlc1MElEMDlQU0FuWm5WdVkzUnBiMjRuTGx4dUlDQWdJSFpoY2lCallXNUpibk4wWVc1MGFXRjBaU0E5SUNnbmNISnZkRzkwZVhCbEp5QnBiaUJEYjIxd2IyNWxiblFwTzF4dVhHNGdJQ0FnYVdZZ0tHTmhia2x1YzNSaGJuUnBZWFJsS1NCN1hHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwZ2RHaHBjenRjYmlBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0JwYm5OMElEMGdibVYzSUVOdmJYQnZibVZ1ZENod2RXSnNhV05RY205d2N5d2djSFZpYkdsalEyOXVkR1Y0ZEN3Z1VtVmhZM1JWY0dSaGRHVlJkV1YxWlNrN1hHNGdJQ0FnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJQ0FnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR2x1YzNRZ1BTQnVaWGNnUTI5dGNHOXVaVzUwS0hCMVlteHBZMUJ5YjNCekxDQndkV0pzYVdORGIyNTBaWGgwTENCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lXTmhia2x1YzNSaGJuUnBZWFJsSUh4OElHbHVjM1FnUFQwOUlHNTFiR3dnZkh3Z2FXNXpkQ0E5UFQwZ1ptRnNjMlVnZkh3Z1VtVmhZM1JGYkdWdFpXNTBMbWx6Vm1Gc2FXUkZiR1Z0Wlc1MEtHbHVjM1FwS1NCN1hHNGdJQ0FnSUNCeVpXNWtaWEpsWkVWc1pXMWxiblFnUFNCcGJuTjBPMXh1SUNBZ0lDQWdhVzV6ZENBOUlHNWxkeUJUZEdGMFpXeGxjM05EYjIxd2IyNWxiblFvUTI5dGNHOXVaVzUwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdMeThnVkdocGN5QjNhV3hzSUhSb2NtOTNJR3hoZEdWeUlHbHVJRjl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUXNJR0oxZENCaFpHUWdZVzRnWldGeWJIbGNiaUFnSUNBZ0lDOHZJSGRoY201cGJtY2dibTkzSUhSdklHaGxiSEFnWkdWaWRXZG5hVzVuWEc0Z0lDQWdJQ0JwWmlBb2FXNXpkQzV5Wlc1a1pYSWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSnlWektDNHVMaWs2SUU1dklHQnlaVzVrWlhKZ0lHMWxkR2h2WkNCbWIzVnVaQ0J2YmlCMGFHVWdjbVYwZFhKdVpXUWdZMjl0Y0c5dVpXNTBJQ2NnS3lBbmFXNXpkR0Z1WTJVNklIbHZkU0J0WVhrZ2FHRjJaU0JtYjNKbmIzUjBaVzRnZEc4Z1pHVm1hVzVsSUdCeVpXNWtaWEpnTENCeVpYUjFjbTVsWkNBbklDc2dKMjUxYkd3dlptRnNjMlVnWm5KdmJTQmhJSE4wWVhSbGJHVnpjeUJqYjIxd2IyNWxiblFzSUc5eUlIUnlhV1ZrSUhSdklISmxibVJsY2lCaGJpQW5JQ3NnSjJWc1pXMWxiblFnZDJodmMyVWdkSGx3WlNCcGN5QmhJR1oxYm1OMGFXOXVJSFJvWVhRZ2FYTnVYRnduZENCaElGSmxZV04wSUdOdmJYQnZibVZ1ZEM0bkxDQkRiMjF3YjI1bGJuUXVaR2x6Y0d4aGVVNWhiV1VnZkh3Z1EyOXRjRzl1Wlc1MExtNWhiV1VnZkh3Z0owTnZiWEJ2Ym1WdWRDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1YyVWdjM1Z3Y0c5eWRDQkZVellnYVc1b1pYSnBkR2x1WnlCbWNtOXRJRkpsWVdOMExrTnZiWEJ2Ym1WdWRDd2dkR2hsSUcxdlpIVnNaU0J3WVhSMFpYSnVMRnh1SUNBZ0lDQWdJQ0F2THlCaGJtUWdjM1JoZEdWc1pYTnpJR052YlhCdmJtVnVkSE1zSUdKMWRDQnViM1FnUlZNMklHTnNZWE56WlhNZ2RHaGhkQ0JrYjI0bmRDQmxlSFJsYm1SY2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29RMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaU0FtSmlCRGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbExtbHpVbVZoWTNSRGIyMXdiMjVsYm5RZ2ZId2dJV05oYmtsdWMzUmhiblJwWVhSbElIeDhJQ0VvYVc1emRDQnBibk4wWVc1alpXOW1JRU52YlhCdmJtVnVkQ2tzSUNjbGN5Z3VMaTRwT2lCU1pXRmpkQ0JqYjIxd2IyNWxiblFnWTJ4aGMzTmxjeUJ0ZFhOMElHVjRkR1Z1WkNCU1pXRmpkQzVEYjIxd2IyNWxiblF1Snl3Z1EyOXRjRzl1Wlc1MExtUnBjM0JzWVhsT1lXMWxJSHg4SUVOdmJYQnZibVZ1ZEM1dVlXMWxJSHg4SUNkRGIyMXdiMjVsYm5RbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJVYUdWelpTQnphRzkxYkdRZ1ltVWdjMlYwSUhWd0lHbHVJSFJvWlNCamIyNXpkSEoxWTNSdmNpd2dZblYwSUdGeklHRWdZMjl1ZG1WdWFXVnVZMlVnWm05eVhHNGdJQ0FnTHk4Z2MybHRjR3hsY2lCamJHRnpjeUJoWW5OMGNtRmpkR2x2Ym5Nc0lIZGxJSE5sZENCMGFHVnRJSFZ3SUdGbWRHVnlJSFJvWlNCbVlXTjBMbHh1SUNBZ0lHbHVjM1F1Y0hKdmNITWdQU0J3ZFdKc2FXTlFjbTl3Y3p0Y2JpQWdJQ0JwYm5OMExtTnZiblJsZUhRZ1BTQndkV0pzYVdORGIyNTBaWGgwTzF4dUlDQWdJR2x1YzNRdWNtVm1jeUE5SUdWdGNIUjVUMkpxWldOME8xeHVJQ0FnSUdsdWMzUXVkWEJrWVhSbGNpQTlJRkpsWVdOMFZYQmtZWFJsVVhWbGRXVTdYRzVjYmlBZ0lDQjBhR2x6TGw5cGJuTjBZVzVqWlNBOUlHbHVjM1E3WEc1Y2JpQWdJQ0F2THlCVGRHOXlaU0JoSUhKbFptVnlaVzVqWlNCbWNtOXRJSFJvWlNCcGJuTjBZVzVqWlNCaVlXTnJJSFJ2SUhSb1pTQnBiblJsY201aGJDQnlaWEJ5WlhObGJuUmhkR2x2Ymx4dUlDQWdJRkpsWVdOMFNXNXpkR0Z1WTJWTllYQXVjMlYwS0dsdWMzUXNJSFJvYVhNcE8xeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUM4dklGTnBibU5sSUhCc1lXbHVJRXBUSUdOc1lYTnpaWE1nWVhKbElHUmxabWx1WldRZ2QybDBhRzkxZENCaGJua2djM0JsWTJsaGJDQnBibWwwYVdGc2FYcGhkR2x2Ymx4dUlDQWdJQ0FnTHk4Z2JHOW5hV01zSUhkbElHTmhiaUJ1YjNRZ1kyRjBZMmdnWTI5dGJXOXVJR1Z5Y205eWN5QmxZWEpzZVM0Z1ZHaGxjbVZtYjNKbExDQjNaU0JvWVhabElIUnZYRzRnSUNBZ0lDQXZMeUJqWVhSamFDQjBhR1Z0SUdobGNtVXNJR0YwSUdsdWFYUnBZV3hwZW1GMGFXOXVJSFJwYldVc0lHbHVjM1JsWVdRdVhHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5Z2hhVzV6ZEM1blpYUkpibWwwYVdGc1UzUmhkR1VnZkh3Z2FXNXpkQzVuWlhSSmJtbDBhV0ZzVTNSaGRHVXVhWE5TWldGamRFTnNZWE56UVhCd2NtOTJaV1FzSUNkblpYUkpibWwwYVdGc1UzUmhkR1VnZDJGeklHUmxabWx1WldRZ2IyNGdKWE1zSUdFZ2NHeGhhVzRnU21GMllWTmpjbWx3ZENCamJHRnpjeTRnSnlBcklDZFVhR2x6SUdseklHOXViSGtnYzNWd2NHOXlkR1ZrSUdadmNpQmpiR0Z6YzJWeklHTnlaV0YwWldRZ2RYTnBibWNnVW1WaFkzUXVZM0psWVhSbFEyeGhjM011SUNjZ0t5QW5SR2xrSUhsdmRTQnRaV0Z1SUhSdklHUmxabWx1WlNCaElITjBZWFJsSUhCeWIzQmxjblI1SUdsdWMzUmxZV1EvSnl3Z2RHaHBjeTVuWlhST1lXMWxLQ2tnZkh3Z0oyRWdZMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5Z2hhVzV6ZEM1blpYUkVaV1poZFd4MFVISnZjSE1nZkh3Z2FXNXpkQzVuWlhSRVpXWmhkV3gwVUhKdmNITXVhWE5TWldGamRFTnNZWE56UVhCd2NtOTJaV1FzSUNkblpYUkVaV1poZFd4MFVISnZjSE1nZDJGeklHUmxabWx1WldRZ2IyNGdKWE1zSUdFZ2NHeGhhVzRnU21GMllWTmpjbWx3ZENCamJHRnpjeTRnSnlBcklDZFVhR2x6SUdseklHOXViSGtnYzNWd2NHOXlkR1ZrSUdadmNpQmpiR0Z6YzJWeklHTnlaV0YwWldRZ2RYTnBibWNnVW1WaFkzUXVZM0psWVhSbFEyeGhjM011SUNjZ0t5QW5WWE5sSUdFZ2MzUmhkR2xqSUhCeWIzQmxjblI1SUhSdklHUmxabWx1WlNCa1pXWmhkV3gwVUhKdmNITWdhVzV6ZEdWaFpDNG5MQ0IwYUdsekxtZGxkRTVoYldVb0tTQjhmQ0FuWVNCamIyMXdiMjVsYm5RbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGcGJuTjBMbkJ5YjNCVWVYQmxjeXdnSjNCeWIzQlVlWEJsY3lCM1lYTWdaR1ZtYVc1bFpDQmhjeUJoYmlCcGJuTjBZVzVqWlNCd2NtOXdaWEowZVNCdmJpQWxjeTRnVlhObElHRWdjM1JoZEdsaklDY2dLeUFuY0hKdmNHVnlkSGtnZEc4Z1pHVm1hVzVsSUhCeWIzQlVlWEJsY3lCcGJuTjBaV0ZrTGljc0lIUm9hWE11WjJWMFRtRnRaU2dwSUh4OElDZGhJR052YlhCdmJtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JV2x1YzNRdVkyOXVkR1Y0ZEZSNWNHVnpMQ0FuWTI5dWRHVjRkRlI1Y0dWeklIZGhjeUJrWldacGJtVmtJR0Z6SUdGdUlHbHVjM1JoYm1ObElIQnliM0JsY25SNUlHOXVJQ1Z6TGlCVmMyVWdZU0FuSUNzZ0ozTjBZWFJwWXlCd2NtOXdaWEowZVNCMGJ5QmtaV1pwYm1VZ1kyOXVkR1Y0ZEZSNWNHVnpJR2x1YzNSbFlXUXVKeXdnZEdocGN5NW5aWFJPWVcxbEtDa2dmSHdnSjJFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGVYQmxiMllnYVc1emRDNWpiMjF3YjI1bGJuUlRhRzkxYkdSVmNHUmhkR1VnSVQwOUlDZG1kVzVqZEdsdmJpY3NJQ2NsY3lCb1lYTWdZU0J0WlhSb2IyUWdZMkZzYkdWa0lDY2dLeUFuWTI5dGNHOXVaVzUwVTJodmRXeGtWWEJrWVhSbEtDa3VJRVJwWkNCNWIzVWdiV1ZoYmlCemFHOTFiR1JEYjIxd2IyNWxiblJWY0dSaGRHVW9LVDhnSnlBcklDZFVhR1VnYm1GdFpTQnBjeUJ3YUhKaGMyVmtJR0Z6SUdFZ2NYVmxjM1JwYjI0Z1ltVmpZWFZ6WlNCMGFHVWdablZ1WTNScGIyNGdhWE1nSnlBcklDZGxlSEJsWTNSbFpDQjBieUJ5WlhSMWNtNGdZU0IyWVd4MVpTNG5MQ0IwYUdsekxtZGxkRTVoYldVb0tTQjhmQ0FuUVNCamIyMXdiMjVsYm5RbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hSNWNHVnZaaUJwYm5OMExtTnZiWEJ2Ym1WdWRFUnBaRlZ1Ylc5MWJuUWdJVDA5SUNkbWRXNWpkR2x2Ymljc0lDY2xjeUJvWVhNZ1lTQnRaWFJvYjJRZ1kyRnNiR1ZrSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBSR2xrVlc1dGIzVnVkQ2dwTGlCQ2RYUWdkR2hsY21VZ2FYTWdibThnYzNWamFDQnNhV1psWTNsamJHVWdiV1YwYUc5a0xpQW5JQ3NnSjBScFpDQjViM1VnYldWaGJpQmpiMjF3YjI1bGJuUlhhV3hzVlc1dGIzVnVkQ2dwUHljc0lIUm9hWE11WjJWMFRtRnRaU2dwSUh4OElDZEJJR052YlhCdmJtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29kSGx3Wlc5bUlHbHVjM1F1WTI5dGNHOXVaVzUwVjJsc2JGSmxZMmxsZG1WUWNtOXdjeUFoUFQwZ0oyWjFibU4wYVc5dUp5d2dKeVZ6SUdoaGN5QmhJRzFsZEdodlpDQmpZV3hzWldRZ0p5QXJJQ2RqYjIxd2IyNWxiblJYYVd4c1VtVmphV1YyWlZCeWIzQnpLQ2t1SUVScFpDQjViM1VnYldWaGJpQmpiMjF3YjI1bGJuUlhhV3hzVW1WalpXbDJaVkJ5YjNCektDay9KeXdnZEdocGN5NW5aWFJPWVcxbEtDa2dmSHdnSjBFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdsdWFYUnBZV3hUZEdGMFpTQTlJR2x1YzNRdWMzUmhkR1U3WEc0Z0lDQWdhV1lnS0dsdWFYUnBZV3hUZEdGMFpTQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCcGJuTjBMbk4wWVhSbElEMGdhVzVwZEdsaGJGTjBZWFJsSUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUNBZ0lTaDBlWEJsYjJZZ2FXNXBkR2xoYkZOMFlYUmxJRDA5UFNBbmIySnFaV04wSnlBbUppQWhRWEp5WVhrdWFYTkJjbkpoZVNocGJtbDBhV0ZzVTNSaGRHVXBLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDY2xjeTV6ZEdGMFpUb2diWFZ6ZENCaVpTQnpaWFFnZEc4Z1lXNGdiMkpxWldOMElHOXlJRzUxYkd3bkxDQjBhR2x6TG1kbGRFNWhiV1VvS1NCOGZDQW5VbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpTQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVoxSmxjR3hoWTJWVGRHRjBaU0E5SUdaaGJITmxPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRHYjNKalpWVndaR0YwWlNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnYVdZZ0tHbHVjM1F1WTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwS1NCN1hHNGdJQ0FnSUNCcGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4TmIzVnVkQ2dwTzF4dUlDQWdJQ0FnTHk4Z1YyaGxiaUJ0YjNWdWRHbHVaeXdnWTJGc2JITWdkRzhnWUhObGRGTjBZWFJsWUNCaWVTQmdZMjl0Y0c5dVpXNTBWMmxzYkUxdmRXNTBZQ0IzYVd4c0lITmxkRnh1SUNBZ0lDQWdMeThnWUhSb2FYTXVYM0JsYm1ScGJtZFRkR0YwWlZGMVpYVmxZQ0IzYVhSb2IzVjBJSFJ5YVdkblpYSnBibWNnWVNCeVpTMXlaVzVrWlhJdVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZmNHVnVaR2x1WjFOMFlYUmxVWFZsZFdVcElIdGNiaUFnSUNBZ0lDQWdhVzV6ZEM1emRHRjBaU0E5SUhSb2FYTXVYM0J5YjJObGMzTlFaVzVrYVc1blUzUmhkR1VvYVc1emRDNXdjbTl3Y3l3Z2FXNXpkQzVqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJKWmlCdWIzUWdZU0J6ZEdGMFpXeGxjM01nWTI5dGNHOXVaVzUwTENCM1pTQnViM2NnY21WdVpHVnlYRzRnSUNBZ2FXWWdLSEpsYm1SbGNtVmtSV3hsYldWdWRDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCeVpXNWtaWEpsWkVWc1pXMWxiblFnUFNCMGFHbHpMbDl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUW9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDJsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvY21WdVpHVnlaV1JGYkdWdFpXNTBLVHRjYmx4dUlDQWdJSFpoY2lCdFlYSnJkWEFnUFNCU1pXRmpkRkpsWTI5dVkybHNaWEl1Ylc5MWJuUkRiMjF3YjI1bGJuUW9kR2hwY3k1ZmNtVnVaR1Z5WldSRGIyMXdiMjVsYm5Rc0lISnZiM1JKUkN3Z2RISmhibk5oWTNScGIyNHNJSFJvYVhNdVgzQnliMk5sYzNORGFHbHNaRU52Ym5SbGVIUW9ZMjl1ZEdWNGRDa3BPMXh1SUNBZ0lHbG1JQ2hwYm5OMExtTnZiWEJ2Ym1WdWRFUnBaRTF2ZFc1MEtTQjdYRzRnSUNBZ0lDQjBjbUZ1YzJGamRHbHZiaTVuWlhSU1pXRmpkRTF2ZFc1MFVtVmhaSGtvS1M1bGJuRjFaWFZsS0dsdWMzUXVZMjl0Y0c5dVpXNTBSR2xrVFc5MWJuUXNJR2x1YzNRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ0WVhKcmRYQTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGJHVmhjMlZ6SUdGdWVTQnlaWE52ZFhKalpYTWdZV3hzYjJOaGRHVmtJR0o1SUdCdGIzVnVkRU52YlhCdmJtVnVkR0F1WEc0Z0lDQXFYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUhWdWJXOTFiblJEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMllYSWdhVzV6ZENBOUlIUm9hWE11WDJsdWMzUmhibU5sTzF4dVhHNGdJQ0FnYVdZZ0tHbHVjM1F1WTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5RcElIdGNiaUFnSUNBZ0lHbHVjM1F1WTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5Rb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCU1pXRmpkRkpsWTI5dVkybHNaWEl1ZFc1dGIzVnVkRU52YlhCdmJtVnVkQ2gwYUdsekxsOXlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDazdYRzRnSUNBZ2RHaHBjeTVmY21WdVpHVnlaV1JEYjIxd2IyNWxiblFnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDJsdWMzUmhibU5sSUQwZ2JuVnNiRHRjYmx4dUlDQWdJQzh2SUZKbGMyVjBJSEJsYm1ScGJtY2dabWxsYkdSelhHNGdJQ0FnTHk4Z1JYWmxiaUJwWmlCMGFHbHpJR052YlhCdmJtVnVkQ0JwY3lCelkyaGxaSFZzWldRZ1ptOXlJR0Z1YjNSb1pYSWdkWEJrWVhSbElHbHVJRkpsWVdOMFZYQmtZWFJsY3l4Y2JpQWdJQ0F2THlCcGRDQjNiM1ZzWkNCemRHbHNiQ0JpWlNCcFoyNXZjbVZrSUdKbFkyRjFjMlVnZEdobGMyVWdabWxsYkdSeklHRnlaU0J5WlhObGRDNWNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5VM1JoZEdWUmRXVjFaU0E5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaMUpsY0d4aFkyVlRkR0YwWlNBOUlHWmhiSE5sTzF4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kR2IzSmpaVlZ3WkdGMFpTQTlJR1poYkhObE8xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZEZiR1Z0Wlc1MElEMGdiblZzYkR0Y2JseHVJQ0FnSUM4dklGUm9aWE5sSUdacFpXeGtjeUJrYnlCdWIzUWdjbVZoYkd4NUlHNWxaV1FnZEc4Z1ltVWdjbVZ6WlhRZ2MybHVZMlVnZEdocGN5QnZZbXBsWTNRZ2FYTWdibTljYmlBZ0lDQXZMeUJzYjI1blpYSWdZV05qWlhOemFXSnNaUzVjYmlBZ0lDQjBhR2x6TGw5amIyNTBaWGgwSUQwZ2JuVnNiRHRjYmlBZ0lDQjBhR2x6TGw5eWIyOTBUbTlrWlVsRUlEMGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxsOTBiM0JNWlhabGJGZHlZWEJ3WlhJZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnTHk4Z1JHVnNaWFJsSUhSb1pTQnlaV1psY21WdVkyVWdabkp2YlNCMGFHVWdhVzV6ZEdGdVkyVWdkRzhnZEdocGN5QnBiblJsY201aGJDQnlaWEJ5WlhObGJuUmhkR2x2Ymx4dUlDQWdJQzh2SUhkb2FXTm9JR0ZzYkc5M0lIUm9aU0JwYm5SbGNtNWhiSE1nZEc4Z1ltVWdjSEp2Y0dWeWJIa2dZMnhsWVc1bFpDQjFjQ0JsZG1WdUlHbG1JSFJvWlNCMWMyVnlYRzRnSUNBZ0x5OGdiR1ZoYTNNZ1lTQnlaV1psY21WdVkyVWdkRzhnZEdobElIQjFZbXhwWXlCcGJuTjBZVzVqWlM1Y2JpQWdJQ0JTWldGamRFbHVjM1JoYm1ObFRXRndMbkpsYlc5MlpTaHBibk4wS1R0Y2JseHVJQ0FnSUM4dklGTnZiV1VnWlhocGMzUnBibWNnWTI5dGNHOXVaVzUwY3lCeVpXeDVJRzl1SUdsdWMzUXVjSEp2Y0hNZ1pYWmxiaUJoWm5SbGNpQjBhR1Y1SjNabElHSmxaVzVjYmlBZ0lDQXZMeUJrWlhOMGNtOTVaV1FnS0dsdUlHVjJaVzUwSUdoaGJtUnNaWEp6S1M1Y2JpQWdJQ0F2THlCVVQwUlBPaUJwYm5OMExuQnliM0J6SUQwZ2JuVnNiRHRjYmlBZ0lDQXZMeUJVVDBSUE9pQnBibk4wTG5OMFlYUmxJRDBnYm5Wc2JEdGNiaUFnSUNBdkx5QlVUMFJQT2lCcGJuTjBMbU52Ym5SbGVIUWdQU0J1ZFd4c08xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJHYVd4MFpYSnpJSFJvWlNCamIyNTBaWGgwSUc5aWFtVmpkQ0IwYnlCdmJteDVJR052Ym5SaGFXNGdhMlY1Y3lCemNHVmphV1pwWldRZ2FXNWNiaUFnSUNvZ1lHTnZiblJsZUhSVWVYQmxjMkJjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJuUmxlSFJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMjlpYW1WamRIMWNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOXRZWE5yUTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRnS0dOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2JXRnphMlZrUTI5dWRHVjRkQ0E5SUc1MWJHdzdYRzRnSUNBZ2RtRnlJRU52YlhCdmJtVnVkQ0E5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuUjVjR1U3WEc0Z0lDQWdkbUZ5SUdOdmJuUmxlSFJVZVhCbGN5QTlJRU52YlhCdmJtVnVkQzVqYjI1MFpYaDBWSGx3WlhNN1hHNGdJQ0FnYVdZZ0tDRmpiMjUwWlhoMFZIbHdaWE1wSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJsYlhCMGVVOWlhbVZqZER0Y2JpQWdJQ0I5WEc0Z0lDQWdiV0Z6YTJWa1EyOXVkR1Y0ZENBOUlIdDlPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHTnZiblJsZUhST1lXMWxJR2x1SUdOdmJuUmxlSFJVZVhCbGN5a2dlMXh1SUNBZ0lDQWdiV0Z6YTJWa1EyOXVkR1Y0ZEZ0amIyNTBaWGgwVG1GdFpWMGdQU0JqYjI1MFpYaDBXMk52Ym5SbGVIUk9ZVzFsWFR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHMWhjMnRsWkVOdmJuUmxlSFE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFWnBiSFJsY25NZ2RHaGxJR052Ym5SbGVIUWdiMkpxWldOMElIUnZJRzl1YkhrZ1kyOXVkR0ZwYmlCclpYbHpJSE53WldOcFptbGxaQ0JwYmx4dUlDQWdLaUJnWTI5dWRHVjRkRlI1Y0dWellDd2dZVzVrSUdGemMyVnlkSE1nZEdoaGRDQjBhR1Y1SUdGeVpTQjJZV3hwWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHTnZiblJsZUhSY2JpQWdJQ29nUUhKbGRIVnliaUI3UDI5aWFtVmpkSDFjYmlBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNvdlhHNGdJRjl3Y205alpYTnpRMjl1ZEdWNGREb2dablZ1WTNScGIyNGdLR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYldGemEyVmtRMjl1ZEdWNGRDQTlJSFJvYVhNdVgyMWhjMnREYjI1MFpYaDBLR052Ym5SbGVIUXBPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMllYSWdRMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWRIbHdaVHRjYmlBZ0lDQWdJR2xtSUNoRGIyMXdiMjVsYm5RdVkyOXVkR1Y0ZEZSNWNHVnpLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMk5vWldOclVISnZjRlI1Y0dWektFTnZiWEJ2Ym1WdWRDNWpiMjUwWlhoMFZIbHdaWE1zSUcxaGMydGxaRU52Ym5SbGVIUXNJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdVkyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWE5yWldSRGIyNTBaWGgwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kzVnljbVZ1ZEVOdmJuUmxlSFJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdiMkpxWldOMGZWeHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ1gzQnliMk5sYzNORGFHbHNaRU52Ym5SbGVIUTZJR1oxYm1OMGFXOXVJQ2hqZFhKeVpXNTBRMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJEYjIxd2IyNWxiblFnUFNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNTBlWEJsTzF4dUlDQWdJSFpoY2lCcGJuTjBJRDBnZEdocGN5NWZhVzV6ZEdGdVkyVTdYRzRnSUNBZ2RtRnlJR05vYVd4a1EyOXVkR1Y0ZENBOUlHbHVjM1F1WjJWMFEyaHBiR1JEYjI1MFpYaDBJQ1ltSUdsdWMzUXVaMlYwUTJocGJHUkRiMjUwWlhoMEtDazdYRzRnSUNBZ2FXWWdLR05vYVd4a1EyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ0lTaDBlWEJsYjJZZ1EyOXRjRzl1Wlc1MExtTm9hV3hrUTI5dWRHVjRkRlI1Y0dWeklEMDlQU0FuYjJKcVpXTjBKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE11WjJWMFEyaHBiR1JEYjI1MFpYaDBLQ2s2SUdOb2FXeGtRMjl1ZEdWNGRGUjVjR1Z6SUcxMWMzUWdZbVVnWkdWbWFXNWxaQ0JwYmlCdmNtUmxjaUIwYnlBbklDc2dKM1Z6WlNCblpYUkRhR2xzWkVOdmJuUmxlSFFvS1M0bkxDQjBhR2x6TG1kbGRFNWhiV1VvS1NCOGZDQW5VbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWphR1ZqYTFCeWIzQlVlWEJsY3loRGIyMXdiMjVsYm5RdVkyaHBiR1JEYjI1MFpYaDBWSGx3WlhNc0lHTm9hV3hrUTI5dWRHVjRkQ3dnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dWN5NWphR2xzWkVOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWm05eUlDaDJZWElnYm1GdFpTQnBiaUJqYUdsc1pFTnZiblJsZUhRcElIdGNiaUFnSUNBZ0lDQWdJU2h1WVcxbElHbHVJRU52YlhCdmJtVnVkQzVqYUdsc1pFTnZiblJsZUhSVWVYQmxjeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE11WjJWMFEyaHBiR1JEYjI1MFpYaDBLQ2s2SUd0bGVTQmNJaVZ6WENJZ2FYTWdibTkwSUdSbFptbHVaV1FnYVc0Z1kyaHBiR1JEYjI1MFpYaDBWSGx3WlhNdUp5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5d2dibUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHRnpjMmxuYmloN2ZTd2dZM1Z5Y21WdWRFTnZiblJsZUhRc0lHTm9hV3hrUTI5dWRHVjRkQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCamRYSnlaVzUwUTI5dWRHVjRkRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VISnZZMlZ6YzJWeklIQnliM0J6SUdKNUlITmxkSFJwYm1jZ1pHVm1ZWFZzZENCMllXeDFaWE1nWm05eUlIVnVjM0JsWTJsbWFXVmtJSEJ5YjNCeklHRnVaRnh1SUNBZ0tpQmhjM05sY25ScGJtY2dkR2hoZENCMGFHVWdjSEp2Y0hNZ1lYSmxJSFpoYkdsa0xpQkViMlZ6SUc1dmRDQnRkWFJoZEdVZ2FYUnpJR0Z5WjNWdFpXNTBPeUJ5WlhSMWNtNXpYRzRnSUNBcUlHRWdibVYzSUhCeWIzQnpJRzlpYW1WamRDQjNhWFJvSUdSbFptRjFiSFJ6SUcxbGNtZGxaQ0JwYmk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHNWxkMUJ5YjNCelhHNGdJQ0FxSUVCeVpYUjFjbTRnZTI5aWFtVmpkSDFjYmlBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNvdlhHNGdJRjl3Y205alpYTnpVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHVaWGRRY205d2N5a2dlMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMllYSWdRMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWRIbHdaVHRjYmlBZ0lDQWdJR2xtSUNoRGIyMXdiMjVsYm5RdWNISnZjRlI1Y0dWektTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyTm9aV05yVUhKdmNGUjVjR1Z6S0VOdmJYQnZibVZ1ZEM1d2NtOXdWSGx3WlhNc0lHNWxkMUJ5YjNCekxDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjV6TG5CeWIzQXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYm1WM1VISnZjSE03WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRnpjMlZ5ZENCMGFHRjBJSFJvWlNCd2NtOXdjeUJoY21VZ2RtRnNhV1JjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCeWIzQlVlWEJsY3lCTllYQWdiMllnY0hKdmNDQnVZVzFsSUhSdklHRWdVbVZoWTNSUWNtOXdWSGx3WlZ4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjSEp2Y0hOY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR3h2WTJGMGFXOXVJR1V1Wnk0Z1hDSndjbTl3WENJc0lGd2lZMjl1ZEdWNGRGd2lMQ0JjSW1Ob2FXeGtJR052Ym5SbGVIUmNJbHh1SUNBZ0tpQkFjSEpwZG1GMFpWeHVJQ0FnS2k5Y2JpQWdYMk5vWldOclVISnZjRlI1Y0dWek9pQm1kVzVqZEdsdmJpQW9jSEp2Y0ZSNWNHVnpMQ0J3Y205d2N5d2diRzlqWVhScGIyNHBJSHRjYmlBZ0lDQXZMeUJVVDBSUE9pQlRkRzl3SUhaaGJHbGtZWFJwYm1jZ2NISnZjQ0IwZVhCbGN5Qm9aWEpsSUdGdVpDQnZibXg1SUhWelpTQjBhR1VnWld4bGJXVnVkRnh1SUNBZ0lDOHZJSFpoYkdsa1lYUnBiMjR1WEc0Z0lDQWdkbUZ5SUdOdmJYQnZibVZ1ZEU1aGJXVWdQU0IwYUdsekxtZGxkRTVoYldVb0tUdGNiaUFnSUNCbWIzSWdLSFpoY2lCd2NtOXdUbUZ0WlNCcGJpQndjbTl3Vkhsd1pYTXBJSHRjYmlBZ0lDQWdJR2xtSUNod2NtOXdWSGx3WlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJsY25KdmNqdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJVYUdseklHbHpJR2x1ZEdWdWRHbHZibUZzYkhrZ1lXNGdhVzUyWVhKcFlXNTBJSFJvWVhRZ1oyVjBjeUJqWVhWbmFIUXVJRWwwSjNNZ2RHaGxJSE5oYldWY2JpQWdJQ0FnSUNBZ0lDQXZMeUJpWldoaGRtbHZjaUJoY3lCM2FYUm9iM1YwSUhSb2FYTWdjM1JoZEdWdFpXNTBJR1Y0WTJWd2RDQjNhWFJvSUdFZ1ltVjBkR1Z5SUcxbGMzTmhaMlV1WEc0Z0lDQWdJQ0FnSUNBZ0lTaDBlWEJsYjJZZ2NISnZjRlI1Y0dWelczQnliM0JPWVcxbFhTQTlQVDBnSjJaMWJtTjBhVzl1SnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuSlhNNklDVnpJSFI1Y0dVZ1lDVnpZQ0JwY3lCcGJuWmhiR2xrT3lCcGRDQnRkWE4wSUdKbElHRWdablZ1WTNScGIyNHNJSFZ6ZFdGc2JIa2dKeUFySUNkbWNtOXRJRkpsWVdOMExsQnliM0JVZVhCbGN5NG5MQ0JqYjIxd2IyNWxiblJPWVcxbElIeDhJQ2RTWldGamRDQmpiR0Z6Y3ljc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWelcyeHZZMkYwYVc5dVhTd2djSEp2Y0U1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ0lDQmxjbkp2Y2lBOUlIQnliM0JVZVhCbGMxdHdjbTl3VG1GdFpWMG9jSEp2Y0hNc0lIQnliM0JPWVcxbExDQmpiMjF3YjI1bGJuUk9ZVzFsTENCc2IyTmhkR2x2YmlrN1hHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVjRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pYSnliM0lnUFNCbGVEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0lnYVc1emRHRnVZMlZ2WmlCRmNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRmRsSUcxaGVTQjNZVzUwSUhSdklHVjRkR1Z1WkNCMGFHbHpJR3h2WjJsaklHWnZjaUJ6YVcxcGJHRnlJR1Z5Y205eWN5QnBibHh1SUNBZ0lDQWdJQ0FnSUM4dklIUnZjQzFzWlhabGJDQnlaVzVrWlhJZ1kyRnNiSE1zSUhOdklFa25iU0JoWW5OMGNtRmpkR2x1WnlCcGRDQmhkMkY1SUdsdWRHOWNiaUFnSUNBZ0lDQWdJQ0F2THlCaElHWjFibU4wYVc5dUlIUnZJRzFwYm1sdGFYcGxJSEpsWm1GamRHOXlhVzVuSUdsdUlIUm9aU0JtZFhSMWNtVmNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ1lXUmtaVzVrZFcwZ1BTQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9kR2hwY3lrN1hHNWNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2JHOWpZWFJwYjI0Z1BUMDlJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdWNISnZjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnVUhKbFptRmpaU0JuYVhabGN5QjFjeUJ6YjIxbGRHaHBibWNnZEc4Z1lteGhZMnRzYVhOMElHbHVJSGRoY201cGJtY2diVzlrZFd4bFhHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjBaaGFXeGxaQ0JEYjIxd2IzTnBkR1VnY0hKdmNGUjVjR1U2SUNWekpYTW5MQ0JsY25KdmNpNXRaWE56WVdkbExDQmhaR1JsYm1SMWJTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuUm1GcGJHVmtJRU52Ym5SbGVIUWdWSGx3WlhNNklDVnpKWE1uTENCbGNuSnZjaTV0WlhOellXZGxMQ0JoWkdSbGJtUjFiU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUhKbFkyVnBkbVZEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNodVpYaDBSV3hsYldWdWRDd2dkSEpoYm5OaFkzUnBiMjRzSUc1bGVIUkRiMjUwWlhoMEtTQjdYRzRnSUNBZ2RtRnlJSEJ5WlhaRmJHVnRaVzUwSUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUTdYRzRnSUNBZ2RtRnlJSEJ5WlhaRGIyNTBaWGgwSUQwZ2RHaHBjeTVmWTI5dWRHVjRkRHRjYmx4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kRmJHVnRaVzUwSUQwZ2JuVnNiRHRjYmx4dUlDQWdJSFJvYVhNdWRYQmtZWFJsUTI5dGNHOXVaVzUwS0hSeVlXNXpZV04wYVc5dUxDQndjbVYyUld4bGJXVnVkQ3dnYm1WNGRFVnNaVzFsYm5Rc0lIQnlaWFpEYjI1MFpYaDBMQ0J1WlhoMFEyOXVkR1Y0ZENrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWxtSUdGdWVTQnZaaUJnWDNCbGJtUnBibWRGYkdWdFpXNTBZQ3dnWUY5d1pXNWthVzVuVTNSaGRHVlJkV1YxWldBc0lHOXlJR0JmY0dWdVpHbHVaMFp2Y21ObFZYQmtZWFJsWUZ4dUlDQWdLaUJwY3lCelpYUXNJSFZ3WkdGMFpTQjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdjR1Z5Wm05eWJWVndaR0YwWlVsbVRtVmpaWE56WVhKNU9pQm1kVzVqZEdsdmJpQW9kSEpoYm5OaFkzUnBiMjRwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmY0dWdVpHbHVaMFZzWlcxbGJuUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdVbVZoWTNSU1pXTnZibU5wYkdWeUxuSmxZMlZwZG1WRGIyMXdiMjVsYm5Rb2RHaHBjeXdnZEdocGN5NWZjR1Z1WkdsdVowVnNaVzFsYm5RZ2ZId2dkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblFzSUhSeVlXNXpZV04wYVc5dUxDQjBhR2x6TGw5amIyNTBaWGgwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VnSVQwOUlHNTFiR3dnZkh3Z2RHaHBjeTVmY0dWdVpHbHVaMFp2Y21ObFZYQmtZWFJsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpVTnZiWEJ2Ym1WdWRDaDBjbUZ1YzJGamRHbHZiaXdnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5Rc0lIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMQ0IwYUdsekxsOWpiMjUwWlhoMExDQjBhR2x6TGw5amIyNTBaWGgwS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGQmxjbVp2Y20wZ1lXNGdkWEJrWVhSbElIUnZJR0VnYlc5MWJuUmxaQ0JqYjIxd2IyNWxiblF1SUZSb1pTQmpiMjF3YjI1bGJuUlhhV3hzVW1WalpXbDJaVkJ5YjNCeklHRnVaRnh1SUNBZ0tpQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1VnYldWMGFHOWtjeUJoY21VZ1kyRnNiR1ZrTENCMGFHVnVJQ2hoYzNOMWJXbHVaeUIwYUdVZ2RYQmtZWFJsSUdsemJpZDBYRzRnSUNBcUlITnJhWEJ3WldRcElIUm9aU0J5WlcxaGFXNXBibWNnZFhCa1lYUmxJR3hwWm1WamVXTnNaU0J0WlhSb2IyUnpJR0Z5WlNCallXeHNaV1FnWVc1a0lIUm9aU0JFVDAxY2JpQWdJQ29nY21Wd2NtVnpaVzUwWVhScGIyNGdhWE1nZFhCa1lYUmxaQzVjYmlBZ0lDcGNiaUFnSUNvZ1Fua2daR1ZtWVhWc2RDd2dkR2hwY3lCcGJYQnNaVzFsYm5SeklGSmxZV04wSjNNZ2NtVnVaR1Z5YVc1bklHRnVaQ0J5WldOdmJtTnBiR2xoZEdsdmJpQmhiR2R2Y21sMGFHMHVYRzRnSUNBcUlGTnZjR2hwYzNScFkyRjBaV1FnWTJ4cFpXNTBjeUJ0WVhrZ2QybHphQ0IwYnlCdmRtVnljbWxrWlNCMGFHbHpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkZiR1Z0Wlc1MGZTQndjbVYyVUdGeVpXNTBSV3hsYldWdWRGeHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdibVY0ZEZCaGNtVnVkRVZzWlcxbGJuUmNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxSUVCdmRtVnljbWxrWVdKc1pWeHVJQ0FnS2k5Y2JpQWdkWEJrWVhSbFEyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9kSEpoYm5OaFkzUnBiMjRzSUhCeVpYWlFZWEpsYm5SRmJHVnRaVzUwTENCdVpYaDBVR0Z5Wlc1MFJXeGxiV1Z1ZEN3Z2NISmxkbFZ1YldGemEyVmtRMjl1ZEdWNGRDd2dibVY0ZEZWdWJXRnphMlZrUTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBJRDBnZEdocGN5NWZhVzV6ZEdGdVkyVTdYRzVjYmlBZ0lDQjJZWElnYm1WNGRFTnZiblJsZUhRZ1BTQjBhR2x6TGw5amIyNTBaWGgwSUQwOVBTQnVaWGgwVlc1dFlYTnJaV1JEYjI1MFpYaDBJRDhnYVc1emRDNWpiMjUwWlhoMElEb2dkR2hwY3k1ZmNISnZZMlZ6YzBOdmJuUmxlSFFvYm1WNGRGVnViV0Z6YTJWa1EyOXVkR1Y0ZENrN1hHNGdJQ0FnZG1GeUlHNWxlSFJRY205d2N6dGNibHh1SUNBZ0lDOHZJRVJwYzNScGJtZDFhWE5vSUdKbGRIZGxaVzRnWVNCd2NtOXdjeUIxY0dSaGRHVWdkbVZ5YzNWeklHRWdjMmx0Y0d4bElITjBZWFJsSUhWd1pHRjBaVnh1SUNBZ0lHbG1JQ2h3Y21WMlVHRnlaVzUwUld4bGJXVnVkQ0E5UFQwZ2JtVjRkRkJoY21WdWRFVnNaVzFsYm5RcElIdGNiaUFnSUNBZ0lDOHZJRk5yYVhBZ1kyaGxZMnRwYm1jZ2NISnZjQ0IwZVhCbGN5QmhaMkZwYmlBdExTQjNaU0JrYjI0bmRDQnlaV0ZrSUdsdWMzUXVjSEp2Y0hNZ2RHOGdZWFp2YVdSY2JpQWdJQ0FnSUM4dklIZGhjbTVwYm1jZ1ptOXlJRVJQVFNCamIyMXdiMjVsYm5RZ2NISnZjSE1nYVc0Z2RHaHBjeUIxY0dkeVlXUmxYRzRnSUNBZ0lDQnVaWGgwVUhKdmNITWdQU0J1WlhoMFVHRnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYm1WNGRGQnliM0J6SUQwZ2RHaHBjeTVmY0hKdlkyVnpjMUJ5YjNCektHNWxlSFJRWVhKbGJuUkZiR1Z0Wlc1MExuQnliM0J6S1R0Y2JpQWdJQ0FnSUM4dklFRnVJSFZ3WkdGMFpTQm9aWEpsSUhkcGJHd2djMk5vWldSMWJHVWdZVzRnZFhCa1lYUmxJR0oxZENCcGJXMWxaR2xoZEdWc2VTQnpaWFJjYmlBZ0lDQWdJQzh2SUY5d1pXNWthVzVuVTNSaGRHVlJkV1YxWlNCM2FHbGphQ0IzYVd4c0lHVnVjM1Z5WlNCMGFHRjBJR0Z1ZVNCemRHRjBaU0IxY0dSaGRHVnpJR2RsZEhOY2JpQWdJQ0FnSUM4dklHbHRiV1ZrYVdGMFpXeDVJSEpsWTI5dVkybHNaV1FnYVc1emRHVmhaQ0J2WmlCM1lXbDBhVzVuSUdadmNpQjBhR1VnYm1WNGRDQmlZWFJqYUM1Y2JseHVJQ0FnSUNBZ2FXWWdLR2x1YzNRdVkyOXRjRzl1Wlc1MFYybHNiRkpsWTJWcGRtVlFjbTl3Y3lrZ2UxeHVJQ0FnSUNBZ0lDQnBibk4wTG1OdmJYQnZibVZ1ZEZkcGJHeFNaV05sYVhabFVISnZjSE1vYm1WNGRGQnliM0J6TENCdVpYaDBRMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJRzVsZUhSVGRHRjBaU0E5SUhSb2FYTXVYM0J5YjJObGMzTlFaVzVrYVc1blUzUmhkR1VvYm1WNGRGQnliM0J6TENCdVpYaDBRMjl1ZEdWNGRDazdYRzVjYmlBZ0lDQjJZWElnYzJodmRXeGtWWEJrWVhSbElEMGdkR2hwY3k1ZmNHVnVaR2x1WjBadmNtTmxWWEJrWVhSbElIeDhJQ0ZwYm5OMExuTm9iM1ZzWkVOdmJYQnZibVZ1ZEZWd1pHRjBaU0I4ZkNCcGJuTjBMbk5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlNodVpYaDBVSEp2Y0hNc0lHNWxlSFJUZEdGMFpTd2dibVY0ZEVOdmJuUmxlSFFwTzF4dVhHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hSNWNHVnZaaUJ6YUc5MWJHUlZjR1JoZEdVZ0lUMDlJQ2QxYm1SbFptbHVaV1FuTENBbkpYTXVjMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsS0NrNklGSmxkSFZ5Ym1Wa0lIVnVaR1ZtYVc1bFpDQnBibk4wWldGa0lHOW1JR0VnSnlBcklDZGliMjlzWldGdUlIWmhiSFZsTGlCTllXdGxJSE4xY21VZ2RHOGdjbVYwZFhKdUlIUnlkV1VnYjNJZ1ptRnNjMlV1Snl3Z2RHaHBjeTVuWlhST1lXMWxLQ2tnZkh3Z0oxSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSE5vYjNWc1pGVndaR0YwWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaMFp2Y21ObFZYQmtZWFJsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0F2THlCWGFXeHNJSE5sZENCZ2RHaHBjeTV3Y205d2MyQXNJR0IwYUdsekxuTjBZWFJsWUNCaGJtUWdZSFJvYVhNdVkyOXVkR1Y0ZEdBdVhHNGdJQ0FnSUNCMGFHbHpMbDl3WlhKbWIzSnRRMjl0Y0c5dVpXNTBWWEJrWVhSbEtHNWxlSFJRWVhKbGJuUkZiR1Z0Wlc1MExDQnVaWGgwVUhKdmNITXNJRzVsZUhSVGRHRjBaU3dnYm1WNGRFTnZiblJsZUhRc0lIUnlZVzV6WVdOMGFXOXVMQ0J1WlhoMFZXNXRZWE5yWldSRGIyNTBaWGgwS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnU1dZZ2FYUW5jeUJrWlhSbGNtMXBibVZrSUhSb1lYUWdZU0JqYjIxd2IyNWxiblFnYzJodmRXeGtJRzV2ZENCMWNHUmhkR1VzSUhkbElITjBhV3hzSUhkaGJuUmNiaUFnSUNBZ0lDOHZJSFJ2SUhObGRDQndjbTl3Y3lCaGJtUWdjM1JoZEdVZ1luVjBJSGRsSUhOb2IzSjBZM1YwSUhSb1pTQnlaWE4wSUc5bUlIUm9aU0IxY0dSaGRHVXVYRzRnSUNBZ0lDQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ0E5SUc1bGVIUlFZWEpsYm5SRmJHVnRaVzUwTzF4dUlDQWdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRDQTlJRzVsZUhSVmJtMWhjMnRsWkVOdmJuUmxlSFE3WEc0Z0lDQWdJQ0JwYm5OMExuQnliM0J6SUQwZ2JtVjRkRkJ5YjNCek8xeHVJQ0FnSUNBZ2FXNXpkQzV6ZEdGMFpTQTlJRzVsZUhSVGRHRjBaVHRjYmlBZ0lDQWdJR2x1YzNRdVkyOXVkR1Y0ZENBOUlHNWxlSFJEYjI1MFpYaDBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JmY0hKdlkyVnpjMUJsYm1ScGJtZFRkR0YwWlRvZ1puVnVZM1JwYjI0Z0tIQnliM0J6TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1FnUFNCMGFHbHpMbDlwYm5OMFlXNWpaVHRjYmlBZ0lDQjJZWElnY1hWbGRXVWdQU0IwYUdsekxsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpUdGNiaUFnSUNCMllYSWdjbVZ3YkdGalpTQTlJSFJvYVhNdVgzQmxibVJwYm1kU1pYQnNZV05sVTNSaGRHVTdYRzRnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaMUpsY0d4aFkyVlRkR0YwWlNBOUlHWmhiSE5sTzF4dUlDQWdJSFJvYVhNdVgzQmxibVJwYm1kVGRHRjBaVkYxWlhWbElEMGdiblZzYkR0Y2JseHVJQ0FnSUdsbUlDZ2hjWFZsZFdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCcGJuTjBMbk4wWVhSbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHlaWEJzWVdObElDWW1JSEYxWlhWbExteGxibWQwYUNBOVBUMGdNU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSEYxWlhWbFd6QmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ1WlhoMFUzUmhkR1VnUFNCaGMzTnBaMjRvZTMwc0lISmxjR3hoWTJVZ1B5QnhkV1YxWlZzd1hTQTZJR2x1YzNRdWMzUmhkR1VwTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNCeVpYQnNZV05sSUQ4Z01TQTZJREE3SUdrZ1BDQnhkV1YxWlM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdkbUZ5SUhCaGNuUnBZV3dnUFNCeGRXVjFaVnRwWFR0Y2JpQWdJQ0FnSUdGemMybG5iaWh1WlhoMFUzUmhkR1VzSUhSNWNHVnZaaUJ3WVhKMGFXRnNJRDA5UFNBblpuVnVZM1JwYjI0bklEOGdjR0Z5ZEdsaGJDNWpZV3hzS0dsdWMzUXNJRzVsZUhSVGRHRjBaU3dnY0hKdmNITXNJR052Ym5SbGVIUXBJRG9nY0dGeWRHbGhiQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNWxlSFJUZEdGMFpUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVFdWeVoyVnpJRzVsZHlCd2NtOXdjeUJoYm1RZ2MzUmhkR1VzSUc1dmRHbG1hV1Z6SUdSbGJHVm5ZWFJsSUcxbGRHaHZaSE1nYjJZZ2RYQmtZWFJsSUdGdVpGeHVJQ0FnS2lCd1pYSm1iM0p0Y3lCMWNHUmhkR1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0J1WlhoMFJXeGxiV1Z1ZENCT1pYaDBJR1ZzWlcxbGJuUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc1bGVIUlFjbTl3Y3lCT1pYaDBJSEIxWW14cFl5QnZZbXBsWTNRZ2RHOGdjMlYwSUdGeklIQnliM0JsY25ScFpYTXVYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRk4wWVhSbElFNWxlSFFnYjJKcVpXTjBJSFJ2SUhObGRDQmhjeUJ6ZEdGMFpTNWNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCdVpYaDBRMjl1ZEdWNGRDQk9aWGgwSUhCMVlteHBZeUJ2WW1wbFkzUWdkRzhnYzJWMElHRnpJR052Ym5SbGVIUXVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCMWJtMWhjMnRsWkVOdmJuUmxlSFJjYmlBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNvdlhHNGdJRjl3WlhKbWIzSnRRMjl0Y0c5dVpXNTBWWEJrWVhSbE9pQm1kVzVqZEdsdmJpQW9ibVY0ZEVWc1pXMWxiblFzSUc1bGVIUlFjbTl3Y3l3Z2JtVjRkRk4wWVhSbExDQnVaWGgwUTI5dWRHVjRkQ3dnZEhKaGJuTmhZM1JwYjI0c0lIVnViV0Z6YTJWa1EyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQnBibk4wSUQwZ2RHaHBjeTVmYVc1emRHRnVZMlU3WEc1Y2JpQWdJQ0IyWVhJZ2FHRnpRMjl0Y0c5dVpXNTBSR2xrVlhCa1lYUmxJRDBnUW05dmJHVmhiaWhwYm5OMExtTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpTazdYRzRnSUNBZ2RtRnlJSEJ5WlhaUWNtOXdjenRjYmlBZ0lDQjJZWElnY0hKbGRsTjBZWFJsTzF4dUlDQWdJSFpoY2lCd2NtVjJRMjl1ZEdWNGREdGNiaUFnSUNCcFppQW9hR0Z6UTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsS1NCN1hHNGdJQ0FnSUNCd2NtVjJVSEp2Y0hNZ1BTQnBibk4wTG5CeWIzQnpPMXh1SUNBZ0lDQWdjSEpsZGxOMFlYUmxJRDBnYVc1emRDNXpkR0YwWlR0Y2JpQWdJQ0FnSUhCeVpYWkRiMjUwWlhoMElEMGdhVzV6ZEM1amIyNTBaWGgwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4VmNHUmhkR1VwSUh0Y2JpQWdJQ0FnSUdsdWMzUXVZMjl0Y0c5dVpXNTBWMmxzYkZWd1pHRjBaU2h1WlhoMFVISnZjSE1zSUc1bGVIUlRkR0YwWlN3Z2JtVjRkRU52Ym5SbGVIUXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBJRDBnYm1WNGRFVnNaVzFsYm5RN1hHNGdJQ0FnZEdocGN5NWZZMjl1ZEdWNGRDQTlJSFZ1YldGemEyVmtRMjl1ZEdWNGREdGNiaUFnSUNCcGJuTjBMbkJ5YjNCeklEMGdibVY0ZEZCeWIzQnpPMXh1SUNBZ0lHbHVjM1F1YzNSaGRHVWdQU0J1WlhoMFUzUmhkR1U3WEc0Z0lDQWdhVzV6ZEM1amIyNTBaWGgwSUQwZ2JtVjRkRU52Ym5SbGVIUTdYRzVjYmlBZ0lDQjBhR2x6TGw5MWNHUmhkR1ZTWlc1a1pYSmxaRU52YlhCdmJtVnVkQ2gwY21GdWMyRmpkR2x2Yml3Z2RXNXRZWE5yWldSRGIyNTBaWGgwS1R0Y2JseHVJQ0FnSUdsbUlDaG9ZWE5EYjIxd2IyNWxiblJFYVdSVmNHUmhkR1VwSUh0Y2JpQWdJQ0FnSUhSeVlXNXpZV04wYVc5dUxtZGxkRkpsWVdOMFRXOTFiblJTWldGa2VTZ3BMbVZ1Y1hWbGRXVW9hVzV6ZEM1amIyMXdiMjVsYm5SRWFXUlZjR1JoZEdVdVltbHVaQ2hwYm5OMExDQndjbVYyVUhKdmNITXNJSEJ5WlhaVGRHRjBaU3dnY0hKbGRrTnZiblJsZUhRcExDQnBibk4wS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTmhiR3dnZEdobElHTnZiWEJ2Ym1WdWRDZHpJR0J5Wlc1a1pYSmdJRzFsZEdodlpDQmhibVFnZFhCa1lYUmxJSFJvWlNCRVQwMGdZV05qYjNKa2FXNW5iSGt1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmZkWEJrWVhSbFVtVnVaR1Z5WldSRGIyMXdiMjVsYm5RNklHWjFibU4wYVc5dUlDaDBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCd2NtVjJRMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdQU0IwYUdsekxsOXlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWREdGNiaUFnSUNCMllYSWdjSEpsZGxKbGJtUmxjbVZrUld4bGJXVnVkQ0E5SUhCeVpYWkRiMjF3YjI1bGJuUkpibk4wWVc1alpTNWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnZG1GeUlHNWxlSFJTWlc1a1pYSmxaRVZzWlcxbGJuUWdQU0IwYUdsekxsOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5Rb0tUdGNiaUFnSUNCcFppQW9jMmh2ZFd4a1ZYQmtZWFJsVW1WaFkzUkRiMjF3YjI1bGJuUW9jSEpsZGxKbGJtUmxjbVZrUld4bGJXVnVkQ3dnYm1WNGRGSmxibVJsY21Wa1JXeGxiV1Z1ZENrcElIdGNiaUFnSUNBZ0lGSmxZV04wVW1WamIyNWphV3hsY2k1eVpXTmxhWFpsUTI5dGNHOXVaVzUwS0hCeVpYWkRiMjF3YjI1bGJuUkpibk4wWVc1alpTd2dibVY0ZEZKbGJtUmxjbVZrUld4bGJXVnVkQ3dnZEhKaGJuTmhZM1JwYjI0c0lIUm9hWE11WDNCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhRb1kyOXVkR1Y0ZENrcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0F2THlCVWFHVnpaU0IwZDI4Z1NVUnpJR0Z5WlNCaFkzUjFZV3hzZVNCMGFHVWdjMkZ0WlNFZ1FuVjBJRzV2ZEdocGJtY2djMmh2ZFd4a0lISmxiSGtnYjI0Z2RHaGhkQzVjYmlBZ0lDQWdJSFpoY2lCMGFHbHpTVVFnUFNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFTzF4dUlDQWdJQ0FnZG1GeUlIQnlaWFpEYjIxd2IyNWxiblJKUkNBOUlIQnlaWFpEYjIxd2IyNWxiblJKYm5OMFlXNWpaUzVmY205dmRFNXZaR1ZKUkR0Y2JpQWdJQ0FnSUZKbFlXTjBVbVZqYjI1amFXeGxjaTUxYm0xdmRXNTBRMjl0Y0c5dVpXNTBLSEJ5WlhaRGIyMXdiMjVsYm5SSmJuTjBZVzVqWlNrN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVmYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2h1WlhoMFVtVnVaR1Z5WldSRmJHVnRaVzUwS1R0Y2JpQWdJQ0FnSUhaaGNpQnVaWGgwVFdGeWEzVndJRDBnVW1WaFkzUlNaV052Ym1OcGJHVnlMbTF2ZFc1MFEyOXRjRzl1Wlc1MEtIUm9hWE11WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTENCMGFHbHpTVVFzSUhSeVlXNXpZV04wYVc5dUxDQjBhR2x6TGw5d2NtOWpaWE56UTJocGJHUkRiMjUwWlhoMEtHTnZiblJsZUhRcEtUdGNiaUFnSUNBZ0lIUm9hWE11WDNKbGNHeGhZMlZPYjJSbFYybDBhRTFoY210MWNFSjVTVVFvY0hKbGRrTnZiWEJ2Ym1WdWRFbEVMQ0J1WlhoMFRXRnlhM1Z3S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvdlhHNGdJRjl5WlhCc1lXTmxUbTlrWlZkcGRHaE5ZWEpyZFhCQ2VVbEVPaUJtZFc1amRHbHZiaUFvY0hKbGRrTnZiWEJ2Ym1WdWRFbEVMQ0J1WlhoMFRXRnlhM1Z3S1NCN1hHNGdJQ0FnVW1WaFkzUkRiMjF3YjI1bGJuUkZiblpwY205dWJXVnVkQzV5WlhCc1lXTmxUbTlrWlZkcGRHaE5ZWEpyZFhCQ2VVbEVLSEJ5WlhaRGIyMXdiMjVsYm5SSlJDd2dibVY0ZEUxaGNtdDFjQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvdlhHNGdJRjl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUlhhWFJvYjNWMFQzZHVaWEpQY2tOdmJuUmxlSFE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMllYSWdhVzV6ZENBOUlIUm9hWE11WDJsdWMzUmhibU5sTzF4dUlDQWdJSFpoY2lCeVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOUlHbHVjM1F1Y21WdVpHVnlLQ2s3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDOHZJRmRsSUdGc2JHOTNJR0YxZEc4dGJXOWphM01nZEc4Z2NISnZZMlZsWkNCaGN5QnBaaUIwYUdWNUozSmxJSEpsZEhWeWJtbHVaeUJ1ZFd4c0xseHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDQTlQVDBnSjNWdVpHVm1hVzVsWkNjZ0ppWWdhVzV6ZEM1eVpXNWtaWEl1WDJselRXOWphMFoxYm1OMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGUm9hWE1nYVhNZ2NISnZZbUZpYkhrZ1ltRmtJSEJ5WVdOMGFXTmxMaUJEYjI1emFXUmxjaUIzWVhKdWFXNW5JR2hsY21VZ1lXNWtYRzRnSUNBZ0lDQWdJQzh2SUdSbGNISmxZMkYwYVc1bklIUm9hWE1nWTI5dWRtVnVhV1Z1WTJVdVhHNGdJQ0FnSUNBZ0lISmxibVJsY21Wa1EyOXRjRzl1Wlc1MElEMGdiblZzYkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFMMXh1SUNCZmNtVnVaR1Z5Vm1Gc2FXUmhkR1ZrUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RtRnlJSEpsYm1SbGNtVmtRMjl0Y0c5dVpXNTBPMXh1SUNBZ0lGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RZ1BTQjBhR2x6TzF4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNCeVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDNKbGJtUmxjbFpoYkdsa1lYUmxaRU52YlhCdmJtVnVkRmRwZEdodmRYUlBkMjVsY2s5eVEyOXVkR1Y0ZENncE8xeHVJQ0FnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnSUNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUNBZ0lTaGNiaUFnSUNBdkx5QlVUMFJQT2lCQmJpQmdhWE5XWVd4cFpFNXZaR1ZnSUdaMWJtTjBhVzl1SUhkdmRXeGtJSEJ5YjJKaFlteDVJR0psSUcxdmNtVWdZWEJ3Y205d2NtbGhkR1ZjYmlBZ0lDQnlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDQTlQVDBnYm5Wc2JDQjhmQ0J5Wlc1a1pYSmxaRU52YlhCdmJtVnVkQ0E5UFQwZ1ptRnNjMlVnZkh3Z1VtVmhZM1JGYkdWdFpXNTBMbWx6Vm1Gc2FXUkZiR1Z0Wlc1MEtISmxibVJsY21Wa1EyOXRjRzl1Wlc1MEtTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbkpYTXVjbVZ1WkdWeUtDazZJRUVnZG1Gc2FXUWdVbVZoWTNSRGIyMXdiMjVsYm5RZ2JYVnpkQ0JpWlNCeVpYUjFjbTVsWkM0Z1dXOTFJRzFoZVNCb1lYWmxJQ2NnS3lBbmNtVjBkWEp1WldRZ2RXNWtaV1pwYm1Wa0xDQmhiaUJoY25KaGVTQnZjaUJ6YjIxbElHOTBhR1Z5SUdsdWRtRnNhV1FnYjJKcVpXTjBMaWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQ2NwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCeVpYUjFjbTRnY21WdVpHVnlaV1JEYjIxd2IyNWxiblE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFeGhlbWxzZVNCaGJHeHZZMkYwWlhNZ2RHaGxJSEpsWm5NZ2IySnFaV04wSUdGdVpDQnpkRzl5WlhNZ1lHTnZiWEJ2Ym1WdWRHQWdZWE1nWUhKbFptQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldZZ1VtVm1aWEpsYm1ObElHNWhiV1V1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZMjl0Y0c5dVpXNTBmU0JqYjIxd2IyNWxiblFnUTI5dGNHOXVaVzUwSUhSdklITjBiM0psSUdGeklHQnlaV1pnTGx4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lHRjBkR0ZqYUZKbFpqb2dablZ1WTNScGIyNGdLSEpsWml3Z1kyOXRjRzl1Wlc1MEtTQjdYRzRnSUNBZ2RtRnlJR2x1YzNRZ1BTQjBhR2x6TG1kbGRGQjFZbXhwWTBsdWMzUmhibU5sS0NrN1hHNGdJQ0FnSVNocGJuTjBJQ0U5SUc1MWJHd3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxTjBZWFJsYkdWemN5Qm1kVzVqZEdsdmJpQmpiMjF3YjI1bGJuUnpJR05oYm01dmRDQm9ZWFpsSUhKbFpuTXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhaaGNpQndkV0pzYVdORGIyMXdiMjVsYm5SSmJuTjBZVzVqWlNBOUlHTnZiWEJ2Ym1WdWRDNW5aWFJRZFdKc2FXTkpibk4wWVc1alpTZ3BPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMllYSWdZMjl0Y0c5dVpXNTBUbUZ0WlNBOUlHTnZiWEJ2Ym1WdWRDQW1KaUJqYjIxd2IyNWxiblF1WjJWMFRtRnRaU0EvSUdOdmJYQnZibVZ1ZEM1blpYUk9ZVzFsS0NrZ09pQW5ZU0JqYjIxd2IyNWxiblFuTzF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2NIVmliR2xqUTI5dGNHOXVaVzUwU1c1emRHRnVZMlVnSVQwZ2JuVnNiQ3dnSjFOMFlYUmxiR1Z6Y3lCbWRXNWpkR2x2YmlCamIyMXdiMjVsYm5SeklHTmhibTV2ZENCaVpTQm5hWFpsYmlCeVpXWnpJQ2NnS3lBbktGTmxaU0J5WldZZ1hDSWxjMXdpSUdsdUlDVnpJR055WldGMFpXUWdZbmtnSlhNcExpQW5JQ3NnSjBGMGRHVnRjSFJ6SUhSdklHRmpZMlZ6Y3lCMGFHbHpJSEpsWmlCM2FXeHNJR1poYVd3dUp5d2djbVZtTENCamIyMXdiMjVsYm5ST1lXMWxMQ0IwYUdsekxtZGxkRTVoYldVb0tTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJ5WldaeklEMGdhVzV6ZEM1eVpXWnpJRDA5UFNCbGJYQjBlVTlpYW1WamRDQS9JR2x1YzNRdWNtVm1jeUE5SUh0OUlEb2dhVzV6ZEM1eVpXWnpPMXh1SUNBZ0lISmxabk5iY21WbVhTQTlJSEIxWW14cFkwTnZiWEJ2Ym1WdWRFbHVjM1JoYm1ObE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFWlhSaFkyaGxjeUJoSUhKbFptVnlaVzVqWlNCdVlXMWxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY21WbUlFNWhiV1VnZEc4Z1pHVnlaV1psY21WdVkyVXVYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaUJBY0hKcGRtRjBaVnh1SUNBZ0tpOWNiaUFnWkdWMFlXTm9VbVZtT2lCbWRXNWpkR2x2YmlBb2NtVm1LU0I3WEc0Z0lDQWdkbUZ5SUhKbFpuTWdQU0IwYUdsekxtZGxkRkIxWW14cFkwbHVjM1JoYm1ObEtDa3VjbVZtY3p0Y2JpQWdJQ0JrWld4bGRHVWdjbVZtYzF0eVpXWmRPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdZU0IwWlhoMElHUmxjMk55YVhCMGFXOXVJRzltSUhSb1pTQmpiMjF3YjI1bGJuUWdkR2hoZENCallXNGdZbVVnZFhObFpDQjBieUJwWkdWdWRHbG1lU0JwZEZ4dUlDQWdLaUJwYmlCbGNuSnZjaUJ0WlhOellXZGxjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQlVhR1VnYm1GdFpTQnZjaUJ1ZFd4c0xseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHZGxkRTVoYldVNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjJZWElnZEhsd1pTQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5SNWNHVTdYRzRnSUNBZ2RtRnlJR052Ym5OMGNuVmpkRzl5SUQwZ2RHaHBjeTVmYVc1emRHRnVZMlVnSmlZZ2RHaHBjeTVmYVc1emRHRnVZMlV1WTI5dWMzUnlkV04wYjNJN1hHNGdJQ0FnY21WMGRYSnVJSFI1Y0dVdVpHbHpjR3hoZVU1aGJXVWdmSHdnWTI5dWMzUnlkV04wYjNJZ0ppWWdZMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVZ2ZId2dkSGx3WlM1dVlXMWxJSHg4SUdOdmJuTjBjblZqZEc5eUlDWW1JR052Ym5OMGNuVmpkRzl5TG01aGJXVWdmSHdnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0J3ZFdKc2FXTnNlU0JoWTJObGMzTnBZbXhsSUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUhSb2FYTWdZMjl0Y0c5dVpXNTBJQzBnYVM1bExpQjNhR0YwWEc0Z0lDQXFJR2x6SUdWNGNHOXpaV1FnWW5rZ2NtVm1jeUJoYm1RZ2NtVjBkWEp1WldRZ1lua2djbVZ1WkdWeUxpQkRZVzRnWW1VZ2JuVnNiQ0JtYjNJZ2MzUmhkR1ZzWlhOelhHNGdJQ0FxSUdOdmJYQnZibVZ1ZEhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMUpsWVdOMFEyOXRjRzl1Wlc1MGZTQjBhR1VnY0hWaWJHbGpJR052YlhCdmJtVnVkQ0JwYm5OMFlXNWpaUzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JuWlhSUWRXSnNhV05KYm5OMFlXNWpaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhaaGNpQnBibk4wSUQwZ2RHaHBjeTVmYVc1emRHRnVZMlU3WEc0Z0lDQWdhV1lnS0dsdWMzUWdhVzV6ZEdGdVkyVnZaaUJUZEdGMFpXeGxjM05EYjIxd2IyNWxiblFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhVzV6ZER0Y2JpQWdmU3hjYmx4dUlDQXZMeUJUZEhWaVhHNGdJRjlwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBPaUJ1ZFd4c1hHNWNibjA3WEc1Y2JsSmxZV04wVUdWeVppNXRaV0Z6ZFhKbFRXVjBhRzlrY3loU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkRTFwZUdsdUxDQW5VbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RbkxDQjdYRzRnSUcxdmRXNTBRMjl0Y0c5dVpXNTBPaUFuYlc5MWJuUkRiMjF3YjI1bGJuUW5MRnh1SUNCMWNHUmhkR1ZEYjIxd2IyNWxiblE2SUNkMWNHUmhkR1ZEYjIxd2IyNWxiblFuTEZ4dUlDQmZjbVZ1WkdWeVZtRnNhV1JoZEdWa1EyOXRjRzl1Wlc1ME9pQW5YM0psYm1SbGNsWmhiR2xrWVhSbFpFTnZiWEJ2Ym1WdWRDZGNibjBwTzF4dVhHNTJZWElnVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUWdQU0I3WEc1Y2JpQWdUV2w0YVc0NklGSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwVFdsNGFXNWNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZERzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDdXJyZW50T3duZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIuXG4gKlxuICogVGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxkIG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZVxuICogY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkLlxuICovXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSB7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDdXJyZW50T3duZXI7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTVxuICovXG5cbi8qIGdsb2JhbHMgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRDb21wb25lbnQnKTtcbnZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEluamVjdGlvbicpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBSZWFjdFZlcnNpb24gPSByZXF1aXJlKCcuL1JlYWN0VmVyc2lvbicpO1xuXG52YXIgZmluZERPTU5vZGUgPSByZXF1aXJlKCcuL2ZpbmRET01Ob2RlJyk7XG52YXIgcmVuZGVyU3VidHJlZUludG9Db250YWluZXIgPSByZXF1aXJlKCcuL3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuUmVhY3REZWZhdWx0SW5qZWN0aW9uLmluamVjdCgpO1xuXG52YXIgcmVuZGVyID0gUmVhY3RQZXJmLm1lYXN1cmUoJ1JlYWN0JywgJ3JlbmRlcicsIFJlYWN0TW91bnQucmVuZGVyKTtcblxudmFyIFJlYWN0ID0ge1xuICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUsXG4gIHJlbmRlcjogcmVuZGVyLFxuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsXG4gIHZlcnNpb246IFJlYWN0VmVyc2lvbixcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbiAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyxcbiAgdW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyXG59O1xuXG4vLyBJbmplY3QgdGhlIHJ1bnRpbWUgaW50byBhIGRldnRvb2xzIGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mgb2YgYnJvd3Nlci5cbi8vIEFsbG93cyBmb3IgZGVidWdnaW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhlIHBhZ2UuXG4vKiBlc2xpbnQtZW5hYmxlIGNhbWVsY2FzZSAqL1xuaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe1xuICAgIEN1cnJlbnRPd25lcjogUmVhY3RDdXJyZW50T3duZXIsXG4gICAgSW5zdGFuY2VIYW5kbGVzOiBSZWFjdEluc3RhbmNlSGFuZGxlcyxcbiAgICBNb3VudDogUmVhY3RNb3VudCxcbiAgICBSZWNvbmNpbGVyOiBSZWFjdFJlY29uY2lsZXIsXG4gICAgVGV4dENvbXBvbmVudDogUmVhY3RET01UZXh0Q29tcG9uZW50XG4gIH0pO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuICBpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy50b3AgPT09IHdpbmRvdy5zZWxmKSB7XG5cbiAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVkXG4gICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlkZSBhIGRvd25sb2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC5cbiAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID4gLTEpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzIGZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtZGV2dG9vbHMnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB3ZSdyZSBpbiBJRTgsIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgaW4gY29tcGF0aWJpbGl0eSBtb2RlIGFuZCBwcm92aWRlXG4gICAgLy8gaW5mb3JtYXRpb24gb24gcHJldmVudGluZyBjb21wYXRpYmlsaXR5IG1vZGVcbiAgICB2YXIgaWVDb21wYXRpYmlsaXR5TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZSAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA4O1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWllQ29tcGF0aWJpbGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBpcyBydW5uaW5nIGluIGNvbXBhdGliaWxpdHkgbW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xsb3dpbmcgdGFnIHRvIHlvdXIgSFRNTCB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEgaHR0cC1lcXVpdj1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdlXCIgLz4nKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gW1xuICAgIC8vIHNoaW1zXG4gICAgQXJyYXkuaXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCwgQXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnByb3RvdHlwZS5tYXAsIERhdGUubm93LCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0LmtleXMsIFN0cmluZy5wcm90b3R5cGUuc3BsaXQsIFN0cmluZy5wcm90b3R5cGUudHJpbSxcblxuICAgIC8vIHNoYW1zXG4gICAgT2JqZWN0LmNyZWF0ZSwgT2JqZWN0LmZyZWV6ZV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJlc1tpXSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdPbmUgb3IgbW9yZSBFUzUgc2hpbS9zaGFtcyBleHBlY3RlZCBieSBSZWFjdCBhcmUgbm90IGF2YWlsYWJsZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctcG9seWZpbGxzJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlhHNGdLaTljYmx4dUx5b2daMnh2WW1Gc2N5QmZYMUpGUVVOVVgwUkZWbFJQVDB4VFgwZE1UMEpCVEY5SVQwOUxYMThxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTjFjbkpsYm5SUGQyNWxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEZFhKeVpXNTBUM2R1WlhJbktUdGNiblpoY2lCU1pXRmpkRVJQVFZSbGVIUkRiMjF3YjI1bGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSRTlOVkdWNGRFTnZiWEJ2Ym1WdWRDY3BPMXh1ZG1GeUlGSmxZV04wUkdWbVlYVnNkRWx1YW1WamRHbHZiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFWldaaGRXeDBTVzVxWldOMGFXOXVKeWs3WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpKeWs3WEc1MllYSWdVbVZoWTNSTmIzVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOYjNWdWRDY3BPMXh1ZG1GeUlGSmxZV04wVUdWeVppQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFaWEptSnlrN1hHNTJZWElnVW1WaFkzUlNaV052Ym1OcGJHVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkpsWTI5dVkybHNaWEluS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZYQmtZWFJsY3ljcE8xeHVkbUZ5SUZKbFlXTjBWbVZ5YzJsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUldaWEp6YVc5dUp5azdYRzVjYm5aaGNpQm1hVzVrUkU5TlRtOWtaU0E5SUhKbGNYVnBjbVVvSnk0dlptbHVaRVJQVFU1dlpHVW5LVHRjYm5aaGNpQnlaVzVrWlhKVGRXSjBjbVZsU1c1MGIwTnZiblJoYVc1bGNpQTlJSEpsY1hWcGNtVW9KeTR2Y21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWEluS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNVNaV0ZqZEVSbFptRjFiSFJKYm1wbFkzUnBiMjR1YVc1cVpXTjBLQ2s3WEc1Y2JuWmhjaUJ5Wlc1a1pYSWdQU0JTWldGamRGQmxjbVl1YldWaGMzVnlaU2duVW1WaFkzUW5MQ0FuY21WdVpHVnlKeXdnVW1WaFkzUk5iM1Z1ZEM1eVpXNWtaWElwTzF4dVhHNTJZWElnVW1WaFkzUWdQU0I3WEc0Z0lHWnBibVJFVDAxT2IyUmxPaUJtYVc1a1JFOU5UbTlrWlN4Y2JpQWdjbVZ1WkdWeU9pQnlaVzVrWlhJc1hHNGdJSFZ1Ylc5MWJuUkRiMjF3YjI1bGJuUkJkRTV2WkdVNklGSmxZV04wVFc5MWJuUXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFRjBUbTlrWlN4Y2JpQWdkbVZ5YzJsdmJqb2dVbVZoWTNSV1pYSnphVzl1TEZ4dVhHNGdJQzhxSUdWemJHbHVkQzFrYVhOaFlteGxJR05oYldWc1kyRnpaU0FxTDF4dUlDQjFibk4wWVdKc1pWOWlZWFJqYUdWa1ZYQmtZWFJsY3pvZ1VtVmhZM1JWY0dSaGRHVnpMbUpoZEdOb1pXUlZjR1JoZEdWekxGeHVJQ0IxYm5OMFlXSnNaVjl5Wlc1a1pYSlRkV0owY21WbFNXNTBiME52Ym5SaGFXNWxjam9nY21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWEpjYm4wN1hHNWNiaTh2SUVsdWFtVmpkQ0IwYUdVZ2NuVnVkR2x0WlNCcGJuUnZJR0VnWkdWMmRHOXZiSE1nWjJ4dlltRnNJR2h2YjJzZ2NtVm5ZWEprYkdWemN5QnZaaUJpY205M2MyVnlMbHh1THk4Z1FXeHNiM2R6SUdadmNpQmtaV0oxWjJkcGJtY2dkMmhsYmlCMGFHVWdhRzl2YXlCcGN5QnBibXBsWTNSbFpDQnZiaUIwYUdVZ2NHRm5aUzVjYmk4cUlHVnpiR2x1ZEMxbGJtRmliR1VnWTJGdFpXeGpZWE5sSUNvdlhHNXBaaUFvZEhsd1pXOW1JRjlmVWtWQlExUmZSRVZXVkU5UFRGTmZSMHhQUWtGTVgwaFBUMHRmWHlBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NnSmlZZ2RIbHdaVzltSUY5ZlVrVkJRMVJmUkVWV1ZFOVBURk5mUjB4UFFrRk1YMGhQVDB0Zlh5NXBibXBsWTNRZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdYMTlTUlVGRFZGOUVSVlpVVDA5TVUxOUhURTlDUVV4ZlNFOVBTMTlmTG1sdWFtVmpkQ2g3WEc0Z0lDQWdRM1Z5Y21WdWRFOTNibVZ5T2lCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2l4Y2JpQWdJQ0JKYm5OMFlXNWpaVWhoYm1Sc1pYTTZJRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TEZ4dUlDQWdJRTF2ZFc1ME9pQlNaV0ZqZEUxdmRXNTBMRnh1SUNBZ0lGSmxZMjl1WTJsc1pYSTZJRkpsWVdOMFVtVmpiMjVqYVd4bGNpeGNiaUFnSUNCVVpYaDBRMjl0Y0c5dVpXNTBPaUJTWldGamRFUlBUVlJsZUhSRGIyMXdiMjVsYm5SY2JpQWdmU2s3WEc1OVhHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUhaaGNpQkZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDBWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MEp5azdYRzRnSUdsbUlDaEZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQzVqWVc1VmMyVkVUMDBnSmlZZ2QybHVaRzkzTG5SdmNDQTlQVDBnZDJsdVpHOTNMbk5sYkdZcElIdGNibHh1SUNBZ0lDOHZJRVpwY25OMElHTm9aV05ySUdsbUlHUmxkblJ2YjJ4eklHbHpJRzV2ZENCcGJuTjBZV3hzWldSY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUY5ZlVrVkJRMVJmUkVWV1ZFOVBURk5mUjB4UFFrRk1YMGhQVDB0Zlh5QTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lDOHZJRWxtSUhkbEozSmxJR2x1SUVOb2NtOXRaU0J2Y2lCR2FYSmxabTk0TENCd2NtOTJhV1JsSUdFZ1pHOTNibXh2WVdRZ2JHbHVheUJwWmlCdWIzUWdhVzV6ZEdGc2JHVmtMbHh1SUNBZ0lDQWdhV1lnS0c1aGRtbG5ZWFJ2Y2k1MWMyVnlRV2RsYm5RdWFXNWtaWGhQWmlnblEyaHliMjFsSnlrZ1BpQXRNU0FtSmlCdVlYWnBaMkYwYjNJdWRYTmxja0ZuWlc1MExtbHVaR1Y0VDJZb0owVmtaMlVuS1NBOVBUMGdMVEVnZkh3Z2JtRjJhV2RoZEc5eUxuVnpaWEpCWjJWdWRDNXBibVJsZUU5bUtDZEdhWEpsWm05NEp5a2dQaUF0TVNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtUmxZblZuS0NkRWIzZHViRzloWkNCMGFHVWdVbVZoWTNRZ1JHVjJWRzl2YkhNZ1ptOXlJR0VnWW1WMGRHVnlJR1JsZG1Wc2IzQnRaVzUwSUdWNGNHVnlhV1Z1WTJVNklDY2dLeUFuYUhSMGNITTZMeTltWWk1dFpTOXlaV0ZqZEMxa1pYWjBiMjlzY3ljcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFbG1JSGRsSjNKbElHbHVJRWxGT0N3Z1kyaGxZMnNnZEc4Z2MyVmxJR2xtSUhkbElHRnlaU0JwYmlCamIyMXdZWFJwWW1sc2FYUjVJRzF2WkdVZ1lXNWtJSEJ5YjNacFpHVmNiaUFnSUNBdkx5QnBibVp2Y20xaGRHbHZiaUJ2YmlCd2NtVjJaVzUwYVc1bklHTnZiWEJoZEdsaWFXeHBkSGtnYlc5a1pWeHVJQ0FnSUhaaGNpQnBaVU52YlhCaGRHbGlhV3hwZEhsTmIyUmxJRDBnWkc5amRXMWxiblF1Wkc5amRXMWxiblJOYjJSbElDWW1JR1J2WTNWdFpXNTBMbVJ2WTNWdFpXNTBUVzlrWlNBOElEZzdYRzVjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWdoYVdWRGIyMXdZWFJwWW1sc2FYUjVUVzlrWlN3Z0owbHVkR1Z5Ym1WMElFVjRjR3h2Y21WeUlHbHpJSEoxYm01cGJtY2dhVzRnWTI5dGNHRjBhV0pwYkdsMGVTQnRiMlJsT3lCd2JHVmhjMlVnWVdSa0lIUm9aU0FuSUNzZ0oyWnZiR3h2ZDJsdVp5QjBZV2NnZEc4Z2VXOTFjaUJJVkUxTUlIUnZJSEJ5WlhabGJuUWdkR2hwY3lCbWNtOXRJR2hoY0hCbGJtbHVaem9nSnlBcklDYzhiV1YwWVNCb2RIUndMV1Z4ZFdsMlBWd2lXQzFWUVMxRGIyMXdZWFJwWW14bFhDSWdZMjl1ZEdWdWREMWNJa2xGUFdWa1oyVmNJaUF2UGljcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdkbUZ5SUdWNGNHVmpkR1ZrUm1WaGRIVnlaWE1nUFNCYlhHNGdJQ0FnTHk4Z2MyaHBiWE5jYmlBZ0lDQkJjbkpoZVM1cGMwRnljbUY1TENCQmNuSmhlUzV3Y205MGIzUjVjR1V1WlhabGNua3NJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNW1iM0pGWVdOb0xDQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWFXNWtaWGhQWml3Z1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG0xaGNDd2dSR0YwWlM1dWIzY3NJRVoxYm1OMGFXOXVMbkJ5YjNSdmRIbHdaUzVpYVc1a0xDQlBZbXBsWTNRdWEyVjVjeXdnVTNSeWFXNW5MbkJ5YjNSdmRIbHdaUzV6Y0d4cGRDd2dVM1J5YVc1bkxuQnliM1J2ZEhsd1pTNTBjbWx0TEZ4dVhHNGdJQ0FnTHk4Z2MyaGhiWE5jYmlBZ0lDQlBZbXBsWTNRdVkzSmxZWFJsTENCUFltcGxZM1F1Wm5KbFpYcGxYVHRjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnWlhod1pXTjBaV1JHWldGMGRYSmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZsZUhCbFkzUmxaRVpsWVhSMWNtVnpXMmxkS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvSjA5dVpTQnZjaUJ0YjNKbElFVlROU0J6YUdsdEwzTm9ZVzF6SUdWNGNHVmpkR1ZrSUdKNUlGSmxZV04wSUdGeVpTQnViM1FnWVhaaGFXeGhZbXhsT2lBbklDc2dKMmgwZEhCek9pOHZabUl1YldVdmNtVmhZM1F0ZDJGeWJtbHVaeTF3YjJ4NVptbHNiSE1uS1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUTdJbDE5IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NQnV0dG9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbW91c2VMaXN0ZW5lck5hbWVzID0ge1xuICBvbkNsaWNrOiB0cnVlLFxuICBvbkRvdWJsZUNsaWNrOiB0cnVlLFxuICBvbk1vdXNlRG93bjogdHJ1ZSxcbiAgb25Nb3VzZU1vdmU6IHRydWUsXG4gIG9uTW91c2VVcDogdHJ1ZSxcblxuICBvbkNsaWNrQ2FwdHVyZTogdHJ1ZSxcbiAgb25Eb3VibGVDbGlja0NhcHR1cmU6IHRydWUsXG4gIG9uTW91c2VEb3duQ2FwdHVyZTogdHJ1ZSxcbiAgb25Nb3VzZU1vdmVDYXB0dXJlOiB0cnVlLFxuICBvbk1vdXNlVXBDYXB0dXJlOiB0cnVlXG59O1xuXG4vKipcbiAqIEltcGxlbWVudHMgYSA8YnV0dG9uPiBuYXRpdmUgY29tcG9uZW50IHRoYXQgZG9lcyBub3QgcmVjZWl2ZSBtb3VzZSBldmVudHNcbiAqIHdoZW4gYGRpc2FibGVkYCBpcyBzZXQuXG4gKi9cbnZhciBSZWFjdERPTUJ1dHRvbiA9IHtcbiAgZ2V0TmF0aXZlUHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG5cbiAgICAvLyBDb3B5IHRoZSBwcm9wcywgZXhjZXB0IHRoZSBtb3VzZSBsaXN0ZW5lcnNcbiAgICB2YXIgbmF0aXZlUHJvcHMgPSB7fTtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFtb3VzZUxpc3RlbmVyTmFtZXNba2V5XSkge1xuICAgICAgICBuYXRpdmVQcm9wc1trZXldID0gcHJvcHNba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmF0aXZlUHJvcHM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01CdXR0b247IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUNvbXBvbmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4vKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBBdXRvRm9jdXNVdGlscyA9IHJlcXVpcmUoJy4vQXV0b0ZvY3VzVXRpbHMnKTtcbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERPTUJ1dHRvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01CdXR0b24nKTtcbnZhciBSZWFjdERPTUlucHV0ID0gcmVxdWlyZSgnLi9SZWFjdERPTUlucHV0Jyk7XG52YXIgUmVhY3RET01PcHRpb24gPSByZXF1aXJlKCcuL1JlYWN0RE9NT3B0aW9uJyk7XG52YXIgUmVhY3RET01TZWxlY3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0Jyk7XG52YXIgUmVhY3RET01UZXh0YXJlYSA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0YXJlYScpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdE11bHRpQ2hpbGQgPSByZXF1aXJlKCcuL1JlYWN0TXVsdGlDaGlsZCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBpc0V2ZW50U3VwcG9ydGVkID0gcmVxdWlyZSgnLi9pc0V2ZW50U3VwcG9ydGVkJyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3NldFRleHRDb250ZW50Jyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGVsZXRlTGlzdGVuZXIgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuZGVsZXRlTGlzdGVuZXI7XG52YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87XG52YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG5cbi8vIEZvciBxdWlja2x5IG1hdGNoaW5nIGNoaWxkcmVuIHR5cGUsIHRvIHRlc3QgaWYgY2FuIGJlIHRyZWF0ZWQgYXMgY29udGVudC5cbnZhciBDT05URU5UX1RZUEVTID0geyAnc3RyaW5nJzogdHJ1ZSwgJ251bWJlcic6IHRydWUgfTtcblxudmFyIENISUxEUkVOID0ga2V5T2YoeyBjaGlsZHJlbjogbnVsbCB9KTtcbnZhciBTVFlMRSA9IGtleU9mKHsgc3R5bGU6IG51bGwgfSk7XG52YXIgSFRNTCA9IGtleU9mKHsgX19odG1sOiBudWxsIH0pO1xuXG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oaW50ZXJuYWxJbnN0YW5jZSkge1xuICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIHZhciBvd25lciA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lciB8fCBudWxsO1xuICAgIGlmIChvd25lcikge1xuICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJyBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJlZCBieSBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsZWdhY3lQcm9wc0Rlc2NyaXB0b3I7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBsZWdhY3lQcm9wc0Rlc2NyaXB0b3IgPSB7XG4gICAgcHJvcHM6IHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLl9yZWFjdEludGVybmFsQ29tcG9uZW50O1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5wcm9wcyBvZiBhIERPTSBub2RlOyBpbnN0ZWFkLCAnICsgJ3JlY3JlYXRlIHRoZSBwcm9wcyBhcyBgcmVuZGVyYCBkaWQgb3JpZ2luYWxseSBvciByZWFkIHRoZSBET00gJyArICdwcm9wZXJ0aWVzL2F0dHJpYnV0ZXMgZGlyZWN0bHkgZnJvbSB0aGlzIG5vZGUgKGUuZy4sICcgKyAndGhpcy5yZWZzLmJveC5jbGFzc05hbWUpLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeUdldERPTU5vZGUoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAuZ2V0RE9NTm9kZSgpIG9mIGEgRE9NIG5vZGU7ICcgKyAnaW5zdGVhZCwgdXNlIHRoZSBub2RlIGRpcmVjdGx5LiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBsZWdhY3lJc01vdW50ZWQoKSB7XG4gIHZhciBjb21wb25lbnQgPSB0aGlzLl9yZWFjdEludGVybmFsQ29tcG9uZW50O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RET01Db21wb25lbnQ6IERvIG5vdCBhY2Nlc3MgLmlzTW91bnRlZCgpIG9mIGEgRE9NIG5vZGUuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuICEhY29tcG9uZW50O1xufVxuXG5mdW5jdGlvbiBsZWdhY3lTZXRTdGF0ZUV0YygpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5zZXRTdGF0ZSgpLCAucmVwbGFjZVN0YXRlKCksIG9yICcgKyAnLmZvcmNlVXBkYXRlKCkgb2YgYSBET00gbm9kZS4gVGhpcyBpcyBhIG5vLW9wLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeVNldFByb3BzKHBhcnRpYWxQcm9wcywgY2FsbGJhY2spIHtcbiAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAuc2V0UHJvcHMoKSBvZiBhIERPTSBub2RlLiAnICsgJ0luc3RlYWQsIGNhbGwgUmVhY3RET00ucmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKCFjb21wb25lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlU2V0UHJvcHNJbnRlcm5hbChjb21wb25lbnQsIHBhcnRpYWxQcm9wcyk7XG4gIGlmIChjYWxsYmFjaykge1xuICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoY29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVnYWN5UmVwbGFjZVByb3BzKHBhcnRpYWxQcm9wcywgY2FsbGJhY2spIHtcbiAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAucmVwbGFjZVByb3BzKCkgb2YgYSBET00gbm9kZS4gJyArICdJbnN0ZWFkLCBjYWxsIFJlYWN0RE9NLnJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmICghY29tcG9uZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VQcm9wc0ludGVybmFsKGNvbXBvbmVudCwgcGFydGlhbFByb3BzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChjb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykgKyAnXSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYWlycyA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcbiAgICAgICAgICBwYWlycy5wdXNoKGtleUVzY2FwZWQgKyAnOiAnICsgZnJpZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiAnW2Z1bmN0aW9uIG9iamVjdF0nO1xuICB9XG4gIC8vIERpZmZlcnMgZnJvbSBKU09OLnN0cmluZ2lmeSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlcyB1bmRlZmluZWQgYW5kIHRoYXRcbiAgLy8gaW5mIGFuZCBuYW4gZG9uJ3QgYmVjb21lIG51bGxcbiAgcmV0dXJuIFN0cmluZyhvYmopO1xufVxuXG52YXIgc3R5bGVNdXRhdGlvbldhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHN0eWxlMSwgc3R5bGUyLCBjb21wb25lbnQpIHtcbiAgaWYgKHN0eWxlMSA9PSBudWxsIHx8IHN0eWxlMiA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChzaGFsbG93RXF1YWwoc3R5bGUxLCBzdHlsZTIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuX3RhZztcbiAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gIHZhciBvd25lck5hbWU7XG4gIGlmIChvd25lcikge1xuICAgIG93bmVyTmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgfVxuXG4gIHZhciBoYXNoID0gb3duZXJOYW1lICsgJ3wnICsgY29tcG9uZW50TmFtZTtcblxuICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcuaGFzT3duUHJvcGVydHkoaGFzaCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZU11dGF0aW9uV2FybmluZ1toYXNoXSA9IHRydWU7XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNseSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25zaWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQcmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFtZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUyKSkgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wc1xuICovXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHtcbiAgaWYgKCFwcm9wcykge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9uZW50Ll90YWddKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5jaGlsZHJlbiA9PSBudWxsICYmIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwsICclcyBpcyBhIHZvaWQgZWxlbWVudCB0YWcgYW5kIG11c3Qgbm90IGhhdmUgYGNoaWxkcmVuYCBvciAnICsgJ3VzZSBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBpZiAocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09PSAnb2JqZWN0JyAmJiBIVE1MIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiAnICsgJ1BsZWFzZSB2aXNpdCBodHRwczovL2ZiLm1lL3JlYWN0LWludmFyaWFudC1kYW5nZXJvdXNseS1zZXQtaW5uZXItaHRtbCAnICsgJ2ZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDogdW5kZWZpbmVkO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFwcm9wcy5jb250ZW50RWRpdGFibGUgfHwgcHJvcHMuY2hpbGRyZW4gPT0gbnVsbCwgJ0EgY29tcG9uZW50IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkgJyArICdSZWFjdC4gSXQgaXMgbm93IHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gZ3VhcmFudGVlIHRoYXQgbm9uZSBvZiAnICsgJ3Rob3NlIG5vZGVzIGFyZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQgb3IgZHVwbGljYXRlZC4gVGhpcyBpcyAnICsgJ3Byb2JhYmx5IG5vdCBpbnRlbnRpb25hbC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxuICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCAnICsgJ25vdCBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcXCdlbVxcJ319IHdoZW4gJyArICd1c2luZyBKU1guJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBlbnF1ZXVlUHV0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIElFOCBoYXMgbm8gQVBJIGZvciBldmVudCBjYXB0dXJpbmcgYW5kIHRoZSBgb25TY3JvbGxgIGV2ZW50IGRvZXNuJ3RcbiAgICAvLyBidWJibGUuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSwgJ1RoaXMgYnJvd3NlciBkb2VzblxcJ3Qgc3VwcG9ydCB0aGUgYG9uU2Nyb2xsYCBldmVudCcpIDogdW5kZWZpbmVkO1xuICB9XG4gIHZhciBjb250YWluZXIgPSBSZWFjdE1vdW50LmZpbmRSZWFjdENvbnRhaW5lckZvcklEKGlkKTtcbiAgaWYgKGNvbnRhaW5lcikge1xuICAgIHZhciBkb2MgPSBjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFID8gY29udGFpbmVyLm93bmVyRG9jdW1lbnQgOiBjb250YWluZXI7XG4gICAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9jKTtcbiAgfVxuICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHB1dExpc3RlbmVyLCB7XG4gICAgaWQ6IGlkLFxuICAgIHJlZ2lzdHJhdGlvbk5hbWU6IHJlZ2lzdHJhdGlvbk5hbWUsXG4gICAgbGlzdGVuZXI6IGxpc3RlbmVyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwdXRMaXN0ZW5lcigpIHtcbiAgdmFyIGxpc3RlbmVyVG9QdXQgPSB0aGlzO1xuICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIucHV0TGlzdGVuZXIobGlzdGVuZXJUb1B1dC5pZCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTtcbn1cblxuLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0XG4vLyBtYWludGFpbiBhIGxpc3QgcmF0aGVyIHRoYW4gY3JlYXRlIGEgYHRyYXBCdWJibGVkRXZlbnRgIGZvciBlYWNoXG52YXIgbWVkaWFFdmVudHMgPSB7XG4gIHRvcEFib3J0OiAnYWJvcnQnLFxuICB0b3BDYW5QbGF5OiAnY2FucGxheScsXG4gIHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLFxuICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJyxcbiAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLFxuICB0b3BFbmNyeXB0ZWQ6ICdlbmNyeXB0ZWQnLFxuICB0b3BFbmRlZDogJ2VuZGVkJyxcbiAgdG9wRXJyb3I6ICdlcnJvcicsXG4gIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJyxcbiAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScsXG4gIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsXG4gIHRvcFBhdXNlOiAncGF1c2UnLFxuICB0b3BQbGF5OiAncGxheScsXG4gIHRvcFBsYXlpbmc6ICdwbGF5aW5nJyxcbiAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG4gIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxcbiAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcbiAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLFxuICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG4gIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcbiAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLFxuICB0b3BXYWl0aW5nOiAnd2FpdGluZydcbn07XG5cbmZ1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9jYWwoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBudWxsLlxuICAhaW5zdC5fcm9vdE5vZGVJRCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNdXN0IGJlIG1vdW50ZWQgdG8gdHJhcCBldmVudHMnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKGluc3QuX3Jvb3ROb2RlSUQpO1xuICAhbm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHN3aXRjaCAoaW5zdC5fdGFnKSB7XG4gICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BMb2FkLCAnbG9hZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICBjYXNlICdhdWRpbyc6XG5cbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTtcbiAgICAgIC8vIGNyZWF0ZSBsaXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVudFxuICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVudHMpIHtcbiAgICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkge1xuICAgICAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzW2V2ZW50XSwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaW1nJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BFcnJvciwgJ2Vycm9yJywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wTG9hZCwgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmb3JtJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcy50b3BSZXNldCwgJ3Jlc2V0Jywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wU3VibWl0LCAnc3VibWl0Jywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gbW91bnRSZWFkeUlucHV0V3JhcHBlcigpIHtcbiAgUmVhY3RET01JbnB1dC5tb3VudFJlYWR5V3JhcHBlcih0aGlzKTtcbn1cblxuZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIoKSB7XG4gIFJlYWN0RE9NU2VsZWN0LnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpO1xufVxuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIHNob3VsZCBvbWl0IHRoZWlyIGNsb3NlIHRhZy4gV2Uga2VlcCBhIHdoaXRlbGlzdCBmb3Jcbi8vIHRob3NlIHNwZWNpYWwgY2FzZWQgdGFncy5cblxudmFyIG9taXR0ZWRDbG9zZVRhZ3MgPSB7XG4gICdhcmVhJzogdHJ1ZSxcbiAgJ2Jhc2UnOiB0cnVlLFxuICAnYnInOiB0cnVlLFxuICAnY29sJzogdHJ1ZSxcbiAgJ2VtYmVkJzogdHJ1ZSxcbiAgJ2hyJzogdHJ1ZSxcbiAgJ2ltZyc6IHRydWUsXG4gICdpbnB1dCc6IHRydWUsXG4gICdrZXlnZW4nOiB0cnVlLFxuICAnbGluayc6IHRydWUsXG4gICdtZXRhJzogdHJ1ZSxcbiAgJ3BhcmFtJzogdHJ1ZSxcbiAgJ3NvdXJjZSc6IHRydWUsXG4gICd0cmFjayc6IHRydWUsXG4gICd3YnInOiB0cnVlXG59O1xuXG4vLyBOT1RFOiBtZW51aXRlbSdzIGNsb3NlIHRhZyBzaG91bGQgYmUgb21pdHRlZCwgYnV0IHRoYXQgY2F1c2VzIHByb2JsZW1zLlxudmFyIG5ld2xpbmVFYXRpbmdUYWdzID0ge1xuICAnbGlzdGluZyc6IHRydWUsXG4gICdwcmUnOiB0cnVlLFxuICAndGV4dGFyZWEnOiB0cnVlXG59O1xuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIGNhbm5vdCBoYXZlIGNoaWxkcmVuLiBUaGlzIGhhcyB0aGUgc2FtZSBwdXJwb3NlIGFzXG4vLyBgb21pdHRlZENsb3NlVGFnc2AgZXhjZXB0IHRoYXQgYG1lbnVpdGVtYCBzaG91bGQgc3RpbGwgaGF2ZSBpdHMgY2xvc2luZyB0YWcuXG5cbnZhciB2b2lkRWxlbWVudFRhZ3MgPSBhc3NpZ24oe1xuICAnbWVudWl0ZW0nOiB0cnVlXG59LCBvbWl0dGVkQ2xvc2VUYWdzKTtcblxuLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeVxuLy8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG5cbnZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEtWjpfXFwuXFwtXFxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9O1xudmFyIGhhc093blByb3BlcnR5ID0gKHt9KS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKSB7XG4gIGlmICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRUYWdDYWNoZSwgdGFnKSkge1xuICAgICFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQgdGFnOiAlcycsIHRhZykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NDaGlsZENvbnRleHREZXYoY29udGV4dCwgaW5zdCkge1xuICAvLyBQYXNzIGRvd24gb3VyIHRhZyBuYW1lIHRvIGNoaWxkIGNvbXBvbmVudHMgZm9yIHZhbGlkYXRpb24gcHVycG9zZXNcbiAgY29udGV4dCA9IGFzc2lnbih7fSwgY29udGV4dCk7XG4gIHZhciBpbmZvID0gY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV07XG4gIGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8oaW5mbywgaW5zdC5fdGFnLCBpbnN0KTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7XG4gIHJldHVybiB0YWdOYW1lLmluZGV4T2YoJy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFzcyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlclxuICogUmVhY3QgY29tcG9uZW50cy4gSXQgYWNjZXB0cyBldmVudCBsaXN0ZW5lcnMgYW5kIERPTSBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiB2YWxpZCBhY2NvcmRpbmcgdG8gYERPTVByb3BlcnR5YC5cbiAqXG4gKiAgLSBFdmVudCBsaXN0ZW5lcnM6IGBvbkNsaWNrYCwgYG9uTW91c2VEb3duYCwgZXRjLlxuICogIC0gRE9NIHByb3BlcnRpZXM6IGBjbGFzc05hbWVgLCBgbmFtZWAsIGB0aXRsZWAsIGV0Yy5cbiAqXG4gKiBUaGUgYHN0eWxlYCBwcm9wZXJ0eSBmdW5jdGlvbnMgZGlmZmVyZW50bHkgZnJvbSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBhblxuICogb2JqZWN0IG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yIFJlYWN0RE9NQ29tcG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdE11bHRpQ2hpbGRcbiAqL1xuZnVuY3Rpb24gUmVhY3RET01Db21wb25lbnQodGFnKSB7XG4gIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZyk7XG4gIHRoaXMuX3RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtcbiAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG51bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG4gIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcyA9IG51bGw7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ID0gbnVsbDtcbiAgICB0aGlzLl9wcm9jZXNzZWRDb250ZXh0RGV2ID0gbnVsbDtcbiAgfVxufVxuXG5SZWFjdERPTUNvbXBvbmVudC5kaXNwbGF5TmFtZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cblJlYWN0RE9NQ29tcG9uZW50Lk1peGluID0ge1xuXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyByb290IHRhZyBtYXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmRcbiAgICogaXMgbm90IGlkZW1wb3RlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIFRoZSByb290IERPTSBJRCBmb3IgdGhpcyBub2RlLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLlxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChyb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IHJvb3RJRDtcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBjYXNlICdpbWcnOlxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgICAgICBsaXN0ZW5lcnM6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NQnV0dG9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIFJlYWN0RE9NSW5wdXQubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTUlucHV0LmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICBSZWFjdERPTU9wdGlvbi5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBSZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgY29udGV4dCA9IFJlYWN0RE9NU2VsZWN0LnByb2Nlc3NDaGlsZENvbnRleHQodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgUmVhY3RET01UZXh0YXJlYS5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0TmF0aXZlUHJvcHModGhpcywgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldKSB7XG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0aGlzLl90YWcsIHRoaXMsIGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ID0gY29udGV4dDtcbiAgICAgIHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXYgPSBwcm9jZXNzQ2hpbGRDb250ZXh0RGV2KGNvbnRleHQsIHRoaXMpO1xuICAgICAgY29udGV4dCA9IHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXY7XG4gICAgfVxuXG4gICAgdmFyIG1vdW50SW1hZ2U7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gY29udGV4dFtSZWFjdE1vdW50Lm93bmVyRG9jdW1lbnRDb250ZXh0S2V5XTtcbiAgICAgIHZhciBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRyaWJ1dGVGb3JJRChlbCwgdGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAvLyBQb3B1bGF0ZSBub2RlIGNhY2hlXG4gICAgICBSZWFjdE1vdW50LmdldElEKGVsKTtcbiAgICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoe30sIHByb3BzLCB0cmFuc2FjdGlvbiwgZWwpO1xuICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgZWwpO1xuICAgICAgbW91bnRJbWFnZSA9IGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdGFnT3BlbiA9IHRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3BzKTtcbiAgICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhpcy5fdGFnXSkge1xuICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICcvPic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyArIHRhZ0NvbnRlbnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSArICc+JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKG1vdW50UmVhZHlJbnB1dFdyYXBwZXIsIHRoaXMpO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gbW91bnRJbWFnZTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy5cbiAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvblxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5pbmcgdGFnLlxuICAgKi9cbiAgX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMpIHtcbiAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5zYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gU2VlIGBfdXBkYXRlRE9NUHJvcGVydGllc2AuIHN0eWxlIGJsb2NrXG4gICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9wVmFsdWUgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IGFzc2lnbih7fSwgcHJvcHMuc3R5bGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1hcmt1cCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkge1xuICAgICAgICAgIGlmIChwcm9wS2V5ICE9PSBDSElMRFJFTikge1xuICAgICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya3VwKSB7XG4gICAgICAgICAgcmV0ICs9ICcgJyArIG1hcmt1cDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBzdGF0aWMgcGFnZXMsIG5vIG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBjaGVja3N1bS4gU2F2ZXMgbG90cyBvZlxuICAgIC8vIGJ5dGVzLlxuICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICB2YXIgbWFya3VwRm9ySUQgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9ySUQodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgcmV0dXJuIHJldCArICcgJyArIG1hcmt1cEZvcklEO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIGNvbnRlbnQgYmV0d2VlbiB0aGUgdGFncy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFya3VwLlxuICAgKi9cbiAgX2NyZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgcmV0ID0gJyc7XG5cbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIHJldCA9IGlubmVySFRNTC5fX2h0bWw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlXG4gICAgICAgIHJldCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcihjb250ZW50VG9Vc2UpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgcmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZXdsaW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcXG4nKSB7XG4gICAgICAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZXNlIHRhZ3MgaWYgaXQncyBhIG5ld2xpbmVcbiAgICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuICAgICAgLy8gYSBuZXdsaW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5IGZvclxuICAgICAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJeXFxuXCIgd2l0aCBcIlxcclxcblwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG4gICAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cbiAgICAgIC8vIFNlZTogUGFyc2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcbiAgICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5PlxuICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSxcblxuICBfY3JlYXRlSW5pdGlhbENoaWxkcmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBlbCkge1xuICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGluZyB6ZXJvL2ZhbHNlLlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcbiAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChpbm5lckhUTUwuX19odG1sICE9IG51bGwpIHtcbiAgICAgICAgc2V0SW5uZXJIVE1MKGVsLCBpbm5lckhUTUwuX19odG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG4gICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgLy8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcbiAgICAgICAgc2V0VGV4dENvbnRlbnQoZWwsIGNvbnRlbnRUb1VzZSk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZWwuYXBwZW5kQ2hpbGQobW91bnRJbWFnZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyBhIG5leHQgZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50O1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBuYXRpdmUgRE9NIGNvbXBvbmVudCBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCBhbmRcbiAgICogYXR0YWNoZWQgdG8gdGhlIERPTS4gUmVjb25jaWxlcyB0aGUgcm9vdCBET00gbm9kZSwgdGhlbiByZWN1cnNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJldkVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKiBAb3ZlcnJpZGFibGVcbiAgICovXG4gIHVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpIHtcbiAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1lbnQucHJvcHM7XG4gICAgdmFyIG5leHRQcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NQnV0dG9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NQnV0dG9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXROYXRpdmVQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0TmF0aXZlUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJlYWN0RE9NVGV4dGFyZWEudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXROYXRpdmVQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyByZWZlcmVuY2UtZXF1YWwgdG8gdGhlIG9sZCBvbmUsIHBhc3MgZG93biB0aGUgc2FtZVxuICAgICAgLy8gcHJvY2Vzc2VkIG9iamVjdCBzbyB0aGUgdXBkYXRlIGJhaWxvdXQgaW4gUmVhY3RSZWNvbmNpbGVyIGJlaGF2ZXNcbiAgICAgIC8vIGNvcnJlY3RseSAoYW5kIGlkZW50aWNhbGx5IGluIGRldiBhbmQgcHJvZCkuIFNlZSAjNTAwNS5cbiAgICAgIGlmICh0aGlzLl91bnByb2Nlc3NlZENvbnRleHREZXYgIT09IGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldiA9IHByb2Nlc3NDaGlsZENvbnRleHREZXYoY29udGV4dCwgdGhpcyk7XG4gICAgICB9XG4gICAgICBjb250ZXh0ID0gdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldjtcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIG51bGwpO1xuICAgIHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cbiAgICBpZiAoIWNhbkRlZmluZVByb3BlcnR5ICYmIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcykge1xuICAgICAgdGhpcy5fbm9kZVdpdGhMZWdhY3lQcm9wZXJ0aWVzLnByb3BzID0gbmV4dFByb3BzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICAvLyA8c2VsZWN0PiB2YWx1ZSB1cGRhdGUgbmVlZHMgdG8gb2NjdXIgYWZ0ZXIgPG9wdGlvbj4gY2hpbGRyZW5cbiAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyLCB0aGlzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmRcbiAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0XG4gICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1YWxseVxuICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzXG4gICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uXG4gICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIF91cGRhdGVET01Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBub2RlKSB7XG4gICAgdmFyIHByb3BLZXk7XG4gICAgdmFyIHN0eWxlTmFtZTtcbiAgICB2YXIgc3R5bGVVcGRhdGVzO1xuICAgIGZvciAocHJvcEtleSBpbiBsYXN0UHJvcHMpIHtcbiAgICAgIGlmIChuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgIWxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICB2YXIgbGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7XG4gICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RTdHlsZSkge1xuICAgICAgICAgIGlmIChsYXN0U3R5bGUuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAobGFzdFByb3BzW3Byb3BLZXldKSB7XG4gICAgICAgICAgLy8gT25seSBjYWxsIGRlbGV0ZUxpc3RlbmVyIGlmIHRoZXJlIHdhcyBhIGxpc3RlbmVyIHByZXZpb3VzbHkgb3JcbiAgICAgICAgICAvLyBlbHNlIHdpbGxEZWxldGVMaXN0ZW5lciBnZXRzIGNhbGxlZCB3aGVuIHRoZXJlIHdhc24ndCBhY3R1YWxseSBhXG4gICAgICAgICAgLy8gbGlzdGVuZXIgKGUuZy4sIG9uQ2xpY2s9e251bGx9KVxuICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMuX3Jvb3ROb2RlSUQsIHByb3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICAgICAgfVxuICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChwcm9wS2V5IGluIG5leHRQcm9wcykge1xuICAgICAgdmFyIG5leHRQcm9wID0gbmV4dFByb3BzW3Byb3BLZXldO1xuICAgICAgdmFyIGxhc3RQcm9wID0gcHJvcEtleSA9PT0gU1RZTEUgPyB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA6IGxhc3RQcm9wc1twcm9wS2V5XTtcbiAgICAgIGlmICghbmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8IG5leHRQcm9wID09PSBsYXN0UHJvcCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICBpZiAobmV4dFByb3ApIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBuZXh0UHJvcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IGFzc2lnbih7fSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdFByb3ApIHtcbiAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9wYCBidXQgbm90IG9uIGBuZXh0UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFByb3ApIHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVXBkYXRlIHN0eWxlcyB0aGF0IGNoYW5nZWQgc2luY2UgYGxhc3RQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJvcCkge1xuICAgICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgbGFzdFByb3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkge1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVsaWVzIG9uIGB1cGRhdGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxlVXBkYXRlc2AuXG4gICAgICAgICAgc3R5bGVVcGRhdGVzID0gbmV4dFByb3A7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKG5leHRQcm9wKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMuX3Jvb3ROb2RlSUQsIHByb3BLZXksIG5leHRQcm9wLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAobGFzdFByb3ApIHtcbiAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIG5leHRQcm9wcykpIHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcEtleSA9PT0gQ0hJTERSRU4pIHtcbiAgICAgICAgICBuZXh0UHJvcCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIHByb3BLZXksIG5leHRQcm9wKTtcbiAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgICAgICAvLyBmcm9tIHRoZSBET00gbm9kZSBpbnN0ZWFkIG9mIGluYWR2ZXJ0YW50bHkgc2V0dGluZyB0byBhIHN0cmluZy4gVGhpc1xuICAgICAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24gaW5pdGlhbCByZW5kZXIuXG4gICAgICAgIGlmIChuZXh0UHJvcCAhPSBudWxsKSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdHlsZVVwZGF0ZXMpIHtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgfVxuICAgICAgQ1NTUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yU3R5bGVzKG5vZGUsIHN0eWxlVXBkYXRlcyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIHRoZSBjaGlsZHJlbiB3aXRoIHRoZSB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlXG4gICAqIGNoaWxkcmVuIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqL1xuICBfdXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBuZXh0UHJvcHMuY2hpbGRyZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVsbDtcblxuICAgIHZhciBsYXN0SHRtbCA9IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuICAgIHZhciBuZXh0SHRtbCA9IG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuXG4gICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC5cbiAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBsYXN0UHJvcHMuY2hpbGRyZW47XG4gICAgdmFyIG5leHRDaGlsZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVuO1xuXG4gICAgLy8gSWYgd2UncmUgc3dpdGNoaW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9odG1sIG9yIHZpY2UgdmVyc2EsIHJlbW92ZVxuICAgIC8vIHRoZSBvbGQgY29udGVudFxuICAgIHZhciBsYXN0SGFzQ29udGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51bGwgfHwgbGFzdEh0bWwgIT0gbnVsbDtcbiAgICB2YXIgbmV4dEhhc0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBudWxsIHx8IG5leHRIdG1sICE9IG51bGw7XG4gICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JIdG1sICYmICFuZXh0SGFzQ29udGVudE9ySHRtbCkge1xuICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyk7XG4gICAgfVxuXG4gICAgaWYgKG5leHRDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0Q29udGVudCAhPT0gbmV4dENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyArIG5leHRDb250ZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0SHRtbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2VzIG5vdCByZW1vdmUgZnJvbVxuICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGNhc2UgJ2ltZyc6XG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGlzdGVuZXJzW2ldLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgUmVhY3RET01JbnB1dC51bm1vdW50V3JhcHBlcih0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wb25lbnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWRcbiAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvXG4gICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT5cbiAgICAgICAgICogbWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVjYXVzZSBvZiBjcm9zcy1icm93c2VyIHF1aXJrcyBpdCBpcyAnICsgJ2ltcG9zc2libGUgdG8gdW5tb3VudCBzb21lIHRvcC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4sICcgKyAnPGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBhbmQgZWZmaWNpZW50bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEgJyArICdzaW5nbGUgdG9wLWxldmVsIGNvbXBvbmVudCB0aGF0IG5ldmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSAnICsgJ2VsZW1lbnRzLicsIHRoaXMuX3RhZykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnVubW91bnRDaGlsZHJlbigpO1xuICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5kZWxldGVBbGxMaXN0ZW5lcnModGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQudW5tb3VudElERnJvbUVudmlyb25tZW50KHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gICAgaWYgKHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcykge1xuICAgICAgdmFyIG5vZGUgPSB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXM7XG4gICAgICBub2RlLl9yZWFjdEludGVybmFsQ29tcG9uZW50ID0gbnVsbDtcbiAgICAgIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcyA9IG51bGw7XG4gICAgfVxuICB9LFxuXG4gIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXMpIHtcbiAgICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuXG4gICAgICBub2RlLl9yZWFjdEludGVybmFsQ29tcG9uZW50ID0gdGhpcztcbiAgICAgIG5vZGUuZ2V0RE9NTm9kZSA9IGxlZ2FjeUdldERPTU5vZGU7XG4gICAgICBub2RlLmlzTW91bnRlZCA9IGxlZ2FjeUlzTW91bnRlZDtcbiAgICAgIG5vZGUuc2V0U3RhdGUgPSBsZWdhY3lTZXRTdGF0ZUV0YztcbiAgICAgIG5vZGUucmVwbGFjZVN0YXRlID0gbGVnYWN5U2V0U3RhdGVFdGM7XG4gICAgICBub2RlLmZvcmNlVXBkYXRlID0gbGVnYWN5U2V0U3RhdGVFdGM7XG4gICAgICBub2RlLnNldFByb3BzID0gbGVnYWN5U2V0UHJvcHM7XG4gICAgICBub2RlLnJlcGxhY2VQcm9wcyA9IGxlZ2FjeVJlcGxhY2VQcm9wcztcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobm9kZSwgbGVnYWN5UHJvcHNEZXNjcmlwdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1cGRhdGVDb21wb25lbnQgd2lsbCB1cGRhdGUgdGhpcyBwcm9wZXJ0eSBvbiBzdWJzZXF1ZW50IHJlbmRlcnNcbiAgICAgICAgICBub2RlLnByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHVwZGF0ZUNvbXBvbmVudCB3aWxsIHVwZGF0ZSB0aGlzIHByb3BlcnR5IG9uIHN1YnNlcXVlbnQgcmVuZGVyc1xuICAgICAgICBub2RlLnByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcyA9IG5vZGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXM7XG4gIH1cblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0RE9NQ29tcG9uZW50LCAnUmVhY3RET01Db21wb25lbnQnLCB7XG4gIG1vdW50Q29tcG9uZW50OiAnbW91bnRDb21wb25lbnQnLFxuICB1cGRhdGVDb21wb25lbnQ6ICd1cGRhdGVDb21wb25lbnQnXG59KTtcblxuYXNzaWduKFJlYWN0RE9NQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVsdGlDaGlsZC5NaXhpbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUlBUVU52YlhCdmJtVnVkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlEyOXRjRzl1Wlc1MFhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpOHFJR2RzYjJKaGJDQm9ZWE5QZDI1UWNtOXdaWEowZVRwMGNuVmxJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRUYxZEc5R2IyTjFjMVYwYVd4eklEMGdjbVZ4ZFdseVpTZ25MaTlCZFhSdlJtOWpkWE5WZEdsc2N5Y3BPMXh1ZG1GeUlFTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeUE5SUhKbGNYVnBjbVVvSnk0dlExTlRVSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpKeWs3WEc1MllYSWdSRTlOVUhKdmNHVnlkSGtnUFNCeVpYRjFhWEpsS0NjdUwwUlBUVkJ5YjNCbGNuUjVKeWs3WEc1MllYSWdSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6SUQwZ2NtVnhkV2x5WlNnbkxpOUVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk1uS1R0Y2JuWmhjaUJGZG1WdWRFTnZibk4wWVc1MGN5QTlJSEpsY1hWcGNtVW9KeTR2UlhabGJuUkRiMjV6ZEdGdWRITW5LVHRjYm5aaGNpQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpY3BPMXh1ZG1GeUlGSmxZV04wUTI5dGNHOXVaVzUwUW5KdmQzTmxja1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOdmJYQnZibVZ1ZEVKeWIzZHpaWEpGYm5acGNtOXViV1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSRTlOUW5WMGRHOXVJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJQVFVKMWRIUnZiaWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5TVzV3ZFhRZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJFOU5TVzV3ZFhRbktUdGNiblpoY2lCU1pXRmpkRVJQVFU5d2RHbHZiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFVDAxUGNIUnBiMjRuS1R0Y2JuWmhjaUJTWldGamRFUlBUVk5sYkdWamRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFUWld4bFkzUW5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRWUmxlSFJoY21WaElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVlJsZUhSaGNtVmhKeWs3WEc1MllYSWdVbVZoWTNSTmIzVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOYjNWdWRDY3BPMXh1ZG1GeUlGSmxZV04wVFhWc2RHbERhR2xzWkNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmRXeDBhVU5vYVd4a0p5azdYRzUyWVhJZ1VtVmhZM1JRWlhKbUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQmxjbVluS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlZGMVpYVmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJqWVc1RVpXWnBibVZRY205d1pYSjBlU0E5SUhKbGNYVnBjbVVvSnk0dlkyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrbktUdGNiblpoY2lCbGMyTmhjR1ZVWlhoMFEyOXVkR1Z1ZEVadmNrSnliM2R6WlhJZ1BTQnlaWEYxYVhKbEtDY3VMMlZ6WTJGd1pWUmxlSFJEYjI1MFpXNTBSbTl5UW5KdmQzTmxjaWNwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUdselJYWmxiblJUZFhCd2IzSjBaV1FnUFNCeVpYRjFhWEpsS0NjdUwybHpSWFpsYm5SVGRYQndiM0owWldRbktUdGNiblpoY2lCclpYbFBaaUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJ0bGVVOW1KeWs3WEc1MllYSWdjMlYwU1c1dVpYSklWRTFNSUQwZ2NtVnhkV2x5WlNnbkxpOXpaWFJKYm01bGNraFVUVXduS1R0Y2JuWmhjaUJ6WlhSVVpYaDBRMjl1ZEdWdWRDQTlJSEpsY1hWcGNtVW9KeTR2YzJWMFZHVjRkRU52Ym5SbGJuUW5LVHRjYm5aaGNpQnphR0ZzYkc5M1JYRjFZV3dnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5emFHRnNiRzkzUlhGMVlXd25LVHRjYm5aaGNpQjJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY2dQU0J5WlhGMWFYSmxLQ2N1TDNaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiblpoY2lCa1pXeGxkR1ZNYVhOMFpXNWxjaUE5SUZKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaTVrWld4bGRHVk1hWE4wWlc1bGNqdGNiblpoY2lCc2FYTjBaVzVVYnlBOUlGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1c2FYTjBaVzVVYnp0Y2JuWmhjaUJ5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN5QTlJRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNXlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsY3p0Y2JseHVMeThnUm05eUlIRjFhV05yYkhrZ2JXRjBZMmhwYm1jZ1kyaHBiR1J5Wlc0Z2RIbHdaU3dnZEc4Z2RHVnpkQ0JwWmlCallXNGdZbVVnZEhKbFlYUmxaQ0JoY3lCamIyNTBaVzUwTGx4dWRtRnlJRU5QVGxSRlRsUmZWRmxRUlZNZ1BTQjdJQ2R6ZEhKcGJtY25PaUIwY25WbExDQW5iblZ0WW1WeUp6b2dkSEoxWlNCOU8xeHVYRzUyWVhJZ1EwaEpURVJTUlU0Z1BTQnJaWGxQWmloN0lHTm9hV3hrY21WdU9pQnVkV3hzSUgwcE8xeHVkbUZ5SUZOVVdVeEZJRDBnYTJWNVQyWW9leUJ6ZEhsc1pUb2diblZzYkNCOUtUdGNiblpoY2lCSVZFMU1JRDBnYTJWNVQyWW9leUJmWDJoMGJXdzZJRzUxYkd3Z2ZTazdYRzVjYm5aaGNpQkZURVZOUlU1VVgwNVBSRVZmVkZsUVJTQTlJREU3WEc1Y2JtWjFibU4wYVc5dUlHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaHBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUdsbUlDaHBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ2RtRnlJRzkzYm1WeUlEMGdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZZM1Z5Y21WdWRFVnNaVzFsYm5RdVgyOTNibVZ5SUh4OElHNTFiR3c3WEc0Z0lDQWdhV1lnS0c5M2JtVnlLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JtRnRaU0E5SUc5M2JtVnlMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFuSUZSb2FYTWdSRTlOSUc1dlpHVWdkMkZ6SUhKbGJtUmxjbVZrSUdKNUlHQW5JQ3NnYm1GdFpTQXJJQ2RnTGljN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUFuSnp0Y2JuMWNibHh1ZG1GeUlHeGxaMkZqZVZCeWIzQnpSR1Z6WTNKcGNIUnZjanRjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lHeGxaMkZqZVZCeWIzQnpSR1Z6WTNKcGNIUnZjaUE5SUh0Y2JpQWdJQ0J3Y205d2N6b2dlMXh1SUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQm5aWFE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUTdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVW1WaFkzUkVUMDFEYjIxd2IyNWxiblE2SUVSdklHNXZkQ0JoWTJObGMzTWdMbkJ5YjNCeklHOW1JR0VnUkU5TklHNXZaR1U3SUdsdWMzUmxZV1FzSUNjZ0t5QW5jbVZqY21WaGRHVWdkR2hsSUhCeWIzQnpJR0Z6SUdCeVpXNWtaWEpnSUdScFpDQnZjbWxuYVc1aGJHeDVJRzl5SUhKbFlXUWdkR2hsSUVSUFRTQW5JQ3NnSjNCeWIzQmxjblJwWlhNdllYUjBjbWxpZFhSbGN5QmthWEpsWTNSc2VTQm1jbTl0SUhSb2FYTWdibTlrWlNBb1pTNW5MaXdnSnlBcklDZDBhR2x6TG5KbFpuTXVZbTk0TG1Oc1lYTnpUbUZ0WlNrdUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpiMjF3YjI1bGJuUXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuQnliM0J6TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2JHVm5ZV041UjJWMFJFOU5UbTlrWlNncElIdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQjJZWElnWTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVmY21WaFkzUkpiblJsY201aGJFTnZiWEJ2Ym1WdWREdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxSmxZV04wUkU5TlEyOXRjRzl1Wlc1ME9pQkVieUJ1YjNRZ1lXTmpaWE56SUM1blpYUkVUMDFPYjJSbEtDa2diMllnWVNCRVQwMGdibTlrWlRzZ0p5QXJJQ2RwYm5OMFpXRmtMQ0IxYzJVZ2RHaGxJRzV2WkdVZ1pHbHlaV04wYkhrdUpYTW5MQ0JuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvWTI5dGNHOXVaVzUwS1NrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlIUm9hWE03WEc1OVhHNWNibVoxYm1OMGFXOXVJR3hsWjJGamVVbHpUVzkxYm5SbFpDZ3BJSHRjYmlBZ2RtRnlJR052YlhCdmJtVnVkQ0E5SUhSb2FYTXVYM0psWVdOMFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5RN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWREb2dSRzhnYm05MElHRmpZMlZ6Y3lBdWFYTk5iM1Z1ZEdWa0tDa2diMllnWVNCRVQwMGdibTlrWlM0bGN5Y3NJR2RsZEVSbFkyeGhjbUYwYVc5dVJYSnliM0pCWkdSbGJtUjFiU2hqYjIxd2IyNWxiblFwS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dUlDQnlaWFIxY200Z0lTRmpiMjF3YjI1bGJuUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHeGxaMkZqZVZObGRGTjBZWFJsUlhSaktDa2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSFpoY2lCamIyMXdiMjVsYm5RZ1BTQjBhR2x6TGw5eVpXRmpkRWx1ZEdWeWJtRnNRMjl0Y0c5dVpXNTBPMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5VbVZoWTNSRVQwMURiMjF3YjI1bGJuUTZJRVJ2SUc1dmRDQmhZMk5sYzNNZ0xuTmxkRk4wWVhSbEtDa3NJQzV5WlhCc1lXTmxVM1JoZEdVb0tTd2diM0lnSnlBcklDY3VabTl5WTJWVmNHUmhkR1VvS1NCdlppQmhJRVJQVFNCdWIyUmxMaUJVYUdseklHbHpJR0VnYm04dGIzQXVKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2JHVm5ZV041VTJWMFVISnZjSE1vY0dGeWRHbGhiRkJ5YjNCekxDQmpZV3hzWW1GamF5a2dlMXh1SUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZjbVZoWTNSSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZER0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxSmxZV04wUkU5TlEyOXRjRzl1Wlc1ME9pQkVieUJ1YjNRZ1lXTmpaWE56SUM1elpYUlFjbTl3Y3lncElHOW1JR0VnUkU5TklHNXZaR1V1SUNjZ0t5QW5TVzV6ZEdWaFpDd2dZMkZzYkNCU1pXRmpkRVJQVFM1eVpXNWtaWElnWVdkaGFXNGdZWFFnZEdobElIUnZjQ0JzWlhabGJDNGxjeWNzSUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNoamIyMXdiMjVsYm5RcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVJQ0JwWmlBb0lXTnZiWEJ2Ym1WdWRDa2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTG1WdWNYVmxkV1ZUWlhSUWNtOXdjMGx1ZEdWeWJtRnNLR052YlhCdmJtVnVkQ3dnY0dGeWRHbGhiRkJ5YjNCektUdGNiaUFnYVdZZ0tHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlM1bGJuRjFaWFZsUTJGc2JHSmhZMnRKYm5SbGNtNWhiQ2hqYjIxd2IyNWxiblFzSUdOaGJHeGlZV05yS1R0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnNaV2RoWTNsU1pYQnNZV05sVUhKdmNITW9jR0Z5ZEdsaGJGQnliM0J6TENCallXeHNZbUZqYXlrZ2UxeHVJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdkR2hwY3k1ZmNtVmhZM1JKYm5SbGNtNWhiRU52YlhCdmJtVnVkRHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjFKbFlXTjBSRTlOUTI5dGNHOXVaVzUwT2lCRWJ5QnViM1FnWVdOalpYTnpJQzV5WlhCc1lXTmxVSEp2Y0hNb0tTQnZaaUJoSUVSUFRTQnViMlJsTGlBbklDc2dKMGx1YzNSbFlXUXNJR05oYkd3Z1VtVmhZM1JFVDAwdWNtVnVaR1Z5SUdGbllXbHVJR0YwSUhSb1pTQjBiM0FnYkdWMlpXd3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnYVdZZ0tDRmpiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlM1bGJuRjFaWFZsVW1Wd2JHRmpaVkJ5YjNCelNXNTBaWEp1WVd3b1kyOXRjRzl1Wlc1MExDQndZWEowYVdGc1VISnZjSE1wTzF4dUlDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0JTWldGamRGVndaR0YwWlZGMVpYVmxMbVZ1Y1hWbGRXVkRZV3hzWW1GamEwbHVkR1Z5Ym1Gc0tHTnZiWEJ2Ym1WdWRDd2dZMkZzYkdKaFkyc3BPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUdaeWFXVnVaR3g1VTNSeWFXNW5hV1o1S0c5aWFpa2dlMXh1SUNCcFppQW9kSGx3Wlc5bUlHOWlhaUE5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNodlltb3BLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKMXNuSUNzZ2IySnFMbTFoY0NobWNtbGxibVJzZVZOMGNtbHVaMmxtZVNrdWFtOXBiaWduTENBbktTQXJJQ2RkSnp0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkbUZ5SUhCaGFYSnpJRDBnVzEwN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCclpYa2dhVzRnYjJKcUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2IySnFMQ0JyWlhrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlHdGxlVVZ6WTJGd1pXUWdQU0F2WGx0aExYb2tYMTFiWEZ4M0pGOWRLaVF2YVM1MFpYTjBLR3RsZVNrZ1B5QnJaWGtnT2lCS1UwOU9Mbk4wY21sdVoybG1lU2hyWlhrcE8xeHVJQ0FnSUNBZ0lDQWdJSEJoYVhKekxuQjFjMmdvYTJWNVJYTmpZWEJsWkNBcklDYzZJQ2NnS3lCbWNtbGxibVJzZVZOMGNtbHVaMmxtZVNodlltcGJhMlY1WFNrcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z0ozc25JQ3NnY0dGcGNuTXVhbTlwYmlnbkxDQW5LU0FySUNkOUp6dGNiaUFnSUNCOVhHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JRzlpYWlBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQnlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYjJKcUtUdGNiaUFnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnYjJKcUlEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2RiWm5WdVkzUnBiMjRnYjJKcVpXTjBYU2M3WEc0Z0lIMWNiaUFnTHk4Z1JHbG1abVZ5Y3lCbWNtOXRJRXBUVDA0dWMzUnlhVzVuYVdaNUlHbHVJSFJvWVhRZ2RXNWtaV1pwYm1Wa0lHSmxZMkYxYzJWeklIVnVaR1ZtYVc1bFpDQmhibVFnZEdoaGRGeHVJQ0F2THlCcGJtWWdZVzVrSUc1aGJpQmtiMjRuZENCaVpXTnZiV1VnYm5Wc2JGeHVJQ0J5WlhSMWNtNGdVM1J5YVc1bktHOWlhaWs3WEc1OVhHNWNiblpoY2lCemRIbHNaVTExZEdGMGFXOXVWMkZ5Ym1sdVp5QTlJSHQ5TzF4dVhHNW1kVzVqZEdsdmJpQmphR1ZqYTBGdVpGZGhjbTVHYjNKTmRYUmhkR1ZrVTNSNWJHVW9jM1I1YkdVeExDQnpkSGxzWlRJc0lHTnZiWEJ2Ym1WdWRDa2dlMXh1SUNCcFppQW9jM1I1YkdVeElEMDlJRzUxYkd3Z2ZId2djM1I1YkdVeUlEMDlJRzUxYkd3cElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnYVdZZ0tITm9ZV3hzYjNkRmNYVmhiQ2h6ZEhsc1pURXNJSE4wZVd4bE1pa3BJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmx4dUlDQjJZWElnWTI5dGNHOXVaVzUwVG1GdFpTQTlJR052YlhCdmJtVnVkQzVmZEdGbk8xeHVJQ0IyWVhJZ2IzZHVaWElnUFNCamIyMXdiMjVsYm5RdVgyTjFjbkpsYm5SRmJHVnRaVzUwTGw5dmQyNWxjanRjYmlBZ2RtRnlJRzkzYm1WeVRtRnRaVHRjYmlBZ2FXWWdLRzkzYm1WeUtTQjdYRzRnSUNBZ2IzZHVaWEpPWVcxbElEMGdiM2R1WlhJdVoyVjBUbUZ0WlNncE8xeHVJQ0I5WEc1Y2JpQWdkbUZ5SUdoaGMyZ2dQU0J2ZDI1bGNrNWhiV1VnS3lBbmZDY2dLeUJqYjIxd2IyNWxiblJPWVcxbE8xeHVYRzRnSUdsbUlDaHpkSGxzWlUxMWRHRjBhVzl1VjJGeWJtbHVaeTVvWVhOUGQyNVFjbTl3WlhKMGVTaG9ZWE5vS1NrZ2UxeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVYRzRnSUhOMGVXeGxUWFYwWVhScGIyNVhZWEp1YVc1blcyaGhjMmhkSUQwZ2RISjFaVHRjYmx4dUlDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMkFsYzJBZ2QyRnpJSEJoYzNObFpDQmhJSE4wZVd4bElHOWlhbVZqZENCMGFHRjBJR2hoY3lCd2NtVjJhVzkxYzJ4NUlHSmxaVzRnYlhWMFlYUmxaQzRnSnlBcklDZE5kWFJoZEdsdVp5QmdjM1I1YkdWZ0lHbHpJR1JsY0hKbFkyRjBaV1F1SUVOdmJuTnBaR1Z5SUdOc2IyNXBibWNnYVhRZ1ltVm1iM0psYUdGdVpDNGdRMmhsWTJzZ0p5QXJJQ2QwYUdVZ1lISmxibVJsY21BZ0pYTXVJRkJ5WlhacGIzVnpJSE4wZVd4bE9pQWxjeTRnVFhWMFlYUmxaQ0J6ZEhsc1pUb2dKWE11Snl3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnYjNkdVpYSWdQeUFuYjJZZ1lDY2dLeUJ2ZDI1bGNrNWhiV1VnS3lBbllDY2dPaUFuZFhOcGJtY2dQQ2NnS3lCamIyMXdiMjVsYm5ST1lXMWxJQ3NnSno0bkxDQm1jbWxsYm1Sc2VWTjBjbWx1WjJsbWVTaHpkSGxzWlRFcExDQm1jbWxsYm1Sc2VWTjBjbWx1WjJsbWVTaHpkSGxzWlRJcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXRjRzl1Wlc1MFhHNGdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJSEJ5YjNCelhHNGdLaTljYm1aMWJtTjBhVzl1SUdGemMyVnlkRlpoYkdsa1VISnZjSE1vWTI5dGNHOXVaVzUwTENCd2NtOXdjeWtnZTF4dUlDQnBaaUFvSVhCeWIzQnpLU0I3WEc0Z0lDQWdjbVYwZFhKdU8xeHVJQ0I5WEc0Z0lDOHZJRTV2ZEdVZ2RHaGxJSFZ6WlNCdlppQmdQVDFnSUhkb2FXTm9JR05vWldOcmN5Qm1iM0lnYm5Wc2JDQnZjaUIxYm1SbFptbHVaV1F1WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnYVdZZ0tIWnZhV1JGYkdWdFpXNTBWR0ZuYzF0amIyMXdiMjVsYm5RdVgzUmhaMTBwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIQnliM0J6TG1Ob2FXeGtjbVZ1SUQwOUlHNTFiR3dnSmlZZ2NISnZjSE11WkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVd2dQVDBnYm5Wc2JDd2dKeVZ6SUdseklHRWdkbTlwWkNCbGJHVnRaVzUwSUhSaFp5QmhibVFnYlhWemRDQnViM1FnYUdGMlpTQmdZMmhwYkdSeVpXNWdJRzl5SUNjZ0t5QW5kWE5sSUdCd2NtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRHQXVKWE1uTENCamIyMXdiMjVsYm5RdVgzUmhaeXdnWTI5dGNHOXVaVzUwTGw5amRYSnlaVzUwUld4bGJXVnVkQzVmYjNkdVpYSWdQeUFuSUVOb1pXTnJJSFJvWlNCeVpXNWtaWElnYldWMGFHOWtJRzltSUNjZ0t5QmpiMjF3YjI1bGJuUXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExsOXZkMjVsY2k1blpYUk9ZVzFsS0NrZ0t5QW5MaWNnT2lBbkp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJR2xtSUNod2NtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lTaHdjbTl3Y3k1amFHbHNaSEpsYmlBOVBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2REWVc0Z2IyNXNlU0J6WlhRZ2IyNWxJRzltSUdCamFHbHNaSEpsYm1BZ2IzSWdZSEJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNWUM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJU2gwZVhCbGIyWWdjSEp2Y0hNdVpHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXdnUFQwOUlDZHZZbXBsWTNRbklDWW1JRWhVVFV3Z2FXNGdjSEp2Y0hNdVpHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXdwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMkJ3Y205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEdBZ2JYVnpkQ0JpWlNCcGJpQjBhR1VnWm05eWJTQmdlMTlmYUhSdGJEb2dMaTR1ZldBdUlDY2dLeUFuVUd4bFlYTmxJSFpwYzJsMElHaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRhVzUyWVhKcFlXNTBMV1JoYm1kbGNtOTFjMng1TFhObGRDMXBibTVsY2kxb2RHMXNJQ2NnS3lBblptOXlJRzF2Y21VZ2FXNW1iM0p0WVhScGIyNHVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2NISnZjSE11YVc1dVpYSklWRTFNSUQwOUlHNTFiR3dzSUNkRWFYSmxZM1JzZVNCelpYUjBhVzVuSUhCeWIzQmxjblI1SUdCcGJtNWxja2hVVFV4Z0lHbHpJRzV2ZENCd1pYSnRhWFIwWldRdUlDY2dLeUFuUm05eUlHMXZjbVVnYVc1bWIzSnRZWFJwYjI0c0lHeHZiMnQxY0NCa2IyTjFiV1Z1ZEdGMGFXOXVJRzl1SUdCa1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UR0F1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JWEJ5YjNCekxtTnZiblJsYm5SRlpHbDBZV0pzWlNCOGZDQndjbTl3Y3k1amFHbHNaSEpsYmlBOVBTQnVkV3hzTENBblFTQmpiMjF3YjI1bGJuUWdhWE1nWUdOdmJuUmxiblJGWkdsMFlXSnNaV0FnWVc1a0lHTnZiblJoYVc1eklHQmphR2xzWkhKbGJtQWdiV0Z1WVdkbFpDQmllU0FuSUNzZ0oxSmxZV04wTGlCSmRDQnBjeUJ1YjNjZ2VXOTFjaUJ5WlhOd2IyNXphV0pwYkdsMGVTQjBieUJuZFdGeVlXNTBaV1VnZEdoaGRDQnViMjVsSUc5bUlDY2dLeUFuZEdodmMyVWdibTlrWlhNZ1lYSmxJSFZ1Wlhod1pXTjBaV1JzZVNCdGIyUnBabWxsWkNCdmNpQmtkWEJzYVdOaGRHVmtMaUJVYUdseklHbHpJQ2NnS3lBbmNISnZZbUZpYkhrZ2JtOTBJR2x1ZEdWdWRHbHZibUZzTGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOVhHNGdJQ0VvY0hKdmNITXVjM1I1YkdVZ1BUMGdiblZzYkNCOGZDQjBlWEJsYjJZZ2NISnZjSE11YzNSNWJHVWdQVDA5SUNkdlltcGxZM1FuS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RVYUdVZ1lITjBlV3hsWUNCd2NtOXdJR1Y0Y0dWamRITWdZU0J0WVhCd2FXNW5JR1p5YjIwZ2MzUjViR1VnY0hKdmNHVnlkR2xsY3lCMGJ5QjJZV3gxWlhNc0lDY2dLeUFuYm05MElHRWdjM1J5YVc1bkxpQkdiM0lnWlhoaGJYQnNaU3dnYzNSNWJHVTllM3R0WVhKbmFXNVNhV2RvZERvZ2MzQmhZMmx1WnlBcklGeGNKMlZ0WEZ3bmZYMGdkMmhsYmlBbklDc2dKM1Z6YVc1bklFcFRXQzRsY3ljc0lHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaGpiMjF3YjI1bGJuUXBLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdWdWNYVmxkV1ZRZFhSTWFYTjBaVzVsY2locFpDd2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTd2diR2x6ZEdWdVpYSXNJSFJ5WVc1ellXTjBhVzl1S1NCN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0x5OGdTVVU0SUdoaGN5QnVieUJCVUVrZ1ptOXlJR1YyWlc1MElHTmhjSFIxY21sdVp5QmhibVFnZEdobElHQnZibE5qY205c2JHQWdaWFpsYm5RZ1pHOWxjMjRuZEZ4dUlDQWdJQzh2SUdKMVltSnNaUzVjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWh5WldkcGMzUnlZWFJwYjI1T1lXMWxJQ0U5UFNBbmIyNVRZM0p2Ykd3bklIeDhJR2x6UlhabGJuUlRkWEJ3YjNKMFpXUW9KM05qY205c2JDY3NJSFJ5ZFdVcExDQW5WR2hwY3lCaWNtOTNjMlZ5SUdSdlpYTnVYRnduZENCemRYQndiM0owSUhSb1pTQmdiMjVUWTNKdmJHeGdJR1YyWlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnZG1GeUlHTnZiblJoYVc1bGNpQTlJRkpsWVdOMFRXOTFiblF1Wm1sdVpGSmxZV04wUTI5dWRHRnBibVZ5Um05eVNVUW9hV1FwTzF4dUlDQnBaaUFvWTI5dWRHRnBibVZ5S1NCN1hHNGdJQ0FnZG1GeUlHUnZZeUE5SUdOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBOVBUMGdSVXhGVFVWT1ZGOU9UMFJGWDFSWlVFVWdQeUJqYjI1MFlXbHVaWEl1YjNkdVpYSkViMk4xYldWdWRDQTZJR052Ym5SaGFXNWxjanRjYmlBZ0lDQnNhWE4wWlc1VWJ5aHlaV2RwYzNSeVlYUnBiMjVPWVcxbExDQmtiMk1wTzF4dUlDQjlYRzRnSUhSeVlXNXpZV04wYVc5dUxtZGxkRkpsWVdOMFRXOTFiblJTWldGa2VTZ3BMbVZ1Y1hWbGRXVW9jSFYwVEdsemRHVnVaWElzSUh0Y2JpQWdJQ0JwWkRvZ2FXUXNYRzRnSUNBZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlRvZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN4Y2JpQWdJQ0JzYVhOMFpXNWxjam9nYkdsemRHVnVaWEpjYmlBZ2ZTazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIQjFkRXhwYzNSbGJtVnlLQ2tnZTF4dUlDQjJZWElnYkdsemRHVnVaWEpVYjFCMWRDQTlJSFJvYVhNN1hHNGdJRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNXdkWFJNYVhOMFpXNWxjaWhzYVhOMFpXNWxjbFJ2VUhWMExtbGtMQ0JzYVhOMFpXNWxjbFJ2VUhWMExuSmxaMmx6ZEhKaGRHbHZiazVoYldVc0lHeHBjM1JsYm1WeVZHOVFkWFF1YkdsemRHVnVaWElwTzF4dWZWeHVYRzR2THlCVWFHVnlaU0JoY21VZ2MyOGdiV0Z1ZVNCdFpXUnBZU0JsZG1WdWRITXNJR2wwSUcxaGEyVnpJSE5sYm5ObElIUnZJR3AxYzNSY2JpOHZJRzFoYVc1MFlXbHVJR0VnYkdsemRDQnlZWFJvWlhJZ2RHaGhiaUJqY21WaGRHVWdZU0JnZEhKaGNFSjFZbUpzWldSRmRtVnVkR0FnWm05eUlHVmhZMmhjYm5aaGNpQnRaV1JwWVVWMlpXNTBjeUE5SUh0Y2JpQWdkRzl3UVdKdmNuUTZJQ2RoWW05eWRDY3NYRzRnSUhSdmNFTmhibEJzWVhrNklDZGpZVzV3YkdGNUp5eGNiaUFnZEc5d1EyRnVVR3hoZVZSb2NtOTFaMmc2SUNkallXNXdiR0Y1ZEdoeWIzVm5hQ2NzWEc0Z0lIUnZjRVIxY21GMGFXOXVRMmhoYm1kbE9pQW5aSFZ5WVhScGIyNWphR0Z1WjJVbkxGeHVJQ0IwYjNCRmJYQjBhV1ZrT2lBblpXMXdkR2xsWkNjc1hHNGdJSFJ2Y0VWdVkzSjVjSFJsWkRvZ0oyVnVZM0o1Y0hSbFpDY3NYRzRnSUhSdmNFVnVaR1ZrT2lBblpXNWtaV1FuTEZ4dUlDQjBiM0JGY25KdmNqb2dKMlZ5Y205eUp5eGNiaUFnZEc5d1RHOWhaR1ZrUkdGMFlUb2dKMnh2WVdSbFpHUmhkR0VuTEZ4dUlDQjBiM0JNYjJGa1pXUk5aWFJoWkdGMFlUb2dKMnh2WVdSbFpHMWxkR0ZrWVhSaEp5eGNiaUFnZEc5d1RHOWhaRk4wWVhKME9pQW5iRzloWkhOMFlYSjBKeXhjYmlBZ2RHOXdVR0YxYzJVNklDZHdZWFZ6WlNjc1hHNGdJSFJ2Y0ZCc1lYazZJQ2R3YkdGNUp5eGNiaUFnZEc5d1VHeGhlV2x1WnpvZ0ozQnNZWGxwYm1jbkxGeHVJQ0IwYjNCUWNtOW5jbVZ6Y3pvZ0ozQnliMmR5WlhOekp5eGNiaUFnZEc5d1VtRjBaVU5vWVc1blpUb2dKM0poZEdWamFHRnVaMlVuTEZ4dUlDQjBiM0JUWldWclpXUTZJQ2R6WldWclpXUW5MRnh1SUNCMGIzQlRaV1ZyYVc1bk9pQW5jMlZsYTJsdVp5Y3NYRzRnSUhSdmNGTjBZV3hzWldRNklDZHpkR0ZzYkdWa0p5eGNiaUFnZEc5d1UzVnpjR1Z1WkRvZ0ozTjFjM0JsYm1RbkxGeHVJQ0IwYjNCVWFXMWxWWEJrWVhSbE9pQW5kR2x0WlhWd1pHRjBaU2NzWEc0Z0lIUnZjRlp2YkhWdFpVTm9ZVzVuWlRvZ0ozWnZiSFZ0WldOb1lXNW5aU2NzWEc0Z0lIUnZjRmRoYVhScGJtYzZJQ2QzWVdsMGFXNW5KMXh1ZlR0Y2JseHVablZ1WTNScGIyNGdkSEpoY0VKMVltSnNaV1JGZG1WdWRITk1iMk5oYkNncElIdGNiaUFnZG1GeUlHbHVjM1FnUFNCMGFHbHpPMXh1SUNBdkx5QkpaaUJoSUdOdmJYQnZibVZ1ZENCeVpXNWtaWEp6SUhSdklHNTFiR3dnYjNJZ2FXWWdZVzV2ZEdobGNpQmpiMjF3YjI1bGJuUWdabUYwWVd4eklHRnVaQ0JqWVhWelpYTmNiaUFnTHk4Z2RHaGxJSE4wWVhSbElHOW1JSFJvWlNCMGNtVmxJSFJ2SUdKbElHTnZjbkoxY0hSbFpDd2dZRzV2WkdWZ0lHaGxjbVVnWTJGdUlHSmxJRzUxYkd3dVhHNGdJQ0ZwYm5OMExsOXliMjkwVG05a1pVbEVJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owMTFjM1FnWW1VZ2JXOTFiblJsWkNCMGJ5QjBjbUZ3SUdWMlpXNTBjeWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZG1GeUlHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2FXNXpkQzVmY205dmRFNXZaR1ZKUkNrN1hHNGdJQ0Z1YjJSbElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNSeVlYQkNkV0ppYkdWa1JYWmxiblFvTGk0dUtUb2dVbVZ4ZFdseVpYTWdibTlrWlNCMGJ5QmlaU0J5Wlc1a1pYSmxaQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ2MzZHBkR05vSUNocGJuTjBMbDkwWVdjcElIdGNiaUFnSUNCallYTmxJQ2RwWm5KaGJXVW5PbHh1SUNBZ0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbXhwYzNSbGJtVnljeUE5SUZ0U1pXRmpkRUp5YjNkelpYSkZkbVZ1ZEVWdGFYUjBaWEl1ZEhKaGNFSjFZbUpzWldSRmRtVnVkQ2hGZG1WdWRFTnZibk4wWVc1MGN5NTBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFeHZZV1FzSUNkc2IyRmtKeXdnYm05a1pTbGRPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5kbWxrWlc4bk9seHVJQ0FnSUdOaGMyVWdKMkYxWkdsdkp6cGNibHh1SUNBZ0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbXhwYzNSbGJtVnljeUE5SUZ0ZE8xeHVJQ0FnSUNBZ0x5OGdZM0psWVhSbElHeHBjM1JsYm1WeUlHWnZjaUJsWVdOb0lHMWxaR2xoSUdWMlpXNTBYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQmxkbVZ1ZENCcGJpQnRaV1JwWVVWMlpXNTBjeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9iV1ZrYVdGRmRtVnVkSE11YUdGelQzZHVVSEp2Y0dWeWRIa29aWFpsYm5RcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG14cGMzUmxibVZ5Y3k1d2RYTm9LRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNTBjbUZ3UW5WaVlteGxaRVYyWlc1MEtFVjJaVzUwUTI5dWMzUmhiblJ6TG5SdmNFeGxkbVZzVkhsd1pYTmJaWFpsYm5SZExDQnRaV1JwWVVWMlpXNTBjMXRsZG1WdWRGMHNJRzV2WkdVcEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2RwYldjbk9seHVJQ0FnSUNBZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExteHBjM1JsYm1WeWN5QTlJRnRTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSXVkSEpoY0VKMVltSnNaV1JGZG1WdWRDaEZkbVZ1ZEVOdmJuTjBZVzUwY3k1MGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VWeWNtOXlMQ0FuWlhKeWIzSW5MQ0J1YjJSbEtTd2dVbVZoWTNSQ2NtOTNjMlZ5UlhabGJuUkZiV2wwZEdWeUxuUnlZWEJDZFdKaWJHVmtSWFpsYm5Rb1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JNYjJGa0xDQW5iRzloWkNjc0lHNXZaR1VwWFR0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjJadmNtMG5PbHh1SUNBZ0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbXhwYzNSbGJtVnljeUE5SUZ0U1pXRmpkRUp5YjNkelpYSkZkbVZ1ZEVWdGFYUjBaWEl1ZEhKaGNFSjFZbUpzWldSRmRtVnVkQ2hGZG1WdWRFTnZibk4wWVc1MGN5NTBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGSmxjMlYwTENBbmNtVnpaWFFuTENCdWIyUmxLU3dnVW1WaFkzUkNjbTkzYzJWeVJYWmxiblJGYldsMGRHVnlMblJ5WVhCQ2RXSmliR1ZrUlhabGJuUW9SWFpsYm5SRGIyNXpkR0Z1ZEhNdWRHOXdUR1YyWld4VWVYQmxjeTUwYjNCVGRXSnRhWFFzSUNkemRXSnRhWFFuTENCdWIyUmxLVjA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJ0YjNWdWRGSmxZV1I1U1c1d2RYUlhjbUZ3Y0dWeUtDa2dlMXh1SUNCU1pXRmpkRVJQVFVsdWNIVjBMbTF2ZFc1MFVtVmhaSGxYY21Gd2NHVnlLSFJvYVhNcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCd2IzTjBWWEJrWVhSbFUyVnNaV04wVjNKaGNIQmxjaWdwSUh0Y2JpQWdVbVZoWTNSRVQwMVRaV3hsWTNRdWNHOXpkRlZ3WkdGMFpWZHlZWEJ3WlhJb2RHaHBjeWs3WEc1OVhHNWNiaTh2SUVadmNpQklWRTFNTENCalpYSjBZV2x1SUhSaFozTWdjMmh2ZFd4a0lHOXRhWFFnZEdobGFYSWdZMnh2YzJVZ2RHRm5MaUJYWlNCclpXVndJR0VnZDJocGRHVnNhWE4wSUdadmNseHVMeThnZEdodmMyVWdjM0JsWTJsaGJDQmpZWE5sWkNCMFlXZHpMbHh1WEc1MllYSWdiMjFwZEhSbFpFTnNiM05sVkdGbmN5QTlJSHRjYmlBZ0oyRnlaV0VuT2lCMGNuVmxMRnh1SUNBblltRnpaU2M2SUhSeWRXVXNYRzRnSUNkaWNpYzZJSFJ5ZFdVc1hHNGdJQ2RqYjJ3bk9pQjBjblZsTEZ4dUlDQW5aVzFpWldRbk9pQjBjblZsTEZ4dUlDQW5hSEluT2lCMGNuVmxMRnh1SUNBbmFXMW5Kem9nZEhKMVpTeGNiaUFnSjJsdWNIVjBKem9nZEhKMVpTeGNiaUFnSjJ0bGVXZGxiaWM2SUhSeWRXVXNYRzRnSUNkc2FXNXJKem9nZEhKMVpTeGNiaUFnSjIxbGRHRW5PaUIwY25WbExGeHVJQ0FuY0dGeVlXMG5PaUIwY25WbExGeHVJQ0FuYzI5MWNtTmxKem9nZEhKMVpTeGNiaUFnSjNSeVlXTnJKem9nZEhKMVpTeGNiaUFnSjNkaWNpYzZJSFJ5ZFdWY2JuMDdYRzVjYmk4dklFNVBWRVU2SUcxbGJuVnBkR1Z0SjNNZ1kyeHZjMlVnZEdGbklITm9iM1ZzWkNCaVpTQnZiV2wwZEdWa0xDQmlkWFFnZEdoaGRDQmpZWFZ6WlhNZ2NISnZZbXhsYlhNdVhHNTJZWElnYm1WM2JHbHVaVVZoZEdsdVoxUmhaM01nUFNCN1hHNGdJQ2RzYVhOMGFXNW5Kem9nZEhKMVpTeGNiaUFnSjNCeVpTYzZJSFJ5ZFdVc1hHNGdJQ2QwWlhoMFlYSmxZU2M2SUhSeWRXVmNibjA3WEc1Y2JpOHZJRVp2Y2lCSVZFMU1MQ0JqWlhKMFlXbHVJSFJoWjNNZ1kyRnVibTkwSUdoaGRtVWdZMmhwYkdSeVpXNHVJRlJvYVhNZ2FHRnpJSFJvWlNCellXMWxJSEIxY25CdmMyVWdZWE5jYmk4dklHQnZiV2wwZEdWa1EyeHZjMlZVWVdkellDQmxlR05sY0hRZ2RHaGhkQ0JnYldWdWRXbDBaVzFnSUhOb2IzVnNaQ0J6ZEdsc2JDQm9ZWFpsSUdsMGN5QmpiRzl6YVc1bklIUmhaeTVjYmx4dWRtRnlJSFp2YVdSRmJHVnRaVzUwVkdGbmN5QTlJR0Z6YzJsbmJpaDdYRzRnSUNkdFpXNTFhWFJsYlNjNklIUnlkV1ZjYm4wc0lHOXRhWFIwWldSRGJHOXpaVlJoWjNNcE8xeHVYRzR2THlCWFpTQmhZMk5sY0hRZ1lXNTVJSFJoWnlCMGJ5QmlaU0J5Wlc1a1pYSmxaQ0JpZFhRZ2MybHVZMlVnZEdocGN5Qm5aWFJ6SUdsdWFtVmpkR1ZrSUdsdWRHOGdZWEppYVhSeVlYSjVYRzR2THlCSVZFMU1MQ0IzWlNCM1lXNTBJSFJ2SUcxaGEyVWdjM1Z5WlNCMGFHRjBJR2wwSjNNZ1lTQnpZV1psSUhSaFp5NWNiaTh2SUdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wxSkZReTE0Yld3dkkwNVVMVTVoYldWY2JseHVkbUZ5SUZaQlRFbEVYMVJCUjE5U1JVZEZXQ0E5SUM5ZVcyRXRla0V0V2wxYllTMTZRUzFhT2w5Y1hDNWNYQzFjWEdSZEtpUXZPeUF2THlCVGFXMXdiR2xtYVdWa0lITjFZbk5sZEZ4dWRtRnlJSFpoYkdsa1lYUmxaRlJoWjBOaFkyaGxJRDBnZTMwN1hHNTJZWElnYUdGelQzZHVVSEp2Y0dWeWRIa2dQU0FvZTMwcExtaGhjMDkzYmxCeWIzQmxjblI1TzF4dVhHNW1kVzVqZEdsdmJpQjJZV3hwWkdGMFpVUmhibWRsY205MWMxUmhaeWgwWVdjcElIdGNiaUFnYVdZZ0tDRm9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSFpoYkdsa1lYUmxaRlJoWjBOaFkyaGxMQ0IwWVdjcEtTQjdYRzRnSUNBZ0lWWkJURWxFWDFSQlIxOVNSVWRGV0M1MFpYTjBLSFJoWnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuU1c1MllXeHBaQ0IwWVdjNklDVnpKeXdnZEdGbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdkbUZzYVdSaGRHVmtWR0ZuUTJGamFHVmJkR0ZuWFNBOUlIUnlkV1U3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2NISnZZMlZ6YzBOb2FXeGtRMjl1ZEdWNGRFUmxkaWhqYjI1MFpYaDBMQ0JwYm5OMEtTQjdYRzRnSUM4dklGQmhjM01nWkc5M2JpQnZkWElnZEdGbklHNWhiV1VnZEc4Z1kyaHBiR1FnWTI5dGNHOXVaVzUwY3lCbWIzSWdkbUZzYVdSaGRHbHZiaUJ3ZFhKd2IzTmxjMXh1SUNCamIyNTBaWGgwSUQwZ1lYTnphV2R1S0h0OUxDQmpiMjUwWlhoMEtUdGNiaUFnZG1GeUlHbHVabThnUFNCamIyNTBaWGgwVzNaaGJHbGtZWFJsUkU5TlRtVnpkR2x1Wnk1aGJtTmxjM1J2Y2tsdVptOURiMjUwWlhoMFMyVjVYVHRjYmlBZ1kyOXVkR1Y0ZEZ0MllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jdVlXNWpaWE4wYjNKSmJtWnZRMjl1ZEdWNGRFdGxlVjBnUFNCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jdWRYQmtZWFJsWkVGdVkyVnpkRzl5U1c1bWJ5aHBibVp2TENCcGJuTjBMbDkwWVdjc0lHbHVjM1FwTzF4dUlDQnlaWFIxY200Z1kyOXVkR1Y0ZER0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYVhORGRYTjBiMjFEYjIxd2IyNWxiblFvZEdGblRtRnRaU3dnY0hKdmNITXBJSHRjYmlBZ2NtVjBkWEp1SUhSaFowNWhiV1V1YVc1a1pYaFBaaWduTFNjcElENDlJREFnZkh3Z2NISnZjSE11YVhNZ0lUMGdiblZzYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnYm1WM0lGSmxZV04wSUdOc1lYTnpJSFJvWVhRZ2FYTWdhV1JsYlhCdmRHVnVkQ0JoYm1RZ1kyRndZV0pzWlNCdlppQmpiMjUwWVdsdWFXNW5JRzkwYUdWeVhHNGdLaUJTWldGamRDQmpiMjF3YjI1bGJuUnpMaUJKZENCaFkyTmxjSFJ6SUdWMlpXNTBJR3hwYzNSbGJtVnljeUJoYm1RZ1JFOU5JSEJ5YjNCbGNuUnBaWE1nZEdoaGRDQmhjbVZjYmlBcUlIWmhiR2xrSUdGalkyOXlaR2x1WnlCMGJ5QmdSRTlOVUhKdmNHVnlkSGxnTGx4dUlDcGNiaUFxSUNBdElFVjJaVzUwSUd4cGMzUmxibVZ5Y3pvZ1lHOXVRMnhwWTJ0Z0xDQmdiMjVOYjNWelpVUnZkMjVnTENCbGRHTXVYRzRnS2lBZ0xTQkVUMDBnY0hKdmNHVnlkR2xsY3pvZ1lHTnNZWE56VG1GdFpXQXNJR0J1WVcxbFlDd2dZSFJwZEd4bFlDd2daWFJqTGx4dUlDcGNiaUFxSUZSb1pTQmdjM1I1YkdWZ0lIQnliM0JsY25SNUlHWjFibU4wYVc5dWN5QmthV1ptWlhKbGJuUnNlU0JtY205dElIUm9aU0JFVDAwZ1FWQkpMaUJKZENCaFkyTmxjSFJ6SUdGdVhHNGdLaUJ2WW1wbFkzUWdiV0Z3Y0dsdVp5QnZaaUJ6ZEhsc1pTQndjbTl3WlhKMGFXVnpJSFJ2SUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWTI5dWMzUnlkV04wYjNJZ1VtVmhZM1JFVDAxRGIyMXdiMjVsYm5SY2JpQXFJRUJsZUhSbGJtUnpJRkpsWVdOMFRYVnNkR2xEYUdsc1pGeHVJQ292WEc1bWRXNWpkR2x2YmlCU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZENoMFlXY3BJSHRjYmlBZ2RtRnNhV1JoZEdWRVlXNW5aWEp2ZFhOVVlXY29kR0ZuS1R0Y2JpQWdkR2hwY3k1ZmRHRm5JRDBnZEdGbkxuUnZURzkzWlhKRFlYTmxLQ2s3WEc0Z0lIUm9hWE11WDNKbGJtUmxjbVZrUTJocGJHUnlaVzRnUFNCdWRXeHNPMXh1SUNCMGFHbHpMbDl3Y21WMmFXOTFjMU4wZVd4bElEMGdiblZzYkR0Y2JpQWdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaVU52Y0hrZ1BTQnVkV3hzTzF4dUlDQjBhR2x6TGw5eWIyOTBUbTlrWlVsRUlEMGdiblZzYkR0Y2JpQWdkR2hwY3k1ZmQzSmhjSEJsY2xOMFlYUmxJRDBnYm5Wc2JEdGNiaUFnZEdocGN5NWZkRzl3VEdWMlpXeFhjbUZ3Y0dWeUlEMGdiblZzYkR0Y2JpQWdkR2hwY3k1ZmJtOWtaVmRwZEdoTVpXZGhZM2xRY205d1pYSjBhV1Z6SUQwZ2JuVnNiRHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0IwYUdsekxsOTFibkJ5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFlnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDNCeWIyTmxjM05sWkVOdmJuUmxlSFJFWlhZZ1BTQnVkV3hzTzF4dUlDQjlYRzU5WEc1Y2JsSmxZV04wUkU5TlEyOXRjRzl1Wlc1MExtUnBjM0JzWVhsT1lXMWxJRDBnSjFKbFlXTjBSRTlOUTI5dGNHOXVaVzUwSnp0Y2JseHVVbVZoWTNSRVQwMURiMjF3YjI1bGJuUXVUV2w0YVc0Z1BTQjdYRzVjYmlBZ1kyOXVjM1J5ZFdOME9pQm1kVzVqZEdsdmJpQW9aV3hsYldWdWRDa2dlMXh1SUNBZ0lIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBJRDBnWld4bGJXVnVkRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVnVaWEpoZEdWeklISnZiM1FnZEdGbklHMWhjbXQxY0NCMGFHVnVJSEpsWTNWeWMyVnpMaUJVYUdseklHMWxkR2h2WkNCb1lYTWdjMmxrWlNCbFptWmxZM1J6SUdGdVpGeHVJQ0FnS2lCcGN5QnViM1FnYVdSbGJYQnZkR1Z1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCeWIyOTBTVVFnVkdobElISnZiM1FnUkU5TklFbEVJR1p2Y2lCMGFHbHpJRzV2WkdVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibnhTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXVkR1Y0ZEZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRlJvWlNCamIyMXdkWFJsWkNCdFlYSnJkWEF1WEc0Z0lDQXFMMXh1SUNCdGIzVnVkRU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0hKdmIzUkpSQ3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcElIdGNiaUFnSUNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFSUQwZ2NtOXZkRWxFTzF4dVhHNGdJQ0FnZG1GeUlIQnliM0J6SUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNWNiaUFnSUNCemQybDBZMmdnS0hSb2FYTXVYM1JoWnlrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0FuYVdaeVlXMWxKenBjYmlBZ0lDQWdJR05oYzJVZ0oybHRaeWM2WEc0Z0lDQWdJQ0JqWVhObElDZG1iM0p0SnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1pwWkdWdkp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJGMVpHbHZKenBjYmlBZ0lDQWdJQ0FnZEdocGN5NWZkM0poY0hCbGNsTjBZWFJsSUQwZ2UxeHVJQ0FnSUNBZ0lDQWdJR3hwYzNSbGJtVnljem9nYm5Wc2JGeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0IwY21GdWMyRmpkR2x2Ymk1blpYUlNaV0ZqZEUxdmRXNTBVbVZoWkhrb0tTNWxibkYxWlhWbEtIUnlZWEJDZFdKaWJHVmtSWFpsYm5SelRHOWpZV3dzSUhSb2FYTXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjJKMWRIUnZiaWM2WEc0Z0lDQWdJQ0FnSUhCeWIzQnpJRDBnVW1WaFkzUkVUMDFDZFhSMGIyNHVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjJsdWNIVjBKenBjYmlBZ0lDQWdJQ0FnVW1WaFkzUkVUMDFKYm5CMWRDNXRiM1Z1ZEZkeVlYQndaWElvZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQndjbTl3Y3lBOUlGSmxZV04wUkU5TlNXNXdkWFF1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyOXdkR2x2YmljNlhHNGdJQ0FnSUNBZ0lGSmxZV04wUkU5TlQzQjBhVzl1TG0xdmRXNTBWM0poY0hCbGNpaDBhR2x6TENCd2NtOXdjeXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUhCeWIzQnpJRDBnVW1WaFkzUkVUMDFQY0hScGIyNHVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjNObGJHVmpkQ2M2WEc0Z0lDQWdJQ0FnSUZKbFlXTjBSRTlOVTJWc1pXTjBMbTF2ZFc1MFYzSmhjSEJsY2loMGFHbHpMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJSEJ5YjNCeklEMGdVbVZoWTNSRVQwMVRaV3hsWTNRdVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQmpiMjUwWlhoMElEMGdVbVZoWTNSRVQwMVRaV3hsWTNRdWNISnZZMlZ6YzBOb2FXeGtRMjl1ZEdWNGRDaDBhR2x6TENCd2NtOXdjeXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBbmRHVjRkR0Z5WldFbk9seHVJQ0FnSUNBZ0lDQlNaV0ZqZEVSUFRWUmxlSFJoY21WaExtMXZkVzUwVjNKaGNIQmxjaWgwYUdsekxDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lIQnliM0J6SUQwZ1VtVmhZM1JFVDAxVVpYaDBZWEpsWVM1blpYUk9ZWFJwZG1WUWNtOXdjeWgwYUdsekxDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmx4dUlDQWdJR0Z6YzJWeWRGWmhiR2xrVUhKdmNITW9kR2hwY3l3Z2NISnZjSE1wTzF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQnBaaUFvWTI5dWRHVjRkRnQyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1WVc1alpYTjBiM0pKYm1adlEyOXVkR1Y0ZEV0bGVWMHBJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuS0hSb2FYTXVYM1JoWnl3Z2RHaHBjeXdnWTI5dWRHVjRkRnQyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1WVc1alpYTjBiM0pKYm1adlEyOXVkR1Y0ZEV0bGVWMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDkxYm5CeWIyTmxjM05sWkVOdmJuUmxlSFJFWlhZZ1BTQmpiMjUwWlhoME8xeHVJQ0FnSUNBZ2RHaHBjeTVmY0hKdlkyVnpjMlZrUTI5dWRHVjRkRVJsZGlBOUlIQnliMk5sYzNORGFHbHNaRU52Ym5SbGVIUkVaWFlvWTI5dWRHVjRkQ3dnZEdocGN5azdYRzRnSUNBZ0lDQmpiMjUwWlhoMElEMGdkR2hwY3k1ZmNISnZZMlZ6YzJWa1EyOXVkR1Y0ZEVSbGRqdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdiVzkxYm5SSmJXRm5aVHRjYmlBZ0lDQnBaaUFvZEhKaGJuTmhZM1JwYjI0dWRYTmxRM0psWVhSbFJXeGxiV1Z1ZENrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzkzYm1WeVJHOWpkVzFsYm5RZ1BTQmpiMjUwWlhoMFcxSmxZV04wVFc5MWJuUXViM2R1WlhKRWIyTjFiV1Z1ZEVOdmJuUmxlSFJMWlhsZE8xeHVJQ0FnSUNBZ2RtRnlJR1ZzSUQwZ2IzZHVaWEpFYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMblI1Y0dVcE8xeHVJQ0FnSUNBZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpMbk5sZEVGMGRISnBZblYwWlVadmNrbEVLR1ZzTENCMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0FnSUM4dklGQnZjSFZzWVhSbElHNXZaR1VnWTJGamFHVmNiaUFnSUNBZ0lGSmxZV04wVFc5MWJuUXVaMlYwU1VRb1pXd3BPMXh1SUNBZ0lDQWdkR2hwY3k1ZmRYQmtZWFJsUkU5TlVISnZjR1Z5ZEdsbGN5aDdmU3dnY0hKdmNITXNJSFJ5WVc1ellXTjBhVzl1TENCbGJDazdYRzRnSUNBZ0lDQjBhR2x6TGw5amNtVmhkR1ZKYm1sMGFXRnNRMmhwYkdSeVpXNG9kSEpoYm5OaFkzUnBiMjRzSUhCeWIzQnpMQ0JqYjI1MFpYaDBMQ0JsYkNrN1hHNGdJQ0FnSUNCdGIzVnVkRWx0WVdkbElEMGdaV3c3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIWmhjaUIwWVdkUGNHVnVJRDBnZEdocGN5NWZZM0psWVhSbFQzQmxibFJoWjAxaGNtdDFjRUZ1WkZCMWRFeHBjM1JsYm1WeWN5aDBjbUZ1YzJGamRHbHZiaXdnY0hKdmNITXBPMXh1SUNBZ0lDQWdkbUZ5SUhSaFowTnZiblJsYm5RZ1BTQjBhR2x6TGw5amNtVmhkR1ZEYjI1MFpXNTBUV0Z5YTNWd0tIUnlZVzV6WVdOMGFXOXVMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQnBaaUFvSVhSaFowTnZiblJsYm5RZ0ppWWdiMjFwZEhSbFpFTnNiM05sVkdGbmMxdDBhR2x6TGw5MFlXZGRLU0I3WEc0Z0lDQWdJQ0FnSUcxdmRXNTBTVzFoWjJVZ1BTQjBZV2RQY0dWdUlDc2dKeTgrSnp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUcxdmRXNTBTVzFoWjJVZ1BTQjBZV2RQY0dWdUlDc2dKejRuSUNzZ2RHRm5RMjl1ZEdWdWRDQXJJQ2M4THljZ0t5QjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzUwZVhCbElDc2dKejRuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSE4zYVhSamFDQW9kR2hwY3k1ZmRHRm5LU0I3WEc0Z0lDQWdJQ0JqWVhObElDZHBibkIxZENjNlhHNGdJQ0FnSUNBZ0lIUnlZVzV6WVdOMGFXOXVMbWRsZEZKbFlXTjBUVzkxYm5SU1pXRmtlU2dwTG1WdWNYVmxkV1VvYlc5MWJuUlNaV0ZrZVVsdWNIVjBWM0poY0hCbGNpd2dkR2hwY3lrN1hHNGdJQ0FnSUNBdkx5Qm1ZV3hzY3lCMGFISnZkV2RvWEc0Z0lDQWdJQ0JqWVhObElDZGlkWFIwYjI0bk9seHVJQ0FnSUNBZ1kyRnpaU0FuYzJWc1pXTjBKenBjYmlBZ0lDQWdJR05oYzJVZ0ozUmxlSFJoY21WaEp6cGNiaUFnSUNBZ0lDQWdhV1lnS0hCeWIzQnpMbUYxZEc5R2IyTjFjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIUnlZVzV6WVdOMGFXOXVMbWRsZEZKbFlXTjBUVzkxYm5SU1pXRmtlU2dwTG1WdWNYVmxkV1VvUVhWMGIwWnZZM1Z6VlhScGJITXVabTlqZFhORVQwMURiMjF3YjI1bGJuUXNJSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ0YjNWdWRFbHRZV2RsTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdWeklHMWhjbXQxY0NCbWIzSWdkR2hsSUc5d1pXNGdkR0ZuSUdGdVpDQmhiR3dnWVhSMGNtbGlkWFJsY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dWR2hwY3lCdFpYUm9iMlFnYUdGeklITnBaR1VnWldabVpXTjBjeUJpWldOaGRYTmxJR1YyWlc1MGN5Qm5aWFFnY21WbmFYTjBaWEpsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dTWFJsY21GMGFXNW5JRzkyWlhJZ2IySnFaV04wSUhCeWIzQmxjblJwWlhNZ2FYTWdabUZ6ZEdWeUlIUm9ZVzRnYVhSbGNtRjBhVzVuSUc5MlpYSWdZWEp5WVhsekxseHVJQ0FnS2lCQWMyVmxJR2gwZEhBNkx5OXFjM0JsY21ZdVkyOXRMMjlpYWkxMmN5MWhjbkl0YVhSbGNtRjBhVzl1WEc0Z0lDQXFYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibnhTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NISnZjSE5jYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQk5ZWEpyZFhBZ2IyWWdiM0JsYm1sdVp5QjBZV2N1WEc0Z0lDQXFMMXh1SUNCZlkzSmxZWFJsVDNCbGJsUmhaMDFoY210MWNFRnVaRkIxZEV4cGMzUmxibVZ5Y3pvZ1puVnVZM1JwYjI0Z0tIUnlZVzV6WVdOMGFXOXVMQ0J3Y205d2N5a2dlMXh1SUNBZ0lIWmhjaUJ5WlhRZ1BTQW5QQ2NnS3lCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNTBlWEJsTzF4dVhHNGdJQ0FnWm05eUlDaDJZWElnY0hKdmNFdGxlU0JwYmlCd2NtOXdjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRndjbTl3Y3k1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1MyVjVLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQndjbTl3Vm1Gc2RXVWdQU0J3Y205d2MxdHdjbTl3UzJWNVhUdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d1ZtRnNkV1VnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaHlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsY3k1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1MyVjVLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9jSEp2Y0ZaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pXNXhkV1YxWlZCMWRFeHBjM1JsYm1WeUtIUm9hWE11WDNKdmIzUk9iMlJsU1VRc0lIQnliM0JMWlhrc0lIQnliM0JXWVd4MVpTd2dkSEpoYm5OaFkzUnBiMjRwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCcFppQW9jSEp2Y0V0bGVTQTlQVDBnVTFSWlRFVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9jSEp2Y0ZaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QlRaV1VnWUY5MWNHUmhkR1ZFVDAxUWNtOXdaWEowYVdWellDNGdjM1I1YkdVZ1lteHZZMnRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaU0E5SUhCeWIzQldZV3gxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnliM0JXWVd4MVpTQTlJSFJvYVhNdVgzQnlaWFpwYjNWelUzUjViR1ZEYjNCNUlEMGdZWE56YVdkdUtIdDlMQ0J3Y205d2N5NXpkSGxzWlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUhCeWIzQldZV3gxWlNBOUlFTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeTVqY21WaGRHVk5ZWEpyZFhCR2IzSlRkSGxzWlhNb2NISnZjRlpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0IyWVhJZ2JXRnlhM1Z3SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WDNSaFp5QWhQU0J1ZFd4c0lDWW1JR2x6UTNWemRHOXRRMjl0Y0c5dVpXNTBLSFJvYVhNdVgzUmhaeXdnY0hKdmNITXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5YjNCTFpYa2dJVDA5SUVOSVNVeEVVa1ZPS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WVhKcmRYQWdQU0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdVkzSmxZWFJsVFdGeWEzVndSbTl5UTNWemRHOXRRWFIwY21saWRYUmxLSEJ5YjNCTFpYa3NJSEJ5YjNCV1lXeDFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJRzFoY210MWNDQTlJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1amNtVmhkR1ZOWVhKcmRYQkdiM0pRY205d1pYSjBlU2h3Y205d1MyVjVMQ0J3Y205d1ZtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2h0WVhKcmRYQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUWdLejBnSnlBbklDc2diV0Z5YTNWd08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSbTl5SUhOMFlYUnBZeUJ3WVdkbGN5d2dibThnYm1WbFpDQjBieUJ3ZFhRZ1VtVmhZM1FnU1VRZ1lXNWtJR05vWldOcmMzVnRMaUJUWVhabGN5QnNiM1J6SUc5bVhHNGdJQ0FnTHk4Z1lubDBaWE11WEc0Z0lDQWdhV1lnS0hSeVlXNXpZV04wYVc5dUxuSmxibVJsY2xSdlUzUmhkR2xqVFdGeWEzVndLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCdFlYSnJkWEJHYjNKSlJDQTlJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3k1amNtVmhkR1ZOWVhKcmRYQkdiM0pKUkNoMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0J5WlhSMWNtNGdjbVYwSUNzZ0p5QW5JQ3NnYldGeWEzVndSbTl5U1VRN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpYTWdiV0Z5YTNWd0lHWnZjaUIwYUdVZ1kyOXVkR1Z1ZENCaVpYUjNaV1Z1SUhSb1pTQjBZV2R6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjSEpwZG1GMFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjU4VW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1kVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlIQnliM0J6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQmpiMjUwWlhoMFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnUTI5dWRHVnVkQ0J0WVhKcmRYQXVYRzRnSUNBcUwxeHVJQ0JmWTNKbFlYUmxRMjl1ZEdWdWRFMWhjbXQxY0RvZ1puVnVZM1JwYjI0Z0tIUnlZVzV6WVdOMGFXOXVMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJ5WlhRZ1BTQW5KenRjYmx4dUlDQWdJQzh2SUVsdWRHVnVkR2x2Ym1Gc0lIVnpaU0J2WmlBaFBTQjBieUJoZG05cFpDQmpZWFJqYUdsdVp5QjZaWEp2TDJaaGJITmxMbHh1SUNBZ0lIWmhjaUJwYm01bGNraFVUVXdnUFNCd2NtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlREdGNiaUFnSUNCcFppQW9hVzV1WlhKSVZFMU1JQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR2xtSUNocGJtNWxja2hVVFV3dVgxOW9kRzFzSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBJRDBnYVc1dVpYSklWRTFNTGw5ZmFIUnRiRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJR052Ym5SbGJuUlViMVZ6WlNBOUlFTlBUbFJGVGxSZlZGbFFSVk5iZEhsd1pXOW1JSEJ5YjNCekxtTm9hV3hrY21WdVhTQS9JSEJ5YjNCekxtTm9hV3hrY21WdUlEb2diblZzYkR0Y2JpQWdJQ0FnSUhaaGNpQmphR2xzWkhKbGJsUnZWWE5sSUQwZ1kyOXVkR1Z1ZEZSdlZYTmxJQ0U5SUc1MWJHd2dQeUJ1ZFd4c0lEb2djSEp2Y0hNdVkyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNCcFppQW9ZMjl1ZEdWdWRGUnZWWE5sSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWRTlFVHpvZ1ZtRnNhV1JoZEdVZ2RHaGhkQ0IwWlhoMElHbHpJR0ZzYkc5M1pXUWdZWE1nWVNCamFHbHNaQ0J2WmlCMGFHbHpJRzV2WkdWY2JpQWdJQ0FnSUNBZ2NtVjBJRDBnWlhOallYQmxWR1Y0ZEVOdmJuUmxiblJHYjNKQ2NtOTNjMlZ5S0dOdmJuUmxiblJVYjFWelpTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR05vYVd4a2NtVnVWRzlWYzJVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnYlc5MWJuUkpiV0ZuWlhNZ1BTQjBhR2x6TG0xdmRXNTBRMmhwYkdSeVpXNG9ZMmhwYkdSeVpXNVViMVZ6WlN3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0J5WlhRZ1BTQnRiM1Z1ZEVsdFlXZGxjeTVxYjJsdUtDY25LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLRzVsZDJ4cGJtVkZZWFJwYm1kVVlXZHpXM1JvYVhNdVgzUmhaMTBnSmlZZ2NtVjBMbU5vWVhKQmRDZ3dLU0E5UFQwZ0oxeGNiaWNwSUh0Y2JpQWdJQ0FnSUM4dklIUmxlSFF2YUhSdGJDQnBaMjV2Y21WeklIUm9aU0JtYVhKemRDQmphR0Z5WVdOMFpYSWdhVzRnZEdobGMyVWdkR0ZuY3lCcFppQnBkQ2R6SUdFZ2JtVjNiR2x1WlZ4dUlDQWdJQ0FnTHk4Z1VISmxabVZ5SUhSdklHSnlaV0ZySUdGd2NHeHBZMkYwYVc5dUwzaHRiQ0J2ZG1WeUlIUmxlSFF2YUhSdGJDQW9abTl5SUc1dmR5a2dZbmtnWVdSa2FXNW5YRzRnSUNBZ0lDQXZMeUJoSUc1bGQyeHBibVVnYzNCbFkybG1hV05oYkd4NUlIUnZJR2RsZENCbFlYUmxiaUJpZVNCMGFHVWdjR0Z5YzJWeUxpQW9RV3gwWlhKdVlYUmxiSGtnWm05eVhHNGdJQ0FnSUNBdkx5QjBaWGgwWVhKbFlYTXNJSEpsY0d4aFkybHVaeUJjSWw1Y1hHNWNJaUIzYVhSb0lGd2lYRnh5WEZ4dVhDSWdaRzlsYzI0bmRDQm5aWFFnWldGMFpXNHNJR0Z1WkNCMGFHVWdabWx5YzNSY2JpQWdJQ0FnSUM4dklGeGNjaUJwY3lCdWIzSnRZV3hwZW1Wa0lHOTFkQ0JpZVNCSVZFMU1WR1Y0ZEVGeVpXRkZiR1Z0Wlc1MEkzWmhiSFZsTGlsY2JpQWdJQ0FnSUM4dklGTmxaVG9nUEdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wyaDBiV3d0Y0c5c2VXZHNiM1F2STI1bGQyeHBibVZ6TFdsdUxYUmxlSFJoY21WaExXRnVaQzF3Y21VK1hHNGdJQ0FnSUNBdkx5QlRaV1U2SUR4b2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOW9kRzFzTlM5emVXNTBZWGd1YUhSdGJDTmxiR1Z0Wlc1MExYSmxjM1J5YVdOMGFXOXVjejVjYmlBZ0lDQWdJQzh2SUZObFpUb2dQR2gwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMVJTTDJoMGJXdzFMM041Ym5SaGVDNW9kRzFzSTI1bGQyeHBibVZ6UGx4dUlDQWdJQ0FnTHk4Z1UyVmxPaUJRWVhKemFXNW5JRzltSUZ3aWRHVjRkR0Z5WldGY0lpQmNJbXhwYzNScGJtZGNJaUJoYm1RZ1hDSndjbVZjSWlCbGJHVnRaVzUwYzF4dUlDQWdJQ0FnTHk4Z0lHWnliMjBnUEdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wyaDBiV3cxTDNONWJuUmhlQzVvZEcxc0kzQmhjbk5wYm1jdGJXRnBiaTFwYm1KdlpIaytYRzRnSUNBZ0lDQnlaWFIxY200Z0oxeGNiaWNnS3lCeVpYUTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lGOWpjbVZoZEdWSmJtbDBhV0ZzUTJocGJHUnlaVzQ2SUdaMWJtTjBhVzl1SUNoMGNtRnVjMkZqZEdsdmJpd2djSEp2Y0hNc0lHTnZiblJsZUhRc0lHVnNLU0I3WEc0Z0lDQWdMeThnU1c1MFpXNTBhVzl1WVd3Z2RYTmxJRzltSUNFOUlIUnZJR0YyYjJsa0lHTmhkR05vYVc1bklIcGxjbTh2Wm1Gc2MyVXVYRzRnSUNBZ2RtRnlJR2x1Ym1WeVNGUk5UQ0E5SUhCeWIzQnpMbVJoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTU8xeHVJQ0FnSUdsbUlDaHBibTVsY2toVVRVd2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0dsdWJtVnlTRlJOVEM1ZlgyaDBiV3dnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCelpYUkpibTVsY2toVVRVd29aV3dzSUdsdWJtVnlTRlJOVEM1ZlgyaDBiV3dwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjJZWElnWTI5dWRHVnVkRlJ2VlhObElEMGdRMDlPVkVWT1ZGOVVXVkJGVTF0MGVYQmxiMllnY0hKdmNITXVZMmhwYkdSeVpXNWRJRDhnY0hKdmNITXVZMmhwYkdSeVpXNGdPaUJ1ZFd4c08xeHVJQ0FnSUNBZ2RtRnlJR05vYVd4a2NtVnVWRzlWYzJVZ1BTQmpiMjUwWlc1MFZHOVZjMlVnSVQwZ2JuVnNiQ0EvSUc1MWJHd2dPaUJ3Y205d2N5NWphR2xzWkhKbGJqdGNiaUFnSUNBZ0lHbG1JQ2hqYjI1MFpXNTBWRzlWYzJVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJVVDBSUE9pQldZV3hwWkdGMFpTQjBhR0YwSUhSbGVIUWdhWE1nWVd4c2IzZGxaQ0JoY3lCaElHTm9hV3hrSUc5bUlIUm9hWE1nYm05a1pWeHVJQ0FnSUNBZ0lDQnpaWFJVWlhoMFEyOXVkR1Z1ZENobGJDd2dZMjl1ZEdWdWRGUnZWWE5sS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyaHBiR1J5Wlc1VWIxVnpaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnRiM1Z1ZEVsdFlXZGxjeUE5SUhSb2FYTXViVzkxYm5SRGFHbHNaSEpsYmloamFHbHNaSEpsYmxSdlZYTmxMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diVzkxYm5SSmJXRm5aWE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0JsYkM1aGNIQmxibVJEYUdsc1pDaHRiM1Z1ZEVsdFlXZGxjMXRwWFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWTJWcGRtVnpJR0VnYm1WNGRDQmxiR1Z0Wlc1MElHRnVaQ0IxY0dSaGRHVnpJSFJvWlNCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnYm1WNGRFVnNaVzFsYm5SY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVmRkpsWVdOMFUyVnlkbVZ5VW1WdVpHVnlhVzVuVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCamIyNTBaWGgwWEc0Z0lDQXFMMXh1SUNCeVpXTmxhWFpsUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb2JtVjRkRVZzWlcxbGJuUXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlIQnlaWFpGYkdWdFpXNTBJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RZ1BTQnVaWGgwUld4bGJXVnVkRHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaVU52YlhCdmJtVnVkQ2gwY21GdWMyRmpkR2x2Yml3Z2NISmxka1ZzWlcxbGJuUXNJRzVsZUhSRmJHVnRaVzUwTENCamIyNTBaWGgwS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWEJrWVhSbGN5QmhJRzVoZEdsMlpTQkVUMDBnWTI5dGNHOXVaVzUwSUdGbWRHVnlJR2wwSUdoaGN5QmhiSEpsWVdSNUlHSmxaVzRnWVd4c2IyTmhkR1ZrSUdGdVpGeHVJQ0FnS2lCaGRIUmhZMmhsWkNCMGJ5QjBhR1VnUkU5TkxpQlNaV052Ym1OcGJHVnpJSFJvWlNCeWIyOTBJRVJQVFNCdWIyUmxMQ0IwYUdWdUlISmxZM1Z5YzJWekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCd2NtVjJSV3hsYldWdWRGeHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdibVY0ZEVWc1pXMWxiblJjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUlFQnZkbVZ5Y21sa1lXSnNaVnh1SUNBZ0tpOWNiaUFnZFhCa1lYUmxRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvZEhKaGJuTmhZM1JwYjI0c0lIQnlaWFpGYkdWdFpXNTBMQ0J1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQnNZWE4wVUhKdmNITWdQU0J3Y21WMlJXeGxiV1Z1ZEM1d2NtOXdjenRjYmlBZ0lDQjJZWElnYm1WNGRGQnliM0J6SUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNWNiaUFnSUNCemQybDBZMmdnS0hSb2FYTXVYM1JoWnlrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0FuWW5WMGRHOXVKenBjYmlBZ0lDQWdJQ0FnYkdGemRGQnliM0J6SUQwZ1VtVmhZM1JFVDAxQ2RYUjBiMjR1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2JHRnpkRkJ5YjNCektUdGNiaUFnSUNBZ0lDQWdibVY0ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFDZFhSMGIyNHVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnYm1WNGRGQnliM0J6S1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZHBibkIxZENjNlhHNGdJQ0FnSUNBZ0lGSmxZV04wUkU5TlNXNXdkWFF1ZFhCa1lYUmxWM0poY0hCbGNpaDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ2JHRnpkRkJ5YjNCeklEMGdVbVZoWTNSRVQwMUpibkIxZEM1blpYUk9ZWFJwZG1WUWNtOXdjeWgwYUdsekxDQnNZWE4wVUhKdmNITXBPMXh1SUNBZ0lDQWdJQ0J1WlhoMFVISnZjSE1nUFNCU1pXRmpkRVJQVFVsdWNIVjBMbWRsZEU1aGRHbDJaVkJ5YjNCektIUm9hWE1zSUc1bGVIUlFjbTl3Y3lrN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5iM0IwYVc5dUp6cGNiaUFnSUNBZ0lDQWdiR0Z6ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFQY0hScGIyNHVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnYkdGemRGQnliM0J6S1R0Y2JpQWdJQ0FnSUNBZ2JtVjRkRkJ5YjNCeklEMGdVbVZoWTNSRVQwMVBjSFJwYjI0dVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2dibVY0ZEZCeWIzQnpLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkelpXeGxZM1FuT2x4dUlDQWdJQ0FnSUNCc1lYTjBVSEp2Y0hNZ1BTQlNaV0ZqZEVSUFRWTmxiR1ZqZEM1blpYUk9ZWFJwZG1WUWNtOXdjeWgwYUdsekxDQnNZWE4wVUhKdmNITXBPMXh1SUNBZ0lDQWdJQ0J1WlhoMFVISnZjSE1nUFNCU1pXRmpkRVJQVFZObGJHVmpkQzVuWlhST1lYUnBkbVZRY205d2N5aDBhR2x6TENCdVpYaDBVSEp2Y0hNcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKM1JsZUhSaGNtVmhKenBjYmlBZ0lDQWdJQ0FnVW1WaFkzUkVUMDFVWlhoMFlYSmxZUzUxY0dSaGRHVlhjbUZ3Y0dWeUtIUm9hWE1wTzF4dUlDQWdJQ0FnSUNCc1lYTjBVSEp2Y0hNZ1BTQlNaV0ZqZEVSUFRWUmxlSFJoY21WaExtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJR3hoYzNSUWNtOXdjeWs3WEc0Z0lDQWdJQ0FnSUc1bGVIUlFjbTl3Y3lBOUlGSmxZV04wUkU5TlZHVjRkR0Z5WldFdVoyVjBUbUYwYVhabFVISnZjSE1vZEdocGN5d2dibVY0ZEZCeWIzQnpLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUM4dklFbG1JSFJvWlNCamIyNTBaWGgwSUdseklISmxabVZ5Wlc1alpTMWxjWFZoYkNCMGJ5QjBhR1VnYjJ4a0lHOXVaU3dnY0dGemN5QmtiM2R1SUhSb1pTQnpZVzFsWEc0Z0lDQWdJQ0F2THlCd2NtOWpaWE56WldRZ2IySnFaV04wSUhOdklIUm9aU0IxY0dSaGRHVWdZbUZwYkc5MWRDQnBiaUJTWldGamRGSmxZMjl1WTJsc1pYSWdZbVZvWVhabGMxeHVJQ0FnSUNBZ0x5OGdZMjl5Y21WamRHeDVJQ2hoYm1RZ2FXUmxiblJwWTJGc2JIa2dhVzRnWkdWMklHRnVaQ0J3Y205a0tTNGdVMlZsSUNNMU1EQTFMbHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVYM1Z1Y0hKdlkyVnpjMlZrUTI5dWRHVjRkRVJsZGlBaFBUMGdZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOTFibkJ5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFlnUFNCamIyNTBaWGgwTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl3Y205alpYTnpaV1JEYjI1MFpYaDBSR1YySUQwZ2NISnZZMlZ6YzBOb2FXeGtRMjl1ZEdWNGRFUmxkaWhqYjI1MFpYaDBMQ0IwYUdsektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHTnZiblJsZUhRZ1BTQjBhR2x6TGw5d2NtOWpaWE56WldSRGIyNTBaWGgwUkdWMk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdGemMyVnlkRlpoYkdsa1VISnZjSE1vZEdocGN5d2dibVY0ZEZCeWIzQnpLVHRjYmlBZ0lDQjBhR2x6TGw5MWNHUmhkR1ZFVDAxUWNtOXdaWEowYVdWektHeGhjM1JRY205d2N5d2dibVY0ZEZCeWIzQnpMQ0IwY21GdWMyRmpkR2x2Yml3Z2JuVnNiQ2s3WEc0Z0lDQWdkR2hwY3k1ZmRYQmtZWFJsUkU5TlEyaHBiR1J5Wlc0b2JHRnpkRkJ5YjNCekxDQnVaWGgwVUhKdmNITXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JseHVJQ0FnSUdsbUlDZ2hZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa2dKaVlnZEdocGN5NWZibTlrWlZkcGRHaE1aV2RoWTNsUWNtOXdaWEowYVdWektTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5dWIyUmxWMmwwYUV4bFoyRmplVkJ5YjNCbGNuUnBaWE11Y0hKdmNITWdQU0J1WlhoMFVISnZjSE03WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM1JoWnlBOVBUMGdKM05sYkdWamRDY3BJSHRjYmlBZ0lDQWdJQzh2SUR4elpXeGxZM1ErSUhaaGJIVmxJSFZ3WkdGMFpTQnVaV1ZrY3lCMGJ5QnZZMk4xY2lCaFpuUmxjaUE4YjNCMGFXOXVQaUJqYUdsc1pISmxibHh1SUNBZ0lDQWdMeThnY21WamIyNWphV3hwWVhScGIyNWNiaUFnSUNBZ0lIUnlZVzV6WVdOMGFXOXVMbWRsZEZKbFlXTjBUVzkxYm5SU1pXRmtlU2dwTG1WdWNYVmxkV1VvY0c5emRGVndaR0YwWlZObGJHVmpkRmR5WVhCd1pYSXNJSFJvYVhNcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVZqYjI1amFXeGxjeUIwYUdVZ2NISnZjR1Z5ZEdsbGN5QmllU0JrWlhSbFkzUnBibWNnWkdsbVptVnlaVzVqWlhNZ2FXNGdjSEp2Y0dWeWRIa2dkbUZzZFdWeklHRnVaRnh1SUNBZ0tpQjFjR1JoZEdsdVp5QjBhR1VnUkU5TklHRnpJRzVsWTJWemMyRnllUzRnVkdocGN5Qm1kVzVqZEdsdmJpQnBjeUJ3Y205aVlXSnNlU0IwYUdVZ2MybHVaMnhsSUcxdmMzUmNiaUFnSUNvZ1kzSnBkR2xqWVd3Z2NHRjBhQ0JtYjNJZ2NHVnlabTl5YldGdVkyVWdiM0IwYVcxcGVtRjBhVzl1TGx4dUlDQWdLbHh1SUNBZ0tpQlVUMFJQT2lCQ1pXNWphRzFoY21zZ2QyaGxkR2hsY2lCamFHVmphMmx1WnlCbWIzSWdZMmhoYm1kbFpDQjJZV3gxWlhNZ2FXNGdiV1Z0YjNKNUlHRmpkSFZoYkd4NVhHNGdJQ0FxSUNBZ0lDQWdJR2x0Y0hKdmRtVnpJSEJsY21admNtMWhibU5sSUNobGMzQmxZMmxoYkd4NUlITjBZWFJwWTJGc2JIa2djRzl6YVhScGIyNWxaQ0JsYkdWdFpXNTBjeWt1WEc0Z0lDQXFJRlJQUkU4NklFSmxibU5vYldGeWF5QjBhR1VnWldabVpXTjBjeUJ2WmlCd2RYUjBhVzVuSUhSb2FYTWdZWFFnZEdobElIUnZjQ0J6YVc1alpTQTVPU1VnYjJZZ2NISnZjSE5jYmlBZ0lDb2dJQ0FnSUNBZ1pHOGdibTkwSUdOb1lXNW5aU0JtYjNJZ1lTQm5hWFpsYmlCeVpXTnZibU5wYkdsaGRHbHZiaTVjYmlBZ0lDb2dWRTlFVHpvZ1FtVnVZMmh0WVhKcklHRnlaV0Z6SUhSb1lYUWdZMkZ1SUdKbElHbHRjSEp2ZG1Wa0lIZHBkR2dnWTJGamFHbHVaeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR3hoYzNSUWNtOXdjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2JtVjRkRkJ5YjNCelhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvUkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaVnh1SUNBZ0tpOWNiaUFnWDNWd1pHRjBaVVJQVFZCeWIzQmxjblJwWlhNNklHWjFibU4wYVc5dUlDaHNZWE4wVUhKdmNITXNJRzVsZUhSUWNtOXdjeXdnZEhKaGJuTmhZM1JwYjI0c0lHNXZaR1VwSUh0Y2JpQWdJQ0IyWVhJZ2NISnZjRXRsZVR0Y2JpQWdJQ0IyWVhJZ2MzUjViR1ZPWVcxbE8xeHVJQ0FnSUhaaGNpQnpkSGxzWlZWd1pHRjBaWE03WEc0Z0lDQWdabTl5SUNod2NtOXdTMlY1SUdsdUlHeGhjM1JRY205d2N5a2dlMXh1SUNBZ0lDQWdhV1lnS0c1bGVIUlFjbTl3Y3k1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1MyVjVLU0I4ZkNBaGJHRnpkRkJ5YjNCekxtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQkxaWGtwS1NCN1hHNGdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSEJ5YjNCTFpYa2dQVDA5SUZOVVdVeEZLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnNZWE4wVTNSNWJHVWdQU0IwYUdsekxsOXdjbVYyYVc5MWMxTjBlV3hsUTI5d2VUdGNiaUFnSUNBZ0lDQWdabTl5SUNoemRIbHNaVTVoYldVZ2FXNGdiR0Z6ZEZOMGVXeGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR3hoYzNSVGRIbHNaUzVvWVhOUGQyNVFjbTl3WlhKMGVTaHpkSGxzWlU1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkSGxzWlZWd1pHRjBaWE1nUFNCemRIbHNaVlZ3WkdGMFpYTWdmSHdnZTMwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEhsc1pWVndaR0YwWlhOYmMzUjViR1ZPWVcxbFhTQTlJQ2NuTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0IwYUdsekxsOXdjbVYyYVc5MWMxTjBlV3hsUTI5d2VTQTlJRzUxYkd3N1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tISmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCTFpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHNZWE4wVUhKdmNITmJjSEp2Y0V0bGVWMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlBibXg1SUdOaGJHd2daR1ZzWlhSbFRHbHpkR1Z1WlhJZ2FXWWdkR2hsY21VZ2QyRnpJR0VnYkdsemRHVnVaWElnY0hKbGRtbHZkWE5zZVNCdmNseHVJQ0FnSUNBZ0lDQWdJQzh2SUdWc2MyVWdkMmxzYkVSbGJHVjBaVXhwYzNSbGJtVnlJR2RsZEhNZ1kyRnNiR1ZrSUhkb1pXNGdkR2hsY21VZ2QyRnpiaWQwSUdGamRIVmhiR3g1SUdGY2JpQWdJQ0FnSUNBZ0lDQXZMeUJzYVhOMFpXNWxjaUFvWlM1bkxpd2diMjVEYkdsamF6MTdiblZzYkgwcFhHNGdJQ0FnSUNBZ0lDQWdaR1ZzWlhSbFRHbHpkR1Z1WlhJb2RHaHBjeTVmY205dmRFNXZaR1ZKUkN3Z2NISnZjRXRsZVNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9SRTlOVUhKdmNHVnlkSGt1Y0hKdmNHVnlkR2xsYzF0d2NtOXdTMlY1WFNCOGZDQkVUMDFRY205d1pYSjBlUzVwYzBOMWMzUnZiVUYwZEhKcFluVjBaU2h3Y205d1MyVjVLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9JVzV2WkdVcElIdGNiaUFnSUNBZ0lDQWdJQ0J1YjJSbElEMGdVbVZoWTNSTmIzVnVkQzVuWlhST2IyUmxLSFJvYVhNdVgzSnZiM1JPYjJSbFNVUXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NWtaV3hsZEdWV1lXeDFaVVp2Y2xCeWIzQmxjblI1S0c1dlpHVXNJSEJ5YjNCTFpYa3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCbWIzSWdLSEJ5YjNCTFpYa2dhVzRnYm1WNGRGQnliM0J6S1NCN1hHNGdJQ0FnSUNCMllYSWdibVY0ZEZCeWIzQWdQU0J1WlhoMFVISnZjSE5iY0hKdmNFdGxlVjA3WEc0Z0lDQWdJQ0IyWVhJZ2JHRnpkRkJ5YjNBZ1BTQndjbTl3UzJWNUlEMDlQU0JUVkZsTVJTQS9JSFJvYVhNdVgzQnlaWFpwYjNWelUzUjViR1ZEYjNCNUlEb2diR0Z6ZEZCeWIzQnpXM0J5YjNCTFpYbGRPMXh1SUNBZ0lDQWdhV1lnS0NGdVpYaDBVSEp2Y0hNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFdGxlU2tnZkh3Z2JtVjRkRkJ5YjNBZ1BUMDlJR3hoYzNSUWNtOXdLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tIQnliM0JMWlhrZ1BUMDlJRk5VV1V4RktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNodVpYaDBVSEp2Y0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamFHVmphMEZ1WkZkaGNtNUdiM0pOZFhSaGRHVmtVM1I1YkdVb2RHaHBjeTVmY0hKbGRtbHZkWE5UZEhsc1pVTnZjSGtzSUhSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdVc0lIUm9hWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaU0E5SUc1bGVIUlFjbTl3TzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0J1WlhoMFVISnZjQ0E5SUhSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdWRGIzQjVJRDBnWVhOemFXZHVLSHQ5TENCdVpYaDBVSEp2Y0NrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaVU52Y0hrZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2hzWVhOMFVISnZjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRlZ1YzJWMElITjBlV3hsY3lCdmJpQmdiR0Z6ZEZCeWIzQmdJR0oxZENCdWIzUWdiMjRnWUc1bGVIUlFjbTl3WUM1Y2JpQWdJQ0FnSUNBZ0lDQm1iM0lnS0hOMGVXeGxUbUZ0WlNCcGJpQnNZWE4wVUhKdmNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3hoYzNSUWNtOXdMbWhoYzA5M2JsQnliM0JsY25SNUtITjBlV3hsVG1GdFpTa2dKaVlnS0NGdVpYaDBVSEp2Y0NCOGZDQWhibVY0ZEZCeWIzQXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2MzUjViR1ZPWVcxbEtTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdWVmNHUmhkR1Z6SUQwZ2MzUjViR1ZWY0dSaGRHVnpJSHg4SUh0OU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVlZ3WkdGMFpYTmJjM1I1YkdWT1lXMWxYU0E5SUNjbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0F2THlCVmNHUmhkR1VnYzNSNWJHVnpJSFJvWVhRZ1kyaGhibWRsWkNCemFXNWpaU0JnYkdGemRGQnliM0JnTGx4dUlDQWdJQ0FnSUNBZ0lHWnZjaUFvYzNSNWJHVk9ZVzFsSUdsdUlHNWxlSFJRY205d0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ibVY0ZEZCeWIzQXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2MzUjViR1ZPWVcxbEtTQW1KaUJzWVhOMFVISnZjRnR6ZEhsc1pVNWhiV1ZkSUNFOVBTQnVaWGgwVUhKdmNGdHpkSGxzWlU1aGJXVmRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFZYQmtZWFJsY3lBOUlITjBlV3hsVlhCa1lYUmxjeUI4ZkNCN2ZUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2MzUjViR1ZWY0dSaGRHVnpXM04wZVd4bFRtRnRaVjBnUFNCdVpYaDBVSEp2Y0Z0emRIbHNaVTVoYldWZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCU1pXeHBaWE1nYjI0Z1lIVndaR0YwWlZOMGVXeGxjMEo1U1VSZ0lHNXZkQ0J0ZFhSaGRHbHVaeUJnYzNSNWJHVlZjR1JoZEdWellDNWNiaUFnSUNBZ0lDQWdJQ0J6ZEhsc1pWVndaR0YwWlhNZ1BTQnVaWGgwVUhKdmNEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2NtOXdTMlY1S1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYm1WNGRGQnliM0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmxibkYxWlhWbFVIVjBUR2x6ZEdWdVpYSW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDd2djSEp2Y0V0bGVTd2dibVY0ZEZCeWIzQXNJSFJ5WVc1ellXTjBhVzl1S1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHNZWE4wVUhKdmNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdSbGJHVjBaVXhwYzNSbGJtVnlLSFJvYVhNdVgzSnZiM1JPYjJSbFNVUXNJSEJ5YjNCTFpYa3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dselEzVnpkRzl0UTI5dGNHOXVaVzUwS0hSb2FYTXVYM1JoWnl3Z2JtVjRkRkJ5YjNCektTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXNXZaR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJPYjJSbEtIUm9hWE11WDNKdmIzUk9iMlJsU1VRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNod2NtOXdTMlY1SUQwOVBTQkRTRWxNUkZKRlRpa2dlMXh1SUNBZ0lDQWdJQ0FnSUc1bGVIUlFjbTl3SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVjMlYwVm1Gc2RXVkdiM0pCZEhSeWFXSjFkR1VvYm05a1pTd2djSEp2Y0V0bGVTd2dibVY0ZEZCeWIzQXBPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hFVDAxUWNtOXdaWEowZVM1d2NtOXdaWEowYVdWelczQnliM0JMWlhsZElIeDhJRVJQVFZCeWIzQmxjblI1TG1selEzVnpkRzl0UVhSMGNtbGlkWFJsS0hCeWIzQkxaWGtwS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doYm05a1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUc1dlpHVWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0x5OGdTV1lnZDJVbmNtVWdkWEJrWVhScGJtY2dkRzhnYm5Wc2JDQnZjaUIxYm1SbFptbHVaV1FzSUhkbElITm9iM1ZzWkNCeVpXMXZkbVVnZEdobElIQnliM0JsY25SNVhHNGdJQ0FnSUNBZ0lDOHZJR1p5YjIwZ2RHaGxJRVJQVFNCdWIyUmxJR2x1YzNSbFlXUWdiMllnYVc1aFpIWmxjblJoYm5Sc2VTQnpaWFIwYVc1bklIUnZJR0VnYzNSeWFXNW5MaUJVYUdselhHNGdJQ0FnSUNBZ0lDOHZJR0p5YVc1bmN5QjFjeUJwYmlCc2FXNWxJSGRwZEdnZ2RHaGxJSE5oYldVZ1ltVm9ZWFpwYjNJZ2QyVWdhR0YyWlNCdmJpQnBibWwwYVdGc0lISmxibVJsY2k1Y2JpQWdJQ0FnSUNBZ2FXWWdLRzVsZUhSUWNtOXdJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnSUNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVjMlYwVm1Gc2RXVkdiM0pRY205d1pYSjBlU2h1YjJSbExDQndjbTl3UzJWNUxDQnVaWGgwVUhKdmNDazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekxtUmxiR1YwWlZaaGJIVmxSbTl5VUhKdmNHVnlkSGtvYm05a1pTd2djSEp2Y0V0bGVTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSE4wZVd4bFZYQmtZWFJsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0Z1YjJSbEtTQjdYRzRnSUNBZ0lDQWdJRzV2WkdVZ1BTQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQkRVMU5RY205d1pYSjBlVTl3WlhKaGRHbHZibk11YzJWMFZtRnNkV1ZHYjNKVGRIbHNaWE1vYm05a1pTd2djM1I1YkdWVmNHUmhkR1Z6S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxZMjl1WTJsc1pYTWdkR2hsSUdOb2FXeGtjbVZ1SUhkcGRHZ2dkR2hsSUhaaGNtbHZkWE1nY0hKdmNHVnlkR2xsY3lCMGFHRjBJR0ZtWm1WamRDQjBhR1ZjYmlBZ0lDb2dZMmhwYkdSeVpXNGdZMjl1ZEdWdWRDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR3hoYzNSUWNtOXdjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2JtVjRkRkJ5YjNCelhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052Ym5SbGVIUmNiaUFnSUNvdlhHNGdJRjkxY0dSaGRHVkVUMDFEYUdsc1pISmxiam9nWm5WdVkzUnBiMjRnS0d4aGMzUlFjbTl3Y3l3Z2JtVjRkRkJ5YjNCekxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCc1lYTjBRMjl1ZEdWdWRDQTlJRU5QVGxSRlRsUmZWRmxRUlZOYmRIbHdaVzltSUd4aGMzUlFjbTl3Y3k1amFHbHNaSEpsYmwwZ1B5QnNZWE4wVUhKdmNITXVZMmhwYkdSeVpXNGdPaUJ1ZFd4c08xeHVJQ0FnSUhaaGNpQnVaWGgwUTI5dWRHVnVkQ0E5SUVOUFRsUkZUbFJmVkZsUVJWTmJkSGx3Wlc5bUlHNWxlSFJRY205d2N5NWphR2xzWkhKbGJsMGdQeUJ1WlhoMFVISnZjSE11WTJocGJHUnlaVzRnT2lCdWRXeHNPMXh1WEc0Z0lDQWdkbUZ5SUd4aGMzUklkRzFzSUQwZ2JHRnpkRkJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNSUNZbUlHeGhjM1JRY205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEM1ZlgyaDBiV3c3WEc0Z0lDQWdkbUZ5SUc1bGVIUklkRzFzSUQwZ2JtVjRkRkJ5YjNCekxtUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNSUNZbUlHNWxlSFJRY205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEM1ZlgyaDBiV3c3WEc1Y2JpQWdJQ0F2THlCT2IzUmxJSFJvWlNCMWMyVWdiMllnWUNFOVlDQjNhR2xqYUNCamFHVmphM01nWm05eUlHNTFiR3dnYjNJZ2RXNWtaV1pwYm1Wa0xseHVJQ0FnSUhaaGNpQnNZWE4wUTJocGJHUnlaVzRnUFNCc1lYTjBRMjl1ZEdWdWRDQWhQU0J1ZFd4c0lEOGdiblZzYkNBNklHeGhjM1JRY205d2N5NWphR2xzWkhKbGJqdGNiaUFnSUNCMllYSWdibVY0ZEVOb2FXeGtjbVZ1SUQwZ2JtVjRkRU52Ym5SbGJuUWdJVDBnYm5Wc2JDQS9JRzUxYkd3Z09pQnVaWGgwVUhKdmNITXVZMmhwYkdSeVpXNDdYRzVjYmlBZ0lDQXZMeUJKWmlCM1pTZHlaU0J6ZDJsMFkyaHBibWNnWm5KdmJTQmphR2xzWkhKbGJpQjBieUJqYjI1MFpXNTBMMmgwYld3Z2IzSWdkbWxqWlNCMlpYSnpZU3dnY21WdGIzWmxYRzRnSUNBZ0x5OGdkR2hsSUc5c1pDQmpiMjUwWlc1MFhHNGdJQ0FnZG1GeUlHeGhjM1JJWVhORGIyNTBaVzUwVDNKSWRHMXNJRDBnYkdGemRFTnZiblJsYm5RZ0lUMGdiblZzYkNCOGZDQnNZWE4wU0hSdGJDQWhQU0J1ZFd4c08xeHVJQ0FnSUhaaGNpQnVaWGgwU0dGelEyOXVkR1Z1ZEU5eVNIUnRiQ0E5SUc1bGVIUkRiMjUwWlc1MElDRTlJRzUxYkd3Z2ZId2dibVY0ZEVoMGJXd2dJVDBnYm5Wc2JEdGNiaUFnSUNCcFppQW9iR0Z6ZEVOb2FXeGtjbVZ1SUNFOUlHNTFiR3dnSmlZZ2JtVjRkRU5vYVd4a2NtVnVJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsUTJocGJHUnlaVzRvYm5Wc2JDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYkdGemRFaGhjME52Ym5SbGJuUlBja2gwYld3Z0ppWWdJVzVsZUhSSVlYTkRiMjUwWlc1MFQzSklkRzFzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWUmxlSFJEYjI1MFpXNTBLQ2NuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JtVjRkRU52Ym5SbGJuUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0d4aGMzUkRiMjUwWlc1MElDRTlQU0J1WlhoMFEyOXVkR1Z1ZENrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaVlJsZUhSRGIyNTBaVzUwS0NjbklDc2dibVY0ZEVOdmJuUmxiblFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvYm1WNGRFaDBiV3dnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHeGhjM1JJZEcxc0lDRTlQU0J1WlhoMFNIUnRiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpVMWhjbXQxY0Nnbkp5QXJJRzVsZUhSSWRHMXNLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzVsZUhSRGFHbHNaSEpsYmlBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpVTm9hV3hrY21WdUtHNWxlSFJEYUdsc1pISmxiaXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1Z6ZEhKdmVYTWdZV3hzSUdWMlpXNTBJSEpsWjJsemRISmhkR2x2Ym5NZ1ptOXlJSFJvYVhNZ2FXNXpkR0Z1WTJVdUlFUnZaWE1nYm05MElISmxiVzkyWlNCbWNtOXRYRzRnSUNBcUlIUm9aU0JFVDAwdUlGUm9ZWFFnYlhWemRDQmlaU0JrYjI1bElHSjVJSFJvWlNCd1lYSmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdkVzV0YjNWdWRFTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSE4zYVhSamFDQW9kR2hwY3k1ZmRHRm5LU0I3WEc0Z0lDQWdJQ0JqWVhObElDZHBabkpoYldVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYVcxbkp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJadmNtMG5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmRtbGtaVzhuT2x4dUlDQWdJQ0FnWTJGelpTQW5ZWFZrYVc4bk9seHVJQ0FnSUNBZ0lDQjJZWElnYkdsemRHVnVaWEp6SUQwZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbExteHBjM1JsYm1WeWN6dGNiaUFnSUNBZ0lDQWdhV1lnS0d4cGMzUmxibVZ5Y3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYkdsemRHVnVaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FYTjBaVzVsY25OYmFWMHVjbVZ0YjNabEtDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5hVzV3ZFhRbk9seHVJQ0FnSUNBZ0lDQlNaV0ZqZEVSUFRVbHVjSFYwTG5WdWJXOTFiblJYY21Gd2NHVnlLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKMmgwYld3bk9seHVJQ0FnSUNBZ1kyRnpaU0FuYUdWaFpDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkaWIyUjVKenBjYmlBZ0lDQWdJQ0FnTHlvcVhHNGdJQ0FnSUNBZ0lDQXFJRU52YlhCdmJtVnVkSE1nYkdsclpTQThhSFJ0YkQ0Z1BHaGxZV1ErSUdGdVpDQThZbTlrZVQ0Z1kyRnVKM1FnWW1VZ2NtVnRiM1psWkNCdmNpQmhaR1JsWkZ4dUlDQWdJQ0FnSUNBZ0tpQmxZWE5wYkhrZ2FXNGdZU0JqY205emN5MWljbTkzYzJWeUlIZGhlU3dnYUc5M1pYWmxjaUJwZENkeklIWmhiSFZoWW14bElIUnZJR0psSUdGaWJHVWdkRzljYmlBZ0lDQWdJQ0FnSUNvZ2RHRnJaU0JoWkhaaGJuUmhaMlVnYjJZZ1VtVmhZM1FuY3lCeVpXTnZibU5wYkdsaGRHbHZiaUJtYjNJZ2MzUjViR2x1WnlCaGJtUWdQSFJwZEd4bFBseHVJQ0FnSUNBZ0lDQWdLaUJ0WVc1aFoyVnRaVzUwTGlCVGJ5QjNaU0JxZFhOMElHUnZZM1Z0Wlc1MElHbDBJR0Z1WkNCMGFISnZkeUJwYmlCa1lXNW5aWEp2ZFhNZ1kyRnpaWE11WEc0Z0lDQWdJQ0FnSUNBcUwxeHVJQ0FnSUNBZ0lDQWhabUZzYzJVZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUENWelBpQjBjbWxsWkNCMGJ5QjFibTF2ZFc1MExpQkNaV05oZFhObElHOW1JR055YjNOekxXSnliM2R6WlhJZ2NYVnBjbXR6SUdsMElHbHpJQ2NnS3lBbmFXMXdiM056YVdKc1pTQjBieUIxYm0xdmRXNTBJSE52YldVZ2RHOXdMV3hsZG1Wc0lHTnZiWEJ2Ym1WdWRITWdLR1ZuSUR4b2RHMXNQaXdnSnlBcklDYzhhR1ZoWkQ0c0lHRnVaQ0E4WW05a2VUNHBJSEpsYkdsaFlteDVJR0Z1WkNCbFptWnBZMmxsYm5Sc2VTNGdWRzhnWm1sNElIUm9hWE1zSUdoaGRtVWdZU0FuSUNzZ0ozTnBibWRzWlNCMGIzQXRiR1YyWld3Z1kyOXRjRzl1Wlc1MElIUm9ZWFFnYm1WMlpYSWdkVzV0YjNWdWRITWdjbVZ1WkdWeUlIUm9aWE5sSUNjZ0t5QW5aV3hsYldWdWRITXVKeXdnZEdocGN5NWZkR0ZuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVkVzV0YjNWdWRFTm9hV3hrY21WdUtDazdYRzRnSUNBZ1VtVmhZM1JDY205M2MyVnlSWFpsYm5SRmJXbDBkR1Z5TG1SbGJHVjBaVUZzYkV4cGMzUmxibVZ5Y3loMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0JTWldGamRFTnZiWEJ2Ym1WdWRFSnliM2R6WlhKRmJuWnBjbTl1YldWdWRDNTFibTF2ZFc1MFNVUkdjbTl0Ulc1MmFYSnZibTFsYm5Rb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrN1hHNGdJQ0FnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0E5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVmZDNKaGNIQmxjbE4wWVhSbElEMGdiblZzYkR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JtOWtaU0E5SUhSb2FYTXVYMjV2WkdWWGFYUm9UR1ZuWVdONVVISnZjR1Z5ZEdsbGN6dGNiaUFnSUNBZ0lHNXZaR1V1WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdaMlYwVUhWaWJHbGpTVzV6ZEdGdVkyVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11WDI1dlpHVlhhWFJvVEdWbllXTjVVSEp2Y0dWeWRHbGxjeWtnZTF4dUlDQWdJQ0FnZG1GeUlHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrN1hHNWNiaUFnSUNBZ0lHNXZaR1V1WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUWdQU0IwYUdsek8xeHVJQ0FnSUNBZ2JtOWtaUzVuWlhSRVQwMU9iMlJsSUQwZ2JHVm5ZV041UjJWMFJFOU5UbTlrWlR0Y2JpQWdJQ0FnSUc1dlpHVXVhWE5OYjNWdWRHVmtJRDBnYkdWbllXTjVTWE5OYjNWdWRHVmtPMXh1SUNBZ0lDQWdibTlrWlM1elpYUlRkR0YwWlNBOUlHeGxaMkZqZVZObGRGTjBZWFJsUlhSak8xeHVJQ0FnSUNBZ2JtOWtaUzV5WlhCc1lXTmxVM1JoZEdVZ1BTQnNaV2RoWTNsVFpYUlRkR0YwWlVWMFl6dGNiaUFnSUNBZ0lHNXZaR1V1Wm05eVkyVlZjR1JoZEdVZ1BTQnNaV2RoWTNsVFpYUlRkR0YwWlVWMFl6dGNiaUFnSUNBZ0lHNXZaR1V1YzJWMFVISnZjSE1nUFNCc1pXZGhZM2xUWlhSUWNtOXdjenRjYmlBZ0lDQWdJRzV2WkdVdWNtVndiR0ZqWlZCeWIzQnpJRDBnYkdWbllXTjVVbVZ3YkdGalpWQnliM0J6TzF4dVhHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWh1YjJSbExDQnNaV2RoWTNsUWNtOXdjMFJsYzJOeWFYQjBiM0lwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWRDQjNhV3hzSUhWd1pHRjBaU0IwYUdseklIQnliM0JsY25SNUlHOXVJSE4xWW5ObGNYVmxiblFnY21WdVpHVnljMXh1SUNBZ0lDQWdJQ0FnSUc1dlpHVXVjSEp2Y0hNZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdMeThnZFhCa1lYUmxRMjl0Y0c5dVpXNTBJSGRwYkd3Z2RYQmtZWFJsSUhSb2FYTWdjSEp2Y0dWeWRIa2diMjRnYzNWaWMyVnhkV1Z1ZENCeVpXNWtaWEp6WEc0Z0lDQWdJQ0FnSUc1dlpHVXVjSEp2Y0hNZ1BTQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkR2hwY3k1ZmJtOWtaVmRwZEdoTVpXZGhZM2xRY205d1pYSjBhV1Z6SUQwZ2JtOWtaVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMjV2WkdWWGFYUm9UR1ZuWVdONVVISnZjR1Z5ZEdsbGN6dGNiaUFnZlZ4dVhHNTlPMXh1WEc1U1pXRmpkRkJsY21ZdWJXVmhjM1Z5WlUxbGRHaHZaSE1vVW1WaFkzUkVUMDFEYjIxd2IyNWxiblFzSUNkU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZENjc0lIdGNiaUFnYlc5MWJuUkRiMjF3YjI1bGJuUTZJQ2R0YjNWdWRFTnZiWEJ2Ym1WdWRDY3NYRzRnSUhWd1pHRjBaVU52YlhCdmJtVnVkRG9nSjNWd1pHRjBaVU52YlhCdmJtVnVkQ2RjYm4wcE8xeHVYRzVoYzNOcFoyNG9VbVZoWTNSRVQwMURiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxMQ0JTWldGamRFUlBUVU52YlhCdmJtVnVkQzVOYVhocGJpd2dVbVZoWTNSTmRXeDBhVU5vYVd4a0xrMXBlR2x1S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWREc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUZhY3Rvcmllc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG5cbnZhciBtYXBPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9tYXBPYmplY3QnKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1MIHRhZyBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRhZyBuYW1lIChlLmcuIGBkaXZgKS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURPTUZhY3RvcnkodGFnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5KHRhZyk7XG4gIH1cbiAgcmV0dXJuIFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5KHRhZyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQgSFRNTCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5cbiAqIFRoaXMgaXMgYWxzbyBhY2Nlc3NpYmxlIHZpYSBgUmVhY3QuRE9NYC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IG1hcE9iamVjdCh7XG4gIGE6ICdhJyxcbiAgYWJicjogJ2FiYnInLFxuICBhZGRyZXNzOiAnYWRkcmVzcycsXG4gIGFyZWE6ICdhcmVhJyxcbiAgYXJ0aWNsZTogJ2FydGljbGUnLFxuICBhc2lkZTogJ2FzaWRlJyxcbiAgYXVkaW86ICdhdWRpbycsXG4gIGI6ICdiJyxcbiAgYmFzZTogJ2Jhc2UnLFxuICBiZGk6ICdiZGknLFxuICBiZG86ICdiZG8nLFxuICBiaWc6ICdiaWcnLFxuICBibG9ja3F1b3RlOiAnYmxvY2txdW90ZScsXG4gIGJvZHk6ICdib2R5JyxcbiAgYnI6ICdicicsXG4gIGJ1dHRvbjogJ2J1dHRvbicsXG4gIGNhbnZhczogJ2NhbnZhcycsXG4gIGNhcHRpb246ICdjYXB0aW9uJyxcbiAgY2l0ZTogJ2NpdGUnLFxuICBjb2RlOiAnY29kZScsXG4gIGNvbDogJ2NvbCcsXG4gIGNvbGdyb3VwOiAnY29sZ3JvdXAnLFxuICBkYXRhOiAnZGF0YScsXG4gIGRhdGFsaXN0OiAnZGF0YWxpc3QnLFxuICBkZDogJ2RkJyxcbiAgZGVsOiAnZGVsJyxcbiAgZGV0YWlsczogJ2RldGFpbHMnLFxuICBkZm46ICdkZm4nLFxuICBkaWFsb2c6ICdkaWFsb2cnLFxuICBkaXY6ICdkaXYnLFxuICBkbDogJ2RsJyxcbiAgZHQ6ICdkdCcsXG4gIGVtOiAnZW0nLFxuICBlbWJlZDogJ2VtYmVkJyxcbiAgZmllbGRzZXQ6ICdmaWVsZHNldCcsXG4gIGZpZ2NhcHRpb246ICdmaWdjYXB0aW9uJyxcbiAgZmlndXJlOiAnZmlndXJlJyxcbiAgZm9vdGVyOiAnZm9vdGVyJyxcbiAgZm9ybTogJ2Zvcm0nLFxuICBoMTogJ2gxJyxcbiAgaDI6ICdoMicsXG4gIGgzOiAnaDMnLFxuICBoNDogJ2g0JyxcbiAgaDU6ICdoNScsXG4gIGg2OiAnaDYnLFxuICBoZWFkOiAnaGVhZCcsXG4gIGhlYWRlcjogJ2hlYWRlcicsXG4gIGhncm91cDogJ2hncm91cCcsXG4gIGhyOiAnaHInLFxuICBodG1sOiAnaHRtbCcsXG4gIGk6ICdpJyxcbiAgaWZyYW1lOiAnaWZyYW1lJyxcbiAgaW1nOiAnaW1nJyxcbiAgaW5wdXQ6ICdpbnB1dCcsXG4gIGluczogJ2lucycsXG4gIGtiZDogJ2tiZCcsXG4gIGtleWdlbjogJ2tleWdlbicsXG4gIGxhYmVsOiAnbGFiZWwnLFxuICBsZWdlbmQ6ICdsZWdlbmQnLFxuICBsaTogJ2xpJyxcbiAgbGluazogJ2xpbmsnLFxuICBtYWluOiAnbWFpbicsXG4gIG1hcDogJ21hcCcsXG4gIG1hcms6ICdtYXJrJyxcbiAgbWVudTogJ21lbnUnLFxuICBtZW51aXRlbTogJ21lbnVpdGVtJyxcbiAgbWV0YTogJ21ldGEnLFxuICBtZXRlcjogJ21ldGVyJyxcbiAgbmF2OiAnbmF2JyxcbiAgbm9zY3JpcHQ6ICdub3NjcmlwdCcsXG4gIG9iamVjdDogJ29iamVjdCcsXG4gIG9sOiAnb2wnLFxuICBvcHRncm91cDogJ29wdGdyb3VwJyxcbiAgb3B0aW9uOiAnb3B0aW9uJyxcbiAgb3V0cHV0OiAnb3V0cHV0JyxcbiAgcDogJ3AnLFxuICBwYXJhbTogJ3BhcmFtJyxcbiAgcGljdHVyZTogJ3BpY3R1cmUnLFxuICBwcmU6ICdwcmUnLFxuICBwcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgcTogJ3EnLFxuICBycDogJ3JwJyxcbiAgcnQ6ICdydCcsXG4gIHJ1Ynk6ICdydWJ5JyxcbiAgczogJ3MnLFxuICBzYW1wOiAnc2FtcCcsXG4gIHNjcmlwdDogJ3NjcmlwdCcsXG4gIHNlY3Rpb246ICdzZWN0aW9uJyxcbiAgc2VsZWN0OiAnc2VsZWN0JyxcbiAgc21hbGw6ICdzbWFsbCcsXG4gIHNvdXJjZTogJ3NvdXJjZScsXG4gIHNwYW46ICdzcGFuJyxcbiAgc3Ryb25nOiAnc3Ryb25nJyxcbiAgc3R5bGU6ICdzdHlsZScsXG4gIHN1YjogJ3N1YicsXG4gIHN1bW1hcnk6ICdzdW1tYXJ5JyxcbiAgc3VwOiAnc3VwJyxcbiAgdGFibGU6ICd0YWJsZScsXG4gIHRib2R5OiAndGJvZHknLFxuICB0ZDogJ3RkJyxcbiAgdGV4dGFyZWE6ICd0ZXh0YXJlYScsXG4gIHRmb290OiAndGZvb3QnLFxuICB0aDogJ3RoJyxcbiAgdGhlYWQ6ICd0aGVhZCcsXG4gIHRpbWU6ICd0aW1lJyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHRyOiAndHInLFxuICB0cmFjazogJ3RyYWNrJyxcbiAgdTogJ3UnLFxuICB1bDogJ3VsJyxcbiAgJ3Zhcic6ICd2YXInLFxuICB2aWRlbzogJ3ZpZGVvJyxcbiAgd2JyOiAnd2JyJyxcblxuICAvLyBTVkdcbiAgY2lyY2xlOiAnY2lyY2xlJyxcbiAgY2xpcFBhdGg6ICdjbGlwUGF0aCcsXG4gIGRlZnM6ICdkZWZzJyxcbiAgZWxsaXBzZTogJ2VsbGlwc2UnLFxuICBnOiAnZycsXG4gIGltYWdlOiAnaW1hZ2UnLFxuICBsaW5lOiAnbGluZScsXG4gIGxpbmVhckdyYWRpZW50OiAnbGluZWFyR3JhZGllbnQnLFxuICBtYXNrOiAnbWFzaycsXG4gIHBhdGg6ICdwYXRoJyxcbiAgcGF0dGVybjogJ3BhdHRlcm4nLFxuICBwb2x5Z29uOiAncG9seWdvbicsXG4gIHBvbHlsaW5lOiAncG9seWxpbmUnLFxuICByYWRpYWxHcmFkaWVudDogJ3JhZGlhbEdyYWRpZW50JyxcbiAgcmVjdDogJ3JlY3QnLFxuICBzdG9wOiAnc3RvcCcsXG4gIHN2ZzogJ3N2ZycsXG4gIHRleHQ6ICd0ZXh0JyxcbiAgdHNwYW46ICd0c3BhbidcblxufSwgY3JlYXRlRE9NRmFjdG9yeSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01GYWN0b3JpZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUlBUVVpoWTNSdmNtbGxjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JFVDAxR1lXTjBiM0pwWlhOY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRmJHVnRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWc1pXMWxiblFuS1R0Y2JuWmhjaUJTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2ljcE8xeHVYRzUyWVhJZ2JXRndUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZiV0Z3VDJKcVpXTjBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsSUdFZ1ptRmpkRzl5ZVNCMGFHRjBJR055WldGMFpYTWdTRlJOVENCMFlXY2daV3hsYldWdWRITXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUmhaeUJVWVdjZ2JtRnRaU0FvWlM1bkxpQmdaR2wyWUNrdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtIUmhaeWtnZTF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJdVkzSmxZWFJsUm1GamRHOXllU2gwWVdjcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCU1pXRmpkRVZzWlcxbGJuUXVZM0psWVhSbFJtRmpkRzl5ZVNoMFlXY3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQnRZWEJ3YVc1bklHWnliMjBnYzNWd2NHOXlkR1ZrSUVoVVRVd2dkR0ZuY3lCMGJ5QmdVbVZoWTNSRVQwMURiMjF3YjI1bGJuUmdJR05zWVhOelpYTXVYRzRnS2lCVWFHbHpJR2x6SUdGc2MyOGdZV05qWlhOemFXSnNaU0IyYVdFZ1lGSmxZV04wTGtSUFRXQXVYRzRnS2x4dUlDb2dRSEIxWW14cFkxeHVJQ292WEc1MllYSWdVbVZoWTNSRVQwMUdZV04wYjNKcFpYTWdQU0J0WVhCUFltcGxZM1FvZTF4dUlDQmhPaUFuWVNjc1hHNGdJR0ZpWW5JNklDZGhZbUp5Snl4Y2JpQWdZV1JrY21WemN6b2dKMkZrWkhKbGMzTW5MRnh1SUNCaGNtVmhPaUFuWVhKbFlTY3NYRzRnSUdGeWRHbGpiR1U2SUNkaGNuUnBZMnhsSnl4Y2JpQWdZWE5wWkdVNklDZGhjMmxrWlNjc1hHNGdJR0YxWkdsdk9pQW5ZWFZrYVc4bkxGeHVJQ0JpT2lBbllpY3NYRzRnSUdKaGMyVTZJQ2RpWVhObEp5eGNiaUFnWW1ScE9pQW5ZbVJwSnl4Y2JpQWdZbVJ2T2lBblltUnZKeXhjYmlBZ1ltbG5PaUFuWW1sbkp5eGNiaUFnWW14dlkydHhkVzkwWlRvZ0oySnNiMk5yY1hWdmRHVW5MRnh1SUNCaWIyUjVPaUFuWW05a2VTY3NYRzRnSUdKeU9pQW5ZbkluTEZ4dUlDQmlkWFIwYjI0NklDZGlkWFIwYjI0bkxGeHVJQ0JqWVc1MllYTTZJQ2RqWVc1MllYTW5MRnh1SUNCallYQjBhVzl1T2lBblkyRndkR2x2Ymljc1hHNGdJR05wZEdVNklDZGphWFJsSnl4Y2JpQWdZMjlrWlRvZ0oyTnZaR1VuTEZ4dUlDQmpiMnc2SUNkamIyd25MRnh1SUNCamIyeG5jbTkxY0RvZ0oyTnZiR2R5YjNWd0p5eGNiaUFnWkdGMFlUb2dKMlJoZEdFbkxGeHVJQ0JrWVhSaGJHbHpkRG9nSjJSaGRHRnNhWE4wSnl4Y2JpQWdaR1E2SUNka1pDY3NYRzRnSUdSbGJEb2dKMlJsYkNjc1hHNGdJR1JsZEdGcGJITTZJQ2RrWlhSaGFXeHpKeXhjYmlBZ1pHWnVPaUFuWkdadUp5eGNiaUFnWkdsaGJHOW5PaUFuWkdsaGJHOW5KeXhjYmlBZ1pHbDJPaUFuWkdsMkp5eGNiaUFnWkd3NklDZGtiQ2NzWEc0Z0lHUjBPaUFuWkhRbkxGeHVJQ0JsYlRvZ0oyVnRKeXhjYmlBZ1pXMWlaV1E2SUNkbGJXSmxaQ2NzWEc0Z0lHWnBaV3hrYzJWME9pQW5abWxsYkdSelpYUW5MRnh1SUNCbWFXZGpZWEIwYVc5dU9pQW5abWxuWTJGd2RHbHZiaWNzWEc0Z0lHWnBaM1Z5WlRvZ0oyWnBaM1Z5WlNjc1hHNGdJR1p2YjNSbGNqb2dKMlp2YjNSbGNpY3NYRzRnSUdadmNtMDZJQ2RtYjNKdEp5eGNiaUFnYURFNklDZG9NU2NzWEc0Z0lHZ3lPaUFuYURJbkxGeHVJQ0JvTXpvZ0oyZ3pKeXhjYmlBZ2FEUTZJQ2RvTkNjc1hHNGdJR2cxT2lBbmFEVW5MRnh1SUNCb05qb2dKMmcySnl4Y2JpQWdhR1ZoWkRvZ0oyaGxZV1FuTEZ4dUlDQm9aV0ZrWlhJNklDZG9aV0ZrWlhJbkxGeHVJQ0JvWjNKdmRYQTZJQ2RvWjNKdmRYQW5MRnh1SUNCb2Nqb2dKMmh5Snl4Y2JpQWdhSFJ0YkRvZ0oyaDBiV3duTEZ4dUlDQnBPaUFuYVNjc1hHNGdJR2xtY21GdFpUb2dKMmxtY21GdFpTY3NYRzRnSUdsdFp6b2dKMmx0Wnljc1hHNGdJR2x1Y0hWME9pQW5hVzV3ZFhRbkxGeHVJQ0JwYm5NNklDZHBibk1uTEZ4dUlDQnJZbVE2SUNkclltUW5MRnh1SUNCclpYbG5aVzQ2SUNkclpYbG5aVzRuTEZ4dUlDQnNZV0psYkRvZ0oyeGhZbVZzSnl4Y2JpQWdiR1ZuWlc1a09pQW5iR1ZuWlc1a0p5eGNiaUFnYkdrNklDZHNhU2NzWEc0Z0lHeHBibXM2SUNkc2FXNXJKeXhjYmlBZ2JXRnBiam9nSjIxaGFXNG5MRnh1SUNCdFlYQTZJQ2R0WVhBbkxGeHVJQ0J0WVhKck9pQW5iV0Z5YXljc1hHNGdJRzFsYm5VNklDZHRaVzUxSnl4Y2JpQWdiV1Z1ZFdsMFpXMDZJQ2R0Wlc1MWFYUmxiU2NzWEc0Z0lHMWxkR0U2SUNkdFpYUmhKeXhjYmlBZ2JXVjBaWEk2SUNkdFpYUmxjaWNzWEc0Z0lHNWhkam9nSjI1aGRpY3NYRzRnSUc1dmMyTnlhWEIwT2lBbmJtOXpZM0pwY0hRbkxGeHVJQ0J2WW1wbFkzUTZJQ2R2WW1wbFkzUW5MRnh1SUNCdmJEb2dKMjlzSnl4Y2JpQWdiM0IwWjNKdmRYQTZJQ2R2Y0hSbmNtOTFjQ2NzWEc0Z0lHOXdkR2x2YmpvZ0oyOXdkR2x2Ymljc1hHNGdJRzkxZEhCMWREb2dKMjkxZEhCMWRDY3NYRzRnSUhBNklDZHdKeXhjYmlBZ2NHRnlZVzA2SUNkd1lYSmhiU2NzWEc0Z0lIQnBZM1IxY21VNklDZHdhV04wZFhKbEp5eGNiaUFnY0hKbE9pQW5jSEpsSnl4Y2JpQWdjSEp2WjNKbGMzTTZJQ2R3Y205bmNtVnpjeWNzWEc0Z0lIRTZJQ2R4Snl4Y2JpQWdjbkE2SUNkeWNDY3NYRzRnSUhKME9pQW5jblFuTEZ4dUlDQnlkV0o1T2lBbmNuVmllU2NzWEc0Z0lITTZJQ2R6Snl4Y2JpQWdjMkZ0Y0RvZ0ozTmhiWEFuTEZ4dUlDQnpZM0pwY0hRNklDZHpZM0pwY0hRbkxGeHVJQ0J6WldOMGFXOXVPaUFuYzJWamRHbHZiaWNzWEc0Z0lITmxiR1ZqZERvZ0ozTmxiR1ZqZENjc1hHNGdJSE50WVd4c09pQW5jMjFoYkd3bkxGeHVJQ0J6YjNWeVkyVTZJQ2R6YjNWeVkyVW5MRnh1SUNCemNHRnVPaUFuYzNCaGJpY3NYRzRnSUhOMGNtOXVaem9nSjNOMGNtOXVaeWNzWEc0Z0lITjBlV3hsT2lBbmMzUjViR1VuTEZ4dUlDQnpkV0k2SUNkemRXSW5MRnh1SUNCemRXMXRZWEo1T2lBbmMzVnRiV0Z5ZVNjc1hHNGdJSE4xY0RvZ0ozTjFjQ2NzWEc0Z0lIUmhZbXhsT2lBbmRHRmliR1VuTEZ4dUlDQjBZbTlrZVRvZ0ozUmliMlI1Snl4Y2JpQWdkR1E2SUNkMFpDY3NYRzRnSUhSbGVIUmhjbVZoT2lBbmRHVjRkR0Z5WldFbkxGeHVJQ0IwWm05dmREb2dKM1JtYjI5MEp5eGNiaUFnZEdnNklDZDBhQ2NzWEc0Z0lIUm9aV0ZrT2lBbmRHaGxZV1FuTEZ4dUlDQjBhVzFsT2lBbmRHbHRaU2NzWEc0Z0lIUnBkR3hsT2lBbmRHbDBiR1VuTEZ4dUlDQjBjam9nSjNSeUp5eGNiaUFnZEhKaFkyczZJQ2QwY21GamF5Y3NYRzRnSUhVNklDZDFKeXhjYmlBZ2RXdzZJQ2QxYkNjc1hHNGdJQ2QyWVhJbk9pQW5kbUZ5Snl4Y2JpQWdkbWxrWlc4NklDZDJhV1JsYnljc1hHNGdJSGRpY2pvZ0ozZGljaWNzWEc1Y2JpQWdMeThnVTFaSFhHNGdJR05wY21Oc1pUb2dKMk5wY21Oc1pTY3NYRzRnSUdOc2FYQlFZWFJvT2lBblkyeHBjRkJoZEdnbkxGeHVJQ0JrWldaek9pQW5aR1ZtY3ljc1hHNGdJR1ZzYkdsd2MyVTZJQ2RsYkd4cGNITmxKeXhjYmlBZ1p6b2dKMmNuTEZ4dUlDQnBiV0ZuWlRvZ0oybHRZV2RsSnl4Y2JpQWdiR2x1WlRvZ0oyeHBibVVuTEZ4dUlDQnNhVzVsWVhKSGNtRmthV1Z1ZERvZ0oyeHBibVZoY2tkeVlXUnBaVzUwSnl4Y2JpQWdiV0Z6YXpvZ0oyMWhjMnNuTEZ4dUlDQndZWFJvT2lBbmNHRjBhQ2NzWEc0Z0lIQmhkSFJsY200NklDZHdZWFIwWlhKdUp5eGNiaUFnY0c5c2VXZHZiam9nSjNCdmJIbG5iMjRuTEZ4dUlDQndiMng1YkdsdVpUb2dKM0J2Ykhsc2FXNWxKeXhjYmlBZ2NtRmthV0ZzUjNKaFpHbGxiblE2SUNkeVlXUnBZV3hIY21Ga2FXVnVkQ2NzWEc0Z0lISmxZM1E2SUNkeVpXTjBKeXhjYmlBZ2MzUnZjRG9nSjNOMGIzQW5MRnh1SUNCemRtYzZJQ2R6ZG1jbkxGeHVJQ0IwWlhoME9pQW5kR1Y0ZENjc1hHNGdJSFJ6Y0dGdU9pQW5kSE53WVc0blhHNWNibjBzSUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUkU5TlJtRmpkRzl5YVdWek95SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NRmVhdHVyZUZsYWdzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSB7XG4gIHVzZUNyZWF0ZUVsZW1lbnQ6IGZhbHNlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmVhdHVyZUZsYWdzOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01JRE9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogRXJyb3JzIGZvciBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIG5vdCBiZSB1cGRhdGVkIHdpdGggYHVwZGF0ZVByb3BlcnR5QnlJRCgpYC5cbiAqXG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHByaXZhdGVcbiAqL1xudmFyIElOVkFMSURfUFJPUEVSVFlfRVJST1JTID0ge1xuICBkYW5nZXJvdXNseVNldElubmVySFRNTDogJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBzZXQgdXNpbmcgYHVwZGF0ZUlubmVySFRNTEJ5SUQoKWAuJyxcbiAgc3R5bGU6ICdgc3R5bGVgIG11c3QgYmUgc2V0IHVzaW5nIGB1cGRhdGVTdHlsZXNCeUlEKClgLidcbn07XG5cbi8qKlxuICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRlcyB0byBET00gbm9kZXMuXG4gKi9cbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHtcblxuICAvKipcbiAgICogVXBkYXRlcyBhIERPTSBub2RlIHdpdGggbmV3IHByb3BlcnR5IHZhbHVlcy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvXG4gICAqIHVwZGF0ZSBET00gcHJvcGVydGllcyBpbiBgRE9NUHJvcGVydHlgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIG5vZGUgdG8gdXBkYXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBBIHZhbGlkIHByb3BlcnR5IG5hbWUsIHNlZSBgRE9NUHJvcGVydHlgLlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIE5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdXBkYXRlUHJvcGVydHlCeUlEOiBmdW5jdGlvbiAoaWQsIG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUoaWQpO1xuICAgICEhSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlUHJvcGVydHlCeUlEKC4uLik6ICVzJywgSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlNbbmFtZV0pIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGluc3RlYWQgb2YgaW5hZHZlcnRhbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gYnJpbmdzIHVzIGluIGxpbmUgd2l0aCB0aGUgc2FtZSBiZWhhdmlvciB3ZSBoYXZlIG9uIGluaXRpYWwgcmVuZGVyLlxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYSBET00gbm9kZSB0aGF0IGV4aXN0cyBpbiB0aGUgZG9jdW1lbnQgd2l0aCBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiBjaGlsZCB0byBiZSByZXBsYWNlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBEYW5nZXJvdXMgbWFya3VwIHRvIGluamVjdCBpbiBwbGFjZSBvZiBjaGlsZC5cbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0Rhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH1cbiAgICovXG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDogZnVuY3Rpb24gKGlkLCBtYXJrdXApIHtcbiAgICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpZCk7XG4gICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG5vZGUsIG1hcmt1cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cbiAgICogQHBhcmFtIHthcnJheTxzdHJpbmc+fSBtYXJrdXAgTGlzdCBvZiBtYXJrdXAgc3RyaW5ncy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0aW9uICh1cGRhdGVzLCBtYXJrdXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVwZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHVwZGF0ZXNbaV0ucGFyZW50Tm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh1cGRhdGVzW2ldLnBhcmVudElEKTtcbiAgICB9XG4gICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKHVwZGF0ZXMsIG1hcmt1cCk7XG4gIH1cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhSZWFjdERPTUlET3BlcmF0aW9ucywgJ1JlYWN0RE9NSURPcGVyYXRpb25zJywge1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ6ICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQnLFxuICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ICdkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMnXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlET3BlcmF0aW9ucztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVSUFRVbEVUM0JsY21GMGFXOXVjeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRVJQVFVsRVQzQmxjbUYwYVc5dWMxeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMFJQVFVOb2FXeGtjbVZ1VDNCbGNtRjBhVzl1Y3ljcE8xeHVkbUZ5SUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5QTlJSEpsY1hWcGNtVW9KeTR2UkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekp5azdYRzUyWVhJZ1VtVmhZM1JOYjNWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5iM1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBVR1Z5WmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUVpYSm1KeWs3WEc1Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNibHh1THlvcVhHNGdLaUJGY25KdmNuTWdabTl5SUhCeWIzQmxjblJwWlhNZ2RHaGhkQ0J6YUc5MWJHUWdibTkwSUdKbElIVndaR0YwWldRZ2QybDBhQ0JnZFhCa1lYUmxVSEp2Y0dWeWRIbENlVWxFS0NsZ0xseHVJQ3BjYmlBcUlFQjBlWEJsSUh0dlltcGxZM1I5WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1MllYSWdTVTVXUVV4SlJGOVFVazlRUlZKVVdWOUZVbEpQVWxNZ1BTQjdYRzRnSUdSaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1PaUFuWUdSaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1ZQ0J0ZFhOMElHSmxJSE5sZENCMWMybHVaeUJnZFhCa1lYUmxTVzV1WlhKSVZFMU1RbmxKUkNncFlDNG5MRnh1SUNCemRIbHNaVG9nSjJCemRIbHNaV0FnYlhWemRDQmlaU0J6WlhRZ2RYTnBibWNnWUhWd1pHRjBaVk4wZVd4bGMwSjVTVVFvS1dBdUoxeHVmVHRjYmx4dUx5b3FYRzRnS2lCUGNHVnlZWFJwYjI1eklIVnpaV1FnZEc4Z2NISnZZMlZ6Y3lCMWNHUmhkR1Z6SUhSdklFUlBUU0J1YjJSbGN5NWNiaUFxTDF4dWRtRnlJRkpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6SUQwZ2UxeHVYRzRnSUM4cUtseHVJQ0FnS2lCVmNHUmhkR1Z6SUdFZ1JFOU5JRzV2WkdVZ2QybDBhQ0J1WlhjZ2NISnZjR1Z5ZEhrZ2RtRnNkV1Z6TGlCVWFHbHpJSE5vYjNWc1pDQnZibXg1SUdKbElIVnpaV1FnZEc5Y2JpQWdJQ29nZFhCa1lYUmxJRVJQVFNCd2NtOXdaWEowYVdWeklHbHVJR0JFVDAxUWNtOXdaWEowZVdBdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnBaQ0JKUkNCdlppQjBhR1VnYm05a1pTQjBieUIxY0dSaGRHVXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJRUVnZG1Gc2FXUWdjSEp2Y0dWeWRIa2dibUZ0WlN3Z2MyVmxJR0JFVDAxUWNtOXdaWEowZVdBdVhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ2RtRnNkV1VnVG1WM0lIWmhiSFZsSUc5bUlIUm9aU0J3Y205d1pYSjBlUzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0IxY0dSaGRHVlFjbTl3WlhKMGVVSjVTVVE2SUdaMWJtTjBhVzl1SUNocFpDd2dibUZ0WlN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0IyWVhJZ2JtOWtaU0E5SUZKbFlXTjBUVzkxYm5RdVoyVjBUbTlrWlNocFpDazdYRzRnSUNBZ0lTRkpUbFpCVEVsRVgxQlNUMUJGVWxSWlgwVlNVazlTVXk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkMWNHUmhkR1ZRY205d1pYSjBlVUo1U1VRb0xpNHVLVG9nSlhNbkxDQkpUbFpCVEVsRVgxQlNUMUJGVWxSWlgwVlNVazlTVTF0dVlXMWxYU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0x5OGdTV1lnZDJVbmNtVWdkWEJrWVhScGJtY2dkRzhnYm5Wc2JDQnZjaUIxYm1SbFptbHVaV1FzSUhkbElITm9iM1ZzWkNCeVpXMXZkbVVnZEdobElIQnliM0JsY25SNVhHNGdJQ0FnTHk4Z1puSnZiU0IwYUdVZ1JFOU5JRzV2WkdVZ2FXNXpkR1ZoWkNCdlppQnBibUZrZG1WeWRHRnVkR3g1SUhObGRIUnBibWNnZEc4Z1lTQnpkSEpwYm1jdUlGUm9hWE5jYmlBZ0lDQXZMeUJpY21sdVozTWdkWE1nYVc0Z2JHbHVaU0IzYVhSb0lIUm9aU0J6WVcxbElHSmxhR0YyYVc5eUlIZGxJR2hoZG1VZ2IyNGdhVzVwZEdsaGJDQnlaVzVrWlhJdVhHNGdJQ0FnYVdZZ0tIWmhiSFZsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NXpaWFJXWVd4MVpVWnZjbEJ5YjNCbGNuUjVLRzV2WkdVc0lHNWhiV1VzSUhaaGJIVmxLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpMbVJsYkdWMFpWWmhiSFZsUm05eVVISnZjR1Z5ZEhrb2JtOWtaU3dnYm1GdFpTazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhCc1lXTmxjeUJoSUVSUFRTQnViMlJsSUhSb1lYUWdaWGhwYzNSeklHbHVJSFJvWlNCa2IyTjFiV1Z1ZENCM2FYUm9JRzFoY210MWNDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR2xrSUVsRUlHOW1JR05vYVd4a0lIUnZJR0psSUhKbGNHeGhZMlZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiV0Z5YTNWd0lFUmhibWRsY205MWN5QnRZWEpyZFhBZ2RHOGdhVzVxWldOMElHbHVJSEJzWVdObElHOW1JR05vYVd4a0xseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ29nUUhObFpTQjdSR0Z1WjJWeUxtUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3ZlZ4dUlDQWdLaTljYmlBZ1pHRnVaMlZ5YjNWemJIbFNaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEJDZVVsRU9pQm1kVzVqZEdsdmJpQW9hV1FzSUcxaGNtdDFjQ2tnZTF4dUlDQWdJSFpoY2lCdWIyUmxJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0dsa0tUdGNiaUFnSUNCRVQwMURhR2xzWkhKbGJrOXdaWEpoZEdsdmJuTXVaR0Z1WjJWeWIzVnpiSGxTWlhCc1lXTmxUbTlrWlZkcGRHaE5ZWEpyZFhBb2JtOWtaU3dnYldGeWEzVndLVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsY3lCaElHTnZiWEJ2Ym1WdWRDZHpJR05vYVd4a2NtVnVJR0o1SUhCeWIyTmxjM05wYm1jZ1lTQnpaWEpwWlhNZ2IyWWdkWEJrWVhSbGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRoY25KaGVUeHZZbXBsWTNRK2ZTQjFjR1JoZEdWeklFeHBjM1FnYjJZZ2RYQmtZWFJsSUdOdmJtWnBaM1Z5WVhScGIyNXpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyRnljbUY1UEhOMGNtbHVaejU5SUcxaGNtdDFjQ0JNYVhOMElHOW1JRzFoY210MWNDQnpkSEpwYm1kekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHUmhibWRsY205MWMyeDVVSEp2WTJWemMwTm9hV3hrY21WdVZYQmtZWFJsY3pvZ1puVnVZM1JwYjI0Z0tIVndaR0YwWlhNc0lHMWhjbXQxY0NrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2RYQmtZWFJsY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdkWEJrWVhSbGMxdHBYUzV3WVhKbGJuUk9iMlJsSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJPYjJSbEtIVndaR0YwWlhOYmFWMHVjR0Z5Wlc1MFNVUXBPMXh1SUNBZ0lIMWNiaUFnSUNCRVQwMURhR2xzWkhKbGJrOXdaWEpoZEdsdmJuTXVjSEp2WTJWemMxVndaR0YwWlhNb2RYQmtZWFJsY3l3Z2JXRnlhM1Z3S1R0Y2JpQWdmVnh1ZlR0Y2JseHVVbVZoWTNSUVpYSm1MbTFsWVhOMWNtVk5aWFJvYjJSektGSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpMQ0FuVW1WaFkzUkVUMDFKUkU5d1pYSmhkR2x2Ym5NbkxDQjdYRzRnSUdSaGJtZGxjbTkxYzJ4NVVtVndiR0ZqWlU1dlpHVlhhWFJvVFdGeWEzVndRbmxKUkRvZ0oyUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3UW5sSlJDY3NYRzRnSUdSaGJtZGxjbTkxYzJ4NVVISnZZMlZ6YzBOb2FXeGtjbVZ1VlhCa1lYUmxjem9nSjJSaGJtZGxjbTkxYzJ4NVVISnZZMlZ6YzBOb2FXeGtjbVZ1VlhCa1lYUmxjeWRjYm4wcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NSW5wdXRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTtcbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVxdWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGluc3RhbmNlc0J5UmVhY3RJRCA9IHt9O1xuXG5mdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtcbiAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcbiAgICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZVxuICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBuYXRpdmUgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0aW9uYWxcbiAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9uc1xuICogdGhhdCBhZmZlY3QgdGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxuICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9yXG4gKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRgKVxuICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWApLlxuICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG4gKi9cbnZhciBSZWFjdERPTUlucHV0ID0ge1xuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgdmFyIGNoZWNrZWQgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldENoZWNrZWQocHJvcHMpO1xuXG4gICAgdmFyIG5hdGl2ZVByb3BzID0gYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgZGVmYXVsdENoZWNrZWQ6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgdmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG4gICAgICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVja2VkIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLFxuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5hdGl2ZVByb3BzO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ2lucHV0JywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICBpbml0aWFsQ2hlY2tlZDogcHJvcHMuZGVmYXVsdENoZWNrZWQgfHwgZmFsc2UsXG4gICAgICBpbml0aWFsVmFsdWU6IGRlZmF1bHRWYWx1ZSAhPSBudWxsID8gZGVmYXVsdFZhbHVlIDogbnVsbCxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdClcbiAgICB9O1xuICB9LFxuXG4gIG1vdW50UmVhZHlXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIC8vIENhbid0IGJlIGluIG1vdW50V3JhcHBlciBvciBlbHNlIHNlcnZlciByZW5kZXJpbmcgbGVha3MuXG4gICAgaW5zdGFuY2VzQnlSZWFjdElEW2luc3QuX3Jvb3ROb2RlSURdID0gaW5zdDtcbiAgfSxcblxuICB1bm1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICBkZWxldGUgaW5zdGFuY2VzQnlSZWFjdElEW2luc3QuX3Jvb3ROb2RlSURdO1xuICB9LFxuXG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBUT0RPOiBTaG91bGRuJ3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cbiAgICB2YXIgY2hlY2tlZCA9IHByb3BzLmNoZWNrZWQ7XG4gICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkge1xuICAgICAgUmVhY3RET01JRE9wZXJhdGlvbnMudXBkYXRlUHJvcGVydHlCeUlEKGluc3QuX3Jvb3ROb2RlSUQsICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG4gICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG4gICAgICBSZWFjdERPTUlET3BlcmF0aW9ucy51cGRhdGVQcm9wZXJ0eUJ5SUQoaW5zdC5fcm9vdE5vZGVJRCwgJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hpY2hcbiAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTY5OFxuICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG5cbiAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lO1xuICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51bGwpIHtcbiAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgdmFyIHF1ZXJ5Um9vdCA9IHJvb3ROb2RlO1xuXG4gICAgd2hpbGUgKHF1ZXJ5Um9vdC5wYXJlbnROb2RlKSB7XG4gICAgICBxdWVyeVJvb3QgPSBxdWVyeVJvb3QucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICAvLyBJZiBgcm9vdE5vZGUuZm9ybWAgd2FzIG5vbi1udWxsLCB0aGVuIHdlIGNvdWxkIHRyeSBgZm9ybS5lbGVtZW50c2AsXG4gICAgLy8gYnV0IHRoYXQgc29tZXRpbWVzIGJlaGF2ZXMgc3RyYW5nZWx5IGluIElFOC4gV2UgY291bGQgYWxzbyB0cnkgdXNpbmdcbiAgICAvLyBgZm9ybS5nZXRFbGVtZW50c0J5TmFtZWAsIGJ1dCB0aGF0IHdpbGwgb25seSByZXR1cm4gZGlyZWN0IGNoaWxkcmVuXG4gICAgLy8gYW5kIHdvbid0IGluY2x1ZGUgaW5wdXRzIHRoYXQgdXNlIHRoZSBIVE1MNSBgZm9ybT1gIGF0dHJpYnV0ZS4gU2luY2VcbiAgICAvLyB0aGUgaW5wdXQgbWlnaHQgbm90IGV2ZW4gYmUgaW4gYSBmb3JtLCBsZXQncyBqdXN0IHVzZSB0aGUgZ2xvYmFsXG4gICAgLy8gYHF1ZXJ5U2VsZWN0b3JBbGxgIHRvIGVuc3VyZSB3ZSBkb24ndCBtaXNzIGFueXRoaW5nLlxuICAgIHZhciBncm91cCA9IHF1ZXJ5Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPScgKyBKU09OLnN0cmluZ2lmeSgnJyArIG5hbWUpICsgJ11bdHlwZT1cInJhZGlvXCJdJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgb3RoZXJOb2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAob3RoZXJOb2RlID09PSByb290Tm9kZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBidXR0b25zIHJlbmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3RcbiAgICAgIC8vIGFuZCB0aGUgc2FtZSBuYW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNhbWUgYXMgIzE5MzkpLlxuICAgICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1cHBvcnQgaXQganVzdCBhcyB3ZSBkb24ndCBzdXBwb3J0XG4gICAgICAvLyBtaXhpbmcgUmVhY3Qgd2l0aCBub24tUmVhY3QuXG4gICAgICB2YXIgb3RoZXJJRCA9IFJlYWN0TW91bnQuZ2V0SUQob3RoZXJOb2RlKTtcbiAgICAgICFvdGhlcklEID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3aXRoIHRoZSAnICsgJ3NhbWUgYG5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIG90aGVySW5zdGFuY2UgPSBpbnN0YW5jZXNCeVJlYWN0SURbb3RoZXJJRF07XG4gICAgICAhb3RoZXJJbnN0YW5jZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTUlucHV0OiBVbmtub3duIHJhZGlvIGJ1dHRvbiBJRCAlcy4nLCBvdGhlcklEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3JvdXAsIGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNrZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkXG4gICAgICAvLyBhcyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVSUFRVbHVjSFYwTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRVJQVFVsdWNIVjBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkVUMDFKUkU5d1pYSmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6SnlrN1hHNTJZWElnVEdsdWEyVmtWbUZzZFdWVmRHbHNjeUE5SUhKbGNYVnBjbVVvSnk0dlRHbHVhMlZrVm1Gc2RXVlZkR2xzY3ljcE8xeHVkbUZ5SUZKbFlXTjBUVzkxYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFRXOTFiblFuS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZYQmtZWFJsY3ljcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYm5aaGNpQnBibk4wWVc1alpYTkNlVkpsWVdOMFNVUWdQU0I3ZlR0Y2JseHVablZ1WTNScGIyNGdabTl5WTJWVmNHUmhkR1ZKWmsxdmRXNTBaV1FvS1NCN1hHNGdJR2xtSUNoMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1NCN1hHNGdJQ0FnTHk4Z1JFOU5JR052YlhCdmJtVnVkQ0JwY3lCemRHbHNiQ0J0YjNWdWRHVmtPeUIxY0dSaGRHVmNiaUFnSUNCU1pXRmpkRVJQVFVsdWNIVjBMblZ3WkdGMFpWZHlZWEJ3WlhJb2RHaHBjeWs3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHRnVJRHhwYm5CMWRENGdibUYwYVhabElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUdGc2JHOTNjeUJ6WlhSMGFXNW5JSFJvWlhObElHOXdkR2x2Ym1Gc1hHNGdLaUJ3Y205d2N6b2dZR05vWldOclpXUmdMQ0JnZG1Gc2RXVmdMQ0JnWkdWbVlYVnNkRU5vWldOclpXUmdMQ0JoYm1RZ1lHUmxabUYxYkhSV1lXeDFaV0F1WEc0Z0tseHVJQ29nU1dZZ1lHTm9aV05yWldSZ0lHOXlJR0IyWVd4MVpXQWdZWEpsSUc1dmRDQnpkWEJ3YkdsbFpDQW9iM0lnYm5Wc2JDOTFibVJsWm1sdVpXUXBMQ0IxYzJWeUlHRmpkR2x2Ym5OY2JpQXFJSFJvWVhRZ1lXWm1aV04wSUhSb1pTQmphR1ZqYTJWa0lITjBZWFJsSUc5eUlIWmhiSFZsSUhkcGJHd2dkSEpwWjJkbGNpQjFjR1JoZEdWeklIUnZJSFJvWlNCbGJHVnRaVzUwTGx4dUlDcGNiaUFxSUVsbUlIUm9aWGtnWVhKbElITjFjSEJzYVdWa0lDaGhibVFnYm05MElHNTFiR3d2ZFc1a1pXWnBibVZrS1N3Z2RHaGxJSEpsYm1SbGNtVmtJR1ZzWlcxbGJuUWdkMmxzYkNCdWIzUmNiaUFxSUhSeWFXZG5aWElnZFhCa1lYUmxjeUIwYnlCMGFHVWdaV3hsYldWdWRDNGdTVzV6ZEdWaFpDd2dkR2hsSUhCeWIzQnpJRzExYzNRZ1kyaGhibWRsSUdsdUlHOXlaR1Z5SUdadmNseHVJQ29nZEdobElISmxibVJsY21Wa0lHVnNaVzFsYm5RZ2RHOGdZbVVnZFhCa1lYUmxaQzVjYmlBcVhHNGdLaUJVYUdVZ2NtVnVaR1Z5WldRZ1pXeGxiV1Z1ZENCM2FXeHNJR0psSUdsdWFYUnBZV3hwZW1Wa0lHRnpJSFZ1WTJobFkydGxaQ0FvYjNJZ1lHUmxabUYxYkhSRGFHVmphMlZrWUNsY2JpQXFJSGRwZEdnZ1lXNGdaVzF3ZEhrZ2RtRnNkV1VnS0c5eUlHQmtaV1poZFd4MFZtRnNkV1ZnS1M1Y2JpQXFYRzRnS2lCQWMyVmxJR2gwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMVJTTHpJd01USXZWMFF0YUhSdGJEVXRNakF4TWpFd01qVXZkR2hsTFdsdWNIVjBMV1ZzWlcxbGJuUXVhSFJ0YkZ4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JFVDAxSmJuQjFkQ0E5SUh0Y2JpQWdaMlYwVG1GMGFYWmxVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCMllXeDFaU0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WjJWMFZtRnNkV1VvY0hKdmNITXBPMXh1SUNBZ0lIWmhjaUJqYUdWamEyVmtJRDBnVEdsdWEyVmtWbUZzZFdWVmRHbHNjeTVuWlhSRGFHVmphMlZrS0hCeWIzQnpLVHRjYmx4dUlDQWdJSFpoY2lCdVlYUnBkbVZRY205d2N5QTlJR0Z6YzJsbmJpaDdmU3dnY0hKdmNITXNJSHRjYmlBZ0lDQWdJR1JsWm1GMWJIUkRhR1ZqYTJWa09pQjFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1U2SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0FnSUhaaGJIVmxPaUIyWVd4MVpTQWhQU0J1ZFd4c0lEOGdkbUZzZFdVZ09pQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXVhVzVwZEdsaGJGWmhiSFZsTEZ4dUlDQWdJQ0FnWTJobFkydGxaRG9nWTJobFkydGxaQ0FoUFNCdWRXeHNJRDhnWTJobFkydGxaQ0E2SUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1cGJtbDBhV0ZzUTJobFkydGxaQ3hjYmlBZ0lDQWdJRzl1UTJoaGJtZGxPaUJwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1V1YjI1RGFHRnVaMlZjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnVZWFJwZG1WUWNtOXdjenRjYmlBZ2ZTeGNibHh1SUNCdGIzVnVkRmR5WVhCd1pYSTZJR1oxYm1OMGFXOXVJQ2hwYm5OMExDQndjbTl3Y3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbU5vWldOclVISnZjRlI1Y0dWektDZHBibkIxZENjc0lIQnliM0J6TENCcGJuTjBMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQmtaV1poZFd4MFZtRnNkV1VnUFNCd2NtOXdjeTVrWldaaGRXeDBWbUZzZFdVN1hHNGdJQ0FnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsSUQwZ2UxeHVJQ0FnSUNBZ2FXNXBkR2xoYkVOb1pXTnJaV1E2SUhCeWIzQnpMbVJsWm1GMWJIUkRhR1ZqYTJWa0lIeDhJR1poYkhObExGeHVJQ0FnSUNBZ2FXNXBkR2xoYkZaaGJIVmxPaUJrWldaaGRXeDBWbUZzZFdVZ0lUMGdiblZzYkNBL0lHUmxabUYxYkhSV1lXeDFaU0E2SUc1MWJHd3NYRzRnSUNBZ0lDQnZia05vWVc1blpUb2dYMmhoYm1Sc1pVTm9ZVzVuWlM1aWFXNWtLR2x1YzNRcFhHNGdJQ0FnZlR0Y2JpQWdmU3hjYmx4dUlDQnRiM1Z1ZEZKbFlXUjVWM0poY0hCbGNqb2dablZ1WTNScGIyNGdLR2x1YzNRcElIdGNiaUFnSUNBdkx5QkRZVzRuZENCaVpTQnBiaUJ0YjNWdWRGZHlZWEJ3WlhJZ2IzSWdaV3h6WlNCelpYSjJaWElnY21WdVpHVnlhVzVuSUd4bFlXdHpMbHh1SUNBZ0lHbHVjM1JoYm1ObGMwSjVVbVZoWTNSSlJGdHBibk4wTGw5eWIyOTBUbTlrWlVsRVhTQTlJR2x1YzNRN1hHNGdJSDBzWEc1Y2JpQWdkVzV0YjNWdWRGZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wS1NCN1hHNGdJQ0FnWkdWc1pYUmxJR2x1YzNSaGJtTmxjMEo1VW1WaFkzUkpSRnRwYm5OMExsOXliMjkwVG05a1pVbEVYVHRjYmlBZ2ZTeGNibHh1SUNCMWNHUmhkR1ZYY21Gd2NHVnlPaUJtZFc1amRHbHZiaUFvYVc1emRDa2dlMXh1SUNBZ0lIWmhjaUJ3Y205d2N5QTlJR2x1YzNRdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpPMXh1WEc0Z0lDQWdMeThnVkU5RVR6b2dVMmh2ZFd4a2JpZDBJSFJvYVhNZ1ltVWdaMlYwUTJobFkydGxaQ2h3Y205d2N5ay9YRzRnSUNBZ2RtRnlJR05vWldOclpXUWdQU0J3Y205d2N5NWphR1ZqYTJWa08xeHVJQ0FnSUdsbUlDaGphR1ZqYTJWa0lDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lGSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpMblZ3WkdGMFpWQnliM0JsY25SNVFubEpSQ2hwYm5OMExsOXliMjkwVG05a1pVbEVMQ0FuWTJobFkydGxaQ2NzSUdOb1pXTnJaV1FnZkh3Z1ptRnNjMlVwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCMllXeDFaU0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WjJWMFZtRnNkV1VvY0hKdmNITXBPMXh1SUNBZ0lHbG1JQ2gyWVd4MVpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQXZMeUJEWVhOMElHQjJZV3gxWldBZ2RHOGdZU0J6ZEhKcGJtY2dkRzhnWlc1emRYSmxJSFJvWlNCMllXeDFaU0JwY3lCelpYUWdZMjl5Y21WamRHeDVMaUJYYUdsc1pWeHVJQ0FnSUNBZ0x5OGdZbkp2ZDNObGNuTWdkSGx3YVdOaGJHeDVJR1J2SUhSb2FYTWdZWE1nYm1WalpYTnpZWEo1TENCcWMyUnZiU0JrYjJWemJpZDBMbHh1SUNBZ0lDQWdVbVZoWTNSRVQwMUpSRTl3WlhKaGRHbHZibk11ZFhCa1lYUmxVSEp2Y0dWeWRIbENlVWxFS0dsdWMzUXVYM0p2YjNST2IyUmxTVVFzSUNkMllXeDFaU2NzSUNjbklDc2dkbUZzZFdVcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlR0Y2JseHVablZ1WTNScGIyNGdYMmhoYm1Sc1pVTm9ZVzVuWlNobGRtVnVkQ2tnZTF4dUlDQjJZWElnY0hKdmNITWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjenRjYmx4dUlDQjJZWElnY21WMGRYSnVWbUZzZFdVZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtVjRaV04xZEdWUGJrTm9ZVzVuWlNod2NtOXdjeXdnWlhabGJuUXBPMXh1WEc0Z0lDOHZJRWhsY21VZ2QyVWdkWE5sSUdGellYQWdkRzhnZDJGcGRDQjFiblJwYkNCaGJHd2dkWEJrWVhSbGN5Qm9ZWFpsSUhCeWIzQmhaMkYwWldRc0lIZG9hV05vWEc0Z0lDOHZJR2x6SUdsdGNHOXlkR0Z1ZENCM2FHVnVJSFZ6YVc1bklHTnZiblJ5YjJ4c1pXUWdZMjl0Y0c5dVpXNTBjeUIzYVhSb2FXNGdiR0Y1WlhKek9seHVJQ0F2THlCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdlptRmpaV0p2YjJzdmNtVmhZM1F2YVhOemRXVnpMekUyT1RoY2JpQWdVbVZoWTNSVmNHUmhkR1Z6TG1GellYQW9abTl5WTJWVmNHUmhkR1ZKWmsxdmRXNTBaV1FzSUhSb2FYTXBPMXh1WEc0Z0lIWmhjaUJ1WVcxbElEMGdjSEp2Y0hNdWJtRnRaVHRjYmlBZ2FXWWdLSEJ5YjNCekxuUjVjR1VnUFQwOUlDZHlZV1JwYnljZ0ppWWdibUZ0WlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnZG1GeUlISnZiM1JPYjJSbElEMGdVbVZoWTNSTmIzVnVkQzVuWlhST2IyUmxLSFJvYVhNdVgzSnZiM1JPYjJSbFNVUXBPMXh1SUNBZ0lIWmhjaUJ4ZFdWeWVWSnZiM1FnUFNCeWIyOTBUbTlrWlR0Y2JseHVJQ0FnSUhkb2FXeGxJQ2h4ZFdWeWVWSnZiM1F1Y0dGeVpXNTBUbTlrWlNrZ2UxeHVJQ0FnSUNBZ2NYVmxjbmxTYjI5MElEMGdjWFZsY25sU2IyOTBMbkJoY21WdWRFNXZaR1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnU1dZZ1lISnZiM1JPYjJSbExtWnZjbTFnSUhkaGN5QnViMjR0Ym5Wc2JDd2dkR2hsYmlCM1pTQmpiM1ZzWkNCMGNua2dZR1p2Y20wdVpXeGxiV1Z1ZEhOZ0xGeHVJQ0FnSUM4dklHSjFkQ0IwYUdGMElITnZiV1YwYVcxbGN5QmlaV2hoZG1WeklITjBjbUZ1WjJWc2VTQnBiaUJKUlRndUlGZGxJR052ZFd4a0lHRnNjMjhnZEhKNUlIVnphVzVuWEc0Z0lDQWdMeThnWUdadmNtMHVaMlYwUld4bGJXVnVkSE5DZVU1aGJXVmdMQ0JpZFhRZ2RHaGhkQ0IzYVd4c0lHOXViSGtnY21WMGRYSnVJR1JwY21WamRDQmphR2xzWkhKbGJseHVJQ0FnSUM4dklHRnVaQ0IzYjI0bmRDQnBibU5zZFdSbElHbHVjSFYwY3lCMGFHRjBJSFZ6WlNCMGFHVWdTRlJOVERVZ1lHWnZjbTA5WUNCaGRIUnlhV0oxZEdVdUlGTnBibU5sWEc0Z0lDQWdMeThnZEdobElHbHVjSFYwSUcxcFoyaDBJRzV2ZENCbGRtVnVJR0psSUdsdUlHRWdabTl5YlN3Z2JHVjBKM01nYW5WemRDQjFjMlVnZEdobElHZHNiMkpoYkZ4dUlDQWdJQzh2SUdCeGRXVnllVk5sYkdWamRHOXlRV3hzWUNCMGJ5Qmxibk4xY21VZ2QyVWdaRzl1SjNRZ2JXbHpjeUJoYm5sMGFHbHVaeTVjYmlBZ0lDQjJZWElnWjNKdmRYQWdQU0J4ZFdWeWVWSnZiM1F1Y1hWbGNubFRaV3hsWTNSdmNrRnNiQ2duYVc1d2RYUmJibUZ0WlQwbklDc2dTbE5QVGk1emRISnBibWRwWm5rb0p5Y2dLeUJ1WVcxbEtTQXJJQ2RkVzNSNWNHVTlYQ0p5WVdScGIxd2lYU2NwTzF4dVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCbmNtOTFjQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzkwYUdWeVRtOWtaU0E5SUdkeWIzVndXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tHOTBhR1Z5VG05a1pTQTlQVDBnY205dmRFNXZaR1VnZkh3Z2IzUm9aWEpPYjJSbExtWnZjbTBnSVQwOUlISnZiM1JPYjJSbExtWnZjbTBwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBdkx5QlVhR2x6SUhkcGJHd2dkR2h5YjNjZ2FXWWdjbUZrYVc4Z1luVjBkRzl1Y3lCeVpXNWtaWEpsWkNCaWVTQmthV1ptWlhKbGJuUWdZMjl3YVdWeklHOW1JRkpsWVdOMFhHNGdJQ0FnSUNBdkx5QmhibVFnZEdobElITmhiV1VnYm1GdFpTQmhjbVVnY21WdVpHVnlaV1FnYVc1MGJ5QjBhR1VnYzJGdFpTQm1iM0p0SUNoellXMWxJR0Z6SUNNeE9UTTVLUzVjYmlBZ0lDQWdJQzh2SUZSb1lYUW5jeUJ3Y205aVlXSnNlU0J2YTJGNU95QjNaU0JrYjI0bmRDQnpkWEJ3YjNKMElHbDBJR3AxYzNRZ1lYTWdkMlVnWkc5dUozUWdjM1Z3Y0c5eWRGeHVJQ0FnSUNBZ0x5OGdiV2w0YVc1bklGSmxZV04wSUhkcGRHZ2dibTl1TFZKbFlXTjBMbHh1SUNBZ0lDQWdkbUZ5SUc5MGFHVnlTVVFnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRWxFS0c5MGFHVnlUbTlrWlNrN1hHNGdJQ0FnSUNBaGIzUm9aWEpKUkNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRFUlBUVWx1Y0hWME9pQk5hWGhwYm1jZ1VtVmhZM1FnWVc1a0lHNXZiaTFTWldGamRDQnlZV1JwYnlCcGJuQjFkSE1nZDJsMGFDQjBhR1VnSnlBcklDZHpZVzFsSUdCdVlXMWxZQ0JwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIWmhjaUJ2ZEdobGNrbHVjM1JoYm1ObElEMGdhVzV6ZEdGdVkyVnpRbmxTWldGamRFbEVXMjkwYUdWeVNVUmRPMXh1SUNBZ0lDQWdJVzkwYUdWeVNXNXpkR0Z1WTJVZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUkVUMDFKYm5CMWREb2dWVzVyYm05M2JpQnlZV1JwYnlCaWRYUjBiMjRnU1VRZ0pYTXVKeXdnYjNSb1pYSkpSQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0x5OGdTV1lnZEdocGN5QnBjeUJoSUdOdmJuUnliMnhzWldRZ2NtRmthVzhnWW5WMGRHOXVJR2R5YjNWd0xDQm1iM0pqYVc1bklIUm9aU0JwYm5CMWRDQjBhR0YwWEc0Z0lDQWdJQ0F2THlCM1lYTWdjSEpsZG1sdmRYTnNlU0JqYUdWamEyVmtJSFJ2SUhWd1pHRjBaU0IzYVd4c0lHTmhkWE5sSUdsMElIUnZJR0psSUdOdmJXVWdjbVV0WTJobFkydGxaRnh1SUNBZ0lDQWdMeThnWVhNZ1lYQndjbTl3Y21saGRHVXVYRzRnSUNBZ0lDQlNaV0ZqZEZWd1pHRjBaWE11WVhOaGNDaG1iM0pqWlZWd1pHRjBaVWxtVFc5MWJuUmxaQ3dnYjNSb1pYSkpibk4wWVc1alpTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlISmxkSFZ5YmxaaGJIVmxPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUkU5TlNXNXdkWFE3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01PcHRpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdENoaWxkcmVuID0gcmVxdWlyZSgnLi9SZWFjdENoaWxkcmVuJyk7XG52YXIgUmVhY3RET01TZWxlY3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0Jyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgdmFsdWVDb250ZXh0S2V5ID0gUmVhY3RET01TZWxlY3QudmFsdWVDb250ZXh0S2V5O1xuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gbmF0aXZlIGNvbXBvbmVudCB0aGF0IHdhcm5zIHdoZW4gYHNlbGVjdGVkYCBpcyBzZXQuXG4gKi9cbnZhciBSZWFjdERPTU9wdGlvbiA9IHtcbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgYHNlbGVjdGVkYCBpbiA8b3B0aW9uPi5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVsbCwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIExvb2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0ZWQnIHZpYSBjb250ZXh0XG4gICAgdmFyIHNlbGVjdFZhbHVlID0gY29udGV4dFt2YWx1ZUNvbnRleHRLZXldO1xuXG4gICAgLy8gSWYgY29udGV4dCBrZXkgaXMgbnVsbCAoZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFmdGVyIGluaXRpYWwgbW91bnQpXG4gICAgLy8gb3IgbWlzc2luZyAoZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRcbiAgICB2YXIgc2VsZWN0ZWQgPSBudWxsO1xuICAgIGlmIChzZWxlY3RWYWx1ZSAhPSBudWxsKSB7XG4gICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0VmFsdWUpKSB7XG4gICAgICAgIC8vIG11bHRpcGxlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoJycgKyBzZWxlY3RWYWx1ZVtpXSA9PT0gJycgKyBwcm9wcy52YWx1ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09ICcnICsgcHJvcHMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQgfTtcbiAgfSxcblxuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIG5hdGl2ZVByb3BzID0gYXNzaWduKHsgc2VsZWN0ZWQ6IHVuZGVmaW5lZCwgY2hpbGRyZW46IHVuZGVmaW5lZCB9LCBwcm9wcyk7XG5cbiAgICAvLyBSZWFkIHN0YXRlIG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRlcyB2YWx1ZVxuICAgIC8vIG1hbnVhbGx5OyB3ZSBuZWVkIHRoZSBpbml0aWFsIHN0YXRlIG9ubHkgZm9yIHNlcnZlciByZW5kZXJpbmdcbiAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkICE9IG51bGwpIHtcbiAgICAgIG5hdGl2ZVByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0gJyc7XG5cbiAgICAvLyBGbGF0dGVuIGNoaWxkcmVuIGFuZCB3YXJuIGlmIHRoZXkgYXJlbid0IHN0cmluZ3Mgb3IgbnVtYmVycztcbiAgICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxuICAgIFJlYWN0Q2hpbGRyZW4uZm9yRWFjaChwcm9wcy5jaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ09ubHkgc3RyaW5ncyBhbmQgbnVtYmVycyBhcmUgc3VwcG9ydGVkIGFzIDxvcHRpb24+IGNoaWxkcmVuLicpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbmF0aXZlUHJvcHMuY2hpbGRyZW4gPSBjb250ZW50O1xuICAgIHJldHVybiBuYXRpdmVQcm9wcztcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NT3B0aW9uO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFU5d2RHbHZiaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFJFOU5UM0IwYVc5dVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRGFHbHNaSEpsYmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGFHbHNaSEpsYmljcE8xeHVkbUZ5SUZKbFlXTjBSRTlOVTJWc1pXTjBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJQVFZObGJHVmpkQ2NwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dWRtRnlJSFpoYkhWbFEyOXVkR1Y0ZEV0bGVTQTlJRkpsWVdOMFJFOU5VMlZzWldOMExuWmhiSFZsUTI5dWRHVjRkRXRsZVR0Y2JseHVMeW9xWEc0Z0tpQkpiWEJzWlcxbGJuUnpJR0Z1SUR4dmNIUnBiMjQrSUc1aGRHbDJaU0JqYjIxd2IyNWxiblFnZEdoaGRDQjNZWEp1Y3lCM2FHVnVJR0J6Wld4bFkzUmxaR0FnYVhNZ2MyVjBMbHh1SUNvdlhHNTJZWElnVW1WaFkzUkVUMDFQY0hScGIyNGdQU0I3WEc0Z0lHMXZkVzUwVjNKaGNIQmxjam9nWm5WdVkzUnBiMjRnS0dsdWMzUXNJSEJ5YjNCekxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0x5OGdWRTlFVHlBb2VYVnVaM04wWlhKektUb2dVbVZ0YjNabElITjFjSEJ2Y25RZ1ptOXlJR0J6Wld4bFkzUmxaR0FnYVc0Z1BHOXdkR2x2Ymo0dVhHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hCeWIzQnpMbk5sYkdWamRHVmtJRDA5SUc1MWJHd3NJQ2RWYzJVZ2RHaGxJR0JrWldaaGRXeDBWbUZzZFdWZ0lHOXlJR0IyWVd4MVpXQWdjSEp2Y0hNZ2IyNGdQSE5sYkdWamRENGdhVzV6ZEdWaFpDQnZaaUFuSUNzZ0ozTmxkSFJwYm1jZ1lITmxiR1ZqZEdWa1lDQnZiaUE4YjNCMGFXOXVQaTRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5Qk1iMjlySUhWd0lIZG9aWFJvWlhJZ2RHaHBjeUJ2Y0hScGIyNGdhWE1nSjNObGJHVmpkR1ZrSnlCMmFXRWdZMjl1ZEdWNGRGeHVJQ0FnSUhaaGNpQnpaV3hsWTNSV1lXeDFaU0E5SUdOdmJuUmxlSFJiZG1Gc2RXVkRiMjUwWlhoMFMyVjVYVHRjYmx4dUlDQWdJQzh2SUVsbUlHTnZiblJsZUhRZ2EyVjVJR2x6SUc1MWJHd2dLR1V1Wnk0c0lHNXZJSE53WldOcFptbGxaQ0IyWVd4MVpTQnZjaUJoWm5SbGNpQnBibWwwYVdGc0lHMXZkVzUwS1Z4dUlDQWdJQzh2SUc5eUlHMXBjM05wYm1jZ0tHVXVaeTRzSUdadmNpQThaR0YwWVd4cGMzUStLU3dnZDJVZ1pHOXVKM1FnWTJoaGJtZGxJSEJ5YjNCekxuTmxiR1ZqZEdWa1hHNGdJQ0FnZG1GeUlITmxiR1ZqZEdWa0lEMGdiblZzYkR0Y2JpQWdJQ0JwWmlBb2MyVnNaV04wVm1Gc2RXVWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdjMlZzWldOMFpXUWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtITmxiR1ZqZEZaaGJIVmxLU2tnZTF4dUlDQWdJQ0FnSUNBdkx5QnRkV3gwYVhCc1pWeHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJSE5sYkdWamRGWmhiSFZsTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tDY25JQ3NnYzJWc1pXTjBWbUZzZFdWYmFWMGdQVDA5SUNjbklDc2djSEp2Y0hNdWRtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5sYkdWamRHVmtJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2MyVnNaV04wWldRZ1BTQW5KeUFySUhObGJHVmpkRlpoYkhWbElEMDlQU0FuSnlBcklIQnliM0J6TG5aaGJIVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTQTlJSHNnYzJWc1pXTjBaV1E2SUhObGJHVmpkR1ZrSUgwN1hHNGdJSDBzWEc1Y2JpQWdaMlYwVG1GMGFYWmxVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCdVlYUnBkbVZRY205d2N5QTlJR0Z6YzJsbmJpaDdJSE5sYkdWamRHVmtPaUIxYm1SbFptbHVaV1FzSUdOb2FXeGtjbVZ1T2lCMWJtUmxabWx1WldRZ2ZTd2djSEp2Y0hNcE8xeHVYRzRnSUNBZ0x5OGdVbVZoWkNCemRHRjBaU0J2Ym14NUlHWnliMjBnYVc1cGRHbGhiQ0J0YjNWdWRDQmlaV05oZFhObElEeHpaV3hsWTNRK0lIVndaR0YwWlhNZ2RtRnNkV1ZjYmlBZ0lDQXZMeUJ0WVc1MVlXeHNlVHNnZDJVZ2JtVmxaQ0IwYUdVZ2FXNXBkR2xoYkNCemRHRjBaU0J2Ym14NUlHWnZjaUJ6WlhKMlpYSWdjbVZ1WkdWeWFXNW5YRzRnSUNBZ2FXWWdLR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzV6Wld4bFkzUmxaQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J1WVhScGRtVlFjbTl3Y3k1elpXeGxZM1JsWkNBOUlHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXpaV3hsWTNSbFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdZMjl1ZEdWdWRDQTlJQ2NuTzF4dVhHNGdJQ0FnTHk4Z1JteGhkSFJsYmlCamFHbHNaSEpsYmlCaGJtUWdkMkZ5YmlCcFppQjBhR1Y1SUdGeVpXNG5kQ0J6ZEhKcGJtZHpJRzl5SUc1MWJXSmxjbk03WEc0Z0lDQWdMeThnYVc1MllXeHBaQ0IwZVhCbGN5QmhjbVVnYVdkdWIzSmxaQzVjYmlBZ0lDQlNaV0ZqZEVOb2FXeGtjbVZ1TG1admNrVmhZMmdvY0hKdmNITXVZMmhwYkdSeVpXNHNJR1oxYm1OMGFXOXVJQ2hqYUdsc1pDa2dlMXh1SUNBZ0lDQWdhV1lnS0dOb2FXeGtJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJqYUdsc1pDQTlQVDBnSjNOMGNtbHVaeWNnZkh3Z2RIbHdaVzltSUdOb2FXeGtJRDA5UFNBbmJuVnRZbVZ5SnlrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjUwWlc1MElDczlJR05vYVd4a08xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFBibXg1SUhOMGNtbHVaM01nWVc1a0lHNTFiV0psY25NZ1lYSmxJSE4xY0hCdmNuUmxaQ0JoY3lBOGIzQjBhVzl1UGlCamFHbHNaSEpsYmk0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJRzVoZEdsMlpWQnliM0J6TG1Ob2FXeGtjbVZ1SUQwZ1kyOXVkR1Z1ZER0Y2JpQWdJQ0J5WlhSMWNtNGdibUYwYVhabFVISnZjSE03WEc0Z0lIMWNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRVOXdkR2x2YmpzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NU2VsZWN0XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHZhbHVlQ29udGV4dEtleSA9ICdfX1JlYWN0RE9NU2VsZWN0X3ZhbHVlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblxuZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEICYmIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHVwZGF0ZU9wdGlvbnModGhpcywgcHJvcHMsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbnZhciB2YWx1ZVByb3BOYW1lcyA9IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVlJ107XG5cbi8qKlxuICogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcykge1xuICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBvd25lcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldO1xuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmICcgKyAnYG11bHRpcGxlYCBpcyB0cnVlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyICcgKyAndmFsdWUgaWYgYG11bHRpcGxlYCBpcyBmYWxzZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBpbnN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG11bHRpcGxlXG4gKiBAcGFyYW0geyp9IHByb3BWYWx1ZSBBIHN0cmluZ2FibGUgKHdpdGggYG11bHRpcGxlYCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVsdGlwbGUsIHByb3BWYWx1ZSkge1xuICB2YXIgc2VsZWN0ZWRWYWx1ZSwgaTtcbiAgdmFyIG9wdGlvbnMgPSBSZWFjdE1vdW50LmdldE5vZGUoaW5zdC5fcm9vdE5vZGVJRCkub3B0aW9ucztcblxuICBpZiAobXVsdGlwbGUpIHtcbiAgICBzZWxlY3RlZFZhbHVlID0ge307XG4gICAgZm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgc2VsZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTtcbiAgICAgIGlmIChvcHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIERvIG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNuJ3QgY29uc2lzdGVudCBhY3Jvc3MgYWxsXG4gICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy5cbiAgICBzZWxlY3RlZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7XG4gICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDxzZWxlY3Q+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCBhbGxvd3Mgb3B0aW9uYWxseSBzZXR0aW5nIHRoZVxuICogcHJvcHMgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFsc2UsIHRoZSBwcm9wIG11c3QgYmUgYVxuICogc3RyaW5nYWJsZS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGUgcHJvcCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ2FibGVzLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGNoYW5nZSB0aGVcbiAqIHNlbGVjdGVkIG9wdGlvbiB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgcmVuZGVyZWQgb3B0aW9ucy5cbiAqXG4gKiBJZiBpdCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBvcHRpb25zIHdpbGwgbm90XG4gKiB1cGRhdGUgaW4gcmVzcG9uc2UgdG8gdXNlciBhY3Rpb25zLiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluXG4gKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIG9wdGlvbnMgdG8gdXBkYXRlLlxuICpcbiAqIElmIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCBhbnkgb3B0aW9ucyB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZXMgd2lsbCBiZVxuICogc2VsZWN0ZWQuXG4gKi9cbnZhciBSZWFjdERPTVNlbGVjdCA9IHtcbiAgdmFsdWVDb250ZXh0S2V5OiB2YWx1ZUNvbnRleHRLZXksXG5cbiAgZ2V0TmF0aXZlUHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgIHJldHVybiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuICAgIH0pO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAgICAgIHdhc011bHRpcGxlOiBCb29sZWFuKHByb3BzLm11bHRpcGxlKVxuICAgIH07XG4gIH0sXG5cbiAgcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgLy8gUGFzcyBkb3duIGluaXRpYWwgdmFsdWUgc28gaW5pdGlhbCBnZW5lcmF0ZWQgbWFya3VwIGhhcyBjb3JyZWN0XG4gICAgLy8gYHNlbGVjdGVkYCBhdHRyaWJ1dGVzXG4gICAgdmFyIGNoaWxkQ29udGV4dCA9IGFzc2lnbih7fSwgY29udGV4dCk7XG4gICAgY2hpbGRDb250ZXh0W3ZhbHVlQ29udGV4dEtleV0gPSBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO1xuICAgIHJldHVybiBjaGlsZENvbnRleHQ7XG4gIH0sXG5cbiAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0IHBhc3NcbiAgICAvLyB0aGUgY29udGV4dCB2YWx1ZSBkb3duXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA9IHVuZGVmaW5lZDtcblxuICAgIHZhciB3YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSBCb29sZWFuKHByb3BzLm11bHRpcGxlKTtcblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAod2FzTXVsdGlwbGUgIT09IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpKSB7XG4gICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgcmVhcHBseSBgZGVmYXVsdFZhbHVlYCBpZiBgbXVsdGlwbGVgIGlzIHRvZ2dsZWQuXG4gICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJldmVydCB0aGUgc2VsZWN0IGJhY2sgdG8gaXRzIGRlZmF1bHQgdW5zZWxlY3RlZCBzdGF0ZS5cbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMubXVsdGlwbGUgPyBbXSA6ICcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSB0cnVlO1xuICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVSUFRWTmxiR1ZqZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFJFOU5VMlZzWldOMFhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5QTlJSEpsY1hWcGNtVW9KeTR2VEdsdWEyVmtWbUZzZFdWVmRHbHNjeWNwTzF4dWRtRnlJRkpsWVdOMFRXOTFiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVFc5MWJuUW5LVHRjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVlhCa1lYUmxjeWNwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dWRtRnlJSFpoYkhWbFEyOXVkR1Y0ZEV0bGVTQTlJQ2RmWDFKbFlXTjBSRTlOVTJWc1pXTjBYM1poYkhWbEpDY2dLeUJOWVhSb0xuSmhibVJ2YlNncExuUnZVM1J5YVc1bktETTJLUzV6YkdsalpTZ3lLVHRjYmx4dVpuVnVZM1JwYjI0Z2RYQmtZWFJsVDNCMGFXOXVjMGxtVUdWdVpHbHVaMVZ3WkdGMFpVRnVaRTF2ZFc1MFpXUW9LU0I3WEc0Z0lHbG1JQ2gwYUdsekxsOXliMjkwVG05a1pVbEVJQ1ltSUhSb2FYTXVYM2R5WVhCd1pYSlRkR0YwWlM1d1pXNWthVzVuVlhCa1lYUmxLU0I3WEc0Z0lDQWdkR2hwY3k1ZmQzSmhjSEJsY2xOMFlYUmxMbkJsYm1ScGJtZFZjR1JoZEdVZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUhaaGNpQndjbTl3Y3lBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCek8xeHVJQ0FnSUhaaGNpQjJZV3gxWlNBOUlFeHBibXRsWkZaaGJIVmxWWFJwYkhNdVoyVjBWbUZzZFdVb2NISnZjSE1wTzF4dVhHNGdJQ0FnYVdZZ0tIWmhiSFZsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhWd1pHRjBaVTl3ZEdsdmJuTW9kR2hwY3l3Z2NISnZjSE1zSUhaaGJIVmxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnWjJWMFJHVmpiR0Z5WVhScGIyNUZjbkp2Y2tGa1pHVnVaSFZ0S0c5M2JtVnlLU0I3WEc0Z0lHbG1JQ2h2ZDI1bGNpa2dlMXh1SUNBZ0lIWmhjaUJ1WVcxbElEMGdiM2R1WlhJdVoyVjBUbUZ0WlNncE8xeHVJQ0FnSUdsbUlDaHVZVzFsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnSnlCRGFHVmpheUIwYUdVZ2NtVnVaR1Z5SUcxbGRHaHZaQ0J2WmlCZ0p5QXJJRzVoYldVZ0t5QW5ZQzRuTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdKeWM3WEc1OVhHNWNiblpoY2lCMllXeDFaVkJ5YjNCT1lXMWxjeUE5SUZzbmRtRnNkV1VuTENBblpHVm1ZWFZzZEZaaGJIVmxKMTA3WEc1Y2JpOHFLbHh1SUNvZ1ZtRnNhV1JoZEdsdmJpQm1kVzVqZEdsdmJpQm1iM0lnWUhaaGJIVmxZQ0JoYm1RZ1lHUmxabUYxYkhSV1lXeDFaV0F1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCamFHVmphMU5sYkdWamRGQnliM0JVZVhCbGN5aHBibk4wTENCd2NtOXdjeWtnZTF4dUlDQjJZWElnYjNkdVpYSWdQU0JwYm5OMExsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1ZmIzZHVaWEk3WEc0Z0lFeHBibXRsWkZaaGJIVmxWWFJwYkhNdVkyaGxZMnRRY205d1ZIbHdaWE1vSjNObGJHVmpkQ2NzSUhCeWIzQnpMQ0J2ZDI1bGNpazdYRzVjYmlBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQjJZV3gxWlZCeWIzQk9ZVzFsY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lIWmhjaUJ3Y205d1RtRnRaU0E5SUhaaGJIVmxVSEp2Y0U1aGJXVnpXMmxkTzF4dUlDQWdJR2xtSUNod2NtOXdjMXR3Y205d1RtRnRaVjBnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2h3Y205d2N5NXRkV3gwYVhCc1pTa2dlMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvUVhKeVlYa3VhWE5CY25KaGVTaHdjbTl3YzF0d2NtOXdUbUZ0WlYwcExDQW5WR2hsSUdBbGMyQWdjSEp2Y0NCemRYQndiR2xsWkNCMGJ5QThjMlZzWldOMFBpQnRkWE4wSUdKbElHRnVJR0Z5Y21GNUlHbG1JQ2NnS3lBbllHMTFiSFJwY0d4bFlDQnBjeUIwY25WbExpVnpKeXdnY0hKdmNFNWhiV1VzSUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNodmQyNWxjaWtwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaFFYSnlZWGt1YVhOQmNuSmhlU2h3Y205d2MxdHdjbTl3VG1GdFpWMHBMQ0FuVkdobElHQWxjMkFnY0hKdmNDQnpkWEJ3YkdsbFpDQjBieUE4YzJWc1pXTjBQaUJ0ZFhOMElHSmxJR0VnYzJOaGJHRnlJQ2NnS3lBbmRtRnNkV1VnYVdZZ1lHMTFiSFJwY0d4bFlDQnBjeUJtWVd4elpTNGxjeWNzSUhCeWIzQk9ZVzFsTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb2IzZHVaWElwS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wUkU5TlEyOXRjRzl1Wlc1MGZTQnBibk4wWEc0Z0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlHMTFiSFJwY0d4bFhHNGdLaUJBY0dGeVlXMGdleXA5SUhCeWIzQldZV3gxWlNCQklITjBjbWx1WjJGaWJHVWdLSGRwZEdnZ1lHMTFiSFJwY0d4bFlDd2dZU0JzYVhOMElHOW1JSE4wY21sdVoyRmliR1Z6S1M1Y2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlIVndaR0YwWlU5d2RHbHZibk1vYVc1emRDd2diWFZzZEdsd2JHVXNJSEJ5YjNCV1lXeDFaU2tnZTF4dUlDQjJZWElnYzJWc1pXTjBaV1JXWVd4MVpTd2dhVHRjYmlBZ2RtRnlJRzl3ZEdsdmJuTWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvYVc1emRDNWZjbTl2ZEU1dlpHVkpSQ2t1YjNCMGFXOXVjenRjYmx4dUlDQnBaaUFvYlhWc2RHbHdiR1VwSUh0Y2JpQWdJQ0J6Wld4bFkzUmxaRlpoYkhWbElEMGdlMzA3WEc0Z0lDQWdabTl5SUNocElEMGdNRHNnYVNBOElIQnliM0JXWVd4MVpTNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYzJWc1pXTjBaV1JXWVd4MVpWc25KeUFySUhCeWIzQldZV3gxWlZ0cFhWMGdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdJQ0JtYjNJZ0tHa2dQU0F3T3lCcElEd2diM0IwYVc5dWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZG1GeUlITmxiR1ZqZEdWa0lEMGdjMlZzWldOMFpXUldZV3gxWlM1b1lYTlBkMjVRY205d1pYSjBlU2h2Y0hScGIyNXpXMmxkTG5aaGJIVmxLVHRjYmlBZ0lDQWdJR2xtSUNodmNIUnBiMjV6VzJsZExuTmxiR1ZqZEdWa0lDRTlQU0J6Wld4bFkzUmxaQ2tnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6VzJsZExuTmxiR1ZqZEdWa0lEMGdjMlZzWldOMFpXUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDOHZJRVJ2SUc1dmRDQnpaWFFnWUhObGJHVmpkQzUyWVd4MVpXQWdZWE1nWlhoaFkzUWdZbVZvWVhacGIzSWdhWE51SjNRZ1kyOXVjMmx6ZEdWdWRDQmhZM0p2YzNNZ1lXeHNYRzRnSUNBZ0x5OGdZbkp2ZDNObGNuTWdabTl5SUdGc2JDQmpZWE5sY3k1Y2JpQWdJQ0J6Wld4bFkzUmxaRlpoYkhWbElEMGdKeWNnS3lCd2NtOXdWbUZzZFdVN1hHNGdJQ0FnWm05eUlDaHBJRDBnTURzZ2FTQThJRzl3ZEdsdmJuTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdsbUlDaHZjSFJwYjI1elcybGRMblpoYkhWbElEMDlQU0J6Wld4bFkzUmxaRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTmJhVjB1YzJWc1pXTjBaV1FnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHZjSFJwYjI1ekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1YzFzd1hTNXpaV3hsWTNSbFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QmhJRHh6Wld4bFkzUStJRzVoZEdsMlpTQmpiMjF3YjI1bGJuUWdkR2hoZENCaGJHeHZkM01nYjNCMGFXOXVZV3hzZVNCelpYUjBhVzVuSUhSb1pWeHVJQ29nY0hKdmNITWdZSFpoYkhWbFlDQmhibVFnWUdSbFptRjFiSFJXWVd4MVpXQXVJRWxtSUdCdGRXeDBhWEJzWldBZ2FYTWdabUZzYzJVc0lIUm9aU0J3Y205d0lHMTFjM1FnWW1VZ1lWeHVJQ29nYzNSeWFXNW5ZV0pzWlM0Z1NXWWdZRzExYkhScGNHeGxZQ0JwY3lCMGNuVmxMQ0IwYUdVZ2NISnZjQ0J0ZFhOMElHSmxJR0Z1SUdGeWNtRjVJRzltSUhOMGNtbHVaMkZpYkdWekxseHVJQ3BjYmlBcUlFbG1JR0IyWVd4MVpXQWdhWE1nYm05MElITjFjSEJzYVdWa0lDaHZjaUJ1ZFd4c0wzVnVaR1ZtYVc1bFpDa3NJSFZ6WlhJZ1lXTjBhVzl1Y3lCMGFHRjBJR05vWVc1blpTQjBhR1ZjYmlBcUlITmxiR1ZqZEdWa0lHOXdkR2x2YmlCM2FXeHNJSFJ5YVdkblpYSWdkWEJrWVhSbGN5QjBieUIwYUdVZ2NtVnVaR1Z5WldRZ2IzQjBhVzl1Y3k1Y2JpQXFYRzRnS2lCSlppQnBkQ0JwY3lCemRYQndiR2xsWkNBb1lXNWtJRzV2ZENCdWRXeHNMM1Z1WkdWbWFXNWxaQ2tzSUhSb1pTQnlaVzVrWlhKbFpDQnZjSFJwYjI1eklIZHBiR3dnYm05MFhHNGdLaUIxY0dSaGRHVWdhVzRnY21WemNHOXVjMlVnZEc4Z2RYTmxjaUJoWTNScGIyNXpMaUJKYm5OMFpXRmtMQ0IwYUdVZ1lIWmhiSFZsWUNCd2NtOXdJRzExYzNRZ1kyaGhibWRsSUdsdVhHNGdLaUJ2Y21SbGNpQm1iM0lnZEdobElISmxibVJsY21Wa0lHOXdkR2x2Ym5NZ2RHOGdkWEJrWVhSbExseHVJQ3BjYmlBcUlFbG1JR0JrWldaaGRXeDBWbUZzZFdWZ0lHbHpJSEJ5YjNacFpHVmtMQ0JoYm5rZ2IzQjBhVzl1Y3lCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCMllXeDFaWE1nZDJsc2JDQmlaVnh1SUNvZ2MyVnNaV04wWldRdVhHNGdLaTljYm5aaGNpQlNaV0ZqZEVSUFRWTmxiR1ZqZENBOUlIdGNiaUFnZG1Gc2RXVkRiMjUwWlhoMFMyVjVPaUIyWVd4MVpVTnZiblJsZUhSTFpYa3NYRzVjYmlBZ1oyVjBUbUYwYVhabFVISnZjSE02SUdaMWJtTjBhVzl1SUNocGJuTjBMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCaGMzTnBaMjRvZTMwc0lIQnliM0J6TENCN1hHNGdJQ0FnSUNCdmJrTm9ZVzVuWlRvZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExtOXVRMmhoYm1kbExGeHVJQ0FnSUNBZ2RtRnNkV1U2SUhWdVpHVm1hVzVsWkZ4dUlDQWdJSDBwTzF4dUlDQjlMRnh1WEc0Z0lHMXZkVzUwVjNKaGNIQmxjam9nWm5WdVkzUnBiMjRnS0dsdWMzUXNJSEJ5YjNCektTQjdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUdOb1pXTnJVMlZzWldOMFVISnZjRlI1Y0dWektHbHVjM1FzSUhCeWIzQnpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnZG1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbWRsZEZaaGJIVmxLSEJ5YjNCektUdGNiaUFnSUNCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVZ1BTQjdYRzRnSUNBZ0lDQndaVzVrYVc1blZYQmtZWFJsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJR2x1YVhScFlXeFdZV3gxWlRvZ2RtRnNkV1VnSVQwZ2JuVnNiQ0EvSUhaaGJIVmxJRG9nY0hKdmNITXVaR1ZtWVhWc2RGWmhiSFZsTEZ4dUlDQWdJQ0FnYjI1RGFHRnVaMlU2SUY5b1lXNWtiR1ZEYUdGdVoyVXVZbWx1WkNocGJuTjBLU3hjYmlBZ0lDQWdJSGRoYzAxMWJIUnBjR3hsT2lCQ2IyOXNaV0Z1S0hCeWIzQnpMbTExYkhScGNHeGxLVnh1SUNBZ0lIMDdYRzRnSUgwc1hHNWNiaUFnY0hKdlkyVnpjME5vYVd4a1EyOXVkR1Y0ZERvZ1puVnVZM1JwYjI0Z0tHbHVjM1FzSUhCeWIzQnpMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdMeThnVUdGemN5QmtiM2R1SUdsdWFYUnBZV3dnZG1Gc2RXVWdjMjhnYVc1cGRHbGhiQ0JuWlc1bGNtRjBaV1FnYldGeWEzVndJR2hoY3lCamIzSnlaV04wWEc0Z0lDQWdMeThnWUhObGJHVmpkR1ZrWUNCaGRIUnlhV0oxZEdWelhHNGdJQ0FnZG1GeUlHTm9hV3hrUTI5dWRHVjRkQ0E5SUdGemMybG5iaWg3ZlN3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnWTJocGJHUkRiMjUwWlhoMFczWmhiSFZsUTI5dWRHVjRkRXRsZVYwZ1BTQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXVhVzVwZEdsaGJGWmhiSFZsTzF4dUlDQWdJSEpsZEhWeWJpQmphR2xzWkVOdmJuUmxlSFE3WEc0Z0lIMHNYRzVjYmlBZ2NHOXpkRlZ3WkdGMFpWZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wS1NCN1hHNGdJQ0FnZG1GeUlIQnliM0J6SUQwZ2FXNXpkQzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNWNiaUFnSUNBdkx5QkJablJsY2lCMGFHVWdhVzVwZEdsaGJDQnRiM1Z1ZEN3Z2QyVWdZMjl1ZEhKdmJDQnpaV3hsWTNSbFpDMXVaWE56SUcxaGJuVmhiR3g1SUhOdklHUnZiaWQwSUhCaGMzTmNiaUFnSUNBdkx5QjBhR1VnWTI5dWRHVjRkQ0IyWVd4MVpTQmtiM2R1WEc0Z0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbWx1YVhScFlXeFdZV3gxWlNBOUlIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUIzWVhOTmRXeDBhWEJzWlNBOUlHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNTNZWE5OZFd4MGFYQnNaVHRjYmlBZ0lDQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXVkMkZ6VFhWc2RHbHdiR1VnUFNCQ2IyOXNaV0Z1S0hCeWIzQnpMbTExYkhScGNHeGxLVHRjYmx4dUlDQWdJSFpoY2lCMllXeDFaU0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WjJWMFZtRnNkV1VvY0hKdmNITXBPMXh1SUNBZ0lHbG1JQ2gyWVd4MVpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnBibk4wTGw5M2NtRndjR1Z5VTNSaGRHVXVjR1Z1WkdsdVoxVndaR0YwWlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZFhCa1lYUmxUM0IwYVc5dWN5aHBibk4wTENCQ2IyOXNaV0Z1S0hCeWIzQnpMbTExYkhScGNHeGxLU3dnZG1Gc2RXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kMkZ6VFhWc2RHbHdiR1VnSVQwOUlFSnZiMnhsWVc0b2NISnZjSE11YlhWc2RHbHdiR1VwS1NCN1hHNGdJQ0FnSUNBdkx5QkdiM0lnYzJsdGNHeHBZMmwwZVN3Z2NtVmhjSEJzZVNCZ1pHVm1ZWFZzZEZaaGJIVmxZQ0JwWmlCZ2JYVnNkR2x3YkdWZ0lHbHpJSFJ2WjJkc1pXUXVYRzRnSUNBZ0lDQnBaaUFvY0hKdmNITXVaR1ZtWVhWc2RGWmhiSFZsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2RYQmtZWFJsVDNCMGFXOXVjeWhwYm5OMExDQkNiMjlzWldGdUtIQnliM0J6TG0xMWJIUnBjR3hsS1N3Z2NISnZjSE11WkdWbVlYVnNkRlpoYkhWbEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDOHZJRkpsZG1WeWRDQjBhR1VnYzJWc1pXTjBJR0poWTJzZ2RHOGdhWFJ6SUdSbFptRjFiSFFnZFc1elpXeGxZM1JsWkNCemRHRjBaUzVjYmlBZ0lDQWdJQ0FnZFhCa1lYUmxUM0IwYVc5dWN5aHBibk4wTENCQ2IyOXNaV0Z1S0hCeWIzQnpMbTExYkhScGNHeGxLU3dnY0hKdmNITXViWFZzZEdsd2JHVWdQeUJiWFNBNklDY25LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm1aMWJtTjBhVzl1SUY5b1lXNWtiR1ZEYUdGdVoyVW9aWFpsYm5RcElIdGNiaUFnZG1GeUlIQnliM0J6SUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVjSEp2Y0hNN1hHNGdJSFpoY2lCeVpYUjFjbTVXWVd4MVpTQTlJRXhwYm10bFpGWmhiSFZsVlhScGJITXVaWGhsWTNWMFpVOXVRMmhoYm1kbEtIQnliM0J6TENCbGRtVnVkQ2s3WEc1Y2JpQWdkR2hwY3k1ZmQzSmhjSEJsY2xOMFlYUmxMbkJsYm1ScGJtZFZjR1JoZEdVZ1BTQjBjblZsTzF4dUlDQlNaV0ZqZEZWd1pHRjBaWE11WVhOaGNDaDFjR1JoZEdWUGNIUnBiMjV6U1daUVpXNWthVzVuVlhCa1lYUmxRVzVrVFc5MWJuUmxaQ3dnZEdocGN5azdYRzRnSUhKbGRIVnliaUJ5WlhSMWNtNVdZV3gxWlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFUlBUVk5sYkdWamREc2lYWDA9IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NU2VsZWN0aW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCA9IHJlcXVpcmUoJy4vZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCcpO1xudmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSByZXF1aXJlKCcuL2dldFRleHRDb250ZW50QWNjZXNzb3InKTtcblxuLyoqXG4gKiBXaGlsZSBgaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBvbiB0aGUgU2VsZWN0aW9uIG9iamVjdCBhbmQgYGNvbGxhcHNlZGBcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgUmFuZ2Ugb2JqZWN0LCBJRTExIHNvbWV0aW1lcyBnZXRzIHRoZW0gd3JvbmcuXG4gKiBJZiB0aGUgYW5jaG9yL2ZvY3VzIG5vZGVzIGFuZCBvZmZzZXRzIGFyZSB0aGUgc2FtZSwgdGhlIHJhbmdlIGlzIGNvbGxhcHNlZC5cbiAqL1xuZnVuY3Rpb24gaXNDb2xsYXBzZWQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0LCBmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KSB7XG4gIHJldHVybiBhbmNob3JOb2RlID09PSBmb2N1c05vZGUgJiYgYW5jaG9yT2Zmc2V0ID09PSBmb2N1c09mZnNldDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBhbmQgZm9jdXMgbm9kZS9vZmZzZXQgcGFpcnMgZm9yIElFLlxuICpcbiAqIFRoZSBjYXRjaCBoZXJlIGlzIHRoYXQgSUUncyBzZWxlY3Rpb24gQVBJIGRvZXNuJ3QgcHJvdmlkZSBpbmZvcm1hdGlvblxuICogYWJvdXQgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGZvcndhcmQgb3IgYmFja3dhcmQsIHNvIHdlIGhhdmUgdG9cbiAqIGJlaGF2ZSBhcyB0aG91Z2ggaXQncyBhbHdheXMgZm9yd2FyZC5cbiAqXG4gKiBJRSB0ZXh0IGRpZmZlcnMgZnJvbSBtb2Rlcm4gc2VsZWN0aW9uIGluIHRoYXQgaXQgYmVoYXZlcyBhcyB0aG91Z2hcbiAqIGJsb2NrIGVsZW1lbnRzIGVuZCB3aXRoIGEgbmV3IGxpbmUuIFRoaXMgbWVhbnMgY2hhcmFjdGVyIG9mZnNldHMgd2lsbFxuICogZGlmZmVyIGJldHdlZW4gdGhlIHR3byBBUElzLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRJRU9mZnNldHMobm9kZSkge1xuICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uO1xuICB2YXIgc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuICB2YXIgc2VsZWN0ZWRMZW5ndGggPSBzZWxlY3RlZFJhbmdlLnRleHQubGVuZ3RoO1xuXG4gIC8vIER1cGxpY2F0ZSBzZWxlY3Rpb24gc28gd2UgY2FuIG1vdmUgcmFuZ2Ugd2l0aG91dCBicmVha2luZyB1c2VyIHNlbGVjdGlvbi5cbiAgdmFyIGZyb21TdGFydCA9IHNlbGVjdGVkUmFuZ2UuZHVwbGljYXRlKCk7XG4gIGZyb21TdGFydC5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcbiAgZnJvbVN0YXJ0LnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7XG5cbiAgdmFyIHN0YXJ0T2Zmc2V0ID0gZnJvbVN0YXJ0LnRleHQubGVuZ3RoO1xuICB2YXIgZW5kT2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBzZWxlY3RlZExlbmd0aDtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBzdGFydE9mZnNldCxcbiAgICBlbmQ6IGVuZE9mZnNldFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHJldHVybiB7P29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kZXJuT2Zmc2V0cyhub2RlKSB7XG4gIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uICYmIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFuY2hvck5vZGUgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgdmFyIGFuY2hvck9mZnNldCA9IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQ7XG4gIHZhciBmb2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuICB2YXIgZm9jdXNPZmZzZXQgPSBzZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG5cbiAgdmFyIGN1cnJlbnRSYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuXG4gIC8vIEluIEZpcmVmb3gsIHJhbmdlLnN0YXJ0Q29udGFpbmVyIGFuZCByYW5nZS5lbmRDb250YWluZXIgY2FuIGJlIFwiYW5vbnltb3VzXG4gIC8vIGRpdnNcIiwgZS5nLiB0aGUgdXAvZG93biBidXR0b25zIG9uIGFuIDxpbnB1dCB0eXBlPVwibnVtYmVyXCI+LiBBbm9ueW1vdXNcbiAgLy8gZGl2cyBkbyBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcbiAgLy8gZXJyb3JcIiBpZiBhbnkgb2YgaXRzIHByb3BlcnRpZXMgYXJlIGFjY2Vzc2VkLiBUaGUgb25seSBzZWVtaW5nbHkgcG9zc2libGVcbiAgLy8gd2F5IHRvIGF2b2lkIGVycm9yaW5nIGlzIHRvIGFjY2VzcyBhIHByb3BlcnR5IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvclxuICAvLyBub24tYW5vbnltb3VzIGRpdnMgYW5kIGNhdGNoIGFueSBlcnJvciB0aGF0IG1heSBvdGhlcndpc2UgYXJpc2UuIFNlZVxuICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MjdcbiAgdHJ5IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cbiAgICBjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVR5cGU7XG4gICAgY3VycmVudFJhbmdlLmVuZENvbnRhaW5lci5ub2RlVHlwZTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJZiB0aGUgbm9kZSBhbmQgb2Zmc2V0IHZhbHVlcyBhcmUgdGhlIHNhbWUsIHRoZSBzZWxlY3Rpb24gaXMgY29sbGFwc2VkLlxuICAvLyBgU2VsZWN0aW9uLmlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgbmF0aXZlbHksIGJ1dCBJRSBzb21ldGltZXMgZ2V0c1xuICAvLyB0aGlzIHZhbHVlIHdyb25nLlxuICB2YXIgaXNTZWxlY3Rpb25Db2xsYXBzZWQgPSBpc0NvbGxhcHNlZChzZWxlY3Rpb24uYW5jaG9yTm9kZSwgc2VsZWN0aW9uLmFuY2hvck9mZnNldCwgc2VsZWN0aW9uLmZvY3VzTm9kZSwgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KTtcblxuICB2YXIgcmFuZ2VMZW5ndGggPSBpc1NlbGVjdGlvbkNvbGxhcHNlZCA/IDAgOiBjdXJyZW50UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7XG5cbiAgdmFyIHRlbXBSYW5nZSA9IGN1cnJlbnRSYW5nZS5jbG9uZVJhbmdlKCk7XG4gIHRlbXBSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG4gIHRlbXBSYW5nZS5zZXRFbmQoY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLCBjdXJyZW50UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXG4gIHZhciBpc1RlbXBSYW5nZUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkKHRlbXBSYW5nZS5zdGFydENvbnRhaW5lciwgdGVtcFJhbmdlLnN0YXJ0T2Zmc2V0LCB0ZW1wUmFuZ2UuZW5kQ29udGFpbmVyLCB0ZW1wUmFuZ2UuZW5kT2Zmc2V0KTtcblxuICB2YXIgc3RhcnQgPSBpc1RlbXBSYW5nZUNvbGxhcHNlZCA/IDAgOiB0ZW1wUmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7XG4gIHZhciBlbmQgPSBzdGFydCArIHJhbmdlTGVuZ3RoO1xuXG4gIC8vIERldGVjdCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgYmFja3dhcmQuXG4gIHZhciBkZXRlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gIGRldGVjdGlvblJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gIGRldGVjdGlvblJhbmdlLnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgdmFyIGlzQmFja3dhcmQgPSBkZXRlY3Rpb25SYW5nZS5jb2xsYXBzZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogaXNCYWNrd2FyZCA/IGVuZCA6IHN0YXJ0LFxuICAgIGVuZDogaXNCYWNrd2FyZCA/IHN0YXJ0IDogZW5kXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0c1xuICovXG5mdW5jdGlvbiBzZXRJRU9mZnNldHMobm9kZSwgb2Zmc2V0cykge1xuICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTtcbiAgdmFyIHN0YXJ0LCBlbmQ7XG5cbiAgaWYgKHR5cGVvZiBvZmZzZXRzLmVuZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gIH0gZWxzZSBpZiAob2Zmc2V0cy5zdGFydCA+IG9mZnNldHMuZW5kKSB7XG4gICAgc3RhcnQgPSBvZmZzZXRzLmVuZDtcbiAgICBlbmQgPSBvZmZzZXRzLnN0YXJ0O1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcbiAgICBlbmQgPSBvZmZzZXRzLmVuZDtcbiAgfVxuXG4gIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpO1xuICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcbiAgcmFuZ2Uuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCByYW5nZSk7XG4gIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTtcbiAgcmFuZ2Uuc2VsZWN0KCk7XG59XG5cbi8qKlxuICogSW4gbW9kZXJuIG5vbi1JRSBicm93c2Vycywgd2UgY2FuIHN1cHBvcnQgYm90aCBmb3J3YXJkIGFuZCBiYWNrd2FyZFxuICogc2VsZWN0aW9ucy5cbiAqXG4gKiBOb3RlOiBJRTEwKyBzdXBwb3J0cyB0aGUgU2VsZWN0aW9uIG9iamVjdCwgYnV0IGl0IGRvZXMgbm90IHN1cHBvcnRcbiAqIHRoZSBgZXh0ZW5kYCBtZXRob2QsIHdoaWNoIG1lYW5zIHRoYXQgZXZlbiBpbiBtb2Rlcm4gSUUsIGl0J3Mgbm90IHBvc3NpYmxlXG4gKiB0byBwcm9ncmFtYXRpY2FsbHkgY3JlYXRlIGEgYmFja3dhcmQgc2VsZWN0aW9uLiBUaHVzLCBmb3IgYWxsIElFXG4gKiB2ZXJzaW9ucywgd2UgdXNlIHRoZSBvbGQgSUUgQVBJIHRvIGNyZWF0ZSBvdXIgc2VsZWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG4gKi9cbmZ1bmN0aW9uIHNldE1vZGVybk9mZnNldHMobm9kZSwgb2Zmc2V0cykge1xuICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICB2YXIgbGVuZ3RoID0gbm9kZVtnZXRUZXh0Q29udGVudEFjY2Vzc29yKCldLmxlbmd0aDtcbiAgdmFyIHN0YXJ0ID0gTWF0aC5taW4ob2Zmc2V0cy5zdGFydCwgbGVuZ3RoKTtcbiAgdmFyIGVuZCA9IHR5cGVvZiBvZmZzZXRzLmVuZCA9PT0gJ3VuZGVmaW5lZCcgPyBzdGFydCA6IE1hdGgubWluKG9mZnNldHMuZW5kLCBsZW5ndGgpO1xuXG4gIC8vIElFIDExIHVzZXMgbW9kZXJuIHNlbGVjdGlvbiwgYnV0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZXh0ZW5kIG1ldGhvZC5cbiAgLy8gRmxpcCBiYWNrd2FyZCBzZWxlY3Rpb25zLCBzbyB3ZSBjYW4gc2V0IHdpdGggYSBzaW5nbGUgcmFuZ2UuXG4gIGlmICghc2VsZWN0aW9uLmV4dGVuZCAmJiBzdGFydCA+IGVuZCkge1xuICAgIHZhciB0ZW1wID0gZW5kO1xuICAgIGVuZCA9IHN0YXJ0O1xuICAgIHN0YXJ0ID0gdGVtcDtcbiAgfVxuXG4gIHZhciBzdGFydE1hcmtlciA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQobm9kZSwgc3RhcnQpO1xuICB2YXIgZW5kTWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBlbmQpO1xuXG4gIGlmIChzdGFydE1hcmtlciAmJiBlbmRNYXJrZXIpIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNldFN0YXJ0KHN0YXJ0TWFya2VyLm5vZGUsIHN0YXJ0TWFya2VyLm9mZnNldCk7XG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgaWYgKHN0YXJ0ID4gZW5kKSB7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgc2VsZWN0aW9uLmV4dGVuZChlbmRNYXJrZXIubm9kZSwgZW5kTWFya2VyLm9mZnNldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlLnNldEVuZChlbmRNYXJrZXIubm9kZSwgZW5kTWFya2VyLm9mZnNldCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgdXNlSUVPZmZzZXRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdzZWxlY3Rpb24nIGluIGRvY3VtZW50ICYmICEoJ2dldFNlbGVjdGlvbicgaW4gd2luZG93KTtcblxudmFyIFJlYWN0RE9NU2VsZWN0aW9uID0ge1xuICAvKipcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqL1xuICBnZXRPZmZzZXRzOiB1c2VJRU9mZnNldHMgPyBnZXRJRU9mZnNldHMgOiBnZXRNb2Rlcm5PZmZzZXRzLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAgICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcbiAgICovXG4gIHNldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IHNldElFT2Zmc2V0cyA6IHNldE1vZGVybk9mZnNldHNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01TZWxlY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NU2VydmVyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3REZWZhdWx0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRJbmplY3Rpb24nKTtcbnZhciBSZWFjdFNlcnZlclJlbmRlcmluZyA9IHJlcXVpcmUoJy4vUmVhY3RTZXJ2ZXJSZW5kZXJpbmcnKTtcbnZhciBSZWFjdFZlcnNpb24gPSByZXF1aXJlKCcuL1JlYWN0VmVyc2lvbicpO1xuXG5SZWFjdERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7XG5cbnZhciBSZWFjdERPTVNlcnZlciA9IHtcbiAgcmVuZGVyVG9TdHJpbmc6IFJlYWN0U2VydmVyUmVuZGVyaW5nLnJlbmRlclRvU3RyaW5nLFxuICByZW5kZXJUb1N0YXRpY01hcmt1cDogUmVhY3RTZXJ2ZXJSZW5kZXJpbmcucmVuZGVyVG9TdGF0aWNNYXJrdXAsXG4gIHZlcnNpb246IFJlYWN0VmVyc2lvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlcnZlcjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NVGV4dENvbXBvbmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycpO1xuXG4vKipcbiAqIFRleHQgbm9kZXMgdmlvbGF0ZSBhIGNvdXBsZSBhc3N1bXB0aW9ucyB0aGF0IFJlYWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6XG4gKlxuICogIC0gV2hlbiBtb3VudGluZyB0ZXh0IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2RlcyBhcmUgbWVyZ2VkLlxuICogIC0gVGV4dCBub2RlcyBjYW5ub3QgYmUgYXNzaWduZWQgYSBSZWFjdCByb290IElELlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdzIGluIGVsZW1lbnRzIHNvIHRoYXQgdGhleSBjYW4gdW5kZXJnb1xuICogdGhlIHNhbWUgcmVjb25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRvIGVsZW1lbnRzLlxuICpcbiAqIFRPRE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBET00gd2l0aCB0ZXh0IG5vZGVzLlxuICpcbiAqIEBjbGFzcyBSZWFjdERPTVRleHRDb21wb25lbnRcbiAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAvLyBUaGlzIGNvbnN0cnVjdG9yIGFuZCBpdHMgYXJndW1lbnQgaXMgY3VycmVudGx5IHVzZWQgYnkgbW9ja3MuXG59O1xuXG5hc3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3RvdHlwZSwge1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKHRleHQpIHtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIHJlYWxseSBhIFJlYWN0VGV4dCAoUmVhY3ROb2RlKSwgbm90IGEgUmVhY3RFbGVtZW50XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSB0ZXh0O1xuICAgIHRoaXMuX3N0cmluZ1RleHQgPSAnJyArIHRleHQ7XG5cbiAgICAvLyBQcm9wZXJ0aWVzXG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gICAgdGhpcy5fbW91bnRJbmRleCA9IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIG1hcmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2ZVxuICAgKiBhbnkgZmVhdHVyZXMgYmVzaWRlcyBjb250YWluaW5nIHRleHQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldKSB7XG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZygnc3BhbicsIG51bGwsIGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9yb290Tm9kZUlEID0gcm9vdElEO1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGNvbnRleHRbUmVhY3RNb3VudC5vd25lckRvY3VtZW50Q29udGV4dEtleV07XG4gICAgICB2YXIgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRyaWJ1dGVGb3JJRChlbCwgcm9vdElEKTtcbiAgICAgIC8vIFBvcHVsYXRlIG5vZGUgY2FjaGVcbiAgICAgIFJlYWN0TW91bnQuZ2V0SUQoZWwpO1xuICAgICAgc2V0VGV4dENvbnRlbnQoZWwsIHRoaXMuX3N0cmluZ1RleHQpO1xuICAgICAgcmV0dXJuIGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZXNjYXBlZFRleHQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGhpcy5fc3RyaW5nVGV4dCk7XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIHdyYXAgdGhpcyBpbiBhIGBzcGFuYCBmb3IgdGhlIHJlYXNvbnMgc3RhdGVkIGFib3ZlLCBidXRcbiAgICAgICAgLy8gc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksXG4gICAgICAgIC8vIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFzIGl0IGlzLlxuICAgICAgICByZXR1cm4gZXNjYXBlZFRleHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnPHNwYW4gJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJRChyb290SUQpICsgJz4nICsgZXNjYXBlZFRleHQgKyAnPC9zcGFuPic7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoaXMgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RUZXh0fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0VGV4dCwgdHJhbnNhY3Rpb24pIHtcbiAgICBpZiAobmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRUZXh0O1xuICAgICAgdmFyIG5leHRTdHJpbmdUZXh0ID0gJycgKyBuZXh0VGV4dDtcbiAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAhPT0gdGhpcy5fc3RyaW5nVGV4dCkge1xuICAgICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeVxuICAgICAgICAvLyBhbmQvb3IgdXBkYXRlQ29tcG9uZW50IHRvIGRvIHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0ZW5jeSB3aXRoXG4gICAgICAgIC8vIG90aGVyIGNvbXBvbmVudCB0eXBlcz9cbiAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRTdHJpbmdUZXh0O1xuICAgICAgICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICAgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnVwZGF0ZVRleHRDb250ZW50KG5vZGUsIG5leHRTdHJpbmdUZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50LnVubW91bnRJREZyb21FbnZpcm9ubWVudCh0aGlzLl9yb290Tm9kZUlEKTtcbiAgfVxuXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFUlBUVlJsZUhSRGIyMXdiMjVsYm5RdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkVUMDFVWlhoMFEyOXRjRzl1Wlc1MFhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRVJQVFVOb2FXeGtjbVZ1VDNCbGNtRjBhVzl1Y3lBOUlISmxjWFZwY21Vb0p5NHZSRTlOUTJocGJHUnlaVzVQY0dWeVlYUnBiMjV6SnlrN1hHNTJZWElnUkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1eklEMGdjbVZ4ZFdseVpTZ25MaTlFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NbktUdGNiblpoY2lCU1pXRmpkRU52YlhCdmJtVnVkRUp5YjNkelpYSkZiblpwY205dWJXVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEYjIxd2IyNWxiblJDY205M2MyVnlSVzUyYVhKdmJtMWxiblFuS1R0Y2JuWmhjaUJTWldGamRFMXZkVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEUxdmRXNTBKeWs3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQmxjMk5oY0dWVVpYaDBRMjl1ZEdWdWRFWnZja0p5YjNkelpYSWdQU0J5WlhGMWFYSmxLQ2N1TDJWelkyRndaVlJsZUhSRGIyNTBaVzUwUm05eVFuSnZkM05sY2ljcE8xeHVkbUZ5SUhObGRGUmxlSFJEYjI1MFpXNTBJRDBnY21WeGRXbHlaU2duTGk5elpYUlVaWGgwUTI5dWRHVnVkQ2NwTzF4dWRtRnlJSFpoYkdsa1lYUmxSRTlOVG1WemRHbHVaeUE5SUhKbGNYVnBjbVVvSnk0dmRtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bkp5azdYRzVjYmk4cUtseHVJQ29nVkdWNGRDQnViMlJsY3lCMmFXOXNZWFJsSUdFZ1kyOTFjR3hsSUdGemMzVnRjSFJwYjI1eklIUm9ZWFFnVW1WaFkzUWdiV0ZyWlhNZ1lXSnZkWFFnWTI5dGNHOXVaVzUwY3pwY2JpQXFYRzRnS2lBZ0xTQlhhR1Z1SUcxdmRXNTBhVzVuSUhSbGVIUWdhVzUwYnlCMGFHVWdSRTlOTENCaFpHcGhZMlZ1ZENCMFpYaDBJRzV2WkdWeklHRnlaU0J0WlhKblpXUXVYRzRnS2lBZ0xTQlVaWGgwSUc1dlpHVnpJR05oYm01dmRDQmlaU0JoYzNOcFoyNWxaQ0JoSUZKbFlXTjBJSEp2YjNRZ1NVUXVYRzRnS2x4dUlDb2dWR2hwY3lCamIyMXdiMjVsYm5RZ2FYTWdkWE5sWkNCMGJ5QjNjbUZ3SUhOMGNtbHVaM01nYVc0Z1pXeGxiV1Z1ZEhNZ2MyOGdkR2hoZENCMGFHVjVJR05oYmlCMWJtUmxjbWR2WEc0Z0tpQjBhR1VnYzJGdFpTQnlaV052Ym1OcGJHbGhkR2x2YmlCMGFHRjBJR2x6SUdGd2NHeHBaV1FnZEc4Z1pXeGxiV1Z1ZEhNdVhHNGdLbHh1SUNvZ1ZFOUVUem9nU1c1MlpYTjBhV2RoZEdVZ2NtVndjbVZ6Wlc1MGFXNW5JRkpsWVdOMElHTnZiWEJ2Ym1WdWRITWdhVzRnZEdobElFUlBUU0IzYVhSb0lIUmxlSFFnYm05a1pYTXVYRzRnS2x4dUlDb2dRR05zWVhOeklGSmxZV04wUkU5TlZHVjRkRU52YlhCdmJtVnVkRnh1SUNvZ1FHVjRkR1Z1WkhNZ1VtVmhZM1JEYjIxd2IyNWxiblJjYmlBcUlFQnBiblJsY201aGJGeHVJQ292WEc1MllYSWdVbVZoWTNSRVQwMVVaWGgwUTI5dGNHOXVaVzUwSUQwZ1puVnVZM1JwYjI0Z0tIQnliM0J6S1NCN1hHNGdJQzh2SUZSb2FYTWdZMjl1YzNSeWRXTjBiM0lnWVc1a0lHbDBjeUJoY21kMWJXVnVkQ0JwY3lCamRYSnlaVzUwYkhrZ2RYTmxaQ0JpZVNCdGIyTnJjeTVjYm4wN1hHNWNibUZ6YzJsbmJpaFNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTENCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlVaWGgwZlNCMFpYaDBYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBPaUJtZFc1amRHbHZiaUFvZEdWNGRDa2dlMXh1SUNBZ0lDOHZJRlJQUkU4NklGUm9hWE1nYVhNZ2NtVmhiR3g1SUdFZ1VtVmhZM1JVWlhoMElDaFNaV0ZqZEU1dlpHVXBMQ0J1YjNRZ1lTQlNaV0ZqZEVWc1pXMWxiblJjYmlBZ0lDQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ0E5SUhSbGVIUTdYRzRnSUNBZ2RHaHBjeTVmYzNSeWFXNW5WR1Y0ZENBOUlDY25JQ3NnZEdWNGREdGNibHh1SUNBZ0lDOHZJRkJ5YjNCbGNuUnBaWE5jYmlBZ0lDQjBhR2x6TGw5eWIyOTBUbTlrWlVsRUlEMGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxsOXRiM1Z1ZEVsdVpHVjRJRDBnTUR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QjBhR1VnYldGeWEzVndJR1p2Y2lCMGFHbHpJSFJsZUhRZ2JtOWtaUzRnVkdocGN5QnViMlJsSUdseklHNXZkQ0JwYm5SbGJtUmxaQ0IwYnlCb1lYWmxYRzRnSUNBcUlHRnVlU0JtWldGMGRYSmxjeUJpWlhOcFpHVnpJR052Ym5SaGFXNXBibWNnZEdWNGRDQmpiMjUwWlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjbTl2ZEVsRUlFUlBUU0JKUkNCdlppQjBhR1VnY205dmRDQnViMlJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNThVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWRVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCTllYSnJkWEFnWm05eUlIUm9hWE1nZEdWNGRDQnViMlJsTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUcxdmRXNTBRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvY205dmRFbEVMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0JwWmlBb1kyOXVkR1Y0ZEZ0MllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jdVlXNWpaWE4wYjNKSmJtWnZRMjl1ZEdWNGRFdGxlVjBwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bktDZHpjR0Z1Snl3Z2JuVnNiQ3dnWTI5dWRHVjRkRnQyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1WVc1alpYTjBiM0pKYm1adlEyOXVkR1Y0ZEV0bGVWMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11WDNKdmIzUk9iMlJsU1VRZ1BTQnliMjkwU1VRN1hHNGdJQ0FnYVdZZ0tIUnlZVzV6WVdOMGFXOXVMblZ6WlVOeVpXRjBaVVZzWlcxbGJuUXBJSHRjYmlBZ0lDQWdJSFpoY2lCdmQyNWxja1J2WTNWdFpXNTBJRDBnWTI5dWRHVjRkRnRTWldGamRFMXZkVzUwTG05M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVYVHRjYmlBZ0lDQWdJSFpoY2lCbGJDQTlJRzkzYm1WeVJHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2duYzNCaGJpY3BPMXh1SUNBZ0lDQWdSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6TG5ObGRFRjBkSEpwWW5WMFpVWnZja2xFS0dWc0xDQnliMjkwU1VRcE8xeHVJQ0FnSUNBZ0x5OGdVRzl3ZFd4aGRHVWdibTlrWlNCallXTm9aVnh1SUNBZ0lDQWdVbVZoWTNSTmIzVnVkQzVuWlhSSlJDaGxiQ2s3WEc0Z0lDQWdJQ0J6WlhSVVpYaDBRMjl1ZEdWdWRDaGxiQ3dnZEdocGN5NWZjM1J5YVc1blZHVjRkQ2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaV3c3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIWmhjaUJsYzJOaGNHVmtWR1Y0ZENBOUlHVnpZMkZ3WlZSbGVIUkRiMjUwWlc1MFJtOXlRbkp2ZDNObGNpaDBhR2x6TGw5emRISnBibWRVWlhoMEtUdGNibHh1SUNBZ0lDQWdhV1lnS0hSeVlXNXpZV04wYVc5dUxuSmxibVJsY2xSdlUzUmhkR2xqVFdGeWEzVndLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFNXZjbTFoYkd4NUlIZGxKMlFnZDNKaGNDQjBhR2x6SUdsdUlHRWdZSE53WVc1Z0lHWnZjaUIwYUdVZ2NtVmhjMjl1Y3lCemRHRjBaV1FnWVdKdmRtVXNJR0oxZEZ4dUlDQWdJQ0FnSUNBdkx5QnphVzVqWlNCMGFHbHpJR2x6SUdFZ2MybDBkV0YwYVc5dUlIZG9aWEpsSUZKbFlXTjBJSGR2YmlkMElIUmhhMlVnYjNabGNpQW9jM1JoZEdsaklIQmhaMlZ6S1N4Y2JpQWdJQ0FnSUNBZ0x5OGdkMlVnWTJGdUlITnBiWEJzZVNCeVpYUjFjbTRnZEdobElIUmxlSFFnWVhNZ2FYUWdhWE11WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJsYzJOaGNHVmtWR1Y0ZER0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUNjOGMzQmhiaUFuSUNzZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpMbU55WldGMFpVMWhjbXQxY0VadmNrbEVLSEp2YjNSSlJDa2dLeUFuUGljZ0t5QmxjMk5oY0dWa1ZHVjRkQ0FySUNjOEwzTndZVzQrSnp0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndaR0YwWlhNZ2RHaHBjeUJqYjIxd2IyNWxiblFnWW5rZ2RYQmtZWFJwYm1jZ2RHaGxJSFJsZUhRZ1kyOXVkR1Z1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZSbGVIUjlJRzVsZUhSVVpYaDBJRlJvWlNCdVpYaDBJSFJsZUhRZ1kyOXVkR1Z1ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnY21WalpXbDJaVU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0c1bGVIUlVaWGgwTENCMGNtRnVjMkZqZEdsdmJpa2dlMXh1SUNBZ0lHbG1JQ2h1WlhoMFZHVjRkQ0FoUFQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwSUQwZ2JtVjRkRlJsZUhRN1hHNGdJQ0FnSUNCMllYSWdibVY0ZEZOMGNtbHVaMVJsZUhRZ1BTQW5KeUFySUc1bGVIUlVaWGgwTzF4dUlDQWdJQ0FnYVdZZ0tHNWxlSFJUZEhKcGJtZFVaWGgwSUNFOVBTQjBhR2x6TGw5emRISnBibWRVWlhoMEtTQjdYRzRnSUNBZ0lDQWdJQzh2SUZSUFJFODZJRk5oZG1VZ2RHaHBjeUJoY3lCd1pXNWthVzVuSUhCeWIzQnpJR0Z1WkNCMWMyVWdjR1Z5Wm05eWJWVndaR0YwWlVsbVRtVmpaWE56WVhKNVhHNGdJQ0FnSUNBZ0lDOHZJR0Z1WkM5dmNpQjFjR1JoZEdWRGIyMXdiMjVsYm5RZ2RHOGdaRzhnZEdobElHRmpkSFZoYkNCMWNHUmhkR1VnWm05eUlHTnZibk5wYzNSbGJtTjVJSGRwZEdoY2JpQWdJQ0FnSUNBZ0x5OGdiM1JvWlhJZ1kyOXRjRzl1Wlc1MElIUjVjR1Z6UDF4dUlDQWdJQ0FnSUNCMGFHbHpMbDl6ZEhKcGJtZFVaWGgwSUQwZ2JtVjRkRk4wY21sdVoxUmxlSFE3WEc0Z0lDQWdJQ0FnSUhaaGNpQnViMlJsSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJPYjJSbEtIUm9hWE11WDNKdmIzUk9iMlJsU1VRcE8xeHVJQ0FnSUNBZ0lDQkVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk11ZFhCa1lYUmxWR1Y0ZEVOdmJuUmxiblFvYm05a1pTd2dibVY0ZEZOMGNtbHVaMVJsZUhRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQjFibTF2ZFc1MFEyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdVbVZoWTNSRGIyMXdiMjVsYm5SQ2NtOTNjMlZ5Ulc1MmFYSnZibTFsYm5RdWRXNXRiM1Z1ZEVsRVJuSnZiVVZ1ZG1seWIyNXRaVzUwS0hSb2FYTXVYM0p2YjNST2IyUmxTVVFwTzF4dUlDQjlYRzVjYm4wcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFJFOU5WR1Y0ZEVOdmJYQnZibVZ1ZERzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NVGV4dGFyZWFcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVxdWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0RE9NSURPcGVyYXRpb25zJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gbmF0aXZlIGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2YWx1ZWAsIGFuZFxuICogYGRlZmF1bHRWYWx1ZWAuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB0cmFkaXRpb25hbCBET00gQVBJIGJlY2F1c2UgdmFsdWUgaXNcbiAqIHVzdWFsbHkgc2V0IGFzIFBDREFUQSBjaGlsZHJlbi5cbiAqXG4gKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBhZmZlY3QgdGhlXG4gKiB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC5cbiAqXG4gKiBJZiBgdmFsdWVgIGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbFxuICogbm90IHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpblxuICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG4gKlxuICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5IHZhbHVlLCB0aGUgcHJvcFxuICogYGRlZmF1bHRWYWx1ZWAgaWYgc3BlY2lmaWVkLCBvciB0aGUgY2hpbGRyZW4gY29udGVudCAoZGVwcmVjYXRlZCkuXG4gKi9cbnZhciBSZWFjdERPTVRleHRhcmVhID0ge1xuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgIShwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRhcmVhPi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5nLiBJbiBJRTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbFxuICAgIC8vIGdldCByZXNldCBpZiBgdGV4dENvbnRlbnRgIGlzIG11dGF0ZWQuXG4gICAgdmFyIG5hdGl2ZVByb3BzID0gYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgY2hpbGRyZW46IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG4gICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmF0aXZlUHJvcHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlO1xuICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJlYT4uXG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gICAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVuIG9uIDx0ZXh0YXJlYT4uJykgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICAhKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJZiB5b3Ugc3VwcGx5IGBkZWZhdWx0VmFsdWVgIG9uIGEgPHRleHRhcmVhPiwgZG8gbm90IHBhc3MgY2hpbGRyZW4uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICAgICEoY2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnICsgY2hpbGRyZW47XG4gICAgfVxuICAgIGlmIChkZWZhdWx0VmFsdWUgPT0gbnVsbCkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gJyc7XG4gICAgfVxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgLy8gV2Ugc2F2ZSB0aGUgaW5pdGlhbCB2YWx1ZSBzbyB0aGF0IGBSZWFjdERPTUNvbXBvbmVudGAgZG9lc24ndCB1cGRhdGVcbiAgICAgIC8vIGB0ZXh0Q29udGVudGAgKHVubmVjZXNzYXJ5IHNpbmNlIHdlIHVwZGF0ZSB2YWx1ZSkuXG4gICAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBzbyB0aGF0J3Mgd2h5IGl0J3NcbiAgICAgIC8vIGZvcmNlZCB0byBiZSBhIHN0cmluZy5cbiAgICAgIGluaXRpYWxWYWx1ZTogJycgKyAodmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlKSxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdClcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG4gICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG4gICAgICBSZWFjdERPTUlET3BlcmF0aW9ucy51cGRhdGVQcm9wZXJ0eUJ5SUQoaW5zdC5fcm9vdE5vZGVJRCwgJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpO1xuICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFZSbGVIUmhjbVZoTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkVUMDFVWlhoMFlYSmxZVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwweHBibXRsWkZaaGJIVmxWWFJwYkhNbktUdGNiblpoY2lCU1pXRmpkRVJQVFVsRVQzQmxjbUYwYVc5dWN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFKUkU5d1pYSmhkR2x2Ym5NbktUdGNiblpoY2lCU1pXRmpkRlZ3WkdGMFpYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBWWEJrWVhSbGN5Y3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dVpuVnVZM1JwYjI0Z1ptOXlZMlZWY0dSaGRHVkpaazF2ZFc1MFpXUW9LU0I3WEc0Z0lHbG1JQ2gwYUdsekxsOXliMjkwVG05a1pVbEVLU0I3WEc0Z0lDQWdMeThnUkU5TklHTnZiWEJ2Ym1WdWRDQnBjeUJ6ZEdsc2JDQnRiM1Z1ZEdWa095QjFjR1JoZEdWY2JpQWdJQ0JTWldGamRFUlBUVlJsZUhSaGNtVmhMblZ3WkdGMFpWZHlZWEJ3WlhJb2RHaHBjeWs3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHRWdQSFJsZUhSaGNtVmhQaUJ1WVhScGRtVWdZMjl0Y0c5dVpXNTBJSFJvWVhRZ1lXeHNiM2R6SUhObGRIUnBibWNnWUhaaGJIVmxZQ3dnWVc1a1hHNGdLaUJnWkdWbVlYVnNkRlpoYkhWbFlDNGdWR2hwY3lCa2FXWm1aWEp6SUdaeWIyMGdkR2hsSUhSeVlXUnBkR2x2Ym1Gc0lFUlBUU0JCVUVrZ1ltVmpZWFZ6WlNCMllXeDFaU0JwYzF4dUlDb2dkWE4xWVd4c2VTQnpaWFFnWVhNZ1VFTkVRVlJCSUdOb2FXeGtjbVZ1TGx4dUlDcGNiaUFxSUVsbUlHQjJZV3gxWldBZ2FYTWdibTkwSUhOMWNIQnNhV1ZrSUNodmNpQnVkV3hzTDNWdVpHVm1hVzVsWkNrc0lIVnpaWElnWVdOMGFXOXVjeUIwYUdGMElHRm1abVZqZENCMGFHVmNiaUFxSUhaaGJIVmxJSGRwYkd3Z2RISnBaMmRsY2lCMWNHUmhkR1Z6SUhSdklIUm9aU0JsYkdWdFpXNTBMbHh1SUNwY2JpQXFJRWxtSUdCMllXeDFaV0FnYVhNZ2MzVndjR3hwWldRZ0tHRnVaQ0J1YjNRZ2JuVnNiQzkxYm1SbFptbHVaV1FwTENCMGFHVWdjbVZ1WkdWeVpXUWdaV3hsYldWdWRDQjNhV3hzWEc0Z0tpQnViM1FnZEhKcFoyZGxjaUIxY0dSaGRHVnpJSFJ2SUhSb1pTQmxiR1Z0Wlc1MExpQkpibk4wWldGa0xDQjBhR1VnWUhaaGJIVmxZQ0J3Y205d0lHMTFjM1FnWTJoaGJtZGxJR2x1WEc0Z0tpQnZjbVJsY2lCbWIzSWdkR2hsSUhKbGJtUmxjbVZrSUdWc1pXMWxiblFnZEc4Z1ltVWdkWEJrWVhSbFpDNWNiaUFxWEc0Z0tpQlVhR1VnY21WdVpHVnlaV1FnWld4bGJXVnVkQ0IzYVd4c0lHSmxJR2x1YVhScFlXeHBlbVZrSUhkcGRHZ2dZVzRnWlcxd2RIa2dkbUZzZFdVc0lIUm9aU0J3Y205d1hHNGdLaUJnWkdWbVlYVnNkRlpoYkhWbFlDQnBaaUJ6Y0dWamFXWnBaV1FzSUc5eUlIUm9aU0JqYUdsc1pISmxiaUJqYjI1MFpXNTBJQ2hrWlhCeVpXTmhkR1ZrS1M1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUkU5TlZHVjRkR0Z5WldFZ1BTQjdYRzRnSUdkbGRFNWhkR2wyWlZCeWIzQnpPaUJtZFc1amRHbHZiaUFvYVc1emRDd2djSEp2Y0hNc0lHTnZiblJsZUhRcElIdGNiaUFnSUNBaEtIQnliM0J6TG1SaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1JRDA5SUc1MWJHd3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyQmtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVEdBZ1pHOWxjeUJ1YjNRZ2JXRnJaU0J6Wlc1elpTQnZiaUE4ZEdWNGRHRnlaV0UrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUVGc2QyRjVjeUJ6WlhRZ1kyaHBiR1J5Wlc0Z2RHOGdkR2hsSUhOaGJXVWdkR2hwYm1jdUlFbHVJRWxGT1N3Z2RHaGxJSE5sYkdWamRHbHZiaUJ5WVc1blpTQjNhV3hzWEc0Z0lDQWdMeThnWjJWMElISmxjMlYwSUdsbUlHQjBaWGgwUTI5dWRHVnVkR0FnYVhNZ2JYVjBZWFJsWkM1Y2JpQWdJQ0IyWVhJZ2JtRjBhWFpsVUhKdmNITWdQU0JoYzNOcFoyNG9lMzBzSUhCeWIzQnpMQ0I3WEc0Z0lDQWdJQ0JrWldaaGRXeDBWbUZzZFdVNklIVnVaR1ZtYVc1bFpDeGNiaUFnSUNBZ0lIWmhiSFZsT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCamFHbHNaSEpsYmpvZ2FXNXpkQzVmZDNKaGNIQmxjbE4wWVhSbExtbHVhWFJwWVd4V1lXeDFaU3hjYmlBZ0lDQWdJRzl1UTJoaGJtZGxPaUJwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1V1YjI1RGFHRnVaMlZjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnVZWFJwZG1WUWNtOXdjenRjYmlBZ2ZTeGNibHh1SUNCdGIzVnVkRmR5WVhCd1pYSTZJR1oxYm1OMGFXOXVJQ2hwYm5OMExDQndjbTl3Y3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbU5vWldOclVISnZjRlI1Y0dWektDZDBaWGgwWVhKbFlTY3NJSEJ5YjNCekxDQnBibk4wTGw5amRYSnlaVzUwUld4bGJXVnVkQzVmYjNkdVpYSXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJrWldaaGRXeDBWbUZzZFdVZ1BTQndjbTl3Y3k1a1pXWmhkV3gwVm1Gc2RXVTdYRzRnSUNBZ0x5OGdWRTlFVHlBb2VYVnVaM04wWlhKektUb2dVbVZ0YjNabElITjFjSEJ2Y25RZ1ptOXlJR05vYVd4a2NtVnVJR052Ym5SbGJuUWdhVzRnUEhSbGVIUmhjbVZoUGk1Y2JpQWdJQ0IyWVhJZ1kyaHBiR1J5Wlc0Z1BTQndjbTl3Y3k1amFHbHNaSEpsYmp0Y2JpQWdJQ0JwWmlBb1kyaHBiR1J5Wlc0Z0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFZjMlVnZEdobElHQmtaV1poZFd4MFZtRnNkV1ZnSUc5eUlHQjJZV3gxWldBZ2NISnZjSE1nYVc1emRHVmhaQ0J2WmlCelpYUjBhVzVuSUNjZ0t5QW5ZMmhwYkdSeVpXNGdiMjRnUEhSbGVIUmhjbVZoUGk0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0VvWkdWbVlYVnNkRlpoYkhWbElEMDlJRzUxYkd3cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBsbUlIbHZkU0J6ZFhCd2JIa2dZR1JsWm1GMWJIUldZV3gxWldBZ2IyNGdZU0E4ZEdWNGRHRnlaV0UrTENCa2J5QnViM1FnY0dGemN5QmphR2xzWkhKbGJpNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoamFHbHNaSEpsYmlrcElIdGNiaUFnSUNBZ0lDQWdJU2hqYUdsc1pISmxiaTVzWlc1bmRHZ2dQRDBnTVNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUEhSbGVIUmhjbVZoUGlCallXNGdiMjVzZVNCb1lYWmxJR0YwSUcxdmMzUWdiMjVsSUdOb2FXeGtMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdZMmhwYkdSeVpXNGdQU0JqYUdsc1pISmxibHN3WFR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1pHVm1ZWFZzZEZaaGJIVmxJRDBnSnljZ0t5QmphR2xzWkhKbGJqdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHUmxabUYxYkhSV1lXeDFaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JrWldaaGRXeDBWbUZzZFdVZ1BTQW5KenRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJSFpoYkhWbElEMGdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5NW5aWFJXWVd4MVpTaHdjbTl3Y3lrN1hHNWNiaUFnSUNCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVZ1BTQjdYRzRnSUNBZ0lDQXZMeUJYWlNCellYWmxJSFJvWlNCcGJtbDBhV0ZzSUhaaGJIVmxJSE52SUhSb1lYUWdZRkpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBZQ0JrYjJWemJpZDBJSFZ3WkdGMFpWeHVJQ0FnSUNBZ0x5OGdZSFJsZUhSRGIyNTBaVzUwWUNBb2RXNXVaV05sYzNOaGNua2djMmx1WTJVZ2QyVWdkWEJrWVhSbElIWmhiSFZsS1M1Y2JpQWdJQ0FnSUM4dklGUm9aU0JwYm1sMGFXRnNJSFpoYkhWbElHTmhiaUJpWlNCaElHSnZiMnhsWVc0Z2IzSWdiMkpxWldOMElITnZJSFJvWVhRbmN5QjNhSGtnYVhRbmMxeHVJQ0FnSUNBZ0x5OGdabTl5WTJWa0lIUnZJR0psSUdFZ2MzUnlhVzVuTGx4dUlDQWdJQ0FnYVc1cGRHbGhiRlpoYkhWbE9pQW5KeUFySUNoMllXeDFaU0FoUFNCdWRXeHNJRDhnZG1Gc2RXVWdPaUJrWldaaGRXeDBWbUZzZFdVcExGeHVJQ0FnSUNBZ2IyNURhR0Z1WjJVNklGOW9ZVzVrYkdWRGFHRnVaMlV1WW1sdVpDaHBibk4wS1Z4dUlDQWdJSDA3WEc0Z0lIMHNYRzVjYmlBZ2RYQmtZWFJsVjNKaGNIQmxjam9nWm5WdVkzUnBiMjRnS0dsdWMzUXBJSHRjYmlBZ0lDQjJZWElnY0hKdmNITWdQU0JwYm5OMExsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjenRjYmlBZ0lDQjJZWElnZG1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbWRsZEZaaGJIVmxLSEJ5YjNCektUdGNiaUFnSUNCcFppQW9kbUZzZFdVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0x5OGdRMkZ6ZENCZ2RtRnNkV1ZnSUhSdklHRWdjM1J5YVc1bklIUnZJR1Z1YzNWeVpTQjBhR1VnZG1Gc2RXVWdhWE1nYzJWMElHTnZjbkpsWTNSc2VTNGdWMmhwYkdWY2JpQWdJQ0FnSUM4dklHSnliM2R6WlhKeklIUjVjR2xqWVd4c2VTQmtieUIwYUdseklHRnpJRzVsWTJWemMyRnllU3dnYW5Oa2IyMGdaRzlsYzI0bmRDNWNiaUFnSUNBZ0lGSmxZV04wUkU5TlNVUlBjR1Z5WVhScGIyNXpMblZ3WkdGMFpWQnliM0JsY25SNVFubEpSQ2hwYm5OMExsOXliMjkwVG05a1pVbEVMQ0FuZG1Gc2RXVW5MQ0FuSnlBcklIWmhiSFZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JtWjFibU4wYVc5dUlGOW9ZVzVrYkdWRGFHRnVaMlVvWlhabGJuUXBJSHRjYmlBZ2RtRnlJSEJ5YjNCeklEMGdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1Y0hKdmNITTdYRzRnSUhaaGNpQnlaWFIxY201V1lXeDFaU0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WlhobFkzVjBaVTl1UTJoaGJtZGxLSEJ5YjNCekxDQmxkbVZ1ZENrN1hHNGdJRkpsWVdOMFZYQmtZWFJsY3k1aGMyRndLR1p2Y21ObFZYQmtZWFJsU1daTmIzVnVkR1ZrTENCMGFHbHpLVHRjYmlBZ2NtVjBkWEp1SUhKbGRIVnlibFpoYkhWbE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBSRTlOVkdWNGRHRnlaV0U3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG5cbnZhciBSRVNFVF9CQVRDSEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9IGZhbHNlO1xuICB9XG59O1xuXG52YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0ge1xuICBpbml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLFxuICBjbG9zZTogUmVhY3RVcGRhdGVzLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChSZWFjdFVwZGF0ZXMpXG59O1xuXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbRkxVU0hfQkFUQ0hFRF9VUERBVEVTLCBSRVNFVF9CQVRDSEVEX1VQREFURVNdO1xuXG5mdW5jdGlvbiBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKSB7XG4gIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbn1cblxuYXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLk1peGluLCB7XG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH1cbn0pO1xuXG52YXIgdHJhbnNhY3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKCk7XG5cbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0ge1xuICBpc0JhdGNoaW5nVXBkYXRlczogZmFsc2UsXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNldFN0YXRlYFxuICAgKiBhbmQgZnJpZW5kcyBhcmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3QgdXBkYXRlZCB1bm5lY2Vzc2FyaWx5LlxuICAgKi9cbiAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkge1xuICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcztcblxuICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVlO1xuXG4gICAgLy8gVGhlIGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uc1xuICAgIGlmIChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgICBjYWxsYmFjayhhLCBiLCBjLCBkLCBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNhY3Rpb24ucGVyZm9ybShjYWxsYmFjaywgbnVsbCwgYSwgYiwgYywgZCwgZSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3k7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERlZmF1bHRJbmplY3Rpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luJyk7XG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0NoYW5nZUV2ZW50UGx1Z2luJyk7XG52YXIgQ2xpZW50UmVhY3RSb290SW5kZXggPSByZXF1aXJlKCcuL0NsaWVudFJlYWN0Um9vdEluZGV4Jyk7XG52YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSByZXF1aXJlKCcuL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyJyk7XG52YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9FbnRlckxlYXZlRXZlbnRQbHVnaW4nKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0gcmVxdWlyZSgnLi9IVE1MRE9NUHJvcGVydHlDb25maWcnKTtcbnZhciBSZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbiA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4nKTtcbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRDb21wb25lbnQnKTtcbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRMaXN0ZW5lcicpO1xudmFyIFJlYWN0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluamVjdGlvbicpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJyk7XG52YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL1NlbGVjdEV2ZW50UGx1Z2luJyk7XG52YXIgU2VydmVyUmVhY3RSb290SW5kZXggPSByZXF1aXJlKCcuL1NlcnZlclJlYWN0Um9vdEluZGV4Jyk7XG52YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL1NpbXBsZUV2ZW50UGx1Z2luJyk7XG52YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSByZXF1aXJlKCcuL1NWR0RPTVByb3BlcnR5Q29uZmlnJyk7XG5cbnZhciBhbHJlYWR5SW5qZWN0ZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gaW5qZWN0KCkge1xuICBpZiAoYWxyZWFkeUluamVjdGVkKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBjdXJyZW50bHkgdHJ1ZSBiZWNhdXNlIHRoZXNlIGluamVjdGlvbnMgYXJlIHNoYXJlZCBiZXR3ZWVuXG4gICAgLy8gdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciBwYWNrYWdlLiBUaGV5IHNob3VsZCBiZSBidWlsdCBpbmRlcGVuZGVudGx5XG4gICAgLy8gYW5kIG5vdCBzaGFyZSBhbnkgaW5qZWN0aW9uIHN0YXRlLiBUaGVuIHRoaXMgcHJvYmxlbSB3aWxsIGJlIHNvbHZlZC5cbiAgICByZXR1cm47XG4gIH1cbiAgYWxyZWFkeUluamVjdGVkID0gdHJ1ZTtcblxuICBSZWFjdEluamVjdGlvbi5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyKFJlYWN0RXZlbnRMaXN0ZW5lcik7XG5cbiAgLyoqXG4gICAqIEluamVjdCBtb2R1bGVzIGZvciByZXNvbHZpbmcgRE9NIGhpZXJhcmNoeSBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuICAgKi9cbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcihEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcik7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEluc3RhbmNlSGFuZGxlKFJlYWN0SW5zdGFuY2VIYW5kbGVzKTtcbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0TW91bnQoUmVhY3RNb3VudCk7XG5cbiAgLyoqXG4gICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdpbnMgaW5jbHVkZWQgYnkgZGVmYXVsdCAod2l0aG91dCBoYXZpbmcgdG8gcmVxdWlyZVxuICAgKiB0aGVtKS5cbiAgICovXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7XG4gICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1Z2luLFxuICAgIEVudGVyTGVhdmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLFxuICAgIENoYW5nZUV2ZW50UGx1Z2luOiBDaGFuZ2VFdmVudFBsdWdpbixcbiAgICBTZWxlY3RFdmVudFBsdWdpbjogU2VsZWN0RXZlbnRQbHVnaW4sXG4gICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRFdmVudFBsdWdpblxuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5OYXRpdmVDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKFJlYWN0RE9NQ29tcG9uZW50KTtcblxuICBSZWFjdEluamVjdGlvbi5OYXRpdmVDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ2xhc3MuaW5qZWN0TWl4aW4oUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4pO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKEhUTUxET01Qcm9wZXJ0eUNvbmZpZyk7XG4gIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKFNWR0RPTVByb3BlcnR5Q29uZmlnKTtcblxuICBSZWFjdEluamVjdGlvbi5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudCgnbm9zY3JpcHQnKTtcblxuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uUm9vdEluZGV4LmluamVjdENyZWF0ZVJlYWN0Um9vdEluZGV4KEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IENsaWVudFJlYWN0Um9vdEluZGV4LmNyZWF0ZVJlYWN0Um9vdEluZGV4IDogU2VydmVyUmVhY3RSb290SW5kZXguY3JlYXRlUmVhY3RSb290SW5kZXgpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgdXJsID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmIHx8ICcnO1xuICAgIGlmICgvWz8mXXJlYWN0X3BlcmZcXGIvLnRlc3QodXJsKSkge1xuICAgICAgdmFyIFJlYWN0RGVmYXVsdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdFBlcmYnKTtcbiAgICAgIFJlYWN0RGVmYXVsdFBlcmYuc3RhcnQoKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluamVjdDogaW5qZWN0XG59O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJsWm1GMWJIUkpibXBsWTNScGIyNHVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSRVpXWmhkV3gwU1c1cVpXTjBhVzl1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1FtVm1iM0psU1c1d2RYUkZkbVZ1ZEZCc2RXZHBiaUE5SUhKbGNYVnBjbVVvSnk0dlFtVm1iM0psU1c1d2RYUkZkbVZ1ZEZCc2RXZHBiaWNwTzF4dWRtRnlJRU5vWVc1blpVVjJaVzUwVUd4MVoybHVJRDBnY21WeGRXbHlaU2duTGk5RGFHRnVaMlZGZG1WdWRGQnNkV2RwYmljcE8xeHVkbUZ5SUVOc2FXVnVkRkpsWVdOMFVtOXZkRWx1WkdWNElEMGdjbVZ4ZFdseVpTZ25MaTlEYkdsbGJuUlNaV0ZqZEZKdmIzUkpibVJsZUNjcE8xeHVkbUZ5SUVSbFptRjFiSFJGZG1WdWRGQnNkV2RwYms5eVpHVnlJRDBnY21WeGRXbHlaU2duTGk5RVpXWmhkV3gwUlhabGJuUlFiSFZuYVc1UGNtUmxjaWNwTzF4dWRtRnlJRVZ1ZEdWeVRHVmhkbVZGZG1WdWRGQnNkV2RwYmlBOUlISmxjWFZwY21Vb0p5NHZSVzUwWlhKTVpXRjJaVVYyWlc1MFVHeDFaMmx1SnlrN1hHNTJZWElnUlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOUZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQ2NwTzF4dWRtRnlJRWhVVFV4RVQwMVFjbTl3WlhKMGVVTnZibVpwWnlBOUlISmxjWFZwY21Vb0p5NHZTRlJOVEVSUFRWQnliM0JsY25SNVEyOXVabWxuSnlrN1hHNTJZWElnVW1WaFkzUkNjbTkzYzJWeVEyOXRjRzl1Wlc1MFRXbDRhVzRnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUW5KdmQzTmxja052YlhCdmJtVnVkRTFwZUdsdUp5azdYRzUyWVhJZ1VtVmhZM1JEYjIxd2IyNWxiblJDY205M2MyVnlSVzUyYVhKdmJtMWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTI5dGNHOXVaVzUwUW5KdmQzTmxja1Z1ZG1seWIyNXRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkVaV1poZFd4MFFtRjBZMmhwYm1kVGRISmhkR1ZuZVNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVpXWmhkV3gwUW1GMFkyaHBibWRUZEhKaGRHVm5lU2NwTzF4dWRtRnlJRkpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJQVFVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSRTlOVkdWNGRFTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFVWlhoMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JGZG1WdWRFeHBjM1JsYm1WeUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVjJaVzUwVEdsemRHVnVaWEluS1R0Y2JuWmhjaUJTWldGamRFbHVhbVZqZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkpibXBsWTNScGIyNG5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTW5LVHRjYm5aaGNpQlNaV0ZqZEUxdmRXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRTF2ZFc1MEp5azdYRzUyWVhJZ1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2YmlBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJpY3BPMXh1ZG1GeUlGTmxiR1ZqZEVWMlpXNTBVR3gxWjJsdUlEMGdjbVZ4ZFdseVpTZ25MaTlUWld4bFkzUkZkbVZ1ZEZCc2RXZHBiaWNwTzF4dWRtRnlJRk5sY25abGNsSmxZV04wVW05dmRFbHVaR1Y0SUQwZ2NtVnhkV2x5WlNnbkxpOVRaWEoyWlhKU1pXRmpkRkp2YjNSSmJtUmxlQ2NwTzF4dWRtRnlJRk5wYlhCc1pVVjJaVzUwVUd4MVoybHVJRDBnY21WeGRXbHlaU2duTGk5VGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmljcE8xeHVkbUZ5SUZOV1IwUlBUVkJ5YjNCbGNuUjVRMjl1Wm1sbklEMGdjbVZ4ZFdseVpTZ25MaTlUVmtkRVQwMVFjbTl3WlhKMGVVTnZibVpwWnljcE8xeHVYRzUyWVhJZ1lXeHlaV0ZrZVVsdWFtVmpkR1ZrSUQwZ1ptRnNjMlU3WEc1Y2JtWjFibU4wYVc5dUlHbHVhbVZqZENncElIdGNiaUFnYVdZZ0tHRnNjbVZoWkhsSmJtcGxZM1JsWkNrZ2UxeHVJQ0FnSUM4dklGUlBSRTg2SUZSb2FYTWdhWE1nWTNWeWNtVnVkR3g1SUhSeWRXVWdZbVZqWVhWelpTQjBhR1Z6WlNCcGJtcGxZM1JwYjI1eklHRnlaU0J6YUdGeVpXUWdZbVYwZDJWbGJseHVJQ0FnSUM4dklIUm9aU0JqYkdsbGJuUWdZVzVrSUhSb1pTQnpaWEoyWlhJZ2NHRmphMkZuWlM0Z1ZHaGxlU0J6YUc5MWJHUWdZbVVnWW5WcGJIUWdhVzVrWlhCbGJtUmxiblJzZVZ4dUlDQWdJQzh2SUdGdVpDQnViM1FnYzJoaGNtVWdZVzU1SUdsdWFtVmpkR2x2YmlCemRHRjBaUzRnVkdobGJpQjBhR2x6SUhCeWIySnNaVzBnZDJsc2JDQmlaU0J6YjJ4MlpXUXVYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzRnSUdGc2NtVmhaSGxKYm1wbFkzUmxaQ0E5SUhSeWRXVTdYRzVjYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1UlhabGJuUkZiV2wwZEdWeUxtbHVhbVZqZEZKbFlXTjBSWFpsYm5STWFYTjBaVzVsY2loU1pXRmpkRVYyWlc1MFRHbHpkR1Z1WlhJcE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJtcGxZM1FnYlc5a2RXeGxjeUJtYjNJZ2NtVnpiMngyYVc1bklFUlBUU0JvYVdWeVlYSmphSGtnWVc1a0lIQnNkV2RwYmlCdmNtUmxjbWx1Wnk1Y2JpQWdJQ292WEc0Z0lGSmxZV04wU1c1cVpXTjBhVzl1TGtWMlpXNTBVR3gxWjJsdVNIVmlMbWx1YW1WamRFVjJaVzUwVUd4MVoybHVUM0prWlhJb1JHVm1ZWFZzZEVWMlpXNTBVR3gxWjJsdVQzSmtaWElwTzF4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RmRtVnVkRkJzZFdkcGJraDFZaTVwYm1wbFkzUkpibk4wWVc1alpVaGhibVJzWlNoU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5azdYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMa1YyWlc1MFVHeDFaMmx1U0hWaUxtbHVhbVZqZEUxdmRXNTBLRkpsWVdOMFRXOTFiblFwTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJUYjIxbElHbHRjRzl5ZEdGdWRDQmxkbVZ1ZENCd2JIVm5hVzV6SUdsdVkyeDFaR1ZrSUdKNUlHUmxabUYxYkhRZ0tIZHBkR2h2ZFhRZ2FHRjJhVzVuSUhSdklISmxjWFZwY21WY2JpQWdJQ29nZEdobGJTa3VYRzRnSUNBcUwxeHVJQ0JTWldGamRFbHVhbVZqZEdsdmJpNUZkbVZ1ZEZCc2RXZHBia2gxWWk1cGJtcGxZM1JGZG1WdWRGQnNkV2RwYm5OQ2VVNWhiV1VvZTF4dUlDQWdJRk5wYlhCc1pVVjJaVzUwVUd4MVoybHVPaUJUYVcxd2JHVkZkbVZ1ZEZCc2RXZHBiaXhjYmlBZ0lDQkZiblJsY2t4bFlYWmxSWFpsYm5SUWJIVm5hVzQ2SUVWdWRHVnlUR1ZoZG1WRmRtVnVkRkJzZFdkcGJpeGNiaUFnSUNCRGFHRnVaMlZGZG1WdWRGQnNkV2RwYmpvZ1EyaGhibWRsUlhabGJuUlFiSFZuYVc0c1hHNGdJQ0FnVTJWc1pXTjBSWFpsYm5SUWJIVm5hVzQ2SUZObGJHVmpkRVYyWlc1MFVHeDFaMmx1TEZ4dUlDQWdJRUpsWm05eVpVbHVjSFYwUlhabGJuUlFiSFZuYVc0NklFSmxabTl5WlVsdWNIVjBSWFpsYm5SUWJIVm5hVzVjYmlBZ2ZTazdYRzVjYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1VG1GMGFYWmxRMjl0Y0c5dVpXNTBMbWx1YW1WamRFZGxibVZ5YVdORGIyMXdiMjVsYm5SRGJHRnpjeWhTWldGamRFUlBUVU52YlhCdmJtVnVkQ2s3WEc1Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVRtRjBhWFpsUTI5dGNHOXVaVzUwTG1sdWFtVmpkRlJsZUhSRGIyMXdiMjVsYm5SRGJHRnpjeWhTWldGamRFUlBUVlJsZUhSRGIyMXdiMjVsYm5RcE8xeHVYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMa05zWVhOekxtbHVhbVZqZEUxcGVHbHVLRkpsWVdOMFFuSnZkM05sY2tOdmJYQnZibVZ1ZEUxcGVHbHVLVHRjYmx4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RVQwMVFjbTl3WlhKMGVTNXBibXBsWTNSRVQwMVFjbTl3WlhKMGVVTnZibVpwWnloSVZFMU1SRTlOVUhKdmNHVnlkSGxEYjI1bWFXY3BPMXh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVFVDAxUWNtOXdaWEowZVM1cGJtcGxZM1JFVDAxUWNtOXdaWEowZVVOdmJtWnBaeWhUVmtkRVQwMVFjbTl3WlhKMGVVTnZibVpwWnlrN1hHNWNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVSVzF3ZEhsRGIyMXdiMjVsYm5RdWFXNXFaV04wUlcxd2RIbERiMjF3YjI1bGJuUW9KMjV2YzJOeWFYQjBKeWs3WEc1Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVZYQmtZWFJsY3k1cGJtcGxZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2YmloU1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1S1R0Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVZYQmtZWFJsY3k1cGJtcGxZM1JDWVhSamFHbHVaMU4wY21GMFpXZDVLRkpsWVdOMFJHVm1ZWFZzZEVKaGRHTm9hVzVuVTNSeVlYUmxaM2twTzF4dVhHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxsSnZiM1JKYm1SbGVDNXBibXBsWTNSRGNtVmhkR1ZTWldGamRGSnZiM1JKYm1SbGVDaEZlR1ZqZFhScGIyNUZiblpwY205dWJXVnVkQzVqWVc1VmMyVkVUMDBnUHlCRGJHbGxiblJTWldGamRGSnZiM1JKYm1SbGVDNWpjbVZoZEdWU1pXRmpkRkp2YjNSSmJtUmxlQ0E2SUZObGNuWmxjbEpsWVdOMFVtOXZkRWx1WkdWNExtTnlaV0YwWlZKbFlXTjBVbTl2ZEVsdVpHVjRLVHRjYmx4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RGIyMXdiMjVsYm5RdWFXNXFaV04wUlc1MmFYSnZibTFsYm5Rb1VtVmhZM1JEYjIxd2IyNWxiblJDY205M2MyVnlSVzUyYVhKdmJtMWxiblFwTzF4dVhHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2RtRnlJSFZ5YkNBOUlFVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBMbU5oYmxWelpVUlBUU0FtSmlCM2FXNWtiM2N1Ykc5allYUnBiMjR1YUhKbFppQjhmQ0FuSnp0Y2JpQWdJQ0JwWmlBb0wxcy9KbDF5WldGamRGOXdaWEptWEZ4aUx5NTBaWE4wS0hWeWJDa3BJSHRjYmlBZ0lDQWdJSFpoY2lCU1pXRmpkRVJsWm1GMWJIUlFaWEptSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVSbFptRjFiSFJRWlhKbUp5azdYRzRnSUNBZ0lDQlNaV0ZqZEVSbFptRjFiSFJRWlhKbUxuTjBZWEowS0NrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2UxeHVJQ0JwYm1wbFkzUTZJR2x1YW1WamRGeHVmVHNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERlZmF1bHRQZXJmXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcyA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG5cbnZhciBwZXJmb3JtYW5jZU5vdyA9IHJlcXVpcmUoJ2ZianMvbGliL3BlcmZvcm1hbmNlTm93Jyk7XG5cbmZ1bmN0aW9uIHJvdW5kRmxvYXQodmFsKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKHZhbCAqIDEwMCkgLyAxMDA7XG59XG5cbmZ1bmN0aW9uIGFkZFZhbHVlKG9iaiwga2V5LCB2YWwpIHtcbiAgb2JqW2tleV0gPSAob2JqW2tleV0gfHwgMCkgKyB2YWw7XG59XG5cbnZhciBSZWFjdERlZmF1bHRQZXJmID0ge1xuICBfYWxsTWVhc3VyZW1lbnRzOiBbXSwgLy8gbGFzdCBpdGVtIGluIHRoZSBsaXN0IGlzIHRoZSBjdXJyZW50IG9uZVxuICBfbW91bnRTdGFjazogWzBdLFxuICBfaW5qZWN0ZWQ6IGZhbHNlLFxuXG4gIHN0YXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFSZWFjdERlZmF1bHRQZXJmLl9pbmplY3RlZCkge1xuICAgICAgUmVhY3RQZXJmLmluamVjdGlvbi5pbmplY3RNZWFzdXJlKFJlYWN0RGVmYXVsdFBlcmYubWVhc3VyZSk7XG4gICAgfVxuXG4gICAgUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzLmxlbmd0aCA9IDA7XG4gICAgUmVhY3RQZXJmLmVuYWJsZU1lYXN1cmUgPSB0cnVlO1xuICB9LFxuXG4gIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdFBlcmYuZW5hYmxlTWVhc3VyZSA9IGZhbHNlO1xuICB9LFxuXG4gIGdldExhc3RNZWFzdXJlbWVudHM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzO1xuICB9LFxuXG4gIHByaW50RXhjbHVzaXZlOiBmdW5jdGlvbiAobWVhc3VyZW1lbnRzKSB7XG4gICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzIHx8IFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50cztcbiAgICB2YXIgc3VtbWFyeSA9IFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5nZXRFeGNsdXNpdmVTdW1tYXJ5KG1lYXN1cmVtZW50cyk7XG4gICAgY29uc29sZS50YWJsZShzdW1tYXJ5Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ0NvbXBvbmVudCBjbGFzcyBuYW1lJzogaXRlbS5jb21wb25lbnROYW1lLFxuICAgICAgICAnVG90YWwgaW5jbHVzaXZlIHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQoaXRlbS5pbmNsdXNpdmUpLFxuICAgICAgICAnRXhjbHVzaXZlIG1vdW50IHRpbWUgKG1zKSc6IHJvdW5kRmxvYXQoaXRlbS5leGNsdXNpdmUpLFxuICAgICAgICAnRXhjbHVzaXZlIHJlbmRlciB0aW1lIChtcyknOiByb3VuZEZsb2F0KGl0ZW0ucmVuZGVyKSxcbiAgICAgICAgJ01vdW50IHRpbWUgcGVyIGluc3RhbmNlIChtcyknOiByb3VuZEZsb2F0KGl0ZW0uZXhjbHVzaXZlIC8gaXRlbS5jb3VudCksXG4gICAgICAgICdSZW5kZXIgdGltZSBwZXIgaW5zdGFuY2UgKG1zKSc6IHJvdW5kRmxvYXQoaXRlbS5yZW5kZXIgLyBpdGVtLmNvdW50KSxcbiAgICAgICAgJ0luc3RhbmNlcyc6IGl0ZW0uY291bnRcbiAgICAgIH07XG4gICAgfSkpO1xuICAgIC8vIFRPRE86IFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpcy5nZXRUb3RhbFRpbWUoKSBkb2VzIG5vdCByZXR1cm4gdGhlIGNvcnJlY3RcbiAgICAvLyBudW1iZXIuXG4gIH0sXG5cbiAgcHJpbnRJbmNsdXNpdmU6IGZ1bmN0aW9uIChtZWFzdXJlbWVudHMpIHtcbiAgICBtZWFzdXJlbWVudHMgPSBtZWFzdXJlbWVudHMgfHwgUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzO1xuICAgIHZhciBzdW1tYXJ5ID0gUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzLmdldEluY2x1c2l2ZVN1bW1hcnkobWVhc3VyZW1lbnRzKTtcbiAgICBjb25zb2xlLnRhYmxlKHN1bW1hcnkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnT3duZXIgPiBjb21wb25lbnQnOiBpdGVtLmNvbXBvbmVudE5hbWUsXG4gICAgICAgICdJbmNsdXNpdmUgdGltZSAobXMpJzogcm91bmRGbG9hdChpdGVtLnRpbWUpLFxuICAgICAgICAnSW5zdGFuY2VzJzogaXRlbS5jb3VudFxuICAgICAgfTtcbiAgICB9KSk7XG4gICAgY29uc29sZS5sb2coJ1RvdGFsIHRpbWU6JywgUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzLmdldFRvdGFsVGltZShtZWFzdXJlbWVudHMpLnRvRml4ZWQoMikgKyAnIG1zJyk7XG4gIH0sXG5cbiAgZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcDogZnVuY3Rpb24gKG1lYXN1cmVtZW50cykge1xuICAgIHZhciBzdW1tYXJ5ID0gUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzLmdldEluY2x1c2l2ZVN1bW1hcnkobWVhc3VyZW1lbnRzLCB0cnVlKTtcbiAgICByZXR1cm4gc3VtbWFyeS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdPd25lciA+IGNvbXBvbmVudCc6IGl0ZW0uY29tcG9uZW50TmFtZSxcbiAgICAgICAgJ1dhc3RlZCB0aW1lIChtcyknOiBpdGVtLnRpbWUsXG4gICAgICAgICdJbnN0YW5jZXMnOiBpdGVtLmNvdW50XG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuXG4gIHByaW50V2FzdGVkOiBmdW5jdGlvbiAobWVhc3VyZW1lbnRzKSB7XG4gICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzIHx8IFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50cztcbiAgICBjb25zb2xlLnRhYmxlKFJlYWN0RGVmYXVsdFBlcmYuZ2V0TWVhc3VyZW1lbnRzU3VtbWFyeU1hcChtZWFzdXJlbWVudHMpKTtcbiAgICBjb25zb2xlLmxvZygnVG90YWwgdGltZTonLCBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMuZ2V0VG90YWxUaW1lKG1lYXN1cmVtZW50cykudG9GaXhlZCgyKSArICcgbXMnKTtcbiAgfSxcblxuICBwcmludERPTTogZnVuY3Rpb24gKG1lYXN1cmVtZW50cykge1xuICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cyB8fCBSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHM7XG4gICAgdmFyIHN1bW1hcnkgPSBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMuZ2V0RE9NU3VtbWFyeShtZWFzdXJlbWVudHMpO1xuICAgIGNvbnNvbGUudGFibGUoc3VtbWFyeS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIHJlc3VsdFtET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRV0gPSBpdGVtLmlkO1xuICAgICAgcmVzdWx0LnR5cGUgPSBpdGVtLnR5cGU7XG4gICAgICByZXN1bHQuYXJncyA9IEpTT04uc3RyaW5naWZ5KGl0ZW0uYXJncyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pKTtcbiAgICBjb25zb2xlLmxvZygnVG90YWwgdGltZTonLCBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMuZ2V0VG90YWxUaW1lKG1lYXN1cmVtZW50cykudG9GaXhlZCgyKSArICcgbXMnKTtcbiAgfSxcblxuICBfcmVjb3JkV3JpdGU6IGZ1bmN0aW9uIChpZCwgZm5OYW1lLCB0b3RhbFRpbWUsIGFyZ3MpIHtcbiAgICAvLyBUT0RPOiB0b3RhbFRpbWUgaXNuJ3QgdGhhdCB1c2VmdWwgc2luY2UgaXQgZG9lc24ndCBjb3VudCBwYWludHMvcmVmbG93c1xuICAgIHZhciB3cml0ZXMgPSBSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHNbUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzLmxlbmd0aCAtIDFdLndyaXRlcztcbiAgICB3cml0ZXNbaWRdID0gd3JpdGVzW2lkXSB8fCBbXTtcbiAgICB3cml0ZXNbaWRdLnB1c2goe1xuICAgICAgdHlwZTogZm5OYW1lLFxuICAgICAgdGltZTogdG90YWxUaW1lLFxuICAgICAgYXJnczogYXJnc1xuICAgIH0pO1xuICB9LFxuXG4gIG1lYXN1cmU6IGZ1bmN0aW9uIChtb2R1bGVOYW1lLCBmbk5hbWUsIGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRvdGFsVGltZTtcbiAgICAgIHZhciBydjtcbiAgICAgIHZhciBzdGFydDtcblxuICAgICAgaWYgKGZuTmFtZSA9PT0gJ19yZW5kZXJOZXdSb290Q29tcG9uZW50JyB8fCBmbk5hbWUgPT09ICdmbHVzaEJhdGNoZWRVcGRhdGVzJykge1xuICAgICAgICAvLyBBIFwibWVhc3VyZW1lbnRcIiBpcyBhIHNldCBvZiBtZXRyaWNzIHJlY29yZGVkIGZvciBlYWNoIGZsdXNoLiBXZSB3YW50XG4gICAgICAgIC8vIHRvIGdyb3VwIHRoZSBtZXRyaWNzIGZvciBhIGdpdmVuIGZsdXNoIHRvZ2V0aGVyIHNvIHdlIGNhbiBsb29rIGF0IHRoZVxuICAgICAgICAvLyBjb21wb25lbnRzIHRoYXQgcmVuZGVyZWQgYW5kIHRoZSBET00gb3BlcmF0aW9ucyB0aGF0IGFjdHVhbGx5XG4gICAgICAgIC8vIGhhcHBlbmVkIHRvIGRldGVybWluZSB0aGUgYW1vdW50IG9mIFwid2FzdGVkIHdvcmtcIiBwZXJmb3JtZWQuXG4gICAgICAgIFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50cy5wdXNoKHtcbiAgICAgICAgICBleGNsdXNpdmU6IHt9LFxuICAgICAgICAgIGluY2x1c2l2ZToge30sXG4gICAgICAgICAgcmVuZGVyOiB7fSxcbiAgICAgICAgICBjb3VudHM6IHt9LFxuICAgICAgICAgIHdyaXRlczoge30sXG4gICAgICAgICAgZGlzcGxheU5hbWVzOiB7fSxcbiAgICAgICAgICB0b3RhbFRpbWU6IDAsXG4gICAgICAgICAgY3JlYXRlZDoge31cbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXJ0ID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgcnYgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHNbUmVhY3REZWZhdWx0UGVyZi5fYWxsTWVhc3VyZW1lbnRzLmxlbmd0aCAtIDFdLnRvdGFsVGltZSA9IHBlcmZvcm1hbmNlTm93KCkgLSBzdGFydDtcbiAgICAgICAgcmV0dXJuIHJ2O1xuICAgICAgfSBlbHNlIGlmIChmbk5hbWUgPT09ICdfbW91bnRJbWFnZUludG9Ob2RlJyB8fCBtb2R1bGVOYW1lID09PSAnUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyB8fCBtb2R1bGVOYW1lID09PSAnUmVhY3RET01JRE9wZXJhdGlvbnMnIHx8IG1vZHVsZU5hbWUgPT09ICdDU1NQcm9wZXJ0eU9wZXJhdGlvbnMnIHx8IG1vZHVsZU5hbWUgPT09ICdET01DaGlsZHJlbk9wZXJhdGlvbnMnIHx8IG1vZHVsZU5hbWUgPT09ICdET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKSB7XG4gICAgICAgIHN0YXJ0ID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgcnYgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB0b3RhbFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpIC0gc3RhcnQ7XG5cbiAgICAgICAgaWYgKGZuTmFtZSA9PT0gJ19tb3VudEltYWdlSW50b05vZGUnKSB7XG4gICAgICAgICAgdmFyIG1vdW50SUQgPSBSZWFjdE1vdW50LmdldElEKGFyZ3NbMV0pO1xuICAgICAgICAgIFJlYWN0RGVmYXVsdFBlcmYuX3JlY29yZFdyaXRlKG1vdW50SUQsIGZuTmFtZSwgdG90YWxUaW1lLCBhcmdzWzBdKTtcbiAgICAgICAgfSBlbHNlIGlmIChmbk5hbWUgPT09ICdkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMnKSB7XG4gICAgICAgICAgLy8gc3BlY2lhbCBmb3JtYXRcbiAgICAgICAgICBhcmdzWzBdLmZvckVhY2goZnVuY3Rpb24gKHVwZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHdyaXRlQXJncyA9IHt9O1xuICAgICAgICAgICAgaWYgKHVwZGF0ZS5mcm9tSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgd3JpdGVBcmdzLmZyb21JbmRleCA9IHVwZGF0ZS5mcm9tSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodXBkYXRlLnRvSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgd3JpdGVBcmdzLnRvSW5kZXggPSB1cGRhdGUudG9JbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1cGRhdGUudGV4dENvbnRlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgd3JpdGVBcmdzLnRleHRDb250ZW50ID0gdXBkYXRlLnRleHRDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVwZGF0ZS5tYXJrdXBJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB3cml0ZUFyZ3MubWFya3VwID0gYXJnc1sxXVt1cGRhdGUubWFya3VwSW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUmVhY3REZWZhdWx0UGVyZi5fcmVjb3JkV3JpdGUodXBkYXRlLnBhcmVudElELCB1cGRhdGUudHlwZSwgdG90YWxUaW1lLCB3cml0ZUFyZ3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGJhc2ljIGZvcm1hdFxuICAgICAgICAgIHZhciBpZCA9IGFyZ3NbMF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlkID0gUmVhY3RNb3VudC5nZXRJRChhcmdzWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgUmVhY3REZWZhdWx0UGVyZi5fcmVjb3JkV3JpdGUoaWQsIGZuTmFtZSwgdG90YWxUaW1lLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJ2O1xuICAgICAgfSBlbHNlIGlmIChtb2R1bGVOYW1lID09PSAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnICYmIChmbk5hbWUgPT09ICdtb3VudENvbXBvbmVudCcgfHwgZm5OYW1lID09PSAndXBkYXRlQ29tcG9uZW50JyB8fCAvLyBUT0RPOiByZWNlaXZlQ29tcG9uZW50KCk/XG4gICAgICBmbk5hbWUgPT09ICdfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50JykpIHtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSA9PT0gUmVhY3RNb3VudC5Ub3BMZXZlbFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByb290Tm9kZUlEID0gZm5OYW1lID09PSAnbW91bnRDb21wb25lbnQnID8gYXJnc1swXSA6IHRoaXMuX3Jvb3ROb2RlSUQ7XG4gICAgICAgIHZhciBpc1JlbmRlciA9IGZuTmFtZSA9PT0gJ19yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQnO1xuICAgICAgICB2YXIgaXNNb3VudCA9IGZuTmFtZSA9PT0gJ21vdW50Q29tcG9uZW50JztcblxuICAgICAgICB2YXIgbW91bnRTdGFjayA9IFJlYWN0RGVmYXVsdFBlcmYuX21vdW50U3RhY2s7XG4gICAgICAgIHZhciBlbnRyeSA9IFJlYWN0RGVmYXVsdFBlcmYuX2FsbE1lYXN1cmVtZW50c1tSZWFjdERlZmF1bHRQZXJmLl9hbGxNZWFzdXJlbWVudHMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgaWYgKGlzUmVuZGVyKSB7XG4gICAgICAgICAgYWRkVmFsdWUoZW50cnkuY291bnRzLCByb290Tm9kZUlELCAxKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc01vdW50KSB7XG4gICAgICAgICAgZW50cnkuY3JlYXRlZFtyb290Tm9kZUlEXSA9IHRydWU7XG4gICAgICAgICAgbW91bnRTdGFjay5wdXNoKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICBydiA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIHRvdGFsVGltZSA9IHBlcmZvcm1hbmNlTm93KCkgLSBzdGFydDtcblxuICAgICAgICBpZiAoaXNSZW5kZXIpIHtcbiAgICAgICAgICBhZGRWYWx1ZShlbnRyeS5yZW5kZXIsIHJvb3ROb2RlSUQsIHRvdGFsVGltZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNNb3VudCkge1xuICAgICAgICAgIHZhciBzdWJNb3VudFRpbWUgPSBtb3VudFN0YWNrLnBvcCgpO1xuICAgICAgICAgIG1vdW50U3RhY2tbbW91bnRTdGFjay5sZW5ndGggLSAxXSArPSB0b3RhbFRpbWU7XG4gICAgICAgICAgYWRkVmFsdWUoZW50cnkuZXhjbHVzaXZlLCByb290Tm9kZUlELCB0b3RhbFRpbWUgLSBzdWJNb3VudFRpbWUpO1xuICAgICAgICAgIGFkZFZhbHVlKGVudHJ5LmluY2x1c2l2ZSwgcm9vdE5vZGVJRCwgdG90YWxUaW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRWYWx1ZShlbnRyeS5pbmNsdXNpdmUsIHJvb3ROb2RlSUQsIHRvdGFsVGltZSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbnRyeS5kaXNwbGF5TmFtZXNbcm9vdE5vZGVJRF0gPSB7XG4gICAgICAgICAgY3VycmVudDogdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgb3duZXI6IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgOiAnPHJvb3Q+J1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBydjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0UGVyZjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3REZWZhdWx0UGVyZkFuYWx5c2lzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG5cbi8vIERvbid0IHRyeSB0byBzYXZlIHVzZXJzIGxlc3MgdGhhbiAxLjJtcyAoYSBudW1iZXIgSSBtYWRlIHVwKVxudmFyIERPTlRfQ0FSRV9USFJFU0hPTEQgPSAxLjI7XG52YXIgRE9NX09QRVJBVElPTl9UWVBFUyA9IHtcbiAgJ19tb3VudEltYWdlSW50b05vZGUnOiAnc2V0IGlubmVySFRNTCcsXG4gIElOU0VSVF9NQVJLVVA6ICdzZXQgaW5uZXJIVE1MJyxcbiAgTU9WRV9FWElTVElORzogJ21vdmUnLFxuICBSRU1PVkVfTk9ERTogJ3JlbW92ZScsXG4gIFNFVF9NQVJLVVA6ICdzZXQgaW5uZXJIVE1MJyxcbiAgVEVYVF9DT05URU5UOiAnc2V0IHRleHRDb250ZW50JyxcbiAgJ3NldFZhbHVlRm9yUHJvcGVydHknOiAndXBkYXRlIGF0dHJpYnV0ZScsXG4gICdzZXRWYWx1ZUZvckF0dHJpYnV0ZSc6ICd1cGRhdGUgYXR0cmlidXRlJyxcbiAgJ2RlbGV0ZVZhbHVlRm9yUHJvcGVydHknOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG4gICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQnOiAncmVwbGFjZSdcbn07XG5cbmZ1bmN0aW9uIGdldFRvdGFsVGltZShtZWFzdXJlbWVudHMpIHtcbiAgLy8gVE9ETzogcmV0dXJuIG51bWJlciBvZiBET00gb3BzPyBjb3VsZCBiZSBtaXNsZWFkaW5nLlxuICAvLyBUT0RPOiBtZWFzdXJlIGRyb3BwZWQgZnJhbWVzIGFmdGVyIHJlY29uY2lsZT9cbiAgLy8gVE9ETzogbG9nIHRvdGFsIHRpbWUgb2YgZWFjaCByZWNvbmNpbGUgYW5kIHRoZSB0b3AtbGV2ZWwgY29tcG9uZW50XG4gIC8vIGNsYXNzIHRoYXQgdHJpZ2dlcmVkIGl0LlxuICB2YXIgdG90YWxUaW1lID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZWFzdXJlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbWVhc3VyZW1lbnQgPSBtZWFzdXJlbWVudHNbaV07XG4gICAgdG90YWxUaW1lICs9IG1lYXN1cmVtZW50LnRvdGFsVGltZTtcbiAgfVxuICByZXR1cm4gdG90YWxUaW1lO1xufVxuXG5mdW5jdGlvbiBnZXRET01TdW1tYXJ5KG1lYXN1cmVtZW50cykge1xuICB2YXIgaXRlbXMgPSBbXTtcbiAgbWVhc3VyZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG1lYXN1cmVtZW50KSB7XG4gICAgT2JqZWN0LmtleXMobWVhc3VyZW1lbnQud3JpdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgICAgbWVhc3VyZW1lbnQud3JpdGVzW2lkXS5mb3JFYWNoKGZ1bmN0aW9uICh3cml0ZSkge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgdHlwZTogRE9NX09QRVJBVElPTl9UWVBFU1t3cml0ZS50eXBlXSB8fCB3cml0ZS50eXBlLFxuICAgICAgICAgIGFyZ3M6IHdyaXRlLmFyZ3NcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBpdGVtcztcbn1cblxuZnVuY3Rpb24gZ2V0RXhjbHVzaXZlU3VtbWFyeShtZWFzdXJlbWVudHMpIHtcbiAgdmFyIGNhbmRpZGF0ZXMgPSB7fTtcbiAgdmFyIGRpc3BsYXlOYW1lO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWVhc3VyZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1lYXN1cmVtZW50ID0gbWVhc3VyZW1lbnRzW2ldO1xuICAgIHZhciBhbGxJRHMgPSBhc3NpZ24oe30sIG1lYXN1cmVtZW50LmV4Y2x1c2l2ZSwgbWVhc3VyZW1lbnQuaW5jbHVzaXZlKTtcblxuICAgIGZvciAodmFyIGlkIGluIGFsbElEcykge1xuICAgICAgZGlzcGxheU5hbWUgPSBtZWFzdXJlbWVudC5kaXNwbGF5TmFtZXNbaWRdLmN1cnJlbnQ7XG5cbiAgICAgIGNhbmRpZGF0ZXNbZGlzcGxheU5hbWVdID0gY2FuZGlkYXRlc1tkaXNwbGF5TmFtZV0gfHwge1xuICAgICAgICBjb21wb25lbnROYW1lOiBkaXNwbGF5TmFtZSxcbiAgICAgICAgaW5jbHVzaXZlOiAwLFxuICAgICAgICBleGNsdXNpdmU6IDAsXG4gICAgICAgIHJlbmRlcjogMCxcbiAgICAgICAgY291bnQ6IDBcbiAgICAgIH07XG4gICAgICBpZiAobWVhc3VyZW1lbnQucmVuZGVyW2lkXSkge1xuICAgICAgICBjYW5kaWRhdGVzW2Rpc3BsYXlOYW1lXS5yZW5kZXIgKz0gbWVhc3VyZW1lbnQucmVuZGVyW2lkXTtcbiAgICAgIH1cbiAgICAgIGlmIChtZWFzdXJlbWVudC5leGNsdXNpdmVbaWRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZXNbZGlzcGxheU5hbWVdLmV4Y2x1c2l2ZSArPSBtZWFzdXJlbWVudC5leGNsdXNpdmVbaWRdO1xuICAgICAgfVxuICAgICAgaWYgKG1lYXN1cmVtZW50LmluY2x1c2l2ZVtpZF0pIHtcbiAgICAgICAgY2FuZGlkYXRlc1tkaXNwbGF5TmFtZV0uaW5jbHVzaXZlICs9IG1lYXN1cmVtZW50LmluY2x1c2l2ZVtpZF07XG4gICAgICB9XG4gICAgICBpZiAobWVhc3VyZW1lbnQuY291bnRzW2lkXSkge1xuICAgICAgICBjYW5kaWRhdGVzW2Rpc3BsYXlOYW1lXS5jb3VudCArPSBtZWFzdXJlbWVudC5jb3VudHNbaWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE5vdyBtYWtlIGEgc29ydGVkIGFycmF5IHdpdGggdGhlIHJlc3VsdHMuXG4gIHZhciBhcnIgPSBbXTtcbiAgZm9yIChkaXNwbGF5TmFtZSBpbiBjYW5kaWRhdGVzKSB7XG4gICAgaWYgKGNhbmRpZGF0ZXNbZGlzcGxheU5hbWVdLmV4Y2x1c2l2ZSA+PSBET05UX0NBUkVfVEhSRVNIT0xEKSB7XG4gICAgICBhcnIucHVzaChjYW5kaWRhdGVzW2Rpc3BsYXlOYW1lXSk7XG4gICAgfVxuICB9XG5cbiAgYXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5leGNsdXNpdmUgLSBhLmV4Y2x1c2l2ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5jbHVzaXZlU3VtbWFyeShtZWFzdXJlbWVudHMsIG9ubHlDbGVhbikge1xuICB2YXIgY2FuZGlkYXRlcyA9IHt9O1xuICB2YXIgaW5jbHVzaXZlS2V5O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWVhc3VyZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1lYXN1cmVtZW50ID0gbWVhc3VyZW1lbnRzW2ldO1xuICAgIHZhciBhbGxJRHMgPSBhc3NpZ24oe30sIG1lYXN1cmVtZW50LmV4Y2x1c2l2ZSwgbWVhc3VyZW1lbnQuaW5jbHVzaXZlKTtcbiAgICB2YXIgY2xlYW5Db21wb25lbnRzO1xuXG4gICAgaWYgKG9ubHlDbGVhbikge1xuICAgICAgY2xlYW5Db21wb25lbnRzID0gZ2V0VW5jaGFuZ2VkQ29tcG9uZW50cyhtZWFzdXJlbWVudCk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaWQgaW4gYWxsSURzKSB7XG4gICAgICBpZiAob25seUNsZWFuICYmICFjbGVhbkNvbXBvbmVudHNbaWRdKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGlzcGxheU5hbWUgPSBtZWFzdXJlbWVudC5kaXNwbGF5TmFtZXNbaWRdO1xuXG4gICAgICAvLyBJbmNsdXNpdmUgdGltZSBpcyBub3QgdXNlZnVsIGZvciBtYW55IGNvbXBvbmVudHMgd2l0aG91dCBrbm93aW5nIHdoZXJlXG4gICAgICAvLyB0aGV5IGFyZSBpbnN0YW50aWF0ZWQuIFNvIHdlIGFnZ3JlZ2F0ZSBpbmNsdXNpdmUgdGltZSB3aXRoIGJvdGggdGhlXG4gICAgICAvLyBvd25lciBhbmQgY3VycmVudCBkaXNwbGF5TmFtZSBhcyB0aGUga2V5LlxuICAgICAgaW5jbHVzaXZlS2V5ID0gZGlzcGxheU5hbWUub3duZXIgKyAnID4gJyArIGRpc3BsYXlOYW1lLmN1cnJlbnQ7XG5cbiAgICAgIGNhbmRpZGF0ZXNbaW5jbHVzaXZlS2V5XSA9IGNhbmRpZGF0ZXNbaW5jbHVzaXZlS2V5XSB8fCB7XG4gICAgICAgIGNvbXBvbmVudE5hbWU6IGluY2x1c2l2ZUtleSxcbiAgICAgICAgdGltZTogMCxcbiAgICAgICAgY291bnQ6IDBcbiAgICAgIH07XG5cbiAgICAgIGlmIChtZWFzdXJlbWVudC5pbmNsdXNpdmVbaWRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZXNbaW5jbHVzaXZlS2V5XS50aW1lICs9IG1lYXN1cmVtZW50LmluY2x1c2l2ZVtpZF07XG4gICAgICB9XG4gICAgICBpZiAobWVhc3VyZW1lbnQuY291bnRzW2lkXSkge1xuICAgICAgICBjYW5kaWRhdGVzW2luY2x1c2l2ZUtleV0uY291bnQgKz0gbWVhc3VyZW1lbnQuY291bnRzW2lkXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBOb3cgbWFrZSBhIHNvcnRlZCBhcnJheSB3aXRoIHRoZSByZXN1bHRzLlxuICB2YXIgYXJyID0gW107XG4gIGZvciAoaW5jbHVzaXZlS2V5IGluIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoY2FuZGlkYXRlc1tpbmNsdXNpdmVLZXldLnRpbWUgPj0gRE9OVF9DQVJFX1RIUkVTSE9MRCkge1xuICAgICAgYXJyLnB1c2goY2FuZGlkYXRlc1tpbmNsdXNpdmVLZXldKTtcbiAgICB9XG4gIH1cblxuICBhcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBiLnRpbWUgLSBhLnRpbWU7XG4gIH0pO1xuXG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGdldFVuY2hhbmdlZENvbXBvbmVudHMobWVhc3VyZW1lbnQpIHtcbiAgLy8gRm9yIGEgZ2l2ZW4gcmVjb25jaWxlLCBsb29rIGF0IHdoaWNoIGNvbXBvbmVudHMgZGlkIG5vdCBhY3R1YWxseVxuICAvLyByZW5kZXIgYW55dGhpbmcgdG8gdGhlIERPTSBhbmQgcmV0dXJuIGEgbWFwcGluZyBvZiB0aGVpciBJRCB0b1xuICAvLyB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdG9vayB0byByZW5kZXIgdGhlIGVudGlyZSBzdWJ0cmVlLlxuICB2YXIgY2xlYW5Db21wb25lbnRzID0ge307XG4gIHZhciBkaXJ0eUxlYWZJRHMgPSBPYmplY3Qua2V5cyhtZWFzdXJlbWVudC53cml0ZXMpO1xuICB2YXIgYWxsSURzID0gYXNzaWduKHt9LCBtZWFzdXJlbWVudC5leGNsdXNpdmUsIG1lYXN1cmVtZW50LmluY2x1c2l2ZSk7XG5cbiAgZm9yICh2YXIgaWQgaW4gYWxsSURzKSB7XG4gICAgdmFyIGlzRGlydHkgPSBmYWxzZTtcbiAgICAvLyBGb3IgZWFjaCBjb21wb25lbnQgdGhhdCByZW5kZXJlZCwgc2VlIGlmIGEgY29tcG9uZW50IHRoYXQgdHJpZ2dlcmVkXG4gICAgLy8gYSBET00gb3AgaXMgaW4gaXRzIHN1YnRyZWUuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJ0eUxlYWZJRHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChkaXJ0eUxlYWZJRHNbaV0uaW5kZXhPZihpZCkgPT09IDApIHtcbiAgICAgICAgaXNEaXJ0eSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBjaGVjayBpZiBjb21wb25lbnQgbmV3bHkgY3JlYXRlZFxuICAgIGlmIChtZWFzdXJlbWVudC5jcmVhdGVkW2lkXSkge1xuICAgICAgaXNEaXJ0eSA9IHRydWU7XG4gICAgfVxuICAgIGlmICghaXNEaXJ0eSAmJiBtZWFzdXJlbWVudC5jb3VudHNbaWRdID4gMCkge1xuICAgICAgY2xlYW5Db21wb25lbnRzW2lkXSA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBjbGVhbkNvbXBvbmVudHM7XG59XG5cbnZhciBSZWFjdERlZmF1bHRQZXJmQW5hbHlzaXMgPSB7XG4gIGdldEV4Y2x1c2l2ZVN1bW1hcnk6IGdldEV4Y2x1c2l2ZVN1bW1hcnksXG4gIGdldEluY2x1c2l2ZVN1bW1hcnk6IGdldEluY2x1c2l2ZVN1bW1hcnksXG4gIGdldERPTVN1bW1hcnk6IGdldERPTVN1bW1hcnksXG4gIGdldFRvdGFsVGltZTogZ2V0VG90YWxUaW1lXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVmYXVsdFBlcmZBbmFseXNpczsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RWxlbWVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG5cbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudCB0eXBlLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAga2V5OiB0cnVlLFxuICByZWY6IHRydWUsXG4gIF9fc2VsZjogdHJ1ZSxcbiAgX19zb3VyY2U6IHRydWVcbn07XG5cbi8qKlxuICogQmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIFJlYWN0IGVsZW1lbnRzLiBUaGlzIGlzIG9ubHkgdXNlZCB0byBtYWtlIHRoaXNcbiAqIHdvcmsgd2l0aCBhIGR5bmFtaWMgaW5zdGFuY2VvZiBjaGVjay4gTm90aGluZyBzaG91bGQgbGl2ZSBvbiB0aGlzIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcblxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4gICAgICB9KTtcbiAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XG4gICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIgcHJvcHMgPSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgcmVmID0gY29uZmlnLnJlZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5yZWY7XG4gICAga2V5ID0gY29uZmlnLmtleSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6ICcnICsgY29uZmlnLmtleTtcbiAgICBzZWxmID0gY29uZmlnLl9fc2VsZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XG4gICAgc291cmNlID0gY29uZmlnLl9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc291cmNlO1xuICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRlZmF1bHRQcm9wcztcbiAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG59O1xuXG5SZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHZhciBmYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcbiAgLy8gRXhwb3NlIHRoZSB0eXBlIG9uIHRoZSBmYWN0b3J5IGFuZCB0aGUgcHJvdG90eXBlIHNvIHRoYXQgaXQgY2FuIGJlXG4gIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50cy4gRS5nLiBgPEZvbyAvPi50eXBlID09PSBGb29gLlxuICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVjdG9yYCBzaW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uXG4gIC8vIHRoYXQgY3JlYXRlZCB0aGUgZWxlbWVudCwgYW5kIGl0IG1heSBub3QgZXZlbiBiZSBhIGNvbnN0cnVjdG9yLlxuICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWRcbiAgZmFjdG9yeS50eXBlID0gdHlwZTtcbiAgcmV0dXJuIGZhY3Rvcnk7XG59O1xuXG5SZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5ID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0tleSkge1xuICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudChvbGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG9sZEVsZW1lbnQucHJvcHMpO1xuXG4gIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld1Byb3BzKSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgb2xkRWxlbWVudC5rZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBuZXdQcm9wcyk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBJZiB0aGUga2V5IG9uIHRoZSBvcmlnaW5hbCBpcyB2YWxpZCwgdGhlbiB0aGUgY2xvbmUgaXMgdmFsaWRcbiAgICBuZXdFbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSBvbGRFbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQ7XG4gIH1cblxuICByZXR1cm4gbmV3RWxlbWVudDtcbn07XG5cblJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuICB2YXIgcHJvcHMgPSBhc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpO1xuXG4gIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcbiAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXG4gIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjtcbiAgLy8gU291cmNlIGlzIHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFyZ2V0ZWQgYnkgYVxuICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlXG4gIC8vIHRydWUgb3duZXIuXG4gIHZhciBzb3VyY2UgPSBlbGVtZW50Ll9zb3VyY2U7XG5cbiAgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlblxuICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcblxuICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICBpZiAoY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTaWxlbnRseSBzdGVhbCB0aGUgcmVmIGZyb20gdGhlIHBhcmVudC5cbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgfVxuICAgIGlmIChjb25maWcua2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIGNvbXBvbmVudC5cbiAqIEBmaW5hbFxuICovXG5SZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVWc1pXMWxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFMExUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JGYkdWdFpXNTBYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTNWeWNtVnVkRTkzYm1WeUp5azdYRzVjYm5aaGNpQmhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDY3VMMDlpYW1WamRDNWhjM05wWjI0bktUdGNiblpoY2lCallXNUVaV1pwYm1WUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHZZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa25LVHRjYmx4dUx5OGdWR2hsSUZONWJXSnZiQ0IxYzJWa0lIUnZJSFJoWnlCMGFHVWdVbVZoWTNSRmJHVnRaVzUwSUhSNWNHVXVJRWxtSUhSb1pYSmxJR2x6SUc1dklHNWhkR2wyWlNCVGVXMWliMnhjYmk4dklHNXZjaUJ3YjJ4NVptbHNiQ3dnZEdobGJpQmhJSEJzWVdsdUlHNTFiV0psY2lCcGN5QjFjMlZrSUdadmNpQndaWEptYjNKdFlXNWpaUzVjYm5aaGNpQlNSVUZEVkY5RlRFVk5SVTVVWDFSWlVFVWdQU0IwZVhCbGIyWWdVM2x0WW05c0lEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlGTjViV0p2YkZzblptOXlKMTBnSmlZZ1UzbHRZbTlzV3lkbWIzSW5YU2duY21WaFkzUXVaV3hsYldWdWRDY3BJSHg4SURCNFpXRmpOenRjYmx4dWRtRnlJRkpGVTBWU1ZrVkVYMUJTVDFCVElEMGdlMXh1SUNCclpYazZJSFJ5ZFdVc1hHNGdJSEpsWmpvZ2RISjFaU3hjYmlBZ1gxOXpaV3htT2lCMGNuVmxMRnh1SUNCZlgzTnZkWEpqWlRvZ2RISjFaVnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkNZWE5sSUdOdmJuTjBjblZqZEc5eUlHWnZjaUJoYkd3Z1VtVmhZM1FnWld4bGJXVnVkSE11SUZSb2FYTWdhWE1nYjI1c2VTQjFjMlZrSUhSdklHMWhhMlVnZEdocGMxeHVJQ29nZDI5eWF5QjNhWFJvSUdFZ1pIbHVZVzFwWXlCcGJuTjBZVzVqWlc5bUlHTm9aV05yTGlCT2IzUm9hVzVuSUhOb2IzVnNaQ0JzYVhabElHOXVJSFJvYVhNZ2NISnZkRzkwZVhCbExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN0tuMGdkSGx3WlZ4dUlDb2dRSEJoY21GdElIc3FmU0JyWlhsY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZHOWlhbVZqZEgwZ2NtVm1YRzRnS2lCQWNHRnlZVzBnZXlwOUlITmxiR1lnUVNBcWRHVnRjRzl5WVhKNUtpQm9aV3h3WlhJZ2RHOGdaR1YwWldOMElIQnNZV05sY3lCM2FHVnlaU0JnZEdocGMyQWdhWE5jYmlBcUlHUnBabVpsY21WdWRDQm1jbTl0SUhSb1pTQmdiM2R1WlhKZ0lIZG9aVzRnVW1WaFkzUXVZM0psWVhSbFJXeGxiV1Z1ZENCcGN5QmpZV3hzWldRc0lITnZJSFJvWVhRZ2QyVmNiaUFxSUdOaGJpQjNZWEp1TGlCWFpTQjNZVzUwSUhSdklHZGxkQ0J5YVdRZ2IyWWdiM2R1WlhJZ1lXNWtJSEpsY0d4aFkyVWdjM1J5YVc1bklHQnlaV1pnY3lCM2FYUm9JR0Z5Y205M1hHNGdLaUJtZFc1amRHbHZibk1zSUdGdVpDQmhjeUJzYjI1bklHRnpJR0IwYUdsellDQmhibVFnYjNkdVpYSWdZWEpsSUhSb1pTQnpZVzFsTENCMGFHVnlaU0IzYVd4c0lHSmxJRzV2WEc0Z0tpQmphR0Z1WjJVZ2FXNGdZbVZvWVhacGIzSXVYRzRnS2lCQWNHRnlZVzBnZXlwOUlITnZkWEpqWlNCQmJpQmhibTV2ZEdGMGFXOXVJRzlpYW1WamRDQW9ZV1JrWldRZ1lua2dZU0IwY21GdWMzQnBiR1Z5SUc5eUlHOTBhR1Z5ZDJselpTbGNiaUFxSUdsdVpHbGpZWFJwYm1jZ1ptbHNaVzVoYldVc0lHeHBibVVnYm5WdFltVnlMQ0JoYm1RdmIzSWdiM1JvWlhJZ2FXNW1iM0p0WVhScGIyNHVYRzRnS2lCQWNHRnlZVzBnZXlwOUlHOTNibVZ5WEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSEJ5YjNCelhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJR1oxYm1OMGFXOXVJQ2gwZVhCbExDQnJaWGtzSUhKbFppd2djMlZzWml3Z2MyOTFjbU5sTENCdmQyNWxjaXdnY0hKdmNITXBJSHRjYmlBZ2RtRnlJR1ZzWlcxbGJuUWdQU0I3WEc0Z0lDQWdMeThnVkdocGN5QjBZV2NnWVd4c2IzY2dkWE1nZEc4Z2RXNXBjWFZsYkhrZ2FXUmxiblJwWm5rZ2RHaHBjeUJoY3lCaElGSmxZV04wSUVWc1pXMWxiblJjYmlBZ0lDQWtKSFI1Y0dWdlpqb2dVa1ZCUTFSZlJVeEZUVVZPVkY5VVdWQkZMRnh1WEc0Z0lDQWdMeThnUW5WcGJIUXRhVzRnY0hKdmNHVnlkR2xsY3lCMGFHRjBJR0psYkc5dVp5QnZiaUIwYUdVZ1pXeGxiV1Z1ZEZ4dUlDQWdJSFI1Y0dVNklIUjVjR1VzWEc0Z0lDQWdhMlY1T2lCclpYa3NYRzRnSUNBZ2NtVm1PaUJ5WldZc1hHNGdJQ0FnY0hKdmNITTZJSEJ5YjNCekxGeHVYRzRnSUNBZ0x5OGdVbVZqYjNKa0lIUm9aU0JqYjIxd2IyNWxiblFnY21WemNHOXVjMmxpYkdVZ1ptOXlJR055WldGMGFXNW5JSFJvYVhNZ1pXeGxiV1Z1ZEM1Y2JpQWdJQ0JmYjNkdVpYSTZJRzkzYm1WeVhHNGdJSDA3WEc1Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBdkx5QlVhR1VnZG1Gc2FXUmhkR2x2YmlCbWJHRm5JR2x6SUdOMWNuSmxiblJzZVNCdGRYUmhkR2wyWlM0Z1YyVWdjSFYwSUdsMElHOXVYRzRnSUNBZ0x5OGdZVzRnWlhoMFpYSnVZV3dnWW1GamEybHVaeUJ6ZEc5eVpTQnpieUIwYUdGMElIZGxJR05oYmlCbWNtVmxlbVVnZEdobElIZG9iMnhsSUc5aWFtVmpkQzVjYmlBZ0lDQXZMeUJVYUdseklHTmhiaUJpWlNCeVpYQnNZV05sWkNCM2FYUm9JR0VnVjJWaGEwMWhjQ0J2Ym1ObElIUm9aWGtnWVhKbElHbHRjR3hsYldWdWRHVmtJR2x1WEc0Z0lDQWdMeThnWTI5dGJXOXViSGtnZFhObFpDQmtaWFpsYkc5d2JXVnVkQ0JsYm5acGNtOXViV1Z1ZEhNdVhHNGdJQ0FnWld4bGJXVnVkQzVmYzNSdmNtVWdQU0I3ZlR0Y2JseHVJQ0FnSUM4dklGUnZJRzFoYTJVZ1kyOXRjR0Z5YVc1bklGSmxZV04wUld4bGJXVnVkSE1nWldGemFXVnlJR1p2Y2lCMFpYTjBhVzVuSUhCMWNuQnZjMlZ6TENCM1pTQnRZV3RsWEc0Z0lDQWdMeThnZEdobElIWmhiR2xrWVhScGIyNGdabXhoWnlCdWIyNHRaVzUxYldWeVlXSnNaU0FvZDJobGNtVWdjRzl6YzJsaWJHVXNJSGRvYVdOb0lITm9iM1ZzWkZ4dUlDQWdJQzh2SUdsdVkyeDFaR1VnWlhabGNua2daVzUyYVhKdmJtMWxiblFnZDJVZ2NuVnVJSFJsYzNSeklHbHVLU3dnYzI4Z2RHaGxJSFJsYzNRZ1puSmhiV1YzYjNKclhHNGdJQ0FnTHk4Z2FXZHViM0psY3lCcGRDNWNiaUFnSUNCcFppQW9ZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa3BJSHRjYmlBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNobGJHVnRaVzUwTGw5emRHOXlaU3dnSjNaaGJHbGtZWFJsWkNjc0lIdGNiaUFnSUNBZ0lDQWdZMjl1Wm1sbmRYSmhZbXhsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnWlc1MWJXVnlZV0pzWlRvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUhkeWFYUmhZbXhsT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0IyWVd4MVpUb2dabUZzYzJWY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0x5OGdjMlZzWmlCaGJtUWdjMjkxY21ObElHRnlaU0JFUlZZZ2IyNXNlU0J3Y205d1pYSjBhV1Z6TGx4dUlDQWdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHVnNaVzFsYm5Rc0lDZGZjMlZzWmljc0lIdGNiaUFnSUNBZ0lDQWdZMjl1Wm1sbmRYSmhZbXhsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnWlc1MWJXVnlZV0pzWlRvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUhkeWFYUmhZbXhsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnZG1Gc2RXVTZJSE5sYkdaY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0x5OGdWSGR2SUdWc1pXMWxiblJ6SUdOeVpXRjBaV1FnYVc0Z2RIZHZJR1JwWm1abGNtVnVkQ0J3YkdGalpYTWdjMmh2ZFd4a0lHSmxJR052Ym5OcFpHVnlaV1JjYmlBZ0lDQWdJQzh2SUdWeGRXRnNJR1p2Y2lCMFpYTjBhVzVuSUhCMWNuQnZjMlZ6SUdGdVpDQjBhR1Z5WldadmNtVWdkMlVnYUdsa1pTQnBkQ0JtY205dElHVnVkVzFsY21GMGFXOXVMbHh1SUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0dWc1pXMWxiblFzSUNkZmMyOTFjbU5sSnl3Z2UxeHVJQ0FnSUNBZ0lDQmpiMjVtYVdkMWNtRmliR1U2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0JsYm5WdFpYSmhZbXhsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnZDNKcGRHRmliR1U2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0IyWVd4MVpUb2djMjkxY21ObFhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWld4bGJXVnVkQzVmYzNSdmNtVXVkbUZzYVdSaGRHVmtJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQmxiR1Z0Wlc1MExsOXpaV3htSUQwZ2MyVnNaanRjYmlBZ0lDQWdJR1ZzWlcxbGJuUXVYM052ZFhKalpTQTlJSE52ZFhKalpUdGNiaUFnSUNCOVhHNGdJQ0FnVDJKcVpXTjBMbVp5WldWNlpTaGxiR1Z0Wlc1MExuQnliM0J6S1R0Y2JpQWdJQ0JQWW1wbFkzUXVabkpsWlhwbEtHVnNaVzFsYm5RcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlHVnNaVzFsYm5RN1hHNTlPMXh1WEc1U1pXRmpkRVZzWlcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENBOUlHWjFibU4wYVc5dUlDaDBlWEJsTENCamIyNW1hV2NzSUdOb2FXeGtjbVZ1S1NCN1hHNGdJSFpoY2lCd2NtOXdUbUZ0WlR0Y2JseHVJQ0F2THlCU1pYTmxjblpsWkNCdVlXMWxjeUJoY21VZ1pYaDBjbUZqZEdWa1hHNGdJSFpoY2lCd2NtOXdjeUE5SUh0OU8xeHVYRzRnSUhaaGNpQnJaWGtnUFNCdWRXeHNPMXh1SUNCMllYSWdjbVZtSUQwZ2JuVnNiRHRjYmlBZ2RtRnlJSE5sYkdZZ1BTQnVkV3hzTzF4dUlDQjJZWElnYzI5MWNtTmxJRDBnYm5Wc2JEdGNibHh1SUNCcFppQW9ZMjl1Wm1sbklDRTlJRzUxYkd3cElIdGNiaUFnSUNCeVpXWWdQU0JqYjI1bWFXY3VjbVZtSUQwOVBTQjFibVJsWm1sdVpXUWdQeUJ1ZFd4c0lEb2dZMjl1Wm1sbkxuSmxaanRjYmlBZ0lDQnJaWGtnUFNCamIyNW1hV2N1YTJWNUlEMDlQU0IxYm1SbFptbHVaV1FnUHlCdWRXeHNJRG9nSnljZ0t5QmpiMjVtYVdjdWEyVjVPMXh1SUNBZ0lITmxiR1lnUFNCamIyNW1hV2N1WDE5elpXeG1JRDA5UFNCMWJtUmxabWx1WldRZ1B5QnVkV3hzSURvZ1kyOXVabWxuTGw5ZmMyVnNaanRjYmlBZ0lDQnpiM1Z5WTJVZ1BTQmpiMjVtYVdjdVgxOXpiM1Z5WTJVZ1BUMDlJSFZ1WkdWbWFXNWxaQ0EvSUc1MWJHd2dPaUJqYjI1bWFXY3VYMTl6YjNWeVkyVTdYRzRnSUNBZ0x5OGdVbVZ0WVdsdWFXNW5JSEJ5YjNCbGNuUnBaWE1nWVhKbElHRmtaR1ZrSUhSdklHRWdibVYzSUhCeWIzQnpJRzlpYW1WamRGeHVJQ0FnSUdadmNpQW9jSEp2Y0U1aGJXVWdhVzRnWTI5dVptbG5LU0I3WEc0Z0lDQWdJQ0JwWmlBb1kyOXVabWxuTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU0FtSmlBaFVrVlRSVkpXUlVSZlVGSlBVRk11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhCeWIzQnpXM0J5YjNCT1lXMWxYU0E5SUdOdmJtWnBaMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHk4Z1EyaHBiR1J5Wlc0Z1kyRnVJR0psSUcxdmNtVWdkR2hoYmlCdmJtVWdZWEpuZFcxbGJuUXNJR0Z1WkNCMGFHOXpaU0JoY21VZ2RISmhibk5tWlhKeVpXUWdiMjUwYjF4dUlDQXZMeUIwYUdVZ2JtVjNiSGtnWVd4c2IyTmhkR1ZrSUhCeWIzQnpJRzlpYW1WamRDNWNiaUFnZG1GeUlHTm9hV3hrY21WdVRHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUNBdElESTdYRzRnSUdsbUlDaGphR2xzWkhKbGJreGxibWQwYUNBOVBUMGdNU2tnZTF4dUlDQWdJSEJ5YjNCekxtTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNDdYRzRnSUgwZ1pXeHpaU0JwWmlBb1kyaHBiR1J5Wlc1TVpXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ2RtRnlJR05vYVd4a1FYSnlZWGtnUFNCQmNuSmhlU2hqYUdsc1pISmxia3hsYm1kMGFDazdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQmphR2xzWkhKbGJreGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYUdsc1pFRnljbUY1VzJsZElEMGdZWEpuZFcxbGJuUnpXMmtnS3lBeVhUdGNiaUFnSUNCOVhHNGdJQ0FnY0hKdmNITXVZMmhwYkdSeVpXNGdQU0JqYUdsc1pFRnljbUY1TzF4dUlDQjlYRzVjYmlBZ0x5OGdVbVZ6YjJ4MlpTQmtaV1poZFd4MElIQnliM0J6WEc0Z0lHbG1JQ2gwZVhCbElDWW1JSFI1Y0dVdVpHVm1ZWFZzZEZCeWIzQnpLU0I3WEc0Z0lDQWdkbUZ5SUdSbFptRjFiSFJRY205d2N5QTlJSFI1Y0dVdVpHVm1ZWFZzZEZCeWIzQnpPMXh1SUNBZ0lHWnZjaUFvY0hKdmNFNWhiV1VnYVc0Z1pHVm1ZWFZzZEZCeWIzQnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhCeWIzQnpXM0J5YjNCT1lXMWxYU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJQ0FnY0hKdmNITmJjSEp2Y0U1aGJXVmRJRDBnWkdWbVlYVnNkRkJ5YjNCelczQnliM0JPWVcxbFhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z1VtVmhZM1JGYkdWdFpXNTBLSFI1Y0dVc0lHdGxlU3dnY21WbUxDQnpaV3htTENCemIzVnlZMlVzSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFzSUhCeWIzQnpLVHRjYm4wN1hHNWNibEpsWVdOMFJXeGxiV1Z1ZEM1amNtVmhkR1ZHWVdOMGIzSjVJRDBnWm5WdVkzUnBiMjRnS0hSNWNHVXBJSHRjYmlBZ2RtRnlJR1poWTNSdmNua2dQU0JTWldGamRFVnNaVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQzVpYVc1a0tHNTFiR3dzSUhSNWNHVXBPMXh1SUNBdkx5QkZlSEJ2YzJVZ2RHaGxJSFI1Y0dVZ2IyNGdkR2hsSUdaaFkzUnZjbmtnWVc1a0lIUm9aU0J3Y205MGIzUjVjR1VnYzI4Z2RHaGhkQ0JwZENCallXNGdZbVZjYmlBZ0x5OGdaV0Z6YVd4NUlHRmpZMlZ6YzJWa0lHOXVJR1ZzWlcxbGJuUnpMaUJGTG1jdUlHQThSbTl2SUM4K0xuUjVjR1VnUFQwOUlFWnZiMkF1WEc0Z0lDOHZJRlJvYVhNZ2MyaHZkV3hrSUc1dmRDQmlaU0J1WVcxbFpDQmdZMjl1YzNSeWRXTjBiM0pnSUhOcGJtTmxJSFJvYVhNZ2JXRjVJRzV2ZENCaVpTQjBhR1VnWm5WdVkzUnBiMjVjYmlBZ0x5OGdkR2hoZENCamNtVmhkR1ZrSUhSb1pTQmxiR1Z0Wlc1MExDQmhibVFnYVhRZ2JXRjVJRzV2ZENCbGRtVnVJR0psSUdFZ1kyOXVjM1J5ZFdOMGIzSXVYRzRnSUM4dklFeGxaMkZqZVNCb2IyOXJJRlJQUkU4NklGZGhjbTRnYVdZZ2RHaHBjeUJwY3lCaFkyTmxjM05sWkZ4dUlDQm1ZV04wYjNKNUxuUjVjR1VnUFNCMGVYQmxPMXh1SUNCeVpYUjFjbTRnWm1GamRHOXllVHRjYm4wN1hHNWNibEpsWVdOMFJXeGxiV1Z1ZEM1amJHOXVaVUZ1WkZKbGNHeGhZMlZMWlhrZ1BTQm1kVzVqZEdsdmJpQW9iMnhrUld4bGJXVnVkQ3dnYm1WM1MyVjVLU0I3WEc0Z0lIWmhjaUJ1WlhkRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBLRzlzWkVWc1pXMWxiblF1ZEhsd1pTd2dibVYzUzJWNUxDQnZiR1JGYkdWdFpXNTBMbkpsWml3Z2IyeGtSV3hsYldWdWRDNWZjMlZzWml3Z2IyeGtSV3hsYldWdWRDNWZjMjkxY21ObExDQnZiR1JGYkdWdFpXNTBMbDl2ZDI1bGNpd2diMnhrUld4bGJXVnVkQzV3Y205d2N5azdYRzVjYmlBZ2NtVjBkWEp1SUc1bGQwVnNaVzFsYm5RN1hHNTlPMXh1WEc1U1pXRmpkRVZzWlcxbGJuUXVZMnh2Ym1WQmJtUlNaWEJzWVdObFVISnZjSE1nUFNCbWRXNWpkR2x2YmlBb2IyeGtSV3hsYldWdWRDd2dibVYzVUhKdmNITXBJSHRjYmlBZ2RtRnlJRzVsZDBWc1pXMWxiblFnUFNCU1pXRmpkRVZzWlcxbGJuUW9iMnhrUld4bGJXVnVkQzUwZVhCbExDQnZiR1JGYkdWdFpXNTBMbXRsZVN3Z2IyeGtSV3hsYldWdWRDNXlaV1lzSUc5c1pFVnNaVzFsYm5RdVgzTmxiR1lzSUc5c1pFVnNaVzFsYm5RdVgzTnZkWEpqWlN3Z2IyeGtSV3hsYldWdWRDNWZiM2R1WlhJc0lHNWxkMUJ5YjNCektUdGNibHh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQzh2SUVsbUlIUm9aU0JyWlhrZ2IyNGdkR2hsSUc5eWFXZHBibUZzSUdseklIWmhiR2xrTENCMGFHVnVJSFJvWlNCamJHOXVaU0JwY3lCMllXeHBaRnh1SUNBZ0lHNWxkMFZzWlcxbGJuUXVYM04wYjNKbExuWmhiR2xrWVhSbFpDQTlJRzlzWkVWc1pXMWxiblF1WDNOMGIzSmxMblpoYkdsa1lYUmxaRHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ1WlhkRmJHVnRaVzUwTzF4dWZUdGNibHh1VW1WaFkzUkZiR1Z0Wlc1MExtTnNiMjVsUld4bGJXVnVkQ0E5SUdaMWJtTjBhVzl1SUNobGJHVnRaVzUwTENCamIyNW1hV2NzSUdOb2FXeGtjbVZ1S1NCN1hHNGdJSFpoY2lCd2NtOXdUbUZ0WlR0Y2JseHVJQ0F2THlCUGNtbG5hVzVoYkNCd2NtOXdjeUJoY21VZ1kyOXdhV1ZrWEc0Z0lIWmhjaUJ3Y205d2N5QTlJR0Z6YzJsbmJpaDdmU3dnWld4bGJXVnVkQzV3Y205d2N5azdYRzVjYmlBZ0x5OGdVbVZ6WlhKMlpXUWdibUZ0WlhNZ1lYSmxJR1Y0ZEhKaFkzUmxaRnh1SUNCMllYSWdhMlY1SUQwZ1pXeGxiV1Z1ZEM1clpYazdYRzRnSUhaaGNpQnlaV1lnUFNCbGJHVnRaVzUwTG5KbFpqdGNiaUFnTHk4Z1UyVnNaaUJwY3lCd2NtVnpaWEoyWldRZ2MybHVZMlVnZEdobElHOTNibVZ5SUdseklIQnlaWE5sY25abFpDNWNiaUFnZG1GeUlITmxiR1lnUFNCbGJHVnRaVzUwTGw5elpXeG1PMXh1SUNBdkx5QlRiM1Z5WTJVZ2FYTWdjSEpsYzJWeWRtVmtJSE5wYm1ObElHTnNiMjVsUld4bGJXVnVkQ0JwY3lCMWJteHBhMlZzZVNCMGJ5QmlaU0IwWVhKblpYUmxaQ0JpZVNCaFhHNGdJQzh2SUhSeVlXNXpjR2xzWlhJc0lHRnVaQ0IwYUdVZ2IzSnBaMmx1WVd3Z2MyOTFjbU5sSUdseklIQnliMkpoWW14NUlHRWdZbVYwZEdWeUlHbHVaR2xqWVhSdmNpQnZaaUIwYUdWY2JpQWdMeThnZEhKMVpTQnZkMjVsY2k1Y2JpQWdkbUZ5SUhOdmRYSmpaU0E5SUdWc1pXMWxiblF1WDNOdmRYSmpaVHRjYmx4dUlDQXZMeUJQZDI1bGNpQjNhV3hzSUdKbElIQnlaWE5sY25abFpDd2dkVzVzWlhOeklISmxaaUJwY3lCdmRtVnljbWxrWkdWdVhHNGdJSFpoY2lCdmQyNWxjaUE5SUdWc1pXMWxiblF1WDI5M2JtVnlPMXh1WEc0Z0lHbG1JQ2hqYjI1bWFXY2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lHbG1JQ2hqYjI1bWFXY3VjbVZtSUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQzh2SUZOcGJHVnVkR3g1SUhOMFpXRnNJSFJvWlNCeVpXWWdabkp2YlNCMGFHVWdjR0Z5Wlc1MExseHVJQ0FnSUNBZ2NtVm1JRDBnWTI5dVptbG5MbkpsWmp0Y2JpQWdJQ0FnSUc5M2JtVnlJRDBnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkRHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLR052Ym1acFp5NXJaWGtnSVQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdhMlY1SUQwZ0p5Y2dLeUJqYjI1bWFXY3VhMlY1TzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJTWlcxaGFXNXBibWNnY0hKdmNHVnlkR2xsY3lCdmRtVnljbWxrWlNCbGVHbHpkR2x1WnlCd2NtOXdjMXh1SUNBZ0lHWnZjaUFvY0hKdmNFNWhiV1VnYVc0Z1kyOXVabWxuS1NCN1hHNGdJQ0FnSUNCcFppQW9ZMjl1Wm1sbkxtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NBbUppQWhVa1ZUUlZKV1JVUmZVRkpQVUZNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lIQnliM0J6VzNCeWIzQk9ZVzFsWFNBOUlHTnZibVpwWjF0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5OGdRMmhwYkdSeVpXNGdZMkZ1SUdKbElHMXZjbVVnZEdoaGJpQnZibVVnWVhKbmRXMWxiblFzSUdGdVpDQjBhRzl6WlNCaGNtVWdkSEpoYm5ObVpYSnlaV1FnYjI1MGIxeHVJQ0F2THlCMGFHVWdibVYzYkhrZ1lXeHNiMk5oZEdWa0lIQnliM0J6SUc5aWFtVmpkQzVjYmlBZ2RtRnlJR05vYVd4a2NtVnVUR1Z1WjNSb0lEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQXRJREk3WEc0Z0lHbG1JQ2hqYUdsc1pISmxia3hsYm1kMGFDQTlQVDBnTVNrZ2UxeHVJQ0FnSUhCeWIzQnpMbU5vYVd4a2NtVnVJRDBnWTJocGJHUnlaVzQ3WEc0Z0lIMGdaV3h6WlNCcFppQW9ZMmhwYkdSeVpXNU1aVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdkbUZ5SUdOb2FXeGtRWEp5WVhrZ1BTQkJjbkpoZVNoamFHbHNaSEpsYmt4bGJtZDBhQ2s3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JqYUdsc1pISmxia3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamFHbHNaRUZ5Y21GNVcybGRJRDBnWVhKbmRXMWxiblJ6VzJrZ0t5QXlYVHRjYmlBZ0lDQjlYRzRnSUNBZ2NISnZjSE11WTJocGJHUnlaVzRnUFNCamFHbHNaRUZ5Y21GNU8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlGSmxZV04wUld4bGJXVnVkQ2hsYkdWdFpXNTBMblI1Y0dVc0lHdGxlU3dnY21WbUxDQnpaV3htTENCemIzVnlZMlVzSUc5M2JtVnlMQ0J3Y205d2N5azdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2IySnFaV04wWEc0Z0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlHQnZZbXBsWTNSZ0lHbHpJR0VnZG1Gc2FXUWdZMjl0Y0c5dVpXNTBMbHh1SUNvZ1FHWnBibUZzWEc0Z0tpOWNibEpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ0E5SUdaMWJtTjBhVzl1SUNodlltcGxZM1FwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCdlltcGxZM1FnUFQwOUlDZHZZbXBsWTNRbklDWW1JRzlpYW1WamRDQWhQVDBnYm5Wc2JDQW1KaUJ2WW1wbFkzUXVKQ1IwZVhCbGIyWWdQVDA5SUZKRlFVTlVYMFZNUlUxRlRsUmZWRmxRUlR0Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkZiR1Z0Wlc1ME95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEVsZW1lbnRWYWxpZGF0b3JcbiAqL1xuXG4vKipcbiAqIFJlYWN0RWxlbWVudFZhbGlkYXRvciBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIGEgZWxlbWVudCBmYWN0b3J5XG4gKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3BzIHBhc3NlZCB0byB0aGUgZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZVxuICogdXNlZCBvbmx5IGluIERFViBhbmQgY291bGQgYmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMgdHlwZSBjaGVja2VyIGZvciBsYW5ndWFnZXNcbiAqIHRoYXQgc3VwcG9ydCBpdC5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMnKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSB7XG4gIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xudmFyIG93bmVySGFzS2V5VXNlV2FybmluZyA9IHt9O1xuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG5cbi8qKlxuICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0LlxuICogVGhpcyBlbGVtZW50IGlzIGluIGFuIGFycmF5LiBUaGUgYXJyYXkgY291bGQgZ3JvdyBhbmQgc2hyaW5rIG9yIGJlXG4gKiByZW9yZGVyZWQuIEFsbCBjaGlsZHJlbiB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcmUgcmVxdWlyZWQgdG9cbiAqIGhhdmUgYSBcImtleVwiIHByb3BlcnR5IGFzc2lnbmVkIHRvIGl0LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1lbnQsIHBhcmVudFR5cGUpIHtcbiAgaWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuXG4gIHZhciBhZGRlbmRhID0gZ2V0QWRkZW5kYUZvcktleVVzZSgndW5pcXVlS2V5JywgZWxlbWVudCwgcGFyZW50VHlwZSk7XG4gIGlmIChhZGRlbmRhID09PSBudWxsKSB7XG4gICAgLy8gd2UgYWxyZWFkeSBzaG93ZWQgdGhlIHdhcm5pbmdcbiAgICByZXR1cm47XG4gIH1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdFYWNoIGNoaWxkIGluIGFuIGFycmF5IG9yIGl0ZXJhdG9yIHNob3VsZCBoYXZlIGEgdW5pcXVlIFwia2V5XCIgcHJvcC4nICsgJyVzJXMlcycsIGFkZGVuZGEucGFyZW50T3JPd25lciB8fCAnJywgYWRkZW5kYS5jaGlsZE93bmVyIHx8ICcnLCBhZGRlbmRhLnVybCB8fCAnJykgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogU2hhcmVkIHdhcm5pbmcgYW5kIG1vbml0b3JpbmcgY29kZSBmb3IgdGhlIGtleSB3YXJuaW5ncy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlVHlwZSBBIGtleSB1c2VkIGZvciBkZS1kdXBpbmcgd2FybmluZ3MuXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBDb21wb25lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqIEByZXR1cm5zIHs/b2JqZWN0fSBBIHNldCBvZiBhZGRlbmRhIHRvIHVzZSBpbiB0aGUgd2FybmluZyBtZXNzYWdlLCBvciBudWxsXG4gKiBpZiB0aGUgd2FybmluZyBoYXMgYWxyZWFkeSBiZWVuIHNob3duIGJlZm9yZSAoYW5kIHNob3VsZG4ndCBiZSBzaG93biBhZ2FpbikuXG4gKi9cbmZ1bmN0aW9uIGdldEFkZGVuZGFGb3JLZXlVc2UobWVzc2FnZVR5cGUsIGVsZW1lbnQsIHBhcmVudFR5cGUpIHtcbiAgdmFyIGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG4gIGlmICghYWRkZW5kdW0pIHtcbiAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVvZiBwYXJlbnRUeXBlID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3BsYXlOYW1lIHx8IHBhcmVudFR5cGUubmFtZTtcbiAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgYWRkZW5kdW0gPSAnIENoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPCcgKyBwYXJlbnROYW1lICsgJz4uJztcbiAgICB9XG4gIH1cblxuICB2YXIgbWVtb2l6ZXIgPSBvd25lckhhc0tleVVzZVdhcm5pbmdbbWVzc2FnZVR5cGVdIHx8IChvd25lckhhc0tleVVzZVdhcm5pbmdbbWVzc2FnZVR5cGVdID0ge30pO1xuICBpZiAobWVtb2l6ZXJbYWRkZW5kdW1dKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgbWVtb2l6ZXJbYWRkZW5kdW1dID0gdHJ1ZTtcblxuICB2YXIgYWRkZW5kYSA9IHtcbiAgICBwYXJlbnRPck93bmVyOiBhZGRlbmR1bSxcbiAgICB1cmw6ICcgU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsXG4gICAgY2hpbGRPd25lcjogbnVsbFxuICB9O1xuXG4gIC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXG4gIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRoYXQncyByZXNwb25zaWJsZSBmb3JcbiAgLy8gYXNzaWduaW5nIGl0IGEga2V5LlxuICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgIC8vIEdpdmUgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLlxuICAgIGFkZGVuZGEuY2hpbGRPd25lciA9ICcgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gJyArIGVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJztcbiAgfVxuXG4gIHJldHVybiBhZGRlbmRhO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW5cbiAqIGFycmF5IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbFxuICogd2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkge1xuICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFsaWQgbG9jYXRpb24uXG4gICAgaWYgKG5vZGUuX3N0b3JlKSB7XG4gICAgICBub2RlLl9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpO1xuICAgIC8vIEVudHJ5IGl0ZXJhdG9ycyBwcm92aWRlIGltcGxpY2l0IGtleXMuXG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICB2YXIgc3RlcDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgdGhlIHByb3BzIGFyZSB2YWxpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcFR5cGVzIE1hcCBvZiBwcm9wIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKGNvbXBvbmVudE5hbWUsIHByb3BUeXBlcywgcHJvcHMsIGxvY2F0aW9uKSB7XG4gIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICB2YXIgZXJyb3I7XG4gICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgISh0eXBlb2YgcHJvcFR5cGVzW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgZXJyb3IgPSBwcm9wVHlwZXNbcHJvcE5hbWVdKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24pO1xuICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHByb3BOYW1lLCB0eXBlb2YgZXJyb3IpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgdmFyIGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIHByb3BUeXBlOiAlcyVzJywgZXJyb3IubWVzc2FnZSwgYWRkZW5kdW0pIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEdpdmVuIGFuIGVsZW1lbnQsIHZhbGlkYXRlIHRoYXQgaXRzIHByb3BzIGZvbGxvdyB0aGUgcHJvcFR5cGVzIGRlZmluaXRpb24sXG4gKiBwcm92aWRlZCBieSB0aGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHZhciBjb21wb25lbnRDbGFzcyA9IGVsZW1lbnQudHlwZTtcbiAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmFtZSA9IGNvbXBvbmVudENsYXNzLmRpc3BsYXlOYW1lIHx8IGNvbXBvbmVudENsYXNzLm5hbWU7XG4gIGlmIChjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMpIHtcbiAgICBjaGVja1Byb3BUeXBlcyhuYW1lLCBjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJykgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxudmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHtcblxuICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbiAodHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIHZhbGlkVHlwZSA9IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0b1xuICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodmFsaWRUeXBlLCAnUmVhY3QuY3JlYXRlRWxlbWVudDogdHlwZSBzaG91bGQgbm90IGJlIG51bGwsIHVuZGVmaW5lZCwgYm9vbGVhbiwgb3IgJyArICdudW1iZXIuIEl0IHNob3VsZCBiZSBhIHN0cmluZyAoZm9yIERPTSBlbGVtZW50cykgb3IgYSBSZWFjdENsYXNzICcgKyAnKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgZWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLlxuICAgIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpY1xuICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy5cbiAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gICAgLy8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXNcbiAgICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pXG4gICAgaWYgKHZhbGlkVHlwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTtcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9LFxuXG4gIGNyZWF0ZUZhY3Rvcnk6IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgdmFyIHZhbGlkYXRlZEZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5cGUpO1xuICAgIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3NlZFxuICAgIHZhbGlkYXRlZEZhY3RvcnkudHlwZSA9IHR5cGU7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0ZWRGYWN0b3J5LCAndHlwZScsIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFjdG9yeS50eXBlIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB0aGUgY2xhc3MgZGlyZWN0bHkgJyArICdiZWZvcmUgcGFzc2luZyBpdCB0byBjcmVhdGVGYWN0b3J5LicpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0eXBlJywge1xuICAgICAgICAgICAgICB2YWx1ZTogdHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5O1xuICB9LFxuXG4gIGNsb25lRWxlbWVudDogZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlwZSk7XG4gICAgfVxuICAgIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpO1xuICAgIHJldHVybiBuZXdFbGVtZW50O1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNKY2JpQXFMMXh1WEc0dktpcGNiaUFxSUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpQndjbTkyYVdSbGN5QmhJSGR5WVhCd1pYSWdZWEp2ZFc1a0lHRWdaV3hsYldWdWRDQm1ZV04wYjNKNVhHNGdLaUIzYUdsamFDQjJZV3hwWkdGMFpYTWdkR2hsSUhCeWIzQnpJSEJoYzNObFpDQjBieUIwYUdVZ1pXeGxiV1Z1ZEM0Z1ZHaHBjeUJwY3lCcGJuUmxibVJsWkNCMGJ5QmlaVnh1SUNvZ2RYTmxaQ0J2Ym14NUlHbHVJRVJGVmlCaGJtUWdZMjkxYkdRZ1ltVWdjbVZ3YkdGalpXUWdZbmtnWVNCemRHRjBhV01nZEhsd1pTQmphR1ZqYTJWeUlHWnZjaUJzWVc1bmRXRm5aWE5jYmlBcUlIUm9ZWFFnYzNWd2NHOXlkQ0JwZEM1Y2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUld4bGJXVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTW5LVHRjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JseHVkbUZ5SUdOaGJrUmxabWx1WlZCeWIzQmxjblI1SUQwZ2NtVnhkV2x5WlNnbkxpOWpZVzVFWldacGJtVlFjbTl3WlhKMGVTY3BPMXh1ZG1GeUlHZGxkRWwwWlhKaGRHOXlSbTRnUFNCeVpYRjFhWEpsS0NjdUwyZGxkRWwwWlhKaGRHOXlSbTRuS1R0Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzVtZFc1amRHbHZiaUJuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvS1NCN1hHNGdJR2xtSUNoU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwS1NCN1hHNGdJQ0FnZG1GeUlHNWhiV1VnUFNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwTG1kbGRFNWhiV1VvS1R0Y2JpQWdJQ0JwWmlBb2JtRnRaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2NnUTJobFkyc2dkR2hsSUhKbGJtUmxjaUJ0WlhSb2IyUWdiMllnWUNjZ0t5QnVZVzFsSUNzZ0oyQXVKenRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlDY25PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGZGhjbTRnYVdZZ2RHaGxjbVVuY3lCdWJ5QnJaWGtnWlhod2JHbGphWFJzZVNCelpYUWdiMjRnWkhsdVlXMXBZeUJoY25KaGVYTWdiMllnWTJocGJHUnlaVzRnYjNKY2JpQXFJRzlpYW1WamRDQnJaWGx6SUdGeVpTQnViM1FnZG1Gc2FXUXVJRlJvYVhNZ1lXeHNiM2R6SUhWeklIUnZJR3RsWlhBZ2RISmhZMnNnYjJZZ1kyaHBiR1J5Wlc0Z1ltVjBkMlZsYmx4dUlDb2dkWEJrWVhSbGN5NWNiaUFxTDF4dWRtRnlJRzkzYm1WeVNHRnpTMlY1VlhObFYyRnlibWx1WnlBOUlIdDlPMXh1WEc1MllYSWdiRzluWjJWa1ZIbHdaVVpoYVd4MWNtVnpJRDBnZTMwN1hHNWNiaThxS2x4dUlDb2dWMkZ5YmlCcFppQjBhR1VnWld4bGJXVnVkQ0JrYjJWemJpZDBJR2hoZG1VZ1lXNGdaWGh3YkdsamFYUWdhMlY1SUdGemMybG5ibVZrSUhSdklHbDBMbHh1SUNvZ1ZHaHBjeUJsYkdWdFpXNTBJR2x6SUdsdUlHRnVJR0Z5Y21GNUxpQlVhR1VnWVhKeVlYa2dZMjkxYkdRZ1ozSnZkeUJoYm1RZ2MyaHlhVzVySUc5eUlHSmxYRzRnS2lCeVpXOXlaR1Z5WldRdUlFRnNiQ0JqYUdsc1pISmxiaUIwYUdGMElHaGhkbVZ1SjNRZ1lXeHlaV0ZrZVNCaVpXVnVJSFpoYkdsa1lYUmxaQ0JoY21VZ2NtVnhkV2x5WldRZ2RHOWNiaUFxSUdoaGRtVWdZU0JjSW10bGVWd2lJSEJ5YjNCbGNuUjVJR0Z6YzJsbmJtVmtJSFJ2SUdsMExseHVJQ3BjYmlBcUlFQnBiblJsY201aGJGeHVJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHVnNaVzFsYm5RZ1JXeGxiV1Z1ZENCMGFHRjBJSEpsY1hWcGNtVnpJR0VnYTJWNUxseHVJQ29nUUhCaGNtRnRJSHNxZlNCd1lYSmxiblJVZVhCbElHVnNaVzFsYm5RbmN5QndZWEpsYm5RbmN5QjBlWEJsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIyWVd4cFpHRjBaVVY0Y0d4cFkybDBTMlY1S0dWc1pXMWxiblFzSUhCaGNtVnVkRlI1Y0dVcElIdGNiaUFnYVdZZ0tDRmxiR1Z0Wlc1MExsOXpkRzl5WlNCOGZDQmxiR1Z0Wlc1MExsOXpkRzl5WlM1MllXeHBaR0YwWldRZ2ZId2daV3hsYldWdWRDNXJaWGtnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQmxiR1Z0Wlc1MExsOXpkRzl5WlM1MllXeHBaR0YwWldRZ1BTQjBjblZsTzF4dVhHNGdJSFpoY2lCaFpHUmxibVJoSUQwZ1oyVjBRV1JrWlc1a1lVWnZja3RsZVZWelpTZ25kVzVwY1hWbFMyVjVKeXdnWld4bGJXVnVkQ3dnY0dGeVpXNTBWSGx3WlNrN1hHNGdJR2xtSUNoaFpHUmxibVJoSUQwOVBTQnVkV3hzS1NCN1hHNGdJQ0FnTHk4Z2QyVWdZV3h5WldGa2VTQnphRzkzWldRZ2RHaGxJSGRoY201cGJtZGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkRllXTm9JR05vYVd4a0lHbHVJR0Z1SUdGeWNtRjVJRzl5SUdsMFpYSmhkRzl5SUhOb2IzVnNaQ0JvWVhabElHRWdkVzVwY1hWbElGd2lhMlY1WENJZ2NISnZjQzRuSUNzZ0p5VnpKWE1sY3ljc0lHRmtaR1Z1WkdFdWNHRnlaVzUwVDNKUGQyNWxjaUI4ZkNBbkp5d2dZV1JrWlc1a1lTNWphR2xzWkU5M2JtVnlJSHg4SUNjbkxDQmhaR1JsYm1SaExuVnliQ0I4ZkNBbkp5a2dPaUIxYm1SbFptbHVaV1E3WEc1OVhHNWNiaThxS2x4dUlDb2dVMmhoY21Wa0lIZGhjbTVwYm1jZ1lXNWtJRzF2Ym1sMGIzSnBibWNnWTI5a1pTQm1iM0lnZEdobElHdGxlU0IzWVhKdWFXNW5jeTVjYmlBcVhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFpYTnpZV2RsVkhsd1pTQkJJR3RsZVNCMWMyVmtJR1p2Y2lCa1pTMWtkWEJwYm1jZ2QyRnlibWx1WjNNdVhHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ1pXeGxiV1Z1ZENCRGIyMXdiMjVsYm5RZ2RHaGhkQ0J5WlhGMWFYSmxjeUJoSUd0bGVTNWNiaUFxSUVCd1lYSmhiU0I3S24wZ2NHRnlaVzUwVkhsd1pTQmxiR1Z0Wlc1MEozTWdjR0Z5Wlc1MEozTWdkSGx3WlM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHMvYjJKcVpXTjBmU0JCSUhObGRDQnZaaUJoWkdSbGJtUmhJSFJ2SUhWelpTQnBiaUIwYUdVZ2QyRnlibWx1WnlCdFpYTnpZV2RsTENCdmNpQnVkV3hzWEc0Z0tpQnBaaUIwYUdVZ2QyRnlibWx1WnlCb1lYTWdZV3h5WldGa2VTQmlaV1Z1SUhOb2IzZHVJR0psWm05eVpTQW9ZVzVrSUhOb2IzVnNaRzRuZENCaVpTQnphRzkzYmlCaFoyRnBiaWt1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEVGa1pHVnVaR0ZHYjNKTFpYbFZjMlVvYldWemMyRm5aVlI1Y0dVc0lHVnNaVzFsYm5Rc0lIQmhjbVZ1ZEZSNWNHVXBJSHRjYmlBZ2RtRnlJR0ZrWkdWdVpIVnRJRDBnWjJWMFJHVmpiR0Z5WVhScGIyNUZjbkp2Y2tGa1pHVnVaSFZ0S0NrN1hHNGdJR2xtSUNnaFlXUmtaVzVrZFcwcElIdGNiaUFnSUNCMllYSWdjR0Z5Wlc1MFRtRnRaU0E5SUhSNWNHVnZaaUJ3WVhKbGJuUlVlWEJsSUQwOVBTQW5jM1J5YVc1bkp5QS9JSEJoY21WdWRGUjVjR1VnT2lCd1lYSmxiblJVZVhCbExtUnBjM0JzWVhsT1lXMWxJSHg4SUhCaGNtVnVkRlI1Y0dVdWJtRnRaVHRjYmlBZ0lDQnBaaUFvY0dGeVpXNTBUbUZ0WlNrZ2UxeHVJQ0FnSUNBZ1lXUmtaVzVrZFcwZ1BTQW5JRU5vWldOcklIUm9aU0IwYjNBdGJHVjJaV3dnY21WdVpHVnlJR05oYkd3Z2RYTnBibWNnUENjZ0t5QndZWEpsYm5ST1lXMWxJQ3NnSno0dUp6dGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQjJZWElnYldWdGIybDZaWElnUFNCdmQyNWxja2hoYzB0bGVWVnpaVmRoY201cGJtZGJiV1Z6YzJGblpWUjVjR1ZkSUh4OElDaHZkMjVsY2toaGMwdGxlVlZ6WlZkaGNtNXBibWRiYldWemMyRm5aVlI1Y0dWZElEMGdlMzBwTzF4dUlDQnBaaUFvYldWdGIybDZaWEpiWVdSa1pXNWtkVzFkS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmlBZ2JXVnRiMmw2WlhKYllXUmtaVzVrZFcxZElEMGdkSEoxWlR0Y2JseHVJQ0IyWVhJZ1lXUmtaVzVrWVNBOUlIdGNiaUFnSUNCd1lYSmxiblJQY2s5M2JtVnlPaUJoWkdSbGJtUjFiU3hjYmlBZ0lDQjFjbXc2SUNjZ1UyVmxJR2gwZEhCek9pOHZabUl1YldVdmNtVmhZM1F0ZDJGeWJtbHVaeTFyWlhseklHWnZjaUJ0YjNKbElHbHVabTl5YldGMGFXOXVMaWNzWEc0Z0lDQWdZMmhwYkdSUGQyNWxjam9nYm5Wc2JGeHVJQ0I5TzF4dVhHNGdJQzh2SUZWemRXRnNiSGtnZEdobElHTjFjbkpsYm5RZ2IzZHVaWElnYVhNZ2RHaGxJRzltWm1WdVpHVnlMQ0JpZFhRZ2FXWWdhWFFnWVdOalpYQjBjeUJqYUdsc1pISmxiaUJoY3lCaFhHNGdJQzh2SUhCeWIzQmxjblI1TENCcGRDQnRZWGtnWW1VZ2RHaGxJR055WldGMGIzSWdiMllnZEdobElHTm9hV3hrSUhSb1lYUW5jeUJ5WlhOd2IyNXphV0pzWlNCbWIzSmNiaUFnTHk4Z1lYTnphV2R1YVc1bklHbDBJR0VnYTJWNUxseHVJQ0JwWmlBb1pXeGxiV1Z1ZENBbUppQmxiR1Z0Wlc1MExsOXZkMjVsY2lBbUppQmxiR1Z0Wlc1MExsOXZkMjVsY2lBaFBUMGdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDa2dlMXh1SUNBZ0lDOHZJRWRwZG1VZ2RHaGxJR052YlhCdmJtVnVkQ0IwYUdGMElHOXlhV2RwYm1Gc2JIa2dZM0psWVhSbFpDQjBhR2x6SUdOb2FXeGtMbHh1SUNBZ0lHRmtaR1Z1WkdFdVkyaHBiR1JQZDI1bGNpQTlJQ2NnU1hRZ2QyRnpJSEJoYzNObFpDQmhJR05vYVd4a0lHWnliMjBnSnlBcklHVnNaVzFsYm5RdVgyOTNibVZ5TG1kbGRFNWhiV1VvS1NBcklDY3VKenRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJoWkdSbGJtUmhPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnVjM1Z5WlNCMGFHRjBJR1YyWlhKNUlHVnNaVzFsYm5RZ1pXbDBhR1Z5SUdseklIQmhjM05sWkNCcGJpQmhJSE4wWVhScFl5QnNiMk5oZEdsdmJpd2dhVzRnWVc1Y2JpQXFJR0Z5Y21GNUlIZHBkR2dnWVc0Z1pYaHdiR2xqYVhRZ2EyVjVjeUJ3Y205d1pYSjBlU0JrWldacGJtVmtMQ0J2Y2lCcGJpQmhiaUJ2WW1wbFkzUWdiR2wwWlhKaGJGeHVJQ29nZDJsMGFDQjJZV3hwWkNCclpYa2djSEp2Y0dWeWRIa3VYRzRnS2x4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBUbTlrWlgwZ2JtOWtaU0JUZEdGMGFXTmhiR3g1SUhCaGMzTmxaQ0JqYUdsc1pDQnZaaUJoYm5rZ2RIbHdaUzVjYmlBcUlFQndZWEpoYlNCN0tuMGdjR0Z5Wlc1MFZIbHdaU0J1YjJSbEozTWdjR0Z5Wlc1MEozTWdkSGx3WlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1ZEYUdsc1pFdGxlWE1vYm05a1pTd2djR0Z5Wlc1MFZIbHdaU2tnZTF4dUlDQnBaaUFvZEhsd1pXOW1JRzV2WkdVZ0lUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdjbVYwZFhKdU8xeHVJQ0I5WEc0Z0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtHNXZaR1VwS1NCN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCdWIyUmxMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdZMmhwYkdRZ1BTQnViMlJsVzJsZE8xeHVJQ0FnSUNBZ2FXWWdLRkpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ2hqYUdsc1pDa3BJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2FXUmhkR1ZGZUhCc2FXTnBkRXRsZVNoamFHbHNaQ3dnY0dGeVpXNTBWSGx3WlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2FXWWdLRkpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ2h1YjJSbEtTa2dlMXh1SUNBZ0lDOHZJRlJvYVhNZ1pXeGxiV1Z1ZENCM1lYTWdjR0Z6YzJWa0lHbHVJR0VnZG1Gc2FXUWdiRzlqWVhScGIyNHVYRzRnSUNBZ2FXWWdLRzV2WkdVdVgzTjBiM0psS1NCN1hHNGdJQ0FnSUNCdWIyUmxMbDl6ZEc5eVpTNTJZV3hwWkdGMFpXUWdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdmU0JsYkhObElHbG1JQ2h1YjJSbEtTQjdYRzRnSUNBZ2RtRnlJR2wwWlhKaGRHOXlSbTRnUFNCblpYUkpkR1Z5WVhSdmNrWnVLRzV2WkdVcE8xeHVJQ0FnSUM4dklFVnVkSEo1SUdsMFpYSmhkRzl5Y3lCd2NtOTJhV1JsSUdsdGNHeHBZMmwwSUd0bGVYTXVYRzRnSUNBZ2FXWWdLR2wwWlhKaGRHOXlSbTRwSUh0Y2JpQWdJQ0FnSUdsbUlDaHBkR1Z5WVhSdmNrWnVJQ0U5UFNCdWIyUmxMbVZ1ZEhKcFpYTXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHbDBaWEpoZEc5eUlEMGdhWFJsY21GMGIzSkdiaTVqWVd4c0tHNXZaR1VwTzF4dUlDQWdJQ0FnSUNCMllYSWdjM1JsY0R0Y2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0NFb2MzUmxjQ0E5SUdsMFpYSmhkRzl5TG01bGVIUW9LU2t1Wkc5dVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaFNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUW9jM1JsY0M1MllXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkdsa1lYUmxSWGh3YkdsamFYUkxaWGtvYzNSbGNDNTJZV3gxWlN3Z2NHRnlaVzUwVkhsd1pTazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FYTnpaWEowSUhSb1lYUWdkR2hsSUhCeWIzQnpJR0Z5WlNCMllXeHBaRnh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmpiMjF3YjI1bGJuUk9ZVzFsSUU1aGJXVWdiMllnZEdobElHTnZiWEJ2Ym1WdWRDQm1iM0lnWlhKeWIzSWdiV1Z6YzJGblpYTXVYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0hKdmNGUjVjR1Z6SUUxaGNDQnZaaUJ3Y205d0lHNWhiV1VnZEc4Z1lTQlNaV0ZqZEZCeWIzQlVlWEJsWEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NISnZjSE5jYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCc2IyTmhkR2x2YmlCbExtY3VJRndpY0hKdmNGd2lMQ0JjSW1OdmJuUmxlSFJjSWl3Z1hDSmphR2xzWkNCamIyNTBaWGgwWENKY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHTm9aV05yVUhKdmNGUjVjR1Z6S0dOdmJYQnZibVZ1ZEU1aGJXVXNJSEJ5YjNCVWVYQmxjeXdnY0hKdmNITXNJR3h2WTJGMGFXOXVLU0I3WEc0Z0lHWnZjaUFvZG1GeUlIQnliM0JPWVcxbElHbHVJSEJ5YjNCVWVYQmxjeWtnZTF4dUlDQWdJR2xtSUNod2NtOXdWSGx3WlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwS1NCN1hHNGdJQ0FnSUNCMllYSWdaWEp5YjNJN1hHNGdJQ0FnSUNBdkx5QlFjbTl3SUhSNWNHVWdkbUZzYVdSaGRHbHZiaUJ0WVhrZ2RHaHliM2N1SUVsdUlHTmhjMlVnZEdobGVTQmtieXdnZDJVZ1pHOXVKM1FnZDJGdWRDQjBiMXh1SUNBZ0lDQWdMeThnWm1GcGJDQjBhR1VnY21WdVpHVnlJSEJvWVhObElIZG9aWEpsSUdsMElHUnBaRzRuZENCbVlXbHNJR0psWm05eVpTNGdVMjhnZDJVZ2JHOW5JR2wwTGx4dUlDQWdJQ0FnTHk4Z1FXWjBaWElnZEdobGMyVWdhR0YyWlNCaVpXVnVJR05zWldGdVpXUWdkWEFzSUhkbEoyeHNJR3hsZENCMGFHVnRJSFJvY205M0xseHVJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1ZHaHBjeUJwY3lCcGJuUmxiblJwYjI1aGJHeDVJR0Z1SUdsdWRtRnlhV0Z1ZENCMGFHRjBJR2RsZEhNZ1kyRjFaMmgwTGlCSmRDZHpJSFJvWlNCellXMWxYRzRnSUNBZ0lDQWdJQzh2SUdKbGFHRjJhVzl5SUdGeklIZHBkR2h2ZFhRZ2RHaHBjeUJ6ZEdGMFpXMWxiblFnWlhoalpYQjBJSGRwZEdnZ1lTQmlaWFIwWlhJZ2JXVnpjMkZuWlM1Y2JpQWdJQ0FnSUNBZ0lTaDBlWEJsYjJZZ2NISnZjRlI1Y0dWelczQnliM0JPWVcxbFhTQTlQVDBnSjJaMWJtTjBhVzl1SnlrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuSlhNNklDVnpJSFI1Y0dVZ1lDVnpZQ0JwY3lCcGJuWmhiR2xrT3lCcGRDQnRkWE4wSUdKbElHRWdablZ1WTNScGIyNHNJSFZ6ZFdGc2JIa2dabkp2YlNBbklDc2dKMUpsWVdOMExsQnliM0JVZVhCbGN5NG5MQ0JqYjIxd2IyNWxiblJPWVcxbElIeDhJQ2RTWldGamRDQmpiR0Z6Y3ljc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWelcyeHZZMkYwYVc5dVhTd2djSEp2Y0U1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ1pYSnliM0lnUFNCd2NtOXdWSGx3WlhOYmNISnZjRTVoYldWZEtIQnliM0J6TENCd2NtOXdUbUZ0WlN3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnYkc5allYUnBiMjRwTzF4dUlDQWdJQ0FnZlNCallYUmphQ0FvWlhncElIdGNiaUFnSUNBZ0lDQWdaWEp5YjNJZ1BTQmxlRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0NGbGNuSnZjaUI4ZkNCbGNuSnZjaUJwYm5OMFlXNWpaVzltSUVWeWNtOXlMQ0FuSlhNNklIUjVjR1VnYzNCbFkybG1hV05oZEdsdmJpQnZaaUFsY3lCZ0pYTmdJR2x6SUdsdWRtRnNhV1E3SUhSb1pTQjBlWEJsSUdOb1pXTnJaWElnSnlBcklDZG1kVzVqZEdsdmJpQnRkWE4wSUhKbGRIVnliaUJnYm5Wc2JHQWdiM0lnWVc0Z1lFVnljbTl5WUNCaWRYUWdjbVYwZFhKdVpXUWdZU0FsY3k0Z0p5QXJJQ2RaYjNVZ2JXRjVJR2hoZG1VZ1ptOXlaMjkwZEdWdUlIUnZJSEJoYzNNZ1lXNGdZWEpuZFcxbGJuUWdkRzhnZEdobElIUjVjR1VnWTJobFkydGxjaUFuSUNzZ0oyTnlaV0YwYjNJZ0tHRnljbUY1VDJZc0lHbHVjM1JoYm1ObFQyWXNJRzlpYW1WamRFOW1MQ0J2Ym1WUFppd2diMjVsVDJaVWVYQmxMQ0JoYm1RZ0p5QXJJQ2R6YUdGd1pTQmhiR3dnY21WeGRXbHlaU0JoYmlCaGNtZDFiV1Z1ZENrdUp5d2dZMjl0Y0c5dVpXNTBUbUZ0WlNCOGZDQW5VbVZoWTNRZ1kyeGhjM01uTENCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsYzF0c2IyTmhkR2x2Ymwwc0lIQnliM0JPWVcxbExDQjBlWEJsYjJZZ1pYSnliM0lwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2FXWWdLR1Z5Y205eUlHbHVjM1JoYm1ObGIyWWdSWEp5YjNJZ0ppWWdJU2hsY25KdmNpNXRaWE56WVdkbElHbHVJR3h2WjJkbFpGUjVjR1ZHWVdsc2RYSmxjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdUMjVzZVNCdGIyNXBkRzl5SUhSb2FYTWdabUZwYkhWeVpTQnZibU5sSUdKbFkyRjFjMlVnZEdobGNtVWdkR1Z1WkhNZ2RHOGdZbVVnWVNCc2IzUWdiMllnZEdobFhHNGdJQ0FnSUNBZ0lDOHZJSE5oYldVZ1pYSnliM0l1WEc0Z0lDQWdJQ0FnSUd4dloyZGxaRlI1Y0dWR1lXbHNkWEpsYzF0bGNuSnZjaTV0WlhOellXZGxYU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJQ0FnZG1GeUlHRmtaR1Z1WkhWdElEMGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLQ2s3WEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblJtRnBiR1ZrSUhCeWIzQlVlWEJsT2lBbGN5VnpKeXdnWlhKeWIzSXViV1Z6YzJGblpTd2dZV1JrWlc1a2RXMHBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVkcGRtVnVJR0Z1SUdWc1pXMWxiblFzSUhaaGJHbGtZWFJsSUhSb1lYUWdhWFJ6SUhCeWIzQnpJR1p2Ykd4dmR5QjBhR1VnY0hKdmNGUjVjR1Z6SUdSbFptbHVhWFJwYjI0c1hHNGdLaUJ3Y205MmFXUmxaQ0JpZVNCMGFHVWdkSGx3WlM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdaV3hsYldWdWRGeHVJQ292WEc1bWRXNWpkR2x2YmlCMllXeHBaR0YwWlZCeWIzQlVlWEJsY3lobGJHVnRaVzUwS1NCN1hHNGdJSFpoY2lCamIyMXdiMjVsYm5SRGJHRnpjeUE5SUdWc1pXMWxiblF1ZEhsd1pUdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCamIyMXdiMjVsYm5SRGJHRnpjeUFoUFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCMllYSWdibUZ0WlNBOUlHTnZiWEJ2Ym1WdWRFTnNZWE56TG1ScGMzQnNZWGxPWVcxbElIeDhJR052YlhCdmJtVnVkRU5zWVhOekxtNWhiV1U3WEc0Z0lHbG1JQ2hqYjIxd2IyNWxiblJEYkdGemN5NXdjbTl3Vkhsd1pYTXBJSHRjYmlBZ0lDQmphR1ZqYTFCeWIzQlVlWEJsY3lodVlXMWxMQ0JqYjIxd2IyNWxiblJEYkdGemN5NXdjbTl3Vkhsd1pYTXNJR1ZzWlcxbGJuUXVjSEp2Y0hNc0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZibk11Y0hKdmNDazdYRzRnSUgxY2JpQWdhV1lnS0hSNWNHVnZaaUJqYjIxd2IyNWxiblJEYkdGemN5NW5aWFJFWldaaGRXeDBVSEp2Y0hNZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloamIyMXdiMjVsYm5SRGJHRnpjeTVuWlhSRVpXWmhkV3gwVUhKdmNITXVhWE5TWldGamRFTnNZWE56UVhCd2NtOTJaV1FzSUNkblpYUkVaV1poZFd4MFVISnZjSE1nYVhNZ2IyNXNlU0IxYzJWa0lHOXVJR05zWVhOemFXTWdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTWdKeUFySUNka1pXWnBibWwwYVc5dWN5NGdWWE5sSUdFZ2MzUmhkR2xqSUhCeWIzQmxjblI1SUc1aGJXVmtJR0JrWldaaGRXeDBVSEp2Y0hOZ0lHbHVjM1JsWVdRdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibjFjYmx4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2lBOUlIdGNibHh1SUNCamNtVmhkR1ZGYkdWdFpXNTBPaUJtZFc1amRHbHZiaUFvZEhsd1pTd2djSEp2Y0hNc0lHTm9hV3hrY21WdUtTQjdYRzRnSUNBZ2RtRnlJSFpoYkdsa1ZIbHdaU0E5SUhSNWNHVnZaaUIwZVhCbElEMDlQU0FuYzNSeWFXNW5KeUI4ZkNCMGVYQmxiMllnZEhsd1pTQTlQVDBnSjJaMWJtTjBhVzl1Snp0Y2JpQWdJQ0F2THlCWFpTQjNZWEp1SUdsdUlIUm9hWE1nWTJGelpTQmlkWFFnWkc5dUozUWdkR2h5YjNjdUlGZGxJR1Y0Y0dWamRDQjBhR1VnWld4bGJXVnVkQ0JqY21WaGRHbHZiaUIwYjF4dUlDQWdJQzh2SUhOMVkyTmxaV1FnWVc1a0lIUm9aWEpsSUhkcGJHd2diR2xyWld4NUlHSmxJR1Z5Y205eWN5QnBiaUJ5Wlc1a1pYSXVYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29kbUZzYVdSVWVYQmxMQ0FuVW1WaFkzUXVZM0psWVhSbFJXeGxiV1Z1ZERvZ2RIbHdaU0J6YUc5MWJHUWdibTkwSUdKbElHNTFiR3dzSUhWdVpHVm1hVzVsWkN3Z1ltOXZiR1ZoYml3Z2IzSWdKeUFySUNkdWRXMWlaWEl1SUVsMElITm9iM1ZzWkNCaVpTQmhJSE4wY21sdVp5QW9abTl5SUVSUFRTQmxiR1Z0Wlc1MGN5a2diM0lnWVNCU1pXRmpkRU5zWVhOeklDY2dLeUFuS0dadmNpQmpiMjF3YjNOcGRHVWdZMjl0Y0c5dVpXNTBjeWt1SlhNbkxDQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9LU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCMllYSWdaV3hsYldWdWRDQTlJRkpsWVdOMFJXeGxiV1Z1ZEM1amNtVmhkR1ZGYkdWdFpXNTBMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNWNiaUFnSUNBdkx5QlVhR1VnY21WemRXeDBJR05oYmlCaVpTQnVkV3hzYVhOb0lHbG1JR0VnYlc5amF5QnZjaUJoSUdOMWMzUnZiU0JtZFc1amRHbHZiaUJwY3lCMWMyVmtMbHh1SUNBZ0lDOHZJRlJQUkU4NklFUnliM0FnZEdocGN5QjNhR1Z1SUhSb1pYTmxJR0Z5WlNCdWJ5QnNiMjVuWlhJZ1lXeHNiM2RsWkNCaGN5QjBhR1VnZEhsd1pTQmhjbWQxYldWdWRDNWNiaUFnSUNCcFppQW9aV3hsYldWdWRDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1pXeGxiV1Z1ZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCVGEybHdJR3RsZVNCM1lYSnVhVzVuSUdsbUlIUm9aU0IwZVhCbElHbHpiaWQwSUhaaGJHbGtJSE5wYm1ObElHOTFjaUJyWlhrZ2RtRnNhV1JoZEdsdmJpQnNiMmRwWTF4dUlDQWdJQzh2SUdSdlpYTnVKM1FnWlhod1pXTjBJR0VnYm05dUxYTjBjbWx1Wnk5bWRXNWpkR2x2YmlCMGVYQmxJR0Z1WkNCallXNGdkR2h5YjNjZ1kyOXVablZ6YVc1bklHVnljbTl5Y3k1Y2JpQWdJQ0F2THlCWFpTQmtiMjRuZENCM1lXNTBJR1Y0WTJWd2RHbHZiaUJpWldoaGRtbHZjaUIwYnlCa2FXWm1aWElnWW1WMGQyVmxiaUJrWlhZZ1lXNWtJSEJ5YjJRdVhHNGdJQ0FnTHk4Z0tGSmxibVJsY21sdVp5QjNhV3hzSUhSb2NtOTNJSGRwZEdnZ1lTQm9aV3h3Wm5Wc0lHMWxjM05oWjJVZ1lXNWtJR0Z6SUhOdmIyNGdZWE1nZEdobElIUjVjR1VnYVhOY2JpQWdJQ0F2THlCbWFYaGxaQ3dnZEdobElHdGxlU0IzWVhKdWFXNW5jeUIzYVd4c0lHRndjR1ZoY2k0cFhHNGdJQ0FnYVdZZ0tIWmhiR2xrVkhsd1pTa2dlMXh1SUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURJN0lHa2dQQ0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkRhR2xzWkV0bGVYTW9ZWEpuZFcxbGJuUnpXMmxkTENCMGVYQmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZV3hwWkdGMFpWQnliM0JVZVhCbGN5aGxiR1Z0Wlc1MEtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCbGJHVnRaVzUwTzF4dUlDQjlMRnh1WEc0Z0lHTnlaV0YwWlVaaFkzUnZjbms2SUdaMWJtTjBhVzl1SUNoMGVYQmxLU0I3WEc0Z0lDQWdkbUZ5SUhaaGJHbGtZWFJsWkVaaFkzUnZjbmtnUFNCU1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSXVZM0psWVhSbFJXeGxiV1Z1ZEM1aWFXNWtLRzUxYkd3c0lIUjVjR1VwTzF4dUlDQWdJQzh2SUV4bFoyRmplU0JvYjI5cklGUlBSRTg2SUZkaGNtNGdhV1lnZEdocGN5QnBjeUJoWTJObGMzTmxaRnh1SUNBZ0lIWmhiR2xrWVhSbFpFWmhZM1J2Y25rdWRIbHdaU0E5SUhSNWNHVTdYRzVjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2FXWWdLR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVLU0I3WEc0Z0lDQWdJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDJZV3hwWkdGMFpXUkdZV04wYjNKNUxDQW5kSGx3WlNjc0lIdGNiaUFnSUNBZ0lDQWdJQ0JsYm5WdFpYSmhZbXhsT2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnSUNCblpYUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuUm1GamRHOXllUzUwZVhCbElHbHpJR1JsY0hKbFkyRjBaV1F1SUVGalkyVnpjeUIwYUdVZ1kyeGhjM01nWkdseVpXTjBiSGtnSnlBcklDZGlaV1p2Y21VZ2NHRnpjMmx1WnlCcGRDQjBieUJqY21WaGRHVkdZV04wYjNKNUxpY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0hSb2FYTXNJQ2QwZVhCbEp5d2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlRvZ2RIbHdaVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhsd1pUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIyWVd4cFpHRjBaV1JHWVdOMGIzSjVPMXh1SUNCOUxGeHVYRzRnSUdOc2IyNWxSV3hsYldWdWREb2dablZ1WTNScGIyNGdLR1ZzWlcxbGJuUXNJSEJ5YjNCekxDQmphR2xzWkhKbGJpa2dlMXh1SUNBZ0lIWmhjaUJ1WlhkRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU5zYjI1bFJXeGxiV1Z1ZEM1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F5T3lCcElEd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMllXeHBaR0YwWlVOb2FXeGtTMlY1Y3loaGNtZDFiV1Z1ZEhOYmFWMHNJRzVsZDBWc1pXMWxiblF1ZEhsd1pTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGJHbGtZWFJsVUhKdmNGUjVjR1Z6S0c1bGQwVnNaVzFsYm5RcE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhkRmJHVnRaVzUwTzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRmJHVnRaVzUwVm1Gc2FXUmhkRzl5T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFbXB0eUNvbXBvbmVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9SZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnknKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG5cbnZhciBwbGFjZWhvbGRlckVsZW1lbnQ7XG5cbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uID0ge1xuICBpbmplY3RFbXB0eUNvbXBvbmVudDogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHBsYWNlaG9sZGVyRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCk7XG4gIH1cbn07XG5cbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG4gIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbnVsbDtcbiAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJFbGVtZW50KTtcbn07XG5hc3NpZ24oUmVhY3RFbXB0eUNvbXBvbmVudC5wcm90b3R5cGUsIHtcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge30sXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIFJlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeS5yZWdpc3Rlck51bGxDb21wb25lbnRJRChyb290SUQpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSByb290SUQ7XG4gICAgcmV0dXJuIFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gIH0sXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9LFxuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTtcbiAgICBSZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnkuZGVyZWdpc3Rlck51bGxDb21wb25lbnRJRCh0aGlzLl9yb290Tm9kZUlEKTtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG4gIH1cbn0pO1xuXG5SZWFjdEVtcHR5Q29tcG9uZW50LmluamVjdGlvbiA9IFJlYWN0RW1wdHlDb21wb25lbnRJbmplY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbXB0eUNvbXBvbmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUaGlzIHJlZ2lzdHJ5IGtlZXBzIHRyYWNrIG9mIHRoZSBSZWFjdCBJRHMgb2YgdGhlIGNvbXBvbmVudHMgdGhhdCByZW5kZXJlZCB0b1xuLy8gYG51bGxgIChpbiByZWFsaXR5IGEgcGxhY2Vob2xkZXIgc3VjaCBhcyBgbm9zY3JpcHRgKVxudmFyIG51bGxDb21wb25lbnRJRHNSZWdpc3RyeSA9IHt9O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBDb21wb25lbnQncyBgX3Jvb3ROb2RlSURgLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IGlzIHJlbmRlcmVkIHRvIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbENvbXBvbmVudElEKGlkKSB7XG4gIHJldHVybiAhIW51bGxDb21wb25lbnRJRHNSZWdpc3RyeVtpZF07XG59XG5cbi8qKlxuICogTWFyayB0aGUgY29tcG9uZW50IGFzIGhhdmluZyByZW5kZXJlZCB0byBudWxsLlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIENvbXBvbmVudCdzIGBfcm9vdE5vZGVJRGAuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyTnVsbENvbXBvbmVudElEKGlkKSB7XG4gIG51bGxDb21wb25lbnRJRHNSZWdpc3RyeVtpZF0gPSB0cnVlO1xufVxuXG4vKipcbiAqIFVubWFyayB0aGUgY29tcG9uZW50IGFzIGhhdmluZyByZW5kZXJlZCB0byBudWxsOiBpdCByZW5kZXJzIHRvIHNvbWV0aGluZyBub3cuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQ29tcG9uZW50J3MgYF9yb290Tm9kZUlEYC5cbiAqL1xuZnVuY3Rpb24gZGVyZWdpc3Rlck51bGxDb21wb25lbnRJRChpZCkge1xuICBkZWxldGUgbnVsbENvbXBvbmVudElEc1JlZ2lzdHJ5W2lkXTtcbn1cblxudmFyIFJlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeSA9IHtcbiAgaXNOdWxsQ29tcG9uZW50SUQ6IGlzTnVsbENvbXBvbmVudElELFxuICByZWdpc3Rlck51bGxDb21wb25lbnRJRDogcmVnaXN0ZXJOdWxsQ29tcG9uZW50SUQsXG4gIGRlcmVnaXN0ZXJOdWxsQ29tcG9uZW50SUQ6IGRlcmVnaXN0ZXJOdWxsQ29tcG9uZW50SURcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFcnJvclV0aWxzXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhdWdodEVycm9yID0gbnVsbDtcblxuLyoqXG4gKiBDYWxsIGEgZnVuY3Rpb24gd2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC5cbiAqXG4gKiBAcGFyYW0gez9TdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9nZ2luZyBvciBkZWJ1Z2dpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZVxuICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50XG4gKiBAcGFyYW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50XG4gKi9cbmZ1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBmdW5jLCBhLCBiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZ1bmMoYSwgYik7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICBpZiAoY2F1Z2h0RXJyb3IgPT09IG51bGwpIHtcbiAgICAgIGNhdWdodEVycm9yID0geDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG52YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuICBpbnZva2VHdWFyZGVkQ2FsbGJhY2s6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAgICogSW52b2tlZCBieSBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRoZSBldmVudFxuICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJldGhyb3dDYXVnaHRFcnJvci5cbiAgICovXG4gIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1YXJkZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2hcbiAgICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBlcnJvciBoYW5kbGVyLlxuICAgKi9cbiAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhdWdodEVycm9yKSB7XG4gICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtcbiAgICAgIGNhdWdodEVycm9yID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLyoqXG4gICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhXG4gICAqIHJlYWwgYnJvd3NlciBldmVudC5cbiAgICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpO1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFtZSwgZnVuYywgYSwgYikge1xuICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBhLCBiKTtcbiAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuICAgICAgZmFrZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2dC5pbml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxzZSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXJyb3JVdGlscztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEVWeWNtOXlWWFJwYkhNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRVZ5Y205eVZYUnBiSE5jYmlBcUlFQjBlWEJsWTJobFkydHpYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWTJGMVoyaDBSWEp5YjNJZ1BTQnVkV3hzTzF4dVhHNHZLaXBjYmlBcUlFTmhiR3dnWVNCbWRXNWpkR2x2YmlCM2FHbHNaU0JuZFdGeVpHbHVaeUJoWjJGcGJuTjBJR1Z5Y205eWN5QjBhR0YwSUdoaGNIQmxibk1nZDJsMGFHbHVJR2wwTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UDFOMGNtbHVaMzBnYm1GdFpTQnZaaUIwYUdVZ1ozVmhjbVFnZEc4Z2RYTmxJR1p2Y2lCc2IyZG5hVzVuSUc5eUlHUmxZblZuWjJsdVoxeHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnWm5WdVl5QlVhR1VnWm5WdVkzUnBiMjRnZEc4Z2FXNTJiMnRsWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJR0VnUm1seWMzUWdZWEpuZFcxbGJuUmNiaUFxSUVCd1lYSmhiU0I3S24wZ1lpQlRaV052Ym1RZ1lYSm5kVzFsYm5SY2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1MmIydGxSM1ZoY21SbFpFTmhiR3hpWVdOcktHNWhiV1VzSUdaMWJtTXNJR0VzSUdJcElIdGNiaUFnZEhKNUlIdGNiaUFnSUNCeVpYUjFjbTRnWm5WdVl5aGhMQ0JpS1R0Y2JpQWdmU0JqWVhSamFDQW9lQ2tnZTF4dUlDQWdJR2xtSUNoallYVm5hSFJGY25KdmNpQTlQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdZMkYxWjJoMFJYSnliM0lnUFNCNE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNCOVhHNTlYRzVjYm5aaGNpQlNaV0ZqZEVWeWNtOXlWWFJwYkhNZ1BTQjdYRzRnSUdsdWRtOXJaVWQxWVhKa1pXUkRZV3hzWW1GamF6b2dhVzUyYjJ0bFIzVmhjbVJsWkVOaGJHeGlZV05yTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm5admEyVmtJR0o1SUZKbFlXTjBWR1Z6ZEZWMGFXeHpMbE5wYlhWc1lYUmxJSE52SUhSb1lYUWdZVzU1SUdWeWNtOXljeUIwYUhKdmQyNGdZbmtnZEdobElHVjJaVzUwWEc0Z0lDQXFJR2hoYm1Sc1pYSWdZWEpsSUhOMWNtVWdkRzhnWW1VZ2NtVjBhSEp2ZDI0Z1lua2djbVYwYUhKdmQwTmhkV2RvZEVWeWNtOXlMbHh1SUNBZ0tpOWNiaUFnYVc1MmIydGxSM1ZoY21SbFpFTmhiR3hpWVdOclYybDBhRU5oZEdOb09pQnBiblp2YTJWSGRXRnlaR1ZrUTJGc2JHSmhZMnNzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVIxY21sdVp5QmxlR1ZqZFhScGIyNGdiMllnWjNWaGNtUmxaQ0JtZFc1amRHbHZibk1nZDJVZ2QybHNiQ0JqWVhCMGRYSmxJSFJvWlNCbWFYSnpkQ0JsY25KdmNpQjNhR2xqYUZ4dUlDQWdLaUIzWlNCM2FXeHNJSEpsZEdoeWIzY2dkRzhnWW1VZ2FHRnVaR3hsWkNCaWVTQjBhR1VnZEc5d0lHeGxkbVZzSUdWeWNtOXlJR2hoYm1Sc1pYSXVYRzRnSUNBcUwxeHVJQ0J5WlhSb2NtOTNRMkYxWjJoMFJYSnliM0k2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCcFppQW9ZMkYxWjJoMFJYSnliM0lwSUh0Y2JpQWdJQ0FnSUhaaGNpQmxjbkp2Y2lBOUlHTmhkV2RvZEVWeWNtOXlPMXh1SUNBZ0lDQWdZMkYxWjJoMFJYSnliM0lnUFNCdWRXeHNPMXh1SUNBZ0lDQWdkR2h5YjNjZ1pYSnliM0k3WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1WEc1cFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQXZLaXBjYmlBZ0lDb2dWRzhnYUdWc2NDQmtaWFpsYkc5d2JXVnVkQ0IzWlNCallXNGdaMlYwSUdKbGRIUmxjaUJrWlhaMGIyOXNjeUJwYm5SbFozSmhkR2x2YmlCaWVTQnphVzExYkdGMGFXNW5JR0ZjYmlBZ0lDb2djbVZoYkNCaWNtOTNjMlZ5SUdWMlpXNTBMbHh1SUNBZ0tpOWNiaUFnYVdZZ0tIUjVjR1Z2WmlCM2FXNWtiM2NnSVQwOUlDZDFibVJsWm1sdVpXUW5JQ1ltSUhSNWNHVnZaaUIzYVc1a2IzY3VaR2x6Y0dGMFkyaEZkbVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCMGVYQmxiMllnWkc5amRXMWxiblFnSVQwOUlDZDFibVJsWm1sdVpXUW5JQ1ltSUhSNWNHVnZaaUJrYjJOMWJXVnVkQzVqY21WaGRHVkZkbVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJSFpoY2lCbVlXdGxUbTlrWlNBOUlHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSjNKbFlXTjBKeWs3WEc0Z0lDQWdVbVZoWTNSRmNuSnZjbFYwYVd4ekxtbHVkbTlyWlVkMVlYSmtaV1JEWVd4c1ltRmpheUE5SUdaMWJtTjBhVzl1SUNodVlXMWxMQ0JtZFc1akxDQmhMQ0JpS1NCN1hHNGdJQ0FnSUNCMllYSWdZbTkxYm1SR2RXNWpJRDBnWm5WdVl5NWlhVzVrS0c1MWJHd3NJR0VzSUdJcE8xeHVJQ0FnSUNBZ2RtRnlJR1YyZEZSNWNHVWdQU0FuY21WaFkzUXRKeUFySUc1aGJXVTdYRzRnSUNBZ0lDQm1ZV3RsVG05a1pTNWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtHVjJkRlI1Y0dVc0lHSnZkVzVrUm5WdVl5d2dabUZzYzJVcE8xeHVJQ0FnSUNBZ2RtRnlJR1YyZENBOUlHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWMlpXNTBLQ2RGZG1WdWRDY3BPMXh1SUNBZ0lDQWdaWFowTG1sdWFYUkZkbVZ1ZENobGRuUlVlWEJsTENCbVlXeHpaU3dnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdabUZyWlU1dlpHVXVaR2x6Y0dGMFkyaEZkbVZ1ZENobGRuUXBPMXh1SUNBZ0lDQWdabUZyWlU1dlpHVXVjbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaWhsZG5SVWVYQmxMQ0JpYjNWdVpFWjFibU1zSUdaaGJITmxLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkZjbkp2Y2xWMGFXeHpPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEV2ZW50RW1pdHRlck1peGluXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG5cbmZ1bmN0aW9uIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50cyk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtcbn1cblxudmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4gPSB7XG5cbiAgLyoqXG4gICAqIFN0cmVhbXMgYSBmaXJlZCB0b3AtbGV2ZWwgZXZlbnQgdG8gYEV2ZW50UGx1Z2luSHViYCB3aGVyZSBwbHVnaW5zIGhhdmUgdGhlXG4gICAqIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSBgUmVhY3RFdmVudGBzIHRvIGJlIGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtvYmplY3R9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBlbnZpcm9ubWVudCBldmVudC5cbiAgICovXG4gIGhhbmRsZVRvcExldmVsOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBydW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0dGVyTWl4aW47IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RXZlbnRMaXN0ZW5lclxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudExpc3RlbmVyID0gcmVxdWlyZSgnZmJqcy9saWIvRXZlbnRMaXN0ZW5lcicpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24nKTtcblxudmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBwYXJlbnQgUmVhY3QgY29tcG9uZW50IG9mIGBub2RlYC5cbiAqXG4gKiBAcGFyYW0geyp9IG5vZGVcbiAqIEByZXR1cm4gez9ET01FdmVudFRhcmdldH0gUGFyZW50IGNvbnRhaW5lciwgb3IgYG51bGxgIGlmIHRoZSBzcGVjaWZpZWQgbm9kZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgbmVzdGVkLlxuICovXG5mdW5jdGlvbiBmaW5kUGFyZW50KG5vZGUpIHtcbiAgLy8gVE9ETzogSXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cbiAgLy8gdHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdpdGhvdXQgdXNpbmcgYVxuICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFsbCBET00gY2hhbmdlcy5cbiAgdmFyIG5vZGVJRCA9IFJlYWN0TW91bnQuZ2V0SUQobm9kZSk7XG4gIHZhciByb290SUQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQobm9kZUlEKTtcbiAgdmFyIGNvbnRhaW5lciA9IFJlYWN0TW91bnQuZmluZFJlYWN0Q29udGFpbmVyRm9ySUQocm9vdElEKTtcbiAgdmFyIHBhcmVudCA9IFJlYWN0TW91bnQuZ2V0Rmlyc3RSZWFjdERPTShjb250YWluZXIpO1xuICByZXR1cm4gcGFyZW50O1xufVxuXG4vLyBVc2VkIHRvIHN0b3JlIGFuY2VzdG9yIGhpZXJhcmNoeSBpbiB0b3AgbGV2ZWwgY2FsbGJhY2tcbmZ1bmN0aW9uIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHRoaXMudG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlO1xuICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7XG4gIHRoaXMuYW5jZXN0b3JzID0gW107XG59XG5hc3NpZ24oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnByb3RvdHlwZSwge1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50b3BMZXZlbFR5cGUgPSBudWxsO1xuICAgIHRoaXMubmF0aXZlRXZlbnQgPSBudWxsO1xuICAgIHRoaXMuYW5jZXN0b3JzLmxlbmd0aCA9IDA7XG4gIH1cbn0pO1xuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZywgUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlvbiBoYW5kbGVUb3BMZXZlbEltcGwoYm9va0tlZXBpbmcpIHtcbiAgLy8gVE9ETzogUmUtZW5hYmxlIGV2ZW50LnBhdGggaGFuZGxpbmdcbiAgLy9cbiAgLy8gaWYgKGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50LnBhdGggJiYgYm9va0tlZXBpbmcubmF0aXZlRXZlbnQucGF0aC5sZW5ndGggPiAxKSB7XG4gIC8vICAgLy8gTmV3IGJyb3dzZXJzIGhhdmUgYSBwYXRoIGF0dHJpYnV0ZSBvbiBuYXRpdmUgZXZlbnRzXG4gIC8vICAgaGFuZGxlVG9wTGV2ZWxXaXRoUGF0aChib29rS2VlcGluZyk7XG4gIC8vIH0gZWxzZSB7XG4gIC8vICAgLy8gTGVnYWN5IGJyb3dzZXJzIGRvbid0IGhhdmUgYSBwYXRoIGF0dHJpYnV0ZSBvbiBuYXRpdmUgZXZlbnRzXG4gIC8vICAgaGFuZGxlVG9wTGV2ZWxXaXRob3V0UGF0aChib29rS2VlcGluZyk7XG4gIC8vIH1cblxuICB2b2lkIGhhbmRsZVRvcExldmVsV2l0aFBhdGg7IC8vIHRlbXBvcmFyaWx5IHVudXNlZFxuICBoYW5kbGVUb3BMZXZlbFdpdGhvdXRQYXRoKGJvb2tLZWVwaW5nKTtcbn1cblxuLy8gTGVnYWN5IGJyb3dzZXJzIGRvbid0IGhhdmUgYSBwYXRoIGF0dHJpYnV0ZSBvbiBuYXRpdmUgZXZlbnRzXG5mdW5jdGlvbiBoYW5kbGVUb3BMZXZlbFdpdGhvdXRQYXRoKGJvb2tLZWVwaW5nKSB7XG4gIHZhciB0b3BMZXZlbFRhcmdldCA9IFJlYWN0TW91bnQuZ2V0Rmlyc3RSZWFjdERPTShnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCkpIHx8IHdpbmRvdztcblxuICAvLyBMb29wIHRocm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50cy5cbiAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5jZXN0b3JzIGJlZm9yZSBjYWxsaW5nIGFueVxuICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRpbmcgdG9cbiAgLy8gaW5jb25zaXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5cbiAgdmFyIGFuY2VzdG9yID0gdG9wTGV2ZWxUYXJnZXQ7XG4gIHdoaWxlIChhbmNlc3Rvcikge1xuICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTtcbiAgICBhbmNlc3RvciA9IGZpbmRQYXJlbnQoYW5jZXN0b3IpO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBib29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICB0b3BMZXZlbFRhcmdldCA9IGJvb2tLZWVwaW5nLmFuY2VzdG9yc1tpXTtcbiAgICB2YXIgdG9wTGV2ZWxUYXJnZXRJRCA9IFJlYWN0TW91bnQuZ2V0SUQodG9wTGV2ZWxUYXJnZXQpIHx8ICcnO1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCwgYm9va0tlZXBpbmcubmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KSk7XG4gIH1cbn1cblxuLy8gTmV3IGJyb3dzZXJzIGhhdmUgYSBwYXRoIGF0dHJpYnV0ZSBvbiBuYXRpdmUgZXZlbnRzXG5mdW5jdGlvbiBoYW5kbGVUb3BMZXZlbFdpdGhQYXRoKGJvb2tLZWVwaW5nKSB7XG4gIHZhciBwYXRoID0gYm9va0tlZXBpbmcubmF0aXZlRXZlbnQucGF0aDtcbiAgdmFyIGN1cnJlbnROYXRpdmVUYXJnZXQgPSBwYXRoWzBdO1xuICB2YXIgZXZlbnRzRmlyZWQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY3VycmVudFBhdGhFbGVtZW50ID0gcGF0aFtpXTtcbiAgICBpZiAoY3VycmVudFBhdGhFbGVtZW50Lm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUpIHtcbiAgICAgIGN1cnJlbnROYXRpdmVUYXJnZXQgPSBwYXRoW2kgKyAxXTtcbiAgICB9XG4gICAgLy8gVE9ETzogc2xvd1xuICAgIHZhciByZWFjdFBhcmVudCA9IFJlYWN0TW91bnQuZ2V0Rmlyc3RSZWFjdERPTShjdXJyZW50UGF0aEVsZW1lbnQpO1xuICAgIGlmIChyZWFjdFBhcmVudCA9PT0gY3VycmVudFBhdGhFbGVtZW50KSB7XG4gICAgICB2YXIgY3VycmVudFBhdGhFbGVtZW50SUQgPSBSZWFjdE1vdW50LmdldElEKGN1cnJlbnRQYXRoRWxlbWVudCk7XG4gICAgICB2YXIgbmV3Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKGN1cnJlbnRQYXRoRWxlbWVudElEKTtcbiAgICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNoKGN1cnJlbnRQYXRoRWxlbWVudCk7XG5cbiAgICAgIHZhciB0b3BMZXZlbFRhcmdldElEID0gUmVhY3RNb3VudC5nZXRJRChjdXJyZW50UGF0aEVsZW1lbnQpIHx8ICcnO1xuICAgICAgZXZlbnRzRmlyZWQrKztcbiAgICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCBjdXJyZW50UGF0aEVsZW1lbnQsIHRvcExldmVsVGFyZ2V0SUQsIGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50LCBjdXJyZW50TmF0aXZlVGFyZ2V0KTtcblxuICAgICAgLy8gSnVtcCB0byB0aGUgcm9vdCBvZiB0aGlzIFJlYWN0IHJlbmRlciB0cmVlXG4gICAgICB3aGlsZSAoY3VycmVudFBhdGhFbGVtZW50SUQgIT09IG5ld1Jvb3RJRCkge1xuICAgICAgICBpKys7XG4gICAgICAgIGN1cnJlbnRQYXRoRWxlbWVudCA9IHBhdGhbaV07XG4gICAgICAgIGN1cnJlbnRQYXRoRWxlbWVudElEID0gUmVhY3RNb3VudC5nZXRJRChjdXJyZW50UGF0aEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZXZlbnRzRmlyZWQgPT09IDApIHtcbiAgICBSZWFjdEV2ZW50TGlzdGVuZXIuX2hhbmRsZVRvcExldmVsKGJvb2tLZWVwaW5nLnRvcExldmVsVHlwZSwgd2luZG93LCAnJywgYm9va0tlZXBpbmcubmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2Nyb2xsVmFsdWVNb25pdG9yKGNiKSB7XG4gIHZhciBzY3JvbGxQb3NpdGlvbiA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHdpbmRvdyk7XG4gIGNiKHNjcm9sbFBvc2l0aW9uKTtcbn1cblxudmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9IHtcbiAgX2VuYWJsZWQ6IHRydWUsXG4gIF9oYW5kbGVUb3BMZXZlbDogbnVsbCxcblxuICBXSU5ET1dfSEFORExFOiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyB3aW5kb3cgOiBudWxsLFxuXG4gIHNldEhhbmRsZVRvcExldmVsOiBmdW5jdGlvbiAoaGFuZGxlVG9wTGV2ZWwpIHtcbiAgICBSZWFjdEV2ZW50TGlzdGVuZXIuX2hhbmRsZVRvcExldmVsID0gaGFuZGxlVG9wTGV2ZWw7XG4gIH0sXG5cbiAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtcbiAgICBSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQgPSAhIWVuYWJsZWQ7XG4gIH0sXG5cbiAgaXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZDtcbiAgfSxcblxuICAvKipcbiAgICogVHJhcHMgdG9wLWxldmVsIGV2ZW50cyBieSB1c2luZyBldmVudCBidWJibGluZy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1lIEV2ZW50IG5hbWUgKGUuZy4gXCJjbGlja1wiKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGhhbmRsZSBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci5cbiAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG4gICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuICAgIHZhciBlbGVtZW50ID0gaGFuZGxlO1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBFdmVudExpc3RlbmVyLmxpc3RlbihlbGVtZW50LCBoYW5kbGVyQmFzZU5hbWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCwgdG9wTGV2ZWxUeXBlKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXBzIGEgdG9wLWxldmVsIGV2ZW50IGJ5IHVzaW5nIGV2ZW50IGNhcHR1cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1lIEV2ZW50IG5hbWUgKGUuZy4gXCJjbGlja1wiKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGhhbmRsZSBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci5cbiAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG4gICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcbiAgICB2YXIgZWxlbWVudCA9IGhhbmRsZTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5jYXB0dXJlKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcbiAgfSxcblxuICBtb25pdG9yU2Nyb2xsVmFsdWU6IGZ1bmN0aW9uIChyZWZyZXNoKSB7XG4gICAgdmFyIGNhbGxiYWNrID0gc2Nyb2xsVmFsdWVNb25pdG9yLmJpbmQobnVsbCwgcmVmcmVzaCk7XG4gICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2luZG93LCAnc2Nyb2xsJywgY2FsbGJhY2spO1xuICB9LFxuXG4gIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gICAgaWYgKCFSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYm9va0tlZXBpbmcgPSBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcuZ2V0UG9vbGVkKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuICAgIHRyeSB7XG4gICAgICAvLyBFdmVudCBxdWV1ZSBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIHNhbWUgY3ljbGUgYWxsb3dzXG4gICAgICAvLyBgcHJldmVudERlZmF1bHRgLlxuICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGhhbmRsZVRvcExldmVsSW1wbCwgYm9va0tlZXBpbmcpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucmVsZWFzZShib29rS2VlcGluZyk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRMaXN0ZW5lcjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RJbmplY3Rpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTtcbnZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RDbGFzcyA9IHJlcXVpcmUoJy4vUmVhY3RDbGFzcycpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0TmF0aXZlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdE5hdGl2ZUNvbXBvbmVudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RSb290SW5kZXggPSByZXF1aXJlKCcuL1JlYWN0Um9vdEluZGV4Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIFJlYWN0SW5qZWN0aW9uID0ge1xuICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLFxuICBDbGFzczogUmVhY3RDbGFzcy5pbmplY3Rpb24sXG4gIERPTVByb3BlcnR5OiBET01Qcm9wZXJ0eS5pbmplY3Rpb24sXG4gIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29tcG9uZW50LmluamVjdGlvbixcbiAgRXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbixcbiAgRXZlbnRFbWl0dGVyOiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaW5qZWN0aW9uLFxuICBOYXRpdmVDb21wb25lbnQ6IFJlYWN0TmF0aXZlQ29tcG9uZW50LmluamVjdGlvbixcbiAgUGVyZjogUmVhY3RQZXJmLmluamVjdGlvbixcbiAgUm9vdEluZGV4OiBSZWFjdFJvb3RJbmRleC5pbmplY3Rpb24sXG4gIFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5pbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbmplY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0SW5wdXRTZWxlY3Rpb25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3Rpb24nKTtcblxudmFyIGNvbnRhaW5zTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NvbnRhaW5zTm9kZScpO1xudmFyIGZvY3VzTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2ZvY3VzTm9kZScpO1xudmFyIGdldEFjdGl2ZUVsZW1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRBY3RpdmVFbGVtZW50Jyk7XG5cbmZ1bmN0aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBjb250YWluc05vZGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBub2RlKTtcbn1cblxuLyoqXG4gKiBAUmVhY3RJbnB1dFNlbGVjdGlvbjogUmVhY3QgaW5wdXQgc2VsZWN0aW9uIG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0aW9uLmpzLFxuICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBmaXhlcyAoZG9lc24ndFxuICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBzZWxlY3Rpb25zIGFsbG93ZWQpLlxuICogSW5wdXQgc2VsZWN0aW9uIG1vZHVsZSBmb3IgUmVhY3QuXG4gKi9cbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0ge1xuXG4gIGhhc1NlbGVjdGlvbkNhcGFiaWxpdGllczogZnVuY3Rpb24gKGVsZW0pIHtcbiAgICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBub2RlTmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJyk7XG4gIH0sXG5cbiAgZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxlbSxcbiAgICAgIHNlbGVjdGlvblJhbmdlOiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhmb2N1c2VkRWxlbSkgPyBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbihmb2N1c2VkRWxlbSkgOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICAvKipcbiAgICogQHJlc3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24gaW5mb3JtYXRpb24gd2FzIHBvdGVudGlhbGx5IGxvc3QsXG4gICAqIHJlc3RvcmUgaXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcGVyZm9ybWluZyBvcGVyYXRpb25zIHRoYXQgY291bGQgcmVtb3ZlIGRvbVxuICAgKiBub2RlcyBhbmQgcGxhY2UgdGhlbSBiYWNrIGluLCByZXN1bHRpbmcgaW4gZm9jdXMgYmVpbmcgbG9zdC5cbiAgICovXG4gIHJlc3RvcmVTZWxlY3Rpb246IGZ1bmN0aW9uIChwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uKSB7XG4gICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5mb2N1c2VkRWxlbTtcbiAgICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2VsZWN0aW9uUmFuZ2U7XG4gICAgaWYgKGN1ckZvY3VzZWRFbGVtICE9PSBwcmlvckZvY3VzZWRFbGVtICYmIGlzSW5Eb2N1bWVudChwcmlvckZvY3VzZWRFbGVtKSkge1xuICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7XG4gICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKHByaW9yRm9jdXNlZEVsZW0sIHByaW9yU2VsZWN0aW9uUmFuZ2UpO1xuICAgICAgfVxuICAgICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVsZW0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQGdldFNlbGVjdGlvbjogR2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIGZvY3VzZWQgdGV4dGFyZWEsIGlucHV0IG9yXG4gICAqIGNvbnRlbnRFZGl0YWJsZSBub2RlLlxuICAgKiAtQGlucHV0OiBMb29rIHVwIHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dFxuICAgKiAtQHJldHVybiB7c3RhcnQ6IHNlbGVjdGlvblN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH1cbiAgICovXG4gIGdldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgdmFyIHNlbGVjdGlvbjtcblxuICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7XG4gICAgICAvLyBNb2Rlcm4gYnJvd3NlciB3aXRoIGlucHV0IG9yIHRleHRhcmVhLlxuICAgICAgc2VsZWN0aW9uID0ge1xuICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0aW9uU3RhcnQsXG4gICAgICAgIGVuZDogaW5wdXQuc2VsZWN0aW9uRW5kXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIChpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSkge1xuICAgICAgLy8gSUU4IGlucHV0LlxuICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG4gICAgICAvLyBUaGVyZSBjYW4gb25seSBiZSBvbmUgc2VsZWN0aW9uIHBlciBkb2N1bWVudCBpbiBJRSwgc28gaXQgbXVzdFxuICAgICAgLy8gYmUgaW4gb3VyIGVsZW1lbnQuXG4gICAgICBpZiAocmFuZ2UucGFyZW50RWxlbWVudCgpID09PSBpbnB1dCkge1xuICAgICAgICBzZWxlY3Rpb24gPSB7XG4gICAgICAgICAgc3RhcnQ6IC1yYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5sZW5ndGgpLFxuICAgICAgICAgIGVuZDogLXJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5sZW5ndGgpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRlbnQgZWRpdGFibGUgb3Igb2xkIElFIHRleHRhcmVhLlxuICAgICAgc2VsZWN0aW9uID0gUmVhY3RET01TZWxlY3Rpb24uZ2V0T2Zmc2V0cyhpbnB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdGlvbiB8fCB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgfSxcblxuICAvKipcbiAgICogQHNldFNlbGVjdGlvbjogU2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIHRleHRhcmVhIG9yIGlucHV0IGFuZCBmb2N1c2VzXG4gICAqIHRoZSBpbnB1dC5cbiAgICogLUBpbnB1dCAgICAgU2V0IHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dCBvciB0ZXh0YXJlYVxuICAgKiAtQG9mZnNldHMgICBPYmplY3Qgb2Ygc2FtZSBmb3JtIHRoYXQgaXMgcmV0dXJuZWQgZnJvbSBnZXQqXG4gICAqL1xuICBzZXRTZWxlY3Rpb246IGZ1bmN0aW9uIChpbnB1dCwgb2Zmc2V0cykge1xuICAgIHZhciBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG4gICAgdmFyIGVuZCA9IG9mZnNldHMuZW5kO1xuICAgIGlmICh0eXBlb2YgZW5kID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQpIHtcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XG4gICAgICBpbnB1dC5zZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihlbmQsIGlucHV0LnZhbHVlLmxlbmd0aCk7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgKGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpKSB7XG4gICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2UoKTtcbiAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7XG4gICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG4gICAgICByYW5nZS5zZWxlY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3RET01TZWxlY3Rpb24uc2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEluc3RhbmNlSGFuZGxlc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJvb3RJbmRleCA9IHJlcXVpcmUoJy4vUmVhY3RSb290SW5kZXgnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNFUEFSQVRPUl9MRU5HVEggPSBTRVBBUkFUT1IubGVuZ3RoO1xuXG4vKipcbiAqIE1heGltdW0gZGVwdGggb2YgdHJhdmVyc2FscyBiZWZvcmUgd2UgY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGEgYmFkIElELlxuICovXG52YXIgTUFYX1RSRUVfREVQVEggPSAxMDAwMDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgRE9NIElEIHByZWZpeCB0byB1c2Ugd2hlbiBtb3VudGluZyBSZWFjdCBjb21wb25lbnRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBBIHVuaXF1ZSBpbnRlZ2VyXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFJlYWN0IHJvb3QgSUQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290SURTdHJpbmcoaW5kZXgpIHtcbiAgcmV0dXJuIFNFUEFSQVRPUiArIGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjaGFyYWN0ZXIgaW4gdGhlIHN1cHBsaWVkIElEIGlzIGEgc2VwYXJhdG9yIG9yIHRoZSBlbmQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIEEgUmVhY3QgRE9NIElELlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBzZXBhcmF0b3Igb3IgZW5kIG9mIHRoZSBJRC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGlzQm91bmRhcnkoaWQsIGluZGV4KSB7XG4gIHJldHVybiBpZC5jaGFyQXQoaW5kZXgpID09PSBTRVBBUkFUT1IgfHwgaW5kZXggPT09IGlkLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHN1cHBsaWVkIHN0cmluZyBpcyBhIHZhbGlkIFJlYWN0IERPTSBJRC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQSBSZWFjdCBET00gSUQsIG1heWJlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgUmVhY3QgRE9NIElELlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZElEKGlkKSB7XG4gIHJldHVybiBpZCA9PT0gJycgfHwgaWQuY2hhckF0KDApID09PSBTRVBBUkFUT1IgJiYgaWQuY2hhckF0KGlkLmxlbmd0aCAtIDEpICE9PSBTRVBBUkFUT1I7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBmaXJzdCBJRCBpcyBhbiBhbmNlc3RvciBvZiBvciBlcXVhbCB0byB0aGUgc2Vjb25kIElELlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbmNlc3RvcklEXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzY2VuZGFudElEXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBhbmNlc3RvcklEYCBpcyBhbiBhbmNlc3RvciBvZiBgZGVzY2VuZGFudElEYC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBpc0FuY2VzdG9ySURPZihhbmNlc3RvcklELCBkZXNjZW5kYW50SUQpIHtcbiAgcmV0dXJuIGRlc2NlbmRhbnRJRC5pbmRleE9mKGFuY2VzdG9ySUQpID09PSAwICYmIGlzQm91bmRhcnkoZGVzY2VuZGFudElELCBhbmNlc3RvcklELmxlbmd0aCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IElEIG9mIHRoZSBzdXBwbGllZCBSZWFjdCBET00gSUQsIGBpZGAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIGEgY29tcG9uZW50LlxuICogQHJldHVybiB7c3RyaW5nfSBJRCBvZiB0aGUgcGFyZW50LCBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBnZXRQYXJlbnRJRChpZCkge1xuICByZXR1cm4gaWQgPyBpZC5zdWJzdHIoMCwgaWQubGFzdEluZGV4T2YoU0VQQVJBVE9SKSkgOiAnJztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuZXh0IERPTSBJRCBvbiB0aGUgdHJlZSBwYXRoIGZyb20gdGhlIHN1cHBsaWVkIGBhbmNlc3RvcklEYCB0byB0aGVcbiAqIHN1cHBsaWVkIGBkZXN0aW5hdGlvbklEYC4gSWYgdGhleSBhcmUgZXF1YWwsIHRoZSBJRCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW5jZXN0b3JJRCBJRCBvZiBhbiBhbmNlc3RvciBub2RlIG9mIGBkZXN0aW5hdGlvbklEYC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbklEIElEIG9mIHRoZSBkZXN0aW5hdGlvbiBub2RlLlxuICogQHJldHVybiB7c3RyaW5nfSBOZXh0IElEIG9uIHRoZSBwYXRoIGZyb20gYGFuY2VzdG9ySURgIHRvIGBkZXN0aW5hdGlvbklEYC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldE5leHREZXNjZW5kYW50SUQoYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkge1xuICAhKGlzVmFsaWRJRChhbmNlc3RvcklEKSAmJiBpc1ZhbGlkSUQoZGVzdGluYXRpb25JRCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5leHREZXNjZW5kYW50SUQoJXMsICVzKTogUmVjZWl2ZWQgYW4gaW52YWxpZCBSZWFjdCBET00gSUQuJywgYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAhaXNBbmNlc3RvcklET2YoYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0TmV4dERlc2NlbmRhbnRJRCguLi4pOiBSZWFjdCBoYXMgbWFkZSBhbiBpbnZhbGlkIGFzc3VtcHRpb24gYWJvdXQgJyArICd0aGUgRE9NIGhpZXJhcmNoeS4gRXhwZWN0ZWQgYCVzYCB0byBiZSBhbiBhbmNlc3RvciBvZiBgJXNgLicsIGFuY2VzdG9ySUQsIGRlc3RpbmF0aW9uSUQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgaWYgKGFuY2VzdG9ySUQgPT09IGRlc3RpbmF0aW9uSUQpIHtcbiAgICByZXR1cm4gYW5jZXN0b3JJRDtcbiAgfVxuICAvLyBTa2lwIG92ZXIgdGhlIGFuY2VzdG9yIGFuZCB0aGUgaW1tZWRpYXRlIHNlcGFyYXRvci4gVHJhdmVyc2UgdW50aWwgd2UgaGl0XG4gIC8vIGFub3RoZXIgc2VwYXJhdG9yIG9yIHdlIHJlYWNoIHRoZSBlbmQgb2YgYGRlc3RpbmF0aW9uSURgLlxuICB2YXIgc3RhcnQgPSBhbmNlc3RvcklELmxlbmd0aCArIFNFUEFSQVRPUl9MRU5HVEg7XG4gIHZhciBpO1xuICBmb3IgKGkgPSBzdGFydDsgaSA8IGRlc3RpbmF0aW9uSUQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaXNCb3VuZGFyeShkZXN0aW5hdGlvbklELCBpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXN0aW5hdGlvbklELnN1YnN0cigwLCBpKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBJRCBvZiB0d28gSURzLlxuICpcbiAqIFVzaW5nIHRoaXMgSUQgc2NoZW1lLCB0aGUgbmVhcmVzdCBjb21tb24gYW5jZXN0b3IgSUQgaXMgdGhlIGxvbmdlc3QgY29tbW9uXG4gKiBwcmVmaXggb2YgdGhlIHR3byBJRHMgdGhhdCBpbW1lZGlhdGVseSBwcmVjZWRlZCBhIFwibWFya2VyXCIgaW4gYm90aCBzdHJpbmdzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBvbmVJRFxuICogQHBhcmFtIHtzdHJpbmd9IHR3b0lEXG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIElELCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vbmUuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBnZXRGaXJzdENvbW1vbkFuY2VzdG9ySUQob25lSUQsIHR3b0lEKSB7XG4gIHZhciBtaW5MZW5ndGggPSBNYXRoLm1pbihvbmVJRC5sZW5ndGgsIHR3b0lELmxlbmd0aCk7XG4gIGlmIChtaW5MZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgdmFyIGxhc3RDb21tb25NYXJrZXJJbmRleCA9IDA7XG4gIC8vIFVzZSBgPD1gIHRvIHRyYXZlcnNlIHVudGlsIHRoZSBcIkVPTFwiIG9mIHRoZSBzaG9ydGVyIHN0cmluZy5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbWluTGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaXNCb3VuZGFyeShvbmVJRCwgaSkgJiYgaXNCb3VuZGFyeSh0d29JRCwgaSkpIHtcbiAgICAgIGxhc3RDb21tb25NYXJrZXJJbmRleCA9IGk7XG4gICAgfSBlbHNlIGlmIChvbmVJRC5jaGFyQXQoaSkgIT09IHR3b0lELmNoYXJBdChpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHZhciBsb25nZXN0Q29tbW9uSUQgPSBvbmVJRC5zdWJzdHIoMCwgbGFzdENvbW1vbk1hcmtlckluZGV4KTtcbiAgIWlzVmFsaWRJRChsb25nZXN0Q29tbW9uSUQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldEZpcnN0Q29tbW9uQW5jZXN0b3JJRCglcywgJXMpOiBFeHBlY3RlZCBhIHZhbGlkIFJlYWN0IERPTSBJRDogJXMnLCBvbmVJRCwgdHdvSUQsIGxvbmdlc3RDb21tb25JRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbG9uZ2VzdENvbW1vbklEO1xufVxuXG4vKipcbiAqIFRyYXZlcnNlcyB0aGUgcGFyZW50IHBhdGggYmV0d2VlbiB0d28gSURzIChlaXRoZXIgdXAgb3IgZG93bikuIFRoZSBJRHMgbXVzdFxuICogbm90IGJlIHRoZSBzYW1lLCBhbmQgdGhlcmUgbXVzdCBleGlzdCBhIHBhcmVudCBwYXRoIGJldHdlZW4gdGhlbS4gSWYgdGhlXG4gKiBjYWxsYmFjayByZXR1cm5zIGBmYWxzZWAsIHRyYXZlcnNhbCBpcyBzdG9wcGVkLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gc3RhcnQgSUQgYXQgd2hpY2ggdG8gc3RhcnQgdHJhdmVyc2FsLlxuICogQHBhcmFtIHs/c3RyaW5nfSBzdG9wIElEIGF0IHdoaWNoIHRvIGVuZCB0cmF2ZXJzYWwuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2UgZWFjaCBJRCB3aXRoLlxuICogQHBhcmFtIHsqfSBhcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoLlxuICogQHBhcmFtIHs/Ym9vbGVhbn0gc2tpcEZpcnN0IFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdGhlIGZpcnN0IG5vZGUuXG4gKiBAcGFyYW0gez9ib29sZWFufSBza2lwTGFzdCBXaGV0aGVyIG9yIG5vdCB0byBza2lwIHRoZSBsYXN0IG5vZGUuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZVBhcmVudFBhdGgoc3RhcnQsIHN0b3AsIGNiLCBhcmcsIHNraXBGaXJzdCwgc2tpcExhc3QpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAnJztcbiAgc3RvcCA9IHN0b3AgfHwgJyc7XG4gICEoc3RhcnQgIT09IHN0b3ApID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXZlcnNlUGFyZW50UGF0aCguLi4pOiBDYW5ub3QgdHJhdmVyc2UgZnJvbSBhbmQgdG8gdGhlIHNhbWUgSUQsIGAlc2AuJywgc3RhcnQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgdmFyIHRyYXZlcnNlVXAgPSBpc0FuY2VzdG9ySURPZihzdG9wLCBzdGFydCk7XG4gICEodHJhdmVyc2VVcCB8fCBpc0FuY2VzdG9ySURPZihzdGFydCwgc3RvcCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXZlcnNlUGFyZW50UGF0aCglcywgJXMsIC4uLik6IENhbm5vdCB0cmF2ZXJzZSBmcm9tIHR3byBJRHMgdGhhdCBkbyAnICsgJ25vdCBoYXZlIGEgcGFyZW50IHBhdGguJywgc3RhcnQsIHN0b3ApIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgLy8gVHJhdmVyc2UgZnJvbSBgc3RhcnRgIHRvIGBzdG9wYCBvbmUgZGVwdGggYXQgYSB0aW1lLlxuICB2YXIgZGVwdGggPSAwO1xuICB2YXIgdHJhdmVyc2UgPSB0cmF2ZXJzZVVwID8gZ2V0UGFyZW50SUQgOiBnZXROZXh0RGVzY2VuZGFudElEO1xuICBmb3IgKHZhciBpZCA9IHN0YXJ0OzsgLyogdW50aWwgYnJlYWsgKi9pZCA9IHRyYXZlcnNlKGlkLCBzdG9wKSkge1xuICAgIHZhciByZXQ7XG4gICAgaWYgKCghc2tpcEZpcnN0IHx8IGlkICE9PSBzdGFydCkgJiYgKCFza2lwTGFzdCB8fCBpZCAhPT0gc3RvcCkpIHtcbiAgICAgIHJldCA9IGNiKGlkLCB0cmF2ZXJzZVVwLCBhcmcpO1xuICAgIH1cbiAgICBpZiAocmV0ID09PSBmYWxzZSB8fCBpZCA9PT0gc3RvcCkge1xuICAgICAgLy8gT25seSBicmVhayAvL2FmdGVyLy8gdmlzaXRpbmcgYHN0b3BgLlxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICEoZGVwdGgrKyA8IE1BWF9UUkVFX0RFUFRIKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmF2ZXJzZVBhcmVudFBhdGgoJXMsICVzLCAuLi4pOiBEZXRlY3RlZCBhbiBpbmZpbml0ZSBsb29wIHdoaWxlICcgKyAndHJhdmVyc2luZyB0aGUgUmVhY3QgRE9NIElEIHRyZWUuIFRoaXMgbWF5IGJlIGR1ZSB0byBtYWxmb3JtZWQgSURzOiAlcycsIHN0YXJ0LCBzdG9wLCBpZCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogTWFuYWdlcyB0aGUgSURzIGFzc2lnbmVkIHRvIERPTSByZXByZXNlbnRhdGlvbnMgb2YgUmVhY3QgY29tcG9uZW50cy4gVGhpc1xuICogdXNlcyBhIHNwZWNpZmljIHNjaGVtZSBpbiBvcmRlciB0byB0cmF2ZXJzZSB0aGUgRE9NIGVmZmljaWVudGx5IChlLmcuIGluXG4gKiBvcmRlciB0byBzaW11bGF0ZSBldmVudHMpLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSB7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSZWFjdCByb290IElEXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQSBSZWFjdCByb290IElELlxuICAgKi9cbiAgY3JlYXRlUmVhY3RSb290SUQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0UmVhY3RSb290SURTdHJpbmcoUmVhY3RSb290SW5kZXguY3JlYXRlUmVhY3RSb290SW5kZXgoKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSZWFjdCBJRCBieSBqb2luaW5nIGEgcm9vdCBJRCB3aXRoIGEgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBSb290IElEIG9mIGEgcGFyZW50IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQSBjb21wb25lbnQncyBuYW1lIChhcyBmbGF0dGVuZWQgY2hpbGRyZW4pLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IEEgUmVhY3QgSUQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY3JlYXRlUmVhY3RJRDogZnVuY3Rpb24gKHJvb3RJRCwgbmFtZSkge1xuICAgIHJldHVybiByb290SUQgKyBuYW1lO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBET00gSUQgb2YgdGhlIFJlYWN0IGNvbXBvbmVudCB0aGF0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlIHRoYXRcbiAgICogY29udGFpbnMgdGhlIFJlYWN0IGNvbXBvbmVudCB3aXRoIHRoZSBzdXBwbGllZCBET00gSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBET00gSUQgb2YgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IERPTSBJRCBvZiB0aGUgUmVhY3QgY29tcG9uZW50IHRoYXQgaXMgdGhlIHJvb3QuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICBpZiAoaWQgJiYgaWQuY2hhckF0KDApID09PSBTRVBBUkFUT1IgJiYgaWQubGVuZ3RoID4gMSkge1xuICAgICAgdmFyIGluZGV4ID0gaWQuaW5kZXhPZihTRVBBUkFUT1IsIDEpO1xuICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpZC5zdWJzdHIoMCwgaW5kZXgpIDogaWQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRoYXRcbiAgICogc2hvdWxkIHdvdWxkIHJlY2VpdmUgYSBgbW91c2VFbnRlcmAgb3IgYG1vdXNlTGVhdmVgIGV2ZW50LlxuICAgKlxuICAgKiBOT1RFOiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlXG4gICAqIG5vdGhpbmcgXCJlbnRlcmVkXCIgb3IgXCJsZWZ0XCIgdGhhdCBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGVhdmVJRCBJRCBiZWluZyBsZWZ0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW50ZXJJRCBJRCBiZWluZyBlbnRlcmVkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2Ugb24gZWFjaCBlbnRlcmVkL2xlZnQgSUQuXG4gICAqIEBwYXJhbSB7Kn0gdXBBcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIG9uIGxlZnQgSURzLlxuICAgKiBAcGFyYW0geyp9IGRvd25BcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIG9uIGVudGVyZWQgSURzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rpb24gKGxlYXZlSUQsIGVudGVySUQsIGNiLCB1cEFyZywgZG93bkFyZykge1xuICAgIHZhciBhbmNlc3RvcklEID0gZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklEKGxlYXZlSUQsIGVudGVySUQpO1xuICAgIGlmIChhbmNlc3RvcklEICE9PSBsZWF2ZUlEKSB7XG4gICAgICB0cmF2ZXJzZVBhcmVudFBhdGgobGVhdmVJRCwgYW5jZXN0b3JJRCwgY2IsIHVwQXJnLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChhbmNlc3RvcklEICE9PSBlbnRlcklEKSB7XG4gICAgICB0cmF2ZXJzZVBhcmVudFBhdGgoYW5jZXN0b3JJRCwgZW50ZXJJRCwgY2IsIGRvd25BcmcsIHRydWUsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNpbXVsYXRlcyB0aGUgdHJhdmVyc2FsIG9mIGEgdHdvLXBoYXNlLCBjYXB0dXJlL2J1YmJsZSBldmVudCBkaXNwYXRjaC5cbiAgICpcbiAgICogTk9URTogVGhpcyB0cmF2ZXJzYWwgaGFwcGVucyBvbiBJRHMgd2l0aG91dCB0b3VjaGluZyB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0SUQgSUQgb2YgdGhlIHRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gYXJnIEFyZ3VtZW50IHRvIGludm9rZSB0aGUgY2FsbGJhY2sgd2l0aC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmF2ZXJzZVR3b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0SUQsIGNiLCBhcmcpIHtcbiAgICBpZiAodGFyZ2V0SUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNiLCBhcmcsIHRydWUsIGZhbHNlKTtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCh0YXJnZXRJRCwgJycsIGNiLCBhcmcsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhbWUgYXMgYHRyYXZlcnNlVHdvUGhhc2VgIGJ1dCBza2lwcyB0aGUgYHRhcmdldElEYC5cbiAgICovXG4gIHRyYXZlcnNlVHdvUGhhc2VTa2lwVGFyZ2V0OiBmdW5jdGlvbiAodGFyZ2V0SUQsIGNiLCBhcmcpIHtcbiAgICBpZiAodGFyZ2V0SUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNiLCBhcmcsIHRydWUsIHRydWUpO1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKHRhcmdldElELCAnJywgY2IsIGFyZywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZSBhIG5vZGUgSUQsIGNhbGxpbmcgdGhlIHN1cHBsaWVkIGBjYmAgZm9yIGVhY2ggYW5jZXN0b3IgSUQuIEZvclxuICAgKiBleGFtcGxlLCBwYXNzaW5nIGAuMC4kcm93LTAuMWAgd291bGQgcmVzdWx0IGluIGBjYmAgZ2V0dGluZyBjYWxsZWRcbiAgICogd2l0aCBgLjBgLCBgLjAuJHJvdy0wYCwgYW5kIGAuMC4kcm93LTAuMWAuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgdHJhdmVyc2FsIGhhcHBlbnMgb24gSURzIHdpdGhvdXQgdG91Y2hpbmcgdGhlIERPTS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldElEIElEIG9mIHRoZSB0YXJnZXQgbm9kZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgQ2FsbGJhY2sgdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IGFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGguXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdHJhdmVyc2VBbmNlc3RvcnM6IGZ1bmN0aW9uICh0YXJnZXRJRCwgY2IsIGFyZykge1xuICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNiLCBhcmcsIHRydWUsIGZhbHNlKTtcbiAgfSxcblxuICBnZXRGaXJzdENvbW1vbkFuY2VzdG9ySUQ6IGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRCxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2dldE5leHREZXNjZW5kYW50SUQ6IGdldE5leHREZXNjZW5kYW50SUQsXG5cbiAgaXNBbmNlc3RvcklET2Y6IGlzQW5jZXN0b3JJRE9mLFxuXG4gIFNFUEFSQVRPUjogU0VQQVJBVE9SXG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZUhhbmRsZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWelhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkpsWVdOMFVtOXZkRWx1WkdWNElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGSnZiM1JKYm1SbGVDY3BPMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiblpoY2lCVFJWQkJVa0ZVVDFJZ1BTQW5MaWM3WEc1MllYSWdVMFZRUVZKQlZFOVNYMHhGVGtkVVNDQTlJRk5GVUVGU1FWUlBVaTVzWlc1bmRHZzdYRzVjYmk4cUtseHVJQ29nVFdGNGFXMTFiU0JrWlhCMGFDQnZaaUIwY21GMlpYSnpZV3h6SUdKbFptOXlaU0IzWlNCamIyNXphV1JsY2lCMGFHVWdjRzl6YzJsaWFXeHBkSGtnYjJZZ1lTQmlZV1FnU1VRdVhHNGdLaTljYm5aaGNpQk5RVmhmVkZKRlJWOUVSVkJVU0NBOUlERXdNREF3TzF4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQkVUMDBnU1VRZ2NISmxabWw0SUhSdklIVnpaU0IzYUdWdUlHMXZkVzUwYVc1bklGSmxZV04wSUdOdmJYQnZibVZ1ZEhNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRJRUVnZFc1cGNYVmxJR2x1ZEdWblpYSmNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnVW1WaFkzUWdjbTl2ZENCSlJDNWNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSU1pXRmpkRkp2YjNSSlJGTjBjbWx1WnlocGJtUmxlQ2tnZTF4dUlDQnlaWFIxY200Z1UwVlFRVkpCVkU5U0lDc2dhVzVrWlhndWRHOVRkSEpwYm1jb016WXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTm9aV05yY3lCcFppQmhJR05vWVhKaFkzUmxjaUJwYmlCMGFHVWdjM1Z3Y0d4cFpXUWdTVVFnYVhNZ1lTQnpaWEJoY21GMGIzSWdiM0lnZEdobElHVnVaQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnUVNCU1pXRmpkQ0JFVDAwZ1NVUXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYVc1a1pYZ2dTVzVrWlhnZ2IyWWdkR2hsSUdOb1lYSmhZM1JsY2lCMGJ5QmphR1ZqYXk1Y2JpQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWWdkR2hsSUdOb1lYSmhZM1JsY2lCcGN5QmhJSE5sY0dGeVlYUnZjaUJ2Y2lCbGJtUWdiMllnZEdobElFbEVMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVhOQ2IzVnVaR0Z5ZVNocFpDd2dhVzVrWlhncElIdGNiaUFnY21WMGRYSnVJR2xrTG1Ob1lYSkJkQ2hwYm1SbGVDa2dQVDA5SUZORlVFRlNRVlJQVWlCOGZDQnBibVJsZUNBOVBUMGdhV1F1YkdWdVozUm9PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTm9aV05yY3lCcFppQjBhR1VnYzNWd2NHeHBaV1FnYzNSeWFXNW5JR2x6SUdFZ2RtRnNhV1FnVW1WaFkzUWdSRTlOSUVsRUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQkJJRkpsWVdOMElFUlBUU0JKUkN3Z2JXRjVZbVV1WEc0Z0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlIUm9aU0J6ZEhKcGJtY2dhWE1nWVNCMllXeHBaQ0JTWldGamRDQkVUMDBnU1VRdVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjMVpoYkdsa1NVUW9hV1FwSUh0Y2JpQWdjbVYwZFhKdUlHbGtJRDA5UFNBbkp5QjhmQ0JwWkM1amFHRnlRWFFvTUNrZ1BUMDlJRk5GVUVGU1FWUlBVaUFtSmlCcFpDNWphR0Z5UVhRb2FXUXViR1Z1WjNSb0lDMGdNU2tnSVQwOUlGTkZVRUZTUVZSUFVqdGNibjFjYmx4dUx5b3FYRzRnS2lCRGFHVmphM01nYVdZZ2RHaGxJR1pwY25OMElFbEVJR2x6SUdGdUlHRnVZMlZ6ZEc5eUlHOW1JRzl5SUdWeGRXRnNJSFJ2SUhSb1pTQnpaV052Ym1RZ1NVUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHRnVZMlZ6ZEc5eVNVUmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JrWlhOalpXNWtZVzUwU1VSY2JpQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWWdZR0Z1WTJWemRHOXlTVVJnSUdseklHRnVJR0Z1WTJWemRHOXlJRzltSUdCa1pYTmpaVzVrWVc1MFNVUmdMbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm1aMWJtTjBhVzl1SUdselFXNWpaWE4wYjNKSlJFOW1LR0Z1WTJWemRHOXlTVVFzSUdSbGMyTmxibVJoYm5SSlJDa2dlMXh1SUNCeVpYUjFjbTRnWkdWelkyVnVaR0Z1ZEVsRUxtbHVaR1Y0VDJZb1lXNWpaWE4wYjNKSlJDa2dQVDA5SURBZ0ppWWdhWE5DYjNWdVpHRnllU2hrWlhOalpXNWtZVzUwU1VRc0lHRnVZMlZ6ZEc5eVNVUXViR1Z1WjNSb0tUdGNibjFjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCd1lYSmxiblFnU1VRZ2IyWWdkR2hsSUhOMWNIQnNhV1ZrSUZKbFlXTjBJRVJQVFNCSlJDd2dZR2xrWUM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1NVUWdiMllnWVNCamIyMXdiMjVsYm5RdVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRWxFSUc5bUlIUm9aU0J3WVhKbGJuUXNJRzl5SUdGdUlHVnRjSFI1SUhOMGNtbHVaeTVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdkbGRGQmhjbVZ1ZEVsRUtHbGtLU0I3WEc0Z0lISmxkSFZ5YmlCcFpDQS9JR2xrTG5OMVluTjBjaWd3TENCcFpDNXNZWE4wU1c1a1pYaFBaaWhUUlZCQlVrRlVUMUlwS1NBNklDY25PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFZGxkSE1nZEdobElHNWxlSFFnUkU5TklFbEVJRzl1SUhSb1pTQjBjbVZsSUhCaGRHZ2dabkp2YlNCMGFHVWdjM1Z3Y0d4cFpXUWdZR0Z1WTJWemRHOXlTVVJnSUhSdklIUm9aVnh1SUNvZ2MzVndjR3hwWldRZ1lHUmxjM1JwYm1GMGFXOXVTVVJnTGlCSlppQjBhR1Y1SUdGeVpTQmxjWFZoYkN3Z2RHaGxJRWxFSUdseklISmxkSFZ5Ym1Wa0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCaGJtTmxjM1J2Y2tsRUlFbEVJRzltSUdGdUlHRnVZMlZ6ZEc5eUlHNXZaR1VnYjJZZ1lHUmxjM1JwYm1GMGFXOXVTVVJnTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHUmxjM1JwYm1GMGFXOXVTVVFnU1VRZ2IyWWdkR2hsSUdSbGMzUnBibUYwYVc5dUlHNXZaR1V1WEc0Z0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFNWxlSFFnU1VRZ2IyNGdkR2hsSUhCaGRHZ2dabkp2YlNCZ1lXNWpaWE4wYjNKSlJHQWdkRzhnWUdSbGMzUnBibUYwYVc5dVNVUmdMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWjJWMFRtVjRkRVJsYzJObGJtUmhiblJKUkNoaGJtTmxjM1J2Y2tsRUxDQmtaWE4wYVc1aGRHbHZia2xFS1NCN1hHNGdJQ0VvYVhOV1lXeHBaRWxFS0dGdVkyVnpkRzl5U1VRcElDWW1JR2x6Vm1Gc2FXUkpSQ2hrWlhOMGFXNWhkR2x2YmtsRUtTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbloyVjBUbVY0ZEVSbGMyTmxibVJoYm5SSlJDZ2xjeXdnSlhNcE9pQlNaV05sYVhabFpDQmhiaUJwYm5aaGJHbGtJRkpsWVdOMElFUlBUU0JKUkM0bkxDQmhibU5sYzNSdmNrbEVMQ0JrWlhOMGFXNWhkR2x2YmtsRUtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDRnBjMEZ1WTJWemRHOXlTVVJQWmloaGJtTmxjM1J2Y2tsRUxDQmtaWE4wYVc1aGRHbHZia2xFS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RuWlhST1pYaDBSR1Z6WTJWdVpHRnVkRWxFS0M0dUxpazZJRkpsWVdOMElHaGhjeUJ0WVdSbElHRnVJR2x1ZG1Gc2FXUWdZWE56ZFcxd2RHbHZiaUJoWW05MWRDQW5JQ3NnSjNSb1pTQkVUMDBnYUdsbGNtRnlZMmg1TGlCRmVIQmxZM1JsWkNCZ0pYTmdJSFJ2SUdKbElHRnVJR0Z1WTJWemRHOXlJRzltSUdBbGMyQXVKeXdnWVc1alpYTjBiM0pKUkN3Z1pHVnpkR2x1WVhScGIyNUpSQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0JwWmlBb1lXNWpaWE4wYjNKSlJDQTlQVDBnWkdWemRHbHVZWFJwYjI1SlJDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCaGJtTmxjM1J2Y2tsRU8xeHVJQ0I5WEc0Z0lDOHZJRk5yYVhBZ2IzWmxjaUIwYUdVZ1lXNWpaWE4wYjNJZ1lXNWtJSFJvWlNCcGJXMWxaR2xoZEdVZ2MyVndZWEpoZEc5eUxpQlVjbUYyWlhKelpTQjFiblJwYkNCM1pTQm9hWFJjYmlBZ0x5OGdZVzV2ZEdobGNpQnpaWEJoY21GMGIzSWdiM0lnZDJVZ2NtVmhZMmdnZEdobElHVnVaQ0J2WmlCZ1pHVnpkR2x1WVhScGIyNUpSR0F1WEc0Z0lIWmhjaUJ6ZEdGeWRDQTlJR0Z1WTJWemRHOXlTVVF1YkdWdVozUm9JQ3NnVTBWUVFWSkJWRTlTWDB4RlRrZFVTRHRjYmlBZ2RtRnlJR2s3WEc0Z0lHWnZjaUFvYVNBOUlITjBZWEowT3lCcElEd2daR1Z6ZEdsdVlYUnBiMjVKUkM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHbG1JQ2hwYzBKdmRXNWtZWEo1S0dSbGMzUnBibUYwYVc5dVNVUXNJR2twS1NCN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHUmxjM1JwYm1GMGFXOXVTVVF1YzNWaWMzUnlLREFzSUdrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVkbGRITWdkR2hsSUc1bFlYSmxjM1FnWTI5dGJXOXVJR0Z1WTJWemRHOXlJRWxFSUc5bUlIUjNieUJKUkhNdVhHNGdLbHh1SUNvZ1ZYTnBibWNnZEdocGN5QkpSQ0J6WTJobGJXVXNJSFJvWlNCdVpXRnlaWE4wSUdOdmJXMXZiaUJoYm1ObGMzUnZjaUJKUkNCcGN5QjBhR1VnYkc5dVoyVnpkQ0JqYjIxdGIyNWNiaUFxSUhCeVpXWnBlQ0J2WmlCMGFHVWdkSGR2SUVsRWN5QjBhR0YwSUdsdGJXVmthV0YwWld4NUlIQnlaV05sWkdWa0lHRWdYQ0p0WVhKclpYSmNJaUJwYmlCaWIzUm9JSE4wY21sdVozTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOXVaVWxFWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RIZHZTVVJjYmlBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ1RtVmhjbVZ6ZENCamIyMXRiMjRnWVc1alpYTjBiM0lnU1VRc0lHOXlJSFJvWlNCbGJYQjBlU0J6ZEhKcGJtY2dhV1lnYm05dVpTNWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEVacGNuTjBRMjl0Ylc5dVFXNWpaWE4wYjNKSlJDaHZibVZKUkN3Z2RIZHZTVVFwSUh0Y2JpQWdkbUZ5SUcxcGJreGxibWQwYUNBOUlFMWhkR2d1YldsdUtHOXVaVWxFTG14bGJtZDBhQ3dnZEhkdlNVUXViR1Z1WjNSb0tUdGNiaUFnYVdZZ0tHMXBia3hsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUhKbGRIVnliaUFuSnp0Y2JpQWdmVnh1SUNCMllYSWdiR0Z6ZEVOdmJXMXZiazFoY210bGNrbHVaR1Y0SUQwZ01EdGNiaUFnTHk4Z1ZYTmxJR0E4UFdBZ2RHOGdkSEpoZG1WeWMyVWdkVzUwYVd3Z2RHaGxJRndpUlU5TVhDSWdiMllnZEdobElITm9iM0owWlhJZ2MzUnlhVzVuTGx4dUlDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThQU0J0YVc1TVpXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHbG1JQ2hwYzBKdmRXNWtZWEo1S0c5dVpVbEVMQ0JwS1NBbUppQnBjMEp2ZFc1a1lYSjVLSFIzYjBsRUxDQnBLU2tnZTF4dUlDQWdJQ0FnYkdGemRFTnZiVzF2YmsxaGNtdGxja2x1WkdWNElEMGdhVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzl1WlVsRUxtTm9ZWEpCZENocEtTQWhQVDBnZEhkdlNVUXVZMmhoY2tGMEtHa3BLU0I3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2RtRnlJR3h2Ym1kbGMzUkRiMjF0YjI1SlJDQTlJRzl1WlVsRUxuTjFZbk4wY2lnd0xDQnNZWE4wUTI5dGJXOXVUV0Z5YTJWeVNXNWtaWGdwTzF4dUlDQWhhWE5XWVd4cFpFbEVLR3h2Ym1kbGMzUkRiMjF0YjI1SlJDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbloyVjBSbWx5YzNSRGIyMXRiMjVCYm1ObGMzUnZja2xFS0NWekxDQWxjeWs2SUVWNGNHVmpkR1ZrSUdFZ2RtRnNhV1FnVW1WaFkzUWdSRTlOSUVsRU9pQWxjeWNzSUc5dVpVbEVMQ0IwZDI5SlJDd2diRzl1WjJWemRFTnZiVzF2YmtsRUtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lISmxkSFZ5YmlCc2IyNW5aWE4wUTI5dGJXOXVTVVE3WEc1OVhHNWNiaThxS2x4dUlDb2dWSEpoZG1WeWMyVnpJSFJvWlNCd1lYSmxiblFnY0dGMGFDQmlaWFIzWldWdUlIUjNieUJKUkhNZ0tHVnBkR2hsY2lCMWNDQnZjaUJrYjNkdUtTNGdWR2hsSUVsRWN5QnRkWE4wWEc0Z0tpQnViM1FnWW1VZ2RHaGxJSE5oYldVc0lHRnVaQ0IwYUdWeVpTQnRkWE4wSUdWNGFYTjBJR0VnY0dGeVpXNTBJSEJoZEdnZ1ltVjBkMlZsYmlCMGFHVnRMaUJKWmlCMGFHVmNiaUFxSUdOaGJHeGlZV05ySUhKbGRIVnlibk1nWUdaaGJITmxZQ3dnZEhKaGRtVnljMkZzSUdseklITjBiM0J3WldRdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhzL2MzUnlhVzVuZlNCemRHRnlkQ0JKUkNCaGRDQjNhR2xqYUNCMGJ5QnpkR0Z5ZENCMGNtRjJaWEp6WVd3dVhHNGdLaUJBY0dGeVlXMGdlejl6ZEhKcGJtZDlJSE4wYjNBZ1NVUWdZWFFnZDJocFkyZ2dkRzhnWlc1a0lIUnlZWFpsY25OaGJDNWNiaUFxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUdOaUlFTmhiR3hpWVdOcklIUnZJR2x1ZG05clpTQmxZV05vSUVsRUlIZHBkR2d1WEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJR0Z5WnlCQmNtZDFiV1Z1ZENCMGJ5QnBiblp2YTJVZ2RHaGxJR05oYkd4aVlXTnJJSGRwZEdndVhHNGdLaUJBY0dGeVlXMGdlejlpYjI5c1pXRnVmU0J6YTJsd1JtbHljM1FnVjJobGRHaGxjaUJ2Y2lCdWIzUWdkRzhnYzJ0cGNDQjBhR1VnWm1seWMzUWdibTlrWlM1Y2JpQXFJRUJ3WVhKaGJTQjdQMkp2YjJ4bFlXNTlJSE5yYVhCTVlYTjBJRmRvWlhSb1pYSWdiM0lnYm05MElIUnZJSE5yYVhBZ2RHaGxJR3hoYzNRZ2JtOWtaUzVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUhSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNoemRHRnlkQ3dnYzNSdmNDd2dZMklzSUdGeVp5d2djMnRwY0VacGNuTjBMQ0J6YTJsd1RHRnpkQ2tnZTF4dUlDQnpkR0Z5ZENBOUlITjBZWEowSUh4OElDY25PMXh1SUNCemRHOXdJRDBnYzNSdmNDQjhmQ0FuSnp0Y2JpQWdJU2h6ZEdGeWRDQWhQVDBnYzNSdmNDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tDNHVMaWs2SUVOaGJtNXZkQ0IwY21GMlpYSnpaU0JtY205dElHRnVaQ0IwYnlCMGFHVWdjMkZ0WlNCSlJDd2dZQ1Z6WUM0bkxDQnpkR0Z5ZENrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCMllYSWdkSEpoZG1WeWMyVlZjQ0E5SUdselFXNWpaWE4wYjNKSlJFOW1LSE4wYjNBc0lITjBZWEowS1R0Y2JpQWdJU2gwY21GMlpYSnpaVlZ3SUh4OElHbHpRVzVqWlhOMGIzSkpSRTltS0hOMFlYSjBMQ0J6ZEc5d0tTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tDVnpMQ0FsY3l3Z0xpNHVLVG9nUTJGdWJtOTBJSFJ5WVhabGNuTmxJR1p5YjIwZ2RIZHZJRWxFY3lCMGFHRjBJR1J2SUNjZ0t5QW5ibTkwSUdoaGRtVWdZU0J3WVhKbGJuUWdjR0YwYUM0bkxDQnpkR0Z5ZEN3Z2MzUnZjQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0F2THlCVWNtRjJaWEp6WlNCbWNtOXRJR0J6ZEdGeWRHQWdkRzhnWUhOMGIzQmdJRzl1WlNCa1pYQjBhQ0JoZENCaElIUnBiV1V1WEc0Z0lIWmhjaUJrWlhCMGFDQTlJREE3WEc0Z0lIWmhjaUIwY21GMlpYSnpaU0E5SUhSeVlYWmxjbk5sVlhBZ1B5Qm5aWFJRWVhKbGJuUkpSQ0E2SUdkbGRFNWxlSFJFWlhOalpXNWtZVzUwU1VRN1hHNGdJR1p2Y2lBb2RtRnlJR2xrSUQwZ2MzUmhjblE3T3lBdktpQjFiblJwYkNCaWNtVmhheUFxTDJsa0lEMGdkSEpoZG1WeWMyVW9hV1FzSUhOMGIzQXBLU0I3WEc0Z0lDQWdkbUZ5SUhKbGREdGNiaUFnSUNCcFppQW9LQ0Z6YTJsd1JtbHljM1FnZkh3Z2FXUWdJVDA5SUhOMFlYSjBLU0FtSmlBb0lYTnJhWEJNWVhOMElIeDhJR2xrSUNFOVBTQnpkRzl3S1NrZ2UxeHVJQ0FnSUNBZ2NtVjBJRDBnWTJJb2FXUXNJSFJ5WVhabGNuTmxWWEFzSUdGeVp5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHlaWFFnUFQwOUlHWmhiSE5sSUh4OElHbGtJRDA5UFNCemRHOXdLU0I3WEc0Z0lDQWdJQ0F2THlCUGJteDVJR0p5WldGcklDOHZZV1owWlhJdkx5QjJhWE5wZEdsdVp5QmdjM1J2Y0dBdVhHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzRnSUNBZ0lTaGtaWEIwYUNzcklEd2dUVUZZWDFSU1JVVmZSRVZRVkVncElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNnbGN5d2dKWE1zSUM0dUxpazZJRVJsZEdWamRHVmtJR0Z1SUdsdVptbHVhWFJsSUd4dmIzQWdkMmhwYkdVZ0p5QXJJQ2QwY21GMlpYSnphVzVuSUhSb1pTQlNaV0ZqZENCRVQwMGdTVVFnZEhKbFpTNGdWR2hwY3lCdFlYa2dZbVVnWkhWbElIUnZJRzFoYkdadmNtMWxaQ0JKUkhNNklDVnpKeXdnYzNSaGNuUXNJSE4wYjNBc0lHbGtLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQk5ZVzVoWjJWeklIUm9aU0JKUkhNZ1lYTnphV2R1WldRZ2RHOGdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVjeUJ2WmlCU1pXRmpkQ0JqYjIxd2IyNWxiblJ6TGlCVWFHbHpYRzRnS2lCMWMyVnpJR0VnYzNCbFkybG1hV01nYzJOb1pXMWxJR2x1SUc5eVpHVnlJSFJ2SUhSeVlYWmxjbk5sSUhSb1pTQkVUMDBnWldabWFXTnBaVzUwYkhrZ0tHVXVaeTRnYVc1Y2JpQXFJRzl5WkdWeUlIUnZJSE5wYlhWc1lYUmxJR1YyWlc1MGN5a3VYRzRnS2x4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3lBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EyOXVjM1J5ZFdOMGN5QmhJRkpsWVdOMElISnZiM1FnU1VSY2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JCSUZKbFlXTjBJSEp2YjNRZ1NVUXVYRzRnSUNBcUwxeHVJQ0JqY21WaGRHVlNaV0ZqZEZKdmIzUkpSRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJuWlhSU1pXRmpkRkp2YjNSSlJGTjBjbWx1WnloU1pXRmpkRkp2YjNSSmJtUmxlQzVqY21WaGRHVlNaV0ZqZEZKdmIzUkpibVJsZUNncEtUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5dWMzUnlkV04wY3lCaElGSmxZV04wSUVsRUlHSjVJR3B2YVc1cGJtY2dZU0J5YjI5MElFbEVJSGRwZEdnZ1lTQnVZVzFsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NtOXZkRWxFSUZKdmIzUWdTVVFnYjJZZ1lTQndZWEpsYm5RZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYm1GdFpTQkJJR052YlhCdmJtVnVkQ2R6SUc1aGJXVWdLR0Z6SUdac1lYUjBaVzVsWkNCamFHbHNaSEpsYmlrdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnUVNCU1pXRmpkQ0JKUkM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCamNtVmhkR1ZTWldGamRFbEVPaUJtZFc1amRHbHZiaUFvY205dmRFbEVMQ0J1WVcxbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhKdmIzUkpSQ0FySUc1aGJXVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRITWdkR2hsSUVSUFRTQkpSQ0J2WmlCMGFHVWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElIUm9ZWFFnYVhNZ2RHaGxJSEp2YjNRZ2IyWWdkR2hsSUhSeVpXVWdkR2hoZEZ4dUlDQWdLaUJqYjI1MFlXbHVjeUIwYUdVZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUhkcGRHZ2dkR2hsSUhOMWNIQnNhV1ZrSUVSUFRTQkpSQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdsa0lFUlBUU0JKUkNCdlppQmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AzTjBjbWx1WjMwZ1JFOU5JRWxFSUc5bUlIUm9aU0JTWldGamRDQmpiMjF3YjI1bGJuUWdkR2hoZENCcGN5QjBhR1VnY205dmRDNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQm5aWFJTWldGamRGSnZiM1JKUkVaeWIyMU9iMlJsU1VRNklHWjFibU4wYVc5dUlDaHBaQ2tnZTF4dUlDQWdJR2xtSUNocFpDQW1KaUJwWkM1amFHRnlRWFFvTUNrZ1BUMDlJRk5GVUVGU1FWUlBVaUFtSmlCcFpDNXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2FXNWtaWGdnUFNCcFpDNXBibVJsZUU5bUtGTkZVRUZTUVZSUFVpd2dNU2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzVrWlhnZ1BpQXRNU0EvSUdsa0xuTjFZbk4wY2lnd0xDQnBibVJsZUNrZ09pQnBaRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSeVlYWmxjbk5sY3lCMGFHVWdTVVFnYUdsbGNtRnlZMmg1SUdGdVpDQnBiblp2YTJWeklIUm9aU0J6ZFhCd2JHbGxaQ0JnWTJKZ0lHOXVJR0Z1ZVNCSlJITWdkR2hoZEZ4dUlDQWdLaUJ6YUc5MWJHUWdkMjkxYkdRZ2NtVmpaV2wyWlNCaElHQnRiM1Z6WlVWdWRHVnlZQ0J2Y2lCZ2JXOTFjMlZNWldGMlpXQWdaWFpsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRTVQVkVVNklFUnZaWE1nYm05MElHbHVkbTlyWlNCMGFHVWdZMkZzYkdKaFkyc2diMjRnZEdobElHNWxZWEpsYzNRZ1kyOXRiVzl1SUdGdVkyVnpkRzl5SUdKbFkyRjFjMlZjYmlBZ0lDb2dibTkwYUdsdVp5QmNJbVZ1ZEdWeVpXUmNJaUJ2Y2lCY0lteGxablJjSWlCMGFHRjBJR1ZzWlcxbGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JzWldGMlpVbEVJRWxFSUdKbGFXNW5JR3hsWm5RdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JsYm5SbGNrbEVJRWxFSUdKbGFXNW5JR1Z1ZEdWeVpXUXVYRzRnSUNBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlHTmlJRU5oYkd4aVlXTnJJSFJ2SUdsdWRtOXJaU0J2YmlCbFlXTm9JR1Z1ZEdWeVpXUXZiR1ZtZENCSlJDNWNiaUFnSUNvZ1FIQmhjbUZ0SUhzcWZTQjFjRUZ5WnlCQmNtZDFiV1Z1ZENCMGJ5QnBiblp2YTJVZ2RHaGxJR05oYkd4aVlXTnJJSGRwZEdnZ2IyNGdiR1ZtZENCSlJITXVYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdaRzkzYmtGeVp5QkJjbWQxYldWdWRDQjBieUJwYm5admEyVWdkR2hsSUdOaGJHeGlZV05ySUhkcGRHZ2diMjRnWlc1MFpYSmxaQ0JKUkhNdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2RISmhkbVZ5YzJWRmJuUmxja3hsWVhabE9pQm1kVzVqZEdsdmJpQW9iR1ZoZG1WSlJDd2daVzUwWlhKSlJDd2dZMklzSUhWd1FYSm5MQ0JrYjNkdVFYSm5LU0I3WEc0Z0lDQWdkbUZ5SUdGdVkyVnpkRzl5U1VRZ1BTQm5aWFJHYVhKemRFTnZiVzF2YmtGdVkyVnpkRzl5U1VRb2JHVmhkbVZKUkN3Z1pXNTBaWEpKUkNrN1hHNGdJQ0FnYVdZZ0tHRnVZMlZ6ZEc5eVNVUWdJVDA5SUd4bFlYWmxTVVFwSUh0Y2JpQWdJQ0FnSUhSeVlYWmxjbk5sVUdGeVpXNTBVR0YwYUNoc1pXRjJaVWxFTENCaGJtTmxjM1J2Y2tsRUxDQmpZaXdnZFhCQmNtY3NJR1poYkhObExDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dGdVkyVnpkRzl5U1VRZ0lUMDlJR1Z1ZEdWeVNVUXBJSHRjYmlBZ0lDQWdJSFJ5WVhabGNuTmxVR0Z5Wlc1MFVHRjBhQ2hoYm1ObGMzUnZja2xFTENCbGJuUmxja2xFTENCallpd2daRzkzYmtGeVp5d2dkSEoxWlN3Z1ptRnNjMlVwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1UybHRkV3hoZEdWeklIUm9aU0IwY21GMlpYSnpZV3dnYjJZZ1lTQjBkMjh0Y0doaGMyVXNJR05oY0hSMWNtVXZZblZpWW14bElHVjJaVzUwSUdScGMzQmhkR05vTGx4dUlDQWdLbHh1SUNBZ0tpQk9UMVJGT2lCVWFHbHpJSFJ5WVhabGNuTmhiQ0JvWVhCd1pXNXpJRzl1SUVsRWN5QjNhWFJvYjNWMElIUnZkV05vYVc1bklIUm9aU0JFVDAwdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBZWEpuWlhSSlJDQkpSQ0J2WmlCMGFHVWdkR0Z5WjJWMElHNXZaR1V1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJR05pSUVOaGJHeGlZV05ySUhSdklHbHVkbTlyWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHNxZlNCaGNtY2dRWEpuZFcxbGJuUWdkRzhnYVc1MmIydGxJSFJvWlNCallXeHNZbUZqYXlCM2FYUm9MbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJSFJ5WVhabGNuTmxWSGR2VUdoaGMyVTZJR1oxYm1OMGFXOXVJQ2gwWVhKblpYUkpSQ3dnWTJJc0lHRnlaeWtnZTF4dUlDQWdJR2xtSUNoMFlYSm5aWFJKUkNrZ2UxeHVJQ0FnSUNBZ2RISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tDY25MQ0IwWVhKblpYUkpSQ3dnWTJJc0lHRnlaeXdnZEhKMVpTd2dabUZzYzJVcE8xeHVJQ0FnSUNBZ2RISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tIUmhjbWRsZEVsRUxDQW5KeXdnWTJJc0lHRnlaeXdnWm1Gc2MyVXNJSFJ5ZFdVcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMkZ0WlNCaGN5QmdkSEpoZG1WeWMyVlVkMjlRYUdGelpXQWdZblYwSUhOcmFYQnpJSFJvWlNCZ2RHRnlaMlYwU1VSZ0xseHVJQ0FnS2k5Y2JpQWdkSEpoZG1WeWMyVlVkMjlRYUdGelpWTnJhWEJVWVhKblpYUTZJR1oxYm1OMGFXOXVJQ2gwWVhKblpYUkpSQ3dnWTJJc0lHRnlaeWtnZTF4dUlDQWdJR2xtSUNoMFlYSm5aWFJKUkNrZ2UxeHVJQ0FnSUNBZ2RISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tDY25MQ0IwWVhKblpYUkpSQ3dnWTJJc0lHRnlaeXdnZEhKMVpTd2dkSEoxWlNrN1hHNGdJQ0FnSUNCMGNtRjJaWEp6WlZCaGNtVnVkRkJoZEdnb2RHRnlaMlYwU1VRc0lDY25MQ0JqWWl3Z1lYSm5MQ0IwY25WbExDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUnlZWFpsY25ObElHRWdibTlrWlNCSlJDd2dZMkZzYkdsdVp5QjBhR1VnYzNWd2NHeHBaV1FnWUdOaVlDQm1iM0lnWldGamFDQmhibU5sYzNSdmNpQkpSQzRnUm05eVhHNGdJQ0FxSUdWNFlXMXdiR1VzSUhCaGMzTnBibWNnWUM0d0xpUnliM2N0TUM0eFlDQjNiM1ZzWkNCeVpYTjFiSFFnYVc0Z1lHTmlZQ0JuWlhSMGFXNW5JR05oYkd4bFpGeHVJQ0FnS2lCM2FYUm9JR0F1TUdBc0lHQXVNQzRrY205M0xUQmdMQ0JoYm1RZ1lDNHdMaVJ5YjNjdE1DNHhZQzVjYmlBZ0lDcGNiaUFnSUNvZ1RrOVVSVG9nVkdocGN5QjBjbUYyWlhKellXd2dhR0Z3Y0dWdWN5QnZiaUJKUkhNZ2QybDBhRzkxZENCMGIzVmphR2x1WnlCMGFHVWdSRTlOTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHRnlaMlYwU1VRZ1NVUWdiMllnZEdobElIUmhjbWRsZENCdWIyUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQmpZaUJEWVd4c1ltRmpheUIwYnlCcGJuWnZhMlV1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdLbjBnWVhKbklFRnlaM1Z0Wlc1MElIUnZJR2x1ZG05clpTQjBhR1VnWTJGc2JHSmhZMnNnZDJsMGFDNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQjBjbUYyWlhKelpVRnVZMlZ6ZEc5eWN6b2dablZ1WTNScGIyNGdLSFJoY21kbGRFbEVMQ0JqWWl3Z1lYSm5LU0I3WEc0Z0lDQWdkSEpoZG1WeWMyVlFZWEpsYm5SUVlYUm9LQ2NuTENCMFlYSm5aWFJKUkN3Z1kySXNJR0Z5Wnl3Z2RISjFaU3dnWm1Gc2MyVXBPMXh1SUNCOUxGeHVYRzRnSUdkbGRFWnBjbk4wUTI5dGJXOXVRVzVqWlhOMGIzSkpSRG9nWjJWMFJtbHljM1JEYjIxdGIyNUJibU5sYzNSdmNrbEVMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZlSEJ2YzJWa0lHWnZjaUIxYm1sMElIUmxjM1JwYm1jdVhHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFMMXh1SUNCZloyVjBUbVY0ZEVSbGMyTmxibVJoYm5SSlJEb2daMlYwVG1WNGRFUmxjMk5sYm1SaGJuUkpSQ3hjYmx4dUlDQnBjMEZ1WTJWemRHOXlTVVJQWmpvZ2FYTkJibU5sYzNSdmNrbEVUMllzWEc1Y2JpQWdVMFZRUVZKQlZFOVNPaUJUUlZCQlVrRlVUMUpjYmx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3pzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RJbnN0YW5jZU1hcFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBgUmVhY3RJbnN0YW5jZU1hcGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZhY2luZyBzdGF0ZWZ1bFxuICogaW5zdGFuY2UgKGtleSkgYW5kIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiAodmFsdWUpLiBUaGlzIGFsbG93cyBwdWJsaWNcbiAqIG1ldGhvZHMgdG8gYWNjZXB0IHRoZSB1c2VyIGZhY2luZyBpbnN0YW5jZSBhcyBhbiBhcmd1bWVudCBhbmQgbWFwIHRoZW0gYmFja1xuICogdG8gaW50ZXJuYWwgbWV0aG9kcy5cbiAqL1xuXG4vLyBUT0RPOiBSZXBsYWNlIHRoaXMgd2l0aCBFUzY6IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSB7XG5cbiAgLyoqXG4gICAqIFRoaXMgQVBJIHNob3VsZCBiZSBjYWxsZWQgYGRlbGV0ZWAgYnV0IHdlJ2QgaGF2ZSB0byBtYWtlIHN1cmUgdG8gYWx3YXlzXG4gICAqIHRyYW5zZm9ybSB0aGVzZSB0byBzdHJpbmdzIGZvciBJRSBzdXBwb3J0LiBXaGVuIHRoaXMgdHJhbnNmb3JtIGlzIGZ1bGx5XG4gICAqIHN1cHBvcnRlZCB3ZSBjYW4gcmVuYW1lIGl0LlxuICAgKi9cbiAgcmVtb3ZlOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIH0sXG5cbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlO1xuICB9LFxuXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSAhPT0gdW5kZWZpbmVkO1xuICB9LFxuXG4gIHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHZhbHVlO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZU1hcDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0SXNvbW9ycGhpY1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q2hpbGRyZW4gPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRyZW4nKTtcbnZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnQnKTtcbnZhciBSZWFjdENsYXNzID0gcmVxdWlyZSgnLi9SZWFjdENsYXNzJyk7XG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSByZXF1aXJlKCcuL1JlYWN0RE9NRmFjdG9yaWVzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicpO1xudmFyIFJlYWN0UHJvcFR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9uJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBvbmx5Q2hpbGQgPSByZXF1aXJlKCcuL29ubHlDaGlsZCcpO1xuXG52YXIgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50O1xudmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcbnZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7XG4gIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbiAgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcbn1cblxudmFyIFJlYWN0ID0ge1xuXG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7XG4gICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsXG4gICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsXG5cbiAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCxcbiAgY2xvbmVFbGVtZW50OiBjbG9uZUVsZW1lbnQsXG4gIGlzVmFsaWRFbGVtZW50OiBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQsXG5cbiAgLy8gQ2xhc3NpY1xuXG4gIFByb3BUeXBlczogUmVhY3RQcm9wVHlwZXMsXG4gIGNyZWF0ZUNsYXNzOiBSZWFjdENsYXNzLmNyZWF0ZUNsYXNzLFxuICBjcmVhdGVGYWN0b3J5OiBjcmVhdGVGYWN0b3J5LFxuICBjcmVhdGVNaXhpbjogZnVuY3Rpb24gKG1peGluKSB7XG4gICAgLy8gQ3VycmVudGx5IGEgbm9vcC4gV2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIGFuZCB0cmFjZSBtaXhpbnMuXG4gICAgcmV0dXJuIG1peGluO1xuICB9LFxuXG4gIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzXG4gIC8vIHNpbmNlIHRoZXkgYXJlIGp1c3QgZ2VuZXJhdGluZyBET00gc3RyaW5ncy5cbiAgRE9NOiBSZWFjdERPTUZhY3RvcmllcyxcblxuICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24sXG5cbiAgLy8gSG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nIGVsc2UuXG4gIF9fc3ByZWFkOiBhc3NpZ25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFbHpiMjF2Y25Cb2FXTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFbHpiMjF2Y25Cb2FXTmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTm9hV3hrY21WdUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTm9hV3hrY21WdUp5azdYRzUyWVhJZ1VtVmhZM1JEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTI5dGNHOXVaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkRiR0Z6Y3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGJHRnpjeWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5SbUZqZEc5eWFXVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJQVFVaaFkzUnZjbWxsY3ljcE8xeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSW5LVHRjYm5aaGNpQlNaV0ZqZEZCeWIzQlVlWEJsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlhNbktUdGNiblpoY2lCU1pXRmpkRlpsY25OcGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBWbVZ5YzJsdmJpY3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ2IyNXNlVU5vYVd4a0lEMGdjbVZ4ZFdseVpTZ25MaTl2Ym14NVEyaHBiR1FuS1R0Y2JseHVkbUZ5SUdOeVpXRjBaVVZzWlcxbGJuUWdQU0JTWldGamRFVnNaVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkRHRjYm5aaGNpQmpjbVZoZEdWR1lXTjBiM0o1SUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU55WldGMFpVWmhZM1J2Y25rN1hHNTJZWElnWTJ4dmJtVkZiR1Z0Wlc1MElEMGdVbVZoWTNSRmJHVnRaVzUwTG1Oc2IyNWxSV3hsYldWdWREdGNibHh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ1kzSmxZWFJsUld4bGJXVnVkQ0E5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpNWpjbVZoZEdWRmJHVnRaVzUwTzF4dUlDQmpjbVZoZEdWR1lXTjBiM0o1SUQwZ1VtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlMbU55WldGMFpVWmhZM1J2Y25rN1hHNGdJR05zYjI1bFJXeGxiV1Z1ZENBOUlGSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaTVqYkc5dVpVVnNaVzFsYm5RN1hHNTlYRzVjYm5aaGNpQlNaV0ZqZENBOUlIdGNibHh1SUNBdkx5Qk5iMlJsY201Y2JseHVJQ0JEYUdsc1pISmxiam9nZTF4dUlDQWdJRzFoY0RvZ1VtVmhZM1JEYUdsc1pISmxiaTV0WVhBc1hHNGdJQ0FnWm05eVJXRmphRG9nVW1WaFkzUkRhR2xzWkhKbGJpNW1iM0pGWVdOb0xGeHVJQ0FnSUdOdmRXNTBPaUJTWldGamRFTm9hV3hrY21WdUxtTnZkVzUwTEZ4dUlDQWdJSFJ2UVhKeVlYazZJRkpsWVdOMFEyaHBiR1J5Wlc0dWRHOUJjbkpoZVN4Y2JpQWdJQ0J2Ym14NU9pQnZibXg1UTJocGJHUmNiaUFnZlN4Y2JseHVJQ0JEYjIxd2IyNWxiblE2SUZKbFlXTjBRMjl0Y0c5dVpXNTBMRnh1WEc0Z0lHTnlaV0YwWlVWc1pXMWxiblE2SUdOeVpXRjBaVVZzWlcxbGJuUXNYRzRnSUdOc2IyNWxSV3hsYldWdWREb2dZMnh2Ym1WRmJHVnRaVzUwTEZ4dUlDQnBjMVpoYkdsa1JXeGxiV1Z1ZERvZ1VtVmhZM1JGYkdWdFpXNTBMbWx6Vm1Gc2FXUkZiR1Z0Wlc1MExGeHVYRzRnSUM4dklFTnNZWE56YVdOY2JseHVJQ0JRY205d1ZIbHdaWE02SUZKbFlXTjBVSEp2Y0ZSNWNHVnpMRnh1SUNCamNtVmhkR1ZEYkdGemN6b2dVbVZoWTNSRGJHRnpjeTVqY21WaGRHVkRiR0Z6Y3l4Y2JpQWdZM0psWVhSbFJtRmpkRzl5ZVRvZ1kzSmxZWFJsUm1GamRHOXllU3hjYmlBZ1kzSmxZWFJsVFdsNGFXNDZJR1oxYm1OMGFXOXVJQ2h0YVhocGJpa2dlMXh1SUNBZ0lDOHZJRU4xY25KbGJuUnNlU0JoSUc1dmIzQXVJRmRwYkd3Z1ltVWdkWE5sWkNCMGJ5QjJZV3hwWkdGMFpTQmhibVFnZEhKaFkyVWdiV2w0YVc1ekxseHVJQ0FnSUhKbGRIVnliaUJ0YVhocGJqdGNiaUFnZlN4Y2JseHVJQ0F2THlCVWFHbHpJR3h2YjJ0eklFUlBUU0J6Y0dWamFXWnBZeUJpZFhRZ2RHaGxjMlVnWVhKbElHRmpkSFZoYkd4NUlHbHpiMjF2Y25Cb2FXTWdhR1ZzY0dWeWMxeHVJQ0F2THlCemFXNWpaU0IwYUdWNUlHRnlaU0JxZFhOMElHZGxibVZ5WVhScGJtY2dSRTlOSUhOMGNtbHVaM011WEc0Z0lFUlBUVG9nVW1WaFkzUkVUMDFHWVdOMGIzSnBaWE1zWEc1Y2JpQWdkbVZ5YzJsdmJqb2dVbVZoWTNSV1pYSnphVzl1TEZ4dVhHNGdJQzh2SUVodmIyc2dabTl5SUVwVFdDQnpjSEpsWVdRc0lHUnZiaWQwSUhWelpTQjBhR2x6SUdadmNpQmhibmwwYUdsdVp5QmxiSE5sTGx4dUlDQmZYM053Y21WaFpEb2dZWE56YVdkdVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE1hcmt1cENoZWNrc3VtXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYWRsZXIzMiA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xuXG52YXIgVEFHX0VORCA9IC9cXC8/Pi87XG5cbnZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0ge1xuICBDSEVDS1NVTV9BVFRSX05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3VtJyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0ZSBhdHRhY2hlZFxuICAgKi9cbiAgYWRkQ2hlY2tzdW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCkge1xuICAgIHZhciBjaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcblxuICAgIC8vIEFkZCBjaGVja3N1bSAoaGFuZGxlIGJvdGggcGFyZW50IHRhZ3MgYW5kIHNlbGYtY2xvc2luZyB0YWdzKVxuICAgIHJldHVybiBtYXJrdXAucmVwbGFjZShUQUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSArICc9XCInICsgY2hlY2tzdW0gKyAnXCIkJicpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIHRvIHVzZVxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgcm9vdCBSZWFjdCBlbGVtZW50XG4gICAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIG9yIG5vdCB0aGUgbWFya3VwIGlzIHRoZSBzYW1lXG4gICAqL1xuICBjYW5SZXVzZU1hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCwgZWxlbWVudCkge1xuICAgIHZhciBleGlzdGluZ0NoZWNrc3VtID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuICAgIGV4aXN0aW5nQ2hlY2tzdW0gPSBleGlzdGluZ0NoZWNrc3VtICYmIHBhcnNlSW50KGV4aXN0aW5nQ2hlY2tzdW0sIDEwKTtcbiAgICB2YXIgbWFya3VwQ2hlY2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7XG4gICAgcmV0dXJuIG1hcmt1cENoZWNrc3VtID09PSBleGlzdGluZ0NoZWNrc3VtO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TWFya3VwQ2hlY2tzdW07IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE1vdW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01GZWF0dXJlRmxhZ3MnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeSA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5Jyk7XG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VIYW5kbGVzJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSByZXF1aXJlKCcuL1JlYWN0TWFya3VwQ2hlY2tzdW0nKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgY29udGFpbnNOb2RlID0gcmVxdWlyZSgnZmJqcy9saWIvY29udGFpbnNOb2RlJyk7XG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7XG52YXIgbm9kZUNhY2hlID0ge307XG5cbnZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG52YXIgRE9DX05PREVfVFlQRSA9IDk7XG52YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7XG5cbnZhciBvd25lckRvY3VtZW50Q29udGV4dEtleSA9ICdfX1JlYWN0TW91bnRfb3duZXJEb2N1bWVudCQnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cbi8qKiBNYXBwaW5nIGZyb20gcmVhY3RSb290SUQgdG8gUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLiAqL1xudmFyIGluc3RhbmNlc0J5UmVhY3RSb290SUQgPSB7fTtcblxuLyoqIE1hcHBpbmcgZnJvbSByZWFjdFJvb3RJRCB0byBgY29udGFpbmVyYCBub2Rlcy4gKi9cbnZhciBjb250YWluZXJzQnlSZWFjdFJvb3RJRCA9IHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvKiogX19ERVZfXy1vbmx5IG1hcHBpbmcgZnJvbSByZWFjdFJvb3RJRCB0byByb290IGVsZW1lbnRzLiAqL1xuICB2YXIgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRCA9IHt9O1xufVxuXG4vLyBVc2VkIHRvIHN0b3JlIGJyZWFkdGgtZmlyc3Qgc2VhcmNoIHN0YXRlIGluIGZpbmRDb21wb25lbnRSb290LlxudmFyIGZpbmRDb21wb25lbnRSb290UmV1c2FibGVBcnJheSA9IFtdO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gKiB0aGF0J3Mgbm90IGNvbW1vbiBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gc3RyaW5ncy5cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHdoZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2VcbiAqL1xuZnVuY3Rpb24gZmlyc3REaWZmZXJlbmNlSW5kZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuICB2YXIgbWluTGVuID0gTWF0aC5taW4oc3RyaW5nMS5sZW5ndGgsIHN0cmluZzIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5MZW47IGkrKykge1xuICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5jaGFyQXQoaSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5nMS5sZW5ndGggPT09IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFpblxuICogYSBSZWFjdCBjb21wb25lbnRcbiAqIEByZXR1cm4gez8qfSBET00gZWxlbWVudCB0aGF0IG1heSBoYXZlIHRoZSByZWFjdFJvb3QgSUQsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgaWYgKCFjb250YWluZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluIGEgUmVhY3QgY29tcG9uZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gQSBcInJlYWN0Um9vdFwiIElELCBpZiBhIFJlYWN0IGNvbXBvbmVudCBpcyByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKSB7XG4gIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICByZXR1cm4gcm9vdEVsZW1lbnQgJiYgUmVhY3RNb3VudC5nZXRJRChyb290RWxlbWVudCk7XG59XG5cbi8qKlxuICogQWNjZXNzaW5nIG5vZGVbQVRUUl9OQU1FXSBvciBjYWxsaW5nIGdldEF0dHJpYnV0ZShBVFRSX05BTUUpIG9uIGEgZm9ybVxuICogZWxlbWVudCBjYW4gcmV0dXJuIGl0cyBjb250cm9sIHdob3NlIG5hbWUgb3IgSUQgZXF1YWxzIEFUVFJfTkFNRS4gQWxsXG4gKiBET00gbm9kZXMgc3VwcG9ydCBgZ2V0QXR0cmlidXRlTm9kZWAgYnV0IHRoaXMgY2FuIGFsc28gZ2V0IGNhbGxlZCBvblxuICogb3RoZXIgb2JqZWN0cyBzbyBqdXN0IHJldHVybiAnJyBpZiB3ZSdyZSBnaXZlbiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhXG4gKiBET00gbm9kZSAoc3VjaCBhcyB3aW5kb3cpLlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR8RE9NV2luZG93fERPTURvY3VtZW50fERPTVRleHROb2RlfSBub2RlIERPTSBub2RlLlxuICogQHJldHVybiB7c3RyaW5nfSBJRCBvZiB0aGUgc3VwcGxpZWQgYGRvbU5vZGVgLlxuICovXG5mdW5jdGlvbiBnZXRJRChub2RlKSB7XG4gIHZhciBpZCA9IGludGVybmFsR2V0SUQobm9kZSk7XG4gIGlmIChpZCkge1xuICAgIGlmIChub2RlQ2FjaGUuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICB2YXIgY2FjaGVkID0gbm9kZUNhY2hlW2lkXTtcbiAgICAgIGlmIChjYWNoZWQgIT09IG5vZGUpIHtcbiAgICAgICAgISFpc1ZhbGlkKGNhY2hlZCwgaWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0TW91bnQ6IFR3byB2YWxpZCBidXQgdW5lcXVhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGAlc2A6ICVzJywgQVRUUl9OQU1FLCBpZCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIG5vZGVDYWNoZVtpZF0gPSBub2RlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlQ2FjaGVbaWRdID0gbm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaWQ7XG59XG5cbmZ1bmN0aW9uIGludGVybmFsR2V0SUQobm9kZSkge1xuICAvLyBJZiBub2RlIGlzIHNvbWV0aGluZyBsaWtlIGEgd2luZG93LCBkb2N1bWVudCwgb3IgdGV4dCBub2RlLCBub25lIG9mXG4gIC8vIHdoaWNoIHN1cHBvcnQgYXR0cmlidXRlcyBvciBhIC5nZXRBdHRyaWJ1dGUgbWV0aG9kLCBncmFjZWZ1bGx5IHJldHVyblxuICAvLyB0aGUgZW1wdHkgc3RyaW5nLCBhcyBpZiB0aGUgYXR0cmlidXRlIHdlcmUgbWlzc2luZy5cbiAgcmV0dXJuIG5vZGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSB8fCAnJztcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBSZWFjdC1zcGVjaWZpYyBJRCBvZiB0aGUgZ2l2ZW4gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgVGhlIERPTSBub2RlIHdob3NlIElEIHdpbGwgYmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSB2YWx1ZSBvZiB0aGUgSUQgYXR0cmlidXRlLlxuICovXG5mdW5jdGlvbiBzZXRJRChub2RlLCBpZCkge1xuICB2YXIgb2xkSUQgPSBpbnRlcm5hbEdldElEKG5vZGUpO1xuICBpZiAob2xkSUQgIT09IGlkKSB7XG4gICAgZGVsZXRlIG5vZGVDYWNoZVtvbGRJRF07XG4gIH1cbiAgbm9kZS5zZXRBdHRyaWJ1dGUoQVRUUl9OQU1FLCBpZCk7XG4gIG5vZGVDYWNoZVtpZF0gPSBub2RlO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIFJlYWN0LWdlbmVyYXRlZCBET00gSUQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIEEgUmVhY3QtZ2VuZXJhdGVkIERPTSBJRC5cbiAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IERPTSBub2RlIHdpdGggdGhlIHN1cHBsZWQgYGlkYC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXROb2RlKGlkKSB7XG4gIGlmICghbm9kZUNhY2hlLmhhc093blByb3BlcnR5KGlkKSB8fCAhaXNWYWxpZChub2RlQ2FjaGVbaWRdLCBpZCkpIHtcbiAgICBub2RlQ2FjaGVbaWRdID0gUmVhY3RNb3VudC5maW5kUmVhY3ROb2RlQnlJRChpZCk7XG4gIH1cbiAgcmV0dXJuIG5vZGVDYWNoZVtpZF07XG59XG5cbi8qKlxuICogRmluZHMgdGhlIG5vZGUgd2l0aCB0aGUgc3VwcGxpZWQgcHVibGljIFJlYWN0IGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSB7Kn0gaW5zdGFuY2UgQSBwdWJsaWMgUmVhY3QgaW5zdGFuY2UuXG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gRE9NIG5vZGUgd2l0aCB0aGUgc3VwcGxlZCBgaWRgLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgdmFyIGlkID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdGFuY2UpLl9yb290Tm9kZUlEO1xuICBpZiAoUmVhY3RFbXB0eUNvbXBvbmVudFJlZ2lzdHJ5LmlzTnVsbENvbXBvbmVudElEKGlkKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghbm9kZUNhY2hlLmhhc093blByb3BlcnR5KGlkKSB8fCAhaXNWYWxpZChub2RlQ2FjaGVbaWRdLCBpZCkpIHtcbiAgICBub2RlQ2FjaGVbaWRdID0gUmVhY3RNb3VudC5maW5kUmVhY3ROb2RlQnlJRChpZCk7XG4gIH1cbiAgcmV0dXJuIG5vZGVDYWNoZVtpZF07XG59XG5cbi8qKlxuICogQSBub2RlIGlzIFwidmFsaWRcIiBpZiBpdCBpcyBjb250YWluZWQgYnkgYSBjdXJyZW50bHkgbW91bnRlZCBjb250YWluZXIuXG4gKlxuICogVGhpcyBtZWFucyB0aGF0IHRoZSBub2RlIGRvZXMgbm90IGhhdmUgdG8gYmUgY29udGFpbmVkIGJ5IGEgZG9jdW1lbnQgaW5cbiAqIG9yZGVyIHRvIGJlIGNvbnNpZGVyZWQgdmFsaWQuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBleHBlY3RlZCBJRCBvZiB0aGUgbm9kZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIG5vZGUgaXMgY29udGFpbmVkIGJ5IGEgbW91bnRlZCBjb250YWluZXIuXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQobm9kZSwgaWQpIHtcbiAgaWYgKG5vZGUpIHtcbiAgICAhKGludGVybmFsR2V0SUQobm9kZSkgPT09IGlkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdE1vdW50OiBVbmV4cGVjdGVkIG1vZGlmaWNhdGlvbiBvZiBgJXNgJywgQVRUUl9OQU1FKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgY29udGFpbmVyID0gUmVhY3RNb3VudC5maW5kUmVhY3RDb250YWluZXJGb3JJRChpZCk7XG4gICAgaWYgKGNvbnRhaW5lciAmJiBjb250YWluc05vZGUoY29udGFpbmVyLCBub2RlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENhdXNlcyB0aGUgY2FjaGUgdG8gZm9yZ2V0IGFib3V0IG9uZSBSZWFjdC1zcGVjaWZpYyBJRC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIElEIHRvIGZvcmdldC5cbiAqL1xuZnVuY3Rpb24gcHVyZ2VJRChpZCkge1xuICBkZWxldGUgbm9kZUNhY2hlW2lkXTtcbn1cblxudmFyIGRlZXBlc3ROb2RlU29GYXIgPSBudWxsO1xuZnVuY3Rpb24gZmluZERlZXBlc3RDYWNoZWRBbmNlc3RvckltcGwoYW5jZXN0b3JJRCkge1xuICB2YXIgYW5jZXN0b3IgPSBub2RlQ2FjaGVbYW5jZXN0b3JJRF07XG4gIGlmIChhbmNlc3RvciAmJiBpc1ZhbGlkKGFuY2VzdG9yLCBhbmNlc3RvcklEKSkge1xuICAgIGRlZXBlc3ROb2RlU29GYXIgPSBhbmNlc3RvcjtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIG5vZGUgaXNuJ3QgcG9wdWxhdGVkIGluIHRoZSBjYWNoZSwgc28gcHJlc3VtYWJseSBub25lIG9mIGl0c1xuICAgIC8vIGRlc2NlbmRhbnRzIGFyZS4gQnJlYWsgb3V0IG9mIHRoZSBsb29wLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZGVlcGVzdCBjYWNoZWQgbm9kZSB3aG9zZSBJRCBpcyBhIHByZWZpeCBvZiBgdGFyZ2V0SURgLlxuICovXG5mdW5jdGlvbiBmaW5kRGVlcGVzdENhY2hlZEFuY2VzdG9yKHRhcmdldElEKSB7XG4gIGRlZXBlc3ROb2RlU29GYXIgPSBudWxsO1xuICBSZWFjdEluc3RhbmNlSGFuZGxlcy50cmF2ZXJzZUFuY2VzdG9ycyh0YXJnZXRJRCwgZmluZERlZXBlc3RDYWNoZWRBbmNlc3RvckltcGwpO1xuXG4gIHZhciBmb3VuZE5vZGUgPSBkZWVwZXN0Tm9kZVNvRmFyO1xuICBkZWVwZXN0Tm9kZVNvRmFyID0gbnVsbDtcbiAgcmV0dXJuIGZvdW5kTm9kZTtcbn1cblxuLyoqXG4gKiBNb3VudHMgdGhpcyBjb21wb25lbnQgYW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuICovXG5mdW5jdGlvbiBtb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCByb290SUQsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIGlmIChSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgY29udGV4dCA9IGFzc2lnbih7fSwgY29udGV4dCk7XG4gICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAgICAgY29udGV4dFtvd25lckRvY3VtZW50Q29udGV4dEtleV0gPSBjb250YWluZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHRbb3duZXJEb2N1bWVudENvbnRleHRLZXldID0gY29udGFpbmVyLm93bmVyRG9jdW1lbnQ7XG4gICAgfVxuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGNvbnRleHQgPT09IGVtcHR5T2JqZWN0KSB7XG4gICAgICBjb250ZXh0ID0ge307XG4gICAgfVxuICAgIHZhciB0YWcgPSBjb250YWluZXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKG51bGwsIHRhZywgbnVsbCk7XG4gIH1cbiAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gIGNvbXBvbmVudEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gY29tcG9uZW50SW5zdGFuY2U7XG4gIFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9kZShtYXJrdXAsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBCYXRjaGVkIG1vdW50LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuICovXG5mdW5jdGlvbiBiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZShjb21wb25lbnRJbnN0YW5jZSwgcm9vdElELCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZChcbiAgLyogZm9yY2VIVE1MICovc2hvdWxkUmV1c2VNYXJrdXApO1xuICB0cmFuc2FjdGlvbi5wZXJmb3JtKG1vdW50Q29tcG9uZW50SW50b05vZGUsIG51bGwsIGNvbXBvbmVudEluc3RhbmNlLCByb290SUQsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcbiAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG59XG5cbi8qKlxuICogVW5tb3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVubW91bnQgZnJvbS5cbiAqIEBmaW5hbFxuICogQGludGVybmFsXG4gKiBAc2VlIHtSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGV9XG4gKi9cbmZ1bmN0aW9uIHVubW91bnRDb21wb25lbnRGcm9tTm9kZShpbnN0YW5jZSwgY29udGFpbmVyKSB7XG4gIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlKTtcblxuICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG4gICAgY29udGFpbmVyID0gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2VtcHR5aW5nLWEtbm9kZVxuICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgfVxufVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGhhcyBhIGRpcmVjdCBSZWFjdC1yZW5kZXJlZCBjaGlsZCB0aGF0IGlzXG4gKiBub3QgYSBSZWFjdCByb290IGVsZW1lbnQuIFVzZWZ1bCBmb3Igd2FybmluZyBpbiBgcmVuZGVyYCxcbiAqIGB1bm1vdW50Q29tcG9uZW50QXROb2RlYCwgZXRjLlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBlbGVtZW50IGNvbnRhaW5zIGEgZGlyZWN0IGNoaWxkIHRoYXQgd2FzXG4gKiByZW5kZXJlZCBieSBSZWFjdCBidXQgaXMgbm90IGEgcm9vdCBlbGVtZW50LlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGhhc05vblJvb3RSZWFjdENoaWxkKG5vZGUpIHtcbiAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQobm9kZSk7XG4gIHJldHVybiByZWFjdFJvb3RJRCA/IHJlYWN0Um9vdElEICE9PSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQocmVhY3RSb290SUQpIDogZmFsc2U7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgKGRlZXBlc3QpIGFuY2VzdG9yIG9mIGEgbm9kZSB3aGljaCBpcyByZW5kZXJlZCBieSB0aGlzIGNvcHlcbiAqIG9mIFJlYWN0LlxuICovXG5mdW5jdGlvbiBmaW5kRmlyc3RSZWFjdERPTUltcGwobm9kZSkge1xuICAvLyBUaGlzIG5vZGUgbWlnaHQgYmUgZnJvbSBhbm90aGVyIFJlYWN0IGluc3RhbmNlLCBzbyB3ZSBtYWtlIHN1cmUgbm90IHRvXG4gIC8vIGV4YW1pbmUgdGhlIG5vZGUgY2FjaGUgaGVyZVxuICBmb3IgKDsgbm9kZSAmJiBub2RlLnBhcmVudE5vZGUgIT09IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHtcbiAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgLy8gTm90IGEgRE9NRWxlbWVudCwgdGhlcmVmb3JlIG5vdCBhIFJlYWN0IGNvbXBvbmVudFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBub2RlSUQgPSBpbnRlcm5hbEdldElEKG5vZGUpO1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKG5vZGVJRCk7XG5cbiAgICAvLyBJZiBjb250YWluZXJzQnlSZWFjdFJvb3RJRCBjb250YWlucyB0aGUgY29udGFpbmVyIHdlIGZpbmQgYnkgY3Jhd2xpbmcgdXBcbiAgICAvLyB0aGUgdHJlZSwgd2Uga25vdyB0aGF0IHRoaXMgaW5zdGFuY2Ugb2YgUmVhY3QgcmVuZGVyZWQgdGhlIG5vZGUuXG4gICAgLy8gbmIuIGlzVmFsaWQncyBzdHJhdGVneSAod2l0aCBjb250YWluc05vZGUpIGRvZXMgbm90IHdvcmsgYmVjYXVzZSByZW5kZXJcbiAgICAvLyB0cmVlcyBtYXkgYmUgbmVzdGVkIGFuZCB3ZSBkb24ndCB3YW50IGEgZmFsc2UgcG9zaXRpdmUgaW4gdGhhdCBjYXNlLlxuICAgIHZhciBjdXJyZW50ID0gbm9kZTtcbiAgICB2YXIgbGFzdElEO1xuICAgIGRvIHtcbiAgICAgIGxhc3RJRCA9IGludGVybmFsR2V0SUQoY3VycmVudCk7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xuICAgICAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBUaGUgcGFzc2VkLWluIG5vZGUgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgY29udGFpbmVyIGl0IHdhc1xuICAgICAgICAvLyBvcmlnaW5hbGx5IHJlbmRlcmVkIGludG8uXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKGxhc3RJRCAhPT0gcmVhY3RSb290SUQpO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvblxuICogY29tcG9zaXRlcyBpbnN0ZWFkIG9mIGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50c1xuICogaGVyZS5cbiAqL1xudmFyIFRvcExldmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHt9O1xuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBUb3BMZXZlbFdyYXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcbn1cblRvcExldmVsV3JhcHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzLnByb3BzIGlzIGFjdHVhbGx5IGEgUmVhY3RFbGVtZW50XG4gIHJldHVybiB0aGlzLnByb3BzO1xufTtcblxuLyoqXG4gKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBSZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcgaXRzXG4gKiByZXByZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5kIGluc2VydGluZyB0aGVtIGludG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuXG4gKlxuICogICBSZWFjdE1vdW50LnJlbmRlcihcbiAqICAgICBjb21wb25lbnQsXG4gKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpXG4gKiAgICk7XG4gKlxuICogICA8ZGl2IGlkPVwiY29udGFpbmVyXCI+ICAgICAgICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29udGFpbmVyYC5cbiAqICAgICA8ZGl2IGRhdGEtcmVhY3RpZD1cIi4zXCI+ICAgICAgICAgICAgICA8LS0gUmVuZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0XG4gKiAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuXG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICpcbiAqIEluc2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1lbnQgcmVuZGVyZWQgaXMgdGhlIFwicmVhY3RSb290XCIuXG4gKi9cbnZhciBSZWFjdE1vdW50ID0ge1xuXG4gIFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLFxuXG4gIC8qKiBFeHBvc2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgKiovXG4gIF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9vdElELFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgaG9vayBwcm92aWRlZCB0byBzdXBwb3J0IHJlbmRlcmluZyBSZWFjdCBjb21wb25lbnRzIHdoaWxlXG4gICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3RcbiAgICogY2hhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAgYmVpbmcgcmVuZGVyZWQgaW50by5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVuZGVyQ2FsbGJhY2sgVGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuXG4gICAqL1xuICBzY3JvbGxNb25pdG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykge1xuICAgIHJlbmRlckNhbGxiYWNrKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRha2UgYSBjb21wb25lbnQgdGhhdCdzIGFscmVhZHkgbW91bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFscmVhZHkgaW4gdGhlIERPTVxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRlclxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqL1xuICBfdXBkYXRlUm9vdENvbXBvbmVudDogZnVuY3Rpb24gKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgUmVhY3RNb3VudC5zY3JvbGxNb25pdG9yKGNvbnRhaW5lciwgZnVuY3Rpb24gKCkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50KTtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFja0ludGVybmFsKHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBSZWNvcmQgdGhlIHJvb3QgZWxlbWVudCBpbiBjYXNlIGl0IGxhdGVyIGdldHMgdHJhbnNwbGFudGVkLlxuICAgICAgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtnZXRSZWFjdFJvb3RJRChjb250YWluZXIpXSA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcmV2Q29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGNvbXBvbmVudCBpbnRvIHRoZSBpbnN0YW5jZSBtYXAgYW5kIHN0YXJ0cyBzY3JvbGwgdmFsdWVcbiAgICogbW9uaXRvcmluZ1xuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEByZXR1cm4ge3N0cmluZ30gcmVhY3RSb290IElEIHByZWZpeFxuICAgKi9cbiAgX3JlZ2lzdGVyQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dENvbXBvbmVudCwgY29udGFpbmVyKSB7XG4gICAgIShjb250YWluZXIgJiYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnX3JlZ2lzdGVyQ29tcG9uZW50KC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO1xuXG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RNb3VudC5yZWdpc3RlckNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIGluc3RhbmNlc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gbmV4dENvbXBvbmVudDtcbiAgICByZXR1cm4gcmVhY3RSb290SUQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlciBhIG5ldyBjb21wb25lbnQgaW50byB0aGUgRE9NLlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgaWYgd2Ugc2hvdWxkIHNraXAgdGhlIG1hcmt1cCBpbnNlcnRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IG5leHRDb21wb25lbnRcbiAgICovXG4gIF9yZW5kZXJOZXdSb290Q29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgbnVsbCk7XG4gICAgdmFyIHJlYWN0Um9vdElEID0gUmVhY3RNb3VudC5fcmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lcik7XG5cbiAgICAvLyBUaGUgaW5pdGlhbCByZW5kZXIgaXMgc3luY2hyb25vdXMgYnV0IGFueSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZ1xuICAgIC8vIHJlbmRlcmluZywgaW4gY29tcG9uZW50V2lsbE1vdW50IG9yIGNvbXBvbmVudERpZE1vdW50LCB3aWxsIGJlIGJhdGNoZWRcbiAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYmF0Y2hpbmcgc3RyYXRlZ3kuXG5cbiAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUsIGNvbXBvbmVudEluc3RhbmNlLCByZWFjdFJvb3RJRCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gUmVjb3JkIHRoZSByb290IGVsZW1lbnQgaW4gY2FzZSBpdCBsYXRlciBnZXRzIHRyYW5zcGxhbnRlZC5cbiAgICAgIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4gICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwYXJlbnRDb21wb25lbnQgVGhlIGNvbmNlcHR1YWwgcGFyZW50IG9mIHRoaXMgcmVuZGVyIHRyZWUuXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgICEocGFyZW50Q29tcG9uZW50ICE9IG51bGwgJiYgcGFyZW50Q29tcG9uZW50Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUgYSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICAhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhbiBlbGVtZW50IHN0cmluZywgbWFrZSBzdXJlIHRvIGluc3RhbnRpYXRlICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNvbXBvbmVudCBjbGFzcywgbWFrZSBzdXJlIHRvIGluc3RhbnRpYXRlICcgKyAnaXQgYnkgcGFzc2luZyBpdCB0byBSZWFjdC5jcmVhdGVFbGVtZW50LicgOlxuICAgIC8vIENoZWNrIGlmIGl0IHF1YWNrcyBsaWtlIGFuIGVsZW1lbnRcbiAgICBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IG5ldyBSZWFjdEVsZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBuZXh0RWxlbWVudCk7XG5cbiAgICB2YXIgcHJldkNvbXBvbmVudCA9IGluc3RhbmNlc0J5UmVhY3RSb290SURbZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKV07XG5cbiAgICBpZiAocHJldkNvbXBvbmVudCkge1xuICAgICAgdmFyIHByZXZXcmFwcGVkRWxlbWVudCA9IHByZXZDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldldyYXBwZWRFbGVtZW50LnByb3BzO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgdmFyIHB1YmxpY0luc3QgPSBwcmV2Q29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgICAgICB2YXIgdXBkYXRlZENhbGxiYWNrID0gY2FsbGJhY2sgJiYgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNhbGxiYWNrLmNhbGwocHVibGljSW5zdCk7XG4gICAgICAgIH07XG4gICAgICAgIFJlYWN0TW91bnQuX3VwZGF0ZVJvb3RDb21wb25lbnQocHJldkNvbXBvbmVudCwgbmV4dFdyYXBwZWRFbGVtZW50LCBjb250YWluZXIsIHVwZGF0ZWRDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiBwdWJsaWNJbnN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlYWN0Um9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgICB2YXIgY29udGFpbmVySGFzUmVhY3RNYXJrdXAgPSByZWFjdFJvb3RFbGVtZW50ICYmICEhaW50ZXJuYWxHZXRJRChyZWFjdFJvb3RFbGVtZW50KTtcbiAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29tcG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3RlYWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghY29udGFpbmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcbiAgICAgICAgd2hpbGUgKHJvb3RFbGVtZW50U2libGluZykge1xuICAgICAgICAgIGlmIChpbnRlcm5hbEdldElEKHJvb3RFbGVtZW50U2libGluZykpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6IFRhcmdldCBub2RlIGhhcyBtYXJrdXAgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsgJ2FyZSB1bnJlbGF0ZWQgbm9kZXMgYXMgd2VsbC4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNlZCBieSAnICsgJ3doaXRlLXNwYWNlIGluc2VydGVkIGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFya3VwLicpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJvb3RFbGVtZW50U2libGluZyA9IHJvb3RFbGVtZW50U2libGluZy5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaG91bGRSZXVzZU1hcmt1cCA9IGNvbnRhaW5lckhhc1JlYWN0TWFya3VwICYmICFwcmV2Q29tcG9uZW50ICYmICFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZDtcbiAgICB2YXIgY29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChuZXh0V3JhcHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIHBhcmVudENvbXBvbmVudCAhPSBudWxsID8gcGFyZW50Q29tcG9uZW50Ll9yZWFjdEludGVybmFsSW5zdGFuY2UuX3Byb2Nlc3NDaGlsZENvbnRleHQocGFyZW50Q29tcG9uZW50Ll9yZWFjdEludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIDogZW1wdHlPYmplY3QpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2suY2FsbChjb21wb25lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4gICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byByZW5kZXIgaW50by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4gICAqL1xuICByZW5kZXI6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNvbnRhaW5lciBub2RlIGludG8gd2hpY2ggUmVhY3QgY29tcG9uZW50cyB3aWxsIGJlIHJlbmRlcmVkLlxuICAgKiBUaGlzIGFsc28gY3JlYXRlcyB0aGUgXCJyZWFjdFJvb3RcIiBJRCB0aGF0IHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIGVsZW1lbnRcbiAgICogcmVuZGVyZWQgd2l0aGluLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byByZWdpc3RlciBhcyBhIGNvbnRhaW5lci5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgXCJyZWFjdFJvb3RcIiBJRCBvZiBlbGVtZW50cyByZW5kZXJlZCB3aXRoaW4uXG4gICAqL1xuICByZWdpc3RlckNvbnRhaW5lcjogZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIHZhciByZWFjdFJvb3RJRCA9IGdldFJlYWN0Um9vdElEKGNvbnRhaW5lcik7XG4gICAgaWYgKHJlYWN0Um9vdElEKSB7XG4gICAgICAvLyBJZiBvbmUgZXhpc3RzLCBtYWtlIHN1cmUgaXQgaXMgYSB2YWxpZCBcInJlYWN0Um9vdFwiIElELlxuICAgICAgcmVhY3RSb290SUQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQocmVhY3RSb290SUQpO1xuICAgIH1cbiAgICBpZiAoIXJlYWN0Um9vdElEKSB7XG4gICAgICAvLyBObyB2YWxpZCBcInJlYWN0Um9vdFwiIElEIGZvdW5kLCBjcmVhdGUgb25lLlxuICAgICAgcmVhY3RSb290SUQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5jcmVhdGVSZWFjdFJvb3RJRCgpO1xuICAgIH1cbiAgICBjb250YWluZXJzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF0gPSBjb250YWluZXI7XG4gICAgcmV0dXJuIHJlYWN0Um9vdElEO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVbm1vdW50cyBhbmQgZGVzdHJveXMgdGhlIFJlYWN0IGNvbXBvbmVudCByZW5kZXJlZCBpbiB0aGUgYGNvbnRhaW5lcmAuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IGNvbnRhaW5pbmcgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYSBjb21wb25lbnQgd2FzIGZvdW5kIGluIGFuZCB1bm1vdW50ZWQgZnJvbVxuICAgKiAgICAgICAgICAgICAgICAgICBgY29udGFpbmVyYFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFN0cmljdGx5IHNwZWFraW5nLCB1bm1vdW50aW5nIHdvbid0IGNhdXNlIGFcbiAgICAvLyByZW5kZXIgYnV0IHdlIHN0aWxsIGRvbid0IGV4cGVjdCB0byBiZSBpbiBhIHJlbmRlciBjYWxsIGhlcmUuKVxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyArICdpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuXG4gICAgIShjb250YWluZXIgJiYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCBhIERPTSBlbGVtZW50LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciByZWFjdFJvb3RJRCA9IGdldFJlYWN0Um9vdElEKGNvbnRhaW5lcik7XG4gICAgdmFyIGNvbXBvbmVudCA9IGluc3RhbmNlc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBiZWluZyB1bm1vdW50ZWQgd2FzIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgaXNuJ3QgYVxuICAgICAgLy8gcm9vdCBub2RlLlxuICAgICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbnRhaW5lciBpdHNlbGYgaXMgYSBSZWFjdCByb290IG5vZGUuXG4gICAgICB2YXIgY29udGFpbmVySUQgPSBpbnRlcm5hbEdldElEKGNvbnRhaW5lcik7XG4gICAgICB2YXIgaXNDb250YWluZXJSZWFjdFJvb3QgPSBjb250YWluZXJJRCAmJiBjb250YWluZXJJRCA9PT0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKGNvbnRhaW5lcklEKTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3VcXCdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgJyArICd3YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5vdCBhIHRvcC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91IG1heSBoYXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVhZCAnICsgJ29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29tcG9uZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoaXMgY29tcG9uZW50LicpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyh1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUsIGNvbXBvbmVudCwgY29udGFpbmVyKTtcbiAgICBkZWxldGUgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgZGVsZXRlIGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZGVsZXRlIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogRmluZHMgdGhlIGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IGNvbnRhaW5zIFJlYWN0IGNvbXBvbmVudCB0byB3aGljaCB0aGVcbiAgICogc3VwcGxpZWQgRE9NIGBpZGAgYmVsb25ncy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBJRCBvZiBhbiBlbGVtZW50IHJlbmRlcmVkIGJ5IGEgUmVhY3QgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gRE9NIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGUgYGlkYC5cbiAgICovXG4gIGZpbmRSZWFjdENvbnRhaW5lckZvcklEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgcmVhY3RSb290SUQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQoaWQpO1xuICAgIHZhciBjb250YWluZXIgPSBjb250YWluZXJzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgICBpZiAocm9vdEVsZW1lbnQgJiYgcm9vdEVsZW1lbnQucGFyZW50Tm9kZSAhPT0gY29udGFpbmVyKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFxuICAgICAgICAvLyBDYWxsIGludGVybmFsR2V0SUQgaGVyZSBiZWNhdXNlIGdldElEIGNhbGxzIGlzVmFsaWQgd2hpY2ggY2FsbHNcbiAgICAgICAgLy8gZmluZFJlYWN0Q29udGFpbmVyRm9ySUQgKHRoaXMgZnVuY3Rpb24pLlxuICAgICAgICBpbnRlcm5hbEdldElEKHJvb3RFbGVtZW50KSA9PT0gcmVhY3RSb290SUQsICdSZWFjdE1vdW50OiBSb290IGVsZW1lbnQgSUQgZGlmZmVyZWQgZnJvbSByZWFjdFJvb3RJRC4nKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGNvbnRhaW5lckNoaWxkID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmIChjb250YWluZXJDaGlsZCAmJiByZWFjdFJvb3RJRCA9PT0gaW50ZXJuYWxHZXRJRChjb250YWluZXJDaGlsZCkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgY29udGFpbmVyIGhhcyBhIG5ldyBjaGlsZCB3aXRoIHRoZSBzYW1lIElEIGFzIHRoZSBvbGRcbiAgICAgICAgICAvLyByb290IGVsZW1lbnQsIHRoZW4gcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF0gaXNcbiAgICAgICAgICAvLyBqdXN0IHN0YWxlIGFuZCBuZWVkcyB0byBiZSB1cGRhdGVkLiBUaGUgY2FzZSB0aGF0IGRlc2VydmVzIGFcbiAgICAgICAgICAvLyB3YXJuaW5nIGlzIHdoZW4gdGhlIGNvbnRhaW5lciBpcyBlbXB0eS5cbiAgICAgICAgICByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSA9IGNvbnRhaW5lckNoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RNb3VudDogUm9vdCBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBpdHMgb3JpZ2luYWwgJyArICdjb250YWluZXIuIE5ldyBjb250YWluZXI6ICVzJywgcm9vdEVsZW1lbnQucGFyZW50Tm9kZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBlbGVtZW50IHJlbmRlcmVkIGJ5IFJlYWN0IHdpdGggdGhlIHN1cHBsaWVkIElELlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgYSBET00gbm9kZSBpbiB0aGUgUmVhY3QgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIHtET01FbGVtZW50fSBSb290IERPTSBub2RlIG9mIHRoZSBSZWFjdCBjb21wb25lbnQuXG4gICAqL1xuICBmaW5kUmVhY3ROb2RlQnlJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIHJlYWN0Um9vdCA9IFJlYWN0TW91bnQuZmluZFJlYWN0Q29udGFpbmVyRm9ySUQoaWQpO1xuICAgIHJldHVybiBSZWFjdE1vdW50LmZpbmRDb21wb25lbnRSb290KHJlYWN0Um9vdCwgaWQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdXAgdGhlIGFuY2VzdG9ycyBvZiB0aGUgc3VwcGxpZWQgbm9kZSB0byBmaW5kIGEgbm9kZSB0aGF0IGlzIGFcbiAgICogRE9NIHJlcHJlc2VudGF0aW9uIG9mIGEgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGJ5IHRoaXMgY29weSBvZiBSZWFjdC5cbiAgICpcbiAgICogQHBhcmFtIHsqfSBub2RlXG4gICAqIEByZXR1cm4gez9ET01FdmVudFRhcmdldH1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRGaXJzdFJlYWN0RE9NOiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBmaW5kRmlyc3RSZWFjdERPTUltcGwobm9kZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbmRzIGEgbm9kZSB3aXRoIHRoZSBzdXBwbGllZCBgdGFyZ2V0SURgIGluc2lkZSBvZiB0aGUgc3VwcGxpZWRcbiAgICogYGFuY2VzdG9yTm9kZWAuICBFeHBsb2l0cyB0aGUgSUQgbmFtaW5nIHNjaGVtZSB0byBwZXJmb3JtIHRoZSBzZWFyY2hcbiAgICogcXVpY2tseS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gYW5jZXN0b3JOb2RlIFNlYXJjaCBmcm9tIHRoaXMgcm9vdC5cbiAgICogQHBhcmFybSB7c3RyaW5nfSB0YXJnZXRJRCBJRCBvZiB0aGUgRE9NIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBET00gbm9kZSB3aXRoIHRoZSBzdXBwbGllZCBgdGFyZ2V0SURgLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGZpbmRDb21wb25lbnRSb290OiBmdW5jdGlvbiAoYW5jZXN0b3JOb2RlLCB0YXJnZXRJRCkge1xuICAgIHZhciBmaXJzdENoaWxkcmVuID0gZmluZENvbXBvbmVudFJvb3RSZXVzYWJsZUFycmF5O1xuICAgIHZhciBjaGlsZEluZGV4ID0gMDtcblxuICAgIHZhciBkZWVwZXN0QW5jZXN0b3IgPSBmaW5kRGVlcGVzdENhY2hlZEFuY2VzdG9yKHRhcmdldElEKSB8fCBhbmNlc3Rvck5vZGU7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IG9uIHRoZSBuZXh0IGxpbmU7IGdpdmUgYW4gZWFybHkgd2FybmluZ1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGVlcGVzdEFuY2VzdG9yICE9IG51bGwsICdSZWFjdCBjYW5cXCd0IGZpbmQgdGhlIHJvb3QgY29tcG9uZW50IG5vZGUgZm9yIGRhdGEtcmVhY3RpZCB2YWx1ZSAnICsgJ2Alc2AuIElmIHlvdVxcJ3JlIHNlZWluZyB0aGlzIG1lc3NhZ2UsIGl0IHByb2JhYmx5IG1lYW5zIHRoYXQgJyArICd5b3VcXCd2ZSBsb2FkZWQgdHdvIGNvcGllcyBvZiBSZWFjdCBvbiB0aGUgcGFnZS4gQXQgdGhpcyB0aW1lLCBvbmx5ICcgKyAnYSBzaW5nbGUgY29weSBvZiBSZWFjdCBjYW4gYmUgbG9hZGVkIGF0IGEgdGltZS4nLCB0YXJnZXRJRCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZmlyc3RDaGlsZHJlblswXSA9IGRlZXBlc3RBbmNlc3Rvci5maXJzdENoaWxkO1xuICAgIGZpcnN0Q2hpbGRyZW4ubGVuZ3RoID0gMTtcblxuICAgIHdoaWxlIChjaGlsZEluZGV4IDwgZmlyc3RDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCA9IGZpcnN0Q2hpbGRyZW5bY2hpbGRJbmRleCsrXTtcbiAgICAgIHZhciB0YXJnZXRDaGlsZDtcblxuICAgICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICAgIHZhciBjaGlsZElEID0gUmVhY3RNb3VudC5nZXRJRChjaGlsZCk7XG4gICAgICAgIGlmIChjaGlsZElEKSB7XG4gICAgICAgICAgLy8gRXZlbiBpZiB3ZSBmaW5kIHRoZSBub2RlIHdlJ3JlIGxvb2tpbmcgZm9yLCB3ZSBmaW5pc2ggbG9vcGluZ1xuICAgICAgICAgIC8vIHRocm91Z2ggaXRzIHNpYmxpbmdzIHRvIGVuc3VyZSB0aGV5J3JlIGNhY2hlZCBzbyB0aGF0IHdlIGRvbid0IGhhdmVcbiAgICAgICAgICAvLyB0byByZXZpc2l0IHRoaXMgbm9kZSBhZ2Fpbi4gT3RoZXJ3aXNlLCB3ZSBtYWtlIG5eMiBjYWxscyB0byBnZXRJRFxuICAgICAgICAgIC8vIHdoZW4gdmlzaXRpbmcgdGhlIG1hbnkgY2hpbGRyZW4gb2YgYSBzaW5nbGUgbm9kZSBpbiBvcmRlci5cblxuICAgICAgICAgIGlmICh0YXJnZXRJRCA9PT0gY2hpbGRJRCkge1xuICAgICAgICAgICAgdGFyZ2V0Q2hpbGQgPSBjaGlsZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKFJlYWN0SW5zdGFuY2VIYW5kbGVzLmlzQW5jZXN0b3JJRE9mKGNoaWxkSUQsIHRhcmdldElEKSkge1xuICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIGNoaWxkIHdob3NlIElEIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBJRCxcbiAgICAgICAgICAgIC8vIHRoZW4gd2UgY2FuIGJlIHN1cmUgdGhhdCB3ZSBvbmx5IHdhbnQgdG8gc2VhcmNoIHRoZSBzdWJ0cmVlXG4gICAgICAgICAgICAvLyByb290ZWQgYXQgdGhpcyBjaGlsZCwgc28gd2UgY2FuIHRocm93IG91dCB0aGUgcmVzdCBvZiB0aGVcbiAgICAgICAgICAgIC8vIHNlYXJjaCBzdGF0ZS5cbiAgICAgICAgICAgIGZpcnN0Q2hpbGRyZW4ubGVuZ3RoID0gY2hpbGRJbmRleCA9IDA7XG4gICAgICAgICAgICBmaXJzdENoaWxkcmVuLnB1c2goY2hpbGQuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIHRoaXMgY2hpbGQgaGFkIG5vIElELCB0aGVuIHRoZXJlJ3MgYSBjaGFuY2UgdGhhdCBpdCB3YXNcbiAgICAgICAgICAvLyBpbmplY3RlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBicm93c2VyLCBhcyB3aGVuIGEgYDx0YWJsZT5gXG4gICAgICAgICAgLy8gZWxlbWVudCBzcHJvdXRzIGFuIGV4dHJhIGA8dGJvZHk+YCBjaGlsZCBhcyBhIHNpZGUgZWZmZWN0IG9mXG4gICAgICAgICAgLy8gYC5pbm5lckhUTUxgIHBhcnNpbmcuIE9wdGltaXN0aWNhbGx5IGNvbnRpbnVlIGRvd24gdGhpc1xuICAgICAgICAgIC8vIGJyYW5jaCwgYnV0IG5vdCBiZWZvcmUgZXhhbWluaW5nIHRoZSBvdGhlciBzaWJsaW5ncy5cbiAgICAgICAgICBmaXJzdENoaWxkcmVuLnB1c2goY2hpbGQuZmlyc3RDaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0Q2hpbGQpIHtcbiAgICAgICAgLy8gRW1wdHlpbmcgZmlyc3RDaGlsZHJlbi9maW5kQ29tcG9uZW50Um9vdFJldXNhYmxlQXJyYXkgaXNcbiAgICAgICAgLy8gbm90IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MsIGJ1dCBpdCBoZWxwcyB0aGUgR0MgcmVjbGFpbVxuICAgICAgICAvLyBhbnkgbm9kZXMgdGhhdCB3ZXJlIGxlZnQgYXQgdGhlIGVuZCBvZiB0aGUgc2VhcmNoLlxuICAgICAgICBmaXJzdENoaWxkcmVuLmxlbmd0aCA9IDA7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldENoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZpcnN0Q2hpbGRyZW4ubGVuZ3RoID0gMDtcblxuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kQ29tcG9uZW50Um9vdCguLi4sICVzKTogVW5hYmxlIHRvIGZpbmQgZWxlbWVudC4gVGhpcyBwcm9iYWJseSAnICsgJ21lYW5zIHRoZSBET00gd2FzIHVuZXhwZWN0ZWRseSBtdXRhdGVkIChlLmcuLCBieSB0aGUgYnJvd3NlciksICcgKyAndXN1YWxseSBkdWUgdG8gZm9yZ2V0dGluZyBhIDx0Ym9keT4gd2hlbiB1c2luZyB0YWJsZXMsIG5lc3RpbmcgdGFncyAnICsgJ2xpa2UgPGZvcm0+LCA8cD4sIG9yIDxhPiwgb3IgdXNpbmcgbm9uLVNWRyBlbGVtZW50cyBpbiBhbiA8c3ZnPiAnICsgJ3BhcmVudC4gJyArICdUcnkgaW5zcGVjdGluZyB0aGUgY2hpbGQgbm9kZXMgb2YgdGhlIGVsZW1lbnQgd2l0aCBSZWFjdCBJRCBgJXNgLicsIHRhcmdldElELCBSZWFjdE1vdW50LmdldElEKGFuY2VzdG9yTm9kZSkpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfSxcblxuICBfbW91bnRJbWFnZUludG9Ob2RlOiBmdW5jdGlvbiAobWFya3VwLCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbikge1xuICAgICEoY29udGFpbmVyICYmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ21vdW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgdmFsaWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHNob3VsZFJldXNlTWFya3VwKSB7XG4gICAgICB2YXIgcm9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgICAgIGlmIChSZWFjdE1hcmt1cENoZWNrc3VtLmNhblJldXNlTWFya3VwKG1hcmt1cCwgcm9vdEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjaGVja3N1bSA9IHJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG4gICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG5cbiAgICAgICAgdmFyIHJvb3RNYXJrdXAgPSByb290RWxlbWVudC5vdXRlckhUTUw7XG4gICAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0pO1xuXG4gICAgICAgIHZhciBub3JtYWxpemVkTWFya3VwID0gbWFya3VwO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIC8vIGJlY2F1c2Ugcm9vdE1hcmt1cCBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgRE9NLCB2YXJpb3VzIG5vcm1hbGl6YXRpb25zXG4gICAgICAgICAgLy8gd2lsbCBoYXZlIG9jY3VycmVkIHdoaWNoIHdpbGwgbm90IGJlIHByZXNlbnQgaW4gYG1hcmt1cGAuIEhlcmUsXG4gICAgICAgICAgLy8gaW5zZXJ0IG1hcmt1cCBpbnRvIGEgPGRpdj4gb3IgPGlmcmFtZT4gZGVwZW5kaW5nIG9uIHRoZSBjb250YWluZXJcbiAgICAgICAgICAvLyB0eXBlIHRvIHBlcmZvcm0gdGhlIHNhbWUgbm9ybWFsaXphdGlvbnMgYmVmb3JlIGNvbXBhcmluZy5cbiAgICAgICAgICB2YXIgbm9ybWFsaXplcjtcbiAgICAgICAgICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSkge1xuICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgbm9ybWFsaXplci5pbm5lckhUTUwgPSBtYXJrdXA7XG4gICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5pbm5lckhUTUw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9ybWFsaXplcik7XG4gICAgICAgICAgICBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVudC53cml0ZShtYXJrdXApO1xuICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUw7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG5vcm1hbGl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkaWZmSW5kZXggPSBmaXJzdERpZmZlcmVuY2VJbmRleChub3JtYWxpemVkTWFya3VwLCByb290TWFya3VwKTtcbiAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSAnIChjbGllbnQpICcgKyBub3JtYWxpemVkTWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApICsgJ1xcbiAoc2VydmVyKSAnICsgcm9vdE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKTtcblxuICAgICAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgdXNpbmcgJyArICdzZXJ2ZXIgcmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSAnICsgJ21lYW5zIHlvdSByZW5kZXJlZCBhIGRpZmZlcmVudCBjb21wb25lbnQgdHlwZSBvciBwcm9wcyBvbiAnICsgJ3RoZSBjbGllbnQgZnJvbSB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIsIG9yIHlvdXIgcmVuZGVyKCkgJyArICdtZXRob2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byAnICsgJ2Nyb3NzLWJyb3dzZXIgcXVpcmtzIGJ5IHJlbmRlcmluZyBhdCB0aGUgZG9jdW1lbnQgcm9vdC4gWW91ICcgKyAnc2hvdWxkIGxvb2sgZm9yIGVudmlyb25tZW50IGRlcGVuZGVudCBjb2RlIGluIHlvdXIgY29tcG9uZW50cyAnICsgJ2FuZCBlbnN1cmUgdGhlIHByb3BzIGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxcbiVzJywgZGlmZmVyZW5jZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdCBhdHRlbXB0ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0aGUgJyArICdjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5b3UgYXJlICcgKyAndXNpbmcgc2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlICcgKyAnc2VydmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3RpbmcuIFJlYWN0IGluamVjdGVkICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdvcmtzIGJ1dCB5b3UgaGF2ZSBsb3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVyIHJlbmRlcmluZy4gSW5zdGVhZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5nIGdlbmVyYXRlZCBpcyBkaWZmZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcXG4lcycsIGRpZmZlcmVuY2UpIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50IGJ1dCAnICsgJ3lvdSBkaWRuXFwndCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gV2UgY2FuXFwndCBkbyB0aGlzICcgKyAnd2l0aG91dCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcy4gJyArICdTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuICAgICAgfVxuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG1hcmt1cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElubmVySFRNTChjb250YWluZXIsIG1hcmt1cCk7XG4gICAgfVxuICB9LFxuXG4gIG93bmVyRG9jdW1lbnRDb250ZXh0S2V5OiBvd25lckRvY3VtZW50Q29udGV4dEtleSxcblxuICAvKipcbiAgICogUmVhY3QgSUQgdXRpbGl0aWVzLlxuICAgKi9cblxuICBnZXRSZWFjdFJvb3RJRDogZ2V0UmVhY3RSb290SUQsXG5cbiAgZ2V0SUQ6IGdldElELFxuXG4gIHNldElEOiBzZXRJRCxcblxuICBnZXROb2RlOiBnZXROb2RlLFxuXG4gIGdldE5vZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVGcm9tSW5zdGFuY2UsXG5cbiAgaXNWYWxpZDogaXNWYWxpZCxcblxuICBwdXJnZUlEOiBwdXJnZUlEXG59O1xuXG5SZWFjdFBlcmYubWVhc3VyZU1ldGhvZHMoUmVhY3RNb3VudCwgJ1JlYWN0TW91bnQnLCB7XG4gIF9yZW5kZXJOZXdSb290Q29tcG9uZW50OiAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQnLFxuICBfbW91bnRJbWFnZUludG9Ob2RlOiAnX21vdW50SW1hZ2VJbnRvTm9kZSdcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFMXZkVzUwTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVFc5MWJuUmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJFVDAxUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHZSRTlOVUhKdmNHVnlkSGtuS1R0Y2JuWmhjaUJTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaWNwTzF4dWRtRnlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU4xY25KbGJuUlBkMjVsY2ljcE8xeHVkbUZ5SUZKbFlXTjBSRTlOUm1WaGRIVnlaVVpzWVdkeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVVpsWVhSMWNtVkdiR0ZuY3ljcE8xeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JGYlhCMGVVTnZiWEJ2Ym1WdWRGSmxaMmx6ZEhKNUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnRjSFI1UTI5dGNHOXVaVzUwVW1WbmFYTjBjbmtuS1R0Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1uS1R0Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFRXRndJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRWx1YzNSaGJtTmxUV0Z3SnlrN1hHNTJZWElnVW1WaFkzUk5ZWEpyZFhCRGFHVmphM04xYlNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiU2NwTzF4dWRtRnlJRkpsWVdOMFVHVnlaaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRWlhKbUp5azdYRzUyWVhJZ1VtVmhZM1JTWldOdmJtTnBiR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZKbFkyOXVZMmxzWlhJbktUdGNiblpoY2lCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaVkYxWlhWbEp5azdYRzUyWVhJZ1VtVmhZM1JWY0dSaGRHVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpYTW5LVHRjYmx4dWRtRnlJR0Z6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2VDJKcVpXTjBMbUZ6YzJsbmJpY3BPMXh1ZG1GeUlHVnRjSFI1VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbFBZbXBsWTNRbktUdGNiblpoY2lCamIyNTBZV2x1YzA1dlpHVWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlqYjI1MFlXbHVjMDV2WkdVbktUdGNiblpoY2lCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdjMlYwU1c1dVpYSklWRTFNSUQwZ2NtVnhkV2x5WlNnbkxpOXpaWFJKYm01bGNraFVUVXduS1R0Y2JuWmhjaUJ6YUc5MWJHUlZjR1JoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmMyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5RbktUdGNiblpoY2lCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQnlaWEYxYVhKbEtDY3VMM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUJCVkZSU1gwNUJUVVVnUFNCRVQwMVFjbTl3WlhKMGVTNUpSRjlCVkZSU1NVSlZWRVZmVGtGTlJUdGNiblpoY2lCdWIyUmxRMkZqYUdVZ1BTQjdmVHRjYmx4dWRtRnlJRVZNUlUxRlRsUmZUazlFUlY5VVdWQkZJRDBnTVR0Y2JuWmhjaUJFVDBOZlRrOUVSVjlVV1ZCRklEMGdPVHRjYm5aaGNpQkVUME5WVFVWT1ZGOUdVa0ZIVFVWT1ZGOU9UMFJGWDFSWlVFVWdQU0F4TVR0Y2JseHVkbUZ5SUc5M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVJRDBnSjE5ZlVtVmhZM1JOYjNWdWRGOXZkMjVsY2tSdlkzVnRaVzUwSkNjZ0t5Qk5ZWFJvTG5KaGJtUnZiU2dwTG5SdlUzUnlhVzVuS0RNMktTNXpiR2xqWlNneUtUdGNibHh1THlvcUlFMWhjSEJwYm1jZ1puSnZiU0J5WldGamRGSnZiM1JKUkNCMGJ5QlNaV0ZqZENCamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVdUlDb3ZYRzUyWVhJZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEZKdmIzUkpSQ0E5SUh0OU8xeHVYRzR2S2lvZ1RXRndjR2x1WnlCbWNtOXRJSEpsWVdOMFVtOXZkRWxFSUhSdklHQmpiMjUwWVdsdVpYSmdJRzV2WkdWekxpQXFMMXh1ZG1GeUlHTnZiblJoYVc1bGNuTkNlVkpsWVdOMFVtOXZkRWxFSUQwZ2UzMDdYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDOHFLaUJmWDBSRlZsOWZMVzl1YkhrZ2JXRndjR2x1WnlCbWNtOXRJSEpsWVdOMFVtOXZkRWxFSUhSdklISnZiM1FnWld4bGJXVnVkSE11SUNvdlhHNGdJSFpoY2lCeWIyOTBSV3hsYldWdWRITkNlVkpsWVdOMFVtOXZkRWxFSUQwZ2UzMDdYRzU5WEc1Y2JpOHZJRlZ6WldRZ2RHOGdjM1J2Y21VZ1luSmxZV1IwYUMxbWFYSnpkQ0J6WldGeVkyZ2djM1JoZEdVZ2FXNGdabWx1WkVOdmJYQnZibVZ1ZEZKdmIzUXVYRzUyWVhJZ1ptbHVaRU52YlhCdmJtVnVkRkp2YjNSU1pYVnpZV0pzWlVGeWNtRjVJRDBnVzEwN1hHNWNiaThxS2x4dUlDb2dSbWx1WkhNZ2RHaGxJR2x1WkdWNElHOW1JSFJvWlNCbWFYSnpkQ0JqYUdGeVlXTjBaWEpjYmlBcUlIUm9ZWFFuY3lCdWIzUWdZMjl0Ylc5dUlHSmxkSGRsWlc0Z2RHaGxJSFIzYnlCbmFYWmxiaUJ6ZEhKcGJtZHpMbHh1SUNwY2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdkR2hsSUdsdVpHVjRJRzltSUhSb1pTQmphR0Z5WVdOMFpYSWdkMmhsY21VZ2RHaGxJSE4wY21sdVozTWdaR2wyWlhKblpWeHVJQ292WEc1bWRXNWpkR2x2YmlCbWFYSnpkRVJwWm1abGNtVnVZMlZKYm1SbGVDaHpkSEpwYm1jeExDQnpkSEpwYm1jeUtTQjdYRzRnSUhaaGNpQnRhVzVNWlc0Z1BTQk5ZWFJvTG0xcGJpaHpkSEpwYm1jeExteGxibWQwYUN3Z2MzUnlhVzVuTWk1c1pXNW5kR2dwTzF4dUlDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJRzFwYmt4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnYVdZZ0tITjBjbWx1WnpFdVkyaGhja0YwS0drcElDRTlQU0J6ZEhKcGJtY3lMbU5vWVhKQmRDaHBLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkSEpwYm1jeExteGxibWQwYUNBOVBUMGdjM1J5YVc1bk1pNXNaVzVuZEdnZ1B5QXRNU0E2SUcxcGJreGxianRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjhSRTlOUkc5amRXMWxiblI5SUdOdmJuUmhhVzVsY2lCRVQwMGdaV3hsYldWdWRDQjBhR0YwSUcxaGVTQmpiMjUwWVdsdVhHNGdLaUJoSUZKbFlXTjBJR052YlhCdmJtVnVkRnh1SUNvZ1FISmxkSFZ5YmlCN1B5cDlJRVJQVFNCbGJHVnRaVzUwSUhSb1lYUWdiV0Y1SUdoaGRtVWdkR2hsSUhKbFlXTjBVbTl2ZENCSlJDd2diM0lnYm5Wc2JDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBVbVZoWTNSU2IyOTBSV3hsYldWdWRFbHVRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWtnZTF4dUlDQnBaaUFvSVdOdmJuUmhhVzVsY2lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBOVBUMGdSRTlEWDA1UFJFVmZWRmxRUlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJqYjI1MFlXbHVaWEl1Wkc5amRXMWxiblJGYkdWdFpXNTBPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQmpiMjUwWVdsdVpYSXVabWx5YzNSRGFHbHNaRHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJSFJvWVhRZ2JXRjVJR052Ym5SaGFXNGdZU0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnS2lCQWNtVjBkWEp1SUhzL2MzUnlhVzVuZlNCQklGd2ljbVZoWTNSU2IyOTBYQ0lnU1VRc0lHbG1JR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJR2x6SUhKbGJtUmxjbVZrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSU1pXRmpkRkp2YjNSSlJDaGpiMjUwWVdsdVpYSXBJSHRjYmlBZ2RtRnlJSEp2YjNSRmJHVnRaVzUwSUQwZ1oyVjBVbVZoWTNSU2IyOTBSV3hsYldWdWRFbHVRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWs3WEc0Z0lISmxkSFZ5YmlCeWIyOTBSV3hsYldWdWRDQW1KaUJTWldGamRFMXZkVzUwTG1kbGRFbEVLSEp2YjNSRmJHVnRaVzUwS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJCWTJObGMzTnBibWNnYm05a1pWdEJWRlJTWDA1QlRVVmRJRzl5SUdOaGJHeHBibWNnWjJWMFFYUjBjbWxpZFhSbEtFRlVWRkpmVGtGTlJTa2diMjRnWVNCbWIzSnRYRzRnS2lCbGJHVnRaVzUwSUdOaGJpQnlaWFIxY200Z2FYUnpJR052Ym5SeWIyd2dkMmh2YzJVZ2JtRnRaU0J2Y2lCSlJDQmxjWFZoYkhNZ1FWUlVVbDlPUVUxRkxpQkJiR3hjYmlBcUlFUlBUU0J1YjJSbGN5QnpkWEJ3YjNKMElHQm5aWFJCZEhSeWFXSjFkR1ZPYjJSbFlDQmlkWFFnZEdocGN5QmpZVzRnWVd4emJ5Qm5aWFFnWTJGc2JHVmtJRzl1WEc0Z0tpQnZkR2hsY2lCdlltcGxZM1J6SUhOdklHcDFjM1FnY21WMGRYSnVJQ2NuSUdsbUlIZGxKM0psSUdkcGRtVnVJSE52YldWMGFHbHVaeUJ2ZEdobGNpQjBhR0Z1SUdGY2JpQXFJRVJQVFNCdWIyUmxJQ2h6ZFdOb0lHRnpJSGRwYm1SdmR5a3VYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9SRTlOUld4bGJXVnVkSHhFVDAxWGFXNWtiM2Q4UkU5TlJHOWpkVzFsYm5SOFJFOU5WR1Y0ZEU1dlpHVjlJRzV2WkdVZ1JFOU5JRzV2WkdVdVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRWxFSUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0JnWkc5dFRtOWtaV0F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEVsRUtHNXZaR1VwSUh0Y2JpQWdkbUZ5SUdsa0lEMGdhVzUwWlhKdVlXeEhaWFJKUkNodWIyUmxLVHRjYmlBZ2FXWWdLR2xrS1NCN1hHNGdJQ0FnYVdZZ0tHNXZaR1ZEWVdOb1pTNW9ZWE5QZDI1UWNtOXdaWEowZVNocFpDa3BJSHRjYmlBZ0lDQWdJSFpoY2lCallXTm9aV1FnUFNCdWIyUmxRMkZqYUdWYmFXUmRPMXh1SUNBZ0lDQWdhV1lnS0dOaFkyaGxaQ0FoUFQwZ2JtOWtaU2tnZTF4dUlDQWdJQ0FnSUNBaElXbHpWbUZzYVdRb1kyRmphR1ZrTENCcFpDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JOYjNWdWREb2dWSGR2SUhaaGJHbGtJR0oxZENCMWJtVnhkV0ZzSUc1dlpHVnpJSGRwZEdnZ2RHaGxJSE5oYldVZ1lDVnpZRG9nSlhNbkxDQkJWRlJTWDA1QlRVVXNJR2xrS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJQ0FnYm05a1pVTmhZMmhsVzJsa1hTQTlJRzV2WkdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJRzV2WkdWRFlXTm9aVnRwWkYwZ1BTQnViMlJsTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJwWkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYVc1MFpYSnVZV3hIWlhSSlJDaHViMlJsS1NCN1hHNGdJQzh2SUVsbUlHNXZaR1VnYVhNZ2MyOXRaWFJvYVc1bklHeHBhMlVnWVNCM2FXNWtiM2NzSUdSdlkzVnRaVzUwTENCdmNpQjBaWGgwSUc1dlpHVXNJRzV2Ym1VZ2IyWmNiaUFnTHk4Z2QyaHBZMmdnYzNWd2NHOXlkQ0JoZEhSeWFXSjFkR1Z6SUc5eUlHRWdMbWRsZEVGMGRISnBZblYwWlNCdFpYUm9iMlFzSUdkeVlXTmxablZzYkhrZ2NtVjBkWEp1WEc0Z0lDOHZJSFJvWlNCbGJYQjBlU0J6ZEhKcGJtY3NJR0Z6SUdsbUlIUm9aU0JoZEhSeWFXSjFkR1VnZDJWeVpTQnRhWE56YVc1bkxseHVJQ0J5WlhSMWNtNGdibTlrWlNBbUppQnViMlJsTG1kbGRFRjBkSEpwWW5WMFpTQW1KaUJ1YjJSbExtZGxkRUYwZEhKcFluVjBaU2hCVkZSU1gwNUJUVVVwSUh4OElDY25PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmxkSE1nZEdobElGSmxZV04wTFhOd1pXTnBabWxqSUVsRUlHOW1JSFJvWlNCbmFYWmxiaUJ1YjJSbExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdibTlrWlNCVWFHVWdSRTlOSUc1dlpHVWdkMmh2YzJVZ1NVUWdkMmxzYkNCaVpTQnpaWFF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdWR2hsSUhaaGJIVmxJRzltSUhSb1pTQkpSQ0JoZEhSeWFXSjFkR1V1WEc0Z0tpOWNibVoxYm1OMGFXOXVJSE5sZEVsRUtHNXZaR1VzSUdsa0tTQjdYRzRnSUhaaGNpQnZiR1JKUkNBOUlHbHVkR1Z5Ym1Gc1IyVjBTVVFvYm05a1pTazdYRzRnSUdsbUlDaHZiR1JKUkNBaFBUMGdhV1FwSUh0Y2JpQWdJQ0JrWld4bGRHVWdibTlrWlVOaFkyaGxXMjlzWkVsRVhUdGNiaUFnZlZ4dUlDQnViMlJsTG5ObGRFRjBkSEpwWW5WMFpTaEJWRlJTWDA1QlRVVXNJR2xrS1R0Y2JpQWdibTlrWlVOaFkyaGxXMmxrWFNBOUlHNXZaR1U3WEc1OVhHNWNiaThxS2x4dUlDb2dSbWx1WkhNZ2RHaGxJRzV2WkdVZ2QybDBhQ0IwYUdVZ2MzVndjR3hwWldRZ1VtVmhZM1F0WjJWdVpYSmhkR1ZrSUVSUFRTQkpSQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnUVNCU1pXRmpkQzFuWlc1bGNtRjBaV1FnUkU5TklFbEVMbHh1SUNvZ1FISmxkSFZ5YmlCN1JFOU5SV3hsYldWdWRIMGdSRTlOSUc1dlpHVWdkMmwwYUNCMGFHVWdjM1Z3Y0d4bFpDQmdhV1JnTGx4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRTV2WkdVb2FXUXBJSHRjYmlBZ2FXWWdLQ0Z1YjJSbFEyRmphR1V1YUdGelQzZHVVSEp2Y0dWeWRIa29hV1FwSUh4OElDRnBjMVpoYkdsa0tHNXZaR1ZEWVdOb1pWdHBaRjBzSUdsa0tTa2dlMXh1SUNBZ0lHNXZaR1ZEWVdOb1pWdHBaRjBnUFNCU1pXRmpkRTF2ZFc1MExtWnBibVJTWldGamRFNXZaR1ZDZVVsRUtHbGtLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdibTlrWlVOaFkyaGxXMmxrWFR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QjBhR1VnYm05a1pTQjNhWFJvSUhSb1pTQnpkWEJ3YkdsbFpDQndkV0pzYVdNZ1VtVmhZM1FnYVc1emRHRnVZMlV1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHNxZlNCcGJuTjBZVzVqWlNCQklIQjFZbXhwWXlCU1pXRmpkQ0JwYm5OMFlXNWpaUzVjYmlBcUlFQnlaWFIxY200Z2V6OUVUMDFGYkdWdFpXNTBmU0JFVDAwZ2JtOWtaU0IzYVhSb0lIUm9aU0J6ZFhCd2JHVmtJR0JwWkdBdVhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwVG05a1pVWnliMjFKYm5OMFlXNWpaU2hwYm5OMFlXNWpaU2tnZTF4dUlDQjJZWElnYVdRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0xtZGxkQ2hwYm5OMFlXNWpaU2t1WDNKdmIzUk9iMlJsU1VRN1hHNGdJR2xtSUNoU1pXRmpkRVZ0Y0hSNVEyOXRjRzl1Wlc1MFVtVm5hWE4wY25rdWFYTk9kV3hzUTI5dGNHOXVaVzUwU1VRb2FXUXBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNiaUFnYVdZZ0tDRnViMlJsUTJGamFHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2FXUXBJSHg4SUNGcGMxWmhiR2xrS0c1dlpHVkRZV05vWlZ0cFpGMHNJR2xrS1NrZ2UxeHVJQ0FnSUc1dlpHVkRZV05vWlZ0cFpGMGdQU0JTWldGamRFMXZkVzUwTG1acGJtUlNaV0ZqZEU1dlpHVkNlVWxFS0dsa0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JtOWtaVU5oWTJobFcybGtYVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkJJRzV2WkdVZ2FYTWdYQ0oyWVd4cFpGd2lJR2xtSUdsMElHbHpJR052Ym5SaGFXNWxaQ0JpZVNCaElHTjFjbkpsYm5Sc2VTQnRiM1Z1ZEdWa0lHTnZiblJoYVc1bGNpNWNiaUFxWEc0Z0tpQlVhR2x6SUcxbFlXNXpJSFJvWVhRZ2RHaGxJRzV2WkdVZ1pHOWxjeUJ1YjNRZ2FHRjJaU0IwYnlCaVpTQmpiMjUwWVdsdVpXUWdZbmtnWVNCa2IyTjFiV1Z1ZENCcGJseHVJQ29nYjNKa1pYSWdkRzhnWW1VZ1kyOXVjMmxrWlhKbFpDQjJZV3hwWkM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZXo5RVQwMUZiR1Z0Wlc1MGZTQnViMlJsSUZSb1pTQmpZVzVrYVdSaGRHVWdSRTlOSUc1dlpHVXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1ZHaGxJR1Y0Y0dWamRHVmtJRWxFSUc5bUlIUm9aU0J1YjJSbExseHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVjJobGRHaGxjaUIwYUdVZ2JtOWtaU0JwY3lCamIyNTBZV2x1WldRZ1lua2dZU0J0YjNWdWRHVmtJR052Ym5SaGFXNWxjaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhWE5XWVd4cFpDaHViMlJsTENCcFpDa2dlMXh1SUNCcFppQW9ibTlrWlNrZ2UxeHVJQ0FnSUNFb2FXNTBaWEp1WVd4SFpYUkpSQ2h1YjJSbEtTQTlQVDBnYVdRcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBUVzkxYm5RNklGVnVaWGh3WldOMFpXUWdiVzlrYVdacFkyRjBhVzl1SUc5bUlHQWxjMkFuTENCQlZGUlNYMDVCVFVVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSFpoY2lCamIyNTBZV2x1WlhJZ1BTQlNaV0ZqZEUxdmRXNTBMbVpwYm1SU1pXRmpkRU52Ym5SaGFXNWxja1p2Y2tsRUtHbGtLVHRjYmlBZ0lDQnBaaUFvWTI5dWRHRnBibVZ5SUNZbUlHTnZiblJoYVc1elRtOWtaU2hqYjI1MFlXbHVaWElzSUc1dlpHVXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyRjFjMlZ6SUhSb1pTQmpZV05vWlNCMGJ5Qm1iM0puWlhRZ1lXSnZkWFFnYjI1bElGSmxZV04wTFhOd1pXTnBabWxqSUVsRUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQlVhR1VnU1VRZ2RHOGdabTl5WjJWMExseHVJQ292WEc1bWRXNWpkR2x2YmlCd2RYSm5aVWxFS0dsa0tTQjdYRzRnSUdSbGJHVjBaU0J1YjJSbFEyRmphR1ZiYVdSZE8xeHVmVnh1WEc1MllYSWdaR1ZsY0dWemRFNXZaR1ZUYjBaaGNpQTlJRzUxYkd3N1hHNW1kVzVqZEdsdmJpQm1hVzVrUkdWbGNHVnpkRU5oWTJobFpFRnVZMlZ6ZEc5eVNXMXdiQ2hoYm1ObGMzUnZja2xFS1NCN1hHNGdJSFpoY2lCaGJtTmxjM1J2Y2lBOUlHNXZaR1ZEWVdOb1pWdGhibU5sYzNSdmNrbEVYVHRjYmlBZ2FXWWdLR0Z1WTJWemRHOXlJQ1ltSUdselZtRnNhV1FvWVc1alpYTjBiM0lzSUdGdVkyVnpkRzl5U1VRcEtTQjdYRzRnSUNBZ1pHVmxjR1Z6ZEU1dlpHVlRiMFpoY2lBOUlHRnVZMlZ6ZEc5eU8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDOHZJRlJvYVhNZ2JtOWtaU0JwYzI0bmRDQndiM0IxYkdGMFpXUWdhVzRnZEdobElHTmhZMmhsTENCemJ5QndjbVZ6ZFcxaFlteDVJRzV2Ym1VZ2IyWWdhWFJ6WEc0Z0lDQWdMeThnWkdWelkyVnVaR0Z1ZEhNZ1lYSmxMaUJDY21WaGF5QnZkWFFnYjJZZ2RHaGxJR3h2YjNBdVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdUlIUm9aU0JrWldWd1pYTjBJR05oWTJobFpDQnViMlJsSUhkb2IzTmxJRWxFSUdseklHRWdjSEpsWm1sNElHOW1JR0IwWVhKblpYUkpSR0F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1pwYm1SRVpXVndaWE4wUTJGamFHVmtRVzVqWlhOMGIzSW9kR0Z5WjJWMFNVUXBJSHRjYmlBZ1pHVmxjR1Z6ZEU1dlpHVlRiMFpoY2lBOUlHNTFiR3c3WEc0Z0lGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMblJ5WVhabGNuTmxRVzVqWlhOMGIzSnpLSFJoY21kbGRFbEVMQ0JtYVc1a1JHVmxjR1Z6ZEVOaFkyaGxaRUZ1WTJWemRHOXlTVzF3YkNrN1hHNWNiaUFnZG1GeUlHWnZkVzVrVG05a1pTQTlJR1JsWlhCbGMzUk9iMlJsVTI5R1lYSTdYRzRnSUdSbFpYQmxjM1JPYjJSbFUyOUdZWElnUFNCdWRXeHNPMXh1SUNCeVpYUjFjbTRnWm05MWJtUk9iMlJsTzF4dWZWeHVYRzR2S2lwY2JpQXFJRTF2ZFc1MGN5QjBhR2x6SUdOdmJYQnZibVZ1ZENCaGJtUWdhVzV6WlhKMGN5QnBkQ0JwYm5SdklIUm9aU0JFVDAwdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUnZJRzF2ZFc1MExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEp2YjNSSlJDQkVUMDBnU1VRZ2IyWWdkR2hsSUhKdmIzUWdibTlrWlM1Y2JpQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUVSUFRTQmxiR1Z0Wlc1MElIUnZJRzF2ZFc1MElHbHVkRzh1WEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUhOb2IzVnNaRkpsZFhObFRXRnlhM1Z3SUVsbUlIUnlkV1VzSUdSdklHNXZkQ0JwYm5ObGNuUWdiV0Z5YTNWd1hHNGdLaTljYm1aMWJtTjBhVzl1SUcxdmRXNTBRMjl0Y0c5dVpXNTBTVzUwYjA1dlpHVW9ZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJSEp2YjNSSlJDd2dZMjl1ZEdGcGJtVnlMQ0IwY21GdWMyRmpkR2x2Yml3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lHTnZiblJsZUhRcElIdGNiaUFnYVdZZ0tGSmxZV04wUkU5TlJtVmhkSFZ5WlVac1lXZHpMblZ6WlVOeVpXRjBaVVZzWlcxbGJuUXBJSHRjYmlBZ0lDQmpiMjUwWlhoMElEMGdZWE56YVdkdUtIdDlMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQnBaaUFvWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkVUME5mVGs5RVJWOVVXVkJGS1NCN1hHNGdJQ0FnSUNCamIyNTBaWGgwVzI5M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVYU0E5SUdOdmJuUmhhVzVsY2p0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMjl1ZEdWNGRGdHZkMjVsY2tSdlkzVnRaVzUwUTI5dWRHVjRkRXRsZVYwZ1BTQmpiMjUwWVdsdVpYSXViM2R1WlhKRWIyTjFiV1Z1ZER0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQnBaaUFvWTI5dWRHVjRkQ0E5UFQwZ1pXMXdkSGxQWW1wbFkzUXBJSHRjYmlBZ0lDQWdJR052Ym5SbGVIUWdQU0I3ZlR0Y2JpQWdJQ0I5WEc0Z0lDQWdkbUZ5SUhSaFp5QTlJR052Ym5SaGFXNWxjaTV1YjJSbFRtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUdOdmJuUmxlSFJiZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG1GdVkyVnpkRzl5U1c1bWIwTnZiblJsZUhSTFpYbGRJRDBnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG5Wd1pHRjBaV1JCYm1ObGMzUnZja2x1Wm04b2JuVnNiQ3dnZEdGbkxDQnVkV3hzS1R0Y2JpQWdmVnh1SUNCMllYSWdiV0Z5YTNWd0lEMGdVbVZoWTNSU1pXTnZibU5wYkdWeUxtMXZkVzUwUTI5dGNHOXVaVzUwS0dOdmJYQnZibVZ1ZEVsdWMzUmhibU5sTENCeWIyOTBTVVFzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtUdGNiaUFnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlV1WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTGw5MGIzQk1aWFpsYkZkeVlYQndaWElnUFNCamIyMXdiMjVsYm5SSmJuTjBZVzVqWlR0Y2JpQWdVbVZoWTNSTmIzVnVkQzVmYlc5MWJuUkpiV0ZuWlVsdWRHOU9iMlJsS0cxaGNtdDFjQ3dnWTI5dWRHRnBibVZ5TENCemFHOTFiR1JTWlhWelpVMWhjbXQxY0N3Z2RISmhibk5oWTNScGIyNHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFSmhkR05vWldRZ2JXOTFiblF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklHMXZkVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISnZiM1JKUkNCRVQwMGdTVVFnYjJZZ2RHaGxJSEp2YjNRZ2JtOWtaUzVjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSdklHMXZkVzUwSUdsdWRHOHVYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUhOb2IzVnNaRkpsZFhObFRXRnlhM1Z3SUVsbUlIUnlkV1VzSUdSdklHNXZkQ0JwYm5ObGNuUWdiV0Z5YTNWd1hHNGdLaTljYm1aMWJtTjBhVzl1SUdKaGRHTm9aV1JOYjNWdWRFTnZiWEJ2Ym1WdWRFbHVkRzlPYjJSbEtHTnZiWEJ2Ym1WdWRFbHVjM1JoYm1ObExDQnliMjkwU1VRc0lHTnZiblJoYVc1bGNpd2djMmh2ZFd4a1VtVjFjMlZOWVhKcmRYQXNJR052Ym5SbGVIUXBJSHRjYmlBZ2RtRnlJSFJ5WVc1ellXTjBhVzl1SUQwZ1VtVmhZM1JWY0dSaGRHVnpMbEpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNHVaMlYwVUc5dmJHVmtLRnh1SUNBdktpQm1iM0pqWlVoVVRVd2dLaTl6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ2s3WEc0Z0lIUnlZVzV6WVdOMGFXOXVMbkJsY21admNtMG9iVzkxYm5SRGIyMXdiMjVsYm5SSmJuUnZUbTlrWlN3Z2JuVnNiQ3dnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVzSUhKdmIzUkpSQ3dnWTI5dWRHRnBibVZ5TENCMGNtRnVjMkZqZEdsdmJpd2djMmh2ZFd4a1VtVjFjMlZOWVhKcmRYQXNJR052Ym5SbGVIUXBPMXh1SUNCU1pXRmpkRlZ3WkdGMFpYTXVVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJpNXlaV3hsWVhObEtIUnlZVzV6WVdOMGFXOXVLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlZibTF2ZFc1MGN5QmhJR052YlhCdmJtVnVkQ0JoYm1RZ2NtVnRiM1psY3lCcGRDQm1jbTl0SUhSb1pTQkVUMDB1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdhVzV6ZEdGdVkyVWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObExseHVJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCamIyNTBZV2x1WlhJZ1JFOU5JR1ZzWlcxbGJuUWdkRzhnZFc1dGIzVnVkQ0JtY205dExseHVJQ29nUUdacGJtRnNYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFJRUJ6WldVZ2UxSmxZV04wVFc5MWJuUXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFRjBUbTlrWlgxY2JpQXFMMXh1Wm5WdVkzUnBiMjRnZFc1dGIzVnVkRU52YlhCdmJtVnVkRVp5YjIxT2IyUmxLR2x1YzNSaGJtTmxMQ0JqYjI1MFlXbHVaWElwSUh0Y2JpQWdVbVZoWTNSU1pXTnZibU5wYkdWeUxuVnViVzkxYm5SRGIyMXdiMjVsYm5Rb2FXNXpkR0Z1WTJVcE8xeHVYRzRnSUdsbUlDaGpiMjUwWVdsdVpYSXVibTlrWlZSNWNHVWdQVDA5SUVSUFExOU9UMFJGWDFSWlVFVXBJSHRjYmlBZ0lDQmpiMjUwWVdsdVpYSWdQU0JqYjI1MFlXbHVaWEl1Wkc5amRXMWxiblJGYkdWdFpXNTBPMXh1SUNCOVhHNWNiaUFnTHk4Z2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdlpXMXdkSGxwYm1jdFlTMXViMlJsWEc0Z0lIZG9hV3hsSUNoamIyNTBZV2x1WlhJdWJHRnpkRU5vYVd4a0tTQjdYRzRnSUNBZ1kyOXVkR0ZwYm1WeUxuSmxiVzkyWlVOb2FXeGtLR052Ym5SaGFXNWxjaTVzWVhOMFEyaHBiR1FwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZISjFaU0JwWmlCMGFHVWdjM1Z3Y0d4cFpXUWdSRTlOSUc1dlpHVWdhR0Z6SUdFZ1pHbHlaV04wSUZKbFlXTjBMWEpsYm1SbGNtVmtJR05vYVd4a0lIUm9ZWFFnYVhOY2JpQXFJRzV2ZENCaElGSmxZV04wSUhKdmIzUWdaV3hsYldWdWRDNGdWWE5sWm5Wc0lHWnZjaUIzWVhKdWFXNW5JR2x1SUdCeVpXNWtaWEpnTEZ4dUlDb2dZSFZ1Ylc5MWJuUkRiMjF3YjI1bGJuUkJkRTV2WkdWZ0xDQmxkR011WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHMvUkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaU0JVYUdVZ1kyRnVaR2xrWVhSbElFUlBUU0J1YjJSbExseHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUIwYUdVZ1JFOU5JR1ZzWlcxbGJuUWdZMjl1ZEdGcGJuTWdZU0JrYVhKbFkzUWdZMmhwYkdRZ2RHaGhkQ0IzWVhOY2JpQXFJSEpsYm1SbGNtVmtJR0o1SUZKbFlXTjBJR0oxZENCcGN5QnViM1FnWVNCeWIyOTBJR1ZzWlcxbGJuUXVYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYUdGelRtOXVVbTl2ZEZKbFlXTjBRMmhwYkdRb2JtOWtaU2tnZTF4dUlDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQm5aWFJTWldGamRGSnZiM1JKUkNodWIyUmxLVHRjYmlBZ2NtVjBkWEp1SUhKbFlXTjBVbTl2ZEVsRUlEOGdjbVZoWTNSU2IyOTBTVVFnSVQwOUlGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMbWRsZEZKbFlXTjBVbTl2ZEVsRVJuSnZiVTV2WkdWSlJDaHlaV0ZqZEZKdmIzUkpSQ2tnT2lCbVlXeHpaVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklIUm9aU0JtYVhKemRDQW9aR1ZsY0dWemRDa2dZVzVqWlhOMGIzSWdiMllnWVNCdWIyUmxJSGRvYVdOb0lHbHpJSEpsYm1SbGNtVmtJR0o1SUhSb2FYTWdZMjl3ZVZ4dUlDb2diMllnVW1WaFkzUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHWnBibVJHYVhKemRGSmxZV04wUkU5TlNXMXdiQ2h1YjJSbEtTQjdYRzRnSUM4dklGUm9hWE1nYm05a1pTQnRhV2RvZENCaVpTQm1jbTl0SUdGdWIzUm9aWElnVW1WaFkzUWdhVzV6ZEdGdVkyVXNJSE52SUhkbElHMWhhMlVnYzNWeVpTQnViM1FnZEc5Y2JpQWdMeThnWlhoaGJXbHVaU0IwYUdVZ2JtOWtaU0JqWVdOb1pTQm9aWEpsWEc0Z0lHWnZjaUFvT3lCdWIyUmxJQ1ltSUc1dlpHVXVjR0Z5Wlc1MFRtOWtaU0FoUFQwZ2JtOWtaVHNnYm05a1pTQTlJRzV2WkdVdWNHRnlaVzUwVG05a1pTa2dlMXh1SUNBZ0lHbG1JQ2h1YjJSbExtNXZaR1ZVZVhCbElDRTlQU0F4S1NCN1hHNGdJQ0FnSUNBdkx5Qk9iM1FnWVNCRVQwMUZiR1Z0Wlc1MExDQjBhR1Z5WldadmNtVWdibTkwSUdFZ1VtVmhZM1FnWTI5dGNHOXVaVzUwWEc0Z0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJRzV2WkdWSlJDQTlJR2x1ZEdWeWJtRnNSMlYwU1VRb2JtOWtaU2s3WEc0Z0lDQWdhV1lnS0NGdWIyUmxTVVFwSUh0Y2JpQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJSDFjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVuWlhSU1pXRmpkRkp2YjNSSlJFWnliMjFPYjJSbFNVUW9ibTlrWlVsRUtUdGNibHh1SUNBZ0lDOHZJRWxtSUdOdmJuUmhhVzVsY25OQ2VWSmxZV04wVW05dmRFbEVJR052Ym5SaGFXNXpJSFJvWlNCamIyNTBZV2x1WlhJZ2QyVWdabWx1WkNCaWVTQmpjbUYzYkdsdVp5QjFjRnh1SUNBZ0lDOHZJSFJvWlNCMGNtVmxMQ0IzWlNCcmJtOTNJSFJvWVhRZ2RHaHBjeUJwYm5OMFlXNWpaU0J2WmlCU1pXRmpkQ0J5Wlc1a1pYSmxaQ0IwYUdVZ2JtOWtaUzVjYmlBZ0lDQXZMeUJ1WWk0Z2FYTldZV3hwWkNkeklITjBjbUYwWldkNUlDaDNhWFJvSUdOdmJuUmhhVzV6VG05a1pTa2daRzlsY3lCdWIzUWdkMjl5YXlCaVpXTmhkWE5sSUhKbGJtUmxjbHh1SUNBZ0lDOHZJSFJ5WldWeklHMWhlU0JpWlNCdVpYTjBaV1FnWVc1a0lIZGxJR1J2YmlkMElIZGhiblFnWVNCbVlXeHpaU0J3YjNOcGRHbDJaU0JwYmlCMGFHRjBJR05oYzJVdVhHNGdJQ0FnZG1GeUlHTjFjbkpsYm5RZ1BTQnViMlJsTzF4dUlDQWdJSFpoY2lCc1lYTjBTVVE3WEc0Z0lDQWdaRzhnZTF4dUlDQWdJQ0FnYkdGemRFbEVJRDBnYVc1MFpYSnVZV3hIWlhSSlJDaGpkWEp5Wlc1MEtUdGNiaUFnSUNBZ0lHTjFjbkpsYm5RZ1BTQmpkWEp5Wlc1MExuQmhjbVZ1ZEU1dlpHVTdYRzRnSUNBZ0lDQnBaaUFvWTNWeWNtVnVkQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGUm9aU0J3WVhOelpXUXRhVzRnYm05a1pTQm9ZWE1nWW1WbGJpQmtaWFJoWTJobFpDQm1jbTl0SUhSb1pTQmpiMjUwWVdsdVpYSWdhWFFnZDJGelhHNGdJQ0FnSUNBZ0lDOHZJRzl5YVdkcGJtRnNiSGtnY21WdVpHVnlaV1FnYVc1MGJ5NWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0IzYUdsc1pTQW9iR0Z6ZEVsRUlDRTlQU0J5WldGamRGSnZiM1JKUkNrN1hHNWNiaUFnSUNCcFppQW9ZM1Z5Y21WdWRDQTlQVDBnWTI5dWRHRnBibVZ5YzBKNVVtVmhZM1JTYjI5MFNVUmJjbVZoWTNSU2IyOTBTVVJkS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm05a1pUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZHVnRjRzl5WVhKNUlDZy9LU0JvWVdOcklITnZJSFJvWVhRZ2QyVWdZMkZ1SUhOMGIzSmxJR0ZzYkNCMGIzQXRiR1YyWld3Z2NHVnVaR2x1WnlCMWNHUmhkR1Z6SUc5dVhHNGdLaUJqYjIxd2IzTnBkR1Z6SUdsdWMzUmxZV1FnYjJZZ2FHRjJhVzVuSUhSdklIZHZjbko1SUdGaWIzVjBJR1JwWm1abGNtVnVkQ0IwZVhCbGN5QnZaaUJqYjIxd2IyNWxiblJ6WEc0Z0tpQm9aWEpsTGx4dUlDb3ZYRzUyWVhJZ1ZHOXdUR1YyWld4WGNtRndjR1Z5SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMzA3WEc1VWIzQk1aWFpsYkZkeVlYQndaWEl1Y0hKdmRHOTBlWEJsTG1selVtVmhZM1JEYjIxd2IyNWxiblFnUFNCN2ZUdGNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUZSdmNFeGxkbVZzVjNKaGNIQmxjaTVrYVhOd2JHRjVUbUZ0WlNBOUlDZFViM0JNWlhabGJGZHlZWEJ3WlhJbk8xeHVmVnh1Vkc5d1RHVjJaV3hYY21Gd2NHVnlMbkJ5YjNSdmRIbHdaUzV5Wlc1a1pYSWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQzh2SUhSb2FYTXVjSEp2Y0hNZ2FYTWdZV04wZFdGc2JIa2dZU0JTWldGamRFVnNaVzFsYm5SY2JpQWdjbVYwZFhKdUlIUm9hWE11Y0hKdmNITTdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFMXZkVzUwYVc1bklHbHpJSFJvWlNCd2NtOWpaWE56SUc5bUlHbHVhWFJwWVd4cGVtbHVaeUJoSUZKbFlXTjBJR052YlhCdmJtVnVkQ0JpZVNCamNtVmhkR2x1WnlCcGRITmNiaUFxSUhKbGNISmxjMlZ1ZEdGMGFYWmxJRVJQVFNCbGJHVnRaVzUwY3lCaGJtUWdhVzV6WlhKMGFXNW5JSFJvWlcwZ2FXNTBieUJoSUhOMWNIQnNhV1ZrSUdCamIyNTBZV2x1WlhKZ0xseHVJQ29nUVc1NUlIQnlhVzl5SUdOdmJuUmxiblFnYVc1emFXUmxJR0JqYjI1MFlXbHVaWEpnSUdseklHUmxjM1J5YjNsbFpDQnBiaUIwYUdVZ2NISnZZMlZ6Y3k1Y2JpQXFYRzRnS2lBZ0lGSmxZV04wVFc5MWJuUXVjbVZ1WkdWeUtGeHVJQ29nSUNBZ0lHTnZiWEJ2Ym1WdWRDeGNiaUFxSUNBZ0lDQmtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnblkyOXVkR0ZwYm1WeUp5bGNiaUFxSUNBZ0tUdGNiaUFxWEc0Z0tpQWdJRHhrYVhZZ2FXUTlYQ0pqYjI1MFlXbHVaWEpjSWo0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDMHRJRk4xY0hCc2FXVmtJR0JqYjI1MFlXbHVaWEpnTGx4dUlDb2dJQ0FnSUR4a2FYWWdaR0YwWVMxeVpXRmpkR2xrUFZ3aUxqTmNJajRnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3RMU0JTWlc1a1pYSmxaQ0J5WldGamRGSnZiM1FnYjJZZ1VtVmhZM1JjYmlBcUlDQWdJQ0FnSUM4dklDNHVMaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiWEJ2Ym1WdWRDNWNiaUFxSUNBZ0lDQThMMlJwZGo1Y2JpQXFJQ0FnUEM5a2FYWStYRzRnS2x4dUlDb2dTVzV6YVdSbElHOW1JR0JqYjI1MFlXbHVaWEpnTENCMGFHVWdabWx5YzNRZ1pXeGxiV1Z1ZENCeVpXNWtaWEpsWkNCcGN5QjBhR1VnWENKeVpXRmpkRkp2YjNSY0lpNWNiaUFxTDF4dWRtRnlJRkpsWVdOMFRXOTFiblFnUFNCN1hHNWNiaUFnVkc5d1RHVjJaV3hYY21Gd2NHVnlPaUJVYjNCTVpYWmxiRmR5WVhCd1pYSXNYRzVjYmlBZ0x5b3FJRVY0Y0c5elpXUWdabTl5SUdSbFluVm5aMmx1WnlCd2RYSndiM05sY3lBcUtpOWNiaUFnWDJsdWMzUmhibU5sYzBKNVVtVmhZM1JTYjI5MFNVUTZJR2x1YzNSaGJtTmxjMEo1VW1WaFkzUlNiMjkwU1VRc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb2FYTWdhWE1nWVNCb2IyOXJJSEJ5YjNacFpHVmtJSFJ2SUhOMWNIQnZjblFnY21WdVpHVnlhVzVuSUZKbFlXTjBJR052YlhCdmJtVnVkSE1nZDJocGJHVmNiaUFnSUNvZ1pXNXpkWEpwYm1jZ2RHaGhkQ0IwYUdVZ1lYQndZWEpsYm5RZ2MyTnliMnhzSUhCdmMybDBhVzl1SUc5bUlHbDBjeUJnWTI5dWRHRnBibVZ5WUNCa2IyVnpJRzV2ZEZ4dUlDQWdLaUJqYUdGdVoyVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlGUm9aU0JnWTI5dWRHRnBibVZ5WUNCaVpXbHVaeUJ5Wlc1a1pYSmxaQ0JwYm5SdkxseHVJQ0FnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCeVpXNWtaWEpEWVd4c1ltRmpheUJVYUdseklHMTFjM1FnWW1VZ1kyRnNiR1ZrSUc5dVkyVWdkRzhnWkc4Z2RHaGxJSEpsYm1SbGNpNWNiaUFnSUNvdlhHNGdJSE5qY205c2JFMXZibWwwYjNJNklHWjFibU4wYVc5dUlDaGpiMjUwWVdsdVpYSXNJSEpsYm1SbGNrTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2NtVnVaR1Z5UTJGc2JHSmhZMnNvS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR0ZyWlNCaElHTnZiWEJ2Ym1WdWRDQjBhR0YwSjNNZ1lXeHlaV0ZrZVNCdGIzVnVkR1ZrSUdsdWRHOGdkR2hsSUVSUFRTQmhibVFnY21Wd2JHRmpaU0JwZEhNZ2NISnZjSE5jYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2NISmxka052YlhCdmJtVnVkQ0JqYjIxd2IyNWxiblFnYVc1emRHRnVZMlVnWVd4eVpXRmtlU0JwYmlCMGFHVWdSRTlOWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCdVpYaDBSV3hsYldWdWRDQmpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVWdkRzhnY21WdVpHVnlYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJR052Ym5SaGFXNWxjaUIwYnlCeVpXNWtaWElnYVc1MGIxeHVJQ0FnS2lCQWNHRnlZVzBnZXo5bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1puVnVZM1JwYjI0Z2RISnBaMmRsY21Wa0lHOXVJR052YlhCc1pYUnBiMjVjYmlBZ0lDb3ZYRzRnSUY5MWNHUmhkR1ZTYjI5MFEyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9jSEpsZGtOdmJYQnZibVZ1ZEN3Z2JtVjRkRVZzWlcxbGJuUXNJR052Ym5SaGFXNWxjaXdnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0JTWldGamRFMXZkVzUwTG5OamNtOXNiRTF2Ym1sMGIzSW9ZMjl1ZEdGcGJtVnlMQ0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTG1WdWNYVmxkV1ZGYkdWdFpXNTBTVzUwWlhKdVlXd29jSEpsZGtOdmJYQnZibVZ1ZEN3Z2JtVjRkRVZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSUNBZ0lGSmxZV04wVlhCa1lYUmxVWFZsZFdVdVpXNXhkV1YxWlVOaGJHeGlZV05yU1c1MFpYSnVZV3dvY0hKbGRrTnZiWEJ2Ym1WdWRDd2dZMkZzYkdKaFkyc3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDOHZJRkpsWTI5eVpDQjBhR1VnY205dmRDQmxiR1Z0Wlc1MElHbHVJR05oYzJVZ2FYUWdiR0YwWlhJZ1oyVjBjeUIwY21GdWMzQnNZVzUwWldRdVhHNGdJQ0FnSUNCeWIyOTBSV3hsYldWdWRITkNlVkpsWVdOMFVtOXZkRWxFVzJkbGRGSmxZV04wVW05dmRFbEVLR052Ym5SaGFXNWxjaWxkSUQwZ1oyVjBVbVZoWTNSU2IyOTBSV3hsYldWdWRFbHVRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIQnlaWFpEYjIxd2IyNWxiblE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxaMmx6ZEdWeUlHRWdZMjl0Y0c5dVpXNTBJR2x1ZEc4Z2RHaGxJR2x1YzNSaGJtTmxJRzFoY0NCaGJtUWdjM1JoY25SeklITmpjbTlzYkNCMllXeDFaVnh1SUNBZ0tpQnRiMjVwZEc5eWFXNW5YRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUc1bGVIUkRiMjF3YjI1bGJuUWdZMjl0Y0c5dVpXNTBJR2x1YzNSaGJtTmxJSFJ2SUhKbGJtUmxjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR052Ym5SaGFXNWxjaUJqYjI1MFlXbHVaWElnZEc4Z2NtVnVaR1Z5SUdsdWRHOWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCeVpXRmpkRkp2YjNRZ1NVUWdjSEpsWm1sNFhHNGdJQ0FxTDF4dUlDQmZjbVZuYVhOMFpYSkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFEyOXRjRzl1Wlc1MExDQmpiMjUwWVdsdVpYSXBJSHRjYmlBZ0lDQWhLR052Ym5SaGFXNWxjaUFtSmlBb1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JGVEVWTlJVNVVYMDVQUkVWZlZGbFFSU0I4ZkNCamIyNTBZV2x1WlhJdWJtOWtaVlI1Y0dVZ1BUMDlJRVJQUTE5T1QwUkZYMVJaVUVVZ2ZId2dZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJRDA5UFNCRVQwTlZUVVZPVkY5R1VrRkhUVVZPVkY5T1QwUkZYMVJaVUVVcEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkZmNtVm5hWE4wWlhKRGIyMXdiMjVsYm5Rb0xpNHVLVG9nVkdGeVoyVjBJR052Ym5SaGFXNWxjaUJwY3lCdWIzUWdZU0JFVDAwZ1pXeGxiV1Z1ZEM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSXVaVzV6ZFhKbFUyTnliMnhzVm1Gc2RXVk5iMjVwZEc5eWFXNW5LQ2s3WEc1Y2JpQWdJQ0IyWVhJZ2NtVmhZM1JTYjI5MFNVUWdQU0JTWldGamRFMXZkVzUwTG5KbFoybHpkR1Z5UTI5dWRHRnBibVZ5S0dOdmJuUmhhVzVsY2lrN1hHNGdJQ0FnYVc1emRHRnVZMlZ6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjBnUFNCdVpYaDBRMjl0Y0c5dVpXNTBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpXRmpkRkp2YjNSSlJEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WdVpHVnlJR0VnYm1WM0lHTnZiWEJ2Ym1WdWRDQnBiblJ2SUhSb1pTQkVUMDB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCdVpYaDBSV3hsYldWdWRDQmxiR1Z0Wlc1MElIUnZJSEpsYm1SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlHTnZiblJoYVc1bGNpQmpiMjUwWVdsdVpYSWdkRzhnY21WdVpHVnlJR2x1ZEc5Y2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ0JwWmlCM1pTQnphRzkxYkdRZ2MydHBjQ0IwYUdVZ2JXRnlhM1Z3SUdsdWMyVnlkR2x2Ymx4dUlDQWdLaUJBY21WMGRYSnVJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdibVY0ZEVOdmJYQnZibVZ1ZEZ4dUlDQWdLaTljYmlBZ1gzSmxibVJsY2s1bGQxSnZiM1JEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNodVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ3dnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQzh2SUZaaGNtbHZkWE1nY0dGeWRITWdiMllnYjNWeUlHTnZaR1VnS0hOMVkyZ2dZWE1nVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUW5jMXh1SUNBZ0lDOHZJRjl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUXBJR0Z6YzNWdFpTQjBhR0YwSUdOaGJHeHpJSFJ2SUhKbGJtUmxjaUJoY21WdUozUWdibVZ6ZEdWa08xeHVJQ0FnSUM4dklIWmxjbWxtZVNCMGFHRjBJSFJvWVhRbmN5QjBhR1VnWTJGelpTNWNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aFNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMDlJRzUxYkd3c0lDZGZjbVZ1WkdWeVRtVjNVbTl2ZEVOdmJYQnZibVZ1ZENncE9pQlNaVzVrWlhJZ2JXVjBhRzlrY3lCemFHOTFiR1FnWW1VZ1lTQndkWEpsSUdaMWJtTjBhVzl1SUNjZ0t5QW5iMllnY0hKdmNITWdZVzVrSUhOMFlYUmxPeUIwY21sbloyVnlhVzVuSUc1bGMzUmxaQ0JqYjIxd2IyNWxiblFnZFhCa1lYUmxjeUJtY205dElDY2dLeUFuY21WdVpHVnlJR2x6SUc1dmRDQmhiR3h2ZDJWa0xpQkpaaUJ1WldObGMzTmhjbmtzSUhSeWFXZG5aWElnYm1WemRHVmtJSFZ3WkdGMFpYTWdhVzRnSnlBcklDZGpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVXVJRU5vWldOcklIUm9aU0J5Wlc1a1pYSWdiV1YwYUc5a0lHOW1JQ1Z6TGljc0lGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RZ0ppWWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDNW5aWFJPWVcxbEtDa2dmSHdnSjFKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCMllYSWdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdQU0JwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLRzVsZUhSRmJHVnRaVzUwTENCdWRXeHNLVHRjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEUxdmRXNTBMbDl5WldkcGMzUmxja052YlhCdmJtVnVkQ2hqYjIxd2IyNWxiblJKYm5OMFlXNWpaU3dnWTI5dWRHRnBibVZ5S1R0Y2JseHVJQ0FnSUM4dklGUm9aU0JwYm1sMGFXRnNJSEpsYm1SbGNpQnBjeUJ6ZVc1amFISnZibTkxY3lCaWRYUWdZVzU1SUhWd1pHRjBaWE1nZEdoaGRDQm9ZWEJ3Wlc0Z1pIVnlhVzVuWEc0Z0lDQWdMeThnY21WdVpHVnlhVzVuTENCcGJpQmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUWdiM0lnWTI5dGNHOXVaVzUwUkdsa1RXOTFiblFzSUhkcGJHd2dZbVVnWW1GMFkyaGxaRnh1SUNBZ0lDOHZJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdZM1Z5Y21WdWRDQmlZWFJqYUdsdVp5QnpkSEpoZEdWbmVTNWNibHh1SUNBZ0lGSmxZV04wVlhCa1lYUmxjeTVpWVhSamFHVmtWWEJrWVhSbGN5aGlZWFJqYUdWa1RXOTFiblJEYjIxd2IyNWxiblJKYm5SdlRtOWtaU3dnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVzSUhKbFlXTjBVbTl2ZEVsRUxDQmpiMjUwWVdsdVpYSXNJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndMQ0JqYjI1MFpYaDBLVHRjYmx4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJTWldOdmNtUWdkR2hsSUhKdmIzUWdaV3hsYldWdWRDQnBiaUJqWVhObElHbDBJR3hoZEdWeUlHZGxkSE1nZEhKaGJuTndiR0Z1ZEdWa0xseHVJQ0FnSUNBZ2NtOXZkRVZzWlcxbGJuUnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMGdQU0JuWlhSU1pXRmpkRkp2YjNSRmJHVnRaVzUwU1c1RGIyNTBZV2x1WlhJb1kyOXVkR0ZwYm1WeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlU3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxibVJsY25NZ1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2FXNTBieUIwYUdVZ1JFOU5JR2x1SUhSb1pTQnpkWEJ3YkdsbFpDQmdZMjl1ZEdGcGJtVnlZQzVjYmlBZ0lDcGNiaUFnSUNvZ1NXWWdkR2hsSUZKbFlXTjBJR052YlhCdmJtVnVkQ0IzWVhNZ2NISmxkbWx2ZFhOc2VTQnlaVzVrWlhKbFpDQnBiblJ2SUdCamIyNTBZV2x1WlhKZ0xDQjBhR2x6SUhkcGJHeGNiaUFnSUNvZ2NHVnlabTl5YlNCaGJpQjFjR1JoZEdVZ2IyNGdhWFFnWVc1a0lHOXViSGtnYlhWMFlYUmxJSFJvWlNCRVQwMGdZWE1nYm1WalpYTnpZWEo1SUhSdklISmxabXhsWTNRZ2RHaGxYRzRnSUNBcUlHeGhkR1Z6ZENCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUhCaGNtVnVkRU52YlhCdmJtVnVkQ0JVYUdVZ1kyOXVZMlZ3ZEhWaGJDQndZWEpsYm5RZ2IyWWdkR2hwY3lCeVpXNWtaWElnZEhKbFpTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJRzVsZUhSRmJHVnRaVzUwSUVOdmJYQnZibVZ1ZENCbGJHVnRaVzUwSUhSdklISmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCamIyNTBZV2x1WlhJZ1JFOU5JR1ZzWlcxbGJuUWdkRzhnY21WdVpHVnlJR2x1ZEc4dVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCbWRXNWpkR2x2YmlCMGNtbG5aMlZ5WldRZ2IyNGdZMjl0Y0d4bGRHbHZibHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1EyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObElISmxibVJsY21Wa0lHbHVJR0JqYjI1MFlXbHVaWEpnTGx4dUlDQWdLaTljYmlBZ2NtVnVaR1Z5VTNWaWRISmxaVWx1ZEc5RGIyNTBZV2x1WlhJNklHWjFibU4wYVc5dUlDaHdZWEpsYm5SRGIyMXdiMjVsYm5Rc0lHNWxlSFJGYkdWdFpXNTBMQ0JqYjI1MFlXbHVaWElzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSVNod1lYSmxiblJEYjIxd2IyNWxiblFnSVQwZ2JuVnNiQ0FtSmlCd1lYSmxiblJEYjIxd2IyNWxiblF1WDNKbFlXTjBTVzUwWlhKdVlXeEpibk4wWVc1alpTQWhQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkd1lYSmxiblJEYjIxd2IyNWxiblFnYlhWemRDQmlaU0JoSUhaaGJHbGtJRkpsWVdOMElFTnZiWEJ2Ym1WdWRDY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0J5WlhSMWNtNGdVbVZoWTNSTmIzVnVkQzVmY21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWElvY0dGeVpXNTBRMjl0Y0c5dVpXNTBMQ0J1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQmpZV3hzWW1GamF5azdYRzRnSUgwc1hHNWNiaUFnWDNKbGJtUmxjbE4xWW5SeVpXVkpiblJ2UTI5dWRHRnBibVZ5T2lCbWRXNWpkR2x2YmlBb2NHRnlaVzUwUTI5dGNHOXVaVzUwTENCdVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJQ0ZTWldGamRFVnNaVzFsYm5RdWFYTldZV3hwWkVWc1pXMWxiblFvYm1WNGRFVnNaVzFsYm5RcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBSRTlOTG5KbGJtUmxjaWdwT2lCSmJuWmhiR2xrSUdOdmJYQnZibVZ1ZENCbGJHVnRaVzUwTGlWekp5d2dkSGx3Wlc5bUlHNWxlSFJGYkdWdFpXNTBJRDA5UFNBbmMzUnlhVzVuSnlBL0lDY2dTVzV6ZEdWaFpDQnZaaUJ3WVhOemFXNW5JR0Z1SUdWc1pXMWxiblFnYzNSeWFXNW5MQ0J0WVd0bElITjFjbVVnZEc4Z2FXNXpkR0Z1ZEdsaGRHVWdKeUFySUNkcGRDQmllU0J3WVhOemFXNW5JR2wwSUhSdklGSmxZV04wTG1OeVpXRjBaVVZzWlcxbGJuUXVKeUE2SUhSNWNHVnZaaUJ1WlhoMFJXeGxiV1Z1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUEvSUNjZ1NXNXpkR1ZoWkNCdlppQndZWE56YVc1bklHRWdZMjl0Y0c5dVpXNTBJR05zWVhOekxDQnRZV3RsSUhOMWNtVWdkRzhnYVc1emRHRnVkR2xoZEdVZ0p5QXJJQ2RwZENCaWVTQndZWE56YVc1bklHbDBJSFJ2SUZKbFlXTjBMbU55WldGMFpVVnNaVzFsYm5RdUp5QTZYRzRnSUNBZ0x5OGdRMmhsWTJzZ2FXWWdhWFFnY1hWaFkydHpJR3hwYTJVZ1lXNGdaV3hsYldWdWRGeHVJQ0FnSUc1bGVIUkZiR1Z0Wlc1MElDRTlJRzUxYkd3Z0ppWWdibVY0ZEVWc1pXMWxiblF1Y0hKdmNITWdJVDA5SUhWdVpHVm1hVzVsWkNBL0lDY2dWR2hwY3lCdFlYa2dZbVVnWTJGMWMyVmtJR0o1SUhWdWFXNTBaVzUwYVc5dVlXeHNlU0JzYjJGa2FXNW5JSFIzYnlCcGJtUmxjR1Z1WkdWdWRDQW5JQ3NnSjJOdmNHbGxjeUJ2WmlCU1pXRmpkQzRuSURvZ0p5Y3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRmpiMjUwWVdsdVpYSWdmSHdnSVdOdmJuUmhhVzVsY2k1MFlXZE9ZVzFsSUh4OElHTnZiblJoYVc1bGNpNTBZV2RPWVcxbExuUnZWWEJ3WlhKRFlYTmxLQ2tnSVQwOUlDZENUMFJaSnl3Z0ozSmxibVJsY2lncE9pQlNaVzVrWlhKcGJtY2dZMjl0Y0c5dVpXNTBjeUJrYVhKbFkzUnNlU0JwYm5SdklHUnZZM1Z0Wlc1MExtSnZaSGtnYVhNZ0p5QXJJQ2RrYVhOamIzVnlZV2RsWkN3Z2MybHVZMlVnYVhSeklHTm9hV3hrY21WdUlHRnlaU0J2Wm5SbGJpQnRZVzVwY0hWc1lYUmxaQ0JpZVNCMGFHbHlaQzF3WVhKMGVTQW5JQ3NnSjNOamNtbHdkSE1nWVc1a0lHSnliM2R6WlhJZ1pYaDBaVzV6YVc5dWN5NGdWR2hwY3lCdFlYa2diR1ZoWkNCMGJ5QnpkV0owYkdVZ0p5QXJJQ2R5WldOdmJtTnBiR2xoZEdsdmJpQnBjM04xWlhNdUlGUnllU0J5Wlc1a1pYSnBibWNnYVc1MGJ5QmhJR052Ym5SaGFXNWxjaUJsYkdWdFpXNTBJR055WldGMFpXUWdKeUFySUNkbWIzSWdlVzkxY2lCaGNIQXVKeWtnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCMllYSWdibVY0ZEZkeVlYQndaV1JGYkdWdFpXNTBJRDBnYm1WM0lGSmxZV04wUld4bGJXVnVkQ2hVYjNCTVpYWmxiRmR5WVhCd1pYSXNJRzUxYkd3c0lHNTFiR3dzSUc1MWJHd3NJRzUxYkd3c0lHNTFiR3dzSUc1bGVIUkZiR1Z0Wlc1MEtUdGNibHh1SUNBZ0lIWmhjaUJ3Y21WMlEyOXRjRzl1Wlc1MElEMGdhVzV6ZEdGdVkyVnpRbmxTWldGamRGSnZiM1JKUkZ0blpYUlNaV0ZqZEZKdmIzUkpSQ2hqYjI1MFlXbHVaWElwWFR0Y2JseHVJQ0FnSUdsbUlDaHdjbVYyUTI5dGNHOXVaVzUwS1NCN1hHNGdJQ0FnSUNCMllYSWdjSEpsZGxkeVlYQndaV1JGYkdWdFpXNTBJRDBnY0hKbGRrTnZiWEJ2Ym1WdWRDNWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnSUNCMllYSWdjSEpsZGtWc1pXMWxiblFnUFNCd2NtVjJWM0poY0hCbFpFVnNaVzFsYm5RdWNISnZjSE03WEc0Z0lDQWdJQ0JwWmlBb2MyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5Rb2NISmxka1ZzWlcxbGJuUXNJRzVsZUhSRmJHVnRaVzUwS1NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY0hWaWJHbGpTVzV6ZENBOUlIQnlaWFpEYjIxd2IyNWxiblF1WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTG1kbGRGQjFZbXhwWTBsdWMzUmhibU5sS0NrN1hHNGdJQ0FnSUNBZ0lIWmhjaUIxY0dSaGRHVmtRMkZzYkdKaFkyc2dQU0JqWVd4c1ltRmpheUFtSmlCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnWTJGc2JHSmhZMnN1WTJGc2JDaHdkV0pzYVdOSmJuTjBLVHRjYmlBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ1VtVmhZM1JOYjNWdWRDNWZkWEJrWVhSbFVtOXZkRU52YlhCdmJtVnVkQ2h3Y21WMlEyOXRjRzl1Wlc1MExDQnVaWGgwVjNKaGNIQmxaRVZzWlcxbGJuUXNJR052Ym5SaGFXNWxjaXdnZFhCa1lYUmxaRU5oYkd4aVlXTnJLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEIxWW14cFkwbHVjM1E3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JTWldGamRFMXZkVzUwTG5WdWJXOTFiblJEYjIxd2IyNWxiblJCZEU1dlpHVW9ZMjl1ZEdGcGJtVnlLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwUld4bGJXVnVkQ0E5SUdkbGRGSmxZV04wVW05dmRFVnNaVzFsYm5SSmJrTnZiblJoYVc1bGNpaGpiMjUwWVdsdVpYSXBPMXh1SUNBZ0lIWmhjaUJqYjI1MFlXbHVaWEpJWVhOU1pXRmpkRTFoY210MWNDQTlJSEpsWVdOMFVtOXZkRVZzWlcxbGJuUWdKaVlnSVNGcGJuUmxjbTVoYkVkbGRFbEVLSEpsWVdOMFVtOXZkRVZzWlcxbGJuUXBPMXh1SUNBZ0lIWmhjaUJqYjI1MFlXbHVaWEpJWVhOT2IyNVNiMjkwVW1WaFkzUkRhR2xzWkNBOUlHaGhjMDV2YmxKdmIzUlNaV0ZqZEVOb2FXeGtLR052Ym5SaGFXNWxjaWs3WEc1Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvSVdOdmJuUmhhVzVsY2toaGMwNXZibEp2YjNSU1pXRmpkRU5vYVd4a0xDQW5jbVZ1WkdWeUtDNHVMaWs2SUZKbGNHeGhZMmx1WnlCU1pXRmpkQzF5Wlc1a1pYSmxaQ0JqYUdsc1pISmxiaUIzYVhSb0lHRWdibVYzSUhKdmIzUWdKeUFySUNkamIyMXdiMjVsYm5RdUlFbG1JSGx2ZFNCcGJuUmxibVJsWkNCMGJ5QjFjR1JoZEdVZ2RHaGxJR05vYVd4a2NtVnVJRzltSUhSb2FYTWdibTlrWlN3Z0p5QXJJQ2Q1YjNVZ2MyaHZkV3hrSUdsdWMzUmxZV1FnYUdGMlpTQjBhR1VnWlhocGMzUnBibWNnWTJocGJHUnlaVzRnZFhCa1lYUmxJSFJvWldseUlITjBZWFJsSUNjZ0t5QW5ZVzVrSUhKbGJtUmxjaUIwYUdVZ2JtVjNJR052YlhCdmJtVnVkSE1nYVc1emRHVmhaQ0J2WmlCallXeHNhVzVuSUZKbFlXTjBSRTlOTG5KbGJtUmxjaTRuS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDQWdhV1lnS0NGamIyNTBZV2x1WlhKSVlYTlNaV0ZqZEUxaGNtdDFjQ0I4ZkNCeVpXRmpkRkp2YjNSRmJHVnRaVzUwTG01bGVIUlRhV0pzYVc1bktTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCeWIyOTBSV3hsYldWdWRGTnBZbXhwYm1jZ1BTQnlaV0ZqZEZKdmIzUkZiR1Z0Wlc1ME8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb2NtOXZkRVZzWlcxbGJuUlRhV0pzYVc1bktTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHVkR1Z5Ym1Gc1IyVjBTVVFvY205dmRFVnNaVzFsYm5SVGFXSnNhVzVuS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkeVpXNWtaWElvS1RvZ1ZHRnlaMlYwSUc1dlpHVWdhR0Z6SUcxaGNtdDFjQ0J5Wlc1a1pYSmxaQ0JpZVNCU1pXRmpkQ3dnWW5WMElIUm9aWEpsSUNjZ0t5QW5ZWEpsSUhWdWNtVnNZWFJsWkNCdWIyUmxjeUJoY3lCM1pXeHNMaUJVYUdseklHbHpJRzF2YzNRZ1kyOXRiVzl1YkhrZ1kyRjFjMlZrSUdKNUlDY2dLeUFuZDJocGRHVXRjM0JoWTJVZ2FXNXpaWEowWldRZ1lYSnZkVzVrSUhObGNuWmxjaTF5Wlc1a1pYSmxaQ0J0WVhKcmRYQXVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2NtOXZkRVZzWlcxbGJuUlRhV0pzYVc1bklEMGdjbTl2ZEVWc1pXMWxiblJUYVdKc2FXNW5MbTVsZUhSVGFXSnNhVzVuTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlITm9iM1ZzWkZKbGRYTmxUV0Z5YTNWd0lEMGdZMjl1ZEdGcGJtVnlTR0Z6VW1WaFkzUk5ZWEpyZFhBZ0ppWWdJWEJ5WlhaRGIyMXdiMjVsYm5RZ0ppWWdJV052Ym5SaGFXNWxja2hoYzA1dmJsSnZiM1JTWldGamRFTm9hV3hrTzF4dUlDQWdJSFpoY2lCamIyMXdiMjVsYm5RZ1BTQlNaV0ZqZEUxdmRXNTBMbDl5Wlc1a1pYSk9aWGRTYjI5MFEyOXRjRzl1Wlc1MEtHNWxlSFJYY21Gd2NHVmtSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ3dnY0dGeVpXNTBRMjl0Y0c5dVpXNTBJQ0U5SUc1MWJHd2dQeUJ3WVhKbGJuUkRiMjF3YjI1bGJuUXVYM0psWVdOMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNISnZZMlZ6YzBOb2FXeGtRMjl1ZEdWNGRDaHdZWEpsYm5SRGIyMXdiMjVsYm5RdVgzSmxZV04wU1c1MFpYSnVZV3hKYm5OMFlXNWpaUzVmWTI5dWRHVjRkQ2tnT2lCbGJYQjBlVTlpYW1WamRDa3VYM0psYm1SbGNtVmtRMjl0Y0c5dVpXNTBMbWRsZEZCMVlteHBZMGx1YzNSaGJtTmxLQ2s3WEc0Z0lDQWdhV1lnS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSUNCallXeHNZbUZqYXk1allXeHNLR052YlhCdmJtVnVkQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCamIyMXdiMjVsYm5RN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYm1SbGNuTWdZU0JTWldGamRDQmpiMjF3YjI1bGJuUWdhVzUwYnlCMGFHVWdSRTlOSUdsdUlIUm9aU0J6ZFhCd2JHbGxaQ0JnWTI5dWRHRnBibVZ5WUM1Y2JpQWdJQ3BjYmlBZ0lDb2dTV1lnZEdobElGSmxZV04wSUdOdmJYQnZibVZ1ZENCM1lYTWdjSEpsZG1sdmRYTnNlU0J5Wlc1a1pYSmxaQ0JwYm5SdklHQmpiMjUwWVdsdVpYSmdMQ0IwYUdseklIZHBiR3hjYmlBZ0lDb2djR1Z5Wm05eWJTQmhiaUIxY0dSaGRHVWdiMjRnYVhRZ1lXNWtJRzl1YkhrZ2JYVjBZWFJsSUhSb1pTQkVUMDBnWVhNZ2JtVmpaWE56WVhKNUlIUnZJSEpsWm14bFkzUWdkR2hsWEc0Z0lDQXFJR3hoZEdWemRDQlNaV0ZqZENCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCdVpYaDBSV3hsYldWdWRDQkRiMjF3YjI1bGJuUWdaV3hsYldWdWRDQjBieUJ5Wlc1a1pYSXVYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSdklISmxibVJsY2lCcGJuUnZMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OW1kVzVqZEdsdmJuMGdZMkZzYkdKaFkyc2dablZ1WTNScGIyNGdkSEpwWjJkbGNtVmtJRzl1SUdOdmJYQnNaWFJwYjI1Y2JpQWdJQ29nUUhKbGRIVnliaUI3VW1WaFkzUkRiMjF3YjI1bGJuUjlJRU52YlhCdmJtVnVkQ0JwYm5OMFlXNWpaU0J5Wlc1a1pYSmxaQ0JwYmlCZ1kyOXVkR0ZwYm1WeVlDNWNiaUFnSUNvdlhHNGdJSEpsYm1SbGNqb2dablZ1WTNScGIyNGdLRzVsZUhSRmJHVnRaVzUwTENCamIyNTBZV2x1WlhJc0lHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2NtVjBkWEp1SUZKbFlXTjBUVzkxYm5RdVgzSmxibVJsY2xOMVluUnlaV1ZKYm5SdlEyOXVkR0ZwYm1WeUtHNTFiR3dzSUc1bGVIUkZiR1Z0Wlc1MExDQmpiMjUwWVdsdVpYSXNJR05oYkd4aVlXTnJLVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVm5hWE4wWlhKeklHRWdZMjl1ZEdGcGJtVnlJRzV2WkdVZ2FXNTBieUIzYUdsamFDQlNaV0ZqZENCamIyMXdiMjVsYm5SeklIZHBiR3dnWW1VZ2NtVnVaR1Z5WldRdVhHNGdJQ0FxSUZSb2FYTWdZV3h6YnlCamNtVmhkR1Z6SUhSb1pTQmNJbkpsWVdOMFVtOXZkRndpSUVsRUlIUm9ZWFFnZDJsc2JDQmlaU0JoYzNOcFoyNWxaQ0IwYnlCMGFHVWdaV3hsYldWdWRGeHVJQ0FnS2lCeVpXNWtaWEpsWkNCM2FYUm9hVzR1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSdklISmxaMmx6ZEdWeUlHRnpJR0VnWTI5dWRHRnBibVZ5TGx4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRlJvWlNCY0luSmxZV04wVW05dmRGd2lJRWxFSUc5bUlHVnNaVzFsYm5SeklISmxibVJsY21Wa0lIZHBkR2hwYmk1Y2JpQWdJQ292WEc0Z0lISmxaMmx6ZEdWeVEyOXVkR0ZwYm1WeU9pQm1kVzVqZEdsdmJpQW9ZMjl1ZEdGcGJtVnlLU0I3WEc0Z0lDQWdkbUZ5SUhKbFlXTjBVbTl2ZEVsRUlEMGdaMlYwVW1WaFkzUlNiMjkwU1VRb1kyOXVkR0ZwYm1WeUtUdGNiaUFnSUNCcFppQW9jbVZoWTNSU2IyOTBTVVFwSUh0Y2JpQWdJQ0FnSUM4dklFbG1JRzl1WlNCbGVHbHpkSE1zSUcxaGEyVWdjM1Z5WlNCcGRDQnBjeUJoSUhaaGJHbGtJRndpY21WaFkzUlNiMjkwWENJZ1NVUXVYRzRnSUNBZ0lDQnlaV0ZqZEZKdmIzUkpSQ0E5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtZGxkRkpsWVdOMFVtOXZkRWxFUm5KdmJVNXZaR1ZKUkNoeVpXRmpkRkp2YjNSSlJDazdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDZ2hjbVZoWTNSU2IyOTBTVVFwSUh0Y2JpQWdJQ0FnSUM4dklFNXZJSFpoYkdsa0lGd2ljbVZoWTNSU2IyOTBYQ0lnU1VRZ1ptOTFibVFzSUdOeVpXRjBaU0J2Ym1VdVhHNGdJQ0FnSUNCeVpXRmpkRkp2YjNSSlJDQTlJRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TG1OeVpXRjBaVkpsWVdOMFVtOXZkRWxFS0NrN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym5SaGFXNWxjbk5DZVZKbFlXTjBVbTl2ZEVsRVczSmxZV04wVW05dmRFbEVYU0E5SUdOdmJuUmhhVzVsY2p0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZoWTNSU2IyOTBTVVE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVnViVzkxYm5SeklHRnVaQ0JrWlhOMGNtOTVjeUIwYUdVZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUhKbGJtUmxjbVZrSUdsdUlIUm9aU0JnWTI5dWRHRnBibVZ5WUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdEVUMDFGYkdWdFpXNTBmU0JqYjI1MFlXbHVaWElnUkU5TklHVnNaVzFsYm5RZ1kyOXVkR0ZwYm1sdVp5QmhJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1ltOXZiR1ZoYm4wZ1ZISjFaU0JwWmlCaElHTnZiWEJ2Ym1WdWRDQjNZWE1nWm05MWJtUWdhVzRnWVc1a0lIVnViVzkxYm5SbFpDQm1jbTl0WEc0Z0lDQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JqYjI1MFlXbHVaWEpnWEc0Z0lDQXFMMXh1SUNCMWJtMXZkVzUwUTI5dGNHOXVaVzUwUVhST2IyUmxPaUJtZFc1amRHbHZiaUFvWTI5dWRHRnBibVZ5S1NCN1hHNGdJQ0FnTHk4Z1ZtRnlhVzkxY3lCd1lYSjBjeUJ2WmlCdmRYSWdZMjlrWlNBb2MzVmphQ0JoY3lCU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQ2R6WEc0Z0lDQWdMeThnWDNKbGJtUmxjbFpoYkdsa1lYUmxaRU52YlhCdmJtVnVkQ2tnWVhOemRXMWxJSFJvWVhRZ1kyRnNiSE1nZEc4Z2NtVnVaR1Z5SUdGeVpXNG5kQ0J1WlhOMFpXUTdYRzRnSUNBZ0x5OGdkbVZ5YVdaNUlIUm9ZWFFnZEdoaGRDZHpJSFJvWlNCallYTmxMaUFvVTNSeWFXTjBiSGtnYzNCbFlXdHBibWNzSUhWdWJXOTFiblJwYm1jZ2QyOXVKM1FnWTJGMWMyVWdZVnh1SUNBZ0lDOHZJSEpsYm1SbGNpQmlkWFFnZDJVZ2MzUnBiR3dnWkc5dUozUWdaWGh3WldOMElIUnZJR0psSUdsdUlHRWdjbVZ1WkdWeUlHTmhiR3dnYUdWeVpTNHBYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29VbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDQTlQU0J1ZFd4c0xDQW5kVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFRjBUbTlrWlNncE9pQlNaVzVrWlhJZ2JXVjBhRzlrY3lCemFHOTFiR1FnWW1VZ1lTQndkWEpsSUdaMWJtTjBhVzl1SUNjZ0t5QW5iMllnY0hKdmNITWdZVzVrSUhOMFlYUmxPeUIwY21sbloyVnlhVzVuSUc1bGMzUmxaQ0JqYjIxd2IyNWxiblFnZFhCa1lYUmxjeUJtY205dElISmxibVJsY2lBbklDc2dKMmx6SUc1dmRDQmhiR3h2ZDJWa0xpQkpaaUJ1WldObGMzTmhjbmtzSUhSeWFXZG5aWElnYm1WemRHVmtJSFZ3WkdGMFpYTWdhVzRnSnlBcklDZGpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVXVJRU5vWldOcklIUm9aU0J5Wlc1a1pYSWdiV1YwYUc5a0lHOW1JQ1Z6TGljc0lGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RZ0ppWWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDNW5aWFJPWVcxbEtDa2dmSHdnSjFKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBaEtHTnZiblJoYVc1bGNpQW1KaUFvWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkZURVZOUlU1VVgwNVBSRVZmVkZsUVJTQjhmQ0JqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFUlBRMTlPVDBSRlgxUlpVRVVnZkh3Z1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JFVDBOVlRVVk9WRjlHVWtGSFRVVk9WRjlPVDBSRlgxUlpVRVVwS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2QxYm0xdmRXNTBRMjl0Y0c5dVpXNTBRWFJPYjJSbEtDNHVMaWs2SUZSaGNtZGxkQ0JqYjI1MFlXbHVaWElnYVhNZ2JtOTBJR0VnUkU5TklHVnNaVzFsYm5RdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnZG1GeUlISmxZV04wVW05dmRFbEVJRDBnWjJWMFVtVmhZM1JTYjI5MFNVUW9ZMjl1ZEdGcGJtVnlLVHRjYmlBZ0lDQjJZWElnWTI5dGNHOXVaVzUwSUQwZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEZKdmIzUkpSRnR5WldGamRGSnZiM1JKUkYwN1hHNGdJQ0FnYVdZZ0tDRmpiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQWdJQzh2SUVOb1pXTnJJR2xtSUhSb1pTQnViMlJsSUdKbGFXNW5JSFZ1Ylc5MWJuUmxaQ0IzWVhNZ2NtVnVaR1Z5WldRZ1lua2dVbVZoWTNRc0lHSjFkQ0JwYzI0bmRDQmhYRzRnSUNBZ0lDQXZMeUJ5YjI5MElHNXZaR1V1WEc0Z0lDQWdJQ0IyWVhJZ1kyOXVkR0ZwYm1WeVNHRnpUbTl1VW05dmRGSmxZV04wUTJocGJHUWdQU0JvWVhOT2IyNVNiMjkwVW1WaFkzUkRhR2xzWkNoamIyNTBZV2x1WlhJcE8xeHVYRzRnSUNBZ0lDQXZMeUJEYUdWamF5QnBaaUIwYUdVZ1kyOXVkR0ZwYm1WeUlHbDBjMlZzWmlCcGN5QmhJRkpsWVdOMElISnZiM1FnYm05a1pTNWNiaUFnSUNBZ0lIWmhjaUJqYjI1MFlXbHVaWEpKUkNBOUlHbHVkR1Z5Ym1Gc1IyVjBTVVFvWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0FnSUhaaGNpQnBjME52Ym5SaGFXNWxjbEpsWVdOMFVtOXZkQ0E5SUdOdmJuUmhhVzVsY2tsRUlDWW1JR052Ym5SaGFXNWxja2xFSUQwOVBTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVuWlhSU1pXRmpkRkp2YjNSSlJFWnliMjFPYjJSbFNVUW9ZMjl1ZEdGcGJtVnlTVVFwTzF4dVhHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5Z2hZMjl1ZEdGcGJtVnlTR0Z6VG05dVVtOXZkRkpsWVdOMFEyaHBiR1FzSUNkMWJtMXZkVzUwUTI5dGNHOXVaVzUwUVhST2IyUmxLQ2s2SUZSb1pTQnViMlJsSUhsdmRWeGNKM0psSUdGMGRHVnRjSFJwYm1jZ2RHOGdkVzV0YjNWdWRDQW5JQ3NnSjNkaGN5QnlaVzVrWlhKbFpDQmllU0JTWldGamRDQmhibVFnYVhNZ2JtOTBJR0VnZEc5d0xXeGxkbVZzSUdOdmJuUmhhVzVsY2k0Z0pYTW5MQ0JwYzBOdmJuUmhhVzVsY2xKbFlXTjBVbTl2ZENBL0lDZFpiM1VnYldGNUlHaGhkbVVnWVdOamFXUmxiblJoYkd4NUlIQmhjM05sWkNCcGJpQmhJRkpsWVdOMElISnZiM1FnYm05a1pTQnBibk4wWldGa0lDY2dLeUFuYjJZZ2FYUnpJR052Ym5SaGFXNWxjaTRuSURvZ0owbHVjM1JsWVdRc0lHaGhkbVVnZEdobElIQmhjbVZ1ZENCamIyMXdiMjVsYm5RZ2RYQmtZWFJsSUdsMGN5QnpkR0YwWlNCaGJtUWdKeUFySUNkeVpYSmxibVJsY2lCcGJpQnZjbVJsY2lCMGJ5QnlaVzF2ZG1VZ2RHaHBjeUJqYjIxd2IyNWxiblF1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1Z6TG1KaGRHTm9aV1JWY0dSaGRHVnpLSFZ1Ylc5MWJuUkRiMjF3YjI1bGJuUkdjbTl0VG05a1pTd2dZMjl0Y0c5dVpXNTBMQ0JqYjI1MFlXbHVaWElwTzF4dUlDQWdJR1JsYkdWMFpTQnBibk4wWVc1alpYTkNlVkpsWVdOMFVtOXZkRWxFVzNKbFlXTjBVbTl2ZEVsRVhUdGNiaUFnSUNCa1pXeGxkR1VnWTI5dWRHRnBibVZ5YzBKNVVtVmhZM1JTYjI5MFNVUmJjbVZoWTNSU2IyOTBTVVJkTzF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQmtaV3hsZEdVZ2NtOXZkRVZzWlcxbGJuUnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJHYVc1a2N5QjBhR1VnWTI5dWRHRnBibVZ5SUVSUFRTQmxiR1Z0Wlc1MElIUm9ZWFFnWTI5dWRHRnBibk1nVW1WaFkzUWdZMjl0Y0c5dVpXNTBJSFJ2SUhkb2FXTm9JSFJvWlZ4dUlDQWdLaUJ6ZFhCd2JHbGxaQ0JFVDAwZ1lHbGtZQ0JpWld4dmJtZHpMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1ZHaGxJRWxFSUc5bUlHRnVJR1ZzWlcxbGJuUWdjbVZ1WkdWeVpXUWdZbmtnWVNCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejlFVDAxRmJHVnRaVzUwZlNCRVQwMGdaV3hsYldWdWRDQjBhR0YwSUdOdmJuUmhhVzV6SUhSb1pTQmdhV1JnTGx4dUlDQWdLaTljYmlBZ1ptbHVaRkpsWVdOMFEyOXVkR0ZwYm1WeVJtOXlTVVE2SUdaMWJtTjBhVzl1SUNocFpDa2dlMXh1SUNBZ0lIWmhjaUJ5WldGamRGSnZiM1JKUkNBOUlGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMbWRsZEZKbFlXTjBVbTl2ZEVsRVJuSnZiVTV2WkdWSlJDaHBaQ2s3WEc0Z0lDQWdkbUZ5SUdOdmJuUmhhVzVsY2lBOUlHTnZiblJoYVc1bGNuTkNlVkpsWVdOMFVtOXZkRWxFVzNKbFlXTjBVbTl2ZEVsRVhUdGNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMllYSWdjbTl2ZEVWc1pXMWxiblFnUFNCeWIyOTBSV3hsYldWdWRITkNlVkpsWVdOMFVtOXZkRWxFVzNKbFlXTjBVbTl2ZEVsRVhUdGNiaUFnSUNBZ0lHbG1JQ2h5YjI5MFJXeGxiV1Z1ZENBbUppQnliMjkwUld4bGJXVnVkQzV3WVhKbGJuUk9iMlJsSUNFOVBTQmpiMjUwWVdsdVpYSXBJSHRjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1hHNGdJQ0FnSUNBZ0lDOHZJRU5oYkd3Z2FXNTBaWEp1WVd4SFpYUkpSQ0JvWlhKbElHSmxZMkYxYzJVZ1oyVjBTVVFnWTJGc2JITWdhWE5XWVd4cFpDQjNhR2xqYUNCallXeHNjMXh1SUNBZ0lDQWdJQ0F2THlCbWFXNWtVbVZoWTNSRGIyNTBZV2x1WlhKR2IzSkpSQ0FvZEdocGN5Qm1kVzVqZEdsdmJpa3VYRzRnSUNBZ0lDQWdJR2x1ZEdWeWJtRnNSMlYwU1VRb2NtOXZkRVZzWlcxbGJuUXBJRDA5UFNCeVpXRmpkRkp2YjNSSlJDd2dKMUpsWVdOMFRXOTFiblE2SUZKdmIzUWdaV3hsYldWdWRDQkpSQ0JrYVdabVpYSmxaQ0JtY205dElISmxZV04wVW05dmRFbEVMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQjJZWElnWTI5dWRHRnBibVZ5UTJocGJHUWdQU0JqYjI1MFlXbHVaWEl1Wm1seWMzUkRhR2xzWkR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR052Ym5SaGFXNWxja05vYVd4a0lDWW1JSEpsWVdOMFVtOXZkRWxFSUQwOVBTQnBiblJsY201aGJFZGxkRWxFS0dOdmJuUmhhVzVsY2tOb2FXeGtLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRWxtSUhSb1pTQmpiMjUwWVdsdVpYSWdhR0Z6SUdFZ2JtVjNJR05vYVd4a0lIZHBkR2dnZEdobElITmhiV1VnU1VRZ1lYTWdkR2hsSUc5c1pGeHVJQ0FnSUNBZ0lDQWdJQzh2SUhKdmIzUWdaV3hsYldWdWRDd2dkR2hsYmlCeWIyOTBSV3hsYldWdWRITkNlVkpsWVdOMFVtOXZkRWxFVzNKbFlXTjBVbTl2ZEVsRVhTQnBjMXh1SUNBZ0lDQWdJQ0FnSUM4dklHcDFjM1FnYzNSaGJHVWdZVzVrSUc1bFpXUnpJSFJ2SUdKbElIVndaR0YwWldRdUlGUm9aU0JqWVhObElIUm9ZWFFnWkdWelpYSjJaWE1nWVZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSGRoY201cGJtY2dhWE1nZDJobGJpQjBhR1VnWTI5dWRHRnBibVZ5SUdseklHVnRjSFI1TGx4dUlDQWdJQ0FnSUNBZ0lISnZiM1JGYkdWdFpXNTBjMEo1VW1WaFkzUlNiMjkwU1VSYmNtVmhZM1JTYjI5MFNVUmRJRDBnWTI5dWRHRnBibVZ5UTJocGJHUTdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkU1pXRmpkRTF2ZFc1ME9pQlNiMjkwSUdWc1pXMWxiblFnYUdGeklHSmxaVzRnY21WdGIzWmxaQ0JtY205dElHbDBjeUJ2Y21sbmFXNWhiQ0FuSUNzZ0oyTnZiblJoYVc1bGNpNGdUbVYzSUdOdmJuUmhhVzVsY2pvZ0pYTW5MQ0J5YjI5MFJXeGxiV1Z1ZEM1d1lYSmxiblJPYjJSbEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQmpiMjUwWVdsdVpYSTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVacGJtUnpJR0Z1SUdWc1pXMWxiblFnY21WdVpHVnlaV1FnWW5rZ1VtVmhZM1FnZDJsMGFDQjBhR1VnYzNWd2NHeHBaV1FnU1VRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnBaQ0JKUkNCdlppQmhJRVJQVFNCdWIyUmxJR2x1SUhSb1pTQlNaV0ZqZENCamIyMXdiMjVsYm5RdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBSUFRVVnNaVzFsYm5SOUlGSnZiM1FnUkU5TklHNXZaR1VnYjJZZ2RHaGxJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNvdlhHNGdJR1pwYm1SU1pXRmpkRTV2WkdWQ2VVbEVPaUJtZFc1amRHbHZiaUFvYVdRcElIdGNiaUFnSUNCMllYSWdjbVZoWTNSU2IyOTBJRDBnVW1WaFkzUk5iM1Z1ZEM1bWFXNWtVbVZoWTNSRGIyNTBZV2x1WlhKR2IzSkpSQ2hwWkNrN1hHNGdJQ0FnY21WMGRYSnVJRkpsWVdOMFRXOTFiblF1Wm1sdVpFTnZiWEJ2Ym1WdWRGSnZiM1FvY21WaFkzUlNiMjkwTENCcFpDazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSeVlYWmxjbk5sY3lCMWNDQjBhR1VnWVc1alpYTjBiM0p6SUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0J1YjJSbElIUnZJR1pwYm1RZ1lTQnViMlJsSUhSb1lYUWdhWE1nWVZ4dUlDQWdLaUJFVDAwZ2NtVndjbVZ6Wlc1MFlYUnBiMjRnYjJZZ1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2NtVnVaR1Z5WldRZ1lua2dkR2hwY3lCamIzQjVJRzltSUZKbFlXTjBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZXlwOUlHNXZaR1ZjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMFJQVFVWMlpXNTBWR0Z5WjJWMGZWeHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHZGxkRVpwY25OMFVtVmhZM1JFVDAwNklHWjFibU4wYVc5dUlDaHViMlJsS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1pwYm1SR2FYSnpkRkpsWVdOMFJFOU5TVzF3YkNodWIyUmxLVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1JtbHVaSE1nWVNCdWIyUmxJSGRwZEdnZ2RHaGxJSE4xY0hCc2FXVmtJR0IwWVhKblpYUkpSR0FnYVc1emFXUmxJRzltSUhSb1pTQnpkWEJ3YkdsbFpGeHVJQ0FnS2lCZ1lXNWpaWE4wYjNKT2IyUmxZQzRnSUVWNGNHeHZhWFJ6SUhSb1pTQkpSQ0J1WVcxcGJtY2djMk5vWlcxbElIUnZJSEJsY21admNtMGdkR2hsSUhObFlYSmphRnh1SUNBZ0tpQnhkV2xqYTJ4NUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWMlpXNTBWR0Z5WjJWMGZTQmhibU5sYzNSdmNrNXZaR1VnVTJWaGNtTm9JR1p5YjIwZ2RHaHBjeUJ5YjI5MExseHVJQ0FnS2lCQWNHRnlZWEp0SUh0emRISnBibWQ5SUhSaGNtZGxkRWxFSUVsRUlHOW1JSFJvWlNCRVQwMGdjbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdkR2hsSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UkU5TlJYWmxiblJVWVhKblpYUjlJRVJQVFNCdWIyUmxJSGRwZEdnZ2RHaGxJSE4xY0hCc2FXVmtJR0IwWVhKblpYUkpSR0F1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWm1sdVpFTnZiWEJ2Ym1WdWRGSnZiM1E2SUdaMWJtTjBhVzl1SUNoaGJtTmxjM1J2Y2s1dlpHVXNJSFJoY21kbGRFbEVLU0I3WEc0Z0lDQWdkbUZ5SUdacGNuTjBRMmhwYkdSeVpXNGdQU0JtYVc1a1EyOXRjRzl1Wlc1MFVtOXZkRkpsZFhOaFlteGxRWEp5WVhrN1hHNGdJQ0FnZG1GeUlHTm9hV3hrU1c1a1pYZ2dQU0F3TzF4dVhHNGdJQ0FnZG1GeUlHUmxaWEJsYzNSQmJtTmxjM1J2Y2lBOUlHWnBibVJFWldWd1pYTjBRMkZqYUdWa1FXNWpaWE4wYjNJb2RHRnlaMlYwU1VRcElIeDhJR0Z1WTJWemRHOXlUbTlrWlR0Y2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0F2THlCVWFHbHpJSGRwYkd3Z2RHaHliM2NnYjI0Z2RHaGxJRzVsZUhRZ2JHbHVaVHNnWjJsMlpTQmhiaUJsWVhKc2VTQjNZWEp1YVc1blhHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aGtaV1Z3WlhOMFFXNWpaWE4wYjNJZ0lUMGdiblZzYkN3Z0oxSmxZV04wSUdOaGJseGNKM1FnWm1sdVpDQjBhR1VnY205dmRDQmpiMjF3YjI1bGJuUWdibTlrWlNCbWIzSWdaR0YwWVMxeVpXRmpkR2xrSUhaaGJIVmxJQ2NnS3lBbllDVnpZQzRnU1dZZ2VXOTFYRnduY21VZ2MyVmxhVzVuSUhSb2FYTWdiV1Z6YzJGblpTd2dhWFFnY0hKdlltRmliSGtnYldWaGJuTWdkR2hoZENBbklDc2dKM2x2ZFZ4Y0ozWmxJR3h2WVdSbFpDQjBkMjhnWTI5d2FXVnpJRzltSUZKbFlXTjBJRzl1SUhSb1pTQndZV2RsTGlCQmRDQjBhR2x6SUhScGJXVXNJRzl1YkhrZ0p5QXJJQ2RoSUhOcGJtZHNaU0JqYjNCNUlHOW1JRkpsWVdOMElHTmhiaUJpWlNCc2IyRmtaV1FnWVhRZ1lTQjBhVzFsTGljc0lIUmhjbWRsZEVsRUtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQm1hWEp6ZEVOb2FXeGtjbVZ1V3pCZElEMGdaR1ZsY0dWemRFRnVZMlZ6ZEc5eUxtWnBjbk4wUTJocGJHUTdYRzRnSUNBZ1ptbHljM1JEYUdsc1pISmxiaTVzWlc1bmRHZ2dQU0F4TzF4dVhHNGdJQ0FnZDJocGJHVWdLR05vYVd4a1NXNWtaWGdnUENCbWFYSnpkRU5vYVd4a2NtVnVMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdkbUZ5SUdOb2FXeGtJRDBnWm1seWMzUkRhR2xzWkhKbGJsdGphR2xzWkVsdVpHVjRLeXRkTzF4dUlDQWdJQ0FnZG1GeUlIUmhjbWRsZEVOb2FXeGtPMXh1WEc0Z0lDQWdJQ0IzYUdsc1pTQW9ZMmhwYkdRcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOb2FXeGtTVVFnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRWxFS0dOb2FXeGtLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9hV3hrU1VRcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCRmRtVnVJR2xtSUhkbElHWnBibVFnZEdobElHNXZaR1VnZDJVbmNtVWdiRzl2YTJsdVp5Qm1iM0lzSUhkbElHWnBibWx6YUNCc2IyOXdhVzVuWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkR2h5YjNWbmFDQnBkSE1nYzJsaWJHbHVaM01nZEc4Z1pXNXpkWEpsSUhSb1pYa25jbVVnWTJGamFHVmtJSE52SUhSb1lYUWdkMlVnWkc5dUozUWdhR0YyWlZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSFJ2SUhKbGRtbHphWFFnZEdocGN5QnViMlJsSUdGbllXbHVMaUJQZEdobGNuZHBjMlVzSUhkbElHMWhhMlVnYmw0eUlHTmhiR3h6SUhSdklHZGxkRWxFWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkMmhsYmlCMmFYTnBkR2x1WnlCMGFHVWdiV0Z1ZVNCamFHbHNaSEpsYmlCdlppQmhJSE5wYm1kc1pTQnViMlJsSUdsdUlHOXlaR1Z5TGx4dVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hSaGNtZGxkRWxFSUQwOVBTQmphR2xzWkVsRUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMFlYSm5aWFJEYUdsc1pDQTlJR05vYVd4a08xeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNdWFYTkJibU5sYzNSdmNrbEVUMllvWTJocGJHUkpSQ3dnZEdGeVoyVjBTVVFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCSlppQjNaU0JtYVc1a0lHRWdZMmhwYkdRZ2QyaHZjMlVnU1VRZ2FYTWdZVzRnWVc1alpYTjBiM0lnYjJZZ2RHaGxJR2RwZG1WdUlFbEVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdkR2hsYmlCM1pTQmpZVzRnWW1VZ2MzVnlaU0IwYUdGMElIZGxJRzl1YkhrZ2QyRnVkQ0IwYnlCelpXRnlZMmdnZEdobElITjFZblJ5WldWY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUhKdmIzUmxaQ0JoZENCMGFHbHpJR05vYVd4a0xDQnpieUIzWlNCallXNGdkR2h5YjNjZ2IzVjBJSFJvWlNCeVpYTjBJRzltSUhSb1pWeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2MyVmhjbU5vSUhOMFlYUmxMbHh1SUNBZ0lDQWdJQ0FnSUNBZ1ptbHljM1JEYUdsc1pISmxiaTVzWlc1bmRHZ2dQU0JqYUdsc1pFbHVaR1Y0SUQwZ01EdGNiaUFnSUNBZ0lDQWdJQ0FnSUdacGNuTjBRMmhwYkdSeVpXNHVjSFZ6YUNoamFHbHNaQzVtYVhKemRFTm9hV3hrS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1NXWWdkR2hwY3lCamFHbHNaQ0JvWVdRZ2JtOGdTVVFzSUhSb1pXNGdkR2hsY21VbmN5QmhJR05vWVc1alpTQjBhR0YwSUdsMElIZGhjMXh1SUNBZ0lDQWdJQ0FnSUM4dklHbHVhbVZqZEdWa0lHRjFkRzl0WVhScFkyRnNiSGtnWW5rZ2RHaGxJR0p5YjNkelpYSXNJR0Z6SUhkb1pXNGdZU0JnUEhSaFlteGxQbUJjYmlBZ0lDQWdJQ0FnSUNBdkx5QmxiR1Z0Wlc1MElITndjbTkxZEhNZ1lXNGdaWGgwY21FZ1lEeDBZbTlrZVQ1Z0lHTm9hV3hrSUdGeklHRWdjMmxrWlNCbFptWmxZM1FnYjJaY2JpQWdJQ0FnSUNBZ0lDQXZMeUJnTG1sdWJtVnlTRlJOVEdBZ2NHRnljMmx1Wnk0Z1QzQjBhVzFwYzNScFkyRnNiSGtnWTI5dWRHbHVkV1VnWkc5M2JpQjBhR2x6WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdZbkpoYm1Ob0xDQmlkWFFnYm05MElHSmxabTl5WlNCbGVHRnRhVzVwYm1jZ2RHaGxJRzkwYUdWeUlITnBZbXhwYm1kekxseHVJQ0FnSUNBZ0lDQWdJR1pwY25OMFEyaHBiR1J5Wlc0dWNIVnphQ2hqYUdsc1pDNW1hWEp6ZEVOb2FXeGtLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHTm9hV3hrSUQwZ1kyaHBiR1F1Ym1WNGRGTnBZbXhwYm1jN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHbG1JQ2gwWVhKblpYUkRhR2xzWkNrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJGYlhCMGVXbHVaeUJtYVhKemRFTm9hV3hrY21WdUwyWnBibVJEYjIxd2IyNWxiblJTYjI5MFVtVjFjMkZpYkdWQmNuSmhlU0JwYzF4dUlDQWdJQ0FnSUNBdkx5QnViM1FnYm1WalpYTnpZWEo1SUdadmNpQmpiM0p5WldOMGJtVnpjeXdnWW5WMElHbDBJR2hsYkhCeklIUm9aU0JIUXlCeVpXTnNZV2x0WEc0Z0lDQWdJQ0FnSUM4dklHRnVlU0J1YjJSbGN5QjBhR0YwSUhkbGNtVWdiR1ZtZENCaGRDQjBhR1VnWlc1a0lHOW1JSFJvWlNCelpXRnlZMmd1WEc0Z0lDQWdJQ0FnSUdacGNuTjBRMmhwYkdSeVpXNHViR1Z1WjNSb0lEMGdNRHRjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGeVoyVjBRMmhwYkdRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm1seWMzUkRhR2xzWkhKbGJpNXNaVzVuZEdnZ1BTQXdPMXh1WEc0Z0lDQWdJV1poYkhObElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJacGJtUkRiMjF3YjI1bGJuUlNiMjkwS0M0dUxpd2dKWE1wT2lCVmJtRmliR1VnZEc4Z1ptbHVaQ0JsYkdWdFpXNTBMaUJVYUdseklIQnliMkpoWW14NUlDY2dLeUFuYldWaGJuTWdkR2hsSUVSUFRTQjNZWE1nZFc1bGVIQmxZM1JsWkd4NUlHMTFkR0YwWldRZ0tHVXVaeTRzSUdKNUlIUm9aU0JpY205M2MyVnlLU3dnSnlBcklDZDFjM1ZoYkd4NUlHUjFaU0IwYnlCbWIzSm5aWFIwYVc1bklHRWdQSFJpYjJSNVBpQjNhR1Z1SUhWemFXNW5JSFJoWW14bGN5d2dibVZ6ZEdsdVp5QjBZV2R6SUNjZ0t5QW5iR2xyWlNBOFptOXliVDRzSUR4d1Bpd2diM0lnUEdFK0xDQnZjaUIxYzJsdVp5QnViMjR0VTFaSElHVnNaVzFsYm5SeklHbHVJR0Z1SUR4emRtYytJQ2NnS3lBbmNHRnlaVzUwTGlBbklDc2dKMVJ5ZVNCcGJuTndaV04wYVc1bklIUm9aU0JqYUdsc1pDQnViMlJsY3lCdlppQjBhR1VnWld4bGJXVnVkQ0IzYVhSb0lGSmxZV04wSUVsRUlHQWxjMkF1Snl3Z2RHRnlaMlYwU1VRc0lGSmxZV04wVFc5MWJuUXVaMlYwU1VRb1lXNWpaWE4wYjNKT2IyUmxLU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5TEZ4dVhHNGdJRjl0YjNWdWRFbHRZV2RsU1c1MGIwNXZaR1U2SUdaMWJtTjBhVzl1SUNodFlYSnJkWEFzSUdOdmJuUmhhVzVsY2l3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lIUnlZVzV6WVdOMGFXOXVLU0I3WEc0Z0lDQWdJU2hqYjI1MFlXbHVaWElnSmlZZ0tHTnZiblJoYVc1bGNpNXViMlJsVkhsd1pTQTlQVDBnUlV4RlRVVk9WRjlPVDBSRlgxUlpVRVVnZkh3Z1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JFVDBOZlRrOUVSVjlVV1ZCRklIeDhJR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ1JFOURWVTFGVGxSZlJsSkJSMDFGVGxSZlRrOUVSVjlVV1ZCRktTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmJXOTFiblJEYjIxd2IyNWxiblJKYm5SdlRtOWtaU2d1TGk0cE9pQlVZWEpuWlhRZ1kyOXVkR0ZwYm1WeUlHbHpJRzV2ZENCMllXeHBaQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQnBaaUFvYzJodmRXeGtVbVYxYzJWTllYSnJkWEFwSUh0Y2JpQWdJQ0FnSUhaaGNpQnliMjkwUld4bGJXVnVkQ0E5SUdkbGRGSmxZV04wVW05dmRFVnNaVzFsYm5SSmJrTnZiblJoYVc1bGNpaGpiMjUwWVdsdVpYSXBPMXh1SUNBZ0lDQWdhV1lnS0ZKbFlXTjBUV0Z5YTNWd1EyaGxZMnR6ZFcwdVkyRnVVbVYxYzJWTllYSnJkWEFvYldGeWEzVndMQ0J5YjI5MFJXeGxiV1Z1ZENrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR05vWldOcmMzVnRJRDBnY205dmRFVnNaVzFsYm5RdVoyVjBRWFIwY21saWRYUmxLRkpsWVdOMFRXRnlhM1Z3UTJobFkydHpkVzB1UTBoRlEwdFRWVTFmUVZSVVVsOU9RVTFGS1R0Y2JpQWdJQ0FnSUNBZ2NtOXZkRVZzWlcxbGJuUXVjbVZ0YjNabFFYUjBjbWxpZFhSbEtGSmxZV04wVFdGeWEzVndRMmhsWTJ0emRXMHVRMGhGUTB0VFZVMWZRVlJVVWw5T1FVMUZLVHRjYmx4dUlDQWdJQ0FnSUNCMllYSWdjbTl2ZEUxaGNtdDFjQ0E5SUhKdmIzUkZiR1Z0Wlc1MExtOTFkR1Z5U0ZSTlREdGNiaUFnSUNBZ0lDQWdjbTl2ZEVWc1pXMWxiblF1YzJWMFFYUjBjbWxpZFhSbEtGSmxZV04wVFdGeWEzVndRMmhsWTJ0emRXMHVRMGhGUTB0VFZVMWZRVlJVVWw5T1FVMUZMQ0JqYUdWamEzTjFiU2s3WEc1Y2JpQWdJQ0FnSUNBZ2RtRnlJRzV2Y20xaGJHbDZaV1JOWVhKcmRYQWdQU0J0WVhKcmRYQTdYRzRnSUNBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1ltVmpZWFZ6WlNCeWIyOTBUV0Z5YTNWd0lHbHpJSEpsZEhKcFpYWmxaQ0JtY205dElIUm9aU0JFVDAwc0lIWmhjbWx2ZFhNZ2JtOXliV0ZzYVhwaGRHbHZibk5jYmlBZ0lDQWdJQ0FnSUNBdkx5QjNhV3hzSUdoaGRtVWdiMk5qZFhKeVpXUWdkMmhwWTJnZ2QybHNiQ0J1YjNRZ1ltVWdjSEpsYzJWdWRDQnBiaUJnYldGeWEzVndZQzRnU0dWeVpTeGNiaUFnSUNBZ0lDQWdJQ0F2THlCcGJuTmxjblFnYldGeWEzVndJR2x1ZEc4Z1lTQThaR2wyUGlCdmNpQThhV1p5WVcxbFBpQmtaWEJsYm1ScGJtY2diMjRnZEdobElHTnZiblJoYVc1bGNseHVJQ0FnSUNBZ0lDQWdJQzh2SUhSNWNHVWdkRzhnY0dWeVptOXliU0IwYUdVZ2MyRnRaU0J1YjNKdFlXeHBlbUYwYVc5dWN5QmlaV1p2Y21VZ1kyOXRjR0Z5YVc1bkxseHVJQ0FnSUNBZ0lDQWdJSFpoY2lCdWIzSnRZV3hwZW1WeU8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyNTBZV2x1WlhJdWJtOWtaVlI1Y0dVZ1BUMDlJRVZNUlUxRlRsUmZUazlFUlY5VVdWQkZLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnViM0p0WVd4cGVtVnlJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ25aR2wySnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1YjNKdFlXeHBlbVZ5TG1sdWJtVnlTRlJOVENBOUlHMWhjbXQxY0R0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzV2Y20xaGJHbDZaV1JOWVhKcmRYQWdQU0J1YjNKdFlXeHBlbVZ5TG1sdWJtVnlTRlJOVER0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsY2lBOUlHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSjJsbWNtRnRaU2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaRzlqZFcxbGJuUXVZbTlrZVM1aGNIQmxibVJEYUdsc1pDaHViM0p0WVd4cGVtVnlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHNXZjbTFoYkdsNlpYSXVZMjl1ZEdWdWRFUnZZM1Z0Wlc1MExuZHlhWFJsS0cxaGNtdDFjQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnViM0p0WVd4cGVtVmtUV0Z5YTNWd0lEMGdibTl5YldGc2FYcGxjaTVqYjI1MFpXNTBSRzlqZFcxbGJuUXVaRzlqZFcxbGJuUkZiR1Z0Wlc1MExtOTFkR1Z5U0ZSTlREdGNiaUFnSUNBZ0lDQWdJQ0FnSUdSdlkzVnRaVzUwTG1KdlpIa3VjbVZ0YjNabFEyaHBiR1FvYm05eWJXRnNhWHBsY2lrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2RtRnlJR1JwWm1aSmJtUmxlQ0E5SUdacGNuTjBSR2xtWm1WeVpXNWpaVWx1WkdWNEtHNXZjbTFoYkdsNlpXUk5ZWEpyZFhBc0lISnZiM1JOWVhKcmRYQXBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ1pHbG1abVZ5Wlc1alpTQTlJQ2NnS0dOc2FXVnVkQ2tnSnlBcklHNXZjbTFoYkdsNlpXUk5ZWEpyZFhBdWMzVmljM1J5YVc1bktHUnBabVpKYm1SbGVDQXRJREl3TENCa2FXWm1TVzVrWlhnZ0t5QXlNQ2tnS3lBblhGeHVJQ2h6WlhKMlpYSXBJQ2NnS3lCeWIyOTBUV0Z5YTNWd0xuTjFZbk4wY21sdVp5aGthV1ptU1c1a1pYZ2dMU0F5TUN3Z1pHbG1aa2x1WkdWNElDc2dNakFwTzF4dVhHNGdJQ0FnSUNBZ0lDRW9ZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJQ0U5UFNCRVQwTmZUazlFUlY5VVdWQkZLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFpiM1ZjWENkeVpTQjBjbmxwYm1jZ2RHOGdjbVZ1WkdWeUlHRWdZMjl0Y0c5dVpXNTBJSFJ2SUhSb1pTQmtiMk4xYldWdWRDQjFjMmx1WnlBbklDc2dKM05sY25abGNpQnlaVzVrWlhKcGJtY2dZblYwSUhSb1pTQmphR1ZqYTNOMWJTQjNZWE1nYVc1MllXeHBaQzRnVkdocGN5QjFjM1ZoYkd4NUlDY2dLeUFuYldWaGJuTWdlVzkxSUhKbGJtUmxjbVZrSUdFZ1pHbG1abVZ5Wlc1MElHTnZiWEJ2Ym1WdWRDQjBlWEJsSUc5eUlIQnliM0J6SUc5dUlDY2dLeUFuZEdobElHTnNhV1Z1ZENCbWNtOXRJSFJvWlNCdmJtVWdiMjRnZEdobElITmxjblpsY2l3Z2IzSWdlVzkxY2lCeVpXNWtaWElvS1NBbklDc2dKMjFsZEdodlpITWdZWEpsSUdsdGNIVnlaUzRnVW1WaFkzUWdZMkZ1Ym05MElHaGhibVJzWlNCMGFHbHpJR05oYzJVZ1pIVmxJSFJ2SUNjZ0t5QW5ZM0p2YzNNdFluSnZkM05sY2lCeGRXbHlhM01nWW5rZ2NtVnVaR1Z5YVc1bklHRjBJSFJvWlNCa2IyTjFiV1Z1ZENCeWIyOTBMaUJaYjNVZ0p5QXJJQ2R6YUc5MWJHUWdiRzl2YXlCbWIzSWdaVzUyYVhKdmJtMWxiblFnWkdWd1pXNWtaVzUwSUdOdlpHVWdhVzRnZVc5MWNpQmpiMjF3YjI1bGJuUnpJQ2NnS3lBbllXNWtJR1Z1YzNWeVpTQjBhR1VnY0hKdmNITWdZWEpsSUhSb1pTQnpZVzFsSUdOc2FXVnVkQ0JoYm1RZ2MyVnlkbVZ5SUhOcFpHVTZYRnh1SlhNbkxDQmthV1ptWlhKbGJtTmxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjFKbFlXTjBJR0YwZEdWdGNIUmxaQ0IwYnlCeVpYVnpaU0J0WVhKcmRYQWdhVzRnWVNCamIyNTBZV2x1WlhJZ1luVjBJSFJvWlNBbklDc2dKMk5vWldOcmMzVnRJSGRoY3lCcGJuWmhiR2xrTGlCVWFHbHpJR2RsYm1WeVlXeHNlU0J0WldGdWN5QjBhR0YwSUhsdmRTQmhjbVVnSnlBcklDZDFjMmx1WnlCelpYSjJaWElnY21WdVpHVnlhVzVuSUdGdVpDQjBhR1VnYldGeWEzVndJR2RsYm1WeVlYUmxaQ0J2YmlCMGFHVWdKeUFySUNkelpYSjJaWElnZDJGeklHNXZkQ0IzYUdGMElIUm9aU0JqYkdsbGJuUWdkMkZ6SUdWNGNHVmpkR2x1Wnk0Z1VtVmhZM1FnYVc1cVpXTjBaV1FnSnlBcklDZHVaWGNnYldGeWEzVndJSFJ2SUdOdmJYQmxibk5oZEdVZ2QyaHBZMmdnZDI5eWEzTWdZblYwSUhsdmRTQm9ZWFpsSUd4dmMzUWdiV0Z1ZVNBbklDc2dKMjltSUhSb1pTQmlaVzVsWm1sMGN5QnZaaUJ6WlhKMlpYSWdjbVZ1WkdWeWFXNW5MaUJKYm5OMFpXRmtMQ0JtYVdkMWNtVWdiM1YwSUNjZ0t5QW5kMmg1SUhSb1pTQnRZWEpyZFhBZ1ltVnBibWNnWjJWdVpYSmhkR1ZrSUdseklHUnBabVpsY21WdWRDQnZiaUIwYUdVZ1kyeHBaVzUwSUNjZ0t5QW5iM0lnYzJWeWRtVnlPbHhjYmlWekp5d2daR2xtWm1WeVpXNWpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBaEtHTnZiblJoYVc1bGNpNXViMlJsVkhsd1pTQWhQVDBnUkU5RFgwNVBSRVZmVkZsUVJTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbldXOTFYRnduY21VZ2RISjVhVzVuSUhSdklISmxibVJsY2lCaElHTnZiWEJ2Ym1WdWRDQjBieUIwYUdVZ1pHOWpkVzFsYm5RZ1luVjBJQ2NnS3lBbmVXOTFJR1JwWkc1Y1hDZDBJSFZ6WlNCelpYSjJaWElnY21WdVpHVnlhVzVuTGlCWFpTQmpZVzVjWENkMElHUnZJSFJvYVhNZ0p5QXJJQ2QzYVhSb2IzVjBJSFZ6YVc1bklITmxjblpsY2lCeVpXNWtaWEpwYm1jZ1pIVmxJSFJ2SUdOeWIzTnpMV0p5YjNkelpYSWdjWFZwY210ekxpQW5JQ3NnSjFObFpTQlNaV0ZqZEVSUFRWTmxjblpsY2k1eVpXNWtaWEpVYjFOMGNtbHVaeWdwSUdadmNpQnpaWEoyWlhJZ2NtVnVaR1Z5YVc1bkxpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUdsbUlDaDBjbUZ1YzJGamRHbHZiaTUxYzJWRGNtVmhkR1ZGYkdWdFpXNTBLU0I3WEc0Z0lDQWdJQ0IzYUdsc1pTQW9ZMjl1ZEdGcGJtVnlMbXhoYzNSRGFHbHNaQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBZV2x1WlhJdWNtVnRiM1psUTJocGJHUW9ZMjl1ZEdGcGJtVnlMbXhoYzNSRGFHbHNaQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JqYjI1MFlXbHVaWEl1WVhCd1pXNWtRMmhwYkdRb2JXRnlhM1Z3S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjMlYwU1c1dVpYSklWRTFNS0dOdmJuUmhhVzVsY2l3Z2JXRnlhM1Z3S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ2IzZHVaWEpFYjJOMWJXVnVkRU52Ym5SbGVIUkxaWGs2SUc5M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaV0ZqZENCSlJDQjFkR2xzYVhScFpYTXVYRzRnSUNBcUwxeHVYRzRnSUdkbGRGSmxZV04wVW05dmRFbEVPaUJuWlhSU1pXRmpkRkp2YjNSSlJDeGNibHh1SUNCblpYUkpSRG9nWjJWMFNVUXNYRzVjYmlBZ2MyVjBTVVE2SUhObGRFbEVMRnh1WEc0Z0lHZGxkRTV2WkdVNklHZGxkRTV2WkdVc1hHNWNiaUFnWjJWMFRtOWtaVVp5YjIxSmJuTjBZVzVqWlRvZ1oyVjBUbTlrWlVaeWIyMUpibk4wWVc1alpTeGNibHh1SUNCcGMxWmhiR2xrT2lCcGMxWmhiR2xrTEZ4dVhHNGdJSEIxY21kbFNVUTZJSEIxY21kbFNVUmNibjA3WEc1Y2JsSmxZV04wVUdWeVppNXRaV0Z6ZFhKbFRXVjBhRzlrY3loU1pXRmpkRTF2ZFc1MExDQW5VbVZoWTNSTmIzVnVkQ2NzSUh0Y2JpQWdYM0psYm1SbGNrNWxkMUp2YjNSRGIyMXdiMjVsYm5RNklDZGZjbVZ1WkdWeVRtVjNVbTl2ZEVOdmJYQnZibVZ1ZENjc1hHNGdJRjl0YjNWdWRFbHRZV2RsU1c1MGIwNXZaR1U2SUNkZmJXOTFiblJKYldGblpVbHVkRzlPYjJSbEoxeHVmU2s3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JOYjNWdWREc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE11bHRpQ2hpbGRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcycpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZFJlY29uY2lsZXInKTtcblxudmFyIGZsYXR0ZW5DaGlsZHJlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbkNoaWxkcmVuJyk7XG5cbi8qKlxuICogVXBkYXRpbmcgY2hpbGRyZW4gb2YgYSBjb21wb25lbnQgbWF5IHRyaWdnZXIgcmVjdXJzaXZlIHVwZGF0ZXMuIFRoZSBkZXB0aCBpc1xuICogdXNlZCB0byBiYXRjaCByZWN1cnNpdmUgdXBkYXRlcyB0byByZW5kZXIgbWFya3VwIG1vcmUgZWZmaWNpZW50bHkuXG4gKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBwcml2YXRlXG4gKi9cbnZhciB1cGRhdGVEZXB0aCA9IDA7XG5cbi8qKlxuICogUXVldWUgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb24gb2JqZWN0cy5cbiAqXG4gKiBFYWNoIG9iamVjdCBoYXMgYSBgdHlwZWAgcHJvcGVydHkgdGhhdCBpcyBpbiBgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXNgLlxuICpcbiAqIEB0eXBlIHthcnJheTxvYmplY3Q+fVxuICogQHByaXZhdGVcbiAqL1xudmFyIHVwZGF0ZVF1ZXVlID0gW107XG5cbi8qKlxuICogUXVldWUgb2YgbWFya3VwIHRvIGJlIHJlbmRlcmVkLlxuICpcbiAqIEB0eXBlIHthcnJheTxzdHJpbmc+fVxuICogQHByaXZhdGVcbiAqL1xudmFyIG1hcmt1cFF1ZXVlID0gW107XG5cbi8qKlxuICogRW5xdWV1ZXMgbWFya3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVJbnNlcnRNYXJrdXAocGFyZW50SUQsIG1hcmt1cCwgdG9JbmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLklOU0VSVF9NQVJLVVAsXG4gICAgbWFya3VwSW5kZXg6IG1hcmt1cFF1ZXVlLnB1c2gobWFya3VwKSAtIDEsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgdG9JbmRleDogdG9JbmRleFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyBtb3ZpbmcgYW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggU291cmNlIGluZGV4IG9mIHRoZSBleGlzdGluZyBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlTW92ZShwYXJlbnRJRCwgZnJvbUluZGV4LCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuTU9WRV9FWElTVElORyxcbiAgICBtYXJrdXBJbmRleDogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgIHRvSW5kZXg6IHRvSW5kZXhcbiAgfSk7XG59XG5cbi8qKlxuICogRW5xdWV1ZXMgcmVtb3ZpbmcgYW4gZWxlbWVudCBhdCBhbiBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50SUQgSUQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IEluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVSZW1vdmUocGFyZW50SUQsIGZyb21JbmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlJFTU9WRV9OT0RFLFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgdG9JbmRleDogbnVsbFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyBzZXR0aW5nIHRoZSBtYXJrdXAgb2YgYSBub2RlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlU2V0TWFya3VwKHBhcmVudElELCBtYXJrdXApIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICB1cGRhdGVRdWV1ZS5wdXNoKHtcbiAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB0eXBlOiBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5TRVRfTUFSS1VQLFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IG1hcmt1cCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgdG9JbmRleDogbnVsbFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbnF1ZXVlcyBzZXR0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudElEIElEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250ZW50IFRleHQgY29udGVudCB0byBzZXQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlVGV4dENvbnRlbnQocGFyZW50SUQsIHRleHRDb250ZW50KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuVEVYVF9DT05URU5ULFxuICAgIG1hcmt1cEluZGV4OiBudWxsLFxuICAgIGNvbnRlbnQ6IHRleHRDb250ZW50LFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICB0b0luZGV4OiBudWxsXG4gIH0pO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwcm9jZXNzUXVldWUoKSB7XG4gIGlmICh1cGRhdGVRdWV1ZS5sZW5ndGgpIHtcbiAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXModXBkYXRlUXVldWUsIG1hcmt1cFF1ZXVlKTtcbiAgICBjbGVhclF1ZXVlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDbGVhcnMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2xlYXJRdWV1ZSgpIHtcbiAgdXBkYXRlUXVldWUubGVuZ3RoID0gMDtcbiAgbWFya3VwUXVldWUubGVuZ3RoID0gMDtcbn1cblxuLyoqXG4gKiBSZWFjdE11bHRpQ2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcgbXVsdGlwbGUgY2hpbGRyZW4uXG4gKlxuICogQGNsYXNzIFJlYWN0TXVsdGlDaGlsZFxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdE11bHRpQ2hpbGQgPSB7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUgbXVsdGlwbGVcbiAgICogY2hpbGRyZW4uIFRoaXMgaXMgdXNlZCBieSBgUmVhY3RET01Db21wb25lbnRgIHRvIG1vdW50LCB1cGRhdGUsIGFuZFxuICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBsZW5kcyB7UmVhY3RNdWx0aUNoaWxkLnByb3RvdHlwZX1cbiAgICovXG4gIE1peGluOiB7XG5cbiAgICBfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICBfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW47XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzKTtcbiAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gQW4gYXJyYXkgb2YgbW91bnRlZCByZXByZXNlbnRhdGlvbnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgbW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07XG4gICAgICAgICAgLy8gSW5saW5lZCBmb3IgcGVyZm9ybWFuY2UsIHNlZSBgUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RJRGAuXG4gICAgICAgICAgdmFyIHJvb3RJRCA9IHRoaXMuX3Jvb3ROb2RlSUQgKyBuYW1lO1xuICAgICAgICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCByb290SUQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4Kys7XG4gICAgICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1vdW50SW1hZ2VzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRlbnQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVudCkge1xuICAgICAgdXBkYXRlRGVwdGgrKztcbiAgICAgIHZhciBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cbiAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbik7XG4gICAgICAgIC8vIFRPRE86IFRoZSBzZXRUZXh0Q29udGVudCBvcGVyYXRpb24gc2hvdWxkIGJlIGVub3VnaFxuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgbmV3IHRleHQgY29udGVudC5cbiAgICAgICAgdGhpcy5zZXRUZXh0Q29udGVudChuZXh0Q29udGVudCk7XG4gICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB1cGRhdGVEZXB0aC0tO1xuICAgICAgICBpZiAoIXVwZGF0ZURlcHRoKSB7XG4gICAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICBjbGVhclF1ZXVlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG1hcmt1cCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZU1hcmt1cDogZnVuY3Rpb24gKG5leHRNYXJrdXApIHtcbiAgICAgIHVwZGF0ZURlcHRoKys7XG4gICAgICB2YXIgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4pO1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZEJ5TmFtZShwcmV2Q2hpbGRyZW5bbmFtZV0sIG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldE1hcmt1cChuZXh0TWFya3VwKTtcbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHVwZGF0ZURlcHRoLS07XG4gICAgICAgIGlmICghdXBkYXRlRGVwdGgpIHtcbiAgICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgIGNsZWFyUXVldWUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggbmV3IGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdXBkYXRlRGVwdGgrKztcbiAgICAgIHZhciBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdXBkYXRlRGVwdGgtLTtcbiAgICAgICAgaWYgKCF1cGRhdGVEZXB0aCkge1xuICAgICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgICAgY2xlYXJRdWV1ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzUXVldWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSW1wcm92ZSBwZXJmb3JtYW5jZSBieSBpc29sYXRpbmcgdGhpcyBob3QgY29kZSBwYXRoIGZyb20gdGhlIHRyeS9jYXRjaFxuICAgICAqIGJsb2NrIGluIGB1cGRhdGVDaGlsZHJlbmAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBmaW5hbFxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuO1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbmFtZTtcbiAgICAgIC8vIGBuZXh0SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5gLCBidXRcbiAgICAgIC8vIGBsYXN0SW5kZXhgIHdpbGwgYmUgdGhlIGxhc3QgaW5kZXggdmlzaXRlZCBpbiBgcHJldkNoaWxkcmVuYC5cbiAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIG5leHRJbmRleCA9IDA7XG4gICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG4gICAgICAgIGlmICghbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkge1xuICAgICAgICAgIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbmV4dEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICBwcmV2Q2hpbGQuX21vdW50SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIGBsYXN0SW5kZXhgIGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMgdW5zZXQgYnkgdW5tb3VudGluZy5cbiAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgICB0aGlzLl9tb3VudENoaWxkQnlOYW1lQXRJbmRleChuZXh0Q2hpbGQsIG5hbWUsIG5leHRJbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIG5leHRJbmRleCsrO1xuICAgICAgfVxuICAgICAgLy8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgICB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxkcmVuW25hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cbiAgICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHJlbmRlcmVkQ2hpbGRyZW4pO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdmVzIGEgY2hpbGQgY29tcG9uZW50IHRvIHRoZSBzdXBwbGllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsYXN0SW5kZXggTGFzdCBpbmRleCB2aXNpdGVkIG9mIHRoZSBzaWJsaW5ncyBvZiBgY2hpbGRgLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgdG9JbmRleCwgbGFzdEluZGV4KSB7XG4gICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJbmRleGAsIHRoZW4gaXQgbmVlZHMgdG9cbiAgICAgIC8vIGJlIG1vdmVkLiBPdGhlcndpc2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmVcbiAgICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuICAgICAgaWYgKGNoaWxkLl9tb3VudEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgIGVucXVldWVNb3ZlKHRoaXMuX3Jvb3ROb2RlSUQsIGNoaWxkLl9tb3VudEluZGV4LCB0b0luZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbW91bnRJbWFnZSkge1xuICAgICAgZW5xdWV1ZUluc2VydE1hcmt1cCh0aGlzLl9yb290Tm9kZUlELCBtb3VudEltYWdlLCBjaGlsZC5fbW91bnRJbmRleCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDaGlsZCB0byByZW1vdmUuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGVucXVldWVSZW1vdmUodGhpcy5fcm9vdE5vZGVJRCwgY2hpbGQuX21vdW50SW5kZXgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoaXMgdGV4dCBjb250ZW50IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBzZXRUZXh0Q29udGVudDogZnVuY3Rpb24gKHRleHRDb250ZW50KSB7XG4gICAgICBlbnF1ZXVlVGV4dENvbnRlbnQodGhpcy5fcm9vdE5vZGVJRCwgdGV4dENvbnRlbnQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoaXMgbWFya3VwIHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHNldC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgc2V0TWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgICBlbnF1ZXVlU2V0TWFya3VwKHRoaXMuX3Jvb3ROb2RlSUQsIG1hcmt1cCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdW50cyBhIGNoaWxkIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW91bnQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX21vdW50Q2hpbGRCeU5hbWVBdEluZGV4OiBmdW5jdGlvbiAoY2hpbGQsIG5hbWUsIGluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgLy8gSW5saW5lZCBmb3IgcGVyZm9ybWFuY2UsIHNlZSBgUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RJRGAuXG4gICAgICB2YXIgcm9vdElEID0gdGhpcy5fcm9vdE5vZGVJRCArIG5hbWU7XG4gICAgICB2YXIgbW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5jcmVhdGVDaGlsZChjaGlsZCwgbW91bnRJbWFnZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVubW91bnRzIGEgcmVuZGVyZWQgY2hpbGQuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gdW5tb3VudC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF91bm1vdW50Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgdGhpcy5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICBjaGlsZC5fbW91bnRJbmRleCA9IG51bGw7XG4gICAgfVxuXG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFMTFiSFJwUTJocGJHUXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JOZFd4MGFVTm9hV3hrWEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGSmxZV04wUTI5dGNHOXVaVzUwUlc1MmFYSnZibTFsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyOXRjRzl1Wlc1MFJXNTJhWEp2Ym0xbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5kV3gwYVVOb2FXeGtWWEJrWVhSbFZIbHdaWE1uS1R0Y2JseHVkbUZ5SUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpY3BPMXh1ZG1GeUlGSmxZV04wVW1WamIyNWphV3hsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSU1pXTnZibU5wYkdWeUp5azdYRzUyWVhJZ1VtVmhZM1JEYUdsc1pGSmxZMjl1WTJsc1pYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeUp5azdYRzVjYm5aaGNpQm1iR0YwZEdWdVEyaHBiR1J5Wlc0Z1BTQnlaWEYxYVhKbEtDY3VMMlpzWVhSMFpXNURhR2xzWkhKbGJpY3BPMXh1WEc0dktpcGNiaUFxSUZWd1pHRjBhVzVuSUdOb2FXeGtjbVZ1SUc5bUlHRWdZMjl0Y0c5dVpXNTBJRzFoZVNCMGNtbG5aMlZ5SUhKbFkzVnljMmwyWlNCMWNHUmhkR1Z6TGlCVWFHVWdaR1Z3ZEdnZ2FYTmNiaUFxSUhWelpXUWdkRzhnWW1GMFkyZ2djbVZqZFhKemFYWmxJSFZ3WkdGMFpYTWdkRzhnY21WdVpHVnlJRzFoY210MWNDQnRiM0psSUdWbVptbGphV1Z1ZEd4NUxseHVJQ3BjYmlBcUlFQjBlWEJsSUh0dWRXMWlaWEo5WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1MllYSWdkWEJrWVhSbFJHVndkR2dnUFNBd08xeHVYRzR2S2lwY2JpQXFJRkYxWlhWbElHOW1JSFZ3WkdGMFpTQmpiMjVtYVdkMWNtRjBhVzl1SUc5aWFtVmpkSE11WEc0Z0tseHVJQ29nUldGamFDQnZZbXBsWTNRZ2FHRnpJR0VnWUhSNWNHVmdJSEJ5YjNCbGNuUjVJSFJvWVhRZ2FYTWdhVzRnWUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6WUM1Y2JpQXFYRzRnS2lCQWRIbHdaU0I3WVhKeVlYazhiMkpxWldOMFBuMWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNiblpoY2lCMWNHUmhkR1ZSZFdWMVpTQTlJRnRkTzF4dVhHNHZLaXBjYmlBcUlGRjFaWFZsSUc5bUlHMWhjbXQxY0NCMGJ5QmlaU0J5Wlc1a1pYSmxaQzVjYmlBcVhHNGdLaUJBZEhsd1pTQjdZWEp5WVhrOGMzUnlhVzVuUG4xY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JuWmhjaUJ0WVhKcmRYQlJkV1YxWlNBOUlGdGRPMXh1WEc0dktpcGNiaUFxSUVWdWNYVmxkV1Z6SUcxaGNtdDFjQ0IwYnlCaVpTQnlaVzVrWlhKbFpDQmhibVFnYVc1elpYSjBaV1FnWVhRZ1lTQnpkWEJ3YkdsbFpDQnBibVJsZUM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0dGeVpXNTBTVVFnU1VRZ2IyWWdkR2hsSUhCaGNtVnVkQ0JqYjIxd2IyNWxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXRnlhM1Z3SUUxaGNtdDFjQ0IwYUdGMElISmxibVJsY25NZ2FXNTBieUJoYmlCbGJHVnRaVzUwTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlIUnZTVzVrWlhnZ1JHVnpkR2x1WVhScGIyNGdhVzVrWlhndVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQmxibkYxWlhWbFNXNXpaWEowVFdGeWEzVndLSEJoY21WdWRFbEVMQ0J0WVhKcmRYQXNJSFJ2U1c1a1pYZ3BJSHRjYmlBZ0x5OGdUazlVUlRvZ1RuVnNiQ0IyWVd4MVpYTWdjbVZrZFdObElHaHBaR1JsYmlCamJHRnpjMlZ6TGx4dUlDQjFjR1JoZEdWUmRXVjFaUzV3ZFhOb0tIdGNiaUFnSUNCd1lYSmxiblJKUkRvZ2NHRnlaVzUwU1VRc1hHNGdJQ0FnY0dGeVpXNTBUbTlrWlRvZ2JuVnNiQ3hjYmlBZ0lDQjBlWEJsT2lCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1SlRsTkZVbFJmVFVGU1MxVlFMRnh1SUNBZ0lHMWhjbXQxY0VsdVpHVjRPaUJ0WVhKcmRYQlJkV1YxWlM1d2RYTm9LRzFoY210MWNDa2dMU0F4TEZ4dUlDQWdJR052Ym5SbGJuUTZJRzUxYkd3c1hHNGdJQ0FnWm5KdmJVbHVaR1Y0T2lCdWRXeHNMRnh1SUNBZ0lIUnZTVzVrWlhnNklIUnZTVzVrWlhoY2JpQWdmU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dSVzV4ZFdWMVpYTWdiVzkyYVc1bklHRnVJR1Y0YVhOMGFXNW5JR1ZzWlcxbGJuUWdkRzhnWVc1dmRHaGxjaUJwYm1SbGVDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NHRnlaVzUwU1VRZ1NVUWdiMllnZEdobElIQmhjbVZ1ZENCamIyMXdiMjVsYm5RdVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdabkp2YlVsdVpHVjRJRk52ZFhKalpTQnBibVJsZUNCdlppQjBhR1VnWlhocGMzUnBibWNnWld4bGJXVnVkQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCMGIwbHVaR1Y0SUVSbGMzUnBibUYwYVc5dUlHbHVaR1Y0SUc5bUlIUm9aU0JsYkdWdFpXNTBMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlc1eGRXVjFaVTF2ZG1Vb2NHRnlaVzUwU1VRc0lHWnliMjFKYm1SbGVDd2dkRzlKYm1SbGVDa2dlMXh1SUNBdkx5Qk9UMVJGT2lCT2RXeHNJSFpoYkhWbGN5QnlaV1IxWTJVZ2FHbGtaR1Z1SUdOc1lYTnpaWE11WEc0Z0lIVndaR0YwWlZGMVpYVmxMbkIxYzJnb2UxeHVJQ0FnSUhCaGNtVnVkRWxFT2lCd1lYSmxiblJKUkN4Y2JpQWdJQ0J3WVhKbGJuUk9iMlJsT2lCdWRXeHNMRnh1SUNBZ0lIUjVjR1U2SUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6TGsxUFZrVmZSVmhKVTFSSlRrY3NYRzRnSUNBZ2JXRnlhM1Z3U1c1a1pYZzZJRzUxYkd3c1hHNGdJQ0FnWTI5dWRHVnVkRG9nYm5Wc2JDeGNiaUFnSUNCbWNtOXRTVzVrWlhnNklHWnliMjFKYm1SbGVDeGNiaUFnSUNCMGIwbHVaR1Y0T2lCMGIwbHVaR1Y0WEc0Z0lIMHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnVjWFZsZFdWeklISmxiVzkyYVc1bklHRnVJR1ZzWlcxbGJuUWdZWFFnWVc0Z2FXNWtaWGd1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEJoY21WdWRFbEVJRWxFSUc5bUlIUm9aU0J3WVhKbGJuUWdZMjl0Y0c5dVpXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdaeWIyMUpibVJsZUNCSmJtUmxlQ0J2WmlCMGFHVWdaV3hsYldWdWRDQjBieUJ5WlcxdmRtVXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJsYm5GMVpYVmxVbVZ0YjNabEtIQmhjbVZ1ZEVsRUxDQm1jbTl0U1c1a1pYZ3BJSHRjYmlBZ0x5OGdUazlVUlRvZ1RuVnNiQ0IyWVd4MVpYTWdjbVZrZFdObElHaHBaR1JsYmlCamJHRnpjMlZ6TGx4dUlDQjFjR1JoZEdWUmRXVjFaUzV3ZFhOb0tIdGNiaUFnSUNCd1lYSmxiblJKUkRvZ2NHRnlaVzUwU1VRc1hHNGdJQ0FnY0dGeVpXNTBUbTlrWlRvZ2JuVnNiQ3hjYmlBZ0lDQjBlWEJsT2lCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1U1JVMVBWa1ZmVGs5RVJTeGNiaUFnSUNCdFlYSnJkWEJKYm1SbGVEb2diblZzYkN4Y2JpQWdJQ0JqYjI1MFpXNTBPaUJ1ZFd4c0xGeHVJQ0FnSUdaeWIyMUpibVJsZURvZ1puSnZiVWx1WkdWNExGeHVJQ0FnSUhSdlNXNWtaWGc2SUc1MWJHeGNiaUFnZlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUlc1eGRXVjFaWE1nYzJWMGRHbHVaeUIwYUdVZ2JXRnlhM1Z3SUc5bUlHRWdibTlrWlM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0dGeVpXNTBTVVFnU1VRZ2IyWWdkR2hsSUhCaGNtVnVkQ0JqYjIxd2IyNWxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXRnlhM1Z3SUUxaGNtdDFjQ0IwYUdGMElISmxibVJsY25NZ2FXNTBieUJoYmlCbGJHVnRaVzUwTGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pXNXhkV1YxWlZObGRFMWhjbXQxY0Nod1lYSmxiblJKUkN3Z2JXRnlhM1Z3S1NCN1hHNGdJQzh2SUU1UFZFVTZJRTUxYkd3Z2RtRnNkV1Z6SUhKbFpIVmpaU0JvYVdSa1pXNGdZMnhoYzNObGN5NWNiaUFnZFhCa1lYUmxVWFZsZFdVdWNIVnphQ2g3WEc0Z0lDQWdjR0Z5Wlc1MFNVUTZJSEJoY21WdWRFbEVMRnh1SUNBZ0lIQmhjbVZ1ZEU1dlpHVTZJRzUxYkd3c1hHNGdJQ0FnZEhsd1pUb2dVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTXVVMFZVWDAxQlVrdFZVQ3hjYmlBZ0lDQnRZWEpyZFhCSmJtUmxlRG9nYm5Wc2JDeGNiaUFnSUNCamIyNTBaVzUwT2lCdFlYSnJkWEFzWEc0Z0lDQWdabkp2YlVsdVpHVjRPaUJ1ZFd4c0xGeHVJQ0FnSUhSdlNXNWtaWGc2SUc1MWJHeGNiaUFnZlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUlc1eGRXVjFaWE1nYzJWMGRHbHVaeUIwYUdVZ2RHVjRkQ0JqYjI1MFpXNTBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQndZWEpsYm5SSlJDQkpSQ0J2WmlCMGFHVWdjR0Z5Wlc1MElHTnZiWEJ2Ym1WdWRDNWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IwWlhoMFEyOXVkR1Z1ZENCVVpYaDBJR052Ym5SbGJuUWdkRzhnYzJWMExseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdaVzV4ZFdWMVpWUmxlSFJEYjI1MFpXNTBLSEJoY21WdWRFbEVMQ0IwWlhoMFEyOXVkR1Z1ZENrZ2UxeHVJQ0F2THlCT1QxUkZPaUJPZFd4c0lIWmhiSFZsY3lCeVpXUjFZMlVnYUdsa1pHVnVJR05zWVhOelpYTXVYRzRnSUhWd1pHRjBaVkYxWlhWbExuQjFjMmdvZTF4dUlDQWdJSEJoY21WdWRFbEVPaUJ3WVhKbGJuUkpSQ3hjYmlBZ0lDQndZWEpsYm5ST2IyUmxPaUJ1ZFd4c0xGeHVJQ0FnSUhSNWNHVTZJRkpsWVdOMFRYVnNkR2xEYUdsc1pGVndaR0YwWlZSNWNHVnpMbFJGV0ZSZlEwOU9WRVZPVkN4Y2JpQWdJQ0J0WVhKcmRYQkpibVJsZURvZ2JuVnNiQ3hjYmlBZ0lDQmpiMjUwWlc1ME9pQjBaWGgwUTI5dWRHVnVkQ3hjYmlBZ0lDQm1jbTl0U1c1a1pYZzZJRzUxYkd3c1hHNGdJQ0FnZEc5SmJtUmxlRG9nYm5Wc2JGeHVJQ0I5S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJRY205alpYTnpaWE1nWVc1NUlHVnVjWFZsZFdWa0lIVndaR0YwWlhNdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnY0hKdlkyVnpjMUYxWlhWbEtDa2dlMXh1SUNCcFppQW9kWEJrWVhSbFVYVmxkV1V1YkdWdVozUm9LU0I3WEc0Z0lDQWdVbVZoWTNSRGIyMXdiMjVsYm5SRmJuWnBjbTl1YldWdWRDNXdjbTlqWlhOelEyaHBiR1J5Wlc1VmNHUmhkR1Z6S0hWd1pHRjBaVkYxWlhWbExDQnRZWEpyZFhCUmRXVjFaU2s3WEc0Z0lDQWdZMnhsWVhKUmRXVjFaU2dwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGxZWEp6SUdGdWVTQmxibkYxWlhWbFpDQjFjR1JoZEdWekxseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOc1pXRnlVWFZsZFdVb0tTQjdYRzRnSUhWd1pHRjBaVkYxWlhWbExteGxibWQwYUNBOUlEQTdYRzRnSUcxaGNtdDFjRkYxWlhWbExteGxibWQwYUNBOUlEQTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVmhZM1JOZFd4MGFVTm9hV3hrSUdGeVpTQmpZWEJoWW14bElHOW1JSEpsWTI5dVkybHNhVzVuSUcxMWJIUnBjR3hsSUdOb2FXeGtjbVZ1TGx4dUlDcGNiaUFxSUVCamJHRnpjeUJTWldGamRFMTFiSFJwUTJocGJHUmNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JOZFd4MGFVTm9hV3hrSUQwZ2UxeHVYRzRnSUM4cUtseHVJQ0FnS2lCUWNtOTJhV1JsY3lCamIyMXRiMjRnWm5WdVkzUnBiMjVoYkdsMGVTQm1iM0lnWTI5dGNHOXVaVzUwY3lCMGFHRjBJRzExYzNRZ2NtVmpiMjVqYVd4bElHMTFiSFJwY0d4bFhHNGdJQ0FxSUdOb2FXeGtjbVZ1TGlCVWFHbHpJR2x6SUhWelpXUWdZbmtnWUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWUNCMGJ5QnRiM1Z1ZEN3Z2RYQmtZWFJsTENCaGJtUmNiaUFnSUNvZ2RXNXRiM1Z1ZENCamFHbHNaQ0JqYjIxd2IyNWxiblJ6TGx4dUlDQWdLbHh1SUNBZ0tpQkFiR1Z1WkhNZ2UxSmxZV04wVFhWc2RHbERhR2xzWkM1d2NtOTBiM1I1Y0dWOVhHNGdJQ0FxTDF4dUlDQk5hWGhwYmpvZ2UxeHVYRzRnSUNBZ1gzSmxZMjl1WTJsc1pYSkpibk4wWVc1MGFXRjBaVU5vYVd4a2NtVnVPaUJtZFc1amRHbHZiaUFvYm1WemRHVmtRMmhwYkdSeVpXNHNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9kR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTGw5dmQyNWxjanRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCU1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNXBibk4wWVc1MGFXRjBaVU5vYVd4a2NtVnVLRzVsYzNSbFpFTm9hV3hrY21WdUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTQm1hVzVoYkd4NUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUZKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeUxtbHVjM1JoYm5ScFlYUmxRMmhwYkdSeVpXNG9ibVZ6ZEdWa1EyaHBiR1J5Wlc0c0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdYM0psWTI5dVkybHNaWEpWY0dSaGRHVkRhR2xzWkhKbGJqb2dablZ1WTNScGIyNGdLSEJ5WlhaRGFHbHNaSEpsYml3Z2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JtVjRkRU5vYVd4a2NtVnVPMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnUFNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhoMFEyaHBiR1J5Wlc0Z1BTQm1iR0YwZEdWdVEyaHBiR1J5Wlc0b2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5TG5Wd1pHRjBaVU5vYVd4a2NtVnVLSEJ5WlhaRGFHbHNaSEpsYml3Z2JtVjRkRU5vYVd4a2NtVnVMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHNWxlSFJEYUdsc1pISmxiaUE5SUdac1lYUjBaVzVEYUdsc1pISmxiaWh1WlhoMFRtVnpkR1ZrUTJocGJHUnlaVzVGYkdWdFpXNTBjeWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdVbVZoWTNSRGFHbHNaRkpsWTI5dVkybHNaWEl1ZFhCa1lYUmxRMmhwYkdSeVpXNG9jSEpsZGtOb2FXeGtjbVZ1TENCdVpYaDBRMmhwYkdSeVpXNHNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1IyVnVaWEpoZEdWeklHRWdYQ0p0YjNWdWRDQnBiV0ZuWlZ3aUlHWnZjaUJsWVdOb0lHOW1JSFJvWlNCemRYQndiR2xsWkNCamFHbHNaSEpsYmk0Z1NXNGdkR2hsSUdOaGMyVmNiaUFnSUNBZ0tpQnZaaUJnVW1WaFkzUkVUMDFEYjIxd2IyNWxiblJnTENCaElHMXZkVzUwSUdsdFlXZGxJR2x6SUdFZ2MzUnlhVzVuSUc5bUlHMWhjbXQxY0M1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WemRHVmtRMmhwYkdSeVpXNGdUbVZ6ZEdWa0lHTm9hV3hrSUcxaGNITXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdZWEp5WVhsOUlFRnVJR0Z5Y21GNUlHOW1JRzF2ZFc1MFpXUWdjbVZ3Y21WelpXNTBZWFJwYjI1ekxseHVJQ0FnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnSUNBcUwxeHVJQ0FnSUcxdmRXNTBRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2h1WlhOMFpXUkRhR2xzWkhKbGJpd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUhaaGNpQmphR2xzWkhKbGJpQTlJSFJvYVhNdVgzSmxZMjl1WTJsc1pYSkpibk4wWVc1MGFXRjBaVU5vYVd4a2NtVnVLRzVsYzNSbFpFTm9hV3hrY21WdUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0IwYUdsekxsOXlaVzVrWlhKbFpFTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNDdYRzRnSUNBZ0lDQjJZWElnYlc5MWJuUkpiV0ZuWlhNZ1BTQmJYVHRjYmlBZ0lDQWdJSFpoY2lCcGJtUmxlQ0E5SURBN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCdVlXMWxJR2x1SUdOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUdsc1pISmxiaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCamFHbHNaQ0E5SUdOb2FXeGtjbVZ1VzI1aGJXVmRPMXh1SUNBZ0lDQWdJQ0FnSUM4dklFbHViR2x1WldRZ1ptOXlJSEJsY21admNtMWhibU5sTENCelpXVWdZRkpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6TG1OeVpXRjBaVkpsWVdOMFNVUmdMbHh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnliMjkwU1VRZ1BTQjBhR2x6TGw5eWIyOTBUbTlrWlVsRUlDc2dibUZ0WlR0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnYlc5MWJuUkpiV0ZuWlNBOUlGSmxZV04wVW1WamIyNWphV3hsY2k1dGIzVnVkRU52YlhCdmJtVnVkQ2hqYUdsc1pDd2djbTl2ZEVsRUxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyaHBiR1F1WDIxdmRXNTBTVzVrWlhnZ1BTQnBibVJsZUNzck8xeHVJQ0FnSUNBZ0lDQWdJRzF2ZFc1MFNXMWhaMlZ6TG5CMWMyZ29iVzkxYm5SSmJXRm5aU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJ0YjNWdWRFbHRZV2RsY3p0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1VtVndiR0ZqWlhNZ1lXNTVJSEpsYm1SbGNtVmtJR05vYVd4a2NtVnVJSGRwZEdnZ1lTQjBaWGgwSUdOdmJuUmxiblFnYzNSeWFXNW5MbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNWxlSFJEYjI1MFpXNTBJRk4wY21sdVp5QnZaaUJqYjI1MFpXNTBMbHh1SUNBZ0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0lDQXFMMXh1SUNBZ0lIVndaR0YwWlZSbGVIUkRiMjUwWlc1ME9pQm1kVzVqZEdsdmJpQW9ibVY0ZEVOdmJuUmxiblFwSUh0Y2JpQWdJQ0FnSUhWd1pHRjBaVVJsY0hSb0t5czdYRzRnSUNBZ0lDQjJZWElnWlhKeWIzSlVhSEp2ZDI0Z1BTQjBjblZsTzF4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhCeVpYWkRhR2xzWkhKbGJpQTlJSFJvYVhNdVgzSmxibVJsY21Wa1EyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNBZ0lDOHZJRkpsYlc5MlpTQmhibmtnY21WdVpHVnlaV1FnWTJocGJHUnlaVzR1WEc0Z0lDQWdJQ0FnSUZKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeUxuVnViVzkxYm5SRGFHbHNaSEpsYmlod2NtVjJRMmhwYkdSeVpXNHBPMXh1SUNBZ0lDQWdJQ0F2THlCVVQwUlBPaUJVYUdVZ2MyVjBWR1Y0ZEVOdmJuUmxiblFnYjNCbGNtRjBhVzl1SUhOb2IzVnNaQ0JpWlNCbGJtOTFaMmhjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYm1GdFpTQnBiaUJ3Y21WMlEyaHBiR1J5Wlc0cElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISmxka05vYVd4a2NtVnVMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxsOTFibTF2ZFc1MFEyaHBiR1FvY0hKbGRrTm9hV3hrY21WdVcyNWhiV1ZkS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnTHk4Z1UyVjBJRzVsZHlCMFpYaDBJR052Ym5SbGJuUXVYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBWR1Y0ZEVOdmJuUmxiblFvYm1WNGRFTnZiblJsYm5RcE8xeHVJQ0FnSUNBZ0lDQmxjbkp2Y2xSb2NtOTNiaUE5SUdaaGJITmxPMXh1SUNBZ0lDQWdmU0JtYVc1aGJHeDVJSHRjYmlBZ0lDQWdJQ0FnZFhCa1lYUmxSR1Z3ZEdndExUdGNiaUFnSUNBZ0lDQWdhV1lnS0NGMWNHUmhkR1ZFWlhCMGFDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGxjbkp2Y2xSb2NtOTNiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMnhsWVhKUmRXVjFaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205alpYTnpVWFZsZFdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1VtVndiR0ZqWlhNZ1lXNTVJSEpsYm1SbGNtVmtJR05vYVd4a2NtVnVJSGRwZEdnZ1lTQnRZWEpyZFhBZ2MzUnlhVzVuTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzVsZUhSTllYSnJkWEFnVTNSeWFXNW5JRzltSUcxaGNtdDFjQzVjYmlBZ0lDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDQWdLaTljYmlBZ0lDQjFjR1JoZEdWTllYSnJkWEE2SUdaMWJtTjBhVzl1SUNodVpYaDBUV0Z5YTNWd0tTQjdYRzRnSUNBZ0lDQjFjR1JoZEdWRVpYQjBhQ3NyTzF4dUlDQWdJQ0FnZG1GeUlHVnljbTl5VkdoeWIzZHVJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQndjbVYyUTJocGJHUnlaVzRnUFNCMGFHbHpMbDl5Wlc1a1pYSmxaRU5vYVd4a2NtVnVPMXh1SUNBZ0lDQWdJQ0F2THlCU1pXMXZkbVVnWVc1NUlISmxibVJsY21Wa0lHTm9hV3hrY21WdUxseHVJQ0FnSUNBZ0lDQlNaV0ZqZEVOb2FXeGtVbVZqYjI1amFXeGxjaTUxYm0xdmRXNTBRMmhwYkdSeVpXNG9jSEpsZGtOb2FXeGtjbVZ1S1R0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2JtRnRaU0JwYmlCd2NtVjJRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9jSEpsZGtOb2FXeGtjbVZ1TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbDkxYm0xdmRXNTBRMmhwYkdSQ2VVNWhiV1VvY0hKbGRrTm9hV3hrY21WdVcyNWhiV1ZkTENCdVlXMWxLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUk5ZWEpyZFhBb2JtVjRkRTFoY210MWNDazdYRzRnSUNBZ0lDQWdJR1Z5Y205eVZHaHliM2R1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJQ0FnSUNCMWNHUmhkR1ZFWlhCMGFDMHRPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYVndaR0YwWlVSbGNIUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1Z5Y205eVZHaHliM2R1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYkdWaGNsRjFaWFZsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhCeWIyTmxjM05SZFdWMVpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlZjR1JoZEdWeklIUm9aU0J5Wlc1a1pYSmxaQ0JqYUdsc1pISmxiaUIzYVhSb0lHNWxkeUJqYUdsc1pISmxiaTVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVY0ZEU1bGMzUmxaRU5vYVd4a2NtVnVSV3hsYldWdWRITWdUbVZ6ZEdWa0lHTm9hV3hrSUdWc1pXMWxiblFnYldGd2N5NWNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RYQmtZWFJsUTJocGJHUnlaVzQ2SUdaMWJtTjBhVzl1SUNodVpYaDBUbVZ6ZEdWa1EyaHBiR1J5Wlc1RmJHVnRaVzUwY3l3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSFZ3WkdGMFpVUmxjSFJvS3lzN1hHNGdJQ0FnSUNCMllYSWdaWEp5YjNKVWFISnZkMjRnUFNCMGNuVmxPMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmZFhCa1lYUmxRMmhwYkdSeVpXNG9ibVY0ZEU1bGMzUmxaRU5vYVd4a2NtVnVSV3hsYldWdWRITXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ1pYSnliM0pVYUhKdmQyNGdQU0JtWVd4elpUdGNiaUFnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJSFZ3WkdGMFpVUmxjSFJvTFMwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doZFhCa1lYUmxSR1Z3ZEdncElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0pVYUhKdmQyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnNaV0Z5VVhWbGRXVW9LVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2WTJWemMxRjFaWFZsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVsdGNISnZkbVVnY0dWeVptOXliV0Z1WTJVZ1lua2dhWE52YkdGMGFXNW5JSFJvYVhNZ2FHOTBJR052WkdVZ2NHRjBhQ0JtY205dElIUm9aU0IwY25rdlkyRjBZMmhjYmlBZ0lDQWdLaUJpYkc5amF5QnBiaUJnZFhCa1lYUmxRMmhwYkdSeVpXNWdMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQnVaWGgwVG1WemRHVmtRMmhwYkdSeVpXNUZiR1Z0Wlc1MGN5Qk9aWE4wWldRZ1kyaHBiR1FnWld4bGJXVnVkQ0J0WVhCekxseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FnSUNvdlhHNGdJQ0FnWDNWd1pHRjBaVU5vYVd4a2NtVnVPaUJtZFc1amRHbHZiaUFvYm1WNGRFNWxjM1JsWkVOb2FXeGtjbVZ1Uld4bGJXVnVkSE1zSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQjJZWElnY0hKbGRrTm9hV3hrY21WdUlEMGdkR2hwY3k1ZmNtVnVaR1Z5WldSRGFHbHNaSEpsYmp0Y2JpQWdJQ0FnSUhaaGNpQnVaWGgwUTJocGJHUnlaVzRnUFNCMGFHbHpMbDl5WldOdmJtTnBiR1Z5VlhCa1lYUmxRMmhwYkdSeVpXNG9jSEpsZGtOb2FXeGtjbVZ1TENCdVpYaDBUbVZ6ZEdWa1EyaHBiR1J5Wlc1RmJHVnRaVzUwY3l3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdkR2hwY3k1ZmNtVnVaR1Z5WldSRGFHbHNaSEpsYmlBOUlHNWxlSFJEYUdsc1pISmxianRjYmlBZ0lDQWdJR2xtSUNnaGJtVjRkRU5vYVd4a2NtVnVJQ1ltSUNGd2NtVjJRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUc1aGJXVTdYRzRnSUNBZ0lDQXZMeUJnYm1WNGRFbHVaR1Y0WUNCM2FXeHNJR2x1WTNKbGJXVnVkQ0JtYjNJZ1pXRmphQ0JqYUdsc1pDQnBiaUJnYm1WNGRFTm9hV3hrY21WdVlDd2dZblYwWEc0Z0lDQWdJQ0F2THlCZ2JHRnpkRWx1WkdWNFlDQjNhV3hzSUdKbElIUm9aU0JzWVhOMElHbHVaR1Y0SUhacGMybDBaV1FnYVc0Z1lIQnlaWFpEYUdsc1pISmxibUF1WEc0Z0lDQWdJQ0IyWVhJZ2JHRnpkRWx1WkdWNElEMGdNRHRjYmlBZ0lDQWdJSFpoY2lCdVpYaDBTVzVrWlhnZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNodVlXMWxJR2x1SUc1bGVIUkRhR2xzWkhKbGJpa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXNWxlSFJEYUdsc1pISmxiaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhaaGNpQndjbVYyUTJocGJHUWdQU0J3Y21WMlEyaHBiR1J5Wlc0Z0ppWWdjSEpsZGtOb2FXeGtjbVZ1VzI1aGJXVmRPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JtVjRkRU5vYVd4a0lEMGdibVY0ZEVOb2FXeGtjbVZ1VzI1aGJXVmRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NISmxka05vYVd4a0lEMDlQU0J1WlhoMFEyaHBiR1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG0xdmRtVkRhR2xzWkNod2NtVjJRMmhwYkdRc0lHNWxlSFJKYm1SbGVDd2diR0Z6ZEVsdVpHVjRLVHRjYmlBZ0lDQWdJQ0FnSUNCc1lYTjBTVzVrWlhnZ1BTQk5ZWFJvTG0xaGVDaHdjbVYyUTJocGJHUXVYMjF2ZFc1MFNXNWtaWGdzSUd4aGMzUkpibVJsZUNrN1hHNGdJQ0FnSUNBZ0lDQWdjSEpsZGtOb2FXeGtMbDl0YjNWdWRFbHVaR1Y0SUQwZ2JtVjRkRWx1WkdWNE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNod2NtVjJRMmhwYkdRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklGVndaR0YwWlNCZ2JHRnpkRWx1WkdWNFlDQmlaV1p2Y21VZ1lGOXRiM1Z1ZEVsdVpHVjRZQ0JuWlhSeklIVnVjMlYwSUdKNUlIVnViVzkxYm5ScGJtY3VYRzRnSUNBZ0lDQWdJQ0FnSUNCc1lYTjBTVzVrWlhnZ1BTQk5ZWFJvTG0xaGVDaHdjbVYyUTJocGJHUXVYMjF2ZFc1MFNXNWtaWGdzSUd4aGMzUkpibVJsZUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxsOTFibTF2ZFc1MFEyaHBiR1FvY0hKbGRrTm9hV3hrS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1ZHaGxJR05vYVd4a0lHMTFjM1FnWW1VZ2FXNXpkR0Z1ZEdsaGRHVmtJR0psWm05eVpTQnBkQ2R6SUcxdmRXNTBaV1F1WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVmYlc5MWJuUkRhR2xzWkVKNVRtRnRaVUYwU1c1a1pYZ29ibVY0ZEVOb2FXeGtMQ0J1WVcxbExDQnVaWGgwU1c1a1pYZ3NJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnVaWGgwU1c1a1pYZ3JLenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJQzh2SUZKbGJXOTJaU0JqYUdsc1pISmxiaUIwYUdGMElHRnlaU0J1YnlCc2IyNW5aWElnY0hKbGMyVnVkQzVjYmlBZ0lDQWdJR1p2Y2lBb2JtRnRaU0JwYmlCd2NtVjJRMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnlaWFpEYUdsc1pISmxiaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NBbUppQWhLRzVsZUhSRGFHbHNaSEpsYmlBbUppQnVaWGgwUTJocGJHUnlaVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkVzV0YjNWdWRFTm9hV3hrS0hCeVpYWkRhR2xzWkhKbGJsdHVZVzFsWFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dWVzV0YjNWdWRITWdZV3hzSUhKbGJtUmxjbVZrSUdOb2FXeGtjbVZ1TGlCVWFHbHpJSE5vYjNWc1pDQmlaU0IxYzJWa0lIUnZJR05zWldGdUlIVndJR05vYVd4a2NtVnVYRzRnSUNBZ0lDb2dkMmhsYmlCMGFHbHpJR052YlhCdmJtVnVkQ0JwY3lCMWJtMXZkVzUwWldRdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0IxYm0xdmRXNTBRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUhaaGNpQnlaVzVrWlhKbFpFTm9hV3hrY21WdUlEMGdkR2hwY3k1ZmNtVnVaR1Z5WldSRGFHbHNaSEpsYmp0Y2JpQWdJQ0FnSUZKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeUxuVnViVzkxYm5SRGFHbHNaSEpsYmloeVpXNWtaWEpsWkVOb2FXeGtjbVZ1S1R0Y2JpQWdJQ0FnSUhSb2FYTXVYM0psYm1SbGNtVmtRMmhwYkdSeVpXNGdQU0J1ZFd4c08xeHVJQ0FnSUgwc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQk5iM1psY3lCaElHTm9hV3hrSUdOdmJYQnZibVZ1ZENCMGJ5QjBhR1VnYzNWd2NHeHBaV1FnYVc1a1pYZ3VYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCamFHbHNaQ0JEYjIxd2IyNWxiblFnZEc4Z2JXOTJaUzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdkRzlKYm1SbGVDQkVaWE4wYVc1aGRHbHZiaUJwYm1SbGVDQnZaaUIwYUdVZ1pXeGxiV1Z1ZEM1Y2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYkdGemRFbHVaR1Y0SUV4aGMzUWdhVzVrWlhnZ2RtbHphWFJsWkNCdlppQjBhR1VnYzJsaWJHbHVaM01nYjJZZ1lHTm9hV3hrWUM1Y2JpQWdJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FnSUNvdlhHNGdJQ0FnYlc5MlpVTm9hV3hrT2lCbWRXNWpkR2x2YmlBb1kyaHBiR1FzSUhSdlNXNWtaWGdzSUd4aGMzUkpibVJsZUNrZ2UxeHVJQ0FnSUNBZ0x5OGdTV1lnZEdobElHbHVaR1Y0SUc5bUlHQmphR2xzWkdBZ2FYTWdiR1Z6Y3lCMGFHRnVJR0JzWVhOMFNXNWtaWGhnTENCMGFHVnVJR2wwSUc1bFpXUnpJSFJ2WEc0Z0lDQWdJQ0F2THlCaVpTQnRiM1psWkM0Z1QzUm9aWEozYVhObExDQjNaU0JrYnlCdWIzUWdibVZsWkNCMGJ5QnRiM1psSUdsMElHSmxZMkYxYzJVZ1lTQmphR2xzWkNCM2FXeHNJR0psWEc0Z0lDQWdJQ0F2THlCcGJuTmxjblJsWkNCdmNpQnRiM1psWkNCaVpXWnZjbVVnWUdOb2FXeGtZQzVjYmlBZ0lDQWdJR2xtSUNoamFHbHNaQzVmYlc5MWJuUkpibVJsZUNBOElHeGhjM1JKYm1SbGVDa2dlMXh1SUNBZ0lDQWdJQ0JsYm5GMVpYVmxUVzkyWlNoMGFHbHpMbDl5YjI5MFRtOWtaVWxFTENCamFHbHNaQzVmYlc5MWJuUkpibVJsZUN3Z2RHOUpibVJsZUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFTnlaV0YwWlhNZ1lTQmphR2xzWkNCamIyMXdiMjVsYm5RdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMjl0Y0c5dVpXNTBmU0JqYUdsc1pDQkRiMjF3YjI1bGJuUWdkRzhnWTNKbFlYUmxMbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnRiM1Z1ZEVsdFlXZGxJRTFoY210MWNDQjBieUJwYm5ObGNuUXVYRzRnSUNBZ0lDb2dRSEJ5YjNSbFkzUmxaRnh1SUNBZ0lDQXFMMXh1SUNBZ0lHTnlaV0YwWlVOb2FXeGtPaUJtZFc1amRHbHZiaUFvWTJocGJHUXNJRzF2ZFc1MFNXMWhaMlVwSUh0Y2JpQWdJQ0FnSUdWdWNYVmxkV1ZKYm5ObGNuUk5ZWEpyZFhBb2RHaHBjeTVmY205dmRFNXZaR1ZKUkN3Z2JXOTFiblJKYldGblpTd2dZMmhwYkdRdVgyMXZkVzUwU1c1a1pYZ3BPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJTWlcxdmRtVnpJR0VnWTJocGJHUWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyaHBiR1FnUTJocGJHUWdkRzhnY21WdGIzWmxMbHh1SUNBZ0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDQWdLaTljYmlBZ0lDQnlaVzF2ZG1WRGFHbHNaRG9nWm5WdVkzUnBiMjRnS0dOb2FXeGtLU0I3WEc0Z0lDQWdJQ0JsYm5GMVpYVmxVbVZ0YjNabEtIUm9hWE11WDNKdmIzUk9iMlJsU1VRc0lHTm9hV3hrTGw5dGIzVnVkRWx1WkdWNEtUdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dVMlYwY3lCMGFHbHpJSFJsZUhRZ1kyOXVkR1Z1ZENCemRISnBibWN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR1Y0ZEVOdmJuUmxiblFnVkdWNGRDQmpiMjUwWlc1MElIUnZJSE5sZEM1Y2JpQWdJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FnSUNvdlhHNGdJQ0FnYzJWMFZHVjRkRU52Ym5SbGJuUTZJR1oxYm1OMGFXOXVJQ2gwWlhoMFEyOXVkR1Z1ZENrZ2UxeHVJQ0FnSUNBZ1pXNXhkV1YxWlZSbGVIUkRiMjUwWlc1MEtIUm9hWE11WDNKdmIzUk9iMlJsU1VRc0lIUmxlSFJEYjI1MFpXNTBLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVTJWMGN5QjBhR2x6SUcxaGNtdDFjQ0J6ZEhKcGJtY3VYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXRnlhM1Z3SUUxaGNtdDFjQ0IwYnlCelpYUXVYRzRnSUNBZ0lDb2dRSEJ5YjNSbFkzUmxaRnh1SUNBZ0lDQXFMMXh1SUNBZ0lITmxkRTFoY210MWNEb2dablZ1WTNScGIyNGdLRzFoY210MWNDa2dlMXh1SUNBZ0lDQWdaVzV4ZFdWMVpWTmxkRTFoY210MWNDaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUxDQnRZWEpyZFhBcE8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQk5iM1Z1ZEhNZ1lTQmphR2xzWkNCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCdVlXMWxMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dUazlVUlRvZ1ZHaHBjeUJwY3lCd1lYSjBJRzltSUdCMWNHUmhkR1ZEYUdsc1pISmxibUFnWVc1a0lHbHpJR2hsY21VZ1ptOXlJSEpsWVdSaFltbHNhWFI1TGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMmhwYkdRZ1EyOXRjRzl1Wlc1MElIUnZJRzF2ZFc1MExseHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJRTVoYldVZ2IyWWdkR2hsSUdOb2FXeGtMbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnBibVJsZUNCSmJtUmxlQ0JoZENCM2FHbGphQ0IwYnlCcGJuTmxjblFnZEdobElHTm9hV3hrTGx4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdJQ0FxTDF4dUlDQWdJRjl0YjNWdWRFTm9hV3hrUW5sT1lXMWxRWFJKYm1SbGVEb2dablZ1WTNScGIyNGdLR05vYVd4a0xDQnVZVzFsTENCcGJtUmxlQ3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcElIdGNiaUFnSUNBZ0lDOHZJRWx1YkdsdVpXUWdabTl5SUhCbGNtWnZjbTFoYm1ObExDQnpaV1VnWUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtTnlaV0YwWlZKbFlXTjBTVVJnTGx4dUlDQWdJQ0FnZG1GeUlISnZiM1JKUkNBOUlIUm9hWE11WDNKdmIzUk9iMlJsU1VRZ0t5QnVZVzFsTzF4dUlDQWdJQ0FnZG1GeUlHMXZkVzUwU1cxaFoyVWdQU0JTWldGamRGSmxZMjl1WTJsc1pYSXViVzkxYm5SRGIyMXdiMjVsYm5Rb1kyaHBiR1FzSUhKdmIzUkpSQ3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ1kyaHBiR1F1WDIxdmRXNTBTVzVrWlhnZ1BTQnBibVJsZUR0Y2JpQWdJQ0FnSUhSb2FYTXVZM0psWVhSbFEyaHBiR1FvWTJocGJHUXNJRzF2ZFc1MFNXMWhaMlVwTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCVmJtMXZkVzUwY3lCaElISmxibVJsY21Wa0lHTm9hV3hrTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nVGs5VVJUb2dWR2hwY3lCcGN5QndZWEowSUc5bUlHQjFjR1JoZEdWRGFHbHNaSEpsYm1BZ1lXNWtJR2x6SUdobGNtVWdabTl5SUhKbFlXUmhZbWxzYVhSNUxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTJocGJHUWdRMjl0Y0c5dVpXNTBJSFJ2SUhWdWJXOTFiblF1WEc0Z0lDQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDQWdLaTljYmlBZ0lDQmZkVzV0YjNWdWRFTm9hV3hrT2lCbWRXNWpkR2x2YmlBb1kyaHBiR1FwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZ0YjNabFEyaHBiR1FvWTJocGJHUXBPMXh1SUNBZ0lDQWdZMmhwYkdRdVgyMXZkVzUwU1c1a1pYZ2dQU0J1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0I5WEc1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUk5kV3gwYVVOb2FXeGtPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGtleU1pcnJvciA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU1pcnJvcicpO1xuXG4vKipcbiAqIFdoZW4gYSBjb21wb25lbnQncyBjaGlsZHJlbiBhcmUgdXBkYXRlZCwgYSBzZXJpZXMgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdHMgYXJlIGNyZWF0ZWQgaW4gb3JkZXIgdG8gYmF0Y2ggYW5kIHNlcmlhbGl6ZSB0aGUgcmVxdWlyZWQgY2hhbmdlcy5cbiAqXG4gKiBFbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgdHlwZXMgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMgPSBrZXlNaXJyb3Ioe1xuICBJTlNFUlRfTUFSS1VQOiBudWxsLFxuICBNT1ZFX0VYSVNUSU5HOiBudWxsLFxuICBSRU1PVkVfTk9ERTogbnVsbCxcbiAgU0VUX01BUktVUDogbnVsbCxcbiAgVEVYVF9DT05URU5UOiBudWxsXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlczsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0TmF0aXZlQ29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBhdXRvR2VuZXJhdGVXcmFwcGVyQ2xhc3MgPSBudWxsO1xudmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG4vLyBUaGlzIHJlZ2lzdHJ5IGtlZXBzIHRyYWNrIG9mIHdyYXBwZXIgY2xhc3NlcyBhcm91bmQgbmF0aXZlIHRhZ3MuXG52YXIgdGFnVG9Db21wb25lbnRDbGFzcyA9IHt9O1xudmFyIHRleHRDb21wb25lbnRDbGFzcyA9IG51bGw7XG5cbnZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudEluamVjdGlvbiA9IHtcbiAgLy8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNoIGFsbFxuICAvLyB0aGF0IGNhbiByZW5kZXIgYW55IGtpbmQgb2YgdGFnLlxuICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9LFxuICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZVxuICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cbiAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcbiAgfSxcbiAgLy8gVGhpcyBhY2NlcHRzIGEga2V5ZWQgb2JqZWN0IHdpdGggY2xhc3NlcyBhcyB2YWx1ZXMuIEVhY2gga2V5IHJlcHJlc2VudHMgYVxuICAvLyB0YWcuIFRoYXQgcGFydGljdWxhciB0YWcgd2lsbCB1c2UgdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZS5cbiAgaW5qZWN0Q29tcG9uZW50Q2xhc3NlczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzZXMpIHtcbiAgICBhc3NpZ24odGFnVG9Db21wb25lbnRDbGFzcywgY29tcG9uZW50Q2xhc3Nlcyk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IGEgY29tcG9zaXRlIGNvbXBvbmVudCB3cmFwcGVyIGNsYXNzIGZvciBhIHNwZWNpZmljIHRhZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgdGFnIGZvciB3aGljaCB0byBnZXQgdGhlIGNsYXNzLlxuICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBSZWFjdCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50Q2xhc3NGb3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZWxlbWVudC50eXBlO1xuICB9XG4gIHZhciB0YWcgPSBlbGVtZW50LnR5cGU7XG4gIHZhciBjb21wb25lbnRDbGFzcyA9IHRhZ1RvQ29tcG9uZW50Q2xhc3NbdGFnXTtcbiAgaWYgKGNvbXBvbmVudENsYXNzID09IG51bGwpIHtcbiAgICB0YWdUb0NvbXBvbmVudENsYXNzW3RhZ10gPSBjb21wb25lbnRDbGFzcyA9IGF1dG9HZW5lcmF0ZVdyYXBwZXJDbGFzcyh0YWcpO1xuICB9XG4gIHJldHVybiBjb21wb25lbnRDbGFzcztcbn1cblxuLyoqXG4gKiBHZXQgYSBuYXRpdmUgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmljIHRhZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjcmVhdGUuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KSB7XG4gICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlcmUgaXMgbm8gcmVnaXN0ZXJlZCBjb21wb25lbnQgZm9yIHRoZSB0YWcgJXMnLCBlbGVtZW50LnR5cGUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG5ldyBnZW5lcmljQ29tcG9uZW50Q2xhc3MoZWxlbWVudC50eXBlLCBlbGVtZW50LnByb3BzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dFxuICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7XG4gIHJldHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkge1xuICByZXR1cm4gY29tcG9uZW50IGluc3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xufVxuXG52YXIgUmVhY3ROYXRpdmVDb21wb25lbnQgPSB7XG4gIGdldENvbXBvbmVudENsYXNzRm9yRWxlbWVudDogZ2V0Q29tcG9uZW50Q2xhc3NGb3JFbGVtZW50LFxuICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQsXG4gIGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LFxuICBpc1RleHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcbiAgaW5qZWN0aW9uOiBSZWFjdE5hdGl2ZUNvbXBvbmVudEluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5hdGl2ZUNvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEU1aGRHbDJaVU52YlhCdmJtVnVkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRRdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRTVoZEdsMlpVTnZiWEJ2Ym1WdWRGeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR0Z6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2VDJKcVpXTjBMbUZ6YzJsbmJpY3BPMXh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNTJZWElnWVhWMGIwZGxibVZ5WVhSbFYzSmhjSEJsY2tOc1lYTnpJRDBnYm5Wc2JEdGNiblpoY2lCblpXNWxjbWxqUTI5dGNHOXVaVzUwUTJ4aGMzTWdQU0J1ZFd4c08xeHVMeThnVkdocGN5QnlaV2RwYzNSeWVTQnJaV1Z3Y3lCMGNtRmpheUJ2WmlCM2NtRndjR1Z5SUdOc1lYTnpaWE1nWVhKdmRXNWtJRzVoZEdsMlpTQjBZV2R6TGx4dWRtRnlJSFJoWjFSdlEyOXRjRzl1Wlc1MFEyeGhjM01nUFNCN2ZUdGNiblpoY2lCMFpYaDBRMjl0Y0c5dVpXNTBRMnhoYzNNZ1BTQnVkV3hzTzF4dVhHNTJZWElnVW1WaFkzUk9ZWFJwZG1WRGIyMXdiMjVsYm5SSmJtcGxZM1JwYjI0Z1BTQjdYRzRnSUM4dklGUm9hWE1nWVdOalpYQjBjeUJoSUdOc1lYTnpJSFJvWVhRZ2NtVmpaV2wyWlhNZ2RHaGxJSFJoWnlCemRISnBibWN1SUZSb2FYTWdhWE1nWVNCallYUmphQ0JoYkd4Y2JpQWdMeThnZEdoaGRDQmpZVzRnY21WdVpHVnlJR0Z1ZVNCcmFXNWtJRzltSUhSaFp5NWNiaUFnYVc1cVpXTjBSMlZ1WlhKcFkwTnZiWEJ2Ym1WdWRFTnNZWE56T2lCbWRXNWpkR2x2YmlBb1kyOXRjRzl1Wlc1MFEyeGhjM01wSUh0Y2JpQWdJQ0JuWlc1bGNtbGpRMjl0Y0c5dVpXNTBRMnhoYzNNZ1BTQmpiMjF3YjI1bGJuUkRiR0Z6Y3p0Y2JpQWdmU3hjYmlBZ0x5OGdWR2hwY3lCaFkyTmxjSFJ6SUdFZ2RHVjRkQ0JqYjIxd2IyNWxiblFnWTJ4aGMzTWdkR2hoZENCMFlXdGxjeUIwYUdVZ2RHVjRkQ0J6ZEhKcGJtY2dkRzhnWW1WY2JpQWdMeThnY21WdVpHVnlaV1FnWVhNZ2NISnZjSE11WEc0Z0lHbHVhbVZqZEZSbGVIUkRiMjF3YjI1bGJuUkRiR0Z6Y3pvZ1puVnVZM1JwYjI0Z0tHTnZiWEJ2Ym1WdWRFTnNZWE56S1NCN1hHNGdJQ0FnZEdWNGRFTnZiWEJ2Ym1WdWRFTnNZWE56SUQwZ1kyOXRjRzl1Wlc1MFEyeGhjM003WEc0Z0lIMHNYRzRnSUM4dklGUm9hWE1nWVdOalpYQjBjeUJoSUd0bGVXVmtJRzlpYW1WamRDQjNhWFJvSUdOc1lYTnpaWE1nWVhNZ2RtRnNkV1Z6TGlCRllXTm9JR3RsZVNCeVpYQnlaWE5sYm5SeklHRmNiaUFnTHk4Z2RHRm5MaUJVYUdGMElIQmhjblJwWTNWc1lYSWdkR0ZuSUhkcGJHd2dkWE5sSUhSb2FYTWdZMnhoYzNNZ2FXNXpkR1ZoWkNCdlppQjBhR1VnWjJWdVpYSnBZeUJ2Ym1VdVhHNGdJR2x1YW1WamRFTnZiWEJ2Ym1WdWRFTnNZWE56WlhNNklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUkRiR0Z6YzJWektTQjdYRzRnSUNBZ1lYTnphV2R1S0hSaFoxUnZRMjl0Y0c5dVpXNTBRMnhoYzNNc0lHTnZiWEJ2Ym1WdWRFTnNZWE56WlhNcE8xeHVJQ0I5WEc1OU8xeHVYRzR2S2lwY2JpQXFJRWRsZENCaElHTnZiWEJ2YzJsMFpTQmpiMjF3YjI1bGJuUWdkM0poY0hCbGNpQmpiR0Z6Y3lCbWIzSWdZU0J6Y0dWamFXWnBZeUIwWVdjdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJR1ZzWlcxbGJuUWdWR2hsSUhSaFp5Qm1iM0lnZDJocFkyZ2dkRzhnWjJWMElIUm9aU0JqYkdGemN5NWNiaUFxSUVCeVpYUjFjbTRnZTJaMWJtTjBhVzl1ZlNCVWFHVWdVbVZoWTNRZ1kyeGhjM01nWTI5dWMzUnlkV04wYjNJZ1puVnVZM1JwYjI0dVhHNGdLaTljYm1aMWJtTjBhVzl1SUdkbGRFTnZiWEJ2Ym1WdWRFTnNZWE56Um05eVJXeGxiV1Z1ZENobGJHVnRaVzUwS1NCN1hHNGdJR2xtSUNoMGVYQmxiMllnWld4bGJXVnVkQzUwZVhCbElEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1ZzWlcxbGJuUXVkSGx3WlR0Y2JpQWdmVnh1SUNCMllYSWdkR0ZuSUQwZ1pXeGxiV1Z1ZEM1MGVYQmxPMXh1SUNCMllYSWdZMjl0Y0c5dVpXNTBRMnhoYzNNZ1BTQjBZV2RVYjBOdmJYQnZibVZ1ZEVOc1lYTnpXM1JoWjEwN1hHNGdJR2xtSUNoamIyMXdiMjVsYm5SRGJHRnpjeUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdkR0ZuVkc5RGIyMXdiMjVsYm5SRGJHRnpjMXQwWVdkZElEMGdZMjl0Y0c5dVpXNTBRMnhoYzNNZ1BTQmhkWFJ2UjJWdVpYSmhkR1ZYY21Gd2NHVnlRMnhoYzNNb2RHRm5LVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdZMjl0Y0c5dVpXNTBRMnhoYzNNN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWMElHRWdibUYwYVhabElHbHVkR1Z5Ym1Gc0lHTnZiWEJ2Ym1WdWRDQmpiR0Z6Y3lCbWIzSWdZU0J6Y0dWamFXWnBZeUIwWVdjdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJR1ZzWlcxbGJuUWdWR2hsSUdWc1pXMWxiblFnZEc4Z1kzSmxZWFJsTGx4dUlDb2dRSEpsZEhWeWJpQjdablZ1WTNScGIyNTlJRlJvWlNCcGJuUmxjbTVoYkNCamJHRnpjeUJqYjI1emRISjFZM1J2Y2lCbWRXNWpkR2x2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxTVzUwWlhKdVlXeERiMjF3YjI1bGJuUW9aV3hsYldWdWRDa2dlMXh1SUNBaFoyVnVaWEpwWTBOdmJYQnZibVZ1ZEVOc1lYTnpJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxUm9aWEpsSUdseklHNXZJSEpsWjJsemRHVnlaV1FnWTI5dGNHOXVaVzUwSUdadmNpQjBhR1VnZEdGbklDVnpKeXdnWld4bGJXVnVkQzUwZVhCbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lISmxkSFZ5YmlCdVpYY2daMlZ1WlhKcFkwTnZiWEJ2Ym1WdWRFTnNZWE56S0dWc1pXMWxiblF1ZEhsd1pTd2daV3hsYldWdWRDNXdjbTl3Y3lrN1hHNTlYRzVjYmk4cUtseHVJQ29nUUhCaGNtRnRJSHRTWldGamRGUmxlSFI5SUhSbGVIUmNiaUFxSUVCeVpYUjFjbTRnZTFKbFlXTjBRMjl0Y0c5dVpXNTBmVnh1SUNvdlhHNW1kVzVqZEdsdmJpQmpjbVZoZEdWSmJuTjBZVzVqWlVadmNsUmxlSFFvZEdWNGRDa2dlMXh1SUNCeVpYUjFjbTRnYm1WM0lIUmxlSFJEYjIxd2IyNWxiblJEYkdGemN5aDBaWGgwS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyOXRjRzl1Wlc1MGZTQmpiMjF3YjI1bGJuUmNiaUFxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x6VkdWNGRFTnZiWEJ2Ym1WdWRDaGpiMjF3YjI1bGJuUXBJSHRjYmlBZ2NtVjBkWEp1SUdOdmJYQnZibVZ1ZENCcGJuTjBZVzVqWlc5bUlIUmxlSFJEYjIxd2IyNWxiblJEYkdGemN6dGNibjFjYmx4dWRtRnlJRkpsWVdOMFRtRjBhWFpsUTI5dGNHOXVaVzUwSUQwZ2UxeHVJQ0JuWlhSRGIyMXdiMjVsYm5SRGJHRnpjMFp2Y2tWc1pXMWxiblE2SUdkbGRFTnZiWEJ2Ym1WdWRFTnNZWE56Um05eVJXeGxiV1Z1ZEN4Y2JpQWdZM0psWVhSbFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5RNklHTnlaV0YwWlVsdWRHVnlibUZzUTI5dGNHOXVaVzUwTEZ4dUlDQmpjbVZoZEdWSmJuTjBZVzVqWlVadmNsUmxlSFE2SUdOeVpXRjBaVWx1YzNSaGJtTmxSbTl5VkdWNGRDeGNiaUFnYVhOVVpYaDBRMjl0Y0c5dVpXNTBPaUJwYzFSbGVIUkRiMjF3YjI1bGJuUXNYRzRnSUdsdWFtVmpkR2x2YmpvZ1VtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUkpibXBsWTNScGIyNWNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3ROb29wVXBkYXRlUXVldWVcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3IgJiYgcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJycpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXG4gKi9cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaykge30sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAgIHdhcm5URFoocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFByb3BzIFN1YnNldCBvZiB0aGUgbmV4dCBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0UHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFByb3BzKSB7XG4gICAgd2FyblREWihwdWJsaWNJbnN0YW5jZSwgJ3NldFByb3BzJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgTmV3IHByb3BzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlUHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcHJvcHMpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVByb3BzJyk7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEU1dmIzQlZjR1JoZEdWUmRXVjFaUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdWY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1bWRXNWpkR2x2YmlCM1lYSnVWRVJhS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0JqWVd4c1pYSk9ZVzFsS1NCN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDY2xjeWd1TGk0cE9pQkRZVzRnYjI1c2VTQjFjR1JoZEdVZ1lTQnRiM1Z1ZEdWa0lHOXlJRzF2ZFc1MGFXNW5JR052YlhCdmJtVnVkQzRnSnlBcklDZFVhR2x6SUhWemRXRnNiSGtnYldWaGJuTWdlVzkxSUdOaGJHeGxaQ0FsY3lncElHOXVJR0Z1SUhWdWJXOTFiblJsWkNCamIyMXdiMjVsYm5RdUlDY2dLeUFuVkdocGN5QnBjeUJoSUc1dkxXOXdMaUJRYkdWaGMyVWdZMmhsWTJzZ2RHaGxJR052WkdVZ1ptOXlJSFJvWlNBbGN5QmpiMjF3YjI1bGJuUXVKeXdnWTJGc2JHVnlUbUZ0WlN3Z1kyRnNiR1Z5VG1GdFpTd2djSFZpYkdsalNXNXpkR0Z1WTJVdVkyOXVjM1J5ZFdOMGIzSWdKaVlnY0hWaWJHbGpTVzV6ZEdGdVkyVXVZMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVZ2ZId2dKeWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dWR2hwY3lCcGN5QjBhR1VnWVdKemRISmhZM1FnUVZCSklHWnZjaUJoYmlCMWNHUmhkR1VnY1hWbGRXVXVYRzRnS2k5Y2JuWmhjaUJTWldGamRFNXZiM0JWY0dSaGRHVlJkV1YxWlNBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EyaGxZMnR6SUhkb1pYUm9aWElnYjNJZ2JtOTBJSFJvYVhNZ1kyOXRjRzl6YVhSbElHTnZiWEJ2Ym1WdWRDQnBjeUJ0YjNWdWRHVmtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IzWlNCM1lXNTBJSFJ2SUhSbGMzUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ2JXOTFiblJsWkN3Z1ptRnNjMlVnYjNSb1pYSjNhWE5sTGx4dUlDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQXFJRUJtYVc1aGJGeHVJQ0FnS2k5Y2JpQWdhWE5OYjNWdWRHVmtPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnVjWFZsZFdVZ1lTQmpZV3hzWW1GamF5QjBhR0YwSUhkcGJHd2dZbVVnWlhobFkzVjBaV1FnWVdaMFpYSWdZV3hzSUhSb1pTQndaVzVrYVc1bklIVndaR0YwWlhOY2JpQWdJQ29nYUdGMlpTQndjbTlqWlhOelpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUnZJSFZ6WlNCaGN5QmdkR2hwYzJBZ1kyOXVkR1Y0ZEM1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVOaGJHeGxaQ0JoWm5SbGNpQnpkR0YwWlNCcGN5QjFjR1JoZEdWa0xseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWRFlXeHNZbUZqYXpvZ1puVnVZM1JwYjI0Z0tIQjFZbXhwWTBsdWMzUmhibU5sTENCallXeHNZbUZqYXlrZ2UzMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFWnZjbU5sY3lCaGJpQjFjR1JoZEdVdUlGUm9hWE1nYzJodmRXeGtJRzl1YkhrZ1ltVWdhVzUyYjJ0bFpDQjNhR1Z1SUdsMElHbHpJR3R1YjNkdUlIZHBkR2hjYmlBZ0lDb2dZMlZ5ZEdGcGJuUjVJSFJvWVhRZ2QyVWdZWEpsSUNvcWJtOTBLaW9nYVc0Z1lTQkVUMDBnZEhKaGJuTmhZM1JwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRmx2ZFNCdFlYa2dkMkZ1ZENCMGJ5QmpZV3hzSUhSb2FYTWdkMmhsYmlCNWIzVWdhMjV2ZHlCMGFHRjBJSE52YldVZ1pHVmxjR1Z5SUdGemNHVmpkQ0J2WmlCMGFHVmNiaUFnSUNvZ1kyOXRjRzl1Wlc1MEozTWdjM1JoZEdVZ2FHRnpJR05vWVc1blpXUWdZblYwSUdCelpYUlRkR0YwWldBZ2QyRnpJRzV2ZENCallXeHNaV1F1WEc0Z0lDQXFYRzRnSUNBcUlGUm9hWE1nZDJsc2JDQnViM1FnYVc1MmIydGxJR0J6YUc5MWJHUkRiMjF3YjI1bGJuUlZjR1JoZEdWZ0xDQmlkWFFnYVhRZ2QybHNiQ0JwYm5admEyVmNiaUFnSUNvZ1lHTnZiWEJ2Ym1WdWRGZHBiR3hWY0dSaGRHVmdJR0Z1WkNCZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbFlDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnNZWE56ZlNCd2RXSnNhV05KYm5OMFlXNWpaU0JVYUdVZ2FXNXpkR0Z1WTJVZ2RHaGhkQ0J6YUc5MWJHUWdjbVZ5Wlc1a1pYSXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdaVzV4ZFdWMVpVWnZjbU5sVlhCa1lYUmxPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQjNZWEp1VkVSYUtIQjFZbXhwWTBsdWMzUmhibU5sTENBblptOXlZMlZWY0dSaGRHVW5LVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVndiR0ZqWlhNZ1lXeHNJRzltSUhSb1pTQnpkR0YwWlM0Z1FXeDNZWGx6SUhWelpTQjBhR2x6SUc5eUlHQnpaWFJUZEdGMFpXQWdkRzhnYlhWMFlYUmxJSE4wWVhSbExseHVJQ0FnS2lCWmIzVWdjMmh2ZFd4a0lIUnlaV0YwSUdCMGFHbHpMbk4wWVhSbFlDQmhjeUJwYlcxMWRHRmliR1V1WEc0Z0lDQXFYRzRnSUNBcUlGUm9aWEpsSUdseklHNXZJR2QxWVhKaGJuUmxaU0IwYUdGMElHQjBhR2x6TG5OMFlYUmxZQ0IzYVd4c0lHSmxJR2x0YldWa2FXRjBaV3g1SUhWd1pHRjBaV1FzSUhOdlhHNGdJQ0FxSUdGalkyVnpjMmx1WnlCZ2RHaHBjeTV6ZEdGMFpXQWdZV1owWlhJZ1kyRnNiR2x1WnlCMGFHbHpJRzFsZEdodlpDQnRZWGtnY21WMGRYSnVJSFJvWlNCdmJHUWdkbUZzZFdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSb1lYUWdjMmh2ZFd4a0lISmxjbVZ1WkdWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dGNHeGxkR1ZUZEdGMFpTQk9aWGgwSUhOMFlYUmxMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Z1Y1hWbGRXVlNaWEJzWVdObFUzUmhkR1U2SUdaMWJtTjBhVzl1SUNod2RXSnNhV05KYm5OMFlXNWpaU3dnWTI5dGNHeGxkR1ZUZEdGMFpTa2dlMXh1SUNBZ0lIZGhjbTVVUkZvb2NIVmliR2xqU1c1emRHRnVZMlVzSUNkeVpYQnNZV05sVTNSaGRHVW5LVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyVjBjeUJoSUhOMVluTmxkQ0J2WmlCMGFHVWdjM1JoZEdVdUlGUm9hWE1nYjI1c2VTQmxlR2x6ZEhNZ1ltVmpZWFZ6WlNCZmNHVnVaR2x1WjFOMFlYUmxJR2x6WEc0Z0lDQXFJR2x1ZEdWeWJtRnNMaUJVYUdseklIQnliM1pwWkdWeklHRWdiV1Z5WjJsdVp5QnpkSEpoZEdWbmVTQjBhR0YwSUdseklHNXZkQ0JoZG1GcGJHRmliR1VnZEc4Z1pHVmxjRnh1SUNBZ0tpQndjbTl3WlhKMGFXVnpJSGRvYVdOb0lHbHpJR052Ym1aMWMybHVaeTRnVkU5RVR6b2dSWGh3YjNObElIQmxibVJwYm1kVGRHRjBaU0J2Y2lCa2IyNG5kQ0IxYzJVZ2FYUmNiaUFnSUNvZ1pIVnlhVzVuSUhSb1pTQnRaWEpuWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOc1lYTnpmU0J3ZFdKc2FXTkpibk4wWVc1alpTQlVhR1VnYVc1emRHRnVZMlVnZEdoaGRDQnphRzkxYkdRZ2NtVnlaVzVrWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J3WVhKMGFXRnNVM1JoZEdVZ1RtVjRkQ0J3WVhKMGFXRnNJSE4wWVhSbElIUnZJR0psSUcxbGNtZGxaQ0IzYVhSb0lITjBZWFJsTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZUWlhSVGRHRjBaVG9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0J3WVhKMGFXRnNVM1JoZEdVcElIdGNiaUFnSUNCM1lYSnVWRVJhS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0FuYzJWMFUzUmhkR1VuS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMlYwY3lCaElITjFZbk5sZENCdlppQjBhR1VnY0hKdmNITXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NHRnlkR2xoYkZCeWIzQnpJRk4xWW5ObGRDQnZaaUIwYUdVZ2JtVjRkQ0J3Y205d2N5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFUyVjBVSEp2Y0hNNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z2NHRnlkR2xoYkZCeWIzQnpLU0I3WEc0Z0lDQWdkMkZ5YmxSRVdpaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0ozTmxkRkJ5YjNCekp5azdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGNHeGhZMlZ6SUdGc2JDQnZaaUIwYUdVZ2NISnZjSE11WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJvWVhRZ2MyaHZkV3hrSUhKbGNtVnVaR1Z5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjSEp2Y0hNZ1RtVjNJSEJ5YjNCekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWU1pYQnNZV05sVUhKdmNITTZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2djSEp2Y0hNcElIdGNiaUFnSUNCM1lYSnVWRVJhS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0FuY21Wd2JHRmpaVkJ5YjNCekp5azdYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRTV2YjNCVmNHUmhkR1ZSZFdWMVpUc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdE93bmVyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogUmVhY3RPd25lcnMgYXJlIGNhcGFibGUgb2Ygc3RvcmluZyByZWZlcmVuY2VzIHRvIG93bmVkIGNvbXBvbmVudHMuXG4gKlxuICogQWxsIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9iZWluZy8vIHJlZmVyZW5jZWQgYnkgb3duZXIgY29tcG9uZW50cywgYnV0XG4gKiBvbmx5IFJlYWN0T3duZXIgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL3JlZmVyZW5jaW5nLy8gb3duZWQgY29tcG9uZW50cy5cbiAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25vd24gYXMgYSBcInJlZlwiLlxuICpcbiAqIFJlZnMgYXJlIGF2YWlsYWJsZSB3aGVuIG1vdW50ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHJlY29uY2lsaWF0aW9uLlxuICpcbiAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gKiAgICAgICByZXR1cm4gKFxuICogICAgICAgICA8ZGl2IG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9PlxuICogICAgICAgICAgIDxDdXN0b21Db21wb25lbnQgcmVmPVwiY3VzdG9tXCIgLz5cbiAqICAgICAgICAgPC9kaXY+XG4gKiAgICAgICApO1xuICogICAgIH0sXG4gKiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkge1xuICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5oYW5kbGVDbGljaygpO1xuICogICAgIH0sXG4gKiAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0aWFsaXplKCk7XG4gKiAgICAgfVxuICogICB9KTtcbiAqXG4gKiBSZWZzIHNob3VsZCByYXJlbHkgYmUgdXNlZC4gV2hlbiByZWZzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUgdG9cbiAqIGNvbnRyb2wgZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93LlxuICpcbiAqIEBjbGFzcyBSZWFjdE93bmVyXG4gKi9cbnZhciBSZWFjdE93bmVyID0ge1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgb3duZXIuXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNWYWxpZE93bmVyOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgcmV0dXJuICEhKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LmF0dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqZWN0LmRldGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgYnkgcmVmIHRvIGFuIG93bmVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBieSB3aGljaCB0byByZWZlciB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGljaCB0byByZWNvcmQgdGhlIHJlZi5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYWRkQ29tcG9uZW50QXNSZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuICAgICFSZWFjdE93bmVyLmlzVmFsaWRPd25lcihvd25lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWRkQ29tcG9uZW50QXNSZWZUbyguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgJyArICdiZSBhZGRpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAnICsgJyhkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYgZnJvbSBhbiBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIVJlYWN0T3duZXIuaXNWYWxpZE93bmVyKG93bmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0ICcgKyAnYmUgcmVtb3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyAnICsgJ2ByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAnICsgJyhkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgLy8gQ2hlY2sgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVudCByZWYgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0b1xuICAgIC8vIGRldGFjaCB0aGUgcmVmIGlmIGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LlxuICAgIGlmIChvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpIHtcbiAgICAgIG93bmVyLmRldGFjaFJlZihyZWYpO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRFOTNibVZ5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFQzZHVaWEpjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dUx5b3FYRzRnS2lCU1pXRmpkRTkzYm1WeWN5QmhjbVVnWTJGd1lXSnNaU0J2WmlCemRHOXlhVzVuSUhKbFptVnlaVzVqWlhNZ2RHOGdiM2R1WldRZ1kyOXRjRzl1Wlc1MGN5NWNiaUFxWEc0Z0tpQkJiR3dnWTI5dGNHOXVaVzUwY3lCaGNtVWdZMkZ3WVdKc1pTQnZaaUF2TDJKbGFXNW5MeThnY21WbVpYSmxibU5sWkNCaWVTQnZkMjVsY2lCamIyMXdiMjVsYm5SekxDQmlkWFJjYmlBcUlHOXViSGtnVW1WaFkzUlBkMjVsY2lCamIyMXdiMjVsYm5SeklHRnlaU0JqWVhCaFlteGxJRzltSUM4dmNtVm1aWEpsYm1OcGJtY3ZMeUJ2ZDI1bFpDQmpiMjF3YjI1bGJuUnpMbHh1SUNvZ1ZHaGxJRzVoYldWa0lISmxabVZ5Wlc1alpTQnBjeUJyYm05M2JpQmhjeUJoSUZ3aWNtVm1YQ0l1WEc0Z0tseHVJQ29nVW1WbWN5QmhjbVVnWVhaaGFXeGhZbXhsSUhkb1pXNGdiVzkxYm5SbFpDQmhibVFnZFhCa1lYUmxaQ0JrZFhKcGJtY2djbVZqYjI1amFXeHBZWFJwYjI0dVhHNGdLbHh1SUNvZ0lDQjJZWElnVFhsRGIyMXdiMjVsYm5RZ1BTQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemN5aDdYRzRnS2lBZ0lDQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBcUlDQWdJQ0FnSUhKbGRIVnliaUFvWEc0Z0tpQWdJQ0FnSUNBZ0lEeGthWFlnYjI1RGJHbGphejE3ZEdocGN5NW9ZVzVrYkdWRGJHbGphMzArWEc0Z0tpQWdJQ0FnSUNBZ0lDQWdQRU4xYzNSdmJVTnZiWEJ2Ym1WdWRDQnlaV1k5WENKamRYTjBiMjFjSWlBdlBseHVJQ29nSUNBZ0lDQWdJQ0E4TDJScGRqNWNiaUFxSUNBZ0lDQWdJQ2s3WEc0Z0tpQWdJQ0FnZlN4Y2JpQXFJQ0FnSUNCb1lXNWtiR1ZEYkdsamF6b2dablZ1WTNScGIyNG9LU0I3WEc0Z0tpQWdJQ0FnSUNCMGFHbHpMbkpsWm5NdVkzVnpkRzl0TG1oaGJtUnNaVU5zYVdOcktDazdYRzRnS2lBZ0lDQWdmU3hjYmlBcUlDQWdJQ0JqYjIxd2IyNWxiblJFYVdSTmIzVnVkRG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdLaUFnSUNBZ0lDQjBhR2x6TG5KbFpuTXVZM1Z6ZEc5dExtbHVhWFJwWVd4cGVtVW9LVHRjYmlBcUlDQWdJQ0I5WEc0Z0tpQWdJSDBwTzF4dUlDcGNiaUFxSUZKbFpuTWdjMmh2ZFd4a0lISmhjbVZzZVNCaVpTQjFjMlZrTGlCWGFHVnVJSEpsWm5NZ1lYSmxJSFZ6WldRc0lIUm9aWGtnYzJodmRXeGtJRzl1YkhrZ1ltVWdaRzl1WlNCMGIxeHVJQ29nWTI5dWRISnZiQ0JrWVhSaElIUm9ZWFFnYVhNZ2JtOTBJR2hoYm1Sc1pXUWdZbmtnVW1WaFkzUW5jeUJrWVhSaElHWnNiM2N1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRkpsWVdOMFQzZHVaWEpjYmlBcUwxeHVkbUZ5SUZKbFlXTjBUM2R1WlhJZ1BTQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2IySnFaV04wWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWWdZRzlpYW1WamRHQWdhWE1nWVNCMllXeHBaQ0J2ZDI1bGNpNWNiaUFnSUNvZ1FHWnBibUZzWEc0Z0lDQXFMMXh1SUNCcGMxWmhiR2xrVDNkdVpYSTZJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXBJSHRjYmlBZ0lDQnlaWFIxY200Z0lTRW9iMkpxWldOMElDWW1JSFI1Y0dWdlppQnZZbXBsWTNRdVlYUjBZV05vVW1WbUlEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlIUjVjR1Z2WmlCdlltcGxZM1F1WkdWMFlXTm9VbVZtSUQwOVBTQW5ablZ1WTNScGIyNG5LVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FXUmtjeUJoSUdOdmJYQnZibVZ1ZENCaWVTQnlaV1lnZEc4Z1lXNGdiM2R1WlhJZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyOXRjRzl1Wlc1MGZTQmpiMjF3YjI1bGJuUWdRMjl0Y0c5dVpXNTBJSFJ2SUhKbFptVnlaVzVqWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEpsWmlCT1lXMWxJR0o1SUhkb2FXTm9JSFJ2SUhKbFptVnlJSFJ2SUhSb1pTQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JQZDI1bGNuMGdiM2R1WlhJZ1EyOXRjRzl1Wlc1MElHOXVJSGRvYVdOb0lIUnZJSEpsWTI5eVpDQjBhR1VnY21WbUxseHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JoWkdSRGIyMXdiMjVsYm5SQmMxSmxabFJ2T2lCbWRXNWpkR2x2YmlBb1kyOXRjRzl1Wlc1MExDQnlaV1lzSUc5M2JtVnlLU0I3WEc0Z0lDQWdJVkpsWVdOMFQzZHVaWEl1YVhOV1lXeHBaRTkzYm1WeUtHOTNibVZ5S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RoWkdSRGIyMXdiMjVsYm5SQmMxSmxabFJ2S0M0dUxpazZJRTl1YkhrZ1lTQlNaV0ZqZEU5M2JtVnlJR05oYmlCb1lYWmxJSEpsWm5NdUlGbHZkU0J0YVdkb2RDQW5JQ3NnSjJKbElHRmtaR2x1WnlCaElISmxaaUIwYnlCaElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUhkaGN5QnViM1FnWTNKbFlYUmxaQ0JwYm5OcFpHVWdZU0JqYjIxd2IyNWxiblJjWENkeklDY2dLeUFuWUhKbGJtUmxjbUFnYldWMGFHOWtMQ0J2Y2lCNWIzVWdhR0YyWlNCdGRXeDBhWEJzWlNCamIzQnBaWE1nYjJZZ1VtVmhZM1FnYkc5aFpHVmtJQ2NnS3lBbktHUmxkR0ZwYkhNNklHaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRjbVZtY3kxdGRYTjBMV2hoZG1VdGIzZHVaWElwTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQnZkMjVsY2k1aGRIUmhZMmhTWldZb2NtVm1MQ0JqYjIxd2IyNWxiblFwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaVzF2ZG1WeklHRWdZMjl0Y0c5dVpXNTBJR0o1SUhKbFppQm1jbTl0SUdGdUlHOTNibVZ5SUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyOXRjRzl1Wlc1MElFTnZiWEJ2Ym1WdWRDQjBieUJrWlhKbFptVnlaVzVqWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEpsWmlCT1lXMWxJRzltSUhSb1pTQnlaV1lnZEc4Z2NtVnRiM1psTGx4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFQzZHVaWEo5SUc5M2JtVnlJRU52YlhCdmJtVnVkQ0J2YmlCM2FHbGphQ0IwYUdVZ2NtVm1JR2x6SUhKbFkyOXlaR1ZrTGx4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQnlaVzF2ZG1WRGIyMXdiMjVsYm5SQmMxSmxaa1p5YjIwNklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUXNJSEpsWml3Z2IzZHVaWElwSUh0Y2JpQWdJQ0FoVW1WaFkzUlBkMjVsY2k1cGMxWmhiR2xrVDNkdVpYSW9iM2R1WlhJcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNKbGJXOTJaVU52YlhCdmJtVnVkRUZ6VW1WbVJuSnZiU2d1TGk0cE9pQlBibXg1SUdFZ1VtVmhZM1JQZDI1bGNpQmpZVzRnYUdGMlpTQnlaV1p6TGlCWmIzVWdiV2xuYUhRZ0p5QXJJQ2RpWlNCeVpXMXZkbWx1WnlCaElISmxaaUIwYnlCaElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUhkaGN5QnViM1FnWTNKbFlYUmxaQ0JwYm5OcFpHVWdZU0JqYjIxd2IyNWxiblJjWENkeklDY2dLeUFuWUhKbGJtUmxjbUFnYldWMGFHOWtMQ0J2Y2lCNWIzVWdhR0YyWlNCdGRXeDBhWEJzWlNCamIzQnBaWE1nYjJZZ1VtVmhZM1FnYkc5aFpHVmtJQ2NnS3lBbktHUmxkR0ZwYkhNNklHaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRjbVZtY3kxdGRYTjBMV2hoZG1VdGIzZHVaWElwTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQXZMeUJEYUdWamF5QjBhR0YwSUdCamIyMXdiMjVsYm5SZ0lHbHpJSE4wYVd4c0lIUm9aU0JqZFhKeVpXNTBJSEpsWmlCaVpXTmhkWE5sSUhkbElHUnZJRzV2ZENCM1lXNTBJSFJ2WEc0Z0lDQWdMeThnWkdWMFlXTm9JSFJvWlNCeVpXWWdhV1lnWVc1dmRHaGxjaUJqYjIxd2IyNWxiblFnYzNSdmJHVWdhWFF1WEc0Z0lDQWdhV1lnS0c5M2JtVnlMbWRsZEZCMVlteHBZMGx1YzNSaGJtTmxLQ2t1Y21WbWMxdHlaV1pkSUQwOVBTQmpiMjF3YjI1bGJuUXVaMlYwVUhWaWJHbGpTVzV6ZEdGdVkyVW9LU2tnZTF4dUlDQWdJQ0FnYjNkdVpYSXVaR1YwWVdOb1VtVm1LSEpsWmlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSUGQyNWxjanNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RQZXJmXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBSZWFjdFBlcmYgaXMgYSBnZW5lcmFsIEFPUCBzeXN0ZW0gZGVzaWduZWQgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZS4gVGhpc1xuICogbW9kdWxlIG9ubHkgaGFzIHRoZSBob29rczogc2VlIFJlYWN0RGVmYXVsdFBlcmYgZm9yIHRoZSBhbmFseXNpcyB0b29sLlxuICovXG52YXIgUmVhY3RQZXJmID0ge1xuICAvKipcbiAgICogQm9vbGVhbiB0byBlbmFibGUvZGlzYWJsZSBtZWFzdXJlbWVudC4gU2V0IHRvIGZhbHNlIGJ5IGRlZmF1bHQgdG8gcHJldmVudFxuICAgKiBhY2NpZGVudGFsIGxvZ2dpbmcgYW5kIHBlcmYgbG9zcy5cbiAgICovXG4gIGVuYWJsZU1lYXN1cmU6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBIb2xkcyBvbnRvIHRoZSBtZWFzdXJlIGZ1bmN0aW9uIGluIHVzZS4gQnkgZGVmYXVsdCwgZG9uJ3QgbWVhc3VyZVxuICAgKiBhbnl0aGluZywgYnV0IHdlJ2xsIG92ZXJyaWRlIHRoaXMgaWYgd2UgaW5qZWN0IGEgbWVhc3VyZSBmdW5jdGlvbi5cbiAgICovXG4gIHN0b3JlZE1lYXN1cmU6IF9ub01lYXN1cmUsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdE5hbWVcbiAgICogQHBhcmFtIHtvYmplY3Q8c3RyaW5nPn0gbWV0aG9kTmFtZXNcbiAgICovXG4gIG1lYXN1cmVNZXRob2RzOiBmdW5jdGlvbiAob2JqZWN0LCBvYmplY3ROYW1lLCBtZXRob2ROYW1lcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kTmFtZXMpIHtcbiAgICAgICAgaWYgKCFtZXRob2ROYW1lcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0W2tleV0gPSBSZWFjdFBlcmYubWVhc3VyZShvYmplY3ROYW1lLCBtZXRob2ROYW1lc1trZXldLCBvYmplY3Rba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byB3cmFwIG1ldGhvZHMgeW91IHdhbnQgdG8gbWVhc3VyZS4gWmVybyBvdmVyaGVhZCBpbiBwcm9kdWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm5OYW1lXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmNcbiAgICogQHJldHVybiB7ZnVuY3Rpb259XG4gICAqL1xuICBtZWFzdXJlOiBmdW5jdGlvbiAob2JqTmFtZSwgZm5OYW1lLCBmdW5jKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtZWFzdXJlZEZ1bmMgPSBudWxsO1xuICAgICAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChSZWFjdFBlcmYuZW5hYmxlTWVhc3VyZSkge1xuICAgICAgICAgIGlmICghbWVhc3VyZWRGdW5jKSB7XG4gICAgICAgICAgICBtZWFzdXJlZEZ1bmMgPSBSZWFjdFBlcmYuc3RvcmVkTWVhc3VyZShvYmpOYW1lLCBmbk5hbWUsIGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbWVhc3VyZWRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLmRpc3BsYXlOYW1lID0gb2JqTmFtZSArICdfJyArIGZuTmFtZTtcbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYztcbiAgfSxcblxuICBpbmplY3Rpb246IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZWFzdXJlXG4gICAgICovXG4gICAgaW5qZWN0TWVhc3VyZTogZnVuY3Rpb24gKG1lYXN1cmUpIHtcbiAgICAgIFJlYWN0UGVyZi5zdG9yZWRNZWFzdXJlID0gbWVhc3VyZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogU2ltcGx5IHBhc3NlcyB0aHJvdWdoIHRoZSBtZWFzdXJlZCBmdW5jdGlvbiwgd2l0aG91dCBtZWFzdXJpbmcgaXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG9iak5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmbk5hbWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmNcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBfbm9NZWFzdXJlKG9iak5hbWUsIGZuTmFtZSwgZnVuYykge1xuICByZXR1cm4gZnVuYztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFBlcmY7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRGQmxjbVl1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVUdWeVpseHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JpOHFLbHh1SUNvZ1VtVmhZM1JRWlhKbUlHbHpJR0VnWjJWdVpYSmhiQ0JCVDFBZ2MzbHpkR1Z0SUdSbGMybG5ibVZrSUhSdklHMWxZWE4xY21VZ2NHVnlabTl5YldGdVkyVXVJRlJvYVhOY2JpQXFJRzF2WkhWc1pTQnZibXg1SUdoaGN5QjBhR1VnYUc5dmEzTTZJSE5sWlNCU1pXRmpkRVJsWm1GMWJIUlFaWEptSUdadmNpQjBhR1VnWVc1aGJIbHphWE1nZEc5dmJDNWNiaUFxTDF4dWRtRnlJRkpsWVdOMFVHVnlaaUE5SUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRUp2YjJ4bFlXNGdkRzhnWlc1aFlteGxMMlJwYzJGaWJHVWdiV1ZoYzNWeVpXMWxiblF1SUZObGRDQjBieUJtWVd4elpTQmllU0JrWldaaGRXeDBJSFJ2SUhCeVpYWmxiblJjYmlBZ0lDb2dZV05qYVdSbGJuUmhiQ0JzYjJkbmFXNW5JR0Z1WkNCd1pYSm1JR3h2YzNNdVhHNGdJQ0FxTDF4dUlDQmxibUZpYkdWTlpXRnpkWEpsT2lCbVlXeHpaU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTRzlzWkhNZ2IyNTBieUIwYUdVZ2JXVmhjM1Z5WlNCbWRXNWpkR2x2YmlCcGJpQjFjMlV1SUVKNUlHUmxabUYxYkhRc0lHUnZiaWQwSUcxbFlYTjFjbVZjYmlBZ0lDb2dZVzU1ZEdocGJtY3NJR0oxZENCM1pTZHNiQ0J2ZG1WeWNtbGtaU0IwYUdseklHbG1JSGRsSUdsdWFtVmpkQ0JoSUcxbFlYTjFjbVVnWm5WdVkzUnBiMjR1WEc0Z0lDQXFMMXh1SUNCemRHOXlaV1JOWldGemRYSmxPaUJmYm05TlpXRnpkWEpsTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdiMkpxWldOMFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2WW1wbFkzUk9ZVzFsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMFBITjBjbWx1Wno1OUlHMWxkR2h2WkU1aGJXVnpYRzRnSUNBcUwxeHVJQ0J0WldGemRYSmxUV1YwYUc5a2N6b2dablZ1WTNScGIyNGdLRzlpYW1WamRDd2diMkpxWldOMFRtRnRaU3dnYldWMGFHOWtUbUZ0WlhNcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnWm05eUlDaDJZWElnYTJWNUlHbHVJRzFsZEdodlpFNWhiV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doYldWMGFHOWtUbUZ0WlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvYTJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHOWlhbVZqZEZ0clpYbGRJRDBnVW1WaFkzUlFaWEptTG0xbFlYTjFjbVVvYjJKcVpXTjBUbUZ0WlN3Z2JXVjBhRzlrVG1GdFpYTmJhMlY1WFN3Z2IySnFaV04wVzJ0bGVWMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVlhObElIUm9hWE1nZEc4Z2QzSmhjQ0J0WlhSb2IyUnpJSGx2ZFNCM1lXNTBJSFJ2SUcxbFlYTjFjbVV1SUZwbGNtOGdiM1psY21obFlXUWdhVzRnY0hKdlpIVmpkR2x2Ymk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOWlhazVoYldWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR1p1VG1GdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCbWRXNWpYRzRnSUNBcUlFQnlaWFIxY200Z2UyWjFibU4wYVc5dWZWeHVJQ0FnS2k5Y2JpQWdiV1ZoYzNWeVpUb2dablZ1WTNScGIyNGdLRzlpYWs1aGJXVXNJR1p1VG1GdFpTd2dablZ1WXlrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JXVmhjM1Z5WldSR2RXNWpJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIWmhjaUIzY21Gd2NHVnlJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvVW1WaFkzUlFaWEptTG1WdVlXSnNaVTFsWVhOMWNtVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9JVzFsWVhOMWNtVmtSblZ1WXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYldWaGMzVnlaV1JHZFc1aklEMGdVbVZoWTNSUVpYSm1Mbk4wYjNKbFpFMWxZWE4xY21Vb2IySnFUbUZ0WlN3Z1ptNU9ZVzFsTENCbWRXNWpLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHMWxZWE4xY21Wa1JuVnVZeTVoY0hCc2VTaDBhR2x6TENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1kVzVqTG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdkM0poY0hCbGNpNWthWE53YkdGNVRtRnRaU0E5SUc5aWFrNWhiV1VnS3lBblh5Y2dLeUJtYms1aGJXVTdYRzRnSUNBZ0lDQnlaWFIxY200Z2QzSmhjSEJsY2p0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU03WEc0Z0lIMHNYRzVjYmlBZ2FXNXFaV04wYVc5dU9pQjdYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdiV1ZoYzNWeVpWeHVJQ0FnSUNBcUwxeHVJQ0FnSUdsdWFtVmpkRTFsWVhOMWNtVTZJR1oxYm1OMGFXOXVJQ2h0WldGemRYSmxLU0I3WEc0Z0lDQWdJQ0JTWldGamRGQmxjbVl1YzNSdmNtVmtUV1ZoYzNWeVpTQTlJRzFsWVhOMWNtVTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzR2S2lwY2JpQXFJRk5wYlhCc2VTQndZWE56WlhNZ2RHaHliM1ZuYUNCMGFHVWdiV1ZoYzNWeVpXUWdablZ1WTNScGIyNHNJSGRwZEdodmRYUWdiV1ZoYzNWeWFXNW5JR2wwTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2WW1wT1lXMWxYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWm01T1lXMWxYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCbWRXNWpYRzRnS2lCQWNtVjBkWEp1SUh0bWRXNWpkR2x2Ym4xY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWDI1dlRXVmhjM1Z5WlNodlltcE9ZVzFsTENCbWJrNWhiV1VzSUdaMWJtTXBJSHRjYmlBZ2NtVjBkWEp1SUdaMWJtTTdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JRWlhKbU95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXG4gICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGN5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE5jYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3lBOUlIdDlPMXh1WEc1cFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGN5QTlJSHRjYmlBZ0lDQndjbTl3T2lBbmNISnZjQ2NzWEc0Z0lDQWdZMjl1ZEdWNGREb2dKMk52Ym5SbGVIUW5MRnh1SUNBZ0lHTm9hV3hrUTI5dWRHVjRkRG9nSjJOb2FXeGtJR052Ym5SbGVIUW5YRzRnSUgwN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE03SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFByb3BUeXBlTG9jYXRpb25zXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5TWlycm9yID0gcmVxdWlyZSgnZmJqcy9saWIva2V5TWlycm9yJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25zID0ga2V5TWlycm9yKHtcbiAgcHJvcDogbnVsbCxcbiAgY29udGV4dDogbnVsbCxcbiAgY2hpbGRDb250ZXh0OiBudWxsXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25zOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFByb3BUeXBlc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxvdyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0aGF0IGFyZVxuICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAqXG4gKiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7XG4gKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gKiAgICAgcHJvcFR5cGVzOiB7XG4gKiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCBcImRlc2NyaXB0aW9uXCIuXG4gKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICpcbiAqICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkIFwiY2F0ZWdvcnlcIi5cbiAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAqXG4gKiAgICAgICAvLyBBIHByb3AgbmFtZWQgXCJkaWFsb2dcIiB0aGF0IHJlcXVpcmVzIGFuIGluc3RhbmNlIG9mIERpYWxvZy5cbiAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAqICAgICB9LFxuICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9XG4gKiAgIH0pO1xuICpcbiAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgdXNlZDpcbiAqXG4gKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLilcbiAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQpP1xuICpcbiAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXNcbiAqIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhhbXBsZTpcbiAqXG4gKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgIHByb3BUeXBlczoge1xuICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gKiAgICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICogICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gKiAgICAgICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkge1xuICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcbiAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAqICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICogICAgICAgICAgKTtcbiAqICAgICAgICB9XG4gKiAgICAgIH1cbiAqICAgIH0sXG4gKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAqICB9KTtcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG52YXIgQU5PTllNT1VTID0gJzw8YW5vbnltb3VzPj4nO1xuXG52YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSxcbiAgZnVuYzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksXG4gIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3QnKSxcbiAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyksXG5cbiAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIsXG4gIGVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpLFxuICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxuICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgb25lT2Y6IGNyZWF0ZUVudW1UeXBlQ2hlY2tlcixcbiAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlclxufTtcblxuZnVuY3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcbiAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lIHx8IEFOT05ZTU9VUztcbiAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignUmVxdWlyZWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCB3YXMgbm90IHNwZWNpZmllZCBpbiAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dO1xuICAgICAgLy8gYHByb3BWYWx1ZWAgYmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdleHAsIHBhc3MgdGhlICdvYmplY3QnXG4gICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgIHZhciBwcmVjaXNlVHlwZSA9IGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJlY2lzZVR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2AnICsgZXhwZWN0ZWRUeXBlICsgJ2AuJykpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpIHtcbiAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnMobnVsbCkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScpO1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSB7XG4gIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIGlmICghUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHByb3BzW3Byb3BOYW1lXSkpIHtcbiAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC4nKSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xuICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkge1xuICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1lXSk7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJyk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChwcm9wVmFsdWUgPT09IGV4cGVjdGVkVmFsdWVzW2ldKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzKTtcbiAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XG4gIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgbG9jYXRpb25OYW1lID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dO1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xuICAgIH1cbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcFZhbHVlKSB7XG4gICAgICBpZiAocHJvcFZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXkpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgcmV0dXJuIG5ldyBFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb25OYW1lICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLicpKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgdmFyIGxvY2F0aW9uTmFtZSA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXTtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uTmFtZSArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMpIHtcbiAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHZhciBsb2NhdGlvbk5hbWUgPSBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl07XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbk5hbWUgKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHByb3BUeXBlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGBvYmplY3RgLicpKTtcbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xuICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSk7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkge1xuICAgIGNhc2UgJ251bWJlcic6XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gIXByb3BWYWx1ZTtcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcbiAgICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICB2YXIgc3RlcDtcbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XG4gICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgIGlmICghaXNOb2RlKGVudHJ5WzFdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbmZ1bmN0aW9uIGdldFByb3BUeXBlKHByb3BWYWx1ZSkge1xuICB2YXIgcHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZhbHVlO1xuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgcmV0dXJuICdhcnJheSc7XG4gIH1cbiAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIC8vIE9sZCB3ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicgcmF0aGVyIHRoYW5cbiAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9cbiAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICByZXR1cm4gJ29iamVjdCc7XG4gIH1cbiAgcmV0dXJuIHByb3BUeXBlO1xufVxuXG4vLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4vLyBTZWUgYGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyYC5cbmZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiAncmVnZXhwJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHByb3BUeXBlO1xufVxuXG4vLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKHByb3BWYWx1ZSkge1xuICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICByZXR1cm4gJzw8YW5vbnltb3VzPj4nO1xuICB9XG4gIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlczsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvblxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01GZWF0dXJlRmxhZ3MnKTtcbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9uJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQsIHdoZW4gcG9zc2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0XG4gKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHtcbiAgLyoqXG4gICAqIEByZXR1cm4ge1NlbGVjdGlvbn0gU2VsZWN0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgaW5pdGlhbGl6ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixcbiAgLyoqXG4gICAqIEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGluZm9ybWF0aW9uIHJldHVybmVkIGZyb20gYGluaXRpYWxpemVgLlxuICAgKi9cbiAgY2xvc2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24ucmVzdG9yZVNlbGVjdGlvblxufTtcblxuLyoqXG4gKiBTdXBwcmVzc2VzIGV2ZW50cyAoYmx1ci9mb2N1cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IGRpc3BhdGNoZWQgZHVlIHRvXG4gKiBoaWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5nIGEgdGV4dCBpbnB1dCBmcm9tIHRoZVxuICogRE9NKS5cbiAqL1xudmFyIEVWRU5UX1NVUFBSRVNTSU9OID0ge1xuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVGhlIGVuYWJsZWQgc3RhdHVzIG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGJlZm9yZVxuICAgKiB0aGUgcmVjb25jaWxpYXRpb24uXG4gICAqL1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnRseUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNFbmFibGVkKCk7XG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQoZmFsc2UpO1xuICAgIHJldHVybiBjdXJyZW50bHlFbmFibGVkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByZXZpb3VzbHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mXG4gICAqICAgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlIHRoZSByZWNvbmNpbGlhdGlvbiBvY2N1cnJlZC4gYGNsb3NlYFxuICAgKiAgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS5cbiAgICovXG4gIGNsb3NlOiBmdW5jdGlvbiAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChwcmV2aW91c2x5RW5hYmxlZCk7XG4gIH1cbn07XG5cbi8qKlxuICogUHJvdmlkZXMgYSBxdWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91bnRgIGFuZFxuICogYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52YXIgT05fRE9NX1JFQURZX1FVRVVFSU5HID0ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGludGVybmFsIGBvbkRPTVJlYWR5YCBxdWV1ZS5cbiAgICovXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZnRlciBET00gaXMgZmx1c2hlZCwgaW52b2tlIGFsbCByZWdpc3RlcmVkIGBvbkRPTVJlYWR5YCBjYWxsYmFja3MuXG4gICAqL1xuICBjbG9zZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpO1xuICB9XG59O1xuXG4vKipcbiAqIEV4ZWN1dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNpZGVyIHRoZXNlIGFzXG4gKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1wbGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tXG4gKiBlYWNoIG90aGVyLlxuICovXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbU0VMRUNUSU9OX1JFU1RPUkFUSU9OLCBFVkVOVF9TVVBQUkVTU0lPTiwgT05fRE9NX1JFQURZX1FVRVVFSU5HXTtcblxuLyoqXG4gKiBDdXJyZW50bHk6XG4gKiAtIFRoZSBvcmRlciB0aGF0IHRoZXNlIGFyZSBsaXN0ZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNyaXRpY2FsOlxuICogLSBTdXBwcmVzc2VzIGV2ZW50cy5cbiAqIC0gUmVzdG9yZXMgc2VsZWN0aW9uIHJhbmdlLlxuICpcbiAqIEZ1dHVyZTpcbiAqIC0gUmVzdG9yZSBkb2N1bWVudC9vdmVyZmxvdyBzY3JvbGwgcG9zaXRpb25zIHRoYXQgd2VyZSB1bmludGVudGlvbmFsbHlcbiAqICAgbW9kaWZpZWQgdmlhIERPTSBpbnNlcnRpb25zIGFib3ZlIHRoZSB0b3Agdmlld3BvcnQgYm91bmRhcnkuXG4gKiAtIEltcGxlbWVudC9pbnRlZ3JhdGUgd2l0aCBjdXN0b21pemVkIGNvbnN0cmFpbnQgYmFzZWQgbGF5b3V0IHN5c3RlbSBhbmQga2VlcFxuICogICB0cmFjayBvZiB3aGljaCBkaW1lbnNpb25zIG11c3QgYmUgcmVtZWFzdXJlZC5cbiAqXG4gKiBAY2xhc3MgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvblxuICovXG5mdW5jdGlvbiBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKGZvcmNlSFRNTCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlXG4gIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlc1xuICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0J3NcbiAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21wb25lbnRgIGFuZFxuICAvLyBgUmVhY3RUZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5gXG4gIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTtcbiAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gIWZvcmNlSFRNTCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50O1xufVxuXG52YXIgTWl4aW4gPSB7XG4gIC8qKlxuICAgKiBAc2VlIFRyYW5zYWN0aW9uXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAZmluYWxcbiAgICogQHJldHVybiB7YXJyYXk8b2JqZWN0Pn0gTGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuICAgKiAgIFRPRE86IGNvbnZlcnQgdG8gYXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG4gICAqL1xuICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG4gICAqIGluc3RhbmNlIHRvIGJlIHJldXNlZC5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpO1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5ID0gbnVsbDtcbiAgfVxufTtcblxuYXNzaWduKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbi5NaXhpbiwgTWl4aW4pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RSZWNvbmNpbGVyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RSZWYgPSByZXF1aXJlKCcuL1JlYWN0UmVmJyk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0XG4gKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBpbiB0aGUgdHJhbnNhY3Rpb24gbW91bnQtcmVhZHkgcXVldWUuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaFJlZnMoKSB7XG4gIFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1lbnQpO1xufVxuXG52YXIgUmVhY3RSZWNvbmNpbGVyID0ge1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBET00gSUQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbEluc3RhbmNlLm1vdW50Q29tcG9uZW50KHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UpIHtcbiAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQoKTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlIGEgY29tcG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG5cbiAgICBpZiAobmV4dEVsZW1lbnQgPT09IHByZXZFbGVtZW50ICYmIGNvbnRleHQgPT09IGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIHtcbiAgICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVkLFxuICAgICAgLy8gd2UgY2FuIGRvIGEgY2hlYXAgaWRlbnRpdHkgY29tcGFyZSBoZXJlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGFcbiAgICAgIC8vIHN1cGVyZmx1b3VzIHJlY29uY2lsZS4gSXQncyBwb3NzaWJsZSBmb3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQgc3VjaFxuICAgICAgLy8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291bGQgcmVjcmVhdGVcbiAgICAgIC8vIHRoZSBlbGVtZW50LiBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIG93bmVyIHNpbmNlXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIGZvciBhbiBlbGVtZW50IGNyZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0byBiZVxuICAgICAgLy8gZGVlcGx5IG11dGF0ZWQgYW5kIHJldXNlZC5cblxuICAgICAgLy8gVE9ETzogQmFpbGluZyBvdXQgZWFybHkgaXMganVzdCBhIHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0P1xuICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0bmVzcz9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcmVmc0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCk7XG5cbiAgICBpZiAocmVmc0NoYW5nZWQpIHtcbiAgICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgcHJldkVsZW1lbnQpO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlZnNDaGFuZ2VkICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRmx1c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uKSB7XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodHJhbnNhY3Rpb24pO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVyOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFJlZlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0T3duZXInKTtcblxudmFyIFJlYWN0UmVmID0ge307XG5cbmZ1bmN0aW9uIGF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYoY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICB9IGVsc2Uge1xuICAgIC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVyLmFkZENvbXBvbmVudEFzUmVmVG8oY29tcG9uZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKG51bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVyLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbShjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuICB9XG59XG5cblJlYWN0UmVmLmF0dGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICBpZiAocmVmICE9IG51bGwpIHtcbiAgICBhdHRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpO1xuICB9XG59O1xuXG5SZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzID0gZnVuY3Rpb24gKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xuICAvLyBJZiBlaXRoZXIgdGhlIG93bmVyIG9yIGEgYHJlZmAgaGFzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0aGUgbmV3ZXN0IG93bmVyXG4gIC8vIGhhcyBzdG9yZWQgYSByZWZlcmVuY2UgdG8gYHRoaXNgLCBhbmQgdGhlIHByZXZpb3VzIG93bmVyIChpZiBkaWZmZXJlbnQpXG4gIC8vIGhhcyBmb3Jnb3R0ZW4gdGhlIHJlZmVyZW5jZSB0byBgdGhpc2AuIFdlIHVzZSB0aGUgZWxlbWVudCBpbnN0ZWFkXG4gIC8vIG9mIHRoZSBwdWJsaWMgdGhpcy5wcm9wcyBiZWNhdXNlIHRoZSBwb3N0IHByb2Nlc3NpbmcgY2Fubm90IGRldGVybWluZVxuICAvLyBhIHJlZi4gVGhlIHJlZiBjb25jZXB0dWFsbHkgbGl2ZXMgb24gdGhlIGVsZW1lbnQuXG5cbiAgLy8gVE9ETzogU2hvdWxkIHRoaXMgZXZlbiBiZSBwb3NzaWJsZT8gVGhlIG93bmVyIGNhbm5vdCBjaGFuZ2UgYmVjYXVzZVxuICAvLyBpdCdzIGZvcmJpZGRlbiBieSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC4gVGhlIHJlZiBjYW4gY2hhbmdlXG4gIC8vIGlmIHlvdSBzd2FwIHRoZSBrZXlzIG9mIGJ1dCBub3QgdGhlIHJlZnMuIFJlY29uc2lkZXIgd2hlcmUgdGhpcyBjaGVja1xuICAvLyBpcyBtYWRlLiBJdCBwcm9iYWJseSBiZWxvbmdzIHdoZXJlIHRoZSBrZXkgY2hlY2tpbmcgYW5kXG4gIC8vIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgaXMgZG9uZS5cblxuICB2YXIgcHJldkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51bGwgfHwgcHJldkVsZW1lbnQgPT09IGZhbHNlO1xuICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51bGwgfHwgbmV4dEVsZW1lbnQgPT09IGZhbHNlO1xuXG4gIHJldHVybihcbiAgICAvLyBUaGlzIGhhcyBhIGZldyBmYWxzZSBwb3NpdGl2ZXMgdy9yL3QgZW1wdHkgY29tcG9uZW50cy5cbiAgICBwcmV2RW1wdHkgfHwgbmV4dEVtcHR5IHx8IG5leHRFbGVtZW50Ll9vd25lciAhPT0gcHJldkVsZW1lbnQuX293bmVyIHx8IG5leHRFbGVtZW50LnJlZiAhPT0gcHJldkVsZW1lbnQucmVmXG4gICk7XG59O1xuXG5SZWFjdFJlZi5kZXRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAgaWYgKHJlZiAhPSBudWxsKSB7XG4gICAgZGV0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlZjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RSb290SW5kZXhcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RSb290SW5kZXhJbmplY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBfY3JlYXRlUmVhY3RSb290SW5kZXhcbiAgICovXG4gIGluamVjdENyZWF0ZVJlYWN0Um9vdEluZGV4OiBmdW5jdGlvbiAoX2NyZWF0ZVJlYWN0Um9vdEluZGV4KSB7XG4gICAgUmVhY3RSb290SW5kZXguY3JlYXRlUmVhY3RSb290SW5kZXggPSBfY3JlYXRlUmVhY3RSb290SW5kZXg7XG4gIH1cbn07XG5cbnZhciBSZWFjdFJvb3RJbmRleCA9IHtcbiAgY3JlYXRlUmVhY3RSb290SW5kZXg6IG51bGwsXG4gIGluamVjdGlvbjogUmVhY3RSb290SW5kZXhJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSb290SW5kZXg7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneVxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kgPSB7XG4gIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSxcbiAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGhlcmUuIER1cmluZyB0aGUgc2VydmVyIHJlbmRlcmluZyB3ZSBkb24ndCB3YW50IHRvXG4gICAgLy8gc2NoZWR1bGUgYW55IHVwZGF0ZXMuIFdlIHdpbGwgc2ltcGx5IGlnbm9yZSB0aGVtLlxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneTsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFNlcnZlclJlbmRlcmluZ1xuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5Jyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcbnZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gcmVxdWlyZSgnLi9SZWFjdE1hcmt1cENoZWNrc3VtJyk7XG52YXIgUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIEhUTUwgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclRvU3RyaW5nKGVsZW1lbnQpIHtcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW5kZXJUb1N0cmluZygpOiBZb3UgbXVzdCBwYXNzIGEgdmFsaWQgUmVhY3RFbGVtZW50LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICB2YXIgdHJhbnNhY3Rpb247XG4gIHRyeSB7XG4gICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgICB2YXIgaWQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5jcmVhdGVSZWFjdFJvb3RJRCgpO1xuICAgIHRyYW5zYWN0aW9uID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5nZXRQb29sZWQoZmFsc2UpO1xuXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlbGVtZW50LCBudWxsKTtcbiAgICAgIHZhciBtYXJrdXAgPSBjb21wb25lbnRJbnN0YW5jZS5tb3VudENvbXBvbmVudChpZCwgdHJhbnNhY3Rpb24sIGVtcHR5T2JqZWN0KTtcbiAgICAgIHJldHVybiBSZWFjdE1hcmt1cENoZWNrc3VtLmFkZENoZWNrc3VtVG9NYXJrdXAobWFya3VwKTtcbiAgICB9LCBudWxsKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuICAgIC8vIFJldmVydCB0byB0aGUgRE9NIGJhdGNoaW5nIHN0cmF0ZWd5IHNpbmNlIHRoZXNlIHR3byByZW5kZXJlcnNcbiAgICAvLyBjdXJyZW50bHkgc2hhcmUgdGhlc2Ugc3RhdGVmdWwgbW9kdWxlcy5cbiAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgSFRNTCBtYXJrdXAsIHdpdGhvdXQgdGhlIGV4dHJhIFJlYWN0IElEIGFuZCBjaGVja3N1bVxuICogKGZvciBnZW5lcmF0aW5nIHN0YXRpYyBwYWdlcylcbiAqL1xuZnVuY3Rpb24gcmVuZGVyVG9TdGF0aWNNYXJrdXAoZWxlbWVudCkge1xuICAhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbmRlclRvU3RhdGljTWFya3VwKCk6IFlvdSBtdXN0IHBhc3MgYSB2YWxpZCBSZWFjdEVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHZhciB0cmFuc2FjdGlvbjtcbiAgdHJ5IHtcbiAgICBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgIHZhciBpZCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0Um9vdElEKCk7XG4gICAgdHJhbnNhY3Rpb24gPSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLmdldFBvb2xlZCh0cnVlKTtcblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZWxlbWVudCwgbnVsbCk7XG4gICAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2UubW91bnRDb21wb25lbnQoaWQsIHRyYW5zYWN0aW9uLCBlbXB0eU9iamVjdCk7XG4gICAgfSwgbnVsbCk7XG4gIH0gZmluYWxseSB7XG4gICAgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbiAgICAvLyBSZXZlcnQgdG8gdGhlIERPTSBiYXRjaGluZyBzdHJhdGVneSBzaW5jZSB0aGVzZSB0d28gcmVuZGVyZXJzXG4gICAgLy8gY3VycmVudGx5IHNoYXJlIHRoZXNlIHN0YXRlZnVsIG1vZHVsZXMuXG4gICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICByZW5kZXJUb1N0cmluZzogcmVuZGVyVG9TdHJpbmcsXG4gIHJlbmRlclRvU3RhdGljTWFya3VwOiByZW5kZXJUb1N0YXRpY01hcmt1cFxufTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaeTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRk5sY25abGNsSmxibVJsY21sdVoxeHVJQ292WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVSbFptRjFiSFJDWVhSamFHbHVaMU4wY21GMFpXZDVJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJsWm1GMWJIUkNZWFJqYUdsdVoxTjBjbUYwWldkNUp5azdYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTW5LVHRjYm5aaGNpQlNaV0ZqZEUxaGNtdDFjRU5vWldOcmMzVnRJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRTFoY210MWNFTm9aV05yYzNWdEp5azdYRzUyWVhJZ1VtVmhZM1JUWlhKMlpYSkNZWFJqYUdsdVoxTjBjbUYwWldkNUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGTmxjblpsY2tKaGRHTm9hVzVuVTNSeVlYUmxaM2tuS1R0Y2JuWmhjaUJTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dUp5azdYRzUyWVhJZ1VtVmhZM1JWY0dSaGRHVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpYTW5LVHRjYmx4dWRtRnlJR1Z0Y0hSNVQySnFaV04wSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlpXMXdkSGxQWW1wbFkzUW5LVHRjYm5aaGNpQnBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVWc1pXMWxiblI5SUdWc1pXMWxiblJjYmlBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ2RHaGxJRWhVVFV3Z2JXRnlhM1Z3WEc0Z0tpOWNibVoxYm1OMGFXOXVJSEpsYm1SbGNsUnZVM1J5YVc1bktHVnNaVzFsYm5RcElIdGNiaUFnSVZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENobGJHVnRaVzUwS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R5Wlc1a1pYSlViMU4wY21sdVp5Z3BPaUJaYjNVZ2JYVnpkQ0J3WVhOeklHRWdkbUZzYVdRZ1VtVmhZM1JGYkdWdFpXNTBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNCMllYSWdkSEpoYm5OaFkzUnBiMjQ3WEc0Z0lIUnllU0I3WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1Z6TG1sdWFtVmpkR2x2Ymk1cGJtcGxZM1JDWVhSamFHbHVaMU4wY21GMFpXZDVLRkpsWVdOMFUyVnlkbVZ5UW1GMFkyaHBibWRUZEhKaGRHVm5lU2s3WEc1Y2JpQWdJQ0IyWVhJZ2FXUWdQU0JTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3k1amNtVmhkR1ZTWldGamRGSnZiM1JKUkNncE8xeHVJQ0FnSUhSeVlXNXpZV04wYVc5dUlEMGdVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWRVY21GdWMyRmpkR2x2Ymk1blpYUlFiMjlzWldRb1ptRnNjMlVwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJ5WVc1ellXTjBhVzl1TG5CbGNtWnZjbTBvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ2RtRnlJR052YlhCdmJtVnVkRWx1YzNSaGJtTmxJRDBnYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2hsYkdWdFpXNTBMQ0J1ZFd4c0tUdGNiaUFnSUNBZ0lIWmhjaUJ0WVhKcmRYQWdQU0JqYjIxd2IyNWxiblJKYm5OMFlXNWpaUzV0YjNWdWRFTnZiWEJ2Ym1WdWRDaHBaQ3dnZEhKaGJuTmhZM1JwYjI0c0lHVnRjSFI1VDJKcVpXTjBLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQlNaV0ZqZEUxaGNtdDFjRU5vWldOcmMzVnRMbUZrWkVOb1pXTnJjM1Z0Vkc5TllYSnJkWEFvYldGeWEzVndLVHRjYmlBZ0lDQjlMQ0J1ZFd4c0tUdGNiaUFnZlNCbWFXNWhiR3g1SUh0Y2JpQWdJQ0JTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dUxuSmxiR1ZoYzJVb2RISmhibk5oWTNScGIyNHBPMXh1SUNBZ0lDOHZJRkpsZG1WeWRDQjBieUIwYUdVZ1JFOU5JR0poZEdOb2FXNW5JSE4wY21GMFpXZDVJSE5wYm1ObElIUm9aWE5sSUhSM2J5QnlaVzVrWlhKbGNuTmNiaUFnSUNBdkx5QmpkWEp5Wlc1MGJIa2djMmhoY21VZ2RHaGxjMlVnYzNSaGRHVm1kV3dnYlc5a2RXeGxjeTVjYmlBZ0lDQlNaV0ZqZEZWd1pHRjBaWE11YVc1cVpXTjBhVzl1TG1sdWFtVmpkRUpoZEdOb2FXNW5VM1J5WVhSbFoza29VbVZoWTNSRVpXWmhkV3gwUW1GMFkyaHBibWRUZEhKaGRHVm5lU2s3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdaV3hsYldWdWRGeHVJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0IwYUdVZ1NGUk5UQ0J0WVhKcmRYQXNJSGRwZEdodmRYUWdkR2hsSUdWNGRISmhJRkpsWVdOMElFbEVJR0Z1WkNCamFHVmphM04xYlZ4dUlDb2dLR1p2Y2lCblpXNWxjbUYwYVc1bklITjBZWFJwWXlCd1lXZGxjeWxjYmlBcUwxeHVablZ1WTNScGIyNGdjbVZ1WkdWeVZHOVRkR0YwYVdOTllYSnJkWEFvWld4bGJXVnVkQ2tnZTF4dUlDQWhVbVZoWTNSRmJHVnRaVzUwTG1selZtRnNhV1JGYkdWdFpXNTBLR1ZzWlcxbGJuUXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozSmxibVJsY2xSdlUzUmhkR2xqVFdGeWEzVndLQ2s2SUZsdmRTQnRkWE4wSUhCaGMzTWdZU0IyWVd4cFpDQlNaV0ZqZEVWc1pXMWxiblF1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lIWmhjaUIwY21GdWMyRmpkR2x2Ymp0Y2JpQWdkSEo1SUh0Y2JpQWdJQ0JTWldGamRGVndaR0YwWlhNdWFXNXFaV04wYVc5dUxtbHVhbVZqZEVKaGRHTm9hVzVuVTNSeVlYUmxaM2tvVW1WaFkzUlRaWEoyWlhKQ1lYUmphR2x1WjFOMGNtRjBaV2Q1S1R0Y2JseHVJQ0FnSUhaaGNpQnBaQ0E5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxtTnlaV0YwWlZKbFlXTjBVbTl2ZEVsRUtDazdYRzRnSUNBZ2RISmhibk5oWTNScGIyNGdQU0JTWldGamRGTmxjblpsY2xKbGJtUmxjbWx1WjFSeVlXNXpZV04wYVc5dUxtZGxkRkJ2YjJ4bFpDaDBjblZsS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUIwY21GdWMyRmpkR2x2Ymk1d1pYSm1iM0p0S0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lIWmhjaUJqYjIxd2IyNWxiblJKYm5OMFlXNWpaU0E5SUdsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvWld4bGJXVnVkQ3dnYm5Wc2JDazdYRzRnSUNBZ0lDQnlaWFIxY200Z1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVdWJXOTFiblJEYjIxd2IyNWxiblFvYVdRc0lIUnlZVzV6WVdOMGFXOXVMQ0JsYlhCMGVVOWlhbVZqZENrN1hHNGdJQ0FnZlN3Z2JuVnNiQ2s3WEc0Z0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ1VtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZiaTV5Wld4bFlYTmxLSFJ5WVc1ellXTjBhVzl1S1R0Y2JpQWdJQ0F2THlCU1pYWmxjblFnZEc4Z2RHaGxJRVJQVFNCaVlYUmphR2x1WnlCemRISmhkR1ZuZVNCemFXNWpaU0IwYUdWelpTQjBkMjhnY21WdVpHVnlaWEp6WEc0Z0lDQWdMeThnWTNWeWNtVnVkR3g1SUhOb1lYSmxJSFJvWlhObElITjBZWFJsWm5Wc0lHMXZaSFZzWlhNdVhHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWekxtbHVhbVZqZEdsdmJpNXBibXBsWTNSQ1lYUmphR2x1WjFOMGNtRjBaV2Q1S0ZKbFlXTjBSR1ZtWVhWc2RFSmhkR05vYVc1blUzUnlZWFJsWjNrcE8xeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdlMXh1SUNCeVpXNWtaWEpVYjFOMGNtbHVaem9nY21WdVpHVnlWRzlUZEhKcGJtY3NYRzRnSUhKbGJtUmxjbFJ2VTNSaGRHbGpUV0Z5YTNWd09pQnlaVzVrWlhKVWIxTjBZWFJwWTAxaGNtdDFjRnh1ZlRzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvblxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgYENhbGxiYWNrUXVldWVgIHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBvbkRPTVJlYWR5YCBjYWxsYmFja3NcbiAqIGR1cmluZyB0aGUgcGVyZm9ybWluZyBvZiB0aGUgdHJhbnNhY3Rpb24uXG4gKi9cbnZhciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLlxuICAgKi9cbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7XG4gIH0sXG5cbiAgY2xvc2U6IGVtcHR5RnVuY3Rpb25cbn07XG5cbi8qKlxuICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcbiAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb21cbiAqIGVhY2ggb3RoZXIuXG4gKi9cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtPTl9ET01fUkVBRFlfUVVFVUVJTkddO1xuXG4vKipcbiAqIEBjbGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGljTWFya3VwXG4gKi9cbmZ1bmN0aW9uIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gcmVuZGVyVG9TdGF0aWNNYXJrdXA7XG4gIHRoaXMucmVhY3RNb3VudFJlYWR5ID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQobnVsbCk7XG4gIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9IGZhbHNlO1xufVxuXG52YXIgTWl4aW4gPSB7XG4gIC8qKlxuICAgKiBAc2VlIFRyYW5zYWN0aW9uXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAZmluYWxcbiAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLlxuICAgKi9cbiAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5O1xuICB9LFxuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLCBhbmQgd2lsbCBpbnZva2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpc1xuICAgKiBpbnN0YW5jZSB0byBiZSByZXVzZWQuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMucmVhY3RNb3VudFJlYWR5KTtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFkeSA9IG51bGw7XG4gIH1cbn07XG5cbmFzc2lnbihSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24uTWl4aW4sIE1peGluKTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0VHJhbnNpdGlvbkV2ZW50c1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxuLyoqXG4gKiBFVkVOVF9OQU1FX01BUCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGljaCBldmVudCBmaXJlZCB3aGVuIGFcbiAqIHRyYW5zaXRpb24vYW5pbWF0aW9uIGVuZHMsIGJhc2VkIG9uIHRoZSBzdHlsZSBwcm9wZXJ0eSB1c2VkIHRvXG4gKiBkZWZpbmUgdGhhdCBldmVudC5cbiAqL1xudmFyIEVWRU5UX05BTUVfTUFQID0ge1xuICB0cmFuc2l0aW9uZW5kOiB7XG4gICAgJ3RyYW5zaXRpb24nOiAndHJhbnNpdGlvbmVuZCcsXG4gICAgJ1dlYmtpdFRyYW5zaXRpb24nOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsXG4gICAgJ01velRyYW5zaXRpb24nOiAnbW96VHJhbnNpdGlvbkVuZCcsXG4gICAgJ09UcmFuc2l0aW9uJzogJ29UcmFuc2l0aW9uRW5kJyxcbiAgICAnbXNUcmFuc2l0aW9uJzogJ01TVHJhbnNpdGlvbkVuZCdcbiAgfSxcblxuICBhbmltYXRpb25lbmQ6IHtcbiAgICAnYW5pbWF0aW9uJzogJ2FuaW1hdGlvbmVuZCcsXG4gICAgJ1dlYmtpdEFuaW1hdGlvbic6ICd3ZWJraXRBbmltYXRpb25FbmQnLFxuICAgICdNb3pBbmltYXRpb24nOiAnbW96QW5pbWF0aW9uRW5kJyxcbiAgICAnT0FuaW1hdGlvbic6ICdvQW5pbWF0aW9uRW5kJyxcbiAgICAnbXNBbmltYXRpb24nOiAnTVNBbmltYXRpb25FbmQnXG4gIH1cbn07XG5cbnZhciBlbmRFdmVudHMgPSBbXTtcblxuZnVuY3Rpb24gZGV0ZWN0RXZlbnRzKCkge1xuICB2YXIgdGVzdEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHZhciBzdHlsZSA9IHRlc3RFbC5zdHlsZTtcblxuICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVhc2VzIG9mIEFuZHJvaWQgNC54LFxuICAvLyB0aGUgdW4tcHJlZml4ZWQgXCJhbmltYXRpb25cIiBhbmQgXCJ0cmFuc2l0aW9uXCIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGVcbiAgLy8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVkLCBzbyB3ZSBuZWVkXG4gIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVudHMgYXJlIHVzZWFibGUsIGFuZCBpZiBub3QgcmVtb3ZlIHRoZW1cbiAgLy8gZnJvbSB0aGUgbWFwXG4gIGlmICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkge1xuICAgIGRlbGV0ZSBFVkVOVF9OQU1FX01BUC5hbmltYXRpb25lbmQuYW5pbWF0aW9uO1xuICB9XG5cbiAgaWYgKCEoJ1RyYW5zaXRpb25FdmVudCcgaW4gd2luZG93KSkge1xuICAgIGRlbGV0ZSBFVkVOVF9OQU1FX01BUC50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb247XG4gIH1cblxuICBmb3IgKHZhciBiYXNlRXZlbnROYW1lIGluIEVWRU5UX05BTUVfTUFQKSB7XG4gICAgdmFyIGJhc2VFdmVudHMgPSBFVkVOVF9OQU1FX01BUFtiYXNlRXZlbnROYW1lXTtcbiAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gYmFzZUV2ZW50cykge1xuICAgICAgaWYgKHN0eWxlTmFtZSBpbiBzdHlsZSkge1xuICAgICAgICBlbmRFdmVudHMucHVzaChiYXNlRXZlbnRzW3N0eWxlTmFtZV0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICBkZXRlY3RFdmVudHMoKTtcbn1cblxuLy8gV2UgdXNlIHRoZSByYXcge2FkZHxyZW1vdmV9RXZlbnRMaXN0ZW5lcigpIGNhbGwgYmVjYXVzZSBFdmVudExpc3RlbmVyXG4vLyBkb2VzIG5vdCBrbm93IGhvdyB0byByZW1vdmUgZXZlbnQgbGlzdGVuZXJzIGFuZCB3ZSByZWFsbHkgc2hvdWxkXG4vLyBjbGVhbiB1cC4gQWxzbywgdGhlc2UgZXZlbnRzIGFyZSBub3QgdHJpZ2dlcmVkIGluIG9sZGVyIGJyb3dzZXJzXG4vLyBzbyB3ZSBzaG91bGQgYmUgQS1PSyBoZXJlLlxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lcikge1xuICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBldmVudExpc3RlbmVyKSB7XG4gIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbn1cblxudmFyIFJlYWN0VHJhbnNpdGlvbkV2ZW50cyA9IHtcbiAgYWRkRW5kRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKG5vZGUsIGV2ZW50TGlzdGVuZXIpIHtcbiAgICBpZiAoZW5kRXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gSWYgQ1NTIHRyYW5zaXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCB0cmlnZ2VyIGFuIFwiZW5kIGFuaW1hdGlvblwiXG4gICAgICAvLyBldmVudCBpbW1lZGlhdGVseS5cbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGV2ZW50TGlzdGVuZXIsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbmRFdmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZW5kRXZlbnQpIHtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZW5kRXZlbnQsIGV2ZW50TGlzdGVuZXIpO1xuICAgIH0pO1xuICB9LFxuXG4gIHJlbW92ZUVuZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChub2RlLCBldmVudExpc3RlbmVyKSB7XG4gICAgaWYgKGVuZEV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZW5kRXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGVuZEV2ZW50KSB7XG4gICAgICByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGVuZEV2ZW50LCBldmVudExpc3RlbmVyKTtcbiAgICB9KTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFRyYW5zaXRpb25FdmVudHM7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RVcGRhdGVRdWV1ZVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpIHtcbiAgUmVhY3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG59XG5cbmZ1bmN0aW9uIGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIE9ubHkgd2FybiB3aGVuIHdlIGhhdmUgYSBjYWxsZXJOYW1lLiBPdGhlcndpc2Ugd2Ugc2hvdWxkIGJlIHNpbGVudC5cbiAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxpbmcgZnJvbSBlbnF1ZXVlQ2FsbGJhY2suIFdlIGRvbid0IHdhbnQgdG8gd2FyblxuICAgICAgLy8gdGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IHdhcm5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgbGlmZWN5Y2xlIG1ldGhvZC5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjYWxsZXJOYW1lLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJyVzKC4uLik6IENhbm5vdCB1cGRhdGUgZHVyaW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRyYW5zaXRpb24gJyArICcoc3VjaCBhcyB3aXRoaW4gYHJlbmRlcmApLiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlLicsIGNhbGxlck5hbWUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7XG59XG5cbi8qKlxuICogUmVhY3RVcGRhdGVRdWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlclxuICogcmVjb25jaWxpYXRpb24gc3RlcC5cbiAqL1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgICBpZiAob3duZXIgIT09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlzTW91bnRlZCBpbnNpZGUgaXRzIHJlbmRlcigpIGZ1bmN0aW9uLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgLy8gRHVyaW5nIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyIHRoaXMgd2lsbCBzdGlsbCBiZSBudWxsIGJ1dCBhZnRlclxuICAgICAgLy8gdGhhdCB3aWxsIGFsd2F5cyByZW5kZXIgdG8gc29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBTbyB3ZSBjYW4gdXNlXG4gICAgICAvLyB0aGlzIGhhY2suXG4gICAgICByZXR1cm4gISFpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG4gICAgISh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2VucXVldWVDYWxsYmFjayguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2AsIGByZXBsYWNlUHJvcHNgLCAnICsgJ2BzZXRTdGF0ZWAsIGByZXBsYWNlU3RhdGVgLCBvciBgZm9yY2VVcGRhdGVgIHdpdGggYSBjYWxsYmFjayB0aGF0ICcgKyAnaXNuXFwndCBjYWxsYWJsZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuXG4gICAgLy8gUHJldmlvdXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5hbFxuICAgIC8vIGluc3RhbmNlLiBTaW5jZSB3ZSB3YW50IHRvIG1ha2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBtaXJyb3IgdGhlIHNhbWVcbiAgICAvLyBiZWhhdmlvciB3ZSBoYXZlIGluIG90aGVyIGVucXVldWUqIG1ldGhvZHMuXG4gICAgLy8gV2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50LiBTZWVcbiAgICAvLyBlbnF1ZXVlVXBkYXRlcy5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gICAgLy8gVE9ETzogVGhlIGNhbGxiYWNrIGhlcmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRlIGlzIGNhbGxlZCBmcm9tXG4gICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRvaW5nIHNvIGNvbXBsZXRlbHkgaW5cbiAgICAvLyBmYXZvciBvZiBnZXRJbml0aWFsU3RhdGUuIEFsdGVybmF0aXZlbHksIHdlIGNhbiBkaXNhbGxvd1xuICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBkdXJpbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBjYWxsYmFjaykge1xuICAgICEodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdlbnF1ZXVlQ2FsbGJhY2soLi4uKTogWW91IGNhbGxlZCBgc2V0UHJvcHNgLCBgcmVwbGFjZVByb3BzYCwgJyArICdgc2V0U3RhdGVgLCBgcmVwbGFjZVN0YXRlYCwgb3IgYGZvcmNlVXBkYXRlYCB3aXRoIGEgY2FsbGJhY2sgdGhhdCAnICsgJ2lzblxcJ3QgY2FsbGFibGUuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdO1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbXSk7XG4gICAgcXVldWUucHVzaChwYXJ0aWFsU3RhdGUpO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFByb3BzIFN1YnNldCBvZiB0aGUgbmV4dCBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0UHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFByb3BzKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRQcm9wcycpO1xuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRQcm9wc0ludGVybmFsKGludGVybmFsSW5zdGFuY2UsIHBhcnRpYWxQcm9wcyk7XG4gIH0sXG5cbiAgZW5xdWV1ZVNldFByb3BzSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBwYXJ0aWFsUHJvcHMpIHtcbiAgICB2YXIgdG9wTGV2ZWxXcmFwcGVyID0gaW50ZXJuYWxJbnN0YW5jZS5fdG9wTGV2ZWxXcmFwcGVyO1xuICAgICF0b3BMZXZlbFdyYXBwZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnc2V0UHJvcHMoLi4uKTogWW91IGNhbGxlZCBgc2V0UHJvcHNgIG9uIGEgJyArICdjb21wb25lbnQgd2l0aCBhIHBhcmVudC4gVGhpcyBpcyBhbiBhbnRpLXBhdHRlcm4gc2luY2UgcHJvcHMgd2lsbCAnICsgJ2dldCByZWFjdGl2ZWx5IHVwZGF0ZWQgd2hlbiByZW5kZXJlZC4gSW5zdGVhZCwgY2hhbmdlIHRoZSBvd25lclxcJ3MgJyArICdgcmVuZGVyYCBtZXRob2QgdG8gcGFzcyB0aGUgY29ycmVjdCB2YWx1ZSBhcyBwcm9wcyB0byB0aGUgY29tcG9uZW50ICcgKyAnd2hlcmUgaXQgaXMgY3JlYXRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBNZXJnZSB3aXRoIHRoZSBwZW5kaW5nIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2Ugd2l0aCBleGlzdGluZ1xuICAgIC8vIGVsZW1lbnQgcHJvcHMuXG4gICAgdmFyIHdyYXBFbGVtZW50ID0gdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCB8fCB0b3BMZXZlbFdyYXBwZXIuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBlbGVtZW50ID0gd3JhcEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIHByb3BzID0gYXNzaWduKHt9LCBlbGVtZW50LnByb3BzLCBwYXJ0aWFsUHJvcHMpO1xuICAgIHRvcExldmVsV3JhcHBlci5fcGVuZGluZ0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlUHJvcHMod3JhcEVsZW1lbnQsIFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VQcm9wcyhlbGVtZW50LCBwcm9wcykpO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZSh0b3BMZXZlbFdyYXBwZXIpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzIE5ldyBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVByb3BzOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHByb3BzKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlUHJvcHMnKTtcbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlUmVwbGFjZVByb3BzSW50ZXJuYWwoaW50ZXJuYWxJbnN0YW5jZSwgcHJvcHMpO1xuICB9LFxuXG4gIGVucXVldWVSZXBsYWNlUHJvcHNJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHByb3BzKSB7XG4gICAgdmFyIHRvcExldmVsV3JhcHBlciA9IGludGVybmFsSW5zdGFuY2UuX3RvcExldmVsV3JhcHBlcjtcbiAgICAhdG9wTGV2ZWxXcmFwcGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlcGxhY2VQcm9wcyguLi4pOiBZb3UgY2FsbGVkIGByZXBsYWNlUHJvcHNgIG9uIGEgJyArICdjb21wb25lbnQgd2l0aCBhIHBhcmVudC4gVGhpcyBpcyBhbiBhbnRpLXBhdHRlcm4gc2luY2UgcHJvcHMgd2lsbCAnICsgJ2dldCByZWFjdGl2ZWx5IHVwZGF0ZWQgd2hlbiByZW5kZXJlZC4gSW5zdGVhZCwgY2hhbmdlIHRoZSBvd25lclxcJ3MgJyArICdgcmVuZGVyYCBtZXRob2QgdG8gcGFzcyB0aGUgY29ycmVjdCB2YWx1ZSBhcyBwcm9wcyB0byB0aGUgY29tcG9uZW50ICcgKyAnd2hlcmUgaXQgaXMgY3JlYXRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBNZXJnZSB3aXRoIHRoZSBwZW5kaW5nIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2Ugd2l0aCBleGlzdGluZ1xuICAgIC8vIGVsZW1lbnQgcHJvcHMuXG4gICAgdmFyIHdyYXBFbGVtZW50ID0gdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCB8fCB0b3BMZXZlbFdyYXBwZXIuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBlbGVtZW50ID0gd3JhcEVsZW1lbnQucHJvcHM7XG4gICAgdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VQcm9wcyh3cmFwRWxlbWVudCwgUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzKGVsZW1lbnQsIHByb3BzKSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKHRvcExldmVsV3JhcHBlcik7XG4gIH0sXG5cbiAgZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5ld0VsZW1lbnQpIHtcbiAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxlbWVudCA9IG5ld0VsZW1lbnQ7XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlUXVldWU7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlTWldGamRGVndaR0YwWlZGMVpYVmxMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBWWEJrWVhSbFVYVmxkV1ZjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSW5LVHRjYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUld4bGJXVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFNXNXpkR0Z1WTJWTllYQWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBTVzV6ZEdGdVkyVk5ZWEFuS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZYQmtZWFJsY3ljcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1Wm5WdVkzUnBiMjRnWlc1eGRXVjFaVlZ3WkdGMFpTaHBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUZKbFlXTjBWWEJrWVhSbGN5NWxibkYxWlhWbFZYQmtZWFJsS0dsdWRHVnlibUZzU1c1emRHRnVZMlVwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJuWlhSSmJuUmxjbTVoYkVsdWMzUmhibU5sVW1WaFpIbEdiM0pWY0dSaGRHVW9jSFZpYkdsalNXNXpkR0Z1WTJVc0lHTmhiR3hsY2s1aGJXVXBJSHRjYmlBZ2RtRnlJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVWdQU0JTWldGamRFbHVjM1JoYm1ObFRXRndMbWRsZENod2RXSnNhV05KYm5OMFlXNWpaU2s3WEc0Z0lHbG1JQ2doYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2tnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJQYm14NUlIZGhjbTRnZDJobGJpQjNaU0JvWVhabElHRWdZMkZzYkdWeVRtRnRaUzRnVDNSb1pYSjNhWE5sSUhkbElITm9iM1ZzWkNCaVpTQnphV3hsYm5RdVhHNGdJQ0FnSUNBdkx5QlhaU2R5WlNCd2NtOWlZV0pzZVNCallXeHNhVzVuSUdaeWIyMGdaVzV4ZFdWMVpVTmhiR3hpWVdOckxpQlhaU0JrYjI0bmRDQjNZVzUwSUhSdklIZGhjbTVjYmlBZ0lDQWdJQzh2SUhSb1pYSmxJR0psWTJGMWMyVWdkMlVnWVd4eVpXRmtlU0IzWVhKdVpXUWdabTl5SUhSb1pTQmpiM0p5WlhOd2IyNWthVzVuSUd4cFptVmplV05zWlNCdFpYUm9iMlF1WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaFkyRnNiR1Z5VG1GdFpTd2dKeVZ6S0M0dUxpazZJRU5oYmlCdmJteDVJSFZ3WkdGMFpTQmhJRzF2ZFc1MFpXUWdiM0lnYlc5MWJuUnBibWNnWTI5dGNHOXVaVzUwTGlBbklDc2dKMVJvYVhNZ2RYTjFZV3hzZVNCdFpXRnVjeUI1YjNVZ1kyRnNiR1ZrSUNWektDa2diMjRnWVc0Z2RXNXRiM1Z1ZEdWa0lHTnZiWEJ2Ym1WdWRDNGdKeUFySUNkVWFHbHpJR2x6SUdFZ2JtOHRiM0F1SUZCc1pXRnpaU0JqYUdWamF5QjBhR1VnWTI5a1pTQm1iM0lnZEdobElDVnpJR052YlhCdmJtVnVkQzRuTENCallXeHNaWEpPWVcxbExDQmpZV3hzWlhKT1lXMWxMQ0J3ZFdKc2FXTkpibk4wWVc1alpTNWpiMjV6ZEhKMVkzUnZjaTVrYVhOd2JHRjVUbUZ0WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aFNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMDlJRzUxYkd3c0lDY2xjeWd1TGk0cE9pQkRZVzV1YjNRZ2RYQmtZWFJsSUdSMWNtbHVaeUJoYmlCbGVHbHpkR2x1WnlCemRHRjBaU0IwY21GdWMybDBhVzl1SUNjZ0t5QW5LSE4xWTJnZ1lYTWdkMmwwYUdsdUlHQnlaVzVrWlhKZ0tTNGdVbVZ1WkdWeUlHMWxkR2h2WkhNZ2MyaHZkV3hrSUdKbElHRWdjSFZ5WlNCbWRXNWpkR2x2YmlBbklDc2dKMjltSUhCeWIzQnpJR0Z1WkNCemRHRjBaUzRuTENCallXeHNaWEpPWVcxbEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJwYm5SbGNtNWhiRWx1YzNSaGJtTmxPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxZV04wVlhCa1lYUmxVWFZsZFdVZ1lXeHNiM2R6SUdadmNpQnpkR0YwWlNCMWNHUmhkR1Z6SUhSdklHSmxJSE5qYUdWa2RXeGxaQ0JwYm5SdklHRWdiR0YwWlhKY2JpQXFJSEpsWTI5dVkybHNhV0YwYVc5dUlITjBaWEF1WEc0Z0tpOWNiblpoY2lCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsSUQwZ2UxeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGFHVmphM01nZDJobGRHaGxjaUJ2Y2lCdWIzUWdkR2hwY3lCamIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MElHbHpJRzF2ZFc1MFpXUXVYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSGRsSUhkaGJuUWdkRzhnZEdWemRDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1ltOXZiR1ZoYm4wZ1ZISjFaU0JwWmlCdGIzVnVkR1ZrTENCbVlXeHpaU0J2ZEdobGNuZHBjMlV1WEc0Z0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxTDF4dUlDQnBjMDF2ZFc1MFpXUTZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTa2dlMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCMllYSWdiM2R1WlhJZ1BTQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1ME8xeHVJQ0FnSUNBZ2FXWWdLRzkzYm1WeUlDRTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0c5M2JtVnlMbDkzWVhKdVpXUkJZbTkxZEZKbFpuTkpibEpsYm1SbGNpd2dKeVZ6SUdseklHRmpZMlZ6YzJsdVp5QnBjMDF2ZFc1MFpXUWdhVzV6YVdSbElHbDBjeUJ5Wlc1a1pYSW9LU0JtZFc1amRHbHZiaTRnSnlBcklDZHlaVzVrWlhJb0tTQnphRzkxYkdRZ1ltVWdZU0J3ZFhKbElHWjFibU4wYVc5dUlHOW1JSEJ5YjNCeklHRnVaQ0J6ZEdGMFpTNGdTWFFnYzJodmRXeGtJQ2NnS3lBbmJtVjJaWElnWVdOalpYTnpJSE52YldWMGFHbHVaeUIwYUdGMElISmxjWFZwY21WeklITjBZV3hsSUdSaGRHRWdabkp2YlNCMGFHVWdjSEpsZG1sdmRYTWdKeUFySUNkeVpXNWtaWElzSUhOMVkyZ2dZWE1nY21WbWN5NGdUVzkyWlNCMGFHbHpJR3h2WjJsaklIUnZJR052YlhCdmJtVnVkRVJwWkUxdmRXNTBJR0Z1WkNBbklDc2dKMk52YlhCdmJtVnVkRVJwWkZWd1pHRjBaU0JwYm5OMFpXRmtMaWNzSUc5M2JtVnlMbWRsZEU1aGJXVW9LU0I4ZkNBblFTQmpiMjF3YjI1bGJuUW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ2IzZHVaWEl1WDNkaGNtNWxaRUZpYjNWMFVtVm1jMGx1VW1WdVpHVnlJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVZ1BTQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0xtZGxkQ2h3ZFdKc2FXTkpibk4wWVc1alpTazdYRzRnSUNBZ2FXWWdLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJQzh2SUVSMWNtbHVaeUJqYjIxd2IyNWxiblJYYVd4c1RXOTFiblFnWVc1a0lISmxibVJsY2lCMGFHbHpJSGRwYkd3Z2MzUnBiR3dnWW1VZ2JuVnNiQ0JpZFhRZ1lXWjBaWEpjYmlBZ0lDQWdJQzh2SUhSb1lYUWdkMmxzYkNCaGJIZGhlWE1nY21WdVpHVnlJSFJ2SUhOdmJXVjBhR2x1Wnk0Z1FYUWdiR1ZoYzNRZ1ptOXlJRzV2ZHk0Z1UyOGdkMlVnWTJGdUlIVnpaVnh1SUNBZ0lDQWdMeThnZEdocGN5Qm9ZV05yTGx4dUlDQWdJQ0FnY21WMGRYSnVJQ0VoYVc1MFpYSnVZV3hKYm5OMFlXNWpaUzVmY21WdVpHVnlaV1JEYjIxd2IyNWxiblE3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVWdWNYVmxkV1VnWVNCallXeHNZbUZqYXlCMGFHRjBJSGRwYkd3Z1ltVWdaWGhsWTNWMFpXUWdZV1owWlhJZ1lXeHNJSFJvWlNCd1pXNWthVzVuSUhWd1pHRjBaWE5jYmlBZ0lDb2dhR0YyWlNCd2NtOWpaWE56WldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklIVnpaU0JoY3lCZ2RHaHBjMkFnWTI5dWRHVjRkQzVjYmlBZ0lDb2dRSEJoY21GdElIcy9ablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJRU5oYkd4bFpDQmhablJsY2lCemRHRjBaU0JwY3lCMWNHUmhkR1ZrTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZEWVd4c1ltRmphem9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJQ0VvZEhsd1pXOW1JR05oYkd4aVlXTnJJRDA5UFNBblpuVnVZM1JwYjI0bktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkbGJuRjFaWFZsUTJGc2JHSmhZMnNvTGk0dUtUb2dXVzkxSUdOaGJHeGxaQ0JnYzJWMFVISnZjSE5nTENCZ2NtVndiR0ZqWlZCeWIzQnpZQ3dnSnlBcklDZGdjMlYwVTNSaGRHVmdMQ0JnY21Wd2JHRmpaVk4wWVhSbFlDd2diM0lnWUdadmNtTmxWWEJrWVhSbFlDQjNhWFJvSUdFZ1kyRnNiR0poWTJzZ2RHaGhkQ0FuSUNzZ0oybHpibHhjSjNRZ1kyRnNiR0ZpYkdVdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSFpoY2lCcGJuUmxjbTVoYkVsdWMzUmhibU5sSUQwZ1oyVjBTVzUwWlhKdVlXeEpibk4wWVc1alpWSmxZV1I1Um05eVZYQmtZWFJsS0hCMVlteHBZMGx1YzNSaGJtTmxLVHRjYmx4dUlDQWdJQzh2SUZCeVpYWnBiM1Z6YkhrZ2QyVWdkMjkxYkdRZ2RHaHliM2NnWVc0Z1pYSnliM0lnYVdZZ2QyVWdaR2xrYmlkMElHaGhkbVVnWVc0Z2FXNTBaWEp1WVd4Y2JpQWdJQ0F2THlCcGJuTjBZVzVqWlM0Z1UybHVZMlVnZDJVZ2QyRnVkQ0IwYnlCdFlXdGxJR2wwSUdFZ2JtOHRiM0FnYVc1emRHVmhaQ3dnZDJVZ2JXbHljbTl5SUhSb1pTQnpZVzFsWEc0Z0lDQWdMeThnWW1Wb1lYWnBiM0lnZDJVZ2FHRjJaU0JwYmlCdmRHaGxjaUJsYm5GMVpYVmxLaUJ0WlhSb2IyUnpMbHh1SUNBZ0lDOHZJRmRsSUdGc2MyOGdibVZsWkNCMGJ5QnBaMjV2Y21VZ1kyRnNiR0poWTJ0eklHbHVJR052YlhCdmJtVnVkRmRwYkd4TmIzVnVkQzRnVTJWbFhHNGdJQ0FnTHk4Z1pXNXhkV1YxWlZWd1pHRjBaWE11WEc0Z0lDQWdhV1lnS0NGcGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9hVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5a2dlMXh1SUNBZ0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5NXdkWE5vS0dOaGJHeGlZV05yS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5QTlJRnRqWVd4c1ltRmphMTA3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJRlJQUkU4NklGUm9aU0JqWVd4c1ltRmpheUJvWlhKbElHbHpJR2xuYm05eVpXUWdkMmhsYmlCelpYUlRkR0YwWlNCcGN5QmpZV3hzWldRZ1puSnZiVnh1SUNBZ0lDOHZJR052YlhCdmJtVnVkRmRwYkd4TmIzVnVkQzRnUldsMGFHVnlJR1pwZUNCcGRDQnZjaUJrYVhOaGJHeHZkeUJrYjJsdVp5QnpieUJqYjIxd2JHVjBaV3g1SUdsdVhHNGdJQ0FnTHk4Z1ptRjJiM0lnYjJZZ1oyVjBTVzVwZEdsaGJGTjBZWFJsTGlCQmJIUmxjbTVoZEdsMlpXeDVMQ0IzWlNCallXNGdaR2x6WVd4c2IzZGNiaUFnSUNBdkx5QmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUWdaSFZ5YVc1bklITmxjblpsY2kxemFXUmxJSEpsYm1SbGNtbHVaeTVjYmlBZ0lDQmxibkYxWlhWbFZYQmtZWFJsS0dsdWRHVnlibUZzU1c1emRHRnVZMlVwTzF4dUlDQjlMRnh1WEc0Z0lHVnVjWFZsZFdWRFlXeHNZbUZqYTBsdWRHVnlibUZzT2lCbWRXNWpkR2x2YmlBb2FXNTBaWEp1WVd4SmJuTjBZVzVqWlN3Z1kyRnNiR0poWTJzcElIdGNiaUFnSUNBaEtIUjVjR1Z2WmlCallXeHNZbUZqYXlBOVBUMGdKMloxYm1OMGFXOXVKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5aVzV4ZFdWMVpVTmhiR3hpWVdOcktDNHVMaWs2SUZsdmRTQmpZV3hzWldRZ1lITmxkRkJ5YjNCellDd2dZSEpsY0d4aFkyVlFjbTl3YzJBc0lDY2dLeUFuWUhObGRGTjBZWFJsWUN3Z1lISmxjR3hoWTJWVGRHRjBaV0FzSUc5eUlHQm1iM0pqWlZWd1pHRjBaV0FnZDJsMGFDQmhJR05oYkd4aVlXTnJJSFJvWVhRZ0p5QXJJQ2RwYzI1Y1hDZDBJR05oYkd4aFlteGxMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9hVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5a2dlMXh1SUNBZ0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5NXdkWE5vS0dOaGJHeGlZV05yS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowTmhiR3hpWVdOcmN5QTlJRnRqWVd4c1ltRmphMTA3WEc0Z0lDQWdmVnh1SUNBZ0lHVnVjWFZsZFdWVmNHUmhkR1VvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFWnZjbU5sY3lCaGJpQjFjR1JoZEdVdUlGUm9hWE1nYzJodmRXeGtJRzl1YkhrZ1ltVWdhVzUyYjJ0bFpDQjNhR1Z1SUdsMElHbHpJR3R1YjNkdUlIZHBkR2hjYmlBZ0lDb2dZMlZ5ZEdGcGJuUjVJSFJvWVhRZ2QyVWdZWEpsSUNvcWJtOTBLaW9nYVc0Z1lTQkVUMDBnZEhKaGJuTmhZM1JwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRmx2ZFNCdFlYa2dkMkZ1ZENCMGJ5QmpZV3hzSUhSb2FYTWdkMmhsYmlCNWIzVWdhMjV2ZHlCMGFHRjBJSE52YldVZ1pHVmxjR1Z5SUdGemNHVmpkQ0J2WmlCMGFHVmNiaUFnSUNvZ1kyOXRjRzl1Wlc1MEozTWdjM1JoZEdVZ2FHRnpJR05vWVc1blpXUWdZblYwSUdCelpYUlRkR0YwWldBZ2QyRnpJRzV2ZENCallXeHNaV1F1WEc0Z0lDQXFYRzRnSUNBcUlGUm9hWE1nZDJsc2JDQnViM1FnYVc1MmIydGxJR0J6YUc5MWJHUkRiMjF3YjI1bGJuUlZjR1JoZEdWZ0xDQmlkWFFnYVhRZ2QybHNiQ0JwYm5admEyVmNiaUFnSUNvZ1lHTnZiWEJ2Ym1WdWRGZHBiR3hWY0dSaGRHVmdJR0Z1WkNCZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbFlDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnNZWE56ZlNCd2RXSnNhV05KYm5OMFlXNWpaU0JVYUdVZ2FXNXpkR0Z1WTJVZ2RHaGhkQ0J6YUc5MWJHUWdjbVZ5Wlc1a1pYSXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdaVzV4ZFdWMVpVWnZjbU5sVlhCa1lYUmxPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQjJZWElnYVc1MFpYSnVZV3hKYm5OMFlXNWpaU0E5SUdkbGRFbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJWU1pXRmtlVVp2Y2xWd1pHRjBaU2h3ZFdKc2FXTkpibk4wWVc1alpTd2dKMlp2Y21ObFZYQmtZWFJsSnlrN1hHNWNiaUFnSUNCcFppQW9JV2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCcGJuUmxjbTVoYkVsdWMzUmhibU5sTGw5d1pXNWthVzVuUm05eVkyVlZjR1JoZEdVZ1BTQjBjblZsTzF4dVhHNGdJQ0FnWlc1eGRXVjFaVlZ3WkdGMFpTaHBiblJsY201aGJFbHVjM1JoYm1ObEtUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1Wd2JHRmpaWE1nWVd4c0lHOW1JSFJvWlNCemRHRjBaUzRnUVd4M1lYbHpJSFZ6WlNCMGFHbHpJRzl5SUdCelpYUlRkR0YwWldBZ2RHOGdiWFYwWVhSbElITjBZWFJsTGx4dUlDQWdLaUJaYjNVZ2MyaHZkV3hrSUhSeVpXRjBJR0IwYUdsekxuTjBZWFJsWUNCaGN5QnBiVzExZEdGaWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUZSb1pYSmxJR2x6SUc1dklHZDFZWEpoYm5SbFpTQjBhR0YwSUdCMGFHbHpMbk4wWVhSbFlDQjNhV3hzSUdKbElHbHRiV1ZrYVdGMFpXeDVJSFZ3WkdGMFpXUXNJSE52WEc0Z0lDQXFJR0ZqWTJWemMybHVaeUJnZEdocGN5NXpkR0YwWldBZ1lXWjBaWElnWTJGc2JHbHVaeUIwYUdseklHMWxkR2h2WkNCdFlYa2djbVYwZFhKdUlIUm9aU0J2YkdRZ2RtRnNkV1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJvWVhRZ2MyaHZkV3hrSUhKbGNtVnVaR1Z5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdZMjl0Y0d4bGRHVlRkR0YwWlNCT1pYaDBJSE4wWVhSbExseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWU1pYQnNZV05sVTNSaGRHVTZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2dZMjl0Y0d4bGRHVlRkR0YwWlNrZ2UxeHVJQ0FnSUhaaGNpQnBiblJsY201aGJFbHVjM1JoYm1ObElEMGdaMlYwU1c1MFpYSnVZV3hKYm5OMFlXNWpaVkpsWVdSNVJtOXlWWEJrWVhSbEtIQjFZbXhwWTBsdWMzUmhibU5sTENBbmNtVndiR0ZqWlZOMFlYUmxKeWs3WEc1Y2JpQWdJQ0JwWmlBb0lXbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVcElIdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwYm5SbGNtNWhiRWx1YzNSaGJtTmxMbDl3Wlc1a2FXNW5VM1JoZEdWUmRXVjFaU0E5SUZ0amIyMXdiR1YwWlZOMFlYUmxYVHRjYmlBZ0lDQnBiblJsY201aGJFbHVjM1JoYm1ObExsOXdaVzVrYVc1blVtVndiR0ZqWlZOMFlYUmxJRDBnZEhKMVpUdGNibHh1SUNBZ0lHVnVjWFZsZFdWVmNHUmhkR1VvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkSE1nWVNCemRXSnpaWFFnYjJZZ2RHaGxJSE4wWVhSbExpQlVhR2x6SUc5dWJIa2daWGhwYzNSeklHSmxZMkYxYzJVZ1gzQmxibVJwYm1kVGRHRjBaU0JwYzF4dUlDQWdLaUJwYm5SbGNtNWhiQzRnVkdocGN5QndjbTkyYVdSbGN5QmhJRzFsY21kcGJtY2djM1J5WVhSbFoza2dkR2hoZENCcGN5QnViM1FnWVhaaGFXeGhZbXhsSUhSdklHUmxaWEJjYmlBZ0lDb2djSEp2Y0dWeWRHbGxjeUIzYUdsamFDQnBjeUJqYjI1bWRYTnBibWN1SUZSUFJFODZJRVY0Y0c5elpTQndaVzVrYVc1blUzUmhkR1VnYjNJZ1pHOXVKM1FnZFhObElHbDBYRzRnSUNBcUlHUjFjbWx1WnlCMGFHVWdiV1Z5WjJVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSb1lYUWdjMmh2ZFd4a0lISmxjbVZ1WkdWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0dGeWRHbGhiRk4wWVhSbElFNWxlSFFnY0dGeWRHbGhiQ0J6ZEdGMFpTQjBieUJpWlNCdFpYSm5aV1FnZDJsMGFDQnpkR0YwWlM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsVTJWMFUzUmhkR1U2SUdaMWJtTjBhVzl1SUNod2RXSnNhV05KYm5OMFlXNWpaU3dnY0dGeWRHbGhiRk4wWVhSbEtTQjdYRzRnSUNBZ2RtRnlJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVWdQU0JuWlhSSmJuUmxjbTVoYkVsdWMzUmhibU5sVW1WaFpIbEdiM0pWY0dSaGRHVW9jSFZpYkdsalNXNXpkR0Z1WTJVc0lDZHpaWFJUZEdGMFpTY3BPMXh1WEc0Z0lDQWdhV1lnS0NGcGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhGMVpYVmxJRDBnYVc1MFpYSnVZV3hKYm5OMFlXNWpaUzVmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VnZkh3Z0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzQmxibVJwYm1kVGRHRjBaVkYxWlhWbElEMGdXMTBwTzF4dUlDQWdJSEYxWlhWbExuQjFjMmdvY0dGeWRHbGhiRk4wWVhSbEtUdGNibHh1SUNBZ0lHVnVjWFZsZFdWVmNHUmhkR1VvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTmxkSE1nWVNCemRXSnpaWFFnYjJZZ2RHaGxJSEJ5YjNCekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyeGhjM045SUhCMVlteHBZMGx1YzNSaGJtTmxJRlJvWlNCcGJuTjBZVzVqWlNCMGFHRjBJSE5vYjNWc1pDQnlaWEpsYm1SbGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCaGNuUnBZV3hRY205d2N5QlRkV0p6WlhRZ2IyWWdkR2hsSUc1bGVIUWdjSEp2Y0hNdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pXNXhkV1YxWlZObGRGQnliM0J6T2lCbWRXNWpkR2x2YmlBb2NIVmliR2xqU1c1emRHRnVZMlVzSUhCaGNuUnBZV3hRY205d2N5a2dlMXh1SUNBZ0lIWmhjaUJwYm5SbGNtNWhiRWx1YzNSaGJtTmxJRDBnWjJWMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlZKbFlXUjVSbTl5VlhCa1lYUmxLSEIxWW14cFkwbHVjM1JoYm1ObExDQW5jMlYwVUhKdmNITW5LVHRjYmlBZ0lDQnBaaUFvSVdsdWRHVnlibUZzU1c1emRHRnVZMlVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzRnSUNBZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlM1bGJuRjFaWFZsVTJWMFVISnZjSE5KYm5SbGNtNWhiQ2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxMQ0J3WVhKMGFXRnNVSEp2Y0hNcE8xeHVJQ0I5TEZ4dVhHNGdJR1Z1Y1hWbGRXVlRaWFJRY205d2MwbHVkR1Z5Ym1Gc09pQm1kVzVqZEdsdmJpQW9hVzUwWlhKdVlXeEpibk4wWVc1alpTd2djR0Z5ZEdsaGJGQnliM0J6S1NCN1hHNGdJQ0FnZG1GeUlIUnZjRXhsZG1Wc1YzSmhjSEJsY2lBOUlHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgzUnZjRXhsZG1Wc1YzSmhjSEJsY2p0Y2JpQWdJQ0FoZEc5d1RHVjJaV3hYY21Gd2NHVnlJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozTmxkRkJ5YjNCektDNHVMaWs2SUZsdmRTQmpZV3hzWldRZ1lITmxkRkJ5YjNCellDQnZiaUJoSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBJSGRwZEdnZ1lTQndZWEpsYm5RdUlGUm9hWE1nYVhNZ1lXNGdZVzUwYVMxd1lYUjBaWEp1SUhOcGJtTmxJSEJ5YjNCeklIZHBiR3dnSnlBcklDZG5aWFFnY21WaFkzUnBkbVZzZVNCMWNHUmhkR1ZrSUhkb1pXNGdjbVZ1WkdWeVpXUXVJRWx1YzNSbFlXUXNJR05vWVc1blpTQjBhR1VnYjNkdVpYSmNYQ2R6SUNjZ0t5QW5ZSEpsYm1SbGNtQWdiV1YwYUc5a0lIUnZJSEJoYzNNZ2RHaGxJR052Y25KbFkzUWdkbUZzZFdVZ1lYTWdjSEp2Y0hNZ2RHOGdkR2hsSUdOdmJYQnZibVZ1ZENBbklDc2dKM2RvWlhKbElHbDBJR2x6SUdOeVpXRjBaV1F1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdMeThnVFdWeVoyVWdkMmwwYUNCMGFHVWdjR1Z1WkdsdVp5QmxiR1Z0Wlc1MElHbG1JR2wwSUdWNGFYTjBjeXdnYjNSb1pYSjNhWE5sSUhkcGRHZ2daWGhwYzNScGJtZGNiaUFnSUNBdkx5QmxiR1Z0Wlc1MElIQnliM0J6TGx4dUlDQWdJSFpoY2lCM2NtRndSV3hsYldWdWRDQTlJSFJ2Y0V4bGRtVnNWM0poY0hCbGNpNWZjR1Z1WkdsdVowVnNaVzFsYm5RZ2ZId2dkRzl3VEdWMlpXeFhjbUZ3Y0dWeUxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZER0Y2JpQWdJQ0IyWVhJZ1pXeGxiV1Z1ZENBOUlIZHlZWEJGYkdWdFpXNTBMbkJ5YjNCek8xeHVJQ0FnSUhaaGNpQndjbTl3Y3lBOUlHRnpjMmxuYmloN2ZTd2daV3hsYldWdWRDNXdjbTl3Y3l3Z2NHRnlkR2xoYkZCeWIzQnpLVHRjYmlBZ0lDQjBiM0JNWlhabGJGZHlZWEJ3WlhJdVgzQmxibVJwYm1kRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU5zYjI1bFFXNWtVbVZ3YkdGalpWQnliM0J6S0hkeVlYQkZiR1Z0Wlc1MExDQlNaV0ZqZEVWc1pXMWxiblF1WTJ4dmJtVkJibVJTWlhCc1lXTmxVSEp2Y0hNb1pXeGxiV1Z1ZEN3Z2NISnZjSE1wS1R0Y2JseHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9kRzl3VEdWMlpXeFhjbUZ3Y0dWeUtUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1Wd2JHRmpaWE1nWVd4c0lHOW1JSFJvWlNCd2NtOXdjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU5zWVhOemZTQndkV0pzYVdOSmJuTjBZVzVqWlNCVWFHVWdhVzV6ZEdGdVkyVWdkR2hoZENCemFHOTFiR1FnY21WeVpXNWtaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQndjbTl3Y3lCT1pYY2djSEp2Y0hNdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pXNXhkV1YxWlZKbGNHeGhZMlZRY205d2N6b2dablZ1WTNScGIyNGdLSEIxWW14cFkwbHVjM1JoYm1ObExDQndjbTl3Y3lrZ2UxeHVJQ0FnSUhaaGNpQnBiblJsY201aGJFbHVjM1JoYm1ObElEMGdaMlYwU1c1MFpYSnVZV3hKYm5OMFlXNWpaVkpsWVdSNVJtOXlWWEJrWVhSbEtIQjFZbXhwWTBsdWMzUmhibU5sTENBbmNtVndiR0ZqWlZCeWIzQnpKeWs3WEc0Z0lDQWdhV1lnS0NGcGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNBZ0lGSmxZV04wVlhCa1lYUmxVWFZsZFdVdVpXNXhkV1YxWlZKbGNHeGhZMlZRY205d2MwbHVkR1Z5Ym1Gc0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVc0lIQnliM0J6S1R0Y2JpQWdmU3hjYmx4dUlDQmxibkYxWlhWbFVtVndiR0ZqWlZCeWIzQnpTVzUwWlhKdVlXdzZJR1oxYm1OMGFXOXVJQ2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxMQ0J3Y205d2N5a2dlMXh1SUNBZ0lIWmhjaUIwYjNCTVpYWmxiRmR5WVhCd1pYSWdQU0JwYm5SbGNtNWhiRWx1YzNSaGJtTmxMbDkwYjNCTVpYWmxiRmR5WVhCd1pYSTdYRzRnSUNBZ0lYUnZjRXhsZG1Wc1YzSmhjSEJsY2lBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R5WlhCc1lXTmxVSEp2Y0hNb0xpNHVLVG9nV1c5MUlHTmhiR3hsWkNCZ2NtVndiR0ZqWlZCeWIzQnpZQ0J2YmlCaElDY2dLeUFuWTI5dGNHOXVaVzUwSUhkcGRHZ2dZU0J3WVhKbGJuUXVJRlJvYVhNZ2FYTWdZVzRnWVc1MGFTMXdZWFIwWlhKdUlITnBibU5sSUhCeWIzQnpJSGRwYkd3Z0p5QXJJQ2RuWlhRZ2NtVmhZM1JwZG1Wc2VTQjFjR1JoZEdWa0lIZG9aVzRnY21WdVpHVnlaV1F1SUVsdWMzUmxZV1FzSUdOb1lXNW5aU0IwYUdVZ2IzZHVaWEpjWENkeklDY2dLeUFuWUhKbGJtUmxjbUFnYldWMGFHOWtJSFJ2SUhCaGMzTWdkR2hsSUdOdmNuSmxZM1FnZG1Gc2RXVWdZWE1nY0hKdmNITWdkRzhnZEdobElHTnZiWEJ2Ym1WdWRDQW5JQ3NnSjNkb1pYSmxJR2wwSUdseklHTnlaV0YwWldRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnTHk4Z1RXVnlaMlVnZDJsMGFDQjBhR1VnY0dWdVpHbHVaeUJsYkdWdFpXNTBJR2xtSUdsMElHVjRhWE4wY3l3Z2IzUm9aWEozYVhObElIZHBkR2dnWlhocGMzUnBibWRjYmlBZ0lDQXZMeUJsYkdWdFpXNTBJSEJ5YjNCekxseHVJQ0FnSUhaaGNpQjNjbUZ3Uld4bGJXVnVkQ0E5SUhSdmNFeGxkbVZzVjNKaGNIQmxjaTVmY0dWdVpHbHVaMFZzWlcxbGJuUWdmSHdnZEc5d1RHVjJaV3hYY21Gd2NHVnlMbDlqZFhKeVpXNTBSV3hsYldWdWREdGNiaUFnSUNCMllYSWdaV3hsYldWdWRDQTlJSGR5WVhCRmJHVnRaVzUwTG5CeWIzQnpPMXh1SUNBZ0lIUnZjRXhsZG1Wc1YzSmhjSEJsY2k1ZmNHVnVaR2x1WjBWc1pXMWxiblFnUFNCU1pXRmpkRVZzWlcxbGJuUXVZMnh2Ym1WQmJtUlNaWEJzWVdObFVISnZjSE1vZDNKaGNFVnNaVzFsYm5Rc0lGSmxZV04wUld4bGJXVnVkQzVqYkc5dVpVRnVaRkpsY0d4aFkyVlFjbTl3Y3lobGJHVnRaVzUwTENCd2NtOXdjeWtwTzF4dVhHNGdJQ0FnWlc1eGRXVjFaVlZ3WkdGMFpTaDBiM0JNWlhabGJGZHlZWEJ3WlhJcE8xeHVJQ0I5TEZ4dVhHNGdJR1Z1Y1hWbGRXVkZiR1Z0Wlc1MFNXNTBaWEp1WVd3NklHWjFibU4wYVc5dUlDaHBiblJsY201aGJFbHVjM1JoYm1ObExDQnVaWGRGYkdWdFpXNTBLU0I3WEc0Z0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVowVnNaVzFsYm5RZ1BTQnVaWGRGYkdWdFpXNTBPMXh1SUNBZ0lHVnVjWFZsZFdWVmNHUmhkR1VvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU2s3WEc0Z0lIMWNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbE95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFVwZGF0ZXNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBkaXJ0eUNvbXBvbmVudHMgPSBbXTtcbnZhciBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG52YXIgYXNhcEVucXVldWVkID0gZmFsc2U7XG5cbnZhciBiYXRjaGluZ1N0cmF0ZWd5ID0gbnVsbDtcblxuZnVuY3Rpb24gZW5zdXJlSW5qZWN0ZWQoKSB7XG4gICEoUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gJiYgYmF0Y2hpbmdTdHJhdGVneSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IGluamVjdCBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcyBhbmQgYmF0Y2hpbmcgJyArICdzdHJhdGVneScpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxudmFyIE5FU1RFRF9VUERBVEVTID0ge1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoO1xuICB9LFxuICBjbG9zZTogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCAhPT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gQWRkaXRpb25hbCB1cGRhdGVzIHdlcmUgZW5xdWV1ZWQgYnkgY29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJzIG9yXG4gICAgICAvLyBzaW1pbGFyOyBiZWZvcmUgb3VyIG93biBVUERBVEVfUVVFVUVJTkcgd3JhcHBlciBjbG9zZXMsIHdlIHdhbnQgdG8gcnVuXG4gICAgICAvLyB0aGVzZSBuZXcgdXBkYXRlcyBzbyB0aGF0IGlmIEEncyBjb21wb25lbnREaWRVcGRhdGUgY2FsbHMgc2V0U3RhdGUgb25cbiAgICAgIC8vIEIsIEIgd2lsbCB1cGRhdGUgYmVmb3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRlciBwcm92aWRlZCB3aGVuIGNhbGxpbmdcbiAgICAgIC8vIHNldFN0YXRlLlxuICAgICAgZGlydHlDb21wb25lbnRzLnNwbGljZSgwLCB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCk7XG4gICAgICBmbHVzaEJhdGNoZWRVcGRhdGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpcnR5Q29tcG9uZW50cy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfVxufTtcblxudmFyIFVQREFURV9RVUVVRUlORyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpO1xuICB9LFxuICBjbG9zZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKTtcbiAgfVxufTtcblxudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW05FU1RFRF9VUERBVEVTLCBVUERBVEVfUVVFVUVJTkddO1xuXG5mdW5jdGlvbiBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gbnVsbDtcbiAgdGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbiAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCggLyogZm9yY2VIVE1MICovZmFsc2UpO1xufVxuXG5hc3NpZ24oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLk1peGluLCB7XG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gbnVsbDtcbiAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKTtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBudWxsO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IG51bGw7XG4gIH0sXG5cbiAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEpIHtcbiAgICAvLyBFc3NlbnRpYWxseSBjYWxscyBgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtKG1ldGhvZCwgc2NvcGUsIGEpYFxuICAgIC8vIHdpdGggdGhpcyB0cmFuc2FjdGlvbidzIHdyYXBwZXJzIGFyb3VuZCBpdC5cbiAgICByZXR1cm4gVHJhbnNhY3Rpb24uTWl4aW4ucGVyZm9ybS5jYWxsKHRoaXMsIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSwgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgbWV0aG9kLCBzY29wZSwgYSk7XG4gIH1cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbik7XG5cbmZ1bmN0aW9uIGJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG4gIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpO1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBtb3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS5cbiAqL1xuZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7XG4gIHJldHVybiBjMS5fbW91bnRPcmRlciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5mdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFuc2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3RoO1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cXCdzIHN0b3JlZCBkaXJ0eS1jb21wb25lbnRzIGxlbmd0aCAoJXMpIHRvICcgKyAnbWF0Y2ggZGlydHktY29tcG9uZW50cyBhcnJheSBsZW5ndGggKCVzKS4nLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3RcbiAgLy8gYWx3YXlzIC0tIHNlZSBzaG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29uY2lsZVxuICAvLyB0aGVtIGJlZm9yZSB0aGVpciBjaGlsZHJlbiBieSBzb3J0aW5nIHRoZSBhcnJheS5cbiAgZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBhcmF0b3IpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAvLyBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBseSwgaXQgd2lsbCBzdGlsbFxuICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUgdGhhdCBpdCBoYXMgY2xlYXJlZCBpdHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kXG4gICAgLy8gdGhhdCBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaXMgYSBub29wLlxuICAgIHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVudHNbaV07XG5cbiAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBlbnF1ZXVlIGFueSBuZXcgdXBkYXRlcywgd2VcbiAgICAvLyBzaG91bGRuJ3QgZXhlY3V0ZSB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBzb1xuICAgIC8vIHN0YXNoIHRoZSBjYWxsYmFja3MgZmlyc3RcbiAgICB2YXIgY2FsbGJhY2tzID0gY29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzO1xuICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cbiAgICBSZWFjdFJlY29uY2lsZXIucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KGNvbXBvbmVudCwgdHJhbnNhY3Rpb24ucmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuXG4gICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFja3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrc1tqXSwgY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgZmx1c2hCYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbidzIHdyYXBwZXJzIHdpbGwgY2xlYXIgdGhlIGRpcnR5Q29tcG9uZW50c1xuICAvLyBhcnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRlcyBlbnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLixcbiAgLy8gY29tcG9uZW50RGlkVXBkYXRlKSBidXQgd2UgbmVlZCB0byBjaGVjayBoZXJlIHRvbyBpbiBvcmRlciB0byBjYXRjaFxuICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgYXNhcCBjYWxscy5cbiAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7XG4gICAgaWYgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCk7XG4gICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFuc2FjdGlvbik7XG4gICAgICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuICAgIH1cblxuICAgIGlmIChhc2FwRW5xdWV1ZWQpIHtcbiAgICAgIGFzYXBFbnF1ZXVlZCA9IGZhbHNlO1xuICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVldWU7XG4gICAgICBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gICAgICBxdWV1ZS5ub3RpZnlBbGwoKTtcbiAgICAgIENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7XG4gICAgfVxuICB9XG59O1xuZmx1c2hCYXRjaGVkVXBkYXRlcyA9IFJlYWN0UGVyZi5tZWFzdXJlKCdSZWFjdFVwZGF0ZXMnLCAnZmx1c2hCYXRjaGVkVXBkYXRlcycsIGZsdXNoQmF0Y2hlZFVwZGF0ZXMpO1xuXG4vKipcbiAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRpbmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYVxuICogbGlzdCBvZiBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSByZXJlbmRlciBvY2N1cnMuXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG5cbiAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRvcC1sZXZlbCB1cGRhdGVcbiAgLy8gZnVuY3Rpb24sIGxpa2Ugc2V0UHJvcHMsIHNldFN0YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG4gIC8vIGRlc3RydWN0aW9uIG9mIHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQgaW4gUmVhY3RNb3VudC4pXG5cbiAgaWYgKCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBjb21wb25lbnQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG59XG5cbi8qKlxuICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xlLiBUaHJvd3NcbiAqIGlmIG5vIHVwZGF0ZXMgYXJlIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuXG4gKi9cbmZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEgY29udGV4dCB3aGVyZScgKyAndXBkYXRlcyBhcmUgbm90IGJlaW5nIGJhdGNoZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrLCBjb250ZXh0KTtcbiAgYXNhcEVucXVldWVkID0gdHJ1ZTtcbn1cblxudmFyIFJlYWN0VXBkYXRlc0luamVjdGlvbiA9IHtcbiAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uIChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xuICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChfYmF0Y2hpbmdTdHJhdGVneSkge1xuICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgYmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0cmF0ZWd5O1xuICB9XG59O1xuXG52YXIgUmVhY3RVcGRhdGVzID0ge1xuICAvKipcbiAgICogUmVhY3QgcmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9wZXJ0eSBpbiBvcmRlclxuICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxsLFxuXG4gIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcyxcbiAgZW5xdWV1ZVVwZGF0ZTogZW5xdWV1ZVVwZGF0ZSxcbiAgZmx1c2hCYXRjaGVkVXBkYXRlczogZmx1c2hCYXRjaGVkVXBkYXRlcyxcbiAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sXG4gIGFzYXA6IGFzYXBcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5U1pXRmpkRlZ3WkdGMFpYTXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSVmNHUmhkR1Z6WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1EyRnNiR0poWTJ0UmRXVjFaU0E5SUhKbGNYVnBjbVVvSnk0dlEyRnNiR0poWTJ0UmRXVjFaU2NwTzF4dWRtRnlJRkJ2YjJ4bFpFTnNZWE56SUQwZ2NtVnhkV2x5WlNnbkxpOVFiMjlzWldSRGJHRnpjeWNwTzF4dWRtRnlJRkpsWVdOMFVHVnlaaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRWlhKbUp5azdYRzUyWVhJZ1VtVmhZM1JTWldOdmJtTnBiR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZKbFkyOXVZMmxzWlhJbktUdGNiblpoY2lCVWNtRnVjMkZqZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2VkhKaGJuTmhZM1JwYjI0bktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc1MllYSWdaR2x5ZEhsRGIyMXdiMjVsYm5SeklEMGdXMTA3WEc1MllYSWdZWE5oY0VOaGJHeGlZV05yVVhWbGRXVWdQU0JEWVd4c1ltRmphMUYxWlhWbExtZGxkRkJ2YjJ4bFpDZ3BPMXh1ZG1GeUlHRnpZWEJGYm5GMVpYVmxaQ0E5SUdaaGJITmxPMXh1WEc1MllYSWdZbUYwWTJocGJtZFRkSEpoZEdWbmVTQTlJRzUxYkd3N1hHNWNibVoxYm1OMGFXOXVJR1Z1YzNWeVpVbHVhbVZqZEdWa0tDa2dlMXh1SUNBaEtGSmxZV04wVlhCa1lYUmxjeTVTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVJQ1ltSUdKaGRHTm9hVzVuVTNSeVlYUmxaM2twSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFZYQmtZWFJsY3pvZ2JYVnpkQ0JwYm1wbFkzUWdZU0J5WldOdmJtTnBiR1VnZEhKaGJuTmhZM1JwYjI0Z1kyeGhjM01nWVc1a0lHSmhkR05vYVc1bklDY2dLeUFuYzNSeVlYUmxaM2tuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzU5WEc1Y2JuWmhjaUJPUlZOVVJVUmZWVkJFUVZSRlV5QTlJSHRjYmlBZ2FXNXBkR2xoYkdsNlpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFJvYVhNdVpHbHlkSGxEYjIxd2IyNWxiblJ6VEdWdVozUm9JRDBnWkdseWRIbERiMjF3YjI1bGJuUnpMbXhsYm1kMGFEdGNiaUFnZlN4Y2JpQWdZMnh2YzJVNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWthWEowZVVOdmJYQnZibVZ1ZEhOTVpXNW5kR2dnSVQwOUlHUnBjblI1UTI5dGNHOXVaVzUwY3k1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUM4dklFRmtaR2wwYVc5dVlXd2dkWEJrWVhSbGN5QjNaWEpsSUdWdWNYVmxkV1ZrSUdKNUlHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpTQm9ZVzVrYkdWeWN5QnZjbHh1SUNBZ0lDQWdMeThnYzJsdGFXeGhjanNnWW1WbWIzSmxJRzkxY2lCdmQyNGdWVkJFUVZSRlgxRlZSVlZGU1U1SElIZHlZWEJ3WlhJZ1kyeHZjMlZ6TENCM1pTQjNZVzUwSUhSdklISjFibHh1SUNBZ0lDQWdMeThnZEdobGMyVWdibVYzSUhWd1pHRjBaWE1nYzI4Z2RHaGhkQ0JwWmlCQkozTWdZMjl0Y0c5dVpXNTBSR2xrVlhCa1lYUmxJR05oYkd4eklITmxkRk4wWVhSbElHOXVYRzRnSUNBZ0lDQXZMeUJDTENCQ0lIZHBiR3dnZFhCa1lYUmxJR0psWm05eVpTQjBhR1VnWTJGc2JHSmhZMnNnUVNkeklIVndaR0YwWlhJZ2NISnZkbWxrWldRZ2QyaGxiaUJqWVd4c2FXNW5YRzRnSUNBZ0lDQXZMeUJ6WlhSVGRHRjBaUzVjYmlBZ0lDQWdJR1JwY25SNVEyOXRjRzl1Wlc1MGN5NXpjR3hwWTJVb01Dd2dkR2hwY3k1a2FYSjBlVU52YlhCdmJtVnVkSE5NWlc1bmRHZ3BPMXh1SUNBZ0lDQWdabXgxYzJoQ1lYUmphR1ZrVlhCa1lYUmxjeWdwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQmthWEowZVVOdmJYQnZibVZ1ZEhNdWJHVnVaM1JvSUQwZ01EdGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNiblpoY2lCVlVFUkJWRVZmVVZWRlZVVkpUa2NnUFNCN1hHNGdJR2x1YVhScFlXeHBlbVU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbU5oYkd4aVlXTnJVWFZsZFdVdWNtVnpaWFFvS1R0Y2JpQWdmU3hjYmlBZ1kyeHZjMlU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbU5oYkd4aVlXTnJVWFZsZFdVdWJtOTBhV1o1UVd4c0tDazdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQlVVa0ZPVTBGRFZFbFBUbDlYVWtGUVVFVlNVeUE5SUZ0T1JWTlVSVVJmVlZCRVFWUkZVeXdnVlZCRVFWUkZYMUZWUlZWRlNVNUhYVHRjYmx4dVpuVnVZM1JwYjI0Z1VtVmhZM1JWY0dSaGRHVnpSbXgxYzJoVWNtRnVjMkZqZEdsdmJpZ3BJSHRjYmlBZ2RHaHBjeTV5WldsdWFYUnBZV3hwZW1WVWNtRnVjMkZqZEdsdmJpZ3BPMXh1SUNCMGFHbHpMbVJwY25SNVEyOXRjRzl1Wlc1MGMweGxibWQwYUNBOUlHNTFiR3c3WEc0Z0lIUm9hWE11WTJGc2JHSmhZMnRSZFdWMVpTQTlJRU5oYkd4aVlXTnJVWFZsZFdVdVoyVjBVRzl2YkdWa0tDazdYRzRnSUhSb2FYTXVjbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjRnUFNCU1pXRmpkRlZ3WkdGMFpYTXVVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJpNW5aWFJRYjI5c1pXUW9JQzhxSUdadmNtTmxTRlJOVENBcUwyWmhiSE5sS1R0Y2JuMWNibHh1WVhOemFXZHVLRkpsWVdOMFZYQmtZWFJsYzBac2RYTm9WSEpoYm5OaFkzUnBiMjR1Y0hKdmRHOTBlWEJsTENCVWNtRnVjMkZqZEdsdmJpNU5hWGhwYml3Z2UxeHVJQ0JuWlhSVWNtRnVjMkZqZEdsdmJsZHlZWEJ3WlhKek9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlGUlNRVTVUUVVOVVNVOU9YMWRTUVZCUVJWSlRPMXh1SUNCOUxGeHVYRzRnSUdSbGMzUnlkV04wYjNJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjBhR2x6TG1ScGNuUjVRMjl0Y0c5dVpXNTBjMHhsYm1kMGFDQTlJRzUxYkd3N1hHNGdJQ0FnUTJGc2JHSmhZMnRSZFdWMVpTNXlaV3hsWVhObEtIUm9hWE11WTJGc2JHSmhZMnRSZFdWMVpTazdYRzRnSUNBZ2RHaHBjeTVqWVd4c1ltRmphMUYxWlhWbElEMGdiblZzYkR0Y2JpQWdJQ0JTWldGamRGVndaR0YwWlhNdVVtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ymk1eVpXeGxZWE5sS0hSb2FYTXVjbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjRwTzF4dUlDQWdJSFJvYVhNdWNtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNGdQU0J1ZFd4c08xeHVJQ0I5TEZ4dVhHNGdJSEJsY21admNtMDZJR1oxYm1OMGFXOXVJQ2h0WlhSb2IyUXNJSE5qYjNCbExDQmhLU0I3WEc0Z0lDQWdMeThnUlhOelpXNTBhV0ZzYkhrZ1kyRnNiSE1nWUhSb2FYTXVjbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjR1Y0dWeVptOXliU2h0WlhSb2IyUXNJSE5qYjNCbExDQmhLV0JjYmlBZ0lDQXZMeUIzYVhSb0lIUm9hWE1nZEhKaGJuTmhZM1JwYjI0bmN5QjNjbUZ3Y0dWeWN5QmhjbTkxYm1RZ2FYUXVYRzRnSUNBZ2NtVjBkWEp1SUZSeVlXNXpZV04wYVc5dUxrMXBlR2x1TG5CbGNtWnZjbTB1WTJGc2JDaDBhR2x6TENCMGFHbHpMbkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1TG5CbGNtWnZjbTBzSUhSb2FYTXVjbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjRzSUcxbGRHaHZaQ3dnYzJOdmNHVXNJR0VwTzF4dUlDQjlYRzU5S1R0Y2JseHVVRzl2YkdWa1EyeGhjM011WVdSa1VHOXZiR2x1WjFSdktGSmxZV04wVlhCa1lYUmxjMFpzZFhOb1ZISmhibk5oWTNScGIyNHBPMXh1WEc1bWRXNWpkR2x2YmlCaVlYUmphR1ZrVlhCa1lYUmxjeWhqWVd4c1ltRmpheXdnWVN3Z1lpd2dZeXdnWkN3Z1pTa2dlMXh1SUNCbGJuTjFjbVZKYm1wbFkzUmxaQ2dwTzF4dUlDQmlZWFJqYUdsdVoxTjBjbUYwWldkNUxtSmhkR05vWldSVmNHUmhkR1Z6S0dOaGJHeGlZV05yTENCaExDQmlMQ0JqTENCa0xDQmxLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkJjbkpoZVNCamIyMXdZWEpoZEc5eUlHWnZjaUJTWldGamRFTnZiWEJ2Ym1WdWRITWdZbmtnYlc5MWJuUWdiM0prWlhKcGJtY3VYRzRnS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1l6RWdabWx5YzNRZ1kyOXRjRzl1Wlc1MElIbHZkU2R5WlNCamIyMXdZWEpwYm1kY2JpQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGIyMXdiMjVsYm5SOUlHTXlJSE5sWTI5dVpDQmpiMjF3YjI1bGJuUWdlVzkxSjNKbElHTnZiWEJoY21sdVoxeHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JTWlhSMWNtNGdkbUZzZFdVZ2RYTmhZbXhsSUdKNUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1emIzSjBLQ2t1WEc0Z0tpOWNibVoxYm1OMGFXOXVJRzF2ZFc1MFQzSmtaWEpEYjIxd1lYSmhkRzl5S0dNeExDQmpNaWtnZTF4dUlDQnlaWFIxY200Z1l6RXVYMjF2ZFc1MFQzSmtaWElnTFNCak1pNWZiVzkxYm5SUGNtUmxjanRjYm4xY2JseHVablZ1WTNScGIyNGdjblZ1UW1GMFkyaGxaRlZ3WkdGMFpYTW9kSEpoYm5OaFkzUnBiMjRwSUh0Y2JpQWdkbUZ5SUd4bGJpQTlJSFJ5WVc1ellXTjBhVzl1TG1ScGNuUjVRMjl0Y0c5dVpXNTBjMHhsYm1kMGFEdGNiaUFnSVNoc1pXNGdQVDA5SUdScGNuUjVRMjl0Y0c5dVpXNTBjeTVzWlc1bmRHZ3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVjRjR1ZqZEdWa0lHWnNkWE5vSUhSeVlXNXpZV04wYVc5dVhGd25jeUJ6ZEc5eVpXUWdaR2x5ZEhrdFkyOXRjRzl1Wlc1MGN5QnNaVzVuZEdnZ0tDVnpLU0IwYnlBbklDc2dKMjFoZEdOb0lHUnBjblI1TFdOdmJYQnZibVZ1ZEhNZ1lYSnlZWGtnYkdWdVozUm9JQ2dsY3lrdUp5d2diR1Z1TENCa2FYSjBlVU52YlhCdmJtVnVkSE11YkdWdVozUm9LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnTHk4Z1UybHVZMlVnY21WamIyNWphV3hwYm1jZ1lTQmpiMjF3YjI1bGJuUWdhR2xuYUdWeUlHbHVJSFJvWlNCdmQyNWxjaUJvYVdWeVlYSmphSGtnZFhOMVlXeHNlU0FvYm05MFhHNGdJQzh2SUdGc2QyRjVjeUF0TFNCelpXVWdjMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsS0NrcElIZHBiR3dnY21WamIyNWphV3hsSUdOb2FXeGtjbVZ1TENCeVpXTnZibU5wYkdWY2JpQWdMeThnZEdobGJTQmlaV1p2Y21VZ2RHaGxhWElnWTJocGJHUnlaVzRnWW5rZ2MyOXlkR2x1WnlCMGFHVWdZWEp5WVhrdVhHNGdJR1JwY25SNVEyOXRjRzl1Wlc1MGN5NXpiM0owS0cxdmRXNTBUM0prWlhKRGIyMXdZWEpoZEc5eUtUdGNibHh1SUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHeGxianNnYVNzcktTQjdYRzRnSUNBZ0x5OGdTV1lnWVNCamIyMXdiMjVsYm5RZ2FYTWdkVzV0YjNWdWRHVmtJR0psWm05eVpTQndaVzVrYVc1bklHTm9ZVzVuWlhNZ1lYQndiSGtzSUdsMElIZHBiR3dnYzNScGJHeGNiaUFnSUNBdkx5QmlaU0JvWlhKbExDQmlkWFFnZDJVZ1lYTnpkVzFsSUhSb1lYUWdhWFFnYUdGeklHTnNaV0Z5WldRZ2FYUnpJRjl3Wlc1a2FXNW5RMkZzYkdKaFkydHpJR0Z1WkZ4dUlDQWdJQzh2SUhSb1lYUWdjR1Z5Wm05eWJWVndaR0YwWlVsbVRtVmpaWE56WVhKNUlHbHpJR0VnYm05dmNDNWNiaUFnSUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnWkdseWRIbERiMjF3YjI1bGJuUnpXMmxkTzF4dVhHNGdJQ0FnTHk4Z1NXWWdjR1Z5Wm05eWJWVndaR0YwWlVsbVRtVmpaWE56WVhKNUlHaGhjSEJsYm5NZ2RHOGdaVzV4ZFdWMVpTQmhibmtnYm1WM0lIVndaR0YwWlhNc0lIZGxYRzRnSUNBZ0x5OGdjMmh2ZFd4a2JpZDBJR1Y0WldOMWRHVWdkR2hsSUdOaGJHeGlZV05yY3lCMWJuUnBiQ0IwYUdVZ2JtVjRkQ0J5Wlc1a1pYSWdhR0Z3Y0dWdWN5d2djMjljYmlBZ0lDQXZMeUJ6ZEdGemFDQjBhR1VnWTJGc2JHSmhZMnR6SUdacGNuTjBYRzRnSUNBZ2RtRnlJR05oYkd4aVlXTnJjeUE5SUdOdmJYQnZibVZ1ZEM1ZmNHVnVaR2x1WjBOaGJHeGlZV05yY3p0Y2JpQWdJQ0JqYjIxd2IyNWxiblF1WDNCbGJtUnBibWREWVd4c1ltRmphM01nUFNCdWRXeHNPMXh1WEc0Z0lDQWdVbVZoWTNSU1pXTnZibU5wYkdWeUxuQmxjbVp2Y20xVmNHUmhkR1ZKWms1bFkyVnpjMkZ5ZVNoamIyMXdiMjVsYm5Rc0lIUnlZVzV6WVdOMGFXOXVMbkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1S1R0Y2JseHVJQ0FnSUdsbUlDaGpZV3hzWW1GamEzTXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR29nUFNBd095QnFJRHdnWTJGc2JHSmhZMnR6TG14bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQWdJSFJ5WVc1ellXTjBhVzl1TG1OaGJHeGlZV05yVVhWbGRXVXVaVzV4ZFdWMVpTaGpZV3hzWW1GamEzTmJhbDBzSUdOdmJYQnZibVZ1ZEM1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVkbUZ5SUdac2RYTm9RbUYwWTJobFpGVndaR0YwWlhNZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDOHZJRkpsWVdOMFZYQmtZWFJsYzBac2RYTm9WSEpoYm5OaFkzUnBiMjRuY3lCM2NtRndjR1Z5Y3lCM2FXeHNJR05zWldGeUlIUm9aU0JrYVhKMGVVTnZiWEJ2Ym1WdWRITmNiaUFnTHk4Z1lYSnlZWGtnWVc1a0lIQmxjbVp2Y20wZ1lXNTVJSFZ3WkdGMFpYTWdaVzV4ZFdWMVpXUWdZbmtnYlc5MWJuUXRjbVZoWkhrZ2FHRnVaR3hsY25NZ0tHa3VaUzRzWEc0Z0lDOHZJR052YlhCdmJtVnVkRVJwWkZWd1pHRjBaU2tnWW5WMElIZGxJRzVsWldRZ2RHOGdZMmhsWTJzZ2FHVnlaU0IwYjI4Z2FXNGdiM0prWlhJZ2RHOGdZMkYwWTJoY2JpQWdMeThnZFhCa1lYUmxjeUJsYm5GMVpYVmxaQ0JpZVNCelpYUlRkR0YwWlNCallXeHNZbUZqYTNNZ1lXNWtJR0Z6WVhBZ1kyRnNiSE11WEc0Z0lIZG9hV3hsSUNoa2FYSjBlVU52YlhCdmJtVnVkSE11YkdWdVozUm9JSHg4SUdGellYQkZibkYxWlhWbFpDa2dlMXh1SUNBZ0lHbG1JQ2hrYVhKMGVVTnZiWEJ2Ym1WdWRITXViR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQjJZWElnZEhKaGJuTmhZM1JwYjI0Z1BTQlNaV0ZqZEZWd1pHRjBaWE5HYkhWemFGUnlZVzV6WVdOMGFXOXVMbWRsZEZCdmIyeGxaQ2dwTzF4dUlDQWdJQ0FnZEhKaGJuTmhZM1JwYjI0dWNHVnlabTl5YlNoeWRXNUNZWFJqYUdWa1ZYQmtZWFJsY3l3Z2JuVnNiQ3dnZEhKaGJuTmhZM1JwYjI0cE8xeHVJQ0FnSUNBZ1VtVmhZM1JWY0dSaGRHVnpSbXgxYzJoVWNtRnVjMkZqZEdsdmJpNXlaV3hsWVhObEtIUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWVhOaGNFVnVjWFZsZFdWa0tTQjdYRzRnSUNBZ0lDQmhjMkZ3Ulc1eGRXVjFaV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJSFpoY2lCeGRXVjFaU0E5SUdGellYQkRZV3hzWW1GamExRjFaWFZsTzF4dUlDQWdJQ0FnWVhOaGNFTmhiR3hpWVdOclVYVmxkV1VnUFNCRFlXeHNZbUZqYTFGMVpYVmxMbWRsZEZCdmIyeGxaQ2dwTzF4dUlDQWdJQ0FnY1hWbGRXVXVibTkwYVdaNVFXeHNLQ2s3WEc0Z0lDQWdJQ0JEWVd4c1ltRmphMUYxWlhWbExuSmxiR1ZoYzJVb2NYVmxkV1VwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVHRjYm1ac2RYTm9RbUYwWTJobFpGVndaR0YwWlhNZ1BTQlNaV0ZqZEZCbGNtWXViV1ZoYzNWeVpTZ25VbVZoWTNSVmNHUmhkR1Z6Snl3Z0oyWnNkWE5vUW1GMFkyaGxaRlZ3WkdGMFpYTW5MQ0JtYkhWemFFSmhkR05vWldSVmNHUmhkR1Z6S1R0Y2JseHVMeW9xWEc0Z0tpQk5ZWEpySUdFZ1kyOXRjRzl1Wlc1MElHRnpJRzVsWldScGJtY2dZU0J5WlhKbGJtUmxjaXdnWVdSa2FXNW5JR0Z1SUc5d2RHbHZibUZzSUdOaGJHeGlZV05ySUhSdklHRmNiaUFxSUd4cGMzUWdiMllnWm5WdVkzUnBiMjV6SUhkb2FXTm9JSGRwYkd3Z1ltVWdaWGhsWTNWMFpXUWdiMjVqWlNCMGFHVWdjbVZ5Wlc1a1pYSWdiMk5qZFhKekxseHVJQ292WEc1bWRXNWpkR2x2YmlCbGJuRjFaWFZsVlhCa1lYUmxLR052YlhCdmJtVnVkQ2tnZTF4dUlDQmxibk4xY21WSmJtcGxZM1JsWkNncE8xeHVYRzRnSUM4dklGWmhjbWx2ZFhNZ2NHRnlkSE1nYjJZZ2IzVnlJR052WkdVZ0tITjFZMmdnWVhNZ1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFuYzF4dUlDQXZMeUJmY21WdVpHVnlWbUZzYVdSaGRHVmtRMjl0Y0c5dVpXNTBLU0JoYzNOMWJXVWdkR2hoZENCallXeHNjeUIwYnlCeVpXNWtaWElnWVhKbGJpZDBJRzVsYzNSbFpEdGNiaUFnTHk4Z2RtVnlhV1o1SUhSb1lYUWdkR2hoZENkeklIUm9aU0JqWVhObExpQW9WR2hwY3lCcGN5QmpZV3hzWldRZ1lua2daV0ZqYUNCMGIzQXRiR1YyWld3Z2RYQmtZWFJsWEc0Z0lDOHZJR1oxYm1OMGFXOXVMQ0JzYVd0bElITmxkRkJ5YjNCekxDQnpaWFJUZEdGMFpTd2dabTl5WTJWVmNHUmhkR1VzSUdWMFl5NDdJR055WldGMGFXOXVJR0Z1WkZ4dUlDQXZMeUJrWlhOMGNuVmpkR2x2YmlCdlppQjBiM0F0YkdWMlpXd2dZMjl0Y0c5dVpXNTBjeUJwY3lCbmRXRnlaR1ZrSUdsdUlGSmxZV04wVFc5MWJuUXVLVnh1WEc0Z0lHbG1JQ2doWW1GMFkyaHBibWRUZEhKaGRHVm5lUzVwYzBKaGRHTm9hVzVuVlhCa1lYUmxjeWtnZTF4dUlDQWdJR0poZEdOb2FXNW5VM1J5WVhSbFoza3VZbUYwWTJobFpGVndaR0YwWlhNb1pXNXhkV1YxWlZWd1pHRjBaU3dnWTI5dGNHOXVaVzUwS1R0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JseHVJQ0JrYVhKMGVVTnZiWEJ2Ym1WdWRITXVjSFZ6YUNoamIyMXdiMjVsYm5RcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWNYVmxkV1VnWVNCallXeHNZbUZqYXlCMGJ5QmlaU0J5ZFc0Z1lYUWdkR2hsSUdWdVpDQnZaaUIwYUdVZ1kzVnljbVZ1ZENCaVlYUmphR2x1WnlCamVXTnNaUzRnVkdoeWIzZHpYRzRnS2lCcFppQnVieUIxY0dSaGRHVnpJR0Z5WlNCamRYSnlaVzUwYkhrZ1ltVnBibWNnY0dWeVptOXliV1ZrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJoYzJGd0tHTmhiR3hpWVdOckxDQmpiMjUwWlhoMEtTQjdYRzRnSUNGaVlYUmphR2x1WjFOMGNtRjBaV2Q1TG1selFtRjBZMmhwYm1kVmNHUmhkR1Z6SUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFZYQmtZWFJsY3k1aGMyRndPaUJEWVc1Y1hDZDBJR1Z1Y1hWbGRXVWdZVzRnWVhOaGNDQmpZV3hzWW1GamF5QnBiaUJoSUdOdmJuUmxlSFFnZDJobGNtVW5JQ3NnSjNWd1pHRjBaWE1nWVhKbElHNXZkQ0JpWldsdVp5QmlZWFJqYUdWa0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdZWE5oY0VOaGJHeGlZV05yVVhWbGRXVXVaVzV4ZFdWMVpTaGpZV3hzWW1GamF5d2dZMjl1ZEdWNGRDazdYRzRnSUdGellYQkZibkYxWlhWbFpDQTlJSFJ5ZFdVN1hHNTlYRzVjYm5aaGNpQlNaV0ZqZEZWd1pHRjBaWE5KYm1wbFkzUnBiMjRnUFNCN1hHNGdJR2x1YW1WamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVPaUJtZFc1amRHbHZiaUFvVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0cElIdGNiaUFnSUNBaFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNGdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JWY0dSaGRHVnpPaUJ0ZFhOMElIQnliM1pwWkdVZ1lTQnlaV052Ym1OcGJHVWdkSEpoYm5OaFkzUnBiMjRnWTJ4aGMzTW5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWekxsSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0Z1BTQlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZianRjYmlBZ2ZTeGNibHh1SUNCcGJtcGxZM1JDWVhSamFHbHVaMU4wY21GMFpXZDVPaUJtZFc1amRHbHZiaUFvWDJKaGRHTm9hVzVuVTNSeVlYUmxaM2twSUh0Y2JpQWdJQ0FoWDJKaGRHTm9hVzVuVTNSeVlYUmxaM2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5VbVZoWTNSVmNHUmhkR1Z6T2lCdGRYTjBJSEJ5YjNacFpHVWdZU0JpWVhSamFHbHVaeUJ6ZEhKaGRHVm5lU2NwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBaEtIUjVjR1Z2WmlCZlltRjBZMmhwYm1kVGRISmhkR1ZuZVM1aVlYUmphR1ZrVlhCa1lYUmxjeUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JWY0dSaGRHVnpPaUJ0ZFhOMElIQnliM1pwWkdVZ1lTQmlZWFJqYUdWa1ZYQmtZWFJsY3lncElHWjFibU4wYVc5dUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0VvZEhsd1pXOW1JRjlpWVhSamFHbHVaMU4wY21GMFpXZDVMbWx6UW1GMFkyaHBibWRWY0dSaGRHVnpJRDA5UFNBblltOXZiR1ZoYmljcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBWWEJrWVhSbGN6b2diWFZ6ZENCd2NtOTJhV1JsSUdGdUlHbHpRbUYwWTJocGJtZFZjR1JoZEdWeklHSnZiMnhsWVc0Z1lYUjBjbWxpZFhSbEp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJR0poZEdOb2FXNW5VM1J5WVhSbFoza2dQU0JmWW1GMFkyaHBibWRUZEhKaGRHVm5lVHRjYmlBZ2ZWeHVmVHRjYmx4dWRtRnlJRkpsWVdOMFZYQmtZWFJsY3lBOUlIdGNiaUFnTHlvcVhHNGdJQ0FxSUZKbFlXTjBJSEpsWm1WeVpXNWpaWE1nWUZKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjVnSUhWemFXNW5JSFJvYVhNZ2NISnZjR1Z5ZEhrZ2FXNGdiM0prWlhKY2JpQWdJQ29nZEc4Z1lXeHNiM2NnWkdWd1pXNWtaVzVqZVNCcGJtcGxZM1JwYjI0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnVW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiam9nYm5Wc2JDeGNibHh1SUNCaVlYUmphR1ZrVlhCa1lYUmxjem9nWW1GMFkyaGxaRlZ3WkdGMFpYTXNYRzRnSUdWdWNYVmxkV1ZWY0dSaGRHVTZJR1Z1Y1hWbGRXVlZjR1JoZEdVc1hHNGdJR1pzZFhOb1FtRjBZMmhsWkZWd1pHRjBaWE02SUdac2RYTm9RbUYwWTJobFpGVndaR0YwWlhNc1hHNGdJR2x1YW1WamRHbHZiam9nVW1WaFkzUlZjR1JoZEdWelNXNXFaV04wYVc5dUxGeHVJQ0JoYzJGd09pQmhjMkZ3WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFZYQmtZWFJsY3pzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RWZXJzaW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICcwLjE0LjInOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTVkdET01Qcm9wZXJ0eUNvbmZpZ1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xuXG52YXIgTVVTVF9VU0VfQVRUUklCVVRFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLk1VU1RfVVNFX0FUVFJJQlVURTtcblxudmFyIE5TID0ge1xuICB4bGluazogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLFxuICB4bWw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnXG59O1xuXG52YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIFByb3BlcnRpZXM6IHtcbiAgICBjbGlwUGF0aDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGN4OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgY3k6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBkOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZHg6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBkeTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZpbGw6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmaWxsT3BhY2l0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZvbnRGYW1pbHk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb250U2l6ZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGZ4OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZnk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBncmFkaWVudFRyYW5zZm9ybTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGdyYWRpZW50VW5pdHM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtYXJrZXJFbmQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtYXJrZXJNaWQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtYXJrZXJTdGFydDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG9mZnNldDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG9wYWNpdHk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBwYXR0ZXJuQ29udGVudFVuaXRzOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcGF0dGVyblVuaXRzOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcG9pbnRzOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcHJlc2VydmVBc3BlY3RSYXRpbzogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHI6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICByeDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHJ5OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3ByZWFkTWV0aG9kOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3RvcENvbG9yOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3RvcE9wYWNpdHk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdHJva2U6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdHJva2VEYXNoYXJyYXk6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBzdHJva2VMaW5lY2FwOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3Ryb2tlT3BhY2l0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHN0cm9rZVdpZHRoOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgdGV4dEFuY2hvcjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHRyYW5zZm9ybTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHZlcnNpb246IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB2aWV3Qm94OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeDE6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4MjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHg6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua0FjdHVhdGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua0FyY3JvbGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua0hyZWY6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua1JvbGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua1Nob3c6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bGlua1RpdGxlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeGxpbmtUeXBlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeG1sQmFzZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHhtbExhbmc6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB4bWxTcGFjZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHkxOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgeTI6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB5OiBNVVNUX1VTRV9BVFRSSUJVVEVcbiAgfSxcbiAgRE9NQXR0cmlidXRlTmFtZXNwYWNlczoge1xuICAgIHhsaW5rQWN0dWF0ZTogTlMueGxpbmssXG4gICAgeGxpbmtBcmNyb2xlOiBOUy54bGluayxcbiAgICB4bGlua0hyZWY6IE5TLnhsaW5rLFxuICAgIHhsaW5rUm9sZTogTlMueGxpbmssXG4gICAgeGxpbmtTaG93OiBOUy54bGluayxcbiAgICB4bGlua1RpdGxlOiBOUy54bGluayxcbiAgICB4bGlua1R5cGU6IE5TLnhsaW5rLFxuICAgIHhtbEJhc2U6IE5TLnhtbCxcbiAgICB4bWxMYW5nOiBOUy54bWwsXG4gICAgeG1sU3BhY2U6IE5TLnhtbFxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge1xuICAgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJyxcbiAgICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG4gICAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gICAgZ3JhZGllbnRUcmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG4gICAgZ3JhZGllbnRVbml0czogJ2dyYWRpZW50VW5pdHMnLFxuICAgIG1hcmtlckVuZDogJ21hcmtlci1lbmQnLFxuICAgIG1hcmtlck1pZDogJ21hcmtlci1taWQnLFxuICAgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JyxcbiAgICBwYXR0ZXJuQ29udGVudFVuaXRzOiAncGF0dGVybkNvbnRlbnRVbml0cycsXG4gICAgcGF0dGVyblVuaXRzOiAncGF0dGVyblVuaXRzJyxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG4gICAgc3ByZWFkTWV0aG9kOiAnc3ByZWFkTWV0aG9kJyxcbiAgICBzdG9wQ29sb3I6ICdzdG9wLWNvbG9yJyxcbiAgICBzdG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsXG4gICAgc3Ryb2tlRGFzaGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG4gICAgc3Ryb2tlTGluZWNhcDogJ3N0cm9rZS1saW5lY2FwJyxcbiAgICBzdHJva2VPcGFjaXR5OiAnc3Ryb2tlLW9wYWNpdHknLFxuICAgIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJyxcbiAgICB0ZXh0QW5jaG9yOiAndGV4dC1hbmNob3InLFxuICAgIHZpZXdCb3g6ICd2aWV3Qm94JyxcbiAgICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJyxcbiAgICB4bGlua0FyY3JvbGU6ICd4bGluazphcmNyb2xlJyxcbiAgICB4bGlua0hyZWY6ICd4bGluazpocmVmJyxcbiAgICB4bGlua1JvbGU6ICd4bGluazpyb2xlJyxcbiAgICB4bGlua1Nob3c6ICd4bGluazpzaG93JyxcbiAgICB4bGlua1RpdGxlOiAneGxpbms6dGl0bGUnLFxuICAgIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLFxuICAgIHhtbEJhc2U6ICd4bWw6YmFzZScsXG4gICAgeG1sTGFuZzogJ3htbDpsYW5nJyxcbiAgICB4bWxTcGFjZTogJ3htbDpzcGFjZSdcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTVkdET01Qcm9wZXJ0eUNvbmZpZzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU2VsZWN0RXZlbnRQbHVnaW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5wdXRTZWxlY3Rpb24nKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxudmFyIGdldEFjdGl2ZUVsZW1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRBY3RpdmVFbGVtZW50Jyk7XG52YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gcmVxdWlyZSgnLi9pc1RleHRJbnB1dEVsZW1lbnQnKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG5cbnZhciB0b3BMZXZlbFR5cGVzID0gRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlcztcblxudmFyIHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPD0gMTE7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBzZWxlY3Q6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblNlbGVjdDogbnVsbCB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU2VsZWN0Q2FwdHVyZTogbnVsbCB9KVxuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wTGV2ZWxUeXBlcy50b3BCbHVyLCB0b3BMZXZlbFR5cGVzLnRvcENvbnRleHRNZW51LCB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzLCB0b3BMZXZlbFR5cGVzLnRvcEtleURvd24sIHRvcExldmVsVHlwZXMudG9wTW91c2VEb3duLCB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlVXAsIHRvcExldmVsVHlwZXMudG9wU2VsZWN0aW9uQ2hhbmdlXVxuICB9XG59O1xuXG52YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVudElEID0gbnVsbDtcbnZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbnZhciBtb3VzZURvd24gPSBmYWxzZTtcblxuLy8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdlIGRvXG4vLyBub3QgZXh0cmFjdCBldmVudHMuXG52YXIgaGFzTGlzdGVuZXIgPSBmYWxzZTtcbnZhciBPTl9TRUxFQ1RfS0VZID0ga2V5T2YoeyBvblNlbGVjdDogbnVsbCB9KTtcblxuLyoqXG4gKiBHZXQgYW4gb2JqZWN0IHdoaWNoIGlzIGEgdW5pcXVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgbm90IGJlIGNvbnNpc3RlbnQgYWNyb3NzIG5vZGVzIG9yIGJyb3dzZXJzLCBidXRcbiAqIHR3byBpZGVudGljYWwgc2VsZWN0aW9ucyBvbiB0aGUgc2FtZSBub2RlIHdpbGwgcmV0dXJuIGlkZW50aWNhbCBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRTZWxlY3Rpb24obm9kZSkge1xuICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBub2RlICYmIFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG5vZGUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiBub2RlLnNlbGVjdGlvblN0YXJ0LFxuICAgICAgZW5kOiBub2RlLnNlbGVjdGlvbkVuZFxuICAgIH07XG4gIH0gZWxzZSBpZiAod2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFuY2hvck5vZGU6IHNlbGVjdGlvbi5hbmNob3JOb2RlLFxuICAgICAgYW5jaG9yT2Zmc2V0OiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuICAgICAgZm9jdXNOb2RlOiBzZWxlY3Rpb24uZm9jdXNOb2RlLFxuICAgICAgZm9jdXNPZmZzZXQ6IHNlbGVjdGlvbi5mb2N1c09mZnNldFxuICAgIH07XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uKSB7XG4gICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmVudEVsZW1lbnQ6IHJhbmdlLnBhcmVudEVsZW1lbnQoKSxcbiAgICAgIHRleHQ6IHJhbmdlLnRleHQsXG4gICAgICB0b3A6IHJhbmdlLmJvdW5kaW5nVG9wLFxuICAgICAgbGVmdDogcmFuZ2UuYm91bmRpbmdMZWZ0XG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFBvbGwgc2VsZWN0aW9uIHRvIHNlZSB3aGV0aGVyIGl0J3MgY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4gez9TeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIC8vIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBlbGVtZW50LCBhbmQgdGhhdCB0aGUgdXNlciBpcyBub3QgZHJhZ2dpbmcgYVxuICAvLyBzZWxlY3Rpb24gKHRoaXMgbWF0Y2hlcyBuYXRpdmUgYHNlbGVjdGAgZXZlbnQgYmVoYXZpb3IpLiBJbiBIVE1MNSwgc2VsZWN0XG4gIC8vIGZpcmVzIG9ubHkgb24gaW5wdXQgYW5kIHRleHRhcmVhIHRodXMgaWYgdGhlcmUncyBubyBmb2N1c2VkIGVsZW1lbnQgd2VcbiAgLy8gd29uJ3QgZGlzcGF0Y2guXG4gIGlmIChtb3VzZURvd24gfHwgYWN0aXZlRWxlbWVudCA9PSBudWxsIHx8IGFjdGl2ZUVsZW1lbnQgIT09IGdldEFjdGl2ZUVsZW1lbnQoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSBmaXJlIHdoZW4gc2VsZWN0aW9uIGhhcyBhY3R1YWxseSBjaGFuZ2VkLlxuICB2YXIgY3VycmVudFNlbGVjdGlvbiA9IGdldFNlbGVjdGlvbihhY3RpdmVFbGVtZW50KTtcbiAgaWYgKCFsYXN0U2VsZWN0aW9uIHx8ICFzaGFsbG93RXF1YWwobGFzdFNlbGVjdGlvbiwgY3VycmVudFNlbGVjdGlvbikpIHtcbiAgICBsYXN0U2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbjtcblxuICAgIHZhciBzeW50aGV0aWNFdmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLnNlbGVjdCwgYWN0aXZlRWxlbWVudElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXG4gICAgc3ludGhldGljRXZlbnQudHlwZSA9ICdzZWxlY3QnO1xuICAgIHN5bnRoZXRpY0V2ZW50LnRhcmdldCA9IGFjdGl2ZUVsZW1lbnQ7XG5cbiAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoc3ludGhldGljRXZlbnQpO1xuXG4gICAgcmV0dXJuIHN5bnRoZXRpY0V2ZW50O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25TZWxlY3RgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBzZWxlY3QgZXZlbnRzXG4gKiBhY3Jvc3MgZm9ybSBlbGVtZW50cy5cbiAqXG4gKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOlxuICogLSBpbnB1dCAoc2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKVxuICogLSB0ZXh0YXJlYVxuICogLSBjb250ZW50RWRpdGFibGVcbiAqXG4gKiBUaGlzIGRpZmZlcnMgZnJvbSBuYXRpdmUgYnJvd3NlciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB3YXlzOlxuICogLSBGaXJlcyBvbiBjb250ZW50RWRpdGFibGUgZmllbGRzIGFzIHdlbGwgYXMgaW5wdXRzLlxuICogLSBGaXJlcyBmb3IgY29sbGFwc2VkIHNlbGVjdGlvbi5cbiAqIC0gRmlyZXMgYWZ0ZXIgdXNlciBpbnB1dC5cbiAqL1xudmFyIFNlbGVjdEV2ZW50UGx1Z2luID0ge1xuXG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzfVxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIGlmICghaGFzTGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5cbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BGb2N1czpcbiAgICAgICAgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0b3BMZXZlbFRhcmdldCkgfHwgdG9wTGV2ZWxUYXJnZXQuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpIHtcbiAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gdG9wTGV2ZWxUYXJnZXQ7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudElEID0gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BCbHVyOlxuICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgYWN0aXZlRWxlbWVudElEID0gbnVsbDtcbiAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBEb24ndCBmaXJlIHRoZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4gVGhpcyBtYXRjaGVzIHRoZVxuICAgICAgLy8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50LlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93bjpcbiAgICAgICAgbW91c2VEb3duID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ29udGV4dE1lbnU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VVcDpcbiAgICAgICAgbW91c2VEb3duID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXG4gICAgICAvLyBDaHJvbWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5nZWQgKGFuZFxuICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBldmVudCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0XG4gICAgICAvLyB0byBrZXkgYW5kIGlucHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cbiAgICAgIC8vXG4gICAgICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVjdGlvbiBzdGF0dXNcbiAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlXG4gICAgICAvLyBrZXl1cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRvd24gYVxuICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQgb25seSBvbmUga2V5dXAgaXMuXG4gICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuXG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU2VsZWN0aW9uQ2hhbmdlOlxuICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVVwOlxuICAgICAgICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSBPTl9TRUxFQ1RfS0VZKSB7XG4gICAgICBoYXNMaXN0ZW5lciA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNlbGVjdEV2ZW50UGx1Z2luOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTZXJ2ZXJSZWFjdFJvb3RJbmRleFxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU2l6ZSBvZiB0aGUgcmVhY3RSb290IElEIHNwYWNlLiBXZSBnZW5lcmF0ZSByYW5kb20gbnVtYmVycyBmb3IgUmVhY3Qgcm9vdFxuICogSURzIGFuZCBpZiB0aGVyZSdzIGEgY29sbGlzaW9uIHRoZSBldmVudHMgYW5kIERPTSB1cGRhdGUgc3lzdGVtIHdpbGxcbiAqIGdldCBjb25mdXNlZC4gSW4gdGhlIGZ1dHVyZSB3ZSBuZWVkIGEgd2F5IHRvIGdlbmVyYXRlIEdVSURzIGJ1dCBmb3JcbiAqIG5vdyB0aGlzIHdpbGwgd29yayBvbiBhIHNtYWxsZXIgc2NhbGUuXG4gKi9cbnZhciBHTE9CQUxfTU9VTlRfUE9JTlRfTUFYID0gTWF0aC5wb3coMiwgNTMpO1xuXG52YXIgU2VydmVyUmVhY3RSb290SW5kZXggPSB7XG4gIGNyZWF0ZVJlYWN0Um9vdEluZGV4OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogR0xPQkFMX01PVU5UX1BPSU5UX01BWCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2VydmVyUmVhY3RSb290SW5kZXg7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTaW1wbGVFdmVudFBsdWdpblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljQ2xpcGJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcbnZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNGb2N1c0V2ZW50Jyk7XG52YXIgU3ludGhldGljS2V5Ym9hcmRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljS2V5Ym9hcmRFdmVudCcpO1xudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcbnZhciBTeW50aGV0aWNEcmFnRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0RyYWdFdmVudCcpO1xudmFyIFN5bnRoZXRpY1RvdWNoRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1RvdWNoRXZlbnQnKTtcbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIgU3ludGhldGljV2hlZWxFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljV2hlZWxFdmVudCcpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBhYm9ydDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQWJvcnQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkFib3J0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgYmx1cjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQmx1cjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQmx1ckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNhblBsYXk6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNhblBsYXk6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNhblBsYXlDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjYW5QbGF5VGhyb3VnaDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ2FuUGxheVRocm91Z2g6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNhblBsYXlUaHJvdWdoQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY2xpY2s6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNsaWNrOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25DbGlja0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNvbnRleHRNZW51OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db250ZXh0TWVudTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ29udGV4dE1lbnVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjb3B5OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Db3B5OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Db3B5Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY3V0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DdXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkN1dENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRvdWJsZUNsaWNrOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Eb3VibGVDbGljazogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRG91YmxlQ2xpY2tDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ0VuZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0VuZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ0VuZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdFbnRlcjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0VudGVyOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnRW50ZXJDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnRXhpdDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0V4aXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdFeGl0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ0xlYXZlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnTGVhdmU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdMZWF2ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdPdmVyOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnT3ZlcjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ092ZXJDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdTdGFydDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ1N0YXJ0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJvcDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJvcDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJvcENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGR1cmF0aW9uQ2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EdXJhdGlvbkNoYW5nZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHVyYXRpb25DaGFuZ2VDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBlbXB0aWVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FbXB0aWVkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25FbXB0aWVkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZW5jcnlwdGVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FbmNyeXB0ZWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkVuY3J5cHRlZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGVuZGVkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25FbmRlZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRW5kZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBlcnJvcjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRXJyb3I6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkVycm9yQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZm9jdXM6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkZvY3VzOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Gb2N1c0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGlucHV0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25JbnB1dDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uSW5wdXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBrZXlEb3duOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25LZXlEb3duOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25LZXlEb3duQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAga2V5UHJlc3M6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbktleVByZXNzOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25LZXlQcmVzc0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGtleVVwOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25LZXlVcDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uS2V5VXBDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBsb2FkOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Mb2FkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Mb2FkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbG9hZGVkRGF0YToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTG9hZGVkRGF0YTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZGVkRGF0YUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGxvYWRlZE1ldGFkYXRhOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Mb2FkZWRNZXRhZGF0YTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZGVkTWV0YWRhdGFDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBsb2FkU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkxvYWRTdGFydDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZFN0YXJ0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgLy8gTm90ZTogV2UgZG8gbm90IGFsbG93IGxpc3RlbmluZyB0byBtb3VzZU92ZXIgZXZlbnRzLiBJbnN0ZWFkLCB1c2UgdGhlXG4gIC8vIG9uTW91c2VFbnRlci9vbk1vdXNlTGVhdmUgY3JlYXRlZCBieSBgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luYC5cbiAgbW91c2VEb3duOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZURvd246IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlRG93bkNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIG1vdXNlTW92ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VNb3ZlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Nb3VzZU1vdmVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBtb3VzZU91dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VPdXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlT3V0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbW91c2VPdmVyOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZU92ZXI6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlT3ZlckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIG1vdXNlVXA6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbk1vdXNlVXA6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbk1vdXNlVXBDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwYXN0ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUGFzdGU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblBhc3RlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcGF1c2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblBhdXNlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25QYXVzZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHBsYXk6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblBsYXk6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblBsYXlDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwbGF5aW5nOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25QbGF5aW5nOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25QbGF5aW5nQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcHJvZ3Jlc3M6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblByb2dyZXNzOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Qcm9ncmVzc0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHJhdGVDaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblJhdGVDaGFuZ2U6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblJhdGVDaGFuZ2VDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICByZXNldDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUmVzZXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblJlc2V0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc2Nyb2xsOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TY3JvbGw6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblNjcm9sbENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHNlZWtlZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU2Vla2VkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TZWVrZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzZWVraW5nOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TZWVraW5nOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TZWVraW5nQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc3RhbGxlZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU3RhbGxlZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU3RhbGxlZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHN1Ym1pdDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU3VibWl0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TdWJtaXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzdXNwZW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25TdXNwZW5kOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TdXNwZW5kQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdGltZVVwZGF0ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVGltZVVwZGF0ZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVGltZVVwZGF0ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRvdWNoQ2FuY2VsOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ub3VjaENhbmNlbDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVG91Y2hDYW5jZWxDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB0b3VjaEVuZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVG91Y2hFbmQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoRW5kQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdG91Y2hNb3ZlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ub3VjaE1vdmU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoTW92ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRvdWNoU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblRvdWNoU3RhcnQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoU3RhcnRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB2b2x1bWVDaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblZvbHVtZUNoYW5nZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uVm9sdW1lQ2hhbmdlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgd2FpdGluZzoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uV2FpdGluZzogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uV2FpdGluZ0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHdoZWVsOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25XaGVlbDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uV2hlZWxDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9XG59O1xuXG52YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge1xuICB0b3BBYm9ydDogZXZlbnRUeXBlcy5hYm9ydCxcbiAgdG9wQmx1cjogZXZlbnRUeXBlcy5ibHVyLFxuICB0b3BDYW5QbGF5OiBldmVudFR5cGVzLmNhblBsYXksXG4gIHRvcENhblBsYXlUaHJvdWdoOiBldmVudFR5cGVzLmNhblBsYXlUaHJvdWdoLFxuICB0b3BDbGljazogZXZlbnRUeXBlcy5jbGljayxcbiAgdG9wQ29udGV4dE1lbnU6IGV2ZW50VHlwZXMuY29udGV4dE1lbnUsXG4gIHRvcENvcHk6IGV2ZW50VHlwZXMuY29weSxcbiAgdG9wQ3V0OiBldmVudFR5cGVzLmN1dCxcbiAgdG9wRG91YmxlQ2xpY2s6IGV2ZW50VHlwZXMuZG91YmxlQ2xpY2ssXG4gIHRvcERyYWc6IGV2ZW50VHlwZXMuZHJhZyxcbiAgdG9wRHJhZ0VuZDogZXZlbnRUeXBlcy5kcmFnRW5kLFxuICB0b3BEcmFnRW50ZXI6IGV2ZW50VHlwZXMuZHJhZ0VudGVyLFxuICB0b3BEcmFnRXhpdDogZXZlbnRUeXBlcy5kcmFnRXhpdCxcbiAgdG9wRHJhZ0xlYXZlOiBldmVudFR5cGVzLmRyYWdMZWF2ZSxcbiAgdG9wRHJhZ092ZXI6IGV2ZW50VHlwZXMuZHJhZ092ZXIsXG4gIHRvcERyYWdTdGFydDogZXZlbnRUeXBlcy5kcmFnU3RhcnQsXG4gIHRvcERyb3A6IGV2ZW50VHlwZXMuZHJvcCxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6IGV2ZW50VHlwZXMuZHVyYXRpb25DaGFuZ2UsXG4gIHRvcEVtcHRpZWQ6IGV2ZW50VHlwZXMuZW1wdGllZCxcbiAgdG9wRW5jcnlwdGVkOiBldmVudFR5cGVzLmVuY3J5cHRlZCxcbiAgdG9wRW5kZWQ6IGV2ZW50VHlwZXMuZW5kZWQsXG4gIHRvcEVycm9yOiBldmVudFR5cGVzLmVycm9yLFxuICB0b3BGb2N1czogZXZlbnRUeXBlcy5mb2N1cyxcbiAgdG9wSW5wdXQ6IGV2ZW50VHlwZXMuaW5wdXQsXG4gIHRvcEtleURvd246IGV2ZW50VHlwZXMua2V5RG93bixcbiAgdG9wS2V5UHJlc3M6IGV2ZW50VHlwZXMua2V5UHJlc3MsXG4gIHRvcEtleVVwOiBldmVudFR5cGVzLmtleVVwLFxuICB0b3BMb2FkOiBldmVudFR5cGVzLmxvYWQsXG4gIHRvcExvYWRlZERhdGE6IGV2ZW50VHlwZXMubG9hZGVkRGF0YSxcbiAgdG9wTG9hZGVkTWV0YWRhdGE6IGV2ZW50VHlwZXMubG9hZGVkTWV0YWRhdGEsXG4gIHRvcExvYWRTdGFydDogZXZlbnRUeXBlcy5sb2FkU3RhcnQsXG4gIHRvcE1vdXNlRG93bjogZXZlbnRUeXBlcy5tb3VzZURvd24sXG4gIHRvcE1vdXNlTW92ZTogZXZlbnRUeXBlcy5tb3VzZU1vdmUsXG4gIHRvcE1vdXNlT3V0OiBldmVudFR5cGVzLm1vdXNlT3V0LFxuICB0b3BNb3VzZU92ZXI6IGV2ZW50VHlwZXMubW91c2VPdmVyLFxuICB0b3BNb3VzZVVwOiBldmVudFR5cGVzLm1vdXNlVXAsXG4gIHRvcFBhc3RlOiBldmVudFR5cGVzLnBhc3RlLFxuICB0b3BQYXVzZTogZXZlbnRUeXBlcy5wYXVzZSxcbiAgdG9wUGxheTogZXZlbnRUeXBlcy5wbGF5LFxuICB0b3BQbGF5aW5nOiBldmVudFR5cGVzLnBsYXlpbmcsXG4gIHRvcFByb2dyZXNzOiBldmVudFR5cGVzLnByb2dyZXNzLFxuICB0b3BSYXRlQ2hhbmdlOiBldmVudFR5cGVzLnJhdGVDaGFuZ2UsXG4gIHRvcFJlc2V0OiBldmVudFR5cGVzLnJlc2V0LFxuICB0b3BTY3JvbGw6IGV2ZW50VHlwZXMuc2Nyb2xsLFxuICB0b3BTZWVrZWQ6IGV2ZW50VHlwZXMuc2Vla2VkLFxuICB0b3BTZWVraW5nOiBldmVudFR5cGVzLnNlZWtpbmcsXG4gIHRvcFN0YWxsZWQ6IGV2ZW50VHlwZXMuc3RhbGxlZCxcbiAgdG9wU3VibWl0OiBldmVudFR5cGVzLnN1Ym1pdCxcbiAgdG9wU3VzcGVuZDogZXZlbnRUeXBlcy5zdXNwZW5kLFxuICB0b3BUaW1lVXBkYXRlOiBldmVudFR5cGVzLnRpbWVVcGRhdGUsXG4gIHRvcFRvdWNoQ2FuY2VsOiBldmVudFR5cGVzLnRvdWNoQ2FuY2VsLFxuICB0b3BUb3VjaEVuZDogZXZlbnRUeXBlcy50b3VjaEVuZCxcbiAgdG9wVG91Y2hNb3ZlOiBldmVudFR5cGVzLnRvdWNoTW92ZSxcbiAgdG9wVG91Y2hTdGFydDogZXZlbnRUeXBlcy50b3VjaFN0YXJ0LFxuICB0b3BWb2x1bWVDaGFuZ2U6IGV2ZW50VHlwZXMudm9sdW1lQ2hhbmdlLFxuICB0b3BXYWl0aW5nOiBldmVudFR5cGVzLndhaXRpbmcsXG4gIHRvcFdoZWVsOiBldmVudFR5cGVzLndoZWVsXG59O1xuXG5mb3IgKHZhciB0eXBlIGluIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZykge1xuICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdHlwZV0uZGVwZW5kZW5jaWVzID0gW3R5cGVdO1xufVxuXG52YXIgT05fQ0xJQ0tfS0VZID0ga2V5T2YoeyBvbkNsaWNrOiBudWxsIH0pO1xudmFyIG9uQ2xpY2tMaXN0ZW5lcnMgPSB7fTtcblxudmFyIFNpbXBsZUV2ZW50UGx1Z2luID0ge1xuXG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzfVxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BMZXZlbFR5cGVdO1xuICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgRXZlbnRDb25zdHJ1Y3RvcjtcbiAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEFib3J0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENhblBsYXk6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ2FuUGxheVRocm91Z2g6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHVyYXRpb25DaGFuZ2U6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRW1wdGllZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BFbmNyeXB0ZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRW5kZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRXJyb3I6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wSW5wdXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTG9hZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BMb2FkZWREYXRhOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcExvYWRlZE1ldGFkYXRhOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcExvYWRTdGFydDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQYXVzZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQbGF5OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBsYXlpbmc6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUHJvZ3Jlc3M6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUmF0ZUNoYW5nZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BSZXNldDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTZWVrZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU2Vla2luZzpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTdGFsbGVkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFN1Ym1pdDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTdXNwZW5kOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRpbWVVcGRhdGU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVm9sdW1lQ2hhbmdlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFdhaXRpbmc6XG4gICAgICAgIC8vIEhUTUwgRXZlbnRzXG4gICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvaW5kZXguaHRtbCNldmVudHMtMFxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVByZXNzOlxuICAgICAgICAvLyBGaXJlRm94IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24ga2V5cyB0b28uIFRoaXMgcmVtb3Zlc1xuICAgICAgICAvLyB0aGUgdW53YW50ZWQga2V5cHJlc3MgZXZlbnRzLiBFbnRlciBpcyBob3dldmVyIGJvdGggcHJpbnRhYmxlIGFuZFxuICAgICAgICAvLyBub24tcHJpbnRhYmxlLiBPbmUgd291bGQgZXhwZWN0IFRhYiB0byBiZSBhcyB3ZWxsIChidXQgaXQgaXNuJ3QpLlxuICAgICAgICBpZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleURvd246XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wS2V5VXA6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BCbHVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRm9jdXNFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ2xpY2s6XG4gICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBhIGNsaWNrIGV2ZW50IG9uIHJpZ2h0IG1vdXNlIGNsaWNrcy4gVGhpcyByZW1vdmVzIHRoZVxuICAgICAgICAvLyB1bndhbnRlZCBjbGljayBldmVudHMuXG4gICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09IDIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvbnRleHRNZW51OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERvdWJsZUNsaWNrOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlRG93bjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZU1vdmU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VPdXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VPdmVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlVXA6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNNb3VzZUV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdFbmQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ0VudGVyOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdFeGl0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdMZWF2ZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnT3ZlcjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnU3RhcnQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJvcDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hDYW5jZWw6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hFbmQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wVG91Y2hNb3ZlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoU3RhcnQ6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3VjaEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTY3JvbGw6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BXaGVlbDpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENvcHk6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQ3V0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFBhc3RlOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAhRXZlbnRDb25zdHJ1Y3RvciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdTaW1wbGVFdmVudFBsdWdpbjogVW5oYW5kbGVkIGV2ZW50IHR5cGUsIGAlc2AuJywgdG9wTGV2ZWxUeXBlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRDb25zdHJ1Y3Rvci5nZXRQb29sZWQoZGlzcGF0Y2hDb25maWcsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH0sXG5cbiAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcbiAgICAvLyBNb2JpbGUgU2FmYXJpIGRvZXMgbm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNsaWNrIGV2ZW50cyBvblxuICAgIC8vIG5vbi1pbnRlcmFjdGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3RlbmVycyBkbyBub3RcbiAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrXG4gICAgLy8gbGlzdGVuZXIgb24gdGhlIHRhcmdldCBub2RlLlxuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSBPTl9DTElDS19LRVkpIHtcbiAgICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKGlkKTtcbiAgICAgIGlmICghb25DbGlja0xpc3RlbmVyc1tpZF0pIHtcbiAgICAgICAgb25DbGlja0xpc3RlbmVyc1tpZF0gPSBFdmVudExpc3RlbmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gT05fQ0xJQ0tfS0VZKSB7XG4gICAgICBvbkNsaWNrTGlzdGVuZXJzW2lkXS5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSBvbkNsaWNrTGlzdGVuZXJzW2lkXTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOVRhVzF3YkdWRmRtVnVkRkJzZFdkcGJpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRk5wYlhCc1pVVjJaVzUwVUd4MVoybHVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnUlhabGJuUkRiMjV6ZEdGdWRITWdQU0J5WlhGMWFYSmxLQ2N1TDBWMlpXNTBRMjl1YzNSaGJuUnpKeWs3WEc1MllYSWdSWFpsYm5STWFYTjBaVzVsY2lBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwwVjJaVzUwVEdsemRHVnVaWEluS1R0Y2JuWmhjaUJGZG1WdWRGQnliM0JoWjJGMGIzSnpJRDBnY21WeGRXbHlaU2duTGk5RmRtVnVkRkJ5YjNCaFoyRjBiM0p6SnlrN1hHNTJZWElnVW1WaFkzUk5iM1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmIzVnVkQ2NwTzF4dWRtRnlJRk41Ym5Sb1pYUnBZME5zYVhCaWIyRnlaRVYyWlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlUZVc1MGFHVjBhV05EYkdsd1ltOWhjbVJGZG1WdWRDY3BPMXh1ZG1GeUlGTjViblJvWlhScFkwVjJaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVRlVzUwYUdWMGFXTkZkbVZ1ZENjcE8xeHVkbUZ5SUZONWJuUm9aWFJwWTBadlkzVnpSWFpsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMU41Ym5Sb1pYUnBZMFp2WTNWelJYWmxiblFuS1R0Y2JuWmhjaUJUZVc1MGFHVjBhV05MWlhsaWIyRnlaRVYyWlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlUZVc1MGFHVjBhV05MWlhsaWIyRnlaRVYyWlc1MEp5azdYRzUyWVhJZ1UzbHVkR2hsZEdsalRXOTFjMlZGZG1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VTNsdWRHaGxkR2xqVFc5MWMyVkZkbVZ1ZENjcE8xeHVkbUZ5SUZONWJuUm9aWFJwWTBSeVlXZEZkbVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVM2x1ZEdobGRHbGpSSEpoWjBWMlpXNTBKeWs3WEc1MllYSWdVM2x1ZEdobGRHbGpWRzkxWTJoRmRtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlUzbHVkR2hsZEdsalZHOTFZMmhGZG1WdWRDY3BPMXh1ZG1GeUlGTjViblJvWlhScFkxVkpSWFpsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMU41Ym5Sb1pYUnBZMVZKUlhabGJuUW5LVHRjYm5aaGNpQlRlVzUwYUdWMGFXTlhhR1ZsYkVWMlpXNTBJRDBnY21WeGRXbHlaU2duTGk5VGVXNTBhR1YwYVdOWGFHVmxiRVYyWlc1MEp5azdYRzVjYm5aaGNpQmxiWEIwZVVaMWJtTjBhVzl1SUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlpXMXdkSGxHZFc1amRHbHZiaWNwTzF4dWRtRnlJR2RsZEVWMlpXNTBRMmhoY2tOdlpHVWdQU0J5WlhGMWFYSmxLQ2N1TDJkbGRFVjJaVzUwUTJoaGNrTnZaR1VuS1R0Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNiblpoY2lCclpYbFBaaUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJ0bGVVOW1KeWs3WEc1Y2JuWmhjaUIwYjNCTVpYWmxiRlI1Y0dWeklEMGdSWFpsYm5SRGIyNXpkR0Z1ZEhNdWRHOXdUR1YyWld4VWVYQmxjenRjYmx4dWRtRnlJR1YyWlc1MFZIbHdaWE1nUFNCN1hHNGdJR0ZpYjNKME9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1QlltOXlkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UVdKdmNuUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCaWJIVnlPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUNiSFZ5T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1Q2JIVnlRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1kyRnVVR3hoZVRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UTJGdVVHeGhlVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UTJGdVVHeGhlVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHTmhibEJzWVhsVWFISnZkV2RvT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVEWVc1UWJHRjVWR2h5YjNWbmFEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVRMkZ1VUd4aGVWUm9jbTkxWjJoRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JqYkdsamF6b2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVEyeHBZMnM2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtOc2FXTnJRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1kyOXVkR1Y0ZEUxbGJuVTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrTnZiblJsZUhSTlpXNTFPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVEYjI1MFpYaDBUV1Z1ZFVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR052Y0hrNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtOdmNIazZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia052Y0hsRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JqZFhRNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtOMWREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVRM1YwUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaRzkxWW14bFEyeHBZMnM2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1J2ZFdKc1pVTnNhV05yT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RWIzVmliR1ZEYkdsamEwTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdSeVlXYzZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrUnlZV2M2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZERZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa2NtRm5SVzVrT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFY21GblJXNWtPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVFY21GblJXNWtRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1pISmhaMFZ1ZEdWeU9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RWNtRm5SVzUwWlhJNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrUnlZV2RGYm5SbGNrTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdSeVlXZEZlR2wwT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFY21GblJYaHBkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UkhKaFowVjRhWFJEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmtjbUZuVEdWaGRtVTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrUnlZV2RNWldGMlpUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSSEpoWjB4bFlYWmxRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1pISmhaMDkyWlhJNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZFBkbVZ5T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RWNtRm5UM1psY2tOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1J5WVdkVGRHRnlkRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVSSEpoWjFOMFlYSjBPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVFY21GblUzUmhjblJEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmtjbTl3T2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFY205d09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUVjbTl3UTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaSFZ5WVhScGIyNURhR0Z1WjJVNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtSMWNtRjBhVzl1UTJoaGJtZGxPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVFZFhKaGRHbHZia05vWVc1blpVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdWdGNIUnBaV1E2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1Z0Y0hScFpXUTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia1Z0Y0hScFpXUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCbGJtTnllWEIwWldRNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtWdVkzSjVjSFJsWkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJXNWpjbmx3ZEdWa1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWlc1a1pXUTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrVnVaR1ZrT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RmJtUmxaRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHVnljbTl5T2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVGY25KdmNqb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSWEp5YjNKRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JtYjJOMWN6b2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJtOWpkWE02SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtadlkzVnpRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2FXNXdkWFE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia2x1Y0hWME9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUpibkIxZEVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR3RsZVVSdmQyNDZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrdGxlVVJ2ZDI0NklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrdGxlVVJ2ZDI1RFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JyWlhsUWNtVnpjem9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVTMlY1VUhKbGMzTTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia3RsZVZCeVpYTnpRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2EyVjVWWEE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia3RsZVZWd09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUxaWGxWY0VOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR3h2WVdRNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2Ymt4dllXUTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia3h2WVdSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JzYjJGa1pXUkVZWFJoT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVNYjJGa1pXUkVZWFJoT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TWIyRmtaV1JFWVhSaFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYkc5aFpHVmtUV1YwWVdSaGRHRTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJreHZZV1JsWkUxbGRHRmtZWFJoT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TWIyRmtaV1JOWlhSaFpHRjBZVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHeHZZV1JUZEdGeWREb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVRHOWhaRk4wWVhKME9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNU1iMkZrVTNSaGNuUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNBdkx5Qk9iM1JsT2lCWFpTQmtieUJ1YjNRZ1lXeHNiM2NnYkdsemRHVnVhVzVuSUhSdklHMXZkWE5sVDNabGNpQmxkbVZ1ZEhNdUlFbHVjM1JsWVdRc0lIVnpaU0IwYUdWY2JpQWdMeThnYjI1TmIzVnpaVVZ1ZEdWeUwyOXVUVzkxYzJWTVpXRjJaU0JqY21WaGRHVmtJR0o1SUdCRmJuUmxja3hsWVhabFJYWmxiblJRYkhWbmFXNWdMbHh1SUNCdGIzVnpaVVJ2ZDI0NklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmsxdmRYTmxSRzkzYmpvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVRXOTFjMlZFYjNkdVEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYlc5MWMyVk5iM1psT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVOYjNWelpVMXZkbVU2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmsxdmRYTmxUVzkyWlVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJRzF2ZFhObFQzVjBPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU5iM1Z6WlU5MWREb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVUVzkxYzJWUGRYUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCdGIzVnpaVTkyWlhJNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmsxdmRYTmxUM1psY2pvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVRXOTFjMlZQZG1WeVEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYlc5MWMyVlZjRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVUVzkxYzJWVmNEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVUVzkxYzJWVmNFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhCaGMzUmxPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVFZWE4wWlRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVVHRnpkR1ZEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQndZWFZ6WlRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VUdGMWMyVTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZibEJoZFhObFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnY0d4aGVUb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVVHeGhlVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VUd4aGVVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhCc1lYbHBibWM2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibEJzWVhscGJtYzZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZibEJzWVhscGJtZERZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCd2NtOW5jbVZ6Y3pvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VUhKdlozSmxjM002SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxCeWIyZHlaWE56UTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjbUYwWlVOb1lXNW5aVG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVbUYwWlVOb1lXNW5aVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VW1GMFpVTm9ZVzVuWlVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSEpsYzJWME9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1U1pYTmxkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VW1WelpYUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCelkzSnZiR3c2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibE5qY205c2JEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVVMk55YjJ4c1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYzJWbGEyVmtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVRaV1ZyWldRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsTmxaV3RsWkVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSE5sWld0cGJtYzZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsTmxaV3RwYm1jNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsTmxaV3RwYm1kRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0J6ZEdGc2JHVmtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVRkR0ZzYkdWa09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVRkR0ZzYkdWa1EyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYzNWaWJXbDBPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVRkV0p0YVhRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsTjFZbTFwZEVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSE4xYzNCbGJtUTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsTjFjM0JsYm1RNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsTjFjM0JsYm1SRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0IwYVcxbFZYQmtZWFJsT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVVYVcxbFZYQmtZWFJsT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1VWFXMWxWWEJrWVhSbFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnZEc5MVkyaERZVzVqWld3NklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxSdmRXTm9RMkZ1WTJWc09pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVViM1ZqYUVOaGJtTmxiRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lIUnZkV05vUlc1a09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VWIzVmphRVZ1WkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVZHOTFZMmhGYm1SRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0IwYjNWamFFMXZkbVU2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibFJ2ZFdOb1RXOTJaVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1Vkc5MVkyaE5iM1psUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkRzkxWTJoVGRHRnlkRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVWRzkxWTJoVGRHRnlkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1Vkc5MVkyaFRkR0Z5ZEVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSFp2YkhWdFpVTm9ZVzVuWlRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1Vm05c2RXMWxRMmhoYm1kbE9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVdiMngxYldWRGFHRnVaMlZEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQjNZV2wwYVc1bk9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1WFlXbDBhVzVuT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1WFlXbDBhVzVuUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkMmhsWld3NklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2Ymxkb1pXVnNPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVYYUdWbGJFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUIwYjNCTVpYWmxiRVYyWlc1MGMxUnZSR2x6Y0dGMFkyaERiMjVtYVdjZ1BTQjdYRzRnSUhSdmNFRmliM0owT2lCbGRtVnVkRlI1Y0dWekxtRmliM0owTEZ4dUlDQjBiM0JDYkhWeU9pQmxkbVZ1ZEZSNWNHVnpMbUpzZFhJc1hHNGdJSFJ2Y0VOaGJsQnNZWGs2SUdWMlpXNTBWSGx3WlhNdVkyRnVVR3hoZVN4Y2JpQWdkRzl3UTJGdVVHeGhlVlJvY205MVoyZzZJR1YyWlc1MFZIbHdaWE11WTJGdVVHeGhlVlJvY205MVoyZ3NYRzRnSUhSdmNFTnNhV05yT2lCbGRtVnVkRlI1Y0dWekxtTnNhV05yTEZ4dUlDQjBiM0JEYjI1MFpYaDBUV1Z1ZFRvZ1pYWmxiblJVZVhCbGN5NWpiMjUwWlhoMFRXVnVkU3hjYmlBZ2RHOXdRMjl3ZVRvZ1pYWmxiblJVZVhCbGN5NWpiM0I1TEZ4dUlDQjBiM0JEZFhRNklHVjJaVzUwVkhsd1pYTXVZM1YwTEZ4dUlDQjBiM0JFYjNWaWJHVkRiR2xqYXpvZ1pYWmxiblJVZVhCbGN5NWtiM1ZpYkdWRGJHbGpheXhjYmlBZ2RHOXdSSEpoWnpvZ1pYWmxiblJVZVhCbGN5NWtjbUZuTEZ4dUlDQjBiM0JFY21GblJXNWtPaUJsZG1WdWRGUjVjR1Z6TG1SeVlXZEZibVFzWEc0Z0lIUnZjRVJ5WVdkRmJuUmxjam9nWlhabGJuUlVlWEJsY3k1a2NtRm5SVzUwWlhJc1hHNGdJSFJ2Y0VSeVlXZEZlR2wwT2lCbGRtVnVkRlI1Y0dWekxtUnlZV2RGZUdsMExGeHVJQ0IwYjNCRWNtRm5UR1ZoZG1VNklHVjJaVzUwVkhsd1pYTXVaSEpoWjB4bFlYWmxMRnh1SUNCMGIzQkVjbUZuVDNabGNqb2daWFpsYm5SVWVYQmxjeTVrY21GblQzWmxjaXhjYmlBZ2RHOXdSSEpoWjFOMFlYSjBPaUJsZG1WdWRGUjVjR1Z6TG1SeVlXZFRkR0Z5ZEN4Y2JpQWdkRzl3UkhKdmNEb2daWFpsYm5SVWVYQmxjeTVrY205d0xGeHVJQ0IwYjNCRWRYSmhkR2x2YmtOb1lXNW5aVG9nWlhabGJuUlVlWEJsY3k1a2RYSmhkR2x2YmtOb1lXNW5aU3hjYmlBZ2RHOXdSVzF3ZEdsbFpEb2daWFpsYm5SVWVYQmxjeTVsYlhCMGFXVmtMRnh1SUNCMGIzQkZibU55ZVhCMFpXUTZJR1YyWlc1MFZIbHdaWE11Wlc1amNubHdkR1ZrTEZ4dUlDQjBiM0JGYm1SbFpEb2daWFpsYm5SVWVYQmxjeTVsYm1SbFpDeGNiaUFnZEc5d1JYSnliM0k2SUdWMlpXNTBWSGx3WlhNdVpYSnliM0lzWEc0Z0lIUnZjRVp2WTNWek9pQmxkbVZ1ZEZSNWNHVnpMbVp2WTNWekxGeHVJQ0IwYjNCSmJuQjFkRG9nWlhabGJuUlVlWEJsY3k1cGJuQjFkQ3hjYmlBZ2RHOXdTMlY1Ukc5M2Jqb2daWFpsYm5SVWVYQmxjeTVyWlhsRWIzZHVMRnh1SUNCMGIzQkxaWGxRY21WemN6b2daWFpsYm5SVWVYQmxjeTVyWlhsUWNtVnpjeXhjYmlBZ2RHOXdTMlY1VlhBNklHVjJaVzUwVkhsd1pYTXVhMlY1VlhBc1hHNGdJSFJ2Y0V4dllXUTZJR1YyWlc1MFZIbHdaWE11Ykc5aFpDeGNiaUFnZEc5d1RHOWhaR1ZrUkdGMFlUb2daWFpsYm5SVWVYQmxjeTVzYjJGa1pXUkVZWFJoTEZ4dUlDQjBiM0JNYjJGa1pXUk5aWFJoWkdGMFlUb2daWFpsYm5SVWVYQmxjeTVzYjJGa1pXUk5aWFJoWkdGMFlTeGNiaUFnZEc5d1RHOWhaRk4wWVhKME9pQmxkbVZ1ZEZSNWNHVnpMbXh2WVdSVGRHRnlkQ3hjYmlBZ2RHOXdUVzkxYzJWRWIzZHVPaUJsZG1WdWRGUjVjR1Z6TG0xdmRYTmxSRzkzYml4Y2JpQWdkRzl3VFc5MWMyVk5iM1psT2lCbGRtVnVkRlI1Y0dWekxtMXZkWE5sVFc5MlpTeGNiaUFnZEc5d1RXOTFjMlZQZFhRNklHVjJaVzUwVkhsd1pYTXViVzkxYzJWUGRYUXNYRzRnSUhSdmNFMXZkWE5sVDNabGNqb2daWFpsYm5SVWVYQmxjeTV0YjNWelpVOTJaWElzWEc0Z0lIUnZjRTF2ZFhObFZYQTZJR1YyWlc1MFZIbHdaWE11Ylc5MWMyVlZjQ3hjYmlBZ2RHOXdVR0Z6ZEdVNklHVjJaVzUwVkhsd1pYTXVjR0Z6ZEdVc1hHNGdJSFJ2Y0ZCaGRYTmxPaUJsZG1WdWRGUjVjR1Z6TG5CaGRYTmxMRnh1SUNCMGIzQlFiR0Y1T2lCbGRtVnVkRlI1Y0dWekxuQnNZWGtzWEc0Z0lIUnZjRkJzWVhscGJtYzZJR1YyWlc1MFZIbHdaWE11Y0d4aGVXbHVaeXhjYmlBZ2RHOXdVSEp2WjNKbGMzTTZJR1YyWlc1MFZIbHdaWE11Y0hKdlozSmxjM01zWEc0Z0lIUnZjRkpoZEdWRGFHRnVaMlU2SUdWMlpXNTBWSGx3WlhNdWNtRjBaVU5vWVc1blpTeGNiaUFnZEc5d1VtVnpaWFE2SUdWMlpXNTBWSGx3WlhNdWNtVnpaWFFzWEc0Z0lIUnZjRk5qY205c2JEb2daWFpsYm5SVWVYQmxjeTV6WTNKdmJHd3NYRzRnSUhSdmNGTmxaV3RsWkRvZ1pYWmxiblJVZVhCbGN5NXpaV1ZyWldRc1hHNGdJSFJ2Y0ZObFpXdHBibWM2SUdWMlpXNTBWSGx3WlhNdWMyVmxhMmx1Wnl4Y2JpQWdkRzl3VTNSaGJHeGxaRG9nWlhabGJuUlVlWEJsY3k1emRHRnNiR1ZrTEZ4dUlDQjBiM0JUZFdKdGFYUTZJR1YyWlc1MFZIbHdaWE11YzNWaWJXbDBMRnh1SUNCMGIzQlRkWE53Wlc1a09pQmxkbVZ1ZEZSNWNHVnpMbk4xYzNCbGJtUXNYRzRnSUhSdmNGUnBiV1ZWY0dSaGRHVTZJR1YyWlc1MFZIbHdaWE11ZEdsdFpWVndaR0YwWlN4Y2JpQWdkRzl3Vkc5MVkyaERZVzVqWld3NklHVjJaVzUwVkhsd1pYTXVkRzkxWTJoRFlXNWpaV3dzWEc0Z0lIUnZjRlJ2ZFdOb1JXNWtPaUJsZG1WdWRGUjVjR1Z6TG5SdmRXTm9SVzVrTEZ4dUlDQjBiM0JVYjNWamFFMXZkbVU2SUdWMlpXNTBWSGx3WlhNdWRHOTFZMmhOYjNabExGeHVJQ0IwYjNCVWIzVmphRk4wWVhKME9pQmxkbVZ1ZEZSNWNHVnpMblJ2ZFdOb1UzUmhjblFzWEc0Z0lIUnZjRlp2YkhWdFpVTm9ZVzVuWlRvZ1pYWmxiblJVZVhCbGN5NTJiMngxYldWRGFHRnVaMlVzWEc0Z0lIUnZjRmRoYVhScGJtYzZJR1YyWlc1MFZIbHdaWE11ZDJGcGRHbHVaeXhjYmlBZ2RHOXdWMmhsWld3NklHVjJaVzUwVkhsd1pYTXVkMmhsWld4Y2JuMDdYRzVjYm1admNpQW9kbUZ5SUhSNWNHVWdhVzRnZEc5d1RHVjJaV3hGZG1WdWRITlViMFJwYzNCaGRHTm9RMjl1Wm1sbktTQjdYRzRnSUhSdmNFeGxkbVZzUlhabGJuUnpWRzlFYVhOd1lYUmphRU52Ym1acFoxdDBlWEJsWFM1a1pYQmxibVJsYm1OcFpYTWdQU0JiZEhsd1pWMDdYRzU5WEc1Y2JuWmhjaUJQVGw5RFRFbERTMTlMUlZrZ1BTQnJaWGxQWmloN0lHOXVRMnhwWTJzNklHNTFiR3dnZlNrN1hHNTJZWElnYjI1RGJHbGphMHhwYzNSbGJtVnljeUE5SUh0OU8xeHVYRzUyWVhJZ1UybHRjR3hsUlhabGJuUlFiSFZuYVc0Z1BTQjdYRzVjYmlBZ1pYWmxiblJVZVhCbGN6b2daWFpsYm5SVWVYQmxjeXhjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUnZjRXhsZG1Wc1ZIbHdaU0JTWldOdmNtUWdabkp2YlNCZ1JYWmxiblJEYjI1emRHRnVkSE5nTGx4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWMlpXNTBWR0Z5WjJWMGZTQjBiM0JNWlhabGJGUmhjbWRsZENCVWFHVWdiR2x6ZEdWdWFXNW5JR052YlhCdmJtVnVkQ0J5YjI5MElHNXZaR1V1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBiM0JNWlhabGJGUmhjbWRsZEVsRUlFbEVJRzltSUdCMGIzQk1aWFpsYkZSaGNtZGxkR0F1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnVZWFJwZG1WRmRtVnVkQ0JPWVhScGRtVWdZbkp2ZDNObGNpQmxkbVZ1ZEM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3S24wZ1FXNGdZV05qZFcxMWJHRjBhVzl1SUc5bUlITjViblJvWlhScFl5QmxkbVZ1ZEhNdVhHNGdJQ0FxSUVCelpXVWdlMFYyWlc1MFVHeDFaMmx1U0hWaUxtVjRkSEpoWTNSRmRtVnVkSE45WEc0Z0lDQXFMMXh1SUNCbGVIUnlZV04wUlhabGJuUnpPaUJtZFc1amRHbHZiaUFvZEc5d1RHVjJaV3hVZVhCbExDQjBiM0JNWlhabGJGUmhjbWRsZEN3Z2RHOXdUR1YyWld4VVlYSm5aWFJKUkN3Z2JtRjBhWFpsUlhabGJuUXNJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBLU0I3WEc0Z0lDQWdkbUZ5SUdScGMzQmhkR05vUTI5dVptbG5JRDBnZEc5d1RHVjJaV3hGZG1WdWRITlViMFJwYzNCaGRHTm9RMjl1Wm1sblczUnZjRXhsZG1Wc1ZIbHdaVjA3WEc0Z0lDQWdhV1lnS0NGa2FYTndZWFJqYUVOdmJtWnBaeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCRmRtVnVkRU52Ym5OMGNuVmpkRzl5TzF4dUlDQWdJSE4zYVhSamFDQW9kRzl3VEdWMlpXeFVlWEJsS1NCN1hHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdRV0p2Y25RNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdRMkZ1VUd4aGVUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JEWVc1UWJHRjVWR2h5YjNWbmFEcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JFZFhKaGRHbHZia05vWVc1blpUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JGYlhCMGFXVmtPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VWdVkzSjVjSFJsWkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkZibVJsWkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkZjbkp2Y2pwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkpibkIxZERwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQk1iMkZrT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFeHZZV1JsWkVSaGRHRTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VEc5aFpHVmtUV1YwWVdSaGRHRTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VEc5aFpGTjBZWEowT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGQmhkWE5sT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGQnNZWGs2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1VHeGhlV2x1WnpwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlFjbTluY21WemN6cGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JTWVhSbFEyaGhibWRsT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGSmxjMlYwT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGTmxaV3RsWkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlRaV1ZyYVc1bk9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRk4wWVd4c1pXUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VTNWaWJXbDBPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZOMWMzQmxibVE2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1ZHbHRaVlZ3WkdGMFpUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JXYjJ4MWJXVkRhR0Z1WjJVNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWMkZwZEdsdVp6cGNiaUFnSUNBZ0lDQWdMeThnU0ZSTlRDQkZkbVZ1ZEhOY2JpQWdJQ0FnSUNBZ0x5OGdRSE5sWlNCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOW9kRzFzTlM5cGJtUmxlQzVvZEcxc0kyVjJaVzUwY3kwd1hHNGdJQ0FnSUNBZ0lFVjJaVzUwUTI5dWMzUnlkV04wYjNJZ1BTQlRlVzUwYUdWMGFXTkZkbVZ1ZER0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1MyVjVVSEpsYzNNNlhHNGdJQ0FnSUNBZ0lDOHZJRVpwY21WR2IzZ2dZM0psWVhSbGN5QmhJR3RsZVhCeVpYTnpJR1YyWlc1MElHWnZjaUJtZFc1amRHbHZiaUJyWlhseklIUnZieTRnVkdocGN5QnlaVzF2ZG1WelhHNGdJQ0FnSUNBZ0lDOHZJSFJvWlNCMWJuZGhiblJsWkNCclpYbHdjbVZ6Y3lCbGRtVnVkSE11SUVWdWRHVnlJR2x6SUdodmQyVjJaWElnWW05MGFDQndjbWx1ZEdGaWJHVWdZVzVrWEc0Z0lDQWdJQ0FnSUM4dklHNXZiaTF3Y21sdWRHRmliR1V1SUU5dVpTQjNiM1ZzWkNCbGVIQmxZM1FnVkdGaUlIUnZJR0psSUdGeklIZGxiR3dnS0dKMWRDQnBkQ0JwYzI0bmRDa3VYRzRnSUNBZ0lDQWdJR2xtSUNoblpYUkZkbVZ1ZEVOb1lYSkRiMlJsS0c1aGRHbDJaVVYyWlc1MEtTQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBdktpQm1ZV3hzY3lCMGFISnZkV2RvSUNvdlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdTMlY1Ukc5M2JqcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JMWlhsVmNEcGNiaUFnSUNBZ0lDQWdSWFpsYm5SRGIyNXpkSEoxWTNSdmNpQTlJRk41Ym5Sb1pYUnBZMHRsZVdKdllYSmtSWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFSnNkWEk2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1JtOWpkWE02WEc0Z0lDQWdJQ0FnSUVWMlpXNTBRMjl1YzNSeWRXTjBiM0lnUFNCVGVXNTBhR1YwYVdOR2IyTjFjMFYyWlc1ME8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkRiR2xqYXpwY2JpQWdJQ0FnSUNBZ0x5OGdSbWx5WldadmVDQmpjbVZoZEdWeklHRWdZMnhwWTJzZ1pYWmxiblFnYjI0Z2NtbG5hSFFnYlc5MWMyVWdZMnhwWTJ0ekxpQlVhR2x6SUhKbGJXOTJaWE1nZEdobFhHNGdJQ0FnSUNBZ0lDOHZJSFZ1ZDJGdWRHVmtJR05zYVdOcklHVjJaVzUwY3k1Y2JpQWdJQ0FnSUNBZ2FXWWdLRzVoZEdsMlpVVjJaVzUwTG1KMWRIUnZiaUE5UFQwZ01pa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQXZLaUJtWVd4c2N5QjBhSEp2ZFdkb0lDb3ZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UTI5dWRHVjRkRTFsYm5VNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdSRzkxWW14bFEyeHBZMnM2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1RXOTFjMlZFYjNkdU9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRTF2ZFhObFRXOTJaVHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCTmIzVnpaVTkxZERwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQk5iM1Z6WlU5MlpYSTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VFc5MWMyVlZjRHBjYmlBZ0lDQWdJQ0FnUlhabGJuUkRiMjV6ZEhKMVkzUnZjaUE5SUZONWJuUm9aWFJwWTAxdmRYTmxSWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFUnlZV2M2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1JISmhaMFZ1WkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkVjbUZuUlc1MFpYSTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UkhKaFowVjRhWFE2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1JISmhaMHhsWVhabE9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVJ5WVdkUGRtVnlPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VSeVlXZFRkR0Z5ZERwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkVjbTl3T2x4dUlDQWdJQ0FnSUNCRmRtVnVkRU52Ym5OMGNuVmpkRzl5SUQwZ1UzbHVkR2hsZEdsalJISmhaMFYyWlc1ME8xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlViM1ZqYUVOaGJtTmxiRHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVWIzVmphRVZ1WkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlViM1ZqYUUxdmRtVTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vkc5MVkyaFRkR0Z5ZERwY2JpQWdJQ0FnSUNBZ1JYWmxiblJEYjI1emRISjFZM1J2Y2lBOUlGTjViblJvWlhScFkxUnZkV05vUlhabGJuUTdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRk5qY205c2JEcGNiaUFnSUNBZ0lDQWdSWFpsYm5SRGIyNXpkSEoxWTNSdmNpQTlJRk41Ym5Sb1pYUnBZMVZKUlhabGJuUTdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRmRvWldWc09seHVJQ0FnSUNBZ0lDQkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUlEMGdVM2x1ZEdobGRHbGpWMmhsWld4RmRtVnVkRHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UTI5d2VUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JEZFhRNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdVR0Z6ZEdVNlhHNGdJQ0FnSUNBZ0lFVjJaVzUwUTI5dWMzUnlkV04wYjNJZ1BTQlRlVzUwYUdWMGFXTkRiR2x3WW05aGNtUkZkbVZ1ZER0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdmVnh1SUNBZ0lDRkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUlEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFOcGJYQnNaVVYyWlc1MFVHeDFaMmx1T2lCVmJtaGhibVJzWldRZ1pYWmxiblFnZEhsd1pTd2dZQ1Z6WUM0bkxDQjBiM0JNWlhabGJGUjVjR1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCMllYSWdaWFpsYm5RZ1BTQkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUxtZGxkRkJ2YjJ4bFpDaGthWE53WVhSamFFTnZibVpwWnl3Z2RHOXdUR1YyWld4VVlYSm5aWFJKUkN3Z2JtRjBhWFpsUlhabGJuUXNJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBLVHRjYmlBZ0lDQkZkbVZ1ZEZCeWIzQmhaMkYwYjNKekxtRmpZM1Z0ZFd4aGRHVlVkMjlRYUdGelpVUnBjM0JoZEdOb1pYTW9aWFpsYm5RcE8xeHVJQ0FnSUhKbGRIVnliaUJsZG1WdWREdGNiaUFnZlN4Y2JseHVJQ0JrYVdSUWRYUk1hWE4wWlc1bGNqb2dablZ1WTNScGIyNGdLR2xrTENCeVpXZHBjM1J5WVhScGIyNU9ZVzFsTENCc2FYTjBaVzVsY2lrZ2UxeHVJQ0FnSUM4dklFMXZZbWxzWlNCVFlXWmhjbWtnWkc5bGN5QnViM1FnWm1seVpTQndjbTl3WlhKc2VTQmlkV0ppYkdVZ1kyeHBZMnNnWlhabGJuUnpJRzl1WEc0Z0lDQWdMeThnYm05dUxXbHVkR1Z5WVdOMGFYWmxJR1ZzWlcxbGJuUnpMQ0IzYUdsamFDQnRaV0Z1Y3lCa1pXeGxaMkYwWldRZ1kyeHBZMnNnYkdsemRHVnVaWEp6SUdSdklHNXZkRnh1SUNBZ0lDOHZJR1pwY21VdUlGUm9aU0IzYjNKcllYSnZkVzVrSUdadmNpQjBhR2x6SUdKMVp5QnBiblp2YkhabGN5QmhkSFJoWTJocGJtY2dZVzRnWlcxd2RIa2dZMnhwWTJ0Y2JpQWdJQ0F2THlCc2FYTjBaVzVsY2lCdmJpQjBhR1VnZEdGeVoyVjBJRzV2WkdVdVhHNGdJQ0FnYVdZZ0tISmxaMmx6ZEhKaGRHbHZiazVoYldVZ1BUMDlJRTlPWDBOTVNVTkxYMHRGV1NrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzV2WkdVZ1BTQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVW9hV1FwTzF4dUlDQWdJQ0FnYVdZZ0tDRnZia05zYVdOclRHbHpkR1Z1WlhKelcybGtYU2tnZTF4dUlDQWdJQ0FnSUNCdmJrTnNhV05yVEdsemRHVnVaWEp6VzJsa1hTQTlJRVYyWlc1MFRHbHpkR1Z1WlhJdWJHbHpkR1Z1S0c1dlpHVXNJQ2RqYkdsamF5Y3NJR1Z0Y0hSNVJuVnVZM1JwYjI0cE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQjNhV3hzUkdWc1pYUmxUR2x6ZEdWdVpYSTZJR1oxYm1OMGFXOXVJQ2hwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ2UxeHVJQ0FnSUdsbUlDaHlaV2RwYzNSeVlYUnBiMjVPWVcxbElEMDlQU0JQVGw5RFRFbERTMTlMUlZrcElIdGNiaUFnSUNBZ0lHOXVRMnhwWTJ0TWFYTjBaVzVsY25OYmFXUmRMbkpsYlc5MlpTZ3BPMXh1SUNBZ0lDQWdaR1ZzWlhSbElHOXVRMnhwWTJ0TWFYTjBaVzVsY25OYmFXUmRPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZOcGJYQnNaVVYyWlc1MFVHeDFaMmx1T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljQ2xpcGJvYXJkRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jbGlwYm9hcmQtYXBpcy9cbiAqL1xudmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBjbGlwYm9hcmREYXRhOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZERhdGEnIGluIGV2ZW50ID8gZXZlbnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50LCBDbGlwYm9hcmRFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1jb21wb3NpdGlvbmV2ZW50c1xuICovXG52YXIgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljQ29tcG9zaXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQsIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY0RyYWdFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBEcmFnRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgRHJhZ0V2ZW50SW50ZXJmYWNlID0ge1xuICBkYXRhVHJhbnNmZXI6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0RyYWdFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNEcmFnRXZlbnQsIERyYWdFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRHJhZ0V2ZW50OyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBFdmVudEludGVyZmFjZSA9IHtcbiAgdHlwZTogbnVsbCxcbiAgLy8gY3VycmVudFRhcmdldCBpcyBzZXQgd2hlbiBkaXNwYXRjaGluZzsgbm8gdXNlIGluIGNvcHlpbmcgaXQgaGVyZVxuICBjdXJyZW50VGFyZ2V0OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCxcbiAgZXZlbnRQaGFzZTogbnVsbCxcbiAgYnViYmxlczogbnVsbCxcbiAgY2FuY2VsYWJsZTogbnVsbCxcbiAgdGltZVN0YW1wOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQudGltZVN0YW1wIHx8IERhdGUubm93KCk7XG4gIH0sXG4gIGRlZmF1bHRQcmV2ZW50ZWQ6IG51bGwsXG4gIGlzVHJ1c3RlZDogbnVsbFxufTtcblxuLyoqXG4gKiBTeW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxseSBpbiByZXNwb25zZSB0byBhXG4gKiB0b3AtbGV2ZWwgZXZlbnQgZGVsZWdhdGlvbiBoYW5kbGVyLlxuICpcbiAqIFRoZXNlIHN5c3RlbXMgc2hvdWxkIGdlbmVyYWxseSB1c2UgcG9vbGluZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBnYXJiYWdlXG4gKiBjb2xsZWN0aW9uLiBUaGUgc3lzdGVtIHNob3VsZCBjaGVjayBgaXNQZXJzaXN0ZW50YCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVcbiAqIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBpbnRvIHRoZSBwb29sIGFmdGVyIGJlaW5nIGRpc3BhdGNoZWQuIFVzZXJzIHRoYXRcbiAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQgc2hvdWxkIGludm9rZSBgcGVyc2lzdGAuXG4gKlxuICogU3ludGhldGljIGV2ZW50cyAoYW5kIHN1YmNsYXNzZXMpIGltcGxlbWVudCB0aGUgRE9NIExldmVsIDMgRXZlbnRzIEFQSSBieVxuICogbm9ybWFsaXppbmcgYnJvd3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW1wbGVtZW50IGFcbiAqIERPTSBpbnRlcmZhY2U7IGN1c3RvbSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBldmVudHMgY2FuIGFsc28gc3ViY2xhc3MgdGhpcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHRoaXMuZGlzcGF0Y2hDb25maWcgPSBkaXNwYXRjaENvbmZpZztcbiAgdGhpcy5kaXNwYXRjaE1hcmtlciA9IGRpc3BhdGNoTWFya2VyO1xuICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7XG4gIHRoaXMudGFyZ2V0ID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG4gIHRoaXMuY3VycmVudFRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuXG4gIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgaWYgKCFJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIG5vcm1hbGl6ZSA9IEludGVyZmFjZVtwcm9wTmFtZV07XG4gICAgaWYgKG5vcm1hbGl6ZSkge1xuICAgICAgdGhpc1twcm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTtcbiAgICB9XG4gIH1cblxuICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVsbCA/IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVFdmVudC5yZXR1cm5WYWx1ZSA9PT0gZmFsc2U7XG4gIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcbiAgfVxuICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlO1xufVxuXG5hc3NpZ24oU3ludGhldGljRXZlbnQucHJvdG90eXBlLCB7XG5cbiAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGV2ZW50LCAnVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3VcXCdyZSAnICsgJ3NlZWluZyB0aGlzLCB5b3VcXCdyZSBjYWxsaW5nIGBwcmV2ZW50RGVmYXVsdGAgb24gYSAnICsgJ3JlbGVhc2VkL251bGxpZmllZCBzeW50aGV0aWMgZXZlbnQuIFRoaXMgaXMgYSBuby1vcC4gU2VlICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGV2ZW50LCAnVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3VcXCdyZSAnICsgJ3NlZWluZyB0aGlzLCB5b3VcXCdyZSBjYWxsaW5nIGBzdG9wUHJvcGFnYXRpb25gIG9uIGEgJyArICdyZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiBUaGlzIGlzIGEgbm8tb3AuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdlIHJlbGVhc2UgYWxsIGRpc3BhdGNoZWQgYFN5bnRoZXRpY0V2ZW50YHMgYWZ0ZXIgZWFjaCBldmVudCBsb29wLCBhZGRpbmdcbiAgICogdGhlbSBiYWNrIGludG8gdGhlIHBvb2wuIFRoaXMgYWxsb3dzIGEgd2F5IHRvIGhvbGQgb250byBhIHJlZmVyZW5jZSB0aGF0XG4gICAqIHdvbid0IGJlIGFkZGVkIGJhY2sgaW50byB0aGUgcG9vbC5cbiAgICovXG4gIHBlcnNpc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmlzUGVyc2lzdGVudCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhpcyBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoaXMgc2hvdWxkIG5vdCBiZSByZWxlYXNlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNQZXJzaXN0ZW50OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UsXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIGBkZXN0cnVjdG9yYCBvbiBlYWNoIGluc3RhbmNlIGl0IHJlbGVhc2VzLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcbiAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IG51bGw7XG4gICAgdGhpcy5kaXNwYXRjaE1hcmtlciA9IG51bGw7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7XG4gIH1cblxufSk7XG5cblN5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50SW50ZXJmYWNlO1xuXG4vKipcbiAqIEhlbHBlciB0byByZWR1Y2UgYm9pbGVycGxhdGUgd2hlbiBjcmVhdGluZyBzdWJjbGFzc2VzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzXG4gKiBAcGFyYW0gez9vYmplY3R9IEludGVyZmFjZVxuICovXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIEludGVyZmFjZSkge1xuICB2YXIgU3VwZXIgPSB0aGlzO1xuXG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN1cGVyLnByb3RvdHlwZSk7XG4gIGFzc2lnbihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlwZSk7XG4gIENsYXNzLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2xhc3M7XG5cbiAgQ2xhc3MuSW50ZXJmYWNlID0gYXNzaWduKHt9LCBTdXBlci5JbnRlcmZhY2UsIEludGVyZmFjZSk7XG4gIENsYXNzLmF1Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzcztcblxuICBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2xhc3MsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7XG59O1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oU3ludGhldGljRXZlbnQsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRXZlbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTlUZVc1MGFHVjBhV05GZG1WdWRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVTNsdWRHaGxkR2xqUlhabGJuUmNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVUc5dmJHVmtRMnhoYzNNZ1BTQnlaWEYxYVhKbEtDY3VMMUJ2YjJ4bFpFTnNZWE56SnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJsYlhCMGVVWjFibU4wYVc5dUlEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZaVzF3ZEhsR2RXNWpkR2x2YmljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiaThxS2x4dUlDb2dRR2x1ZEdWeVptRmpaU0JGZG1WdWRGeHVJQ29nUUhObFpTQm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlFVDAwdFRHVjJaV3d0TXkxRmRtVnVkSE12WEc0Z0tpOWNiblpoY2lCRmRtVnVkRWx1ZEdWeVptRmpaU0E5SUh0Y2JpQWdkSGx3WlRvZ2JuVnNiQ3hjYmlBZ0x5OGdZM1Z5Y21WdWRGUmhjbWRsZENCcGN5QnpaWFFnZDJobGJpQmthWE53WVhSamFHbHVaenNnYm04Z2RYTmxJR2x1SUdOdmNIbHBibWNnYVhRZ2FHVnlaVnh1SUNCamRYSnlaVzUwVkdGeVoyVjBPaUJsYlhCMGVVWjFibU4wYVc5dUxuUm9ZWFJTWlhSMWNtNXpUblZzYkN4Y2JpQWdaWFpsYm5SUWFHRnpaVG9nYm5Wc2JDeGNiaUFnWW5WaVlteGxjem9nYm5Wc2JDeGNiaUFnWTJGdVkyVnNZV0pzWlRvZ2JuVnNiQ3hjYmlBZ2RHbHRaVk4wWVcxd09pQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNCeVpYUjFjbTRnWlhabGJuUXVkR2x0WlZOMFlXMXdJSHg4SUVSaGRHVXVibTkzS0NrN1hHNGdJSDBzWEc0Z0lHUmxabUYxYkhSUWNtVjJaVzUwWldRNklHNTFiR3dzWEc0Z0lHbHpWSEoxYzNSbFpEb2diblZzYkZ4dWZUdGNibHh1THlvcVhHNGdLaUJUZVc1MGFHVjBhV01nWlhabGJuUnpJR0Z5WlNCa2FYTndZWFJqYUdWa0lHSjVJR1YyWlc1MElIQnNkV2RwYm5Nc0lIUjVjR2xqWVd4c2VTQnBiaUJ5WlhOd2IyNXpaU0IwYnlCaFhHNGdLaUIwYjNBdGJHVjJaV3dnWlhabGJuUWdaR1ZzWldkaGRHbHZiaUJvWVc1a2JHVnlMbHh1SUNwY2JpQXFJRlJvWlhObElITjVjM1JsYlhNZ2MyaHZkV3hrSUdkbGJtVnlZV3hzZVNCMWMyVWdjRzl2YkdsdVp5QjBieUJ5WldSMVkyVWdkR2hsSUdaeVpYRjFaVzVqZVNCdlppQm5ZWEppWVdkbFhHNGdLaUJqYjJ4c1pXTjBhVzl1TGlCVWFHVWdjM2x6ZEdWdElITm9iM1ZzWkNCamFHVmpheUJnYVhOUVpYSnphWE4wWlc1MFlDQjBieUJrWlhSbGNtMXBibVVnZDJobGRHaGxjaUIwYUdWY2JpQXFJR1YyWlc1MElITm9iM1ZzWkNCaVpTQnlaV3hsWVhObFpDQnBiblJ2SUhSb1pTQndiMjlzSUdGbWRHVnlJR0psYVc1bklHUnBjM0JoZEdOb1pXUXVJRlZ6WlhKeklIUm9ZWFJjYmlBcUlHNWxaV1FnWVNCd1pYSnphWE4wWldRZ1pYWmxiblFnYzJodmRXeGtJR2x1ZG05clpTQmdjR1Z5YzJsemRHQXVYRzRnS2x4dUlDb2dVM2x1ZEdobGRHbGpJR1YyWlc1MGN5QW9ZVzVrSUhOMVltTnNZWE56WlhNcElHbHRjR3hsYldWdWRDQjBhR1VnUkU5TklFeGxkbVZzSURNZ1JYWmxiblJ6SUVGUVNTQmllVnh1SUNvZ2JtOXliV0ZzYVhwcGJtY2dZbkp2ZDNObGNpQnhkV2x5YTNNdUlGTjFZbU5zWVhOelpYTWdaRzhnYm05MElHNWxZMlZ6YzJGeWFXeDVJR2hoZG1VZ2RHOGdhVzF3YkdWdFpXNTBJR0ZjYmlBcUlFUlBUU0JwYm5SbGNtWmhZMlU3SUdOMWMzUnZiU0JoY0hCc2FXTmhkR2x2YmkxemNHVmphV1pwWXlCbGRtVnVkSE1nWTJGdUlHRnNjMjhnYzNWaVkyeGhjM01nZEdocGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1pHbHpjR0YwWTJoRGIyNW1hV2NnUTI5dVptbG5kWEpoZEdsdmJpQjFjMlZrSUhSdklHUnBjM0JoZEdOb0lIUm9hWE1nWlhabGJuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWkdsemNHRjBZMmhOWVhKclpYSWdUV0Z5YTJWeUlHbGtaVzUwYVdaNWFXNW5JSFJvWlNCbGRtVnVkQ0IwWVhKblpYUXVYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1GMGFYWmxSWFpsYm5RZ1RtRjBhWFpsSUdKeWIzZHpaWElnWlhabGJuUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlGTjViblJvWlhScFkwVjJaVzUwS0dScGMzQmhkR05vUTI5dVptbG5MQ0JrYVhOd1lYUmphRTFoY210bGNpd2dibUYwYVhabFJYWmxiblFzSUc1aGRHbDJaVVYyWlc1MFZHRnlaMlYwS1NCN1hHNGdJSFJvYVhNdVpHbHpjR0YwWTJoRGIyNW1hV2NnUFNCa2FYTndZWFJqYUVOdmJtWnBaenRjYmlBZ2RHaHBjeTVrYVhOd1lYUmphRTFoY210bGNpQTlJR1JwYzNCaGRHTm9UV0Z5YTJWeU8xeHVJQ0IwYUdsekxtNWhkR2wyWlVWMlpXNTBJRDBnYm1GMGFYWmxSWFpsYm5RN1hHNGdJSFJvYVhNdWRHRnlaMlYwSUQwZ2JtRjBhWFpsUlhabGJuUlVZWEpuWlhRN1hHNGdJSFJvYVhNdVkzVnljbVZ1ZEZSaGNtZGxkQ0E5SUc1aGRHbDJaVVYyWlc1MFZHRnlaMlYwTzF4dVhHNGdJSFpoY2lCSmJuUmxjbVpoWTJVZ1BTQjBhR2x6TG1OdmJuTjBjblZqZEc5eUxrbHVkR1Z5Wm1GalpUdGNiaUFnWm05eUlDaDJZWElnY0hKdmNFNWhiV1VnYVc0Z1NXNTBaWEptWVdObEtTQjdYRzRnSUNBZ2FXWWdLQ0ZKYm5SbGNtWmhZMlV1YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJRzV2Y20xaGJHbDZaU0E5SUVsdWRHVnlabUZqWlZ0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnYVdZZ0tHNXZjbTFoYkdsNlpTa2dlMXh1SUNBZ0lDQWdkR2hwYzF0d2NtOXdUbUZ0WlYwZ1BTQnViM0p0WVd4cGVtVW9ibUYwYVhabFJYWmxiblFwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBhR2x6VzNCeWIzQk9ZVzFsWFNBOUlHNWhkR2wyWlVWMlpXNTBXM0J5YjNCT1lXMWxYVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0IyWVhJZ1pHVm1ZWFZzZEZCeVpYWmxiblJsWkNBOUlHNWhkR2wyWlVWMlpXNTBMbVJsWm1GMWJIUlFjbVYyWlc1MFpXUWdJVDBnYm5Wc2JDQS9JRzVoZEdsMlpVVjJaVzUwTG1SbFptRjFiSFJRY21WMlpXNTBaV1FnT2lCdVlYUnBkbVZGZG1WdWRDNXlaWFIxY201V1lXeDFaU0E5UFQwZ1ptRnNjMlU3WEc0Z0lHbG1JQ2hrWldaaGRXeDBVSEpsZG1WdWRHVmtLU0I3WEc0Z0lDQWdkR2hwY3k1cGMwUmxabUYxYkhSUWNtVjJaVzUwWldRZ1BTQmxiWEIwZVVaMWJtTjBhVzl1TG5Sb1lYUlNaWFIxY201elZISjFaVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0IwYUdsekxtbHpSR1ZtWVhWc2RGQnlaWFpsYm5SbFpDQTlJR1Z0Y0hSNVJuVnVZM1JwYjI0dWRHaGhkRkpsZEhWeWJuTkdZV3h6WlR0Y2JpQWdmVnh1SUNCMGFHbHpMbWx6VUhKdmNHRm5ZWFJwYjI1VGRHOXdjR1ZrSUQwZ1pXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzBaaGJITmxPMXh1ZlZ4dVhHNWhjM05wWjI0b1UzbHVkR2hsZEdsalJYWmxiblF1Y0hKdmRHOTBlWEJsTENCN1hHNWNiaUFnY0hKbGRtVnVkRVJsWm1GMWJIUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxtUmxabUYxYkhSUWNtVjJaVzUwWldRZ1BTQjBjblZsTzF4dUlDQWdJSFpoY2lCbGRtVnVkQ0E5SUhSb2FYTXVibUYwYVhabFJYWmxiblE3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1YyWlc1MExDQW5WR2hwY3lCemVXNTBhR1YwYVdNZ1pYWmxiblFnYVhNZ2NtVjFjMlZrSUdadmNpQndaWEptYjNKdFlXNWpaU0J5WldGemIyNXpMaUJKWmlCNWIzVmNYQ2R5WlNBbklDc2dKM05sWldsdVp5QjBhR2x6TENCNWIzVmNYQ2R5WlNCallXeHNhVzVuSUdCd2NtVjJaVzUwUkdWbVlYVnNkR0FnYjI0Z1lTQW5JQ3NnSjNKbGJHVmhjMlZrTDI1MWJHeHBabWxsWkNCemVXNTBhR1YwYVdNZ1pYWmxiblF1SUZSb2FYTWdhWE1nWVNCdWJ5MXZjQzRnVTJWbElDY2dLeUFuYUhSMGNITTZMeTltWWk1dFpTOXlaV0ZqZEMxbGRtVnVkQzF3YjI5c2FXNW5JR1p2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1TGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9JV1YyWlc1MEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHVjJaVzUwTG5CeVpYWmxiblJFWldaaGRXeDBLU0I3WEc0Z0lDQWdJQ0JsZG1WdWRDNXdjbVYyWlc1MFJHVm1ZWFZzZENncE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JsZG1WdWRDNXlaWFIxY201V1lXeDFaU0E5SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbWx6UkdWbVlYVnNkRkJ5WlhabGJuUmxaQ0E5SUdWdGNIUjVSblZ1WTNScGIyNHVkR2hoZEZKbGRIVnlibk5VY25WbE8xeHVJQ0I5TEZ4dVhHNGdJSE4wYjNCUWNtOXdZV2RoZEdsdmJqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCbGRtVnVkQ0E5SUhSb2FYTXVibUYwYVhabFJYWmxiblE3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1YyWlc1MExDQW5WR2hwY3lCemVXNTBhR1YwYVdNZ1pYWmxiblFnYVhNZ2NtVjFjMlZrSUdadmNpQndaWEptYjNKdFlXNWpaU0J5WldGemIyNXpMaUJKWmlCNWIzVmNYQ2R5WlNBbklDc2dKM05sWldsdVp5QjBhR2x6TENCNWIzVmNYQ2R5WlNCallXeHNhVzVuSUdCemRHOXdVSEp2Y0dGbllYUnBiMjVnSUc5dUlHRWdKeUFySUNkeVpXeGxZWE5sWkM5dWRXeHNhV1pwWldRZ2MzbHVkR2hsZEdsaklHVjJaVzUwTGlCVWFHbHpJR2x6SUdFZ2JtOHRiM0F1SUZObFpTQW5JQ3NnSjJoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdFpYWmxiblF0Y0c5dmJHbHVaeUJtYjNJZ2JXOXlaU0JwYm1admNtMWhkR2x2Ymk0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLQ0ZsZG1WdWRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGxkbVZ1ZEM1emRHOXdVSEp2Y0dGbllYUnBiMjRwSUh0Y2JpQWdJQ0FnSUdWMlpXNTBMbk4wYjNCUWNtOXdZV2RoZEdsdmJpZ3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCbGRtVnVkQzVqWVc1alpXeENkV0ppYkdVZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TG1selVISnZjR0ZuWVhScGIyNVRkRzl3Y0dWa0lEMGdaVzF3ZEhsR2RXNWpkR2x2Ymk1MGFHRjBVbVYwZFhKdWMxUnlkV1U3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGZGxJSEpsYkdWaGMyVWdZV3hzSUdScGMzQmhkR05vWldRZ1lGTjViblJvWlhScFkwVjJaVzUwWUhNZ1lXWjBaWElnWldGamFDQmxkbVZ1ZENCc2IyOXdMQ0JoWkdScGJtZGNiaUFnSUNvZ2RHaGxiU0JpWVdOcklHbHVkRzhnZEdobElIQnZiMnd1SUZSb2FYTWdZV3hzYjNkeklHRWdkMkY1SUhSdklHaHZiR1FnYjI1MGJ5QmhJSEpsWm1WeVpXNWpaU0IwYUdGMFhHNGdJQ0FxSUhkdmJpZDBJR0psSUdGa1pHVmtJR0poWTJzZ2FXNTBieUIwYUdVZ2NHOXZiQzVjYmlBZ0lDb3ZYRzRnSUhCbGNuTnBjM1E2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbWx6VUdWeWMybHpkR1Z1ZENBOUlHVnRjSFI1Um5WdVkzUnBiMjR1ZEdoaGRGSmxkSFZ5Ym5OVWNuVmxPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGFHVmphM01nYVdZZ2RHaHBjeUJsZG1WdWRDQnphRzkxYkdRZ1ltVWdjbVZzWldGelpXUWdZbUZqYXlCcGJuUnZJSFJvWlNCd2IyOXNMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCVWNuVmxJR2xtSUhSb2FYTWdjMmh2ZFd4a0lHNXZkQ0JpWlNCeVpXeGxZWE5sWkN3Z1ptRnNjMlVnYjNSb1pYSjNhWE5sTGx4dUlDQWdLaTljYmlBZ2FYTlFaWEp6YVhOMFpXNTBPaUJsYlhCMGVVWjFibU4wYVc5dUxuUm9ZWFJTWlhSMWNtNXpSbUZzYzJVc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUdCUWIyOXNaV1JEYkdGemMyQWdiRzl2YTNNZ1ptOXlJR0JrWlhOMGNuVmpkRzl5WUNCdmJpQmxZV05vSUdsdWMzUmhibU5sSUdsMElISmxiR1ZoYzJWekxseHVJQ0FnS2k5Y2JpQWdaR1Z6ZEhKMVkzUnZjam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhaaGNpQkpiblJsY21aaFkyVWdQU0IwYUdsekxtTnZibk4wY25WamRHOXlMa2x1ZEdWeVptRmpaVHRjYmlBZ0lDQm1iM0lnS0haaGNpQndjbTl3VG1GdFpTQnBiaUJKYm5SbGNtWmhZMlVwSUh0Y2JpQWdJQ0FnSUhSb2FYTmJjSEp2Y0U1aGJXVmRJRDBnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NWthWE53WVhSamFFTnZibVpwWnlBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1a2FYTndZWFJqYUUxaGNtdGxjaUE5SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTV1WVhScGRtVkZkbVZ1ZENBOUlHNTFiR3c3WEc0Z0lIMWNibHh1ZlNrN1hHNWNibE41Ym5Sb1pYUnBZMFYyWlc1MExrbHVkR1Z5Wm1GalpTQTlJRVYyWlc1MFNXNTBaWEptWVdObE8xeHVYRzR2S2lwY2JpQXFJRWhsYkhCbGNpQjBieUJ5WldSMVkyVWdZbTlwYkdWeWNHeGhkR1VnZDJobGJpQmpjbVZoZEdsdVp5QnpkV0pqYkdGemMyVnpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJRU5zWVhOelhHNGdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJRWx1ZEdWeVptRmpaVnh1SUNvdlhHNVRlVzUwYUdWMGFXTkZkbVZ1ZEM1aGRXZHRaVzUwUTJ4aGMzTWdQU0JtZFc1amRHbHZiaUFvUTJ4aGMzTXNJRWx1ZEdWeVptRmpaU2tnZTF4dUlDQjJZWElnVTNWd1pYSWdQU0IwYUdsek8xeHVYRzRnSUhaaGNpQndjbTkwYjNSNWNHVWdQU0JQWW1wbFkzUXVZM0psWVhSbEtGTjFjR1Z5TG5CeWIzUnZkSGx3WlNrN1hHNGdJR0Z6YzJsbmJpaHdjbTkwYjNSNWNHVXNJRU5zWVhOekxuQnliM1J2ZEhsd1pTazdYRzRnSUVOc1lYTnpMbkJ5YjNSdmRIbHdaU0E5SUhCeWIzUnZkSGx3WlR0Y2JpQWdRMnhoYzNNdWNISnZkRzkwZVhCbExtTnZibk4wY25WamRHOXlJRDBnUTJ4aGMzTTdYRzVjYmlBZ1EyeGhjM011U1c1MFpYSm1ZV05sSUQwZ1lYTnphV2R1S0h0OUxDQlRkWEJsY2k1SmJuUmxjbVpoWTJVc0lFbHVkR1Z5Wm1GalpTazdYRzRnSUVOc1lYTnpMbUYxWjIxbGJuUkRiR0Z6Y3lBOUlGTjFjR1Z5TG1GMVoyMWxiblJEYkdGemN6dGNibHh1SUNCUWIyOXNaV1JEYkdGemN5NWhaR1JRYjI5c2FXNW5WRzhvUTJ4aGMzTXNJRkJ2YjJ4bFpFTnNZWE56TG1admRYSkJjbWQxYldWdWRGQnZiMnhsY2lrN1hHNTlPMXh1WEc1UWIyOXNaV1JEYkdGemN5NWhaR1JRYjI5c2FXNW5WRzhvVTNsdWRHaGxkR2xqUlhabGJuUXNJRkJ2YjJ4bFpFTnNZWE56TG1admRYSkJjbWQxYldWdWRGQnZiMnhsY2lrN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVM2x1ZEdobGRHbGpSWFpsYm5RN0lsMTkiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljRm9jdXNFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBGb2N1c0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHJlbGF0ZWRUYXJnZXQ6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRm9jdXNFdmVudCwgRm9jdXNFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRm9jdXNFdmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljSW5wdXRFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1XG4gKiAgICAgIC8jZXZlbnRzLWlucHV0ZXZlbnRzXG4gKi9cbnZhciBJbnB1dEV2ZW50SW50ZXJmYWNlID0ge1xuICBkYXRhOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNJbnB1dEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljSW5wdXRFdmVudCwgSW5wdXRFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljSW5wdXRFdmVudDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU3ludGhldGljS2V5Ym9hcmRFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG52YXIgZ2V0RXZlbnRLZXkgPSByZXF1aXJlKCcuL2dldEV2ZW50S2V5Jyk7XG52YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgnLi9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEtleWJvYXJkRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgS2V5Ym9hcmRFdmVudEludGVyZmFjZSA9IHtcbiAga2V5OiBnZXRFdmVudEtleSxcbiAgbG9jYXRpb246IG51bGwsXG4gIGN0cmxLZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1ldGFLZXk6IG51bGwsXG4gIHJlcGVhdDogbnVsbCxcbiAgbG9jYWxlOiBudWxsLFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsXG4gIC8vIExlZ2FjeSBJbnRlcmZhY2VcbiAgY2hhckNvZGU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBjaGFyQ29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleVByZXNzIGV2ZW50IGFuZCByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZlxuICAgIC8vIHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJhY3Rlci5cblxuICAgIC8vIEtleVByZXNzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1lbnQgaXMgbm90IHlldCBmaW5hbCBhbmQgbm90XG4gICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1ham9yIGJyb3dzZXIuIE9ubHkgS2V5UHJlc3MgaGFzIGNoYXJDb2RlLlxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9LFxuICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBga2V5Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG4gICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQga2V5LlxuXG4gICAgLy8gVGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vycycga2V5Ym9hcmQgbGF5b3V0XG4gICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkLiBBc3N1bWluZyB0aGF0IGl0IGlzIGEgVVMga2V5Ym9hcmQgbGF5b3V0XG4gICAgLy8gcHJvdmlkZXMgYSBzdXJwcmlzaW5nbHkgYWNjdXJhdGUgbWFwcGluZyBmb3IgVVMgYW5kIEV1cm9wZWFuIHVzZXJzLlxuICAgIC8vIER1ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxlbWVudCBhdCB0aGlzIHRpbWUuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7XG4gICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBgd2hpY2hgIGlzIGFuIGFsaWFzIGZvciBlaXRoZXIgYGtleUNvZGVgIG9yIGBjaGFyQ29kZWAgZGVwZW5kaW5nIG9uIHRoZVxuICAgIC8vIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG4gICAgfVxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNLZXlib2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0tleWJvYXJkRXZlbnQsIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY01vdXNlRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xudmFyIFZpZXdwb3J0TWV0cmljcyA9IHJlcXVpcmUoJy4vVmlld3BvcnRNZXRyaWNzJyk7XG5cbnZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgTW91c2VFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0ge1xuICBzY3JlZW5YOiBudWxsLFxuICBzY3JlZW5ZOiBudWxsLFxuICBjbGllbnRYOiBudWxsLFxuICBjbGllbnRZOiBudWxsLFxuICBjdHJsS2V5OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsXG4gIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gV2Via2l0LCBGaXJlZm94LCBJRTkrXG4gICAgLy8gd2hpY2g6ICAxIDIgM1xuICAgIC8vIGJ1dHRvbjogMCAxIDIgKHN0YW5kYXJkKVxuICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247XG4gICAgaWYgKCd3aGljaCcgaW4gZXZlbnQpIHtcbiAgICAgIHJldHVybiBidXR0b247XG4gICAgfVxuICAgIC8vIElFPDlcbiAgICAvLyB3aGljaDogIHVuZGVmaW5lZFxuICAgIC8vIGJ1dHRvbjogMCAwIDBcbiAgICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApXG4gICAgcmV0dXJuIGJ1dHRvbiA9PT0gMiA/IDIgOiBidXR0b24gPT09IDQgPyAxIDogMDtcbiAgfSxcbiAgYnV0dG9uczogbnVsbCxcbiAgcmVsYXRlZFRhcmdldDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgKGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50ID8gZXZlbnQudG9FbGVtZW50IDogZXZlbnQuZnJvbUVsZW1lbnQpO1xuICB9LFxuICAvLyBcIlByb3ByaWV0YXJ5XCIgSW50ZXJmYWNlLlxuICBwYWdlWDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdwYWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQ7XG4gIH0sXG4gIHBhZ2VZOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2xpZW50WSArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNNb3VzZUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY01vdXNlRXZlbnQsIE1vdXNlRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFN5bnRoZXRpY1RvdWNoRXZlbnRcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgnLi9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFRvdWNoRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzL1xuICovXG52YXIgVG91Y2hFdmVudEludGVyZmFjZSA9IHtcbiAgdG91Y2hlczogbnVsbCxcbiAgdGFyZ2V0VG91Y2hlczogbnVsbCxcbiAgY2hhbmdlZFRvdWNoZXM6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0YUtleTogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAgc2hpZnRLZXk6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljVG91Y2hFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNUb3VjaEV2ZW50LCBUb3VjaEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNUb3VjaEV2ZW50OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNVSUV2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50VGFyZ2V0Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBVSUV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIFVJRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHZpZXc6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGlmIChldmVudC52aWV3KSB7XG4gICAgICByZXR1cm4gZXZlbnQudmlldztcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgIGlmICh0YXJnZXQgIT0gbnVsbCAmJiB0YXJnZXQud2luZG93ID09PSB0YXJnZXQpIHtcbiAgICAgIC8vIHRhcmdldCBpcyBhIHdpbmRvdyBvYmplY3RcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgdmFyIGRvYyA9IHRhcmdldC5vd25lckRvY3VtZW50O1xuICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cbiAgICBpZiAoZG9jKSB7XG4gICAgICByZXR1cm4gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB3aW5kb3c7XG4gICAgfVxuICB9LFxuICBkZXRhaWw6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiBldmVudC5kZXRhaWwgfHwgMDtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1VJRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNVSUV2ZW50OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNXaGVlbEV2ZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFdoZWVsRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgV2hlZWxFdmVudEludGVyZmFjZSA9IHtcbiAgZGVsdGFYOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOlxuICAgIC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWGAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChyaWdodCBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGFYJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhWCA6IDA7XG4gIH0sXG4gIGRlbHRhWTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdkZWx0YVknIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFZIDpcbiAgICAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVlgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGFZJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhWSA6XG4gICAgLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUgKGRvd24gaXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhIDogMDtcbiAgfSxcbiAgZGVsdGFaOiBudWxsLFxuXG4gIC8vIEJyb3dzZXJzIHdpdGhvdXQgXCJkZWx0YU1vZGVcIiBpcyByZXBvcnRpbmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZVxuICAvLyBub3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLlxuICAvLyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElORSAoMSkgaXMgNSUgb2Ygdmlld3BvcnQgc2l6ZSBvclxuICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RFTFRBX1NDUkVFTiAoMikgaXQgaXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS5cbiAgZGVsdGFNb2RlOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBUcmFuc2FjdGlvblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIGBUcmFuc2FjdGlvbmAgY3JlYXRlcyBhIGJsYWNrIGJveCB0aGF0IGlzIGFibGUgdG8gd3JhcCBhbnkgbWV0aG9kIHN1Y2ggdGhhdFxuICogY2VydGFpbiBpbnZhcmlhbnRzIGFyZSBtYWludGFpbmVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1ldGhvZCBpcyBpbnZva2VkXG4gKiAoRXZlbiBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHdoaWxlIGludm9raW5nIHRoZSB3cmFwcGVkIG1ldGhvZCkuIFdob2V2ZXJcbiAqIGluc3RhbnRpYXRlcyBhIHRyYW5zYWN0aW9uIGNhbiBwcm92aWRlIGVuZm9yY2VycyBvZiB0aGUgaW52YXJpYW50cyBhdFxuICogY3JlYXRpb24gdGltZS4gVGhlIGBUcmFuc2FjdGlvbmAgY2xhc3MgaXRzZWxmIHdpbGwgc3VwcGx5IG9uZSBhZGRpdGlvbmFsXG4gKiBhdXRvbWF0aWMgaW52YXJpYW50IGZvciB5b3UgLSB0aGUgaW52YXJpYW50IHRoYXQgYW55IHRyYW5zYWN0aW9uIGluc3RhbmNlXG4gKiBzaG91bGQgbm90IGJlIHJ1biB3aGlsZSBpdCBpcyBhbHJlYWR5IGJlaW5nIHJ1bi4gWW91IHdvdWxkIHR5cGljYWxseSBjcmVhdGUgYVxuICogc2luZ2xlIGluc3RhbmNlIG9mIGEgYFRyYW5zYWN0aW9uYCBmb3IgcmV1c2UgbXVsdGlwbGUgdGltZXMsIHRoYXQgcG90ZW50aWFsbHlcbiAqIGlzIHVzZWQgdG8gd3JhcCBzZXZlcmFsIGRpZmZlcmVudCBtZXRob2RzLiBXcmFwcGVycyBhcmUgZXh0cmVtZWx5IHNpbXBsZSAtXG4gKiB0aGV5IG9ubHkgcmVxdWlyZSBpbXBsZW1lbnRpbmcgdHdvIG1ldGhvZHMuXG4gKlxuICogPHByZT5cbiAqICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVycyAoaW5qZWN0ZWQgYXQgY3JlYXRpb24gdGltZSlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICArXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLStcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB2ICAgICAgICB8ICAgICAgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICstLS0tLS0tLS0tLS0tLS0rICAgfCAgICAgICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICArLS18ICAgIHdyYXBwZXIxICAgfC0tLXwtLS0tKyAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgKy0tLS0tLS0tLS0tLS0tLSsgICB2ICAgIHwgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAgfC0tLS0tLS0tKyAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICArLS0tLS0tLS0tLS0tLSsgIHwgICAgIHwgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB2ICAgICB2ICAgICAgICAgICAgICAgICAgICAgdiAgICAgdiAgIHwgd3JhcHBlclxuICogICAgICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwgaW52YXJpYW50c1xuICogcGVyZm9ybShhbnlNZXRob2QpIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHwgbWFpbnRhaW5lZFxuICogKy0tLS0tLS0tLS0tLS0tLS0tPnwtfC0tLXwtfC0tLXwtLT58YW55TWV0aG9kfC0tLXwtLS18LXwtLS18LXwtLS0tLS0tLT5cbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgaW5pdGlhbGl6ZSAgICAgICAgICAgICAgICAgICAgY2xvc2UgICAgfFxuICogICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAqIDwvcHJlPlxuICpcbiAqIFVzZSBjYXNlczpcbiAqIC0gUHJlc2VydmluZyB0aGUgaW5wdXQgc2VsZWN0aW9uIHJhbmdlcyBiZWZvcmUvYWZ0ZXIgcmVjb25jaWxpYXRpb24uXG4gKiAgIFJlc3RvcmluZyBzZWxlY3Rpb24gZXZlbiBpbiB0aGUgZXZlbnQgb2YgYW4gdW5leHBlY3RlZCBlcnJvci5cbiAqIC0gRGVhY3RpdmF0aW5nIGV2ZW50cyB3aGlsZSByZWFycmFuZ2luZyB0aGUgRE9NLCBwcmV2ZW50aW5nIGJsdXJzL2ZvY3VzZXMsXG4gKiAgIHdoaWxlIGd1YXJhbnRlZWluZyB0aGF0IGFmdGVyd2FyZHMsIHRoZSBldmVudCBzeXN0ZW0gaXMgcmVhY3RpdmF0ZWQuXG4gKiAtIEZsdXNoaW5nIGEgcXVldWUgb2YgY29sbGVjdGVkIERPTSBtdXRhdGlvbnMgdG8gdGhlIG1haW4gVUkgdGhyZWFkIGFmdGVyIGFcbiAqICAgcmVjb25jaWxpYXRpb24gdGFrZXMgcGxhY2UgaW4gYSB3b3JrZXIgdGhyZWFkLlxuICogLSBJbnZva2luZyBhbnkgY29sbGVjdGVkIGBjb21wb25lbnREaWRVcGRhdGVgIGNhbGxiYWNrcyBhZnRlciByZW5kZXJpbmcgbmV3XG4gKiAgIGNvbnRlbnQuXG4gKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBXcmFwcGluZyBwYXJ0aWN1bGFyIGZsdXNoZXMgb2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWVcbiAqICAgdG8gcHJlc2VydmUgdGhlIGBzY3JvbGxUb3BgIChhbiBhdXRvbWF0aWMgc2Nyb2xsIGF3YXJlIERPTSkuXG4gKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBMYXlvdXQgY2FsY3VsYXRpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgRE9NIHVwZGF0ZXMuXG4gKlxuICogVHJhbnNhY3Rpb25hbCBwbHVnaW4gQVBJOlxuICogLSBBIG1vZHVsZSB0aGF0IGhhcyBhbiBgaW5pdGlhbGl6ZWAgbWV0aG9kIHRoYXQgcmV0dXJucyBhbnkgcHJlY29tcHV0YXRpb24uXG4gKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyB0aGUgcHJlY29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZFxuICogICB3aGVuIHRoZSB3cmFwcGVkIHByb2Nlc3MgaXMgY29tcGxldGVkLCBvciBoYXMgZmFpbGVkLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBwZXIgV3JhcHBlciBtb2R1bGVzXG4gKiB0aGF0IGltcGxlbWVudCBgaW5pdGlhbGl6ZWAgYW5kIGBjbG9zZWAuXG4gKiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gU2luZ2xlIHRyYW5zYWN0aW9uIGZvciByZXVzZSBpbiB0aHJlYWQuXG4gKlxuICogQGNsYXNzIFRyYW5zYWN0aW9uXG4gKi9cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIFNldHMgdXAgdGhpcyBpbnN0YW5jZSBzbyB0aGF0IGl0IGlzIHByZXBhcmVkIGZvciBjb2xsZWN0aW5nIG1ldHJpY3MuIERvZXNcbiAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAgbWV0aG9kIG1heSBiZSB1c2VkIG9uIGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeVxuICAgKiBpbml0aWFsaXplZCwgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IHVwb24gcmV1c2UuXG4gICAqIFRoYXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRvIG1ha2UgeW91ciBzdWJjbGFzcyBvZiB0aGlzIG1peGluIGFcbiAgICogXCJQb29sZWRDbGFzc1wiLlxuICAgKi9cbiAgcmVpbml0aWFsaXplVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKTtcbiAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGEpIHtcbiAgICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3JhcHBlckluaXREYXRhID0gW107XG4gICAgfVxuICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICB9LFxuXG4gIF9pc0luVHJhbnNhY3Rpb246IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybiB7QXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPn0gQXJyYXkgb2YgdHJhbnNhY3Rpb24gd3JhcHBlcnMuXG4gICAqL1xuICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBudWxsLFxuXG4gIGlzSW5UcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2lzSW5UcmFuc2FjdGlvbjtcbiAgfSxcblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGZ1bmN0aW9uIHdpdGhpbiBhIHNhZmV0eSB3aW5kb3cuIFVzZSB0aGlzIGZvciB0aGUgdG9wIGxldmVsXG4gICAqIG1ldGhvZHMgdGhhdCByZXN1bHQgaW4gbGFyZ2UgYW1vdW50cyBvZiBjb21wdXRhdGlvbi9tdXRhdGlvbnMgdGhhdCB3b3VsZFxuICAgKiBuZWVkIHRvIGJlIHNhZmV0eSBjaGVja2VkLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGhlbHBzIHByZXZlbnQgdGhlIG5lZWRcbiAgICogdG8gYmluZCBpbiBtYW55IGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWVtYmVyIG9mIHNjb3BlIHRvIGNhbGwuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzY29wZSBTY29wZSB0byBpbnZva2UgZnJvbS5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGIgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBjIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZCBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGUgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBmIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICpcbiAgICogQHJldHVybiB7Kn0gUmV0dXJuIHZhbHVlIGZyb20gYG1ldGhvZGAuXG4gICAqL1xuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSwgYiwgYywgZCwgZSwgZikge1xuICAgICEhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5wZXJmb3JtKC4uLik6IENhbm5vdCBpbml0aWFsaXplIGEgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSAnICsgJ2lzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb24uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciBlcnJvclRocm93bjtcbiAgICB2YXIgcmV0O1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aFxuICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAgIC8vIG9uZSBvZiB0aGVzZSBjYWxscyB0aHJldy5cbiAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTtcbiAgICAgIHJldCA9IG1ldGhvZC5jYWxsKHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKTtcbiAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBzdGFjayB0cmFjZSBvdmVyIGFueSB0aHJvd25cbiAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xvc2VBbGxgLlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaW5jZSBgbWV0aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0aGUgZXhjZXB0aW9uXG4gICAgICAgICAgLy8gaGVyZS5cbiAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBpbml0aWFsaXplQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aCB0aGVcbiAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUgYmVmb3JlIG92ZXJ3cml0aW5nIGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlXG4gICAgICAgIC8vIG9mIGluaXRpYWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4gdGhlIGZpbmFsbHlcbiAgICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlhbGl6ZSB0aHJldy5cbiAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBUcmFuc2FjdGlvbi5PQlNFUlZFRF9FUlJPUjtcbiAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUgPyB3cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09IFRyYW5zYWN0aW9uLk9CU0VSVkVEX0VSUk9SKSB7XG4gICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGluaXRpYWxpemUgdGhlXG4gICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmVcbiAgICAgICAgICAvLyB0aGF0IHRoZSBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3NlW2ldYCBmdW5jdGlvbnMsIHBhc3NpbmcgaW50b1xuICAgKiB0aGVtIHRoZSByZXNwZWN0aXZlIHJldHVybiB2YWx1ZXMgb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5pbml0W2ldYFxuICAgKiAoYGNsb3NlYHJzIHRoYXQgY29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQgd2lsbCBub3QgYmVcbiAgICogaW52b2tlZCkuXG4gICAqL1xuICBjbG9zZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgpIHtcbiAgICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5jbG9zZUFsbCgpOiBDYW5ub3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycztcbiAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcbiAgICAgIHZhciBpbml0RGF0YSA9IHRoaXMud3JhcHBlckluaXREYXRhW2ldO1xuICAgICAgdmFyIGVycm9yVGhyb3duO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aFxuICAgICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nXG4gICAgICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zXG4gICAgICAgIC8vIHdyYXBwZXIuY2xvc2UgdGhyZXcuXG4gICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgICAgaWYgKGluaXREYXRhICE9PSBUcmFuc2FjdGlvbi5PQlNFUlZFRF9FUlJPUiAmJiB3cmFwcGVyLmNsb3NlKSB7XG4gICAgICAgICAgd3JhcHBlci5jbG9zZS5jYWxsKHRoaXMsIGluaXREYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgLy8gVGhlIGNsb3NlciBmb3Igd3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBjbG9zZSB0aGUgcmVtYWluaW5nXG4gICAgICAgICAgLy8gd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgICAgICAgIC8vIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKGkgKyAxKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7XG4gIH1cbn07XG5cbnZhciBUcmFuc2FjdGlvbiA9IHtcblxuICBNaXhpbjogTWl4aW4sXG5cbiAgLyoqXG4gICAqIFRva2VuIHRvIGxvb2sgZm9yIHRvIGRldGVybWluZSBpZiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICovXG4gIE9CU0VSVkVEX0VSUk9SOiB7fVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zYWN0aW9uO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5VWNtRnVjMkZqZEdsdmJpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVkhKaGJuTmhZM1JwYjI1Y2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVMeW9xWEc0Z0tpQmdWSEpoYm5OaFkzUnBiMjVnSUdOeVpXRjBaWE1nWVNCaWJHRmpheUJpYjNnZ2RHaGhkQ0JwY3lCaFlteGxJSFJ2SUhkeVlYQWdZVzU1SUcxbGRHaHZaQ0J6ZFdOb0lIUm9ZWFJjYmlBcUlHTmxjblJoYVc0Z2FXNTJZWEpwWVc1MGN5QmhjbVVnYldGcGJuUmhhVzVsWkNCaVpXWnZjbVVnWVc1a0lHRm1kR1Z5SUhSb1pTQnRaWFJvYjJRZ2FYTWdhVzUyYjJ0bFpGeHVJQ29nS0VWMlpXNGdhV1lnWVc0Z1pYaGpaWEIwYVc5dUlHbHpJSFJvY205M2JpQjNhR2xzWlNCcGJuWnZhMmx1WnlCMGFHVWdkM0poY0hCbFpDQnRaWFJvYjJRcExpQlhhRzlsZG1WeVhHNGdLaUJwYm5OMFlXNTBhV0YwWlhNZ1lTQjBjbUZ1YzJGamRHbHZiaUJqWVc0Z2NISnZkbWxrWlNCbGJtWnZjbU5sY25NZ2IyWWdkR2hsSUdsdWRtRnlhV0Z1ZEhNZ1lYUmNiaUFxSUdOeVpXRjBhVzl1SUhScGJXVXVJRlJvWlNCZ1ZISmhibk5oWTNScGIyNWdJR05zWVhOeklHbDBjMlZzWmlCM2FXeHNJSE4xY0hCc2VTQnZibVVnWVdSa2FYUnBiMjVoYkZ4dUlDb2dZWFYwYjIxaGRHbGpJR2x1ZG1GeWFXRnVkQ0JtYjNJZ2VXOTFJQzBnZEdobElHbHVkbUZ5YVdGdWRDQjBhR0YwSUdGdWVTQjBjbUZ1YzJGamRHbHZiaUJwYm5OMFlXNWpaVnh1SUNvZ2MyaHZkV3hrSUc1dmRDQmlaU0J5ZFc0Z2QyaHBiR1VnYVhRZ2FYTWdZV3h5WldGa2VTQmlaV2x1WnlCeWRXNHVJRmx2ZFNCM2IzVnNaQ0IwZVhCcFkyRnNiSGtnWTNKbFlYUmxJR0ZjYmlBcUlITnBibWRzWlNCcGJuTjBZVzVqWlNCdlppQmhJR0JVY21GdWMyRmpkR2x2Ym1BZ1ptOXlJSEpsZFhObElHMTFiSFJwY0d4bElIUnBiV1Z6TENCMGFHRjBJSEJ2ZEdWdWRHbGhiR3g1WEc0Z0tpQnBjeUIxYzJWa0lIUnZJSGR5WVhBZ2MyVjJaWEpoYkNCa2FXWm1aWEpsYm5RZ2JXVjBhRzlrY3k0Z1YzSmhjSEJsY25NZ1lYSmxJR1Y0ZEhKbGJXVnNlU0J6YVcxd2JHVWdMVnh1SUNvZ2RHaGxlU0J2Ym14NUlISmxjWFZwY21VZ2FXMXdiR1Z0Wlc1MGFXNW5JSFIzYnlCdFpYUm9iMlJ6TGx4dUlDcGNiaUFxSUR4d2NtVStYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkM0poY0hCbGNuTWdLR2x1YW1WamRHVmtJR0YwSUdOeVpXRjBhVzl1SUhScGJXVXBYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0t5QWdJQ0FnSUNBZ0sxeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0lDQWdJQ0FnSUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FyTFMwdExTMHRMUzB0TFMwdExTMHRMUzE4TFMwdExTMHRMUzE4TFMwdExTMHRMUzB0TFMwdExTMHJYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RpQWdJQ0FnSUNBZ2ZDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkZ4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUNBZ0lDQXJMUzB0TFMwdExTMHRMUzB0TFMwdEt5QWdJSHdnSUNBZ0lDQWdJQ0FnSUNBZ0lIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElDQWdLeTB0ZkNBZ0lDQjNjbUZ3Y0dWeU1TQWdJSHd0TFMxOExTMHRMU3NnSUNBZ0lDQWdJQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FnSUh3Z0lDc3RMUzB0TFMwdExTMHRMUzB0TFMwcklDQWdkaUFnSUNCOElDQWdJQ0FnSUNBZ2ZGeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0lDQjhJQ0FnSUNBZ0lDQWdJQ3N0TFMwdExTMHRMUzB0TFMwdEt5QWdmQ0FnSUNBZ0lDQWdJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0FnZkNBZ0lDQWdLeTB0TFMxOElDQWdkM0poY0hCbGNqSWdJSHd0TFMwdExTMHRMU3NnSUNCOFhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBZ0lId2dJQ0FnSUh3Z0lDQWdLeTB0TFMwdExTMHRMUzB0TFMwcklDQjhJQ0FnSUNCOElDQWdmRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dJQ0I4SUNBZ0lDQjhJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBZ0lDQWdmQ0FnSUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNBZ2RpQWdJQ0FnZGlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWWdJQ0FnSUhZZ0lDQjhJSGR5WVhCd1pYSmNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElDc3RMUzBySUNzdExTMHJJQ0FnS3kwdExTMHRMUzB0TFNzZ0lDQXJMUzB0S3lBckxTMHRLeUI4SUdsdWRtRnlhV0Z1ZEhOY2JpQXFJSEJsY21admNtMG9ZVzU1VFdWMGFHOWtLU0I4SUh3Z0lDQjhJSHdnSUNCOElDQWdmQ0FnSUNBZ0lDQWdJSHdnSUNCOElDQWdmQ0I4SUNBZ2ZDQjhJRzFoYVc1MFlXbHVaV1JjYmlBcUlDc3RMUzB0TFMwdExTMHRMUzB0TFMwdExUNThMWHd0TFMxOExYd3RMUzE4TFMwK2ZHRnVlVTFsZEdodlpId3RMUzE4TFMwdGZDMThMUzB0ZkMxOExTMHRMUzB0TFMwK1hHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNCOElDQWdmQ0I4SUNBZ2ZDQWdJSHdnSUNBZ0lDQWdJQ0I4SUNBZ2ZDQWdJSHdnZkNBZ0lId2dmRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dmQ0FnSUh3Z2ZDQWdJSHdnSUNCOElDQWdJQ0FnSUNBZ2ZDQWdJSHdnSUNCOElId2dJQ0I4SUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUh3Z0lDQjhJSHdnSUNCOElDQWdmQ0FnSUNBZ0lDQWdJSHdnSUNCOElDQWdmQ0I4SUNBZ2ZDQjhYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDQXJMUzB0S3lBckxTMHRLeUFnSUNzdExTMHRMUzB0TFMwcklDQWdLeTB0TFNzZ0t5MHRMU3NnZkZ4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUdsdWFYUnBZV3hwZW1VZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnNiM05sSUNBZ0lIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBckxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzByWEc0Z0tpQThMM0J5WlQ1Y2JpQXFYRzRnS2lCVmMyVWdZMkZ6WlhNNlhHNGdLaUF0SUZCeVpYTmxjblpwYm1jZ2RHaGxJR2x1Y0hWMElITmxiR1ZqZEdsdmJpQnlZVzVuWlhNZ1ltVm1iM0psTDJGbWRHVnlJSEpsWTI5dVkybHNhV0YwYVc5dUxseHVJQ29nSUNCU1pYTjBiM0pwYm1jZ2MyVnNaV04wYVc5dUlHVjJaVzRnYVc0Z2RHaGxJR1YyWlc1MElHOW1JR0Z1SUhWdVpYaHdaV04wWldRZ1pYSnliM0l1WEc0Z0tpQXRJRVJsWVdOMGFYWmhkR2x1WnlCbGRtVnVkSE1nZDJocGJHVWdjbVZoY25KaGJtZHBibWNnZEdobElFUlBUU3dnY0hKbGRtVnVkR2x1WnlCaWJIVnljeTltYjJOMWMyVnpMRnh1SUNvZ0lDQjNhR2xzWlNCbmRXRnlZVzUwWldWcGJtY2dkR2hoZENCaFpuUmxjbmRoY21SekxDQjBhR1VnWlhabGJuUWdjM2x6ZEdWdElHbHpJSEpsWVdOMGFYWmhkR1ZrTGx4dUlDb2dMU0JHYkhWemFHbHVaeUJoSUhGMVpYVmxJRzltSUdOdmJHeGxZM1JsWkNCRVQwMGdiWFYwWVhScGIyNXpJSFJ2SUhSb1pTQnRZV2x1SUZWSklIUm9jbVZoWkNCaFpuUmxjaUJoWEc0Z0tpQWdJSEpsWTI5dVkybHNhV0YwYVc5dUlIUmhhMlZ6SUhCc1lXTmxJR2x1SUdFZ2QyOXlhMlZ5SUhSb2NtVmhaQzVjYmlBcUlDMGdTVzUyYjJ0cGJtY2dZVzU1SUdOdmJHeGxZM1JsWkNCZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbFlDQmpZV3hzWW1GamEzTWdZV1owWlhJZ2NtVnVaR1Z5YVc1bklHNWxkMXh1SUNvZ0lDQmpiMjUwWlc1MExseHVJQ29nTFNBb1JuVjBkWEpsSUhWelpTQmpZWE5sS1RvZ1YzSmhjSEJwYm1jZ2NHRnlkR2xqZFd4aGNpQm1iSFZ6YUdWeklHOW1JSFJvWlNCZ1VtVmhZM1JYYjNKclpYSmdJSEYxWlhWbFhHNGdLaUFnSUhSdklIQnlaWE5sY25abElIUm9aU0JnYzJOeWIyeHNWRzl3WUNBb1lXNGdZWFYwYjIxaGRHbGpJSE5qY205c2JDQmhkMkZ5WlNCRVQwMHBMbHh1SUNvZ0xTQW9SblYwZFhKbElIVnpaU0JqWVhObEtUb2dUR0Y1YjNWMElHTmhiR04xYkdGMGFXOXVjeUJpWldadmNtVWdZVzVrSUdGbWRHVnlJRVJQVFNCMWNHUmhkR1Z6TGx4dUlDcGNiaUFxSUZSeVlXNXpZV04wYVc5dVlXd2djR3gxWjJsdUlFRlFTVHBjYmlBcUlDMGdRU0J0YjJSMWJHVWdkR2hoZENCb1lYTWdZVzRnWUdsdWFYUnBZV3hwZW1WZ0lHMWxkR2h2WkNCMGFHRjBJSEpsZEhWeWJuTWdZVzU1SUhCeVpXTnZiWEIxZEdGMGFXOXVMbHh1SUNvZ0xTQmhibVFnWVNCZ1kyeHZjMlZnSUcxbGRHaHZaQ0IwYUdGMElHRmpZMlZ3ZEhNZ2RHaGxJSEJ5WldOdmJYQjFkR0YwYVc5dUxpQmdZMnh2YzJWZ0lHbHpJR2x1ZG05clpXUmNiaUFxSUNBZ2QyaGxiaUIwYUdVZ2QzSmhjSEJsWkNCd2NtOWpaWE56SUdseklHTnZiWEJzWlhSbFpDd2diM0lnYUdGeklHWmhhV3hsWkM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVQRlJ5WVc1ellXTjBhVzl1WVd4WGNtRndjR1Z5UG4wZ2RISmhibk5oWTNScGIyNVhjbUZ3Y0dWeUlGZHlZWEJ3WlhJZ2JXOWtkV3hsYzF4dUlDb2dkR2hoZENCcGJYQnNaVzFsYm5RZ1lHbHVhWFJwWVd4cGVtVmdJR0Z1WkNCZ1kyeHZjMlZnTGx4dUlDb2dRSEpsZEhWeWJpQjdWSEpoYm5OaFkzUnBiMjU5SUZOcGJtZHNaU0IwY21GdWMyRmpkR2x2YmlCbWIzSWdjbVYxYzJVZ2FXNGdkR2h5WldGa0xseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCVWNtRnVjMkZqZEdsdmJseHVJQ292WEc1MllYSWdUV2w0YVc0Z1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUnpJSFZ3SUhSb2FYTWdhVzV6ZEdGdVkyVWdjMjhnZEdoaGRDQnBkQ0JwY3lCd2NtVndZWEpsWkNCbWIzSWdZMjlzYkdWamRHbHVaeUJ0WlhSeWFXTnpMaUJFYjJWelhHNGdJQ0FxSUhOdklITjFZMmdnZEdoaGRDQjBhR2x6SUhObGRIVndJRzFsZEdodlpDQnRZWGtnWW1VZ2RYTmxaQ0J2YmlCaGJpQnBibk4wWVc1alpTQjBhR0YwSUdseklHRnNjbVZoWkhsY2JpQWdJQ29nYVc1cGRHbGhiR2w2WldRc0lHbHVJR0VnZDJGNUlIUm9ZWFFnWkc5bGN5QnViM1FnWTI5dWMzVnRaU0JoWkdScGRHbHZibUZzSUcxbGJXOXllU0IxY0c5dUlISmxkWE5sTGx4dUlDQWdLaUJVYUdGMElHTmhiaUJpWlNCMWMyVm1kV3dnYVdZZ2VXOTFJR1JsWTJsa1pTQjBieUJ0WVd0bElIbHZkWElnYzNWaVkyeGhjM01nYjJZZ2RHaHBjeUJ0YVhocGJpQmhYRzRnSUNBcUlGd2lVRzl2YkdWa1EyeGhjM05jSWk1Y2JpQWdJQ292WEc0Z0lISmxhVzVwZEdsaGJHbDZaVlJ5WVc1ellXTjBhVzl1T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTUwY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6SUQwZ2RHaHBjeTVuWlhSVWNtRnVjMkZqZEdsdmJsZHlZWEJ3WlhKektDazdYRzRnSUNBZ2FXWWdLSFJvYVhNdWQzSmhjSEJsY2tsdWFYUkVZWFJoS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlTNXNaVzVuZEdnZ1BTQXdPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlTQTlJRnRkTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TGw5cGMwbHVWSEpoYm5OaFkzUnBiMjRnUFNCbVlXeHpaVHRjYmlBZ2ZTeGNibHh1SUNCZmFYTkpibFJ5WVc1ellXTjBhVzl1T2lCbVlXeHpaU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR0ZpYzNSeVlXTjBYRzRnSUNBcUlFQnlaWFIxY200Z2UwRnljbUY1UEZSeVlXNXpZV04wYVc5dVYzSmhjSEJsY2o1OUlFRnljbUY1SUc5bUlIUnlZVzV6WVdOMGFXOXVJSGR5WVhCd1pYSnpMbHh1SUNBZ0tpOWNiaUFnWjJWMFZISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWN6b2diblZzYkN4Y2JseHVJQ0JwYzBsdVZISmhibk5oWTNScGIyNDZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdJU0YwYUdsekxsOXBjMGx1VkhKaGJuTmhZM1JwYjI0N1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVY0WldOMWRHVnpJSFJvWlNCbWRXNWpkR2x2YmlCM2FYUm9hVzRnWVNCellXWmxkSGtnZDJsdVpHOTNMaUJWYzJVZ2RHaHBjeUJtYjNJZ2RHaGxJSFJ2Y0NCc1pYWmxiRnh1SUNBZ0tpQnRaWFJvYjJSeklIUm9ZWFFnY21WemRXeDBJR2x1SUd4aGNtZGxJR0Z0YjNWdWRITWdiMllnWTI5dGNIVjBZWFJwYjI0dmJYVjBZWFJwYjI1eklIUm9ZWFFnZDI5MWJHUmNiaUFnSUNvZ2JtVmxaQ0IwYnlCaVpTQnpZV1psZEhrZ1kyaGxZMnRsWkM0Z1ZHaGxJRzl3ZEdsdmJtRnNJR0Z5WjNWdFpXNTBjeUJvWld4d2N5QndjbVYyWlc1MElIUm9aU0J1WldWa1hHNGdJQ0FxSUhSdklHSnBibVFnYVc0Z2JXRnVlU0JqWVhObGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRtZFc1amRHbHZibjBnYldWMGFHOWtJRTFsYldKbGNpQnZaaUJ6WTI5d1pTQjBieUJqWVd4c0xseHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYzJOdmNHVWdVMk52Y0dVZ2RHOGdhVzUyYjJ0bElHWnliMjB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUMkpxWldOMFB6MTlJR0VnUVhKbmRXMWxiblFnZEc4Z2NHRnpjeUIwYnlCMGFHVWdiV1YwYUc5a0xseHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkRDg5ZlNCaUlFRnlaM1Z0Wlc1MElIUnZJSEJoYzNNZ2RHOGdkR2hsSUcxbGRHaHZaQzVjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNRL1BYMGdZeUJCY21kMWJXVnVkQ0IwYnlCd1lYTnpJSFJ2SUhSb1pTQnRaWFJvYjJRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBQejE5SUdRZ1FYSm5kVzFsYm5RZ2RHOGdjR0Z6Y3lCMGJ5QjBhR1VnYldWMGFHOWtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEQ4OWZTQmxJRUZ5WjNWdFpXNTBJSFJ2SUhCaGMzTWdkRzhnZEdobElHMWxkR2h2WkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUS9QWDBnWmlCQmNtZDFiV1Z1ZENCMGJ5QndZWE56SUhSdklIUm9aU0J0WlhSb2IyUXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpYUjFjbTRnZXlwOUlGSmxkSFZ5YmlCMllXeDFaU0JtY205dElHQnRaWFJvYjJSZ0xseHVJQ0FnS2k5Y2JpQWdjR1Z5Wm05eWJUb2dablZ1WTNScGIyNGdLRzFsZEdodlpDd2djMk52Y0dVc0lHRXNJR0lzSUdNc0lHUXNJR1VzSUdZcElIdGNiaUFnSUNBaElYUm9hWE11YVhOSmJsUnlZVzV6WVdOMGFXOXVLQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5WSEpoYm5OaFkzUnBiMjR1Y0dWeVptOXliU2d1TGk0cE9pQkRZVzV1YjNRZ2FXNXBkR2xoYkdsNlpTQmhJSFJ5WVc1ellXTjBhVzl1SUhkb1pXNGdkR2hsY21VZ0p5QXJJQ2RwY3lCaGJISmxZV1I1SUdGdUlHOTFkSE4wWVc1a2FXNW5JSFJ5WVc1ellXTjBhVzl1TGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjJZWElnWlhKeWIzSlVhSEp2ZDI0N1hHNGdJQ0FnZG1GeUlISmxkRHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnZEdocGN5NWZhWE5KYmxSeVlXNXpZV04wYVc5dUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUM4dklFTmhkR05vYVc1bklHVnljbTl5Y3lCdFlXdGxjeUJrWldKMVoyZHBibWNnYlc5eVpTQmthV1ptYVdOMWJIUXNJSE52SUhkbElITjBZWEowSUhkcGRHaGNiaUFnSUNBZ0lDOHZJR1Z5Y205eVZHaHliM2R1SUhObGRDQjBieUIwY25WbElHSmxabTl5WlNCelpYUjBhVzVuSUdsMElIUnZJR1poYkhObElHRm1kR1Z5SUdOaGJHeHBibWRjYmlBZ0lDQWdJQzh2SUdOc2IzTmxJQzB0SUdsbUlHbDBKM01nYzNScGJHd2djMlYwSUhSdklIUnlkV1VnYVc0Z2RHaGxJR1pwYm1Gc2JIa2dZbXh2WTJzc0lHbDBJRzFsWVc1elhHNGdJQ0FnSUNBdkx5QnZibVVnYjJZZ2RHaGxjMlVnWTJGc2JITWdkR2h5WlhjdVhHNGdJQ0FnSUNCbGNuSnZjbFJvY205M2JpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCMGFHbHpMbWx1YVhScFlXeHBlbVZCYkd3b01DazdYRzRnSUNBZ0lDQnlaWFFnUFNCdFpYUm9iMlF1WTJGc2JDaHpZMjl3WlN3Z1lTd2dZaXdnWXl3Z1pDd2daU3dnWmlrN1hHNGdJQ0FnSUNCbGNuSnZjbFJvY205M2JpQTlJR1poYkhObE8xeHVJQ0FnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0pVYUhKdmQyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QkpaaUJnYldWMGFHOWtZQ0IwYUhKdmQzTXNJSEJ5WldabGNpQjBieUJ6YUc5M0lIUm9ZWFFnYzNSaFkyc2dkSEpoWTJVZ2IzWmxjaUJoYm5rZ2RHaHliM2R1WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdZbmtnYVc1MmIydHBibWNnWUdOc2IzTmxRV3hzWUM1Y2JpQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1amJHOXpaVUZzYkNnd0tUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsY25JcElIdDlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1UybHVZMlVnWUcxbGRHaHZaR0FnWkdsa2JpZDBJSFJvY205M0xDQjNaU0JrYjI0bmRDQjNZVzUwSUhSdklITnBiR1Z1WTJVZ2RHaGxJR1Y0WTJWd2RHbHZibHh1SUNBZ0lDQWdJQ0FnSUM4dklHaGxjbVV1WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVqYkc5elpVRnNiQ2d3S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQm1hVzVoYkd4NUlIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmFYTkpibFJ5WVc1ellXTjBhVzl1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwc1hHNWNiaUFnYVc1cGRHbGhiR2w2WlVGc2JEb2dablZ1WTNScGIyNGdLSE4wWVhKMFNXNWtaWGdwSUh0Y2JpQWdJQ0IyWVhJZ2RISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWN5QTlJSFJvYVhNdWRISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWN6dGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdjM1JoY25SSmJtUmxlRHNnYVNBOElIUnlZVzV6WVdOMGFXOXVWM0poY0hCbGNuTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQjNjbUZ3Y0dWeUlEMGdkSEpoYm5OaFkzUnBiMjVYY21Gd2NHVnljMXRwWFR0Y2JpQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQzh2SUVOaGRHTm9hVzVuSUdWeWNtOXljeUJ0WVd0bGN5QmtaV0oxWjJkcGJtY2diVzl5WlNCa2FXWm1hV04xYkhRc0lITnZJSGRsSUhOMFlYSjBJSGRwZEdnZ2RHaGxYRzRnSUNBZ0lDQWdJQzh2SUU5Q1UwVlNWa1ZFWDBWU1VrOVNJSE4wWVhSbElHSmxabTl5WlNCdmRtVnlkM0pwZEdsdVp5QnBkQ0IzYVhSb0lIUm9aU0J5WldGc0lISmxkSFZ5YmlCMllXeDFaVnh1SUNBZ0lDQWdJQ0F2THlCdlppQnBibWwwYVdGc2FYcGxJQzB0SUdsbUlHbDBKM01nYzNScGJHd2djMlYwSUhSdklFOUNVMFZTVmtWRVgwVlNVazlTSUdsdUlIUm9aU0JtYVc1aGJHeDVYRzRnSUNBZ0lDQWdJQzh2SUdKc2IyTnJMQ0JwZENCdFpXRnVjeUIzY21Gd2NHVnlMbWx1YVhScFlXeHBlbVVnZEdoeVpYY3VYRzRnSUNBZ0lDQWdJSFJvYVhNdWQzSmhjSEJsY2tsdWFYUkVZWFJoVzJsZElEMGdWSEpoYm5OaFkzUnBiMjR1VDBKVFJWSldSVVJmUlZKU1QxSTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWQzSmhjSEJsY2tsdWFYUkVZWFJoVzJsZElEMGdkM0poY0hCbGNpNXBibWwwYVdGc2FYcGxJRDhnZDNKaGNIQmxjaTVwYm1sMGFXRnNhWHBsTG1OaGJHd29kR2hwY3lrZ09pQnVkV3hzTzF4dUlDQWdJQ0FnZlNCbWFXNWhiR3g1SUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWQzSmhjSEJsY2tsdWFYUkVZWFJoVzJsZElEMDlQU0JVY21GdWMyRmpkR2x2Ymk1UFFsTkZVbFpGUkY5RlVsSlBVaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRlJvWlNCcGJtbDBhV0ZzYVhwbGNpQm1iM0lnZDNKaGNIQmxjaUJwSUhSb2NtVjNJR0Z1SUdWeWNtOXlPeUJwYm1sMGFXRnNhWHBsSUhSb1pWeHVJQ0FnSUNBZ0lDQWdJQzh2SUhKbGJXRnBibWx1WnlCM2NtRndjR1Z5Y3lCaWRYUWdjMmxzWlc1alpTQmhibmtnWlhoalpYQjBhVzl1Y3lCbWNtOXRJSFJvWlcwZ2RHOGdaVzV6ZFhKbFhHNGdJQ0FnSUNBZ0lDQWdMeThnZEdoaGRDQjBhR1VnWm1seWMzUWdaWEp5YjNJZ2FYTWdkR2hsSUc5dVpTQjBieUJpZFdKaWJHVWdkWEF1WEc0Z0lDQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YVc1cGRHbGhiR2w2WlVGc2JDaHBJQ3NnTVNrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aWEp5S1NCN2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm5admEyVnpJR1ZoWTJnZ2IyWWdZSFJvYVhNdWRISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWN5NWpiRzl6WlZ0cFhXQWdablZ1WTNScGIyNXpMQ0J3WVhOemFXNW5JR2x1ZEc5Y2JpQWdJQ29nZEdobGJTQjBhR1VnY21WemNHVmpkR2wyWlNCeVpYUjFjbTRnZG1Gc2RXVnpJRzltSUdCMGFHbHpMblJ5WVc1ellXTjBhVzl1VjNKaGNIQmxjbk11YVc1cGRGdHBYV0JjYmlBZ0lDb2dLR0JqYkc5elpXQnljeUIwYUdGMElHTnZjbkpsYzNCdmJtUWdkRzhnYVc1cGRHbGhiR2w2WlhKeklIUm9ZWFFnWm1GcGJHVmtJSGRwYkd3Z2JtOTBJR0psWEc0Z0lDQXFJR2x1ZG05clpXUXBMbHh1SUNBZ0tpOWNiaUFnWTJ4dmMyVkJiR3c2SUdaMWJtTjBhVzl1SUNoemRHRnlkRWx1WkdWNEtTQjdYRzRnSUNBZ0lYUm9hWE11YVhOSmJsUnlZVzV6WVdOMGFXOXVLQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5WSEpoYm5OaFkzUnBiMjR1WTJ4dmMyVkJiR3dvS1RvZ1EyRnVibTkwSUdOc2IzTmxJSFJ5WVc1ellXTjBhVzl1SUhkb1pXNGdibTl1WlNCaGNtVWdiM0JsYmk0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdkbUZ5SUhSeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NZ1BTQjBhR2x6TG5SeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlITjBZWEowU1c1a1pYZzdJR2tnUENCMGNtRnVjMkZqZEdsdmJsZHlZWEJ3WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2QzSmhjSEJsY2lBOUlIUnlZVzV6WVdOMGFXOXVWM0poY0hCbGNuTmJhVjA3WEc0Z0lDQWdJQ0IyWVhJZ2FXNXBkRVJoZEdFZ1BTQjBhR2x6TG5keVlYQndaWEpKYm1sMFJHRjBZVnRwWFR0Y2JpQWdJQ0FnSUhaaGNpQmxjbkp2Y2xSb2NtOTNianRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDOHZJRU5oZEdOb2FXNW5JR1Z5Y205eWN5QnRZV3RsY3lCa1pXSjFaMmRwYm1jZ2JXOXlaU0JrYVdabWFXTjFiSFFzSUhOdklIZGxJSE4wWVhKMElIZHBkR2hjYmlBZ0lDQWdJQ0FnTHk4Z1pYSnliM0pVYUhKdmQyNGdjMlYwSUhSdklIUnlkV1VnWW1WbWIzSmxJSE5sZEhScGJtY2dhWFFnZEc4Z1ptRnNjMlVnWVdaMFpYSWdZMkZzYkdsdVoxeHVJQ0FnSUNBZ0lDQXZMeUJqYkc5elpTQXRMU0JwWmlCcGRDZHpJSE4wYVd4c0lITmxkQ0IwYnlCMGNuVmxJR2x1SUhSb1pTQm1hVzVoYkd4NUlHSnNiMk5yTENCcGRDQnRaV0Z1YzF4dUlDQWdJQ0FnSUNBdkx5QjNjbUZ3Y0dWeUxtTnNiM05sSUhSb2NtVjNMbHh1SUNBZ0lDQWdJQ0JsY25KdmNsUm9jbTkzYmlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBibWwwUkdGMFlTQWhQVDBnVkhKaGJuTmhZM1JwYjI0dVQwSlRSVkpXUlVSZlJWSlNUMUlnSmlZZ2QzSmhjSEJsY2k1amJHOXpaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIZHlZWEJ3WlhJdVkyeHZjMlV1WTJGc2JDaDBhR2x6TENCcGJtbDBSR0YwWVNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaWEp5YjNKVWFISnZkMjRnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGxjbkp2Y2xSb2NtOTNiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRlJvWlNCamJHOXpaWElnWm05eUlIZHlZWEJ3WlhJZ2FTQjBhSEpsZHlCaGJpQmxjbkp2Y2pzZ1kyeHZjMlVnZEdobElISmxiV0ZwYm1sdVoxeHVJQ0FnSUNBZ0lDQWdJQzh2SUhkeVlYQndaWEp6SUdKMWRDQnphV3hsYm1ObElHRnVlU0JsZUdObGNIUnBiMjV6SUdaeWIyMGdkR2hsYlNCMGJ5Qmxibk4xY21VZ2RHaGhkQ0IwYUdWY2JpQWdJQ0FnSUNBZ0lDQXZMeUJtYVhKemRDQmxjbkp2Y2lCcGN5QjBhR1VnYjI1bElIUnZJR0oxWW1Kc1pTQjFjQzVjYmlBZ0lDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVqYkc5elpVRnNiQ2hwSUNzZ01TazdYRzRnSUNBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UzMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbmR5WVhCd1pYSkpibWwwUkdGMFlTNXNaVzVuZEdnZ1BTQXdPMXh1SUNCOVhHNTlPMXh1WEc1MllYSWdWSEpoYm5OaFkzUnBiMjRnUFNCN1hHNWNiaUFnVFdsNGFXNDZJRTFwZUdsdUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWIydGxiaUIwYnlCc2IyOXJJR1p2Y2lCMGJ5QmtaWFJsY20xcGJtVWdhV1lnWVc0Z1pYSnliM0lnYjJOamRYSnlaV1F1WEc0Z0lDQXFMMXh1SUNCUFFsTkZVbFpGUkY5RlVsSlBVam9nZTMxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCVWNtRnVjMkZqZEdsdmJqc2lYWDA9IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFZpZXdwb3J0TWV0cmljc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFZpZXdwb3J0TWV0cmljcyA9IHtcblxuICBjdXJyZW50U2Nyb2xsTGVmdDogMCxcblxuICBjdXJyZW50U2Nyb2xsVG9wOiAwLFxuXG4gIHJlZnJlc2hTY3JvbGxWYWx1ZXM6IGZ1bmN0aW9uIChzY3JvbGxQb3NpdGlvbikge1xuICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdCA9IHNjcm9sbFBvc2l0aW9uLng7XG4gICAgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3AgPSBzY3JvbGxQb3NpdGlvbi55O1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVmlld3BvcnRNZXRyaWNzOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgYWNjdW11bGF0ZUludG9cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKlxuICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNcbiAqIGlzIHVzZWQgdG8gY29uc2VydmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBzYWNyaWZpY2VzXG4gKiBBUEkgY2xlYW5uZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5nIHBhc3NlZCBpbiBhbmQgbm90XG4gKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVudGA6XG4gKlxuICogYGEgPSBhY2N1bXVsYXRlSW50byhhLCBiKTtgXG4gKlxuICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZvciBzb21ldGhpbmcgY2xlYW5lci5cbiAqXG4gKiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG4gKi9cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xuICAhKG5leHQgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNjdW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdFxuICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLlxuICB2YXIgY3VycmVudElzQXJyYXkgPSBBcnJheS5pc0FycmF5KGN1cnJlbnQpO1xuICB2YXIgbmV4dElzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5leHQpO1xuXG4gIGlmIChjdXJyZW50SXNBcnJheSAmJiBuZXh0SXNBcnJheSkge1xuICAgIGN1cnJlbnQucHVzaC5hcHBseShjdXJyZW50LCBuZXh0KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGlmIChjdXJyZW50SXNBcnJheSkge1xuICAgIGN1cnJlbnQucHVzaChuZXh0KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGlmIChuZXh0SXNBcnJheSkge1xuICAgIC8vIEEgYml0IHRvbyBkYW5nZXJvdXMgdG8gbXV0YXRlIGBuZXh0YC5cbiAgICByZXR1cm4gW2N1cnJlbnRdLmNvbmNhdChuZXh0KTtcbiAgfVxuXG4gIHJldHVybiBbY3VycmVudCwgbmV4dF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWNjdW11bGF0ZUludG87XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTloWTJOMWJYVnNZWFJsU1c1MGJ5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE5DMHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElHRmpZM1Z0ZFd4aGRHVkpiblJ2WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNwY2JpQXFJRUZqWTNWdGRXeGhkR1Z6SUdsMFpXMXpJSFJvWVhRZ2JYVnpkQ0J1YjNRZ1ltVWdiblZzYkNCdmNpQjFibVJsWm1sdVpXUWdhVzUwYnlCMGFHVWdabWx5YzNRZ2IyNWxMaUJVYUdselhHNGdLaUJwY3lCMWMyVmtJSFJ2SUdOdmJuTmxjblpsSUcxbGJXOXllU0JpZVNCaGRtOXBaR2x1WnlCaGNuSmhlU0JoYkd4dlkyRjBhVzl1Y3l3Z1lXNWtJSFJvZFhNZ2MyRmpjbWxtYVdObGMxeHVJQ29nUVZCSklHTnNaV0Z1Ym1WemN5NGdVMmx1WTJVZ1lHTjFjbkpsYm5SZ0lHTmhiaUJpWlNCdWRXeHNJR0psWm05eVpTQmlaV2x1WnlCd1lYTnpaV1FnYVc0Z1lXNWtJRzV2ZEZ4dUlDb2diblZzYkNCaFpuUmxjaUIwYUdseklHWjFibU4wYVc5dUxDQnRZV3RsSUhOMWNtVWdkRzhnWVhOemFXZHVJR2wwSUdKaFkyc2dkRzhnWUdOMWNuSmxiblJnT2x4dUlDcGNiaUFxSUdCaElEMGdZV05qZFcxMWJHRjBaVWx1ZEc4b1lTd2dZaWs3WUZ4dUlDcGNiaUFxSUZSb2FYTWdRVkJKSUhOb2IzVnNaQ0JpWlNCemNHRnlhVzVuYkhrZ2RYTmxaQzRnVkhKNUlHQmhZMk4xYlhWc1lYUmxZQ0JtYjNJZ2MyOXRaWFJvYVc1bklHTnNaV0Z1WlhJdVhHNGdLbHh1SUNvZ1FISmxkSFZ5YmlCN0tueGhjbkpoZVR3cVBuMGdRVzRnWVdOamRXMTFiR0YwYVc5dUlHOW1JR2wwWlcxekxseHVJQ292WEc1Y2JtWjFibU4wYVc5dUlHRmpZM1Z0ZFd4aGRHVkpiblJ2S0dOMWNuSmxiblFzSUc1bGVIUXBJSHRjYmlBZ0lTaHVaWGgwSUNFOUlHNTFiR3dwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMkZqWTNWdGRXeGhkR1ZKYm5SdktDNHVMaWs2SUVGalkzVnRkV3hoZEdWa0lHbDBaVzF6SUcxMWMzUWdibTkwSUdKbElHNTFiR3dnYjNJZ2RXNWtaV1pwYm1Wa0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdhV1lnS0dOMWNuSmxiblFnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGgwTzF4dUlDQjlYRzVjYmlBZ0x5OGdRbTkwYUNCaGNtVWdibTkwSUdWdGNIUjVMaUJYWVhKdWFXNW5PaUJPWlhabGNpQmpZV3hzSUhndVkyOXVZMkYwS0hrcElIZG9aVzRnZVc5MUlHRnlaU0J1YjNSY2JpQWdMeThnWTJWeWRHRnBiaUIwYUdGMElIZ2dhWE1nWVc0Z1FYSnlZWGtnS0hnZ1kyOTFiR1FnWW1VZ1lTQnpkSEpwYm1jZ2QybDBhQ0JqYjI1allYUWdiV1YwYUc5a0tTNWNiaUFnZG1GeUlHTjFjbkpsYm5SSmMwRnljbUY1SUQwZ1FYSnlZWGt1YVhOQmNuSmhlU2hqZFhKeVpXNTBLVHRjYmlBZ2RtRnlJRzVsZUhSSmMwRnljbUY1SUQwZ1FYSnlZWGt1YVhOQmNuSmhlU2h1WlhoMEtUdGNibHh1SUNCcFppQW9ZM1Z5Y21WdWRFbHpRWEp5WVhrZ0ppWWdibVY0ZEVselFYSnlZWGtwSUh0Y2JpQWdJQ0JqZFhKeVpXNTBMbkIxYzJndVlYQndiSGtvWTNWeWNtVnVkQ3dnYm1WNGRDazdYRzRnSUNBZ2NtVjBkWEp1SUdOMWNuSmxiblE3WEc0Z0lIMWNibHh1SUNCcFppQW9ZM1Z5Y21WdWRFbHpRWEp5WVhrcElIdGNiaUFnSUNCamRYSnlaVzUwTG5CMWMyZ29ibVY0ZENrN1hHNGdJQ0FnY21WMGRYSnVJR04xY25KbGJuUTdYRzRnSUgxY2JseHVJQ0JwWmlBb2JtVjRkRWx6UVhKeVlYa3BJSHRjYmlBZ0lDQXZMeUJCSUdKcGRDQjBiMjhnWkdGdVoyVnliM1Z6SUhSdklHMTFkR0YwWlNCZ2JtVjRkR0F1WEc0Z0lDQWdjbVYwZFhKdUlGdGpkWEp5Wlc1MFhTNWpiMjVqWVhRb2JtVjRkQ2s3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnVzJOMWNuSmxiblFzSUc1bGVIUmRPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHRmpZM1Z0ZFd4aGRHVkpiblJ2T3lKZGZRPT0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgYWRsZXIzMlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIE1PRCA9IDY1NTIxO1xuXG4vLyBhZGxlcjMyIGlzIG5vdCBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcsIGFuZCBpcyBvbmx5IHVzZWQgdG8gc2FuaXR5IGNoZWNrIHRoYXRcbi8vIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBtYXRjaGVzIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuXG4vLyBUaGlzIGltcGxlbWVudGF0aW9uIChhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIFNoZWV0SlMgdmVyc2lvbikgaGFzIGJlZW4gb3B0aW1pemVkXG4vLyBmb3Igb3VyIHVzZSBjYXNlLCBhdCB0aGUgZXhwZW5zZSBvZiBjb25mb3JtaW5nIHRvIHRoZSBhZGxlcjMyIHNwZWNpZmljYXRpb25cbi8vIGZvciBub24tYXNjaWkgaW5wdXRzLlxuZnVuY3Rpb24gYWRsZXIzMihkYXRhKSB7XG4gIHZhciBhID0gMTtcbiAgdmFyIGIgPSAwO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0gZGF0YS5sZW5ndGg7XG4gIHZhciBtID0gbCAmIH4weDM7XG4gIHdoaWxlIChpIDwgbSkge1xuICAgIGZvciAoOyBpIDwgTWF0aC5taW4oaSArIDQwOTYsIG0pOyBpICs9IDQpIHtcbiAgICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAyKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDMpKTtcbiAgICB9XG4gICAgYSAlPSBNT0Q7XG4gICAgYiAlPSBNT0Q7XG4gIH1cbiAgZm9yICg7IGkgPCBsOyBpKyspIHtcbiAgICBiICs9IGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIGEgJT0gTU9EO1xuICBiICU9IE1PRDtcbiAgcmV0dXJuIGEgfCBiIDw8IDE2O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBjYW5EZWZpbmVQcm9wZXJ0eVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7XG4gICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0cnVlO1xuICB9IGNhdGNoICh4KSB7XG4gICAgLy8gSUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3BlcnR5XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYW5EZWZpbmVQcm9wZXJ0eTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOWpZVzVFWldacGJtVlFjbTl3WlhKMGVTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnWTJGdVJHVm1hVzVsVUhKdmNHVnlkSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCallXNUVaV1pwYm1WUWNtOXdaWEowZVNBOUlHWmhiSE5sTzF4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdkSEo1SUh0Y2JpQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2UzMHNJQ2Q0Snl3Z2V5Qm5aWFE2SUdaMWJtTjBhVzl1SUNncElIdDlJSDBwTzF4dUlDQWdJR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVJRDBnZEhKMVpUdGNiaUFnZlNCallYUmphQ0FvZUNrZ2UxeHVJQ0FnSUM4dklFbEZJSGRwYkd3Z1ptRnBiQ0J2YmlCa1pXWnBibVZRY205d1pYSjBlVnh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWTJGdVJHVm1hVzVsVUhKdmNHVnlkSGs3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBkYW5nZXJvdXNTdHlsZVZhbHVlXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENTU1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9DU1NQcm9wZXJ0eScpO1xuXG52YXIgaXNVbml0bGVzc051bWJlciA9IENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXI7XG5cbi8qKlxuICogQ29udmVydCBhIHZhbHVlIGludG8gdGhlIHByb3BlciBjc3Mgd3JpdGFibGUgdmFsdWUuIFRoZSBzdHlsZSBuYW1lIGBuYW1lYFxuICogc2hvdWxkIGJlIGxvZ2ljYWwgKG5vIGh5cGhlbnMpLCBhcyBzcGVjaWZpZWRcbiAqIGluIGBDU1NQcm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBDU1MgcHJvcGVydHkgbmFtZSBzdWNoIGFzIGB0b3BNYXJnaW5gLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBDU1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBweGAuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFwcGxpZWQuXG4gKi9cbmZ1bmN0aW9uIGRhbmdlcm91c1N0eWxlVmFsdWUobmFtZSwgdmFsdWUpIHtcbiAgLy8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBlVGV4dEZvckJyb3dzZXIoKSBjYWxscyBoZXJlIHNpbmNlIHRoZVxuICAvLyB3aG9sZSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVkIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBpbmplY3RlZCBpbnRvXG4gIC8vIHRoZSBtYXJrdXAuIElmIHlvdSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3RcbiAgLy8gYXJiaXRyYXJ5IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRuJ3QgcmVwcm8gdGhpcyk6XG4gIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRlcl9FdmFzaW9uX0NoZWF0X1NoZWV0XG4gIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5lci5jby51ay8yMDA3LzExLzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uL1xuICAvLyBUaGlzIGlzIG5vdCBhbiBYU1MgaG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0aW9uIGlzc3VlXG4gIC8vIHdoaWNoIGhhcyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdyZSBnb2luZyB0b1xuICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBTZWUgIzIxMTU5MDFcblxuICB2YXIgaXNFbXB0eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdmFsdWUgPT09ICcnO1xuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHZhciBpc05vbk51bWVyaWMgPSBpc05hTih2YWx1ZSk7XG4gIGlmIChpc05vbk51bWVyaWMgfHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7XG4gICAgcmV0dXJuICcnICsgdmFsdWU7IC8vIGNhc3QgdG8gc3RyaW5nXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICB9XG4gIHJldHVybiB2YWx1ZSArICdweCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZTsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGRlcHJlY2F0ZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFRoaXMgd2lsbCBsb2cgYSBzaW5nbGUgZGVwcmVjYXRpb24gbm90aWNlIHBlciBmdW5jdGlvbiBhbmQgZm9yd2FyZCB0aGUgY2FsbFxuICogb24gdG8gdGhlIG5ldyBBUEkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZuTmFtZSBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdNb2R1bGUgVGhlIG1vZHVsZSB0aGF0IGZuIHdpbGwgZXhpc3QgaW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdQYWNrYWdlIFRoZSBtb2R1bGUgdGhhdCBmbiB3aWxsIGV4aXN0IGluXG4gKiBAcGFyYW0geyp9IGN0eCBUaGUgY29udGV4dCB0aGlzIGZvcndhcmRlZCBjYWxsIHNob3VsZCBydW4gaW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBmb3J3YXJkIG9uIHRvXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCB3YXJuIG9uY2UgYW5kIHRoZW4gY2FsbCBmblxuICovXG5mdW5jdGlvbiBkZXByZWNhdGVkKGZuTmFtZSwgbmV3TW9kdWxlLCBuZXdQYWNrYWdlLCBjdHgsIGZuKSB7XG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgbmV3Rm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuZWQsXG4gICAgICAvLyBSZXF1aXJlIGV4YW1wbGVzIGluIHRoaXMgc3RyaW5nIG11c3QgYmUgc3BsaXQgdG8gcHJldmVudCBSZWFjdCdzXG4gICAgICAvLyBidWlsZCB0b29scyBmcm9tIG1pc3Rha2luZyB0aGVtIGZvciByZWFsIHJlcXVpcmVzLlxuICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBidWlsZCB0b29scyB3aWxsIGF0dGVtcHQgdG8gYnVpbGQgYSAnJXMnIG1vZHVsZS5cbiAgICAgICdSZWFjdC4lcyBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICVzLiVzIGZyb20gcmVxdWlyZScgKyAnKFxcJyVzXFwnKSAnICsgJ2luc3RlYWQuJywgZm5OYW1lLCBuZXdNb2R1bGUsIGZuTmFtZSwgbmV3UGFja2FnZSkgOiB1bmRlZmluZWQ7XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KGN0eCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBvcmlnaW5hbCBmbiBhcmUgY29waWVkIG92ZXIuXG4gICAgLy8gSW4gcGFydGljdWxhciwgdGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBQcm9wVHlwZXNcbiAgICByZXR1cm4gYXNzaWduKG5ld0ZuLCBmbik7XG4gIH1cblxuICByZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlZDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOWtaWEJ5WldOaGRHVmtMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQmtaWEJ5WldOaGRHVmtYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dUx5b3FYRzRnS2lCVWFHbHpJSGRwYkd3Z2JHOW5JR0VnYzJsdVoyeGxJR1JsY0hKbFkyRjBhVzl1SUc1dmRHbGpaU0J3WlhJZ1puVnVZM1JwYjI0Z1lXNWtJR1p2Y25kaGNtUWdkR2hsSUdOaGJHeGNiaUFxSUc5dUlIUnZJSFJvWlNCdVpYY2dRVkJKTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JtYms1aGJXVWdWR2hsSUc1aGJXVWdiMllnZEdobElHWjFibU4wYVc5dVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibVYzVFc5a2RXeGxJRlJvWlNCdGIyUjFiR1VnZEdoaGRDQm1iaUIzYVd4c0lHVjRhWE4wSUdsdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibVYzVUdGamEyRm5aU0JVYUdVZ2JXOWtkV3hsSUhSb1lYUWdabTRnZDJsc2JDQmxlR2x6ZENCcGJseHVJQ29nUUhCaGNtRnRJSHNxZlNCamRIZ2dWR2hsSUdOdmJuUmxlSFFnZEdocGN5Qm1iM0ozWVhKa1pXUWdZMkZzYkNCemFHOTFiR1FnY25WdUlHbHVYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCbWJpQlVhR1VnWm5WdVkzUnBiMjRnZEc4Z1ptOXlkMkZ5WkNCdmJpQjBiMXh1SUNvZ1FISmxkSFZ5YmlCN1puVnVZM1JwYjI1OUlGUm9aU0JtZFc1amRHbHZiaUIwYUdGMElIZHBiR3dnZDJGeWJpQnZibU5sSUdGdVpDQjBhR1Z1SUdOaGJHd2dabTVjYmlBcUwxeHVablZ1WTNScGIyNGdaR1Z3Y21WallYUmxaQ2htYms1aGJXVXNJRzVsZDAxdlpIVnNaU3dnYm1WM1VHRmphMkZuWlN3Z1kzUjRMQ0JtYmlrZ2UxeHVJQ0IyWVhJZ2QyRnlibVZrSUQwZ1ptRnNjMlU3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnZG1GeUlHNWxkMFp1SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvZDJGeWJtVmtMRnh1SUNBZ0lDQWdMeThnVW1WeGRXbHlaU0JsZUdGdGNHeGxjeUJwYmlCMGFHbHpJSE4wY21sdVp5QnRkWE4wSUdKbElITndiR2wwSUhSdklIQnlaWFpsYm5RZ1VtVmhZM1FuYzF4dUlDQWdJQ0FnTHk4Z1luVnBiR1FnZEc5dmJITWdabkp2YlNCdGFYTjBZV3RwYm1jZ2RHaGxiU0JtYjNJZ2NtVmhiQ0J5WlhGMWFYSmxjeTVjYmlBZ0lDQWdJQzh2SUU5MGFHVnlkMmx6WlNCMGFHVWdZblZwYkdRZ2RHOXZiSE1nZDJsc2JDQmhkSFJsYlhCMElIUnZJR0oxYVd4a0lHRWdKeVZ6SnlCdGIyUjFiR1V1WEc0Z0lDQWdJQ0FuVW1WaFkzUXVKWE1nYVhNZ1pHVndjbVZqWVhSbFpDNGdVR3hsWVhObElIVnpaU0FsY3k0bGN5Qm1jbTl0SUhKbGNYVnBjbVVuSUNzZ0p5aGNYQ2NsYzF4Y0p5a2dKeUFySUNkcGJuTjBaV0ZrTGljc0lHWnVUbUZ0WlN3Z2JtVjNUVzlrZFd4bExDQm1iazVoYldVc0lHNWxkMUJoWTJ0aFoyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZDJGeWJtVmtJRDBnZEhKMVpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCbWJpNWhjSEJzZVNoamRIZ3NJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lDQWdmVHRjYmlBZ0lDQXZMeUJYWlNCdVpXVmtJSFJ2SUcxaGEyVWdjM1Z5WlNCaGJHd2djSEp2Y0dWeWRHbGxjeUJ2WmlCMGFHVWdiM0pwWjJsdVlXd2dabTRnWVhKbElHTnZjR2xsWkNCdmRtVnlMbHh1SUNBZ0lDOHZJRWx1SUhCaGNuUnBZM1ZzWVhJc0lIUm9hWE1nYVhNZ2JtVmxaR1ZrSUhSdklITjFjSEJ2Y25RZ1VISnZjRlI1Y0dWelhHNGdJQ0FnY21WMGRYSnVJR0Z6YzJsbmJpaHVaWGRHYml3Z1ptNHBPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJR1p1TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1JsY0hKbFkyRjBaV1E3SWwxOSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXJcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFU0NBUEVfTE9PS1VQID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc+JzogJyZndDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdcXCcnOiAnJiN4Mjc7J1xufTtcblxudmFyIEVTQ0FQRV9SRUdFWCA9IC9bJj48XCInXS9nO1xuXG5mdW5jdGlvbiBlc2NhcGVyKG1hdGNoKSB7XG4gIHJldHVybiBFU0NBUEVfTE9PS1VQW21hdGNoXTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHRleHQgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5cbiAqXG4gKiBAcGFyYW0geyp9IHRleHQgVGV4dCB2YWx1ZSB0byBlc2NhcGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkge1xuICByZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZShFU0NBUEVfUkVHRVgsIGVzY2FwZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcjsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGZpbmRET01Ob2RlXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1lbnR9IGNvbXBvbmVudE9yRWxlbWVudFxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290IG5vZGUgb2YgdGhpcyBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGdldERPTU5vZGUgb3IgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIoKS4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHtcbiAgICByZXR1cm4gY29tcG9uZW50T3JFbGVtZW50O1xuICB9XG4gIGlmIChSZWFjdEluc3RhbmNlTWFwLmhhcyhjb21wb25lbnRPckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuZ2V0Tm9kZUZyb21JbnN0YW5jZShjb21wb25lbnRPckVsZW1lbnQpO1xuICB9XG4gICEoY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciA9PSBudWxsIHx8IHR5cGVvZiBjb21wb25lbnRPckVsZW1lbnQucmVuZGVyICE9PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kRE9NTm9kZSB3YXMgY2FsbGVkIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCBhcHBlYXJzIHRvIGJlIG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUgKGtleXM6ICVzKScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kRE9NTm9kZTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOW1hVzVrUkU5TlRtOWtaUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCbWFXNWtSRTlOVG05a1pWeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTjFjbkpsYm5SUGQyNWxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEZFhKeVpXNTBUM2R1WlhJbktUdGNiblpoY2lCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVsdWMzUmhibU5sVFdGd0p5azdYRzUyWVhJZ1VtVmhZM1JOYjNWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5iM1Z1ZENjcE8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUhSb1pTQkVUMDBnYm05a1pTQnlaVzVrWlhKbFpDQmllU0IwYUdseklHVnNaVzFsYm5RdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSHhFVDAxRmJHVnRaVzUwZlNCamIyMXdiMjVsYm5SUGNrVnNaVzFsYm5SY2JpQXFJRUJ5WlhSMWNtNGdlejlFVDAxRmJHVnRaVzUwZlNCVWFHVWdjbTl2ZENCdWIyUmxJRzltSUhSb2FYTWdaV3hsYldWdWRDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1ptbHVaRVJQVFU1dlpHVW9ZMjl0Y0c5dVpXNTBUM0pGYkdWdFpXNTBLU0I3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnZG1GeUlHOTNibVZ5SUQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZER0Y2JpQWdJQ0JwWmlBb2IzZHVaWElnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHOTNibVZ5TGw5M1lYSnVaV1JCWW05MWRGSmxabk5KYmxKbGJtUmxjaXdnSnlWeklHbHpJR0ZqWTJWemMybHVaeUJuWlhSRVQwMU9iMlJsSUc5eUlHWnBibVJFVDAxT2IyUmxJR2x1YzJsa1pTQnBkSE1nY21WdVpHVnlLQ2t1SUNjZ0t5QW5jbVZ1WkdWeUtDa2djMmh2ZFd4a0lHSmxJR0VnY0hWeVpTQm1kVzVqZEdsdmJpQnZaaUJ3Y205d2N5QmhibVFnYzNSaGRHVXVJRWwwSUhOb2IzVnNaQ0FuSUNzZ0oyNWxkbVZ5SUdGalkyVnpjeUJ6YjIxbGRHaHBibWNnZEdoaGRDQnlaWEYxYVhKbGN5QnpkR0ZzWlNCa1lYUmhJR1p5YjIwZ2RHaGxJSEJ5WlhacGIzVnpJQ2NnS3lBbmNtVnVaR1Z5TENCemRXTm9JR0Z6SUhKbFpuTXVJRTF2ZG1VZ2RHaHBjeUJzYjJkcFl5QjBieUJqYjIxd2IyNWxiblJFYVdSTmIzVnVkQ0JoYm1RZ0p5QXJJQ2RqYjIxd2IyNWxiblJFYVdSVmNHUmhkR1VnYVc1emRHVmhaQzRuTENCdmQyNWxjaTVuWlhST1lXMWxLQ2tnZkh3Z0owRWdZMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCdmQyNWxjaTVmZDJGeWJtVmtRV0p2ZFhSU1pXWnpTVzVTWlc1a1pYSWdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCcFppQW9ZMjl0Y0c5dVpXNTBUM0pGYkdWdFpXNTBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ2ZWeHVJQ0JwWmlBb1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MExtNXZaR1ZVZVhCbElEMDlQU0F4S1NCN1hHNGdJQ0FnY21WMGRYSnVJR052YlhCdmJtVnVkRTl5Uld4bGJXVnVkRHRjYmlBZ2ZWeHVJQ0JwWmlBb1VtVmhZM1JKYm5OMFlXNWpaVTFoY0M1b1lYTW9ZMjl0Y0c5dVpXNTBUM0pGYkdWdFpXNTBLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVkdjbTl0U1c1emRHRnVZMlVvWTI5dGNHOXVaVzUwVDNKRmJHVnRaVzUwS1R0Y2JpQWdmVnh1SUNBaEtHTnZiWEJ2Ym1WdWRFOXlSV3hsYldWdWRDNXlaVzVrWlhJZ1BUMGdiblZzYkNCOGZDQjBlWEJsYjJZZ1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MExuSmxibVJsY2lBaFBUMGdKMloxYm1OMGFXOXVKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5abWx1WkVSUFRVNXZaR1VnZDJGeklHTmhiR3hsWkNCdmJpQmhiaUIxYm0xdmRXNTBaV1FnWTI5dGNHOXVaVzUwTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lXWmhiSE5sSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFZzWlcxbGJuUWdZWEJ3WldGeWN5QjBieUJpWlNCdVpXbDBhR1Z5SUZKbFlXTjBRMjl0Y0c5dVpXNTBJRzV2Y2lCRVQwMU9iMlJsSUNoclpYbHpPaUFsY3lrbkxDQlBZbXBsWTNRdWEyVjVjeWhqYjIxd2IyNWxiblJQY2tWc1pXMWxiblFwS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1ptbHVaRVJQVFU1dlpHVTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBmbGF0dGVuQ2hpbGRyZW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2ZXJzYWwuXG4gKiBAcGFyYW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQgY29tcG9uZW50LlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRoIHRvIGNoaWxkLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3RhbmNlLlxuICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0O1xuICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoa2V5VW5pcXVlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJywgbmFtZSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxsKSB7XG4gICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7XG4gIH1cbn1cblxuLyoqXG4gKiBGbGF0dGVucyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuIEFueSBudWxsXG4gKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdC5cbiAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJlbiBrZXllZCBieSBuYW1lLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHt9O1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTltYkdGMGRHVnVRMmhwYkdSeVpXNHVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElHWnNZWFIwWlc1RGFHbHNaSEpsYmx4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNGdQU0J5WlhGMWFYSmxLQ2N1TDNSeVlYWmxjbk5sUVd4c1EyaHBiR1J5Wlc0bktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJSFJ5WVhabGNuTmxRMjl1ZEdWNGRDQkRiMjUwWlhoMElIQmhjM05sWkNCMGFISnZkV2RvSUhSeVlYWmxjbk5oYkM1Y2JpQXFJRUJ3WVhKaGJTQjdQMUpsWVdOMFEyOXRjRzl1Wlc1MGZTQmphR2xzWkNCU1pXRmpkQ0JqYUdsc1pDQmpiMjF3YjI1bGJuUXVYRzRnS2lCQWNHRnlZVzBnZXlGemRISnBibWQ5SUc1aGJXVWdVM1J5YVc1bklHNWhiV1VnYjJZZ2EyVjVJSEJoZEdnZ2RHOGdZMmhwYkdRdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdac1lYUjBaVzVUYVc1bmJHVkRhR2xzWkVsdWRHOURiMjUwWlhoMEtIUnlZWFpsY25ObFEyOXVkR1Y0ZEN3Z1kyaHBiR1FzSUc1aGJXVXBJSHRjYmlBZ0x5OGdWMlVnWm05MWJtUWdZU0JqYjIxd2IyNWxiblFnYVc1emRHRnVZMlV1WEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0IwY21GMlpYSnpaVU52Ym5SbGVIUTdYRzRnSUhaaGNpQnJaWGxWYm1seGRXVWdQU0J5WlhOMWJIUmJibUZ0WlYwZ1BUMDlJSFZ1WkdWbWFXNWxaRHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloclpYbFZibWx4ZFdVc0lDZG1iR0YwZEdWdVEyaHBiR1J5Wlc0b0xpNHVLVG9nUlc1amIzVnVkR1Z5WldRZ2RIZHZJR05vYVd4a2NtVnVJSGRwZEdnZ2RHaGxJSE5oYldVZ2EyVjVMQ0FuSUNzZ0oyQWxjMkF1SUVOb2FXeGtJR3RsZVhNZ2JYVnpkQ0JpWlNCMWJtbHhkV1U3SUhkb1pXNGdkSGR2SUdOb2FXeGtjbVZ1SUhOb1lYSmxJR0VnYTJWNUxDQnZibXg1SUNjZ0t5QW5kR2hsSUdacGNuTjBJR05vYVd4a0lIZHBiR3dnWW1VZ2RYTmxaQzRuTENCdVlXMWxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNCcFppQW9hMlY1Vlc1cGNYVmxJQ1ltSUdOb2FXeGtJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQnlaWE4xYkhSYmJtRnRaVjBnUFNCamFHbHNaRHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVac1lYUjBaVzV6SUdOb2FXeGtjbVZ1SUhSb1lYUWdZWEpsSUhSNWNHbGpZV3hzZVNCemNHVmphV1pwWldRZ1lYTWdZSEJ5YjNCekxtTm9hV3hrY21WdVlDNGdRVzU1SUc1MWJHeGNiaUFxSUdOb2FXeGtjbVZ1SUhkcGJHd2dibTkwSUdKbElHbHVZMngxWkdWa0lHbHVJSFJvWlNCeVpYTjFiSFJwYm1jZ2IySnFaV04wTGx4dUlDb2dRSEpsZEhWeWJpQjdJVzlpYW1WamRIMGdabXhoZEhSbGJtVmtJR05vYVd4a2NtVnVJR3RsZVdWa0lHSjVJRzVoYldVdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdac1lYUjBaVzVEYUdsc1pISmxiaWhqYUdsc1pISmxiaWtnZTF4dUlDQnBaaUFvWTJocGJHUnlaVzRnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmphR2xzWkhKbGJqdGNiaUFnZlZ4dUlDQjJZWElnY21WemRXeDBJRDBnZTMwN1hHNGdJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzRvWTJocGJHUnlaVzRzSUdac1lYUjBaVzVUYVc1bmJHVkRhR2xzWkVsdWRHOURiMjUwWlhoMExDQnlaWE4xYkhRcE8xeHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdac1lYUjBaVzVEYUdsc1pISmxianNpWFgwPSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBmb3JFYWNoQWNjdW11bGF0ZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQHBhcmFtIHthcnJheX0gYXJyIGFuIFwiYWNjdW11bGF0aW9uXCIgb2YgaXRlbXMgd2hpY2ggaXMgZWl0aGVyIGFuIEFycmF5IG9yXG4gKiBhIHNpbmdsZSBpdGVtLiBVc2VmdWwgd2hlbiBwYWlyZWQgd2l0aCB0aGUgYGFjY3VtdWxhdGVgIG1vZHVsZS4gVGhpcyBpcyBhXG4gKiBzaW1wbGUgdXRpbGl0eSB0aGF0IGFsbG93cyB1cyB0byByZWFzb24gYWJvdXQgYSBjb2xsZWN0aW9uIG9mIGl0ZW1zLCBidXRcbiAqIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgZXhhY3RseSBvbmUgaXRlbSAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvXG4gKiBhbGxvY2F0ZSBhbiBhcnJheSkuXG4gKi9cbnZhciBmb3JFYWNoQWNjdW11bGF0ZWQgPSBmdW5jdGlvbiAoYXJyLCBjYiwgc2NvcGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGFyci5mb3JFYWNoKGNiLCBzY29wZSk7XG4gIH0gZWxzZSBpZiAoYXJyKSB7XG4gICAgY2IuY2FsbChzY29wZSwgYXJyKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoQWNjdW11bGF0ZWQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldEV2ZW50Q2hhckNvZGVcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIGBjaGFyQ29kZWAgcmVwcmVzZW50cyB0aGUgYWN0dWFsIFwiY2hhcmFjdGVyIGNvZGVcIiBhbmQgaXMgc2FmZSB0byB1c2Ugd2l0aFxuICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIHByaW50YWJsZVxuICogY2hhcmFjdGVycyBwcm9kdWNlIGEgdmFsaWQgYGNoYXJDb2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50ZXIuXG4gKiBUaGUgVGFiLWtleSBpcyBjb25zaWRlcmVkIG5vbi1wcmludGFibGUgYW5kIGRvZXMgbm90IGhhdmUgYSBgY2hhckNvZGVgLFxuICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb2R1Y2UgYSB0YWItY2hhcmFjdGVyIGluIGJyb3dzZXJzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFsaXplZCBgY2hhckNvZGVgIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSB7XG4gIHZhciBjaGFyQ29kZTtcbiAgdmFyIGtleUNvZGUgPSBuYXRpdmVFdmVudC5rZXlDb2RlO1xuXG4gIGlmICgnY2hhckNvZGUnIGluIG5hdGl2ZUV2ZW50KSB7XG4gICAgY2hhckNvZGUgPSBuYXRpdmVFdmVudC5jaGFyQ29kZTtcblxuICAgIC8vIEZGIGRvZXMgbm90IHNldCBgY2hhckNvZGVgIGZvciB0aGUgRW50ZXIta2V5LCBjaGVjayBhZ2FpbnN0IGBrZXlDb2RlYC5cbiAgICBpZiAoY2hhckNvZGUgPT09IDAgJiYga2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIGNoYXJDb2RlID0gMTM7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgYGNoYXJDb2RlYCwgYnV0IGBrZXlDb2RlYCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgY2hhckNvZGUgPSBrZXlDb2RlO1xuICB9XG5cbiAgLy8gU29tZSBub24tcHJpbnRhYmxlIGtleXMgYXJlIHJlcG9ydGVkIGluIGBjaGFyQ29kZWAvYGtleUNvZGVgLCBkaXNjYXJkIHRoZW0uXG4gIC8vIE11c3Qgbm90IGRpc2NhcmQgdGhlIChub24tKXByaW50YWJsZSBFbnRlci1rZXkuXG4gIGlmIChjaGFyQ29kZSA+PSAzMiB8fCBjaGFyQ29kZSA9PT0gMTMpIHtcbiAgICByZXR1cm4gY2hhckNvZGU7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudENoYXJDb2RlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBnZXRFdmVudEtleVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG5cbi8qKlxuICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNhdGVkIEhUTUw1IGBrZXlgIHZhbHVlc1xuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xudmFyIG5vcm1hbGl6ZUtleSA9IHtcbiAgJ0VzYyc6ICdFc2NhcGUnLFxuICAnU3BhY2ViYXInOiAnICcsXG4gICdMZWZ0JzogJ0Fycm93TGVmdCcsXG4gICdVcCc6ICdBcnJvd1VwJyxcbiAgJ1JpZ2h0JzogJ0Fycm93UmlnaHQnLFxuICAnRG93bic6ICdBcnJvd0Rvd24nLFxuICAnRGVsJzogJ0RlbGV0ZScsXG4gICdXaW4nOiAnT1MnLFxuICAnTWVudSc6ICdDb250ZXh0TWVudScsXG4gICdBcHBzJzogJ0NvbnRleHRNZW51JyxcbiAgJ1Njcm9sbCc6ICdTY3JvbGxMb2NrJyxcbiAgJ01velByaW50YWJsZUtleSc6ICdVbmlkZW50aWZpZWQnXG59O1xuXG4vKipcbiAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5YFxuICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRlcGVuZCBvbiBrZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlclxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xudmFyIHRyYW5zbGF0ZVRvS2V5ID0ge1xuICA4OiAnQmFja3NwYWNlJyxcbiAgOTogJ1RhYicsXG4gIDEyOiAnQ2xlYXInLFxuICAxMzogJ0VudGVyJyxcbiAgMTY6ICdTaGlmdCcsXG4gIDE3OiAnQ29udHJvbCcsXG4gIDE4OiAnQWx0JyxcbiAgMTk6ICdQYXVzZScsXG4gIDIwOiAnQ2Fwc0xvY2snLFxuICAyNzogJ0VzY2FwZScsXG4gIDMyOiAnICcsXG4gIDMzOiAnUGFnZVVwJyxcbiAgMzQ6ICdQYWdlRG93bicsXG4gIDM1OiAnRW5kJyxcbiAgMzY6ICdIb21lJyxcbiAgMzc6ICdBcnJvd0xlZnQnLFxuICAzODogJ0Fycm93VXAnLFxuICAzOTogJ0Fycm93UmlnaHQnLFxuICA0MDogJ0Fycm93RG93bicsXG4gIDQ1OiAnSW5zZXJ0JyxcbiAgNDY6ICdEZWxldGUnLFxuICAxMTI6ICdGMScsIDExMzogJ0YyJywgMTE0OiAnRjMnLCAxMTU6ICdGNCcsIDExNjogJ0Y1JywgMTE3OiAnRjYnLFxuICAxMTg6ICdGNycsIDExOTogJ0Y4JywgMTIwOiAnRjknLCAxMjE6ICdGMTAnLCAxMjI6ICdGMTEnLCAxMjM6ICdGMTInLFxuICAxNDQ6ICdOdW1Mb2NrJyxcbiAgMTQ1OiAnU2Nyb2xsTG9jaycsXG4gIDIyNDogJ01ldGEnXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0RXZlbnRLZXkobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuICAgIC8vIE5vcm1hbGl6ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0b1xuICAgIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNhdGlvbi5cblxuICAgIC8vIEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxlS2V5YCBmb3IgYWxsXG4gICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1hbGl6ZWQgdG8gYFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuXG4gICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtuYXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcbiAgICBpZiAoa2V5ICE9PSAnVW5pZGVudGlmaWVkJykge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxuICAvLyBCcm93c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3ZSBjYW4uXG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgdmFyIGNoYXJDb2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7XG5cbiAgICAvLyBUaGUgZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24tcHJpbnRhYmxlIGFuZCBjYW5cbiAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVyIG5vbi1wcmludGFibGUga2V5IHNob3VsZC5cbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICB9XG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2hcbiAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwgZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLlxuICAgIHJldHVybiB0cmFuc2xhdGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJztcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldEV2ZW50TW9kaWZpZXJTdGF0ZVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVHJhbnNsYXRpb24gZnJvbSBtb2RpZmllciBrZXkgdG8gdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgaW4gdGhlIGV2ZW50LlxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2tleXMtTW9kaWZpZXJzXG4gKi9cblxudmFyIG1vZGlmaWVyS2V5VG9Qcm9wID0ge1xuICAnQWx0JzogJ2FsdEtleScsXG4gICdDb250cm9sJzogJ2N0cmxLZXknLFxuICAnTWV0YSc6ICdtZXRhS2V5JyxcbiAgJ1NoaWZ0JzogJ3NoaWZ0S2V5J1xufTtcblxuLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBnZXRNb2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8gdGhlIG9ubHlcbi8vIG1vZGlmaWVyIGtleXMgZXhwb3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2VzIG5vdCBzdXBwb3J0IExvY2sta2V5cy5cbi8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5mdW5jdGlvbiBtb2RpZmllclN0YXRlR2V0dGVyKGtleUFyZykge1xuICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzO1xuICB2YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDtcbiAgaWYgKG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUpIHtcbiAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShrZXlBcmcpO1xuICB9XG4gIHZhciBrZXlQcm9wID0gbW9kaWZpZXJLZXlUb1Byb3Bba2V5QXJnXTtcbiAgcmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3BdIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVudCkge1xuICByZXR1cm4gbW9kaWZpZXJTdGF0ZUdldHRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudE1vZGlmaWVyU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGdldEV2ZW50VGFyZ2V0XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHZXRzIHRoZSB0YXJnZXQgbm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNjb3VudGluZyBmb3JcbiAqIGluY29uc2lzdGVuY2llcyBpbiBicm93c2VyIERPTSBBUElzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBUYXJnZXQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIHRhcmdldCA9IG5hdGl2ZUV2ZW50LnRhcmdldCB8fCBuYXRpdmVFdmVudC5zcmNFbGVtZW50IHx8IHdpbmRvdztcbiAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBvbiB0ZXh0IG5vZGVzIChOb2RlLlRFWFRfTk9ERSBpcyAzKS5cbiAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pzL2V2ZW50c19wcm9wZXJ0aWVzLmh0bWxcbiAgcmV0dXJuIHRhcmdldC5ub2RlVHlwZSA9PT0gMyA/IHRhcmdldC5wYXJlbnROb2RlIDogdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50VGFyZ2V0OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBnZXRJdGVyYXRvckZuXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyogZ2xvYmFsIFN5bWJvbCAqL1xudmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xudmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuICpcbiAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICpcbiAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG4gKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAqICAgICAgIC4uLlxuICogICAgIH1cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGVcbiAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBpdGVyYXRvckZuO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHaXZlbiBhbnkgbm9kZSByZXR1cm4gdGhlIGZpcnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHJldHVybiB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gZ2V0TGVhZk5vZGUobm9kZSkge1xuICB3aGlsZSAobm9kZSAmJiBub2RlLmZpcnN0Q2hpbGQpIHtcbiAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuICB9XG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRhaW5lci4gVGhpcyB3aWxsIHdhbGsgdXAgdGhlXG4gKiBET00gaWYgYSBub2RlJ3Mgc2libGluZ3MgaGF2ZSBiZWVuIGV4aGF1c3RlZC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAqIEByZXR1cm4gez9ET01FbGVtZW50fERPTVRleHROb2RlfVxuICovXG5mdW5jdGlvbiBnZXRTaWJsaW5nTm9kZShub2RlKSB7XG4gIHdoaWxlIChub2RlKSB7XG4gICAgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICB9XG59XG5cbi8qKlxuICogR2V0IG9iamVjdCBkZXNjcmliaW5nIHRoZSBub2RlcyB3aGljaCBjb250YWluIGNoYXJhY3RlcnMgYXQgb2Zmc2V0LlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gcm9vdFxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHJldHVybiB7P29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChyb290LCBvZmZzZXQpIHtcbiAgdmFyIG5vZGUgPSBnZXRMZWFmTm9kZShyb290KTtcbiAgdmFyIG5vZGVTdGFydCA9IDA7XG4gIHZhciBub2RlRW5kID0gMDtcblxuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICBub2RlRW5kID0gbm9kZVN0YXJ0ICsgbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG5cbiAgICAgIGlmIChub2RlU3RhcnQgPD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCAtIG5vZGVTdGFydFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBub2RlU3RhcnQgPSBub2RlRW5kO1xuICAgIH1cblxuICAgIG5vZGUgPSBnZXRMZWFmTm9kZShnZXRTaWJsaW5nTm9kZShub2RlKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBnZXRUZXh0Q29udGVudEFjY2Vzc29yXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgY29udGVudEtleSA9IG51bGw7XG5cbi8qKlxuICogR2V0cyB0aGUga2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudCBvbiBhIERPTSBub2RlLlxuICpcbiAqIEByZXR1cm4gez9zdHJpbmd9IEtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpIHtcbiAgaWYgKCFjb250ZW50S2V5ICYmIEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAgIC8vIFByZWZlciB0ZXh0Q29udGVudCB0byBpbm5lclRleHQgYmVjYXVzZSBtYW55IGJyb3dzZXJzIHN1cHBvcnQgYm90aCBidXRcbiAgICAvLyBTVkcgPHRleHQ+IGVsZW1lbnRzIGRvbid0IHN1cHBvcnQgaW5uZXJUZXh0IGV2ZW4gd2hlbiA8ZGl2PiBkb2VzLlxuICAgIGNvbnRlbnRLZXkgPSAndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/ICd0ZXh0Q29udGVudCcgOiAnaW5uZXJUZXh0JztcbiAgfVxuICByZXR1cm4gY29udGVudEtleTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRUZXh0Q29udGVudEFjY2Vzc29yOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKTtcbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVtcHR5Q29tcG9uZW50Jyk7XG52YXIgUmVhY3ROYXRpdmVDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0TmF0aXZlQ29tcG9uZW50Jyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vLyBUbyBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5LCB3ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGluIHRoaXMgbW9kdWxlXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyID0gZnVuY3Rpb24gKCkge307XG5hc3NpZ24oUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyLnByb3RvdHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQuTWl4aW4sIHtcbiAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnRcbn0pO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgdHlwZSByZWZlcmVuY2UgaXMgYSBrbm93biBpbnRlcm5hbCB0eXBlLiBJLmUuIG5vdCBhIHVzZXJcbiAqIHByb3ZpZGVkIGNvbXBvc2l0ZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNJbnRlcm5hbENvbXBvbmVudFR5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBSZWFjdE5vZGUsIGNyZWF0ZSBhbiBpbnN0YW5jZSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgbW91bnRlZC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZVxuICogQHJldHVybiB7b2JqZWN0fSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgZWxlbWVudCdzIGNvbnN0cnVjdG9yLlxuICogQHByb3RlY3RlZFxuICovXG5mdW5jdGlvbiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5vZGUpIHtcbiAgdmFyIGluc3RhbmNlO1xuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7XG4gICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RFbXB0eUNvbXBvbmVudChpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgZWxlbWVudCA9IG5vZGU7XG4gICAgIShlbGVtZW50ICYmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCB0eXBlIGlzIGludmFsaWQ6IGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgYnVpbHQtaW4gY29tcG9uZW50cykgJyArICdvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgZWxlbWVudC50eXBlID09IG51bGwgPyBlbGVtZW50LnR5cGUgOiB0eXBlb2YgZWxlbWVudC50eXBlLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oZWxlbWVudC5fb3duZXIpKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2Ugc3RyaW5nIHZhbHVlc1xuICAgIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgaW5zdGFuY2UgPSBSZWFjdE5hdGl2ZUNvbXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKGVsZW1lbnQudHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0b20gY29tcG9uZW50cyB0aGF0IGFyZSBub3Qgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2UgY2FuIGRyb3AgdGhpcyBjb2RlIHBhdGguXG4gICAgICBpbnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlID0gbmV3IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlcigpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgaW5zdGFuY2UgPSBSZWFjdE5hdGl2ZUNvbXBvbmVudC5jcmVhdGVJbnN0YW5jZUZvclRleHQobm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VuY291bnRlcmVkIGludmFsaWQgUmVhY3Qgbm9kZSBvZiB0eXBlICVzJywgdHlwZW9mIG5vZGUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3RhbmNlLmNvbnN0cnVjdCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnJlY2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnVubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicsICdPbmx5IFJlYWN0IENvbXBvbmVudHMgY2FuIGJlIG1vdW50ZWQuJykgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBTZXRzIHVwIHRoZSBpbnN0YW5jZS4gVGhpcyBjYW4gcHJvYmFibHkganVzdCBtb3ZlIGludG8gdGhlIGNvbnN0cnVjdG9yIG5vdy5cbiAgaW5zdGFuY2UuY29uc3RydWN0KG5vZGUpO1xuXG4gIC8vIFRoZXNlIHR3byBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIERPTSBhbmQgQVJUIGRpZmZpbmcgYWxnb3JpdGhtc1xuICAvLyByZXNwZWN0aXZlbHkuIEluc3RlYWQgb2YgdXNpbmcgZXhwYW5kb3Mgb24gY29tcG9uZW50cywgd2Ugc2hvdWxkIGJlXG4gIC8vIHN0b3JpbmcgdGhlIHN0YXRlIG5lZWRlZCBieSB0aGUgZGlmZmluZyBhbGdvcml0aG1zIGVsc2V3aGVyZS5cbiAgaW5zdGFuY2UuX21vdW50SW5kZXggPSAwO1xuICBpbnN0YW5jZS5fbW91bnRJbWFnZSA9IG51bGw7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpbnN0YW5jZS5faXNPd25lck5lY2Vzc2FyeSA9IGZhbHNlO1xuICAgIGluc3RhbmNlLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNlO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0aGV5IHNob3VsZFxuICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2ludC5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7XG4gICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5cGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElHbHVjM1JoYm5ScFlYUmxVbVZoWTNSRGIyMXdiMjVsYm5SY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JGYlhCMGVVTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiWEIwZVVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUZKbFlXTjBUbUYwYVhabFEyOXRjRzl1Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFNWhkR2wyWlVOdmJYQnZibVZ1ZENjcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1THk4Z1ZHOGdZWFp2YVdRZ1lTQmplV05zYVdNZ1pHVndaVzVrWlc1amVTd2dkMlVnWTNKbFlYUmxJSFJvWlNCbWFXNWhiQ0JqYkdGemN5QnBiaUIwYUdseklHMXZaSFZzWlZ4dWRtRnlJRkpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MFYzSmhjSEJsY2lBOUlHWjFibU4wYVc5dUlDZ3BJSHQ5TzF4dVlYTnphV2R1S0ZKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBWM0poY0hCbGNpNXdjbTkwYjNSNWNHVXNJRkpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MExrMXBlR2x1TENCN1hHNGdJRjlwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBPaUJwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBYRzU5S1R0Y2JseHVablZ1WTNScGIyNGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLRzkzYm1WeUtTQjdYRzRnSUdsbUlDaHZkMjVsY2lrZ2UxeHVJQ0FnSUhaaGNpQnVZVzFsSUQwZ2IzZHVaWEl1WjJWMFRtRnRaU2dwTzF4dUlDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeUJEYUdWamF5QjBhR1VnY21WdVpHVnlJRzFsZEdodlpDQnZaaUJnSnlBcklHNWhiV1VnS3lBbllDNG5PMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z0p5YzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyaGxZMnNnYVdZZ2RHaGxJSFI1Y0dVZ2NtVm1aWEpsYm1ObElHbHpJR0VnYTI1dmQyNGdhVzUwWlhKdVlXd2dkSGx3WlM0Z1NTNWxMaUJ1YjNRZ1lTQjFjMlZ5WEc0Z0tpQndjbTkyYVdSbFpDQmpiMjF3YjNOcGRHVWdkSGx3WlM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCMGVYQmxYRzRnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCU1pYUjFjbTV6SUhSeWRXVWdhV1lnZEdocGN5QnBjeUJoSUhaaGJHbGtJR2x1ZEdWeWJtRnNJSFI1Y0dVdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdselNXNTBaWEp1WVd4RGIyMXdiMjVsYm5SVWVYQmxLSFI1Y0dVcElIdGNiaUFnY21WMGRYSnVJSFI1Y0dWdlppQjBlWEJsSUQwOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUhSNWNHVnZaaUIwZVhCbExuQnliM1J2ZEhsd1pTQWhQVDBnSjNWdVpHVm1hVzVsWkNjZ0ppWWdkSGx3Wlc5bUlIUjVjR1V1Y0hKdmRHOTBlWEJsTG0xdmRXNTBRMjl0Y0c5dVpXNTBJRDA5UFNBblpuVnVZM1JwYjI0bklDWW1JSFI1Y0dWdlppQjBlWEJsTG5CeWIzUnZkSGx3WlM1eVpXTmxhWFpsUTI5dGNHOXVaVzUwSUQwOVBTQW5ablZ1WTNScGIyNG5PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFZHBkbVZ1SUdFZ1VtVmhZM1JPYjJSbExDQmpjbVZoZEdVZ1lXNGdhVzV6ZEdGdVkyVWdkR2hoZENCM2FXeHNJR0ZqZEhWaGJHeDVJR0psSUcxdmRXNTBaV1F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFNXZaR1Y5SUc1dlpHVmNiaUFxSUVCeVpYUjFjbTRnZTI5aWFtVmpkSDBnUVNCdVpYY2dhVzV6ZEdGdVkyVWdiMllnZEdobElHVnNaVzFsYm5RbmN5QmpiMjV6ZEhKMVkzUnZjaTVjYmlBcUlFQndjbTkwWldOMFpXUmNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZENodWIyUmxLU0I3WEc0Z0lIWmhjaUJwYm5OMFlXNWpaVHRjYmx4dUlDQnBaaUFvYm05a1pTQTlQVDBnYm5Wc2JDQjhmQ0J1YjJSbElEMDlQU0JtWVd4elpTa2dlMXh1SUNBZ0lHbHVjM1JoYm1ObElEMGdibVYzSUZKbFlXTjBSVzF3ZEhsRGIyMXdiMjVsYm5Rb2FXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZENrN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JRzV2WkdVZ1BUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdkbUZ5SUdWc1pXMWxiblFnUFNCdWIyUmxPMXh1SUNBZ0lDRW9aV3hsYldWdWRDQW1KaUFvZEhsd1pXOW1JR1ZzWlcxbGJuUXVkSGx3WlNBOVBUMGdKMloxYm1OMGFXOXVKeUI4ZkNCMGVYQmxiMllnWld4bGJXVnVkQzUwZVhCbElEMDlQU0FuYzNSeWFXNW5KeWtwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMFZzWlcxbGJuUWdkSGx3WlNCcGN5QnBiblpoYkdsa09pQmxlSEJsWTNSbFpDQmhJSE4wY21sdVp5QW9abTl5SUdKMWFXeDBMV2x1SUdOdmJYQnZibVZ1ZEhNcElDY2dLeUFuYjNJZ1lTQmpiR0Z6Y3k5bWRXNWpkR2x2YmlBb1ptOXlJR052YlhCdmMybDBaU0JqYjIxd2IyNWxiblJ6S1NCaWRYUWdaMjkwT2lBbGN5NGxjeWNzSUdWc1pXMWxiblF1ZEhsd1pTQTlQU0J1ZFd4c0lEOGdaV3hsYldWdWRDNTBlWEJsSURvZ2RIbHdaVzltSUdWc1pXMWxiblF1ZEhsd1pTd2daMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLR1ZzWlcxbGJuUXVYMjkzYm1WeUtTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnTHk4Z1UzQmxZMmxoYkNCallYTmxJSE4wY21sdVp5QjJZV3gxWlhOY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdWc1pXMWxiblF1ZEhsd1pTQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0FnSUdsdWMzUmhibU5sSUQwZ1VtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUXVZM0psWVhSbFNXNTBaWEp1WVd4RGIyMXdiMjVsYm5Rb1pXeGxiV1Z1ZENrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNocGMwbHVkR1Z5Ym1Gc1EyOXRjRzl1Wlc1MFZIbHdaU2hsYkdWdFpXNTBMblI1Y0dVcEtTQjdYRzRnSUNBZ0lDQXZMeUJVYUdseklHbHpJSFJsYlhCdmNtRnlhV3g1SUdGMllXbHNZV0pzWlNCbWIzSWdZM1Z6ZEc5dElHTnZiWEJ2Ym1WdWRITWdkR2hoZENCaGNtVWdibTkwSUhOMGNtbHVaMXh1SUNBZ0lDQWdMeThnY21Wd2NtVnpaVzUwWVhScGIyNXpMaUJKTG1VdUlFRlNWQzRnVDI1alpTQjBhRzl6WlNCaGNtVWdkWEJrWVhSbFpDQjBieUIxYzJVZ2RHaGxJSE4wY21sdVoxeHVJQ0FnSUNBZ0x5OGdjbVZ3Y21WelpXNTBZWFJwYjI0c0lIZGxJR05oYmlCa2NtOXdJSFJvYVhNZ1kyOWtaU0J3WVhSb0xseHVJQ0FnSUNBZ2FXNXpkR0Z1WTJVZ1BTQnVaWGNnWld4bGJXVnVkQzUwZVhCbEtHVnNaVzFsYm5RcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwYm5OMFlXNWpaU0E5SUc1bGR5QlNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEZkeVlYQndaWElvS1R0Y2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHNXZaR1VnUFQwOUlDZHpkSEpwYm1jbklIeDhJSFI1Y0dWdlppQnViMlJsSUQwOVBTQW5iblZ0WW1WeUp5a2dlMXh1SUNBZ0lHbHVjM1JoYm1ObElEMGdVbVZoWTNST1lYUnBkbVZEYjIxd2IyNWxiblF1WTNKbFlYUmxTVzV6ZEdGdVkyVkdiM0pVWlhoMEtHNXZaR1VwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNGbVlXeHpaU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZibU52ZFc1MFpYSmxaQ0JwYm5aaGJHbGtJRkpsWVdOMElHNXZaR1VnYjJZZ2RIbHdaU0FsY3ljc0lIUjVjR1Z2WmlCdWIyUmxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmx4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIUjVjR1Z2WmlCcGJuTjBZVzVqWlM1amIyNXpkSEoxWTNRZ1BUMDlJQ2RtZFc1amRHbHZiaWNnSmlZZ2RIbHdaVzltSUdsdWMzUmhibU5sTG0xdmRXNTBRMjl0Y0c5dVpXNTBJRDA5UFNBblpuVnVZM1JwYjI0bklDWW1JSFI1Y0dWdlppQnBibk4wWVc1alpTNXlaV05sYVhabFEyOXRjRzl1Wlc1MElEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlIUjVjR1Z2WmlCcGJuTjBZVzVqWlM1MWJtMXZkVzUwUTI5dGNHOXVaVzUwSUQwOVBTQW5ablZ1WTNScGIyNG5MQ0FuVDI1c2VTQlNaV0ZqZENCRGIyMXdiMjVsYm5SeklHTmhiaUJpWlNCdGIzVnVkR1ZrTGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOVhHNWNiaUFnTHk4Z1UyVjBjeUIxY0NCMGFHVWdhVzV6ZEdGdVkyVXVJRlJvYVhNZ1kyRnVJSEJ5YjJKaFlteDVJR3AxYzNRZ2JXOTJaU0JwYm5SdklIUm9aU0JqYjI1emRISjFZM1J2Y2lCdWIzY3VYRzRnSUdsdWMzUmhibU5sTG1OdmJuTjBjblZqZENodWIyUmxLVHRjYmx4dUlDQXZMeUJVYUdWelpTQjBkMjhnWm1sbGJHUnpJR0Z5WlNCMWMyVmtJR0o1SUhSb1pTQkVUMDBnWVc1a0lFRlNWQ0JrYVdabWFXNW5JR0ZzWjI5eWFYUm9iWE5jYmlBZ0x5OGdjbVZ6Y0dWamRHbDJaV3g1TGlCSmJuTjBaV0ZrSUc5bUlIVnphVzVuSUdWNGNHRnVaRzl6SUc5dUlHTnZiWEJ2Ym1WdWRITXNJSGRsSUhOb2IzVnNaQ0JpWlZ4dUlDQXZMeUJ6ZEc5eWFXNW5JSFJvWlNCemRHRjBaU0J1WldWa1pXUWdZbmtnZEdobElHUnBabVpwYm1jZ1lXeG5iM0pwZEdodGN5QmxiSE5sZDJobGNtVXVYRzRnSUdsdWMzUmhibU5sTGw5dGIzVnVkRWx1WkdWNElEMGdNRHRjYmlBZ2FXNXpkR0Z1WTJVdVgyMXZkVzUwU1cxaFoyVWdQU0J1ZFd4c08xeHVYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdhVzV6ZEdGdVkyVXVYMmx6VDNkdVpYSk9aV05sYzNOaGNua2dQU0JtWVd4elpUdGNiaUFnSUNCcGJuTjBZVzVqWlM1ZmQyRnlibVZrUVdKdmRYUlNaV1p6U1c1U1pXNWtaWElnUFNCbVlXeHpaVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHbHVjM1JoYm1ObGN5QnphRzkxYkdRZ1puVnNiSGtnWTI5dWMzUnlkV04wWldRZ1lYUWdkR2hwY3lCd2IybHVkQ3dnYzI4Z2RHaGxlU0J6YUc5MWJHUmNiaUFnTHk4Z2JtOTBJR2RsZENCaGJua2dibVYzSUdacFpXeGtjeUJoWkdSbFpDQjBieUIwYUdWdElHRjBJSFJvYVhNZ2NHOXBiblF1WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnYVdZZ0tFOWlhbVZqZEM1d2NtVjJaVzUwUlhoMFpXNXphVzl1Y3lrZ2UxeHVJQ0FnSUNBZ1QySnFaV04wTG5CeVpYWmxiblJGZUhSbGJuTnBiMjV6S0dsdWMzUmhibU5sS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnYVc1emRHRnVZMlU3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWREc2lYWDA9IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGlzRXZlbnRTdXBwb3J0ZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciB1c2VIYXNGZWF0dXJlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB1c2VIYXNGZWF0dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJlxuICAvLyBhbHdheXMgcmV0dXJucyB0cnVlIGluIG5ld2VyIGJyb3dzZXJzIGFzIHBlciB0aGUgc3RhbmRhcmQuXG4gIC8vIEBzZWUgaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21pbXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlXG4gIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC5cbiAqXG4gKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCxcbiAqIGByZXNldGAsIGBsb2FkYCwgYGVycm9yYCwgYW5kIGBzZWxlY3RgLlxuICpcbiAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcuIFwiY2xpY2tcIi5cbiAqIEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3VwcG9ydGVkLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgc3VwcG9ydGVkLlxuICogQGludGVybmFsXG4gKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiAqL1xuZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRlZChldmVudE5hbWVTdWZmaXgsIGNhcHR1cmUpIHtcbiAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gfHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZXZlbnROYW1lID0gJ29uJyArIGV2ZW50TmFtZVN1ZmZpeDtcbiAgdmFyIGlzU3VwcG9ydGVkID0gKGV2ZW50TmFtZSBpbiBkb2N1bWVudCk7XG5cbiAgaWYgKCFpc1N1cHBvcnRlZCkge1xuICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoZXZlbnROYW1lLCAncmV0dXJuOycpO1xuICAgIGlzU3VwcG9ydGVkID0gdHlwZW9mIGVsZW1lbnRbZXZlbnROYW1lXSA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGlmICghaXNTdXBwb3J0ZWQgJiYgdXNlSGFzRmVhdHVyZSAmJiBldmVudE5hbWVTdWZmaXggPT09ICd3aGVlbCcpIHtcbiAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byB0ZXN0IHN1cHBvcnQgZm9yIHRoZSBgd2hlZWxgIGV2ZW50IGluIElFOSsuXG4gICAgaXNTdXBwb3J0ZWQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdFdmVudHMud2hlZWwnLCAnMy4wJyk7XG4gIH1cblxuICByZXR1cm4gaXNTdXBwb3J0ZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFdmVudFN1cHBvcnRlZDsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgaXNUZXh0SW5wdXRFbGVtZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxuICovXG52YXIgc3VwcG9ydGVkSW5wdXRUeXBlcyA9IHtcbiAgJ2NvbG9yJzogdHJ1ZSxcbiAgJ2RhdGUnOiB0cnVlLFxuICAnZGF0ZXRpbWUnOiB0cnVlLFxuICAnZGF0ZXRpbWUtbG9jYWwnOiB0cnVlLFxuICAnZW1haWwnOiB0cnVlLFxuICAnbW9udGgnOiB0cnVlLFxuICAnbnVtYmVyJzogdHJ1ZSxcbiAgJ3Bhc3N3b3JkJzogdHJ1ZSxcbiAgJ3JhbmdlJzogdHJ1ZSxcbiAgJ3NlYXJjaCc6IHRydWUsXG4gICd0ZWwnOiB0cnVlLFxuICAndGV4dCc6IHRydWUsXG4gICd0aW1lJzogdHJ1ZSxcbiAgJ3VybCc6IHRydWUsXG4gICd3ZWVrJzogdHJ1ZVxufTtcblxuZnVuY3Rpb24gaXNUZXh0SW5wdXRFbGVtZW50KGVsZW0pIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIG5vZGVOYW1lICYmIChub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBzdXBwb3J0ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV0gfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDsiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIG9ubHlDaGlsZFxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlXG4gKiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpc1xuICogZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHMgcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlXG4gKiBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRvIGFic3RyYWN0IGF3YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlXG4gKiBvZiBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0dXJlLlxuICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RDb21wb25lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ29ubHlDaGlsZCBtdXN0IGJlIHBhc3NlZCBhIGNoaWxkcmVuIHdpdGggZXhhY3RseSBvbmUgY2hpbGQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb25seUNoaWxkO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5dmJteDVRMmhwYkdRdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRzl1YkhsRGFHbHNaRnh1SUNvdlhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFVnNaVzFsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJXeGxiV1Z1ZENjcE8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdabWx5YzNRZ1kyaHBiR1FnYVc0Z1lTQmpiMnhzWldOMGFXOXVJRzltSUdOb2FXeGtjbVZ1SUdGdVpDQjJaWEpwWm1sbGN5QjBhR0YwSUhSb1pYSmxYRzRnS2lCcGN5QnZibXg1SUc5dVpTQmphR2xzWkNCcGJpQjBhR1VnWTI5c2JHVmpkR2x2Ymk0Z1ZHaGxJR04xY25KbGJuUWdhVzF3YkdWdFpXNTBZWFJwYjI0Z2IyWWdkR2hwYzF4dUlDb2dablZ1WTNScGIyNGdZWE56ZFcxbGN5QjBhR0YwSUdFZ2MybHVaMnhsSUdOb2FXeGtJR2RsZEhNZ2NHRnpjMlZrSUhkcGRHaHZkWFFnWVNCM2NtRndjR1Z5TENCaWRYUWdkR2hsWEc0Z0tpQndkWEp3YjNObElHOW1JSFJvYVhNZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdseklIUnZJR0ZpYzNSeVlXTjBJR0YzWVhrZ2RHaGxJSEJoY25ScFkzVnNZWElnYzNSeWRXTjBkWEpsWEc0Z0tpQnZaaUJqYUdsc1pISmxiaTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJR05vYVd4a2NtVnVJRU5vYVd4a0lHTnZiR3hsWTNScGIyNGdjM1J5ZFdOMGRYSmxMbHh1SUNvZ1FISmxkSFZ5YmlCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUZSb1pTQm1hWEp6ZENCaGJtUWdiMjVzZVNCZ1VtVmhZM1JEYjIxd2IyNWxiblJnSUdOdmJuUmhhVzVsWkNCcGJpQjBhR1ZjYmlBcUlITjBjblZqZEhWeVpTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2IyNXNlVU5vYVd4a0tHTm9hV3hrY21WdUtTQjdYRzRnSUNGU1pXRmpkRVZzWlcxbGJuUXVhWE5XWVd4cFpFVnNaVzFsYm5Rb1kyaHBiR1J5Wlc0cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjI5dWJIbERhR2xzWkNCdGRYTjBJR0psSUhCaGMzTmxaQ0JoSUdOb2FXeGtjbVZ1SUhkcGRHZ2daWGhoWTNSc2VTQnZibVVnWTJocGJHUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0J5WlhSMWNtNGdZMmhwYkdSeVpXNDdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2IyNXNlVU5vYVd4a095SmRmUT09IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcblxuLyoqXG4gKiBFc2NhcGVzIGF0dHJpYnV0ZSB2YWx1ZSB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gZXNjYXBlLlxuICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpIHtcbiAgcmV0dXJuICdcIicgKyBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodmFsdWUpICsgJ1wiJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4qIEBwcm92aWRlc01vZHVsZSByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lclxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHNldElubmVySFRNTFxuICovXG5cbi8qIGdsb2JhbHMgTVNBcHAgKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgV0hJVEVTUEFDRV9URVNUID0gL15bIFxcclxcblxcdFxcZl0vO1xudmFyIE5PTlZJU0lCTEVfVEVTVCA9IC88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXFxyXFxuXFx0XFxmXFwvPl0vO1xuXG4vKipcbiAqIFNldCB0aGUgaW5uZXJIVE1MIHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxuICogZXZlbiBpbiBJRTguXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuICogQGludGVybmFsXG4gKi9cbnZhciBzZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG59O1xuXG4vLyBXaW44IGFwcHM6IEFsbG93IGFsbCBodG1sIHRvIGJlIGluc2VydGVkXG5pZiAodHlwZW9mIE1TQXBwICE9PSAndW5kZWZpbmVkJyAmJiBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbikge1xuICBzZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuICAgIE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuaW5uZXJIVE1MID0gaHRtbDtcbiAgICB9KTtcbiAgfTtcbn1cblxuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBJRTg6IFdoZW4gdXBkYXRpbmcgYSBqdXN0IGNyZWF0ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBvbmx5IGxlYWRpbmdcbiAgLy8gd2hpdGVzcGFjZSBpcyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUgd2l0aCBpbm5lckhUTUxcbiAgLy8gd2hpdGVzcGFjZSBpbiByb290IFRleHROb2RlcyBpcyBhbHNvIGNvbGxhcHNlZC5cbiAgLy8gQHNlZSBxdWlya3Ntb2RlLm9yZy9idWdyZXBvcnRzL2FyY2hpdmVzLzIwMDQvMTEvaW5uZXJodG1sX2FuZF90Lmh0bWxcblxuICAvLyBGZWF0dXJlIGRldGVjdGlvbjsgb25seSBJRTggaXMga25vd24gdG8gYmVoYXZlIGltcHJvcGVybHkgbGlrZSB0aGlzLlxuICB2YXIgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVzdEVsZW1lbnQuaW5uZXJIVE1MID0gJyAnO1xuICBpZiAodGVzdEVsZW1lbnQuaW5uZXJIVE1MID09PSAnJykge1xuICAgIHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7XG4gICAgICAvLyBNYWdpYyB0aGVvcnk6IElFOCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRkZWQgYW5kIHVwZGF0ZWRcbiAgICAgIC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2luZyBpbm5lckhUTUwsIGlubmVySFRNTCBvbiB1cGRhdGVkIG5vZGVzIHN1ZmZlcnNcbiAgICAgIC8vIGZyb20gd29yc2Ugd2hpdGVzcGFjZSBiZWhhdmlvci4gUmUtYWRkaW5nIGEgbm9kZSBsaWtlIHRoaXMgdHJpZ2dlcnNcbiAgICAgIC8vIHRoZSBpbml0aWFsIGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLlxuICAgICAgLy8gVE9ETzogV2hhdCB0byBkbyBvbiBhIGRldGFjaGVkIG5vZGU/XG4gICAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9kZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBmb3Igbm9uLXZpc2libGUgdGFncyBkaXNhcHBlYXJpbmcgaW50b1xuICAgICAgLy8gdGhpbiBhaXIgb24gSUU4LCB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRleHRcbiAgICAgIC8vIGluLWZyb250IG9mIHRoZSBub24tdmlzaWJsZSB0YWdzLiBQaWdneWJhY2sgb24gdGhlIHdoaXRlc3BhY2UgZml4XG4gICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlmIGFueSBub24tdmlzaWJsZSB0YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLlxuICAgICAgaWYgKFdISVRFU1BBQ0VfVEVTVC50ZXN0KGh0bWwpIHx8IGh0bWxbMF0gPT09ICc8JyAmJiBOT05WSVNJQkxFX1RFU1QudGVzdChodG1sKSkge1xuICAgICAgICAvLyBSZWNvdmVyIGxlYWRpbmcgd2hpdGVzcGFjZSBieSB0ZW1wb3JhcmlseSBwcmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIuXG4gICAgICAgIC8vIFxcdUZFRkYgaGFzIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlIG9mIGJlaW5nIHplcm8td2lkdGgvaW52aXNpYmxlLlxuICAgICAgICAvLyBVZ2xpZnlKUyBkcm9wcyBVK0ZFRkYgY2hhcnMgd2hlbiBwYXJzaW5nLCBzbyB1c2UgU3RyaW5nLmZyb21DaGFyQ29kZVxuICAgICAgICAvLyBpbiBob3BlcyB0aGF0IHRoaXMgaXMgcHJlc2VydmVkIGV2ZW4gaWYgXCJcXHVGRUZGXCIgaXMgdHJhbnNmb3JtZWQgdG9cbiAgICAgICAgLy8gdGhlIGFjdHVhbCBVbmljb2RlIGNoYXJhY3RlciAoYnkgQmFiZWwsIGZvciBleGFtcGxlKS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pc2hvby9VZ2xpZnlKUzIvYmxvYi92Mi40LjIwL2xpYi9wYXJzZS5qcyNMMjE2XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEZFRkYpICsgaHRtbDtcblxuICAgICAgICAvLyBkZWxldGVEYXRhIGxlYXZlcyBhbiBlbXB0eSBgVGV4dE5vZGVgIHdoaWNoIG9mZnNldHMgdGhlIGluZGV4IG9mIGFsbFxuICAgICAgICAvLyBjaGlsZHJlbi4gRGVmaW5pdGVseSB3YW50IHRvIGF2b2lkIHRoaXMuXG4gICAgICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgaWYgKHRleHROb2RlLmRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGV4dE5vZGUuZGVsZXRlRGF0YSgwLCAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRJbm5lckhUTUw7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHNldFRleHRDb250ZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyJyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcblxuLyoqXG4gKiBTZXQgdGhlIHRleHRDb250ZW50IHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxuICogZXZlbiBpbiBJRTguIGlubmVyVGV4dCBpcyBhIHBvb3Igc3Vic3RpdHV0ZSBmb3IgdGV4dENvbnRlbnQgYW5kLCBhbW9uZyBtYW55XG4gKiBpc3N1ZXMsIGluc2VydHMgPGJyPiBpbnN0ZWFkIG9mIHRoZSBsaXRlcmFsIG5ld2xpbmUgY2hhcnMuIGlubmVySFRNTCBiZWhhdmVzXG4gKiBhcyBpdCBzaG91bGQuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICogQGludGVybmFsXG4gKi9cbnZhciBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0KSB7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufTtcblxuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICBpZiAoISgndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpIHtcbiAgICBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0KSB7XG4gICAgICBzZXRJbm5lckhUTUwobm9kZSwgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRleHQpKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VGV4dENvbnRlbnQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHaXZlbiBhIGBwcmV2RWxlbWVudGAgYW5kIGBuZXh0RWxlbWVudGAsIGRldGVybWluZXMgaWYgdGhlIGV4aXN0aW5nXG4gKiBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZCBhcyBvcHBvc2VkIHRvIGJlaW5nIGRlc3Ryb3llZCBvciByZXBsYWNlZCBieSBhIG5ld1xuICogaW5zdGFuY2UuIEJvdGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dpYyBjYW5cbiAqIG9wZXJhdGUgb24gc3RhdGVsZXNzIHRyZWVzIHdpdGhvdXQgYW55IGJhY2tpbmcgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxlbWVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0RWxlbWVudFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXhpc3RpbmcgaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuXG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xuICB2YXIgcHJldkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51bGwgfHwgcHJldkVsZW1lbnQgPT09IGZhbHNlO1xuICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51bGwgfHwgbmV4dEVsZW1lbnQgPT09IGZhbHNlO1xuICBpZiAocHJldkVtcHR5IHx8IG5leHRFbXB0eSkge1xuICAgIHJldHVybiBwcmV2RW1wdHkgPT09IG5leHRFbXB0eTtcbiAgfVxuXG4gIHZhciBwcmV2VHlwZSA9IHR5cGVvZiBwcmV2RWxlbWVudDtcbiAgdmFyIG5leHRUeXBlID0gdHlwZW9mIG5leHRFbGVtZW50O1xuICBpZiAocHJldlR5cGUgPT09ICdzdHJpbmcnIHx8IHByZXZUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ3N0cmluZycgfHwgbmV4dFR5cGUgPT09ICdudW1iZXInO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgcHJldkVsZW1lbnQudHlwZSA9PT0gbmV4dEVsZW1lbnQudHlwZSAmJiBwcmV2RWxlbWVudC5rZXkgPT09IG5leHRFbGVtZW50LmtleTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQ7IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB0cmF2ZXJzZUFsbENoaWxkcmVuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcblxudmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgU0VQQVJBVE9SID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuU0VQQVJBVE9SO1xudmFyIFNVQlNFUEFSQVRPUiA9ICc6JztcblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZXJMb29rdXAgPSB7XG4gICc9JzogJz0wJyxcbiAgJy4nOiAnPTEnLFxuICAnOic6ICc9Midcbn07XG5cbnZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9IC9bPS46XS9nO1xuXG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xuXG5mdW5jdGlvbiB1c2VyUHJvdmlkZWRLZXlFc2NhcGVyKG1hdGNoKSB7XG4gIHJldHVybiB1c2VyUHJvdmlkZWRLZXlFc2NhcGVyTG9va3VwW21hdGNoXTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xuICAgIC8vIEV4cGxpY2l0IGtleVxuICAgIHJldHVybiB3cmFwVXNlclByb3ZpZGVkS2V5KGNvbXBvbmVudC5rZXkpO1xuICB9XG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogRXNjYXBlIGEgY29tcG9uZW50IGtleSBzbyB0aGF0IGl0IGlzIHNhZmUgdG8gdXNlIGluIGEgcmVhY3RpZC5cbiAqXG4gKiBAcGFyYW0geyp9IHRleHQgQ29tcG9uZW50IGtleSB0byBiZSBlc2NhcGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsIHVzZXJQcm92aWRlZEtleUVzY2FwZXIpO1xufVxuXG4vKipcbiAqIFdyYXAgYSBga2V5YCB2YWx1ZSBleHBsaWNpdGx5IHByb3ZpZGVkIGJ5IHRoZSB1c2VyIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb21cbiAqIGltcGxpY2l0bHktZ2VuZXJhdGVkIGtleXMgZ2VuZXJhdGVkIGJ5IGEgY29tcG9uZW50J3MgaW5kZXggaW4gaXRzIHBhcmVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFZhbHVlIG9mIGEgdXNlci1wcm92aWRlZCBga2V5YCBhdHRyaWJ1dGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gd3JhcFVzZXJQcm92aWRlZEtleShrZXkpIHtcbiAgcmV0dXJuICckJyArIGVzY2FwZVVzZXJQcm92aWRlZEtleShrZXkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0gMDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLicpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgd3JhcFVzZXJQcm92aWRlZEtleShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3MgbGlrZSB5b3VcXCdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkgYSBkaWZmZXJlbnQgJyArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzEwYjJGemRISXZibTlrWlY5dGIyUjFiR1Z6TDNKbFlXTjBMMnhwWWk5MGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQjBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTNWeWNtVnVkRTkzYm1WeUp5azdYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTW5LVHRjYmx4dWRtRnlJR2RsZEVsMFpYSmhkRzl5Um00Z1BTQnlaWEYxYVhKbEtDY3VMMmRsZEVsMFpYSmhkRzl5Um00bktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1MllYSWdVMFZRUVZKQlZFOVNJRDBnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNdVUwVlFRVkpCVkU5U08xeHVkbUZ5SUZOVlFsTkZVRUZTUVZSUFVpQTlJQ2M2Snp0Y2JseHVMeW9xWEc0Z0tpQlVUMFJQT2lCVVpYTjBJSFJvWVhRZ1lTQnphVzVuYkdVZ1kyaHBiR1FnWVc1a0lHRnVJR0Z5Y21GNUlIZHBkR2dnYjI1bElHbDBaVzBnYUdGMlpTQjBhR1VnYzJGdFpTQnJaWGxjYmlBcUlIQmhkSFJsY200dVhHNGdLaTljYmx4dWRtRnlJSFZ6WlhKUWNtOTJhV1JsWkV0bGVVVnpZMkZ3WlhKTWIyOXJkWEFnUFNCN1hHNGdJQ2M5SnpvZ0p6MHdKeXhjYmlBZ0p5NG5PaUFuUFRFbkxGeHVJQ0FuT2ljNklDYzlNaWRjYm4wN1hHNWNiblpoY2lCMWMyVnlVSEp2ZG1sa1pXUkxaWGxGYzJOaGNHVlNaV2RsZUNBOUlDOWJQUzQ2WFM5bk8xeHVYRzUyWVhJZ1pHbGtWMkZ5YmtGaWIzVjBUV0Z3Y3lBOUlHWmhiSE5sTzF4dVhHNW1kVzVqZEdsdmJpQjFjMlZ5VUhKdmRtbGtaV1JMWlhsRmMyTmhjR1Z5S0cxaGRHTm9LU0I3WEc0Z0lISmxkSFZ5YmlCMWMyVnlVSEp2ZG1sa1pXUkxaWGxGYzJOaGNHVnlURzl2YTNWd1cyMWhkR05vWFR0Y2JuMWNibHh1THlvcVhHNGdLaUJIWlc1bGNtRjBaU0JoSUd0bGVTQnpkSEpwYm1jZ2RHaGhkQ0JwWkdWdWRHbG1hV1Z6SUdFZ1kyOXRjRzl1Wlc1MElIZHBkR2hwYmlCaElITmxkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdleXA5SUdOdmJYQnZibVZ1ZENCQklHTnZiWEJ2Ym1WdWRDQjBhR0YwSUdOdmRXeGtJR052Ym5SaGFXNGdZU0J0WVc1MVlXd2dhMlY1TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHbHVaR1Y0SUVsdVpHVjRJSFJvWVhRZ2FYTWdkWE5sWkNCcFppQmhJRzFoYm5WaGJDQnJaWGtnYVhNZ2JtOTBJSEJ5YjNacFpHVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSRGIyMXdiMjVsYm5STFpYa29ZMjl0Y0c5dVpXNTBMQ0JwYm1SbGVDa2dlMXh1SUNCcFppQW9ZMjl0Y0c5dVpXNTBJQ1ltSUdOdmJYQnZibVZ1ZEM1clpYa2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDOHZJRVY0Y0d4cFkybDBJR3RsZVZ4dUlDQWdJSEpsZEhWeWJpQjNjbUZ3VlhObGNsQnliM1pwWkdWa1MyVjVLR052YlhCdmJtVnVkQzVyWlhrcE8xeHVJQ0I5WEc0Z0lDOHZJRWx0Y0d4cFkybDBJR3RsZVNCa1pYUmxjbTFwYm1Wa0lHSjVJSFJvWlNCcGJtUmxlQ0JwYmlCMGFHVWdjMlYwWEc0Z0lISmxkSFZ5YmlCcGJtUmxlQzUwYjFOMGNtbHVaeWd6TmlrN1hHNTlYRzVjYmk4cUtseHVJQ29nUlhOallYQmxJR0VnWTI5dGNHOXVaVzUwSUd0bGVTQnpieUIwYUdGMElHbDBJR2x6SUhOaFptVWdkRzhnZFhObElHbHVJR0VnY21WaFkzUnBaQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdleXA5SUhSbGVIUWdRMjl0Y0c5dVpXNTBJR3RsZVNCMGJ5QmlaU0JsYzJOaGNHVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCQmJpQmxjMk5oY0dWa0lITjBjbWx1Wnk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlhOallYQmxWWE5sY2xCeWIzWnBaR1ZrUzJWNUtIUmxlSFFwSUh0Y2JpQWdjbVYwZFhKdUlDZ25KeUFySUhSbGVIUXBMbkpsY0d4aFkyVW9kWE5sY2xCeWIzWnBaR1ZrUzJWNVJYTmpZWEJsVW1WblpYZ3NJSFZ6WlhKUWNtOTJhV1JsWkV0bGVVVnpZMkZ3WlhJcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZkeVlYQWdZU0JnYTJWNVlDQjJZV3gxWlNCbGVIQnNhV05wZEd4NUlIQnliM1pwWkdWa0lHSjVJSFJvWlNCMWMyVnlJSFJ2SUdScGMzUnBibWQxYVhOb0lHbDBJR1p5YjIxY2JpQXFJR2x0Y0d4cFkybDBiSGt0WjJWdVpYSmhkR1ZrSUd0bGVYTWdaMlZ1WlhKaGRHVmtJR0o1SUdFZ1kyOXRjRzl1Wlc1MEozTWdhVzVrWlhnZ2FXNGdhWFJ6SUhCaGNtVnVkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhMlY1SUZaaGJIVmxJRzltSUdFZ2RYTmxjaTF3Y205MmFXUmxaQ0JnYTJWNVlDQmhkSFJ5YVdKMWRHVmNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBcUwxeHVablZ1WTNScGIyNGdkM0poY0ZWelpYSlFjbTkyYVdSbFpFdGxlU2hyWlhrcElIdGNiaUFnY21WMGRYSnVJQ2NrSnlBcklHVnpZMkZ3WlZWelpYSlFjbTkyYVdSbFpFdGxlU2hyWlhrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVCd1lYSmhiU0I3UHlwOUlHTm9hV3hrY21WdUlFTm9hV3hrY21WdUlIUnlaV1VnWTI5dWRHRnBibVZ5TGx4dUlDb2dRSEJoY21GdElIc2hjM1J5YVc1bmZTQnVZVzFsVTI5R1lYSWdUbUZ0WlNCdlppQjBhR1VnYTJWNUlIQmhkR2dnYzI4Z1ptRnlMbHh1SUNvZ1FIQmhjbUZ0SUhzaFpuVnVZM1JwYjI1OUlHTmhiR3hpWVdOcklFTmhiR3hpWVdOcklIUnZJR2x1ZG05clpTQjNhWFJvSUdWaFkyZ2dZMmhwYkdRZ1ptOTFibVF1WEc0Z0tpQkFjR0Z5WVcwZ2V6OHFmU0IwY21GMlpYSnpaVU52Ym5SbGVIUWdWWE5sWkNCMGJ5QndZWE56SUdsdVptOXliV0YwYVc5dUlIUm9jbTkxWjJodmRYUWdkR2hsSUhSeVlYWmxjbk5oYkZ4dUlDb2djSEp2WTJWemN5NWNiaUFxSUVCeVpYUjFjbTRnZXlGdWRXMWlaWEo5SUZSb1pTQnVkVzFpWlhJZ2IyWWdZMmhwYkdSeVpXNGdhVzRnZEdocGN5QnpkV0owY21WbExseHVJQ292WEc1bWRXNWpkR2x2YmlCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdVNXMXdiQ2hqYUdsc1pISmxiaXdnYm1GdFpWTnZSbUZ5TENCallXeHNZbUZqYXl3Z2RISmhkbVZ5YzJWRGIyNTBaWGgwS1NCN1hHNGdJSFpoY2lCMGVYQmxJRDBnZEhsd1pXOW1JR05vYVd4a2NtVnVPMXh1WEc0Z0lHbG1JQ2gwZVhCbElEMDlQU0FuZFc1a1pXWnBibVZrSnlCOGZDQjBlWEJsSUQwOVBTQW5ZbTl2YkdWaGJpY3BJSHRjYmlBZ0lDQXZMeUJCYkd3Z2IyWWdkR2hsSUdGaWIzWmxJR0Z5WlNCd1pYSmpaV2wyWldRZ1lYTWdiblZzYkM1Y2JpQWdJQ0JqYUdsc1pISmxiaUE5SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0JwWmlBb1kyaHBiR1J5Wlc0Z1BUMDlJRzUxYkd3Z2ZId2dkSGx3WlNBOVBUMGdKM04wY21sdVp5Y2dmSHdnZEhsd1pTQTlQVDBnSjI1MWJXSmxjaWNnZkh3Z1VtVmhZM1JGYkdWdFpXNTBMbWx6Vm1Gc2FXUkZiR1Z0Wlc1MEtHTm9hV3hrY21WdUtTa2dlMXh1SUNBZ0lHTmhiR3hpWVdOcktIUnlZWFpsY25ObFEyOXVkR1Y0ZEN3Z1kyaHBiR1J5Wlc0c1hHNGdJQ0FnTHk4Z1NXWWdhWFFuY3lCMGFHVWdiMjVzZVNCamFHbHNaQ3dnZEhKbFlYUWdkR2hsSUc1aGJXVWdZWE1nYVdZZ2FYUWdkMkZ6SUhkeVlYQndaV1FnYVc0Z1lXNGdZWEp5WVhsY2JpQWdJQ0F2THlCemJ5QjBhR0YwSUdsMEozTWdZMjl1YzJsemRHVnVkQ0JwWmlCMGFHVWdiblZ0WW1WeUlHOW1JR05vYVd4a2NtVnVJR2R5YjNkekxseHVJQ0FnSUc1aGJXVlRiMFpoY2lBOVBUMGdKeWNnUHlCVFJWQkJVa0ZVVDFJZ0t5Qm5aWFJEYjIxd2IyNWxiblJMWlhrb1kyaHBiR1J5Wlc0c0lEQXBJRG9nYm1GdFpWTnZSbUZ5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdNVHRjYmlBZ2ZWeHVYRzRnSUhaaGNpQmphR2xzWkR0Y2JpQWdkbUZ5SUc1bGVIUk9ZVzFsTzF4dUlDQjJZWElnYzNWaWRISmxaVU52ZFc1MElEMGdNRHNnTHk4Z1EyOTFiblFnYjJZZ1kyaHBiR1J5Wlc0Z1ptOTFibVFnYVc0Z2RHaGxJR04xY25KbGJuUWdjM1ZpZEhKbFpTNWNiaUFnZG1GeUlHNWxlSFJPWVcxbFVISmxabWw0SUQwZ2JtRnRaVk52Um1GeUlEMDlQU0FuSnlBL0lGTkZVRUZTUVZSUFVpQTZJRzVoYldWVGIwWmhjaUFySUZOVlFsTkZVRUZTUVZSUFVqdGNibHh1SUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoamFHbHNaSEpsYmlrcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHTm9hV3hrY21WdUxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYUdsc1pDQTlJR05vYVd4a2NtVnVXMmxkTzF4dUlDQWdJQ0FnYm1WNGRFNWhiV1VnUFNCdVpYaDBUbUZ0WlZCeVpXWnBlQ0FySUdkbGRFTnZiWEJ2Ym1WdWRFdGxlU2hqYUdsc1pDd2dhU2s3WEc0Z0lDQWdJQ0J6ZFdKMGNtVmxRMjkxYm5RZ0t6MGdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxia2x0Y0d3b1kyaHBiR1FzSUc1bGVIUk9ZVzFsTENCallXeHNZbUZqYXl3Z2RISmhkbVZ5YzJWRGIyNTBaWGgwS1R0Y2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnZG1GeUlHbDBaWEpoZEc5eVJtNGdQU0JuWlhSSmRHVnlZWFJ2Y2tadUtHTm9hV3hrY21WdUtUdGNiaUFnSUNCcFppQW9hWFJsY21GMGIzSkdiaWtnZTF4dUlDQWdJQ0FnZG1GeUlHbDBaWEpoZEc5eUlEMGdhWFJsY21GMGIzSkdiaTVqWVd4c0tHTm9hV3hrY21WdUtUdGNiaUFnSUNBZ0lIWmhjaUJ6ZEdWd08xeHVJQ0FnSUNBZ2FXWWdLR2wwWlhKaGRHOXlSbTRnSVQwOUlHTm9hV3hrY21WdUxtVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdscElEMGdNRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ0VvYzNSbGNDQTlJR2wwWlhKaGRHOXlMbTVsZUhRb0tTa3VaRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR05vYVd4a0lEMGdjM1JsY0M1MllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNCdVpYaDBUbUZ0WlNBOUlHNWxlSFJPWVcxbFVISmxabWw0SUNzZ1oyVjBRMjl0Y0c5dVpXNTBTMlY1S0dOb2FXeGtMQ0JwYVNzcktUdGNiaUFnSUNBZ0lDQWdJQ0J6ZFdKMGNtVmxRMjkxYm5RZ0t6MGdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxia2x0Y0d3b1kyaHBiR1FzSUc1bGVIUk9ZVzFsTENCallXeHNZbUZqYXl3Z2RISmhkbVZ5YzJWRGIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhrYVdSWFlYSnVRV0p2ZFhSTllYQnpMQ0FuVlhOcGJtY2dUV0Z3Y3lCaGN5QmphR2xzWkhKbGJpQnBjeUJ1YjNRZ2VXVjBJR1oxYkd4NUlITjFjSEJ2Y25SbFpDNGdTWFFnYVhNZ1lXNGdKeUFySUNkbGVIQmxjbWx0Wlc1MFlXd2dabVZoZEhWeVpTQjBhR0YwSUcxcFoyaDBJR0psSUhKbGJXOTJaV1F1SUVOdmJuWmxjblFnYVhRZ2RHOGdZU0FuSUNzZ0ozTmxjWFZsYm1ObElDOGdhWFJsY21GaWJHVWdiMllnYTJWNVpXUWdVbVZoWTNSRmJHVnRaVzUwY3lCcGJuTjBaV0ZrTGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0FnSUdScFpGZGhjbTVCWW05MWRFMWhjSE1nUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUM4dklFbDBaWEpoZEc5eUlIZHBiR3dnY0hKdmRtbGtaU0JsYm5SeWVTQmJheXgyWFNCMGRYQnNaWE1nY21GMGFHVnlJSFJvWVc0Z2RtRnNkV1Z6TGx4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvSVNoemRHVndJRDBnYVhSbGNtRjBiM0l1Ym1WNGRDZ3BLUzVrYjI1bEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlHVnVkSEo1SUQwZ2MzUmxjQzUyWVd4MVpUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1pXNTBjbmtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a0lEMGdaVzUwY25sYk1WMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCdVpYaDBUbUZ0WlNBOUlHNWxlSFJPWVcxbFVISmxabWw0SUNzZ2QzSmhjRlZ6WlhKUWNtOTJhV1JsWkV0bGVTaGxiblJ5ZVZzd1hTa2dLeUJUVlVKVFJWQkJVa0ZVVDFJZ0t5Qm5aWFJEYjIxd2IyNWxiblJMWlhrb1kyaHBiR1FzSURBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNWaWRISmxaVU52ZFc1MElDczlJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzVKYlhCc0tHTm9hV3hrTENCdVpYaDBUbUZ0WlN3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnZG1GeUlHRmtaR1Z1WkhWdElEMGdKeWM3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0JoWkdSbGJtUjFiU0E5SUNjZ1NXWWdlVzkxSUcxbFlXNTBJSFJ2SUhKbGJtUmxjaUJoSUdOdmJHeGxZM1JwYjI0Z2IyWWdZMmhwYkdSeVpXNHNJSFZ6WlNCaGJpQmhjbkpoZVNBbklDc2dKMmx1YzNSbFlXUWdiM0lnZDNKaGNDQjBhR1VnYjJKcVpXTjBJSFZ6YVc1bklHTnlaV0YwWlVaeVlXZHRaVzUwS0c5aWFtVmpkQ2tnWm5KdmJTQjBhR1VnSnlBcklDZFNaV0ZqZENCaFpHUXRiMjV6TGljN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUdsc1pISmxiaTVmYVhOU1pXRmpkRVZzWlcxbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCaFpHUmxibVIxYlNBOUlDY2dTWFFnYkc5dmEzTWdiR2xyWlNCNWIzVmNYQ2R5WlNCMWMybHVaeUJoYmlCbGJHVnRaVzUwSUdOeVpXRjBaV1FnWW5rZ1lTQmthV1ptWlhKbGJuUWdKeUFySUNkMlpYSnphVzl1SUc5bUlGSmxZV04wTGlCTllXdGxJSE4xY21VZ2RHOGdkWE5sSUc5dWJIa2diMjVsSUdOdmNIa2diMllnVW1WaFkzUXVKenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9VbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnVZVzFsSUQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZEM1blpYUk9ZVzFsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0c1aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHRmtaR1Z1WkhWdElDczlJQ2NnUTJobFkyc2dkR2hsSUhKbGJtUmxjaUJ0WlhSb2IyUWdiMllnWUNjZ0t5QnVZVzFsSUNzZ0oyQXVKenRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIWmhjaUJqYUdsc1pISmxibE4wY21sdVp5QTlJRk4wY21sdVp5aGphR2xzWkhKbGJpazdYRzRnSUNBZ0lDQWhabUZzYzJVZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVDJKcVpXTjBjeUJoY21VZ2JtOTBJSFpoYkdsa0lHRnpJR0VnVW1WaFkzUWdZMmhwYkdRZ0tHWnZkVzVrT2lBbGN5a3VKWE1uTENCamFHbHNaSEpsYmxOMGNtbHVaeUE5UFQwZ0oxdHZZbXBsWTNRZ1QySnFaV04wWFNjZ1B5QW5iMkpxWldOMElIZHBkR2dnYTJWNWN5QjdKeUFySUU5aWFtVmpkQzVyWlhsektHTm9hV3hrY21WdUtTNXFiMmx1S0Njc0lDY3BJQ3NnSjMwbklEb2dZMmhwYkdSeVpXNVRkSEpwYm1jc0lHRmtaR1Z1WkhWdEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSE4xWW5SeVpXVkRiM1Z1ZER0Y2JuMWNibHh1THlvcVhHNGdLaUJVY21GMlpYSnpaWE1nWTJocGJHUnlaVzRnZEdoaGRDQmhjbVVnZEhsd2FXTmhiR3g1SUhOd1pXTnBabWxsWkNCaGN5QmdjSEp2Y0hNdVkyaHBiR1J5Wlc1Z0xDQmlkWFJjYmlBcUlHMXBaMmgwSUdGc2MyOGdZbVVnYzNCbFkybG1hV1ZrSUhSb2NtOTFaMmdnWVhSMGNtbGlkWFJsY3pwY2JpQXFYRzRnS2lBdElHQjBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVLSFJvYVhNdWNISnZjSE11WTJocGJHUnlaVzRzSUM0dUxpbGdYRzRnS2lBdElHQjBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVLSFJvYVhNdWNISnZjSE11YkdWbWRGQmhibVZzUTJocGJHUnlaVzRzSUM0dUxpbGdYRzRnS2x4dUlDb2dWR2hsSUdCMGNtRjJaWEp6WlVOdmJuUmxlSFJnSUdseklHRnVJRzl3ZEdsdmJtRnNJR0Z5WjNWdFpXNTBJSFJvWVhRZ2FYTWdjR0Z6YzJWa0lIUm9jbTkxWjJnZ2RHaGxYRzRnS2lCbGJuUnBjbVVnZEhKaGRtVnljMkZzTGlCSmRDQmpZVzRnWW1VZ2RYTmxaQ0IwYnlCemRHOXlaU0JoWTJOMWJYVnNZWFJwYjI1eklHOXlJR0Z1ZVhSb2FXNW5JR1ZzYzJVZ2RHaGhkRnh1SUNvZ2RHaGxJR05oYkd4aVlXTnJJRzFwWjJoMElHWnBibVFnY21Wc1pYWmhiblF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHMvS24wZ1kyaHBiR1J5Wlc0Z1EyaHBiR1J5Wlc0Z2RISmxaU0J2WW1wbFkzUXVYRzRnS2lCQWNHRnlZVzBnZXlGbWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1ZHOGdhVzUyYjJ0bElIVndiMjRnZEhKaGRtVnljMmx1WnlCbFlXTm9JR05vYVd4a0xseHVJQ29nUUhCaGNtRnRJSHMvS24wZ2RISmhkbVZ5YzJWRGIyNTBaWGgwSUVOdmJuUmxlSFFnWm05eUlIUnlZWFpsY25OaGJDNWNiaUFxSUVCeVpYUjFjbTRnZXlGdWRXMWlaWEo5SUZSb1pTQnVkVzFpWlhJZ2IyWWdZMmhwYkdSeVpXNGdhVzRnZEdocGN5QnpkV0owY21WbExseHVJQ292WEc1bWRXNWpkR2x2YmlCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUtHTm9hV3hrY21WdUxDQmpZV3hzWW1GamF5d2dkSEpoZG1WeWMyVkRiMjUwWlhoMEtTQjdYRzRnSUdsbUlDaGphR2xzWkhKbGJpQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ2NtVjBkWEp1SURBN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJrbHRjR3dvWTJocGJHUnlaVzRzSUNjbkxDQmpZV3hzWW1GamF5d2dkSEpoZG1WeWMyVkRiMjUwWlhoMEtUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdU95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB1cGRhdGVcbiAqL1xuXG4vKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBrZXlPZiA9IHJlcXVpcmUoJ2ZianMvbGliL2tleU9mJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgaGFzT3duUHJvcGVydHkgPSAoe30pLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBzaGFsbG93Q29weSh4KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguY29uY2F0KCk7XG4gIH0gZWxzZSBpZiAoeCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gYXNzaWduKG5ldyB4LmNvbnN0cnVjdG9yKCksIHgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4O1xuICB9XG59XG5cbnZhciBDT01NQU5EX1BVU0ggPSBrZXlPZih7ICRwdXNoOiBudWxsIH0pO1xudmFyIENPTU1BTkRfVU5TSElGVCA9IGtleU9mKHsgJHVuc2hpZnQ6IG51bGwgfSk7XG52YXIgQ09NTUFORF9TUExJQ0UgPSBrZXlPZih7ICRzcGxpY2U6IG51bGwgfSk7XG52YXIgQ09NTUFORF9TRVQgPSBrZXlPZih7ICRzZXQ6IG51bGwgfSk7XG52YXIgQ09NTUFORF9NRVJHRSA9IGtleU9mKHsgJG1lcmdlOiBudWxsIH0pO1xudmFyIENPTU1BTkRfQVBQTFkgPSBrZXlPZih7ICRhcHBseTogbnVsbCB9KTtcblxudmFyIEFMTF9DT01NQU5EU19MSVNUID0gW0NPTU1BTkRfUFVTSCwgQ09NTUFORF9VTlNISUZULCBDT01NQU5EX1NQTElDRSwgQ09NTUFORF9TRVQsIENPTU1BTkRfTUVSR0UsIENPTU1BTkRfQVBQTFldO1xuXG52YXIgQUxMX0NPTU1BTkRTX1NFVCA9IHt9O1xuXG5BTExfQ09NTUFORFNfTElTVC5mb3JFYWNoKGZ1bmN0aW9uIChjb21tYW5kKSB7XG4gIEFMTF9DT01NQU5EU19TRVRbY29tbWFuZF0gPSB0cnVlO1xufSk7XG5cbmZ1bmN0aW9uIGludmFyaWFudEFycmF5Q2FzZSh2YWx1ZSwgc3BlYywgY29tbWFuZCkge1xuICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6IGV4cGVjdGVkIHRhcmdldCBvZiAlcyB0byBiZSBhbiBhcnJheTsgZ290ICVzLicsIGNvbW1hbmQsIHZhbHVlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHZhciBzcGVjVmFsdWUgPSBzcGVjW2NvbW1hbmRdO1xuICAhQXJyYXkuaXNBcnJheShzcGVjVmFsdWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVjIG9mICVzIHRvIGJlIGFuIGFycmF5OyBnb3QgJXMuICcgKyAnRGlkIHlvdSBmb3JnZXQgdG8gd3JhcCB5b3VyIHBhcmFtZXRlciBpbiBhbiBhcnJheT8nLCBjb21tYW5kLCBzcGVjVmFsdWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gdXBkYXRlKHZhbHVlLCBzcGVjKSB7XG4gICEodHlwZW9mIHNwZWMgPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogWW91IHByb3ZpZGVkIGEga2V5IHBhdGggdG8gdXBkYXRlKCkgdGhhdCBkaWQgbm90IGNvbnRhaW4gb25lICcgKyAnb2YgJXMuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgeyVzOiAuLi59PycsIEFMTF9DT01NQU5EU19MSVNULmpvaW4oJywgJyksIENPTU1BTkRfU0VUKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9TRVQpKSB7XG4gICAgIShPYmplY3Qua2V5cyhzcGVjKS5sZW5ndGggPT09IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUga2V5IGluIGFuIG9iamVjdCB3aXRoICVzJywgQ09NTUFORF9TRVQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBzcGVjW0NPTU1BTkRfU0VUXTtcbiAgfVxuXG4gIHZhciBuZXh0VmFsdWUgPSBzaGFsbG93Q29weSh2YWx1ZSk7XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9NRVJHRSkpIHtcbiAgICB2YXIgbWVyZ2VPYmogPSBzcGVjW0NPTU1BTkRfTUVSR0VdO1xuICAgICEobWVyZ2VPYmogJiYgdHlwZW9mIG1lcmdlT2JqID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlKCk6ICVzIGV4cGVjdHMgYSBzcGVjIG9mIHR5cGUgXFwnb2JqZWN0XFwnOyBnb3QgJXMnLCBDT01NQU5EX01FUkdFLCBtZXJnZU9iaikgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEobmV4dFZhbHVlICYmIHR5cGVvZiBuZXh0VmFsdWUgPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogJXMgZXhwZWN0cyBhIHRhcmdldCBvZiB0eXBlIFxcJ29iamVjdFxcJzsgZ290ICVzJywgQ09NTUFORF9NRVJHRSwgbmV4dFZhbHVlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduKG5leHRWYWx1ZSwgc3BlY1tDT01NQU5EX01FUkdFXSk7XG4gIH1cblxuICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzcGVjLCBDT01NQU5EX1BVU0gpKSB7XG4gICAgaW52YXJpYW50QXJyYXlDYXNlKHZhbHVlLCBzcGVjLCBDT01NQU5EX1BVU0gpO1xuICAgIHNwZWNbQ09NTUFORF9QVVNIXS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBuZXh0VmFsdWUucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNwZWMsIENPTU1BTkRfVU5TSElGVCkpIHtcbiAgICBpbnZhcmlhbnRBcnJheUNhc2UodmFsdWUsIHNwZWMsIENPTU1BTkRfVU5TSElGVCk7XG4gICAgc3BlY1tDT01NQU5EX1VOU0hJRlRdLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIG5leHRWYWx1ZS51bnNoaWZ0KGl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9TUExJQ0UpKSB7XG4gICAgIUFycmF5LmlzQXJyYXkodmFsdWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVzIHRhcmdldCB0byBiZSBhbiBhcnJheTsgZ290ICVzJywgQ09NTUFORF9TUExJQ0UsIHZhbHVlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgIUFycmF5LmlzQXJyYXkoc3BlY1tDT01NQU5EX1NQTElDRV0pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVjIG9mICVzIHRvIGJlIGFuIGFycmF5IG9mIGFycmF5czsgZ290ICVzLiAnICsgJ0RpZCB5b3UgZm9yZ2V0IHRvIHdyYXAgeW91ciBwYXJhbWV0ZXJzIGluIGFuIGFycmF5PycsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHNwZWNbQ09NTUFORF9TUExJQ0VdLmZvckVhY2goZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICFBcnJheS5pc0FycmF5KGFyZ3MpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZSgpOiBleHBlY3RlZCBzcGVjIG9mICVzIHRvIGJlIGFuIGFycmF5IG9mIGFycmF5czsgZ290ICVzLiAnICsgJ0RpZCB5b3UgZm9yZ2V0IHRvIHdyYXAgeW91ciBwYXJhbWV0ZXJzIGluIGFuIGFycmF5PycsIENPTU1BTkRfU1BMSUNFLCBzcGVjW0NPTU1BTkRfU1BMSUNFXSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgbmV4dFZhbHVlLnNwbGljZS5hcHBseShuZXh0VmFsdWUsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3BlYywgQ09NTUFORF9BUFBMWSkpIHtcbiAgICAhKHR5cGVvZiBzcGVjW0NPTU1BTkRfQVBQTFldID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGUoKTogZXhwZWN0ZWQgc3BlYyBvZiAlcyB0byBiZSBhIGZ1bmN0aW9uOyBnb3QgJXMuJywgQ09NTUFORF9BUFBMWSwgc3BlY1tDT01NQU5EX0FQUExZXSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIG5leHRWYWx1ZSA9IHNwZWNbQ09NTUFORF9BUFBMWV0obmV4dFZhbHVlKTtcbiAgfVxuXG4gIGZvciAodmFyIGsgaW4gc3BlYykge1xuICAgIGlmICghKEFMTF9DT01NQU5EU19TRVQuaGFzT3duUHJvcGVydHkoaykgJiYgQUxMX0NPTU1BTkRTX1NFVFtrXSkpIHtcbiAgICAgIG5leHRWYWx1ZVtrXSA9IHVwZGF0ZSh2YWx1ZVtrXSwgc3BlY1trXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5leHRWYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGU7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDMTBiMkZ6ZEhJdmJtOWtaVjl0YjJSMWJHVnpMM0psWVdOMEwyeHBZaTkxY0dSaGRHVXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCMWNHUmhkR1ZjYmlBcUwxeHVYRzR2S2lCbmJHOWlZV3dnYUdGelQzZHVVSEp2Y0dWeWRIazZkSEoxWlNBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJyWlhsUFppQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMnRsZVU5bUp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdhR0Z6VDNkdVVISnZjR1Z5ZEhrZ1BTQW9lMzBwTG1oaGMwOTNibEJ5YjNCbGNuUjVPMXh1WEc1bWRXNWpkR2x2YmlCemFHRnNiRzkzUTI5d2VTaDRLU0I3WEc0Z0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtIZ3BLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIZ3VZMjl1WTJGMEtDazdYRzRnSUgwZ1pXeHpaU0JwWmlBb2VDQW1KaUIwZVhCbGIyWWdlQ0E5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNCeVpYUjFjbTRnWVhOemFXZHVLRzVsZHlCNExtTnZibk4wY25WamRHOXlLQ2tzSUhncE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCNE8xeHVJQ0I5WEc1OVhHNWNiblpoY2lCRFQwMU5RVTVFWDFCVlUwZ2dQU0JyWlhsUFppaDdJQ1J3ZFhOb09pQnVkV3hzSUgwcE8xeHVkbUZ5SUVOUFRVMUJUa1JmVlU1VFNFbEdWQ0E5SUd0bGVVOW1LSHNnSkhWdWMyaHBablE2SUc1MWJHd2dmU2s3WEc1MllYSWdRMDlOVFVGT1JGOVRVRXhKUTBVZ1BTQnJaWGxQWmloN0lDUnpjR3hwWTJVNklHNTFiR3dnZlNrN1hHNTJZWElnUTA5TlRVRk9SRjlUUlZRZ1BTQnJaWGxQWmloN0lDUnpaWFE2SUc1MWJHd2dmU2s3WEc1MllYSWdRMDlOVFVGT1JGOU5SVkpIUlNBOUlHdGxlVTltS0hzZ0pHMWxjbWRsT2lCdWRXeHNJSDBwTzF4dWRtRnlJRU5QVFUxQlRrUmZRVkJRVEZrZ1BTQnJaWGxQWmloN0lDUmhjSEJzZVRvZ2JuVnNiQ0I5S1R0Y2JseHVkbUZ5SUVGTVRGOURUMDFOUVU1RVUxOU1TVk5VSUQwZ1cwTlBUVTFCVGtSZlVGVlRTQ3dnUTA5TlRVRk9SRjlWVGxOSVNVWlVMQ0JEVDAxTlFVNUVYMU5RVEVsRFJTd2dRMDlOVFVGT1JGOVRSVlFzSUVOUFRVMUJUa1JmVFVWU1IwVXNJRU5QVFUxQlRrUmZRVkJRVEZsZE8xeHVYRzUyWVhJZ1FVeE1YME5QVFUxQlRrUlRYMU5GVkNBOUlIdDlPMXh1WEc1QlRFeGZRMDlOVFVGT1JGTmZURWxUVkM1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNoamIyMXRZVzVrS1NCN1hHNGdJRUZNVEY5RFQwMU5RVTVFVTE5VFJWUmJZMjl0YldGdVpGMGdQU0IwY25WbE8xeHVmU2s3WEc1Y2JtWjFibU4wYVc5dUlHbHVkbUZ5YVdGdWRFRnljbUY1UTJGelpTaDJZV3gxWlN3Z2MzQmxZeXdnWTI5dGJXRnVaQ2tnZTF4dUlDQWhRWEp5WVhrdWFYTkJjbkpoZVNoMllXeDFaU2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5kWEJrWVhSbEtDazZJR1Y0Y0dWamRHVmtJSFJoY21kbGRDQnZaaUFsY3lCMGJ5QmlaU0JoYmlCaGNuSmhlVHNnWjI5MElDVnpMaWNzSUdOdmJXMWhibVFzSUhaaGJIVmxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSFpoY2lCemNHVmpWbUZzZFdVZ1BTQnpjR1ZqVzJOdmJXMWhibVJkTzF4dUlDQWhRWEp5WVhrdWFYTkJjbkpoZVNoemNHVmpWbUZzZFdVcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNWd1pHRjBaU2dwT2lCbGVIQmxZM1JsWkNCemNHVmpJRzltSUNWeklIUnZJR0psSUdGdUlHRnljbUY1T3lCbmIzUWdKWE11SUNjZ0t5QW5SR2xrSUhsdmRTQm1iM0puWlhRZ2RHOGdkM0poY0NCNWIzVnlJSEJoY21GdFpYUmxjaUJwYmlCaGJpQmhjbkpoZVQ4bkxDQmpiMjF0WVc1a0xDQnpjR1ZqVm1Gc2RXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnZFhCa1lYUmxLSFpoYkhWbExDQnpjR1ZqS1NCN1hHNGdJQ0VvZEhsd1pXOW1JSE53WldNZ1BUMDlJQ2R2WW1wbFkzUW5LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZDFjR1JoZEdVb0tUb2dXVzkxSUhCeWIzWnBaR1ZrSUdFZ2EyVjVJSEJoZEdnZ2RHOGdkWEJrWVhSbEtDa2dkR2hoZENCa2FXUWdibTkwSUdOdmJuUmhhVzRnYjI1bElDY2dLeUFuYjJZZ0pYTXVJRVJwWkNCNWIzVWdabTl5WjJWMElIUnZJR2x1WTJ4MVpHVWdleVZ6T2lBdUxpNTlQeWNzSUVGTVRGOURUMDFOUVU1RVUxOU1TVk5VTG1wdmFXNG9KeXdnSnlrc0lFTlBUVTFCVGtSZlUwVlVLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnYVdZZ0tHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jM0JsWXl3Z1EwOU5UVUZPUkY5VFJWUXBLU0I3WEc0Z0lDQWdJU2hQWW1wbFkzUXVhMlY1Y3loemNHVmpLUzVzWlc1bmRHZ2dQVDA5SURFcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBOaGJtNXZkQ0JvWVhabElHMXZjbVVnZEdoaGJpQnZibVVnYTJWNUlHbHVJR0Z1SUc5aWFtVmpkQ0IzYVhSb0lDVnpKeXdnUTA5TlRVRk9SRjlUUlZRcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSEpsZEhWeWJpQnpjR1ZqVzBOUFRVMUJUa1JmVTBWVVhUdGNiaUFnZlZ4dVhHNGdJSFpoY2lCdVpYaDBWbUZzZFdVZ1BTQnphR0ZzYkc5M1EyOXdlU2gyWVd4MVpTazdYRzVjYmlBZ2FXWWdLR2hoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYzNCbFl5d2dRMDlOVFVGT1JGOU5SVkpIUlNrcElIdGNiaUFnSUNCMllYSWdiV1Z5WjJWUFltb2dQU0J6Y0dWalcwTlBUVTFCVGtSZlRVVlNSMFZkTzF4dUlDQWdJQ0VvYldWeVoyVlBZbW9nSmlZZ2RIbHdaVzltSUcxbGNtZGxUMkpxSUQwOVBTQW5iMkpxWldOMEp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRYQmtZWFJsS0NrNklDVnpJR1Y0Y0dWamRITWdZU0J6Y0dWaklHOW1JSFI1Y0dVZ1hGd25iMkpxWldOMFhGd25PeUJuYjNRZ0pYTW5MQ0JEVDAxTlFVNUVYMDFGVWtkRkxDQnRaWEpuWlU5aWFpa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0VvYm1WNGRGWmhiSFZsSUNZbUlIUjVjR1Z2WmlCdVpYaDBWbUZzZFdVZ1BUMDlJQ2R2WW1wbFkzUW5LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZDFjR1JoZEdVb0tUb2dKWE1nWlhod1pXTjBjeUJoSUhSaGNtZGxkQ0J2WmlCMGVYQmxJRnhjSjI5aWFtVmpkRnhjSnpzZ1oyOTBJQ1Z6Snl3Z1EwOU5UVUZPUkY5TlJWSkhSU3dnYm1WNGRGWmhiSFZsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ1lYTnphV2R1S0c1bGVIUldZV3gxWlN3Z2MzQmxZMXREVDAxTlFVNUVYMDFGVWtkRlhTazdYRzRnSUgxY2JseHVJQ0JwWmlBb2FHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHpjR1ZqTENCRFQwMU5RVTVFWDFCVlUwZ3BLU0I3WEc0Z0lDQWdhVzUyWVhKcFlXNTBRWEp5WVhsRFlYTmxLSFpoYkhWbExDQnpjR1ZqTENCRFQwMU5RVTVFWDFCVlUwZ3BPMXh1SUNBZ0lITndaV05iUTA5TlRVRk9SRjlRVlZOSVhTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUlDaHBkR1Z0S1NCN1hHNGdJQ0FnSUNCdVpYaDBWbUZzZFdVdWNIVnphQ2hwZEdWdEtUdGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJR2xtSUNob1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tITndaV01zSUVOUFRVMUJUa1JmVlU1VFNFbEdWQ2twSUh0Y2JpQWdJQ0JwYm5aaGNtbGhiblJCY25KaGVVTmhjMlVvZG1Gc2RXVXNJSE53WldNc0lFTlBUVTFCVGtSZlZVNVRTRWxHVkNrN1hHNGdJQ0FnYzNCbFkxdERUMDFOUVU1RVgxVk9VMGhKUmxSZExtWnZja1ZoWTJnb1puVnVZM1JwYjI0Z0tHbDBaVzBwSUh0Y2JpQWdJQ0FnSUc1bGVIUldZV3gxWlM1MWJuTm9hV1owS0dsMFpXMHBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jM0JsWXl3Z1EwOU5UVUZPUkY5VFVFeEpRMFVwS1NCN1hHNGdJQ0FnSVVGeWNtRjVMbWx6UVhKeVlYa29kbUZzZFdVcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWNGNHVmpkR1ZrSUNWeklIUmhjbWRsZENCMGJ5QmlaU0JoYmlCaGNuSmhlVHNnWjI5MElDVnpKeXdnUTA5TlRVRk9SRjlUVUV4SlEwVXNJSFpoYkhWbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJVUZ5Y21GNUxtbHpRWEp5WVhrb2MzQmxZMXREVDAxTlFVNUVYMU5RVEVsRFJWMHBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozVndaR0YwWlNncE9pQmxlSEJsWTNSbFpDQnpjR1ZqSUc5bUlDVnpJSFJ2SUdKbElHRnVJR0Z5Y21GNUlHOW1JR0Z5Y21GNWN6c2daMjkwSUNWekxpQW5JQ3NnSjBScFpDQjViM1VnWm05eVoyVjBJSFJ2SUhkeVlYQWdlVzkxY2lCd1lYSmhiV1YwWlhKeklHbHVJR0Z1SUdGeWNtRjVQeWNzSUVOUFRVMUJUa1JmVTFCTVNVTkZMQ0J6Y0dWalcwTlBUVTFCVGtSZlUxQk1TVU5GWFNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lITndaV05iUTA5TlRVRk9SRjlUVUV4SlEwVmRMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLR0Z5WjNNcElIdGNiaUFnSUNBZ0lDRkJjbkpoZVM1cGMwRnljbUY1S0dGeVozTXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozVndaR0YwWlNncE9pQmxlSEJsWTNSbFpDQnpjR1ZqSUc5bUlDVnpJSFJ2SUdKbElHRnVJR0Z5Y21GNUlHOW1JR0Z5Y21GNWN6c2daMjkwSUNWekxpQW5JQ3NnSjBScFpDQjViM1VnWm05eVoyVjBJSFJ2SUhkeVlYQWdlVzkxY2lCd1lYSmhiV1YwWlhKeklHbHVJR0Z1SUdGeWNtRjVQeWNzSUVOUFRVMUJUa1JmVTFCTVNVTkZMQ0J6Y0dWalcwTlBUVTFCVGtSZlUxQk1TVU5GWFNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdibVY0ZEZaaGJIVmxMbk53YkdsalpTNWhjSEJzZVNodVpYaDBWbUZzZFdVc0lHRnlaM01wTzF4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR2hoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYzNCbFl5d2dRMDlOVFVGT1JGOUJVRkJNV1NrcElIdGNiaUFnSUNBaEtIUjVjR1Z2WmlCemNHVmpXME5QVFUxQlRrUmZRVkJRVEZsZElEMDlQU0FuWm5WdVkzUnBiMjRuS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2QxY0dSaGRHVW9LVG9nWlhod1pXTjBaV1FnYzNCbFl5QnZaaUFsY3lCMGJ5QmlaU0JoSUdaMWJtTjBhVzl1T3lCbmIzUWdKWE11Snl3Z1EwOU5UVUZPUkY5QlVGQk1XU3dnYzNCbFkxdERUMDFOUVU1RVgwRlFVRXhaWFNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lHNWxlSFJXWVd4MVpTQTlJSE53WldOYlEwOU5UVUZPUkY5QlVGQk1XVjBvYm1WNGRGWmhiSFZsS1R0Y2JpQWdmVnh1WEc0Z0lHWnZjaUFvZG1GeUlHc2dhVzRnYzNCbFl5a2dlMXh1SUNBZ0lHbG1JQ2doS0VGTVRGOURUMDFOUVU1RVUxOVRSVlF1YUdGelQzZHVVSEp2Y0dWeWRIa29heWtnSmlZZ1FVeE1YME5QVFUxQlRrUlRYMU5GVkZ0clhTa3BJSHRjYmlBZ0lDQWdJRzVsZUhSV1lXeDFaVnRyWFNBOUlIVndaR0YwWlNoMllXeDFaVnRyWFN3Z2MzQmxZMXRyWFNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUc1bGVIUldZV3gxWlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0IxY0dSaGRHVTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgdmFsaWRhdGVET01OZXN0aW5nXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gZW1wdHlGdW5jdGlvbjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gVGhpcyB2YWxpZGF0aW9uIGNvZGUgd2FzIHdyaXR0ZW4gYmFzZWQgb24gdGhlIEhUTUw1IHBhcnNpbmcgc3BlYzpcbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBkb2VzIG5vdCBjYXRjaCBhbGwgaW52YWxpZCBuZXN0aW5nLCBub3IgZG9lcyBpdCB0cnkgdG8gKGFzIGl0J3NcbiAgLy8gbm90IGNsZWFyIHdoYXQgcHJhY3RpY2FsIGJlbmVmaXQgZG9pbmcgc28gcHJvdmlkZXMpOyBpbnN0ZWFkLCB3ZSB3YXJuIG9ubHlcbiAgLy8gZm9yIGNhc2VzIHdoZXJlIHRoZSBwYXJzZXIgd2lsbCBnaXZlIGEgcGFyc2UgdHJlZSBkaWZmZXJpbmcgZnJvbSB3aGF0IFJlYWN0XG4gIC8vIGludGVuZGVkLiBGb3IgZXhhbXBsZSwgPGI+PGRpdj48L2Rpdj48L2I+IGlzIGludmFsaWQgYnV0IHdlIGRvbid0IHdhcm5cbiAgLy8gYmVjYXVzZSBpdCBzdGlsbCBwYXJzZXMgY29ycmVjdGx5OyB3ZSBkbyB3YXJuIGZvciBvdGhlciBjYXNlcyBsaWtlIG5lc3RlZFxuICAvLyA8cD4gdGFncyB3aGVyZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWNvbmQgZWxlbWVudCBpbXBsaWNpdGx5IGNsb3NlcyB0aGVcbiAgLy8gZmlyc3QsIGNhdXNpbmcgYSBjb25mdXNpbmcgbWVzcy5cblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNzcGVjaWFsXG4gIHZhciBzcGVjaWFsVGFncyA9IFsnYWRkcmVzcycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYmdzb3VuZCcsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnY2VudGVyJywgJ2NvbCcsICdjb2xncm91cCcsICdkZCcsICdkZXRhaWxzJywgJ2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1iZWQnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsICdmaWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLCAnaWZyYW1lJywgJ2ltZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpJywgJ2xpbmsnLCAnbGlzdGluZycsICdtYWluJywgJ21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScsICdtZXRhJywgJ25hdicsICdub2VtYmVkJywgJ25vZnJhbWVzJywgJ25vc2NyaXB0JywgJ29iamVjdCcsICdvbCcsICdwJywgJ3BhcmFtJywgJ3BsYWludGV4dCcsICdwcmUnLCAnc2NyaXB0JywgJ3NlY3Rpb24nLCAnc2VsZWN0JywgJ3NvdXJjZScsICdzdHlsZScsICdzdW1tYXJ5JywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RlbXBsYXRlJywgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNrJywgJ3VsJywgJ3dicicsICd4bXAnXTtcblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICB2YXIgaW5TY29wZVRhZ3MgPSBbJ2FwcGxldCcsICdjYXB0aW9uJywgJ2h0bWwnLCAndGFibGUnLCAndGQnLCAndGgnLCAnbWFycXVlZScsICdvYmplY3QnLCAndGVtcGxhdGUnLFxuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbiAgLy8gVE9ETzogRGlzdGluZ3Vpc2ggYnkgbmFtZXNwYWNlIGhlcmUgLS0gZm9yIDx0aXRsZT4sIGluY2x1ZGluZyBpdCBoZXJlXG4gIC8vIGVycnMgb24gdGhlIHNpZGUgb2YgZmV3ZXIgd2FybmluZ3NcbiAgJ2ZvcmVpZ25PYmplY3QnLCAnZGVzYycsICd0aXRsZSddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLWJ1dHRvbi1zY29wZVxuICB2YXIgYnV0dG9uU2NvcGVUYWdzID0gaW5TY29wZVRhZ3MuY29uY2F0KFsnYnV0dG9uJ10pO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2dlbmVyYXRlLWltcGxpZWQtZW5kLXRhZ3NcbiAgdmFyIGltcGxpZWRFbmRUYWdzID0gWydkZCcsICdkdCcsICdsaScsICdvcHRpb24nLCAnb3B0Z3JvdXAnLCAncCcsICdycCcsICdydCddO1xuXG4gIHZhciBlbXB0eUFuY2VzdG9ySW5mbyA9IHtcbiAgICBwYXJlbnRUYWc6IG51bGwsXG5cbiAgICBmb3JtVGFnOiBudWxsLFxuICAgIGFUYWdJblNjb3BlOiBudWxsLFxuICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsXG4gICAgbm9iclRhZ0luU2NvcGU6IG51bGwsXG4gICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsXG5cbiAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsLFxuICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsXG4gIH07XG5cbiAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFnLCBpbnN0YW5jZSkge1xuICAgIHZhciBhbmNlc3RvckluZm8gPSBhc3NpZ24oe30sIG9sZEluZm8gfHwgZW1wdHlBbmNlc3RvckluZm8pO1xuICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6IGluc3RhbmNlIH07XG5cbiAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQgdGFncyBpblxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcbiAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAhPT0gJ3AnKSB7XG4gICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsO1xuICAgIH1cblxuICAgIGFuY2VzdG9ySW5mby5wYXJlbnRUYWcgPSBpbmZvO1xuXG4gICAgaWYgKHRhZyA9PT0gJ2Zvcm0nKSB7XG4gICAgICBhbmNlc3RvckluZm8uZm9ybVRhZyA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdhJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ25vYnInKSB7XG4gICAgICBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdsaScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2RkJyB8fCB0YWcgPT09ICdkdCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9ySW5mbztcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgaXNUYWdWYWxpZFdpdGhQYXJlbnQgPSBmdW5jdGlvbiAodGFnLCBwYXJlbnRUYWcpIHtcbiAgICAvLyBGaXJzdCwgbGV0J3MgY2hlY2sgaWYgd2UncmUgaW4gYW4gdW51c3VhbCBwYXJzaW5nIG1vZGUuLi5cbiAgICBzd2l0Y2ggKHBhcmVudFRhZykge1xuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluc2VsZWN0XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdvcHRncm91cCcgfHwgdGFnID09PSAnI3RleHQnO1xuICAgICAgY2FzZSAnb3B0Z3JvdXAnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICAvLyBTdHJpY3RseSBzcGVha2luZywgc2VlaW5nIGFuIDxvcHRpb24+IGRvZXNuJ3QgbWVhbiB3ZSdyZSBpbiBhIDxzZWxlY3Q+XG4gICAgICAvLyBidXRcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICcjdGV4dCc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRkXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jYXB0aW9uXG4gICAgICAvLyBObyBzcGVjaWFsIGJlaGF2aW9yIHNpbmNlIHRoZXNlIHJ1bGVzIGZhbGwgYmFjayB0byBcImluIGJvZHlcIiBtb2RlIGZvclxuICAgICAgLy8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5nIGJlaGF2aW9yIGFueXdheS5cblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHJcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50Ym9keVxuICAgICAgY2FzZSAndGJvZHknOlxuICAgICAgY2FzZSAndGhlYWQnOlxuICAgICAgY2FzZSAndGZvb3QnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAndHInIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXBcbiAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50YWJsZVxuICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluaGVhZFxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3VuZCcgfHwgdGFnID09PSAnbGluaycgfHwgdGFnID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUnIHx8IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtaHRtbC1lbGVtZW50XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknO1xuICAgIH1cblxuICAgIC8vIFByb2JhYmx5IGluIHRoZSBcImluIGJvZHlcIiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3NcbiAgICAvLyB3aGVyZSB0aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBjbG9zZXMgdG8gYmUgYWRkZWQuXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBjYXNlICdoMSc6XG4gICAgICBjYXNlICdoMic6XG4gICAgICBjYXNlICdoMyc6XG4gICAgICBjYXNlICdoNCc6XG4gICAgICBjYXNlICdoNSc6XG4gICAgICBjYXNlICdoNic6XG4gICAgICAgIHJldHVybiBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYmIHBhcmVudFRhZyAhPT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9PSAnaDUnICYmIHBhcmVudFRhZyAhPT0gJ2g2JztcblxuICAgICAgY2FzZSAncnAnOlxuICAgICAgY2FzZSAncnQnOlxuICAgICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5kZXhPZihwYXJlbnRUYWcpID09PSAtMTtcblxuICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICBjYXNlICdjb2wnOlxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgY2FzZSAnZnJhbWUnOlxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICBjYXNlICd0ZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICBjYXNlICd0aCc6XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIC8vIFRoZXNlIHRhZ3MgYXJlIG9ubHkgdmFsaWQgd2l0aCBhIGZldyBwYXJlbnRzIHRoYXQgaGF2ZSBzcGVjaWFsIGNoaWxkXG4gICAgICAgIC8vIHBhcnNpbmcgcnVsZXMgLS0gaWYgd2UncmUgZG93biBoZXJlLCB0aGVuIG5vbmUgb2YgdGhvc2UgbWF0Y2hlZCBhbmRcbiAgICAgICAgLy8gc28gd2UgYWxsb3cgaXQgb25seSBpZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90aGVyXG4gICAgICAgIC8vIGNhc2VzIGFyZSBpbnZhbGlkLlxuICAgICAgICByZXR1cm4gcGFyZW50VGFnID09IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlclxuICAgKi9cbiAgdmFyIGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICBjYXNlICdhcnRpY2xlJzpcbiAgICAgIGNhc2UgJ2FzaWRlJzpcbiAgICAgIGNhc2UgJ2Jsb2NrcXVvdGUnOlxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIGNhc2UgJ2RldGFpbHMnOlxuICAgICAgY2FzZSAnZGlhbG9nJzpcbiAgICAgIGNhc2UgJ2Rpcic6XG4gICAgICBjYXNlICdkaXYnOlxuICAgICAgY2FzZSAnZGwnOlxuICAgICAgY2FzZSAnZmllbGRzZXQnOlxuICAgICAgY2FzZSAnZmlnY2FwdGlvbic6XG4gICAgICBjYXNlICdmaWd1cmUnOlxuICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICBjYXNlICdoZ3JvdXAnOlxuICAgICAgY2FzZSAnbWFpbic6XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgIGNhc2UgJ25hdic6XG4gICAgICBjYXNlICdvbCc6XG4gICAgICBjYXNlICdwJzpcbiAgICAgIGNhc2UgJ3NlY3Rpb24nOlxuICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICBjYXNlICd1bCc6XG5cbiAgICAgIGNhc2UgJ3ByZSc6XG4gICAgICBjYXNlICdsaXN0aW5nJzpcblxuICAgICAgY2FzZSAndGFibGUnOlxuXG4gICAgICBjYXNlICdocic6XG5cbiAgICAgIGNhc2UgJ3htcCc6XG5cbiAgICAgIGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZm9ybVRhZyB8fCBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7XG5cbiAgICAgIGNhc2UgJ2xpJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nO1xuXG4gICAgICBjYXNlICdkZCc6XG4gICAgICBjYXNlICdkdCc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uYnV0dG9uVGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIC8vIFNwZWMgc2F5cyBzb21ldGhpbmcgYWJvdXQgc3RvcmluZyBhIGxpc3Qgb2YgbWFya2VycywgYnV0IGl0IHNvdW5kc1xuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoaXMgY2hlY2suXG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGU7XG5cbiAgICAgIGNhc2UgJ25vYnInOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHaXZlbiBhIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IGluc3RhbmNlLCByZXR1cm4gYSBsaXN0IG9mIGl0cyByZWN1cnNpdmVcbiAgICogb3duZXJzLCBzdGFydGluZyBhdCB0aGUgcm9vdCBhbmQgZW5kaW5nIHdpdGggdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIHZhciBmaW5kT3duZXJTdGFjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICAvKmVzbGludC1kaXNhYmxlIHNwYWNlLWFmdGVyLWtleXdvcmRzICovXG4gICAgZG8ge1xuICAgICAgLyplc2xpbnQtZW5hYmxlIHNwYWNlLWFmdGVyLWtleXdvcmRzICovXG4gICAgICBzdGFjay5wdXNoKGluc3RhbmNlKTtcbiAgICB9IHdoaWxlIChpbnN0YW5jZSA9IGluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuICAgIHN0YWNrLnJldmVyc2UoKTtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH07XG5cbiAgdmFyIGRpZFdhcm4gPSB7fTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcgPSBmdW5jdGlvbiAoY2hpbGRUYWcsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5wYXJlbnRUYWc7XG4gICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG5cbiAgICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFnLCBwYXJlbnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87XG4gICAgdmFyIGludmFsaWRBbmNlc3RvciA9IGludmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFsaWRBbmNlc3RvckZvclRhZyhjaGlsZFRhZywgYW5jZXN0b3JJbmZvKTtcbiAgICB2YXIgcHJvYmxlbWF0aWMgPSBpbnZhbGlkUGFyZW50IHx8IGludmFsaWRBbmNlc3RvcjtcblxuICAgIGlmIChwcm9ibGVtYXRpYykge1xuICAgICAgdmFyIGFuY2VzdG9yVGFnID0gcHJvYmxlbWF0aWMudGFnO1xuICAgICAgdmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBwcm9ibGVtYXRpYy5pbnN0YW5jZTtcblxuICAgICAgdmFyIGNoaWxkT3duZXIgPSBjaGlsZEluc3RhbmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBhbmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cbiAgICAgIHZhciBjaGlsZE93bmVycyA9IGZpbmRPd25lclN0YWNrKGNoaWxkT3duZXIpO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93bmVyU3RhY2soYW5jZXN0b3JPd25lcik7XG5cbiAgICAgIHZhciBtaW5TdGFja0xlbiA9IE1hdGgubWluKGNoaWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMubGVuZ3RoKTtcbiAgICAgIHZhciBpO1xuXG4gICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG1pblN0YWNrTGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGNoaWxkT3duZXJzW2ldID09PSBhbmNlc3Rvck93bmVyc1tpXSkge1xuICAgICAgICAgIGRlZXBlc3RDb21tb24gPSBpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBVTktOT1dOID0gJyh1bmtub3duKSc7XG4gICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0gY2hpbGRPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtcbiAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG4gICAgICB9KTtcbiAgICAgIHZhciBvd25lckluZm8gPSBbXS5jb25jYXQoXG4gICAgICAvLyBJZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBhIGNvbW1vbiBvd25lciBhbmNlc3Rvciwgc3RhcnRcbiAgICAgIC8vIHdpdGggdGhhdCAtLSBvdGhlcndpc2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQncyBvd25lcnMuXG4gICAgICBkZWVwZXN0Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUoKSB8fCBVTktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsXG4gICAgICAvLyBJZiB3ZSdyZSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgKG5vbi1wYXJlbnQpIGFuY2VzdHJ5LCBhZGQgJy4uLidcbiAgICAgIGludmFsaWRBbmNlc3RvciA/IFsnLi4uJ10gOiBbXSwgY2hpbGRPd25lck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7XG5cbiAgICAgIHZhciB3YXJuS2V5ID0gISFpbnZhbGlkUGFyZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAnfCcgKyBhbmNlc3RvclRhZyArICd8JyArIG93bmVySW5mbztcbiAgICAgIGlmIChkaWRXYXJuW3dhcm5LZXldKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRpZFdhcm5bd2FybktleV0gPSB0cnVlO1xuXG4gICAgICBpZiAoaW52YWxpZFBhcmVudCkge1xuICAgICAgICB2YXIgaW5mbyA9ICcnO1xuICAgICAgICBpZiAoYW5jZXN0b3JUYWcgPT09ICd0YWJsZScgJiYgY2hpbGRUYWcgPT09ICd0cicpIHtcbiAgICAgICAgICBpbmZvICs9ICcgQWRkIGEgPHRib2R5PiB0byB5b3VyIGNvZGUgdG8gbWF0Y2ggdGhlIERPTSB0cmVlIGdlbmVyYXRlZCBieSAnICsgJ3RoZSBicm93c2VyLic7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogPCVzPiBjYW5ub3QgYXBwZWFyIGFzIGEgY2hpbGQgb2YgPCVzPi4gJyArICdTZWUgJXMuJXMnLCBjaGlsZFRhZywgYW5jZXN0b3JUYWcsIG93bmVySW5mbywgaW5mbykgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiA8JXM+IGNhbm5vdCBhcHBlYXIgYXMgYSBkZXNjZW5kYW50IG9mICcgKyAnPCVzPi4gU2VlICVzLicsIGNoaWxkVGFnLCBhbmNlc3RvclRhZywgb3duZXJJbmZvKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXkgPSAnX192YWxpZGF0ZURPTU5lc3RpbmdfYW5jZXN0b3JJbmZvJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyA9IHVwZGF0ZWRBbmNlc3RvckluZm87XG5cbiAgLy8gRm9yIHRlc3RpbmdcbiAgdmFsaWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG4gICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8ucGFyZW50VGFnO1xuICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnO1xuICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcsIHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3RvckluZm8pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEMxMGIyRnpkSEl2Ym05a1pWOXRiMlIxYkdWekwzSmxZV04wTDJ4cFlpOTJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3Vhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0IyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWRjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJsYlhCMGVVWjFibU4wYVc5dUlEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZaVzF3ZEhsR2RXNWpkR2x2YmljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiblpoY2lCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQmxiWEIwZVVaMWJtTjBhVzl1TzF4dVhHNXBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0F2THlCVWFHbHpJSFpoYkdsa1lYUnBiMjRnWTI5a1pTQjNZWE1nZDNKcGRIUmxiaUJpWVhObFpDQnZiaUIwYUdVZ1NGUk5URFVnY0dGeWMybHVaeUJ6Y0dWak9seHVJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ05vWVhNdFlXNHRaV3hsYldWdWRDMXBiaTF6WTI5d1pWeHVJQ0F2TDF4dUlDQXZMeUJPYjNSbE9pQjBhR2x6SUdSdlpYTWdibTkwSUdOaGRHTm9JR0ZzYkNCcGJuWmhiR2xrSUc1bGMzUnBibWNzSUc1dmNpQmtiMlZ6SUdsMElIUnllU0IwYnlBb1lYTWdhWFFuYzF4dUlDQXZMeUJ1YjNRZ1kyeGxZWElnZDJoaGRDQndjbUZqZEdsallXd2dZbVZ1WldacGRDQmtiMmx1WnlCemJ5QndjbTkyYVdSbGN5azdJR2x1YzNSbFlXUXNJSGRsSUhkaGNtNGdiMjVzZVZ4dUlDQXZMeUJtYjNJZ1kyRnpaWE1nZDJobGNtVWdkR2hsSUhCaGNuTmxjaUIzYVd4c0lHZHBkbVVnWVNCd1lYSnpaU0IwY21WbElHUnBabVpsY21sdVp5Qm1jbTl0SUhkb1lYUWdVbVZoWTNSY2JpQWdMeThnYVc1MFpXNWtaV1F1SUVadmNpQmxlR0Z0Y0d4bExDQThZajQ4WkdsMlBqd3ZaR2wyUGp3dllqNGdhWE1nYVc1MllXeHBaQ0JpZFhRZ2QyVWdaRzl1SjNRZ2QyRnlibHh1SUNBdkx5QmlaV05oZFhObElHbDBJSE4wYVd4c0lIQmhjbk5sY3lCamIzSnlaV04wYkhrN0lIZGxJR1J2SUhkaGNtNGdabTl5SUc5MGFHVnlJR05oYzJWeklHeHBhMlVnYm1WemRHVmtYRzRnSUM4dklEeHdQaUIwWVdkeklIZG9aWEpsSUhSb1pTQmlaV2RwYm01cGJtY2diMllnZEdobElITmxZMjl1WkNCbGJHVnRaVzUwSUdsdGNHeHBZMmwwYkhrZ1kyeHZjMlZ6SUhSb1pWeHVJQ0F2THlCbWFYSnpkQ3dnWTJGMWMybHVaeUJoSUdOdmJtWjFjMmx1WnlCdFpYTnpMbHh1WEc0Z0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kzTndaV05wWVd4Y2JpQWdkbUZ5SUhOd1pXTnBZV3hVWVdkeklEMGdXeWRoWkdSeVpYTnpKeXdnSjJGd2NHeGxkQ2NzSUNkaGNtVmhKeXdnSjJGeWRHbGpiR1VuTENBbllYTnBaR1VuTENBblltRnpaU2NzSUNkaVlYTmxabTl1ZENjc0lDZGlaM052ZFc1a0p5d2dKMkpzYjJOcmNYVnZkR1VuTENBblltOWtlU2NzSUNkaWNpY3NJQ2RpZFhSMGIyNG5MQ0FuWTJGd2RHbHZiaWNzSUNkalpXNTBaWEluTENBblkyOXNKeXdnSjJOdmJHZHliM1Z3Snl3Z0oyUmtKeXdnSjJSbGRHRnBiSE1uTENBblpHbHlKeXdnSjJScGRpY3NJQ2RrYkNjc0lDZGtkQ2NzSUNkbGJXSmxaQ2NzSUNkbWFXVnNaSE5sZENjc0lDZG1hV2RqWVhCMGFXOXVKeXdnSjJacFozVnlaU2NzSUNkbWIyOTBaWEluTENBblptOXliU2NzSUNkbWNtRnRaU2NzSUNkbWNtRnRaWE5sZENjc0lDZG9NU2NzSUNkb01pY3NJQ2RvTXljc0lDZG9OQ2NzSUNkb05TY3NJQ2RvTmljc0lDZG9aV0ZrSnl3Z0oyaGxZV1JsY2ljc0lDZG9aM0p2ZFhBbkxDQW5hSEluTENBbmFIUnRiQ2NzSUNkcFpuSmhiV1VuTENBbmFXMW5KeXdnSjJsdWNIVjBKeXdnSjJsemFXNWtaWGduTENBbmJHa25MQ0FuYkdsdWF5Y3NJQ2RzYVhOMGFXNW5KeXdnSjIxaGFXNG5MQ0FuYldGeWNYVmxaU2NzSUNkdFpXNTFKeXdnSjIxbGJuVnBkR1Z0Snl3Z0oyMWxkR0VuTENBbmJtRjJKeXdnSjI1dlpXMWlaV1FuTENBbmJtOW1jbUZ0WlhNbkxDQW5ibTl6WTNKcGNIUW5MQ0FuYjJKcVpXTjBKeXdnSjI5c0p5d2dKM0FuTENBbmNHRnlZVzBuTENBbmNHeGhhVzUwWlhoMEp5d2dKM0J5WlNjc0lDZHpZM0pwY0hRbkxDQW5jMlZqZEdsdmJpY3NJQ2R6Wld4bFkzUW5MQ0FuYzI5MWNtTmxKeXdnSjNOMGVXeGxKeXdnSjNOMWJXMWhjbmtuTENBbmRHRmliR1VuTENBbmRHSnZaSGtuTENBbmRHUW5MQ0FuZEdWdGNHeGhkR1VuTENBbmRHVjRkR0Z5WldFbkxDQW5kR1p2YjNRbkxDQW5kR2duTENBbmRHaGxZV1FuTENBbmRHbDBiR1VuTENBbmRISW5MQ0FuZEhKaFkyc25MQ0FuZFd3bkxDQW5kMkp5Snl3Z0ozaHRjQ2RkTzF4dVhHNGdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJMmhoY3kxaGJpMWxiR1Z0Wlc1MExXbHVMWE5qYjNCbFhHNGdJSFpoY2lCcGJsTmpiM0JsVkdGbmN5QTlJRnNuWVhCd2JHVjBKeXdnSjJOaGNIUnBiMjRuTENBbmFIUnRiQ2NzSUNkMFlXSnNaU2NzSUNkMFpDY3NJQ2QwYUNjc0lDZHRZWEp4ZFdWbEp5d2dKMjlpYW1WamRDY3NJQ2QwWlcxd2JHRjBaU2NzWEc1Y2JpQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2phSFJ0YkMxcGJuUmxaM0poZEdsdmJpMXdiMmx1ZEZ4dUlDQXZMeUJVVDBSUE9pQkVhWE4wYVc1bmRXbHphQ0JpZVNCdVlXMWxjM0JoWTJVZ2FHVnlaU0F0TFNCbWIzSWdQSFJwZEd4bFBpd2dhVzVqYkhWa2FXNW5JR2wwSUdobGNtVmNiaUFnTHk4Z1pYSnljeUJ2YmlCMGFHVWdjMmxrWlNCdlppQm1aWGRsY2lCM1lYSnVhVzVuYzF4dUlDQW5abTl5WldsbmJrOWlhbVZqZENjc0lDZGtaWE5qSnl3Z0ozUnBkR3hsSjEwN1hHNWNiaUFnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqYUdGekxXRnVMV1ZzWlcxbGJuUXRhVzR0WW5WMGRHOXVMWE5qYjNCbFhHNGdJSFpoY2lCaWRYUjBiMjVUWTI5d1pWUmhaM01nUFNCcGJsTmpiM0JsVkdGbmN5NWpiMjVqWVhRb1d5ZGlkWFIwYjI0blhTazdYRzVjYmlBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3aloyVnVaWEpoZEdVdGFXMXdiR2xsWkMxbGJtUXRkR0ZuYzF4dUlDQjJZWElnYVcxd2JHbGxaRVZ1WkZSaFozTWdQU0JiSjJSa0p5d2dKMlIwSnl3Z0oyeHBKeXdnSjI5d2RHbHZiaWNzSUNkdmNIUm5jbTkxY0Njc0lDZHdKeXdnSjNKd0p5d2dKM0owSjEwN1hHNWNiaUFnZG1GeUlHVnRjSFI1UVc1alpYTjBiM0pKYm1adklEMGdlMXh1SUNBZ0lIQmhjbVZ1ZEZSaFp6b2diblZzYkN4Y2JseHVJQ0FnSUdadmNtMVVZV2M2SUc1MWJHd3NYRzRnSUNBZ1lWUmhaMGx1VTJOdmNHVTZJRzUxYkd3c1hHNGdJQ0FnWW5WMGRHOXVWR0ZuU1c1VFkyOXdaVG9nYm5Wc2JDeGNiaUFnSUNCdWIySnlWR0ZuU1c1VFkyOXdaVG9nYm5Wc2JDeGNiaUFnSUNCd1ZHRm5TVzVDZFhSMGIyNVRZMjl3WlRvZ2JuVnNiQ3hjYmx4dUlDQWdJR3hwYzNSSmRHVnRWR0ZuUVhWMGIyTnNiM05wYm1jNklHNTFiR3dzWEc0Z0lDQWdaR3hKZEdWdFZHRm5RWFYwYjJOc2IzTnBibWM2SUc1MWJHeGNiaUFnZlR0Y2JseHVJQ0IyWVhJZ2RYQmtZWFJsWkVGdVkyVnpkRzl5U1c1bWJ5QTlJR1oxYm1OMGFXOXVJQ2h2YkdSSmJtWnZMQ0IwWVdjc0lHbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ2RtRnlJR0Z1WTJWemRHOXlTVzVtYnlBOUlHRnpjMmxuYmloN2ZTd2diMnhrU1c1bWJ5QjhmQ0JsYlhCMGVVRnVZMlZ6ZEc5eVNXNW1ieWs3WEc0Z0lDQWdkbUZ5SUdsdVptOGdQU0I3SUhSaFp6b2dkR0ZuTENCcGJuTjBZVzVqWlRvZ2FXNXpkR0Z1WTJVZ2ZUdGNibHh1SUNBZ0lHbG1JQ2hwYmxOamIzQmxWR0ZuY3k1cGJtUmxlRTltS0hSaFp5a2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQmhibU5sYzNSdmNrbHVabTh1WVZSaFowbHVVMk52Y0dVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnWVc1alpYTjBiM0pKYm1adkxtSjFkSFJ2YmxSaFowbHVVMk52Y0dVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnWVc1alpYTjBiM0pKYm1adkxtNXZZbkpVWVdkSmJsTmpiM0JsSUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLR0oxZEhSdmJsTmpiM0JsVkdGbmN5NXBibVJsZUU5bUtIUmhaeWtnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0JoYm1ObGMzUnZja2x1Wm04dWNGUmhaMGx1UW5WMGRHOXVVMk52Y0dVZ1BTQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZObFpTQnlkV3hsY3lCbWIzSWdKMnhwSnl3Z0oyUmtKeXdnSjJSMEp5QnpkR0Z5ZENCMFlXZHpJR2x1WEc0Z0lDQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2pjR0Z5YzJsdVp5MXRZV2x1TFdsdVltOWtlVnh1SUNBZ0lHbG1JQ2h6Y0dWamFXRnNWR0ZuY3k1cGJtUmxlRTltS0hSaFp5a2dJVDA5SUMweElDWW1JSFJoWnlBaFBUMGdKMkZrWkhKbGMzTW5JQ1ltSUhSaFp5QWhQVDBnSjJScGRpY2dKaVlnZEdGbklDRTlQU0FuY0NjcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTVzYVhOMFNYUmxiVlJoWjBGMWRHOWpiRzl6YVc1bklEMGdiblZzYkR0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NWtiRWwwWlcxVVlXZEJkWFJ2WTJ4dmMybHVaeUE5SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbkJoY21WdWRGUmhaeUE5SUdsdVptODdYRzVjYmlBZ0lDQnBaaUFvZEdGbklEMDlQU0FuWm05eWJTY3BJSHRjYmlBZ0lDQWdJR0Z1WTJWemRHOXlTVzVtYnk1bWIzSnRWR0ZuSUQwZ2FXNW1ienRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJoWnlBOVBUMGdKMkVuS1NCN1hHNGdJQ0FnSUNCaGJtTmxjM1J2Y2tsdVptOHVZVlJoWjBsdVUyTnZjR1VnUFNCcGJtWnZPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kR0ZuSUQwOVBTQW5ZblYwZEc5dUp5a2dlMXh1SUNBZ0lDQWdZVzVqWlhOMGIzSkpibVp2TG1KMWRIUnZibFJoWjBsdVUyTnZjR1VnUFNCcGJtWnZPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kR0ZuSUQwOVBTQW5ibTlpY2ljcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTV1YjJKeVZHRm5TVzVUWTI5d1pTQTlJR2x1Wm04N1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoMFlXY2dQVDA5SUNkd0p5a2dlMXh1SUNBZ0lDQWdZVzVqWlhOMGIzSkpibVp2TG5CVVlXZEpia0oxZEhSdmJsTmpiM0JsSUQwZ2FXNW1ienRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJoWnlBOVBUMGdKMnhwSnlrZ2UxeHVJQ0FnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbXhwYzNSSmRHVnRWR0ZuUVhWMGIyTnNiM05wYm1jZ1BTQnBibVp2TzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdGbklEMDlQU0FuWkdRbklIeDhJSFJoWnlBOVBUMGdKMlIwSnlrZ2UxeHVJQ0FnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbVJzU1hSbGJWUmhaMEYxZEc5amJHOXphVzVuSUQwZ2FXNW1ienRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z1lXNWpaWE4wYjNKSmJtWnZPMXh1SUNCOU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhkb1pYUm9aWEpjYmlBZ0lDb3ZYRzRnSUhaaGNpQnBjMVJoWjFaaGJHbGtWMmwwYUZCaGNtVnVkQ0E5SUdaMWJtTjBhVzl1SUNoMFlXY3NJSEJoY21WdWRGUmhaeWtnZTF4dUlDQWdJQzh2SUVacGNuTjBMQ0JzWlhRbmN5QmphR1ZqYXlCcFppQjNaU2R5WlNCcGJpQmhiaUIxYm5WemRXRnNJSEJoY25OcGJtY2diVzlrWlM0dUxseHVJQ0FnSUhOM2FYUmphQ0FvY0dGeVpXNTBWR0ZuS1NCN1hHNGdJQ0FnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzV6Wld4bFkzUmNiaUFnSUNBZ0lHTmhjMlVnSjNObGJHVmpkQ2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjZ1BUMDlJQ2R2Y0hScGIyNG5JSHg4SUhSaFp5QTlQVDBnSjI5d2RHZHliM1Z3SnlCOGZDQjBZV2NnUFQwOUlDY2pkR1Y0ZENjN1hHNGdJQ0FnSUNCallYTmxJQ2R2Y0hSbmNtOTFjQ2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjZ1BUMDlJQ2R2Y0hScGIyNG5JSHg4SUhSaFp5QTlQVDBnSnlOMFpYaDBKenRjYmlBZ0lDQWdJQzh2SUZOMGNtbGpkR3g1SUhOd1pXRnJhVzVuTENCelpXVnBibWNnWVc0Z1BHOXdkR2x2Ymo0Z1pHOWxjMjRuZENCdFpXRnVJSGRsSjNKbElHbHVJR0VnUEhObGJHVmpkRDVjYmlBZ0lDQWdJQzh2SUdKMWRGeHVJQ0FnSUNBZ1kyRnpaU0FuYjNCMGFXOXVKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJoWnlBOVBUMGdKeU4wWlhoMEp6dGNibHh1SUNBZ0lDQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2pjR0Z5YzJsdVp5MXRZV2x1TFdsdWRHUmNiaUFnSUNBZ0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kzQmhjbk5wYm1jdGJXRnBiaTFwYm1OaGNIUnBiMjVjYmlBZ0lDQWdJQzh2SUU1dklITndaV05wWVd3Z1ltVm9ZWFpwYjNJZ2MybHVZMlVnZEdobGMyVWdjblZzWlhNZ1ptRnNiQ0JpWVdOcklIUnZJRndpYVc0Z1ltOWtlVndpSUcxdlpHVWdabTl5WEc0Z0lDQWdJQ0F2THlCaGJHd2daWGhqWlhCMElITndaV05wWVd3Z2RHRmliR1VnYm05a1pYTWdkMmhwWTJnZ1kyRjFjMlVnWW1Ga0lIQmhjbk5wYm1jZ1ltVm9ZWFpwYjNJZ1lXNTVkMkY1TGx4dVhHNGdJQ0FnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzUwY2x4dUlDQWdJQ0FnWTJGelpTQW5kSEluT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGbklEMDlQU0FuZEdnbklIeDhJSFJoWnlBOVBUMGdKM1JrSnlCOGZDQjBZV2NnUFQwOUlDZHpkSGxzWlNjZ2ZId2dkR0ZuSUQwOVBTQW5jMk55YVhCMEp5QjhmQ0IwWVdjZ1BUMDlJQ2QwWlcxd2JHRjBaU2M3WEc1Y2JpQWdJQ0FnSUM4dklHaDBkSEJ6T2k4dmFIUnRiQzV6Y0dWakxuZG9ZWFIzWnk1dmNtY3ZiWFZzZEdsd1lXZGxMM041Ym5SaGVDNW9kRzFzSTNCaGNuTnBibWN0YldGcGJpMXBiblJpYjJSNVhHNGdJQ0FnSUNCallYTmxJQ2QwWW05a2VTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMGFHVmhaQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZDBabTl2ZENjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMFlXY2dQVDA5SUNkMGNpY2dmSHdnZEdGbklEMDlQU0FuYzNSNWJHVW5JSHg4SUhSaFp5QTlQVDBnSjNOamNtbHdkQ2NnZkh3Z2RHRm5JRDA5UFNBbmRHVnRjR3hoZEdVbk8xeHVYRzRnSUNBZ0lDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTndZWEp6YVc1bkxXMWhhVzR0YVc1amIyeG5jbTkxY0Z4dUlDQWdJQ0FnWTJGelpTQW5ZMjlzWjNKdmRYQW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0ZuSUQwOVBTQW5ZMjlzSnlCOGZDQjBZV2NnUFQwOUlDZDBaVzF3YkdGMFpTYzdYRzVjYmlBZ0lDQWdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJM0JoY25OcGJtY3RiV0ZwYmkxcGJuUmhZbXhsWEc0Z0lDQWdJQ0JqWVhObElDZDBZV0pzWlNjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMFlXY2dQVDA5SUNkallYQjBhVzl1SnlCOGZDQjBZV2NnUFQwOUlDZGpiMnhuY205MWNDY2dmSHdnZEdGbklEMDlQU0FuZEdKdlpIa25JSHg4SUhSaFp5QTlQVDBnSjNSbWIyOTBKeUI4ZkNCMFlXY2dQVDA5SUNkMGFHVmhaQ2NnZkh3Z2RHRm5JRDA5UFNBbmMzUjViR1VuSUh4OElIUmhaeUE5UFQwZ0ozTmpjbWx3ZENjZ2ZId2dkR0ZuSUQwOVBTQW5kR1Z0Y0d4aGRHVW5PMXh1WEc0Z0lDQWdJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNW9aV0ZrWEc0Z0lDQWdJQ0JqWVhObElDZG9aV0ZrSnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaFp5QTlQVDBnSjJKaGMyVW5JSHg4SUhSaFp5QTlQVDBnSjJKaGMyVm1iMjUwSnlCOGZDQjBZV2NnUFQwOUlDZGlaM052ZFc1a0p5QjhmQ0IwWVdjZ1BUMDlJQ2RzYVc1ckp5QjhmQ0IwWVdjZ1BUMDlJQ2R0WlhSaEp5QjhmQ0IwWVdjZ1BUMDlJQ2QwYVhSc1pTY2dmSHdnZEdGbklEMDlQU0FuYm05elkzSnBjSFFuSUh4OElIUmhaeUE5UFQwZ0oyNXZabkpoYldWekp5QjhmQ0IwWVdjZ1BUMDlJQ2R6ZEhsc1pTY2dmSHdnZEdGbklEMDlQU0FuYzJOeWFYQjBKeUI4ZkNCMFlXY2dQVDA5SUNkMFpXMXdiR0YwWlNjN1hHNWNiaUFnSUNBZ0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNObGJXRnVkR2xqY3k1b2RHMXNJM1JvWlMxb2RHMXNMV1ZzWlcxbGJuUmNiaUFnSUNBZ0lHTmhjMlVnSjJoMGJXd25PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0ZuSUQwOVBTQW5hR1ZoWkNjZ2ZId2dkR0ZuSUQwOVBTQW5ZbTlrZVNjN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1VISnZZbUZpYkhrZ2FXNGdkR2hsSUZ3aWFXNGdZbTlrZVZ3aUlIQmhjbk5wYm1jZ2JXOWtaU3dnYzI4Z2QyVWdiM1YwYkdGM0lHOXViSGtnZEdGbklHTnZiV0p2YzF4dUlDQWdJQzh2SUhkb1pYSmxJSFJvWlNCd1lYSnphVzVuSUhKMWJHVnpJR05oZFhObElHbHRjR3hwWTJsMElHOXdaVzV6SUc5eUlHTnNiM05sY3lCMGJ5QmlaU0JoWkdSbFpDNWNiaUFnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzVpYjJSNVhHNGdJQ0FnYzNkcGRHTm9JQ2gwWVdjcElIdGNiaUFnSUNBZ0lHTmhjMlVnSjJneEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJneUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnekp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnMEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnMUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnMkp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIQmhjbVZ1ZEZSaFp5QWhQVDBnSjJneEp5QW1KaUJ3WVhKbGJuUlVZV2NnSVQwOUlDZG9NaWNnSmlZZ2NHRnlaVzUwVkdGbklDRTlQU0FuYURNbklDWW1JSEJoY21WdWRGUmhaeUFoUFQwZ0oyZzBKeUFtSmlCd1lYSmxiblJVWVdjZ0lUMDlJQ2RvTlNjZ0ppWWdjR0Z5Wlc1MFZHRm5JQ0U5UFNBbmFEWW5PMXh1WEc0Z0lDQWdJQ0JqWVhObElDZHljQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZHlkQ2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwYlhCc2FXVmtSVzVrVkdGbmN5NXBibVJsZUU5bUtIQmhjbVZ1ZEZSaFp5a2dQVDA5SUMweE8xeHVYRzRnSUNBZ0lDQmpZWE5sSUNkallYQjBhVzl1SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMk52YkNjNlhHNGdJQ0FnSUNCallYTmxJQ2RqYjJ4bmNtOTFjQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZG1jbUZ0WlNjNlhHNGdJQ0FnSUNCallYTmxJQ2RvWldGa0p6cGNiaUFnSUNBZ0lHTmhjMlVnSjNSaWIyUjVKenBjYmlBZ0lDQWdJR05oYzJVZ0ozUmtKenBjYmlBZ0lDQWdJR05oYzJVZ0ozUm1iMjkwSnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1JvSnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1JvWldGa0p6cGNiaUFnSUNBZ0lHTmhjMlVnSjNSeUp6cGNiaUFnSUNBZ0lDQWdMeThnVkdobGMyVWdkR0ZuY3lCaGNtVWdiMjVzZVNCMllXeHBaQ0IzYVhSb0lHRWdabVYzSUhCaGNtVnVkSE1nZEdoaGRDQm9ZWFpsSUhOd1pXTnBZV3dnWTJocGJHUmNiaUFnSUNBZ0lDQWdMeThnY0dGeWMybHVaeUJ5ZFd4bGN5QXRMU0JwWmlCM1pTZHlaU0JrYjNkdUlHaGxjbVVzSUhSb1pXNGdibTl1WlNCdlppQjBhRzl6WlNCdFlYUmphR1ZrSUdGdVpGeHVJQ0FnSUNBZ0lDQXZMeUJ6YnlCM1pTQmhiR3h2ZHlCcGRDQnZibXg1SUdsbUlIZGxJR1J2YmlkMElHdHViM2NnZDJoaGRDQjBhR1VnY0dGeVpXNTBJR2x6TENCaGN5QmhiR3dnYjNSb1pYSmNiaUFnSUNBZ0lDQWdMeThnWTJGelpYTWdZWEpsSUdsdWRtRnNhV1F1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ3WVhKbGJuUlVZV2NnUFQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCM2FHVjBhR1Z5WEc0Z0lDQXFMMXh1SUNCMllYSWdabWx1WkVsdWRtRnNhV1JCYm1ObGMzUnZja1p2Y2xSaFp5QTlJR1oxYm1OMGFXOXVJQ2gwWVdjc0lHRnVZMlZ6ZEc5eVNXNW1ieWtnZTF4dUlDQWdJSE4zYVhSamFDQW9kR0ZuS1NCN1hHNGdJQ0FnSUNCallYTmxJQ2RoWkdSeVpYTnpKenBjYmlBZ0lDQWdJR05oYzJVZ0oyRnlkR2xqYkdVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWVhOcFpHVW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbllteHZZMnR4ZFc5MFpTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkalpXNTBaWEluT2x4dUlDQWdJQ0FnWTJGelpTQW5aR1YwWVdsc2N5YzZYRzRnSUNBZ0lDQmpZWE5sSUNka2FXRnNiMmNuT2x4dUlDQWdJQ0FnWTJGelpTQW5aR2x5SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMlJwZGljNlhHNGdJQ0FnSUNCallYTmxJQ2RrYkNjNlhHNGdJQ0FnSUNCallYTmxJQ2RtYVdWc1pITmxkQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZG1hV2RqWVhCMGFXOXVKenBjYmlBZ0lDQWdJR05oYzJVZ0oyWnBaM1Z5WlNjNlhHNGdJQ0FnSUNCallYTmxJQ2RtYjI5MFpYSW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmFHVmhaR1Z5SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMmhuY205MWNDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkdFlXbHVKenBjYmlBZ0lDQWdJR05oYzJVZ0oyMWxiblVuT2x4dUlDQWdJQ0FnWTJGelpTQW5ibUYySnpwY2JpQWdJQ0FnSUdOaGMyVWdKMjlzSnpwY2JpQWdJQ0FnSUdOaGMyVWdKM0FuT2x4dUlDQWdJQ0FnWTJGelpTQW5jMlZqZEdsdmJpYzZYRzRnSUNBZ0lDQmpZWE5sSUNkemRXMXRZWEo1SnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1ZzSnpwY2JseHVJQ0FnSUNBZ1kyRnpaU0FuY0hKbEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJ4cGMzUnBibWNuT2x4dVhHNGdJQ0FnSUNCallYTmxJQ2QwWVdKc1pTYzZYRzVjYmlBZ0lDQWdJR05oYzJVZ0oyaHlKenBjYmx4dUlDQWdJQ0FnWTJGelpTQW5lRzF3SnpwY2JseHVJQ0FnSUNBZ1kyRnpaU0FuYURFbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYURJbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYURNbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYURRbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYURVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYURZbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXNWpaWE4wYjNKSmJtWnZMbkJVWVdkSmJrSjFkSFJ2YmxOamIzQmxPMXh1WEc0Z0lDQWdJQ0JqWVhObElDZG1iM0p0SnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdVkyVnpkRzl5U1c1bWJ5NW1iM0p0VkdGbklIeDhJR0Z1WTJWemRHOXlTVzVtYnk1d1ZHRm5TVzVDZFhSMGIyNVRZMjl3WlR0Y2JseHVJQ0FnSUNBZ1kyRnpaU0FuYkdrbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXNWpaWE4wYjNKSmJtWnZMbXhwYzNSSmRHVnRWR0ZuUVhWMGIyTnNiM05wYm1jN1hHNWNiaUFnSUNBZ0lHTmhjMlVnSjJSa0p6cGNiaUFnSUNBZ0lHTmhjMlVnSjJSMEp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnVZMlZ6ZEc5eVNXNW1ieTVrYkVsMFpXMVVZV2RCZFhSdlkyeHZjMmx1Wnp0Y2JseHVJQ0FnSUNBZ1kyRnpaU0FuWW5WMGRHOXVKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z1WTJWemRHOXlTVzVtYnk1aWRYUjBiMjVVWVdkSmJsTmpiM0JsTzF4dVhHNGdJQ0FnSUNCallYTmxJQ2RoSnpwY2JpQWdJQ0FnSUNBZ0x5OGdVM0JsWXlCellYbHpJSE52YldWMGFHbHVaeUJoWW05MWRDQnpkRzl5YVc1bklHRWdiR2x6ZENCdlppQnRZWEpyWlhKekxDQmlkWFFnYVhRZ2MyOTFibVJ6WEc0Z0lDQWdJQ0FnSUM4dklHVnhkV2wyWVd4bGJuUWdkRzhnZEdocGN5QmphR1ZqYXk1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdVkyVnpkRzl5U1c1bWJ5NWhWR0ZuU1c1VFkyOXdaVHRjYmx4dUlDQWdJQ0FnWTJGelpTQW5ibTlpY2ljNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJtTmxjM1J2Y2tsdVptOHVibTlpY2xSaFowbHVVMk52Y0dVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDA3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRwZG1WdUlHRWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVc0lISmxkSFZ5YmlCaElHeHBjM1FnYjJZZ2FYUnpJSEpsWTNWeWMybDJaVnh1SUNBZ0tpQnZkMjVsY25Nc0lITjBZWEowYVc1bklHRjBJSFJvWlNCeWIyOTBJR0Z1WkNCbGJtUnBibWNnZDJsMGFDQjBhR1VnYVc1emRHRnVZMlVnYVhSelpXeG1MbHh1SUNBZ0tpOWNiaUFnZG1GeUlHWnBibVJQZDI1bGNsTjBZV05ySUQwZ1puVnVZM1JwYjI0Z0tHbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ2FXWWdLQ0ZwYm5OMFlXNWpaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRnRkTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCemRHRmpheUE5SUZ0ZE8xeHVJQ0FnSUM4cVpYTnNhVzUwTFdScGMyRmliR1VnYzNCaFkyVXRZV1owWlhJdGEyVjVkMjl5WkhNZ0tpOWNiaUFnSUNCa2J5QjdYRzRnSUNBZ0lDQXZLbVZ6YkdsdWRDMWxibUZpYkdVZ2MzQmhZMlV0WVdaMFpYSXRhMlY1ZDI5eVpITWdLaTljYmlBZ0lDQWdJSE4wWVdOckxuQjFjMmdvYVc1emRHRnVZMlVwTzF4dUlDQWdJSDBnZDJocGJHVWdLR2x1YzNSaGJtTmxJRDBnYVc1emRHRnVZMlV1WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNpazdYRzRnSUNBZ2MzUmhZMnN1Y21WMlpYSnpaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQnpkR0ZqYXp0Y2JpQWdmVHRjYmx4dUlDQjJZWElnWkdsa1YyRnliaUE5SUh0OU8xeHVYRzRnSUhaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnlBOUlHWjFibU4wYVc5dUlDaGphR2xzWkZSaFp5d2dZMmhwYkdSSmJuTjBZVzVqWlN3Z1lXNWpaWE4wYjNKSmJtWnZLU0I3WEc0Z0lDQWdZVzVqWlhOMGIzSkpibVp2SUQwZ1lXNWpaWE4wYjNKSmJtWnZJSHg4SUdWdGNIUjVRVzVqWlhOMGIzSkpibVp2TzF4dUlDQWdJSFpoY2lCd1lYSmxiblJKYm1adklEMGdZVzVqWlhOMGIzSkpibVp2TG5CaGNtVnVkRlJoWnp0Y2JpQWdJQ0IyWVhJZ2NHRnlaVzUwVkdGbklEMGdjR0Z5Wlc1MFNXNW1ieUFtSmlCd1lYSmxiblJKYm1adkxuUmhaenRjYmx4dUlDQWdJSFpoY2lCcGJuWmhiR2xrVUdGeVpXNTBJRDBnYVhOVVlXZFdZV3hwWkZkcGRHaFFZWEpsYm5Rb1kyaHBiR1JVWVdjc0lIQmhjbVZ1ZEZSaFp5a2dQeUJ1ZFd4c0lEb2djR0Z5Wlc1MFNXNW1ienRjYmlBZ0lDQjJZWElnYVc1MllXeHBaRUZ1WTJWemRHOXlJRDBnYVc1MllXeHBaRkJoY21WdWRDQS9JRzUxYkd3Z09pQm1hVzVrU1c1MllXeHBaRUZ1WTJWemRHOXlSbTl5VkdGbktHTm9hV3hrVkdGbkxDQmhibU5sYzNSdmNrbHVabThwTzF4dUlDQWdJSFpoY2lCd2NtOWliR1Z0WVhScFl5QTlJR2x1ZG1Gc2FXUlFZWEpsYm5RZ2ZId2dhVzUyWVd4cFpFRnVZMlZ6ZEc5eU8xeHVYRzRnSUNBZ2FXWWdLSEJ5YjJKc1pXMWhkR2xqS1NCN1hHNGdJQ0FnSUNCMllYSWdZVzVqWlhOMGIzSlVZV2NnUFNCd2NtOWliR1Z0WVhScFl5NTBZV2M3WEc0Z0lDQWdJQ0IyWVhJZ1lXNWpaWE4wYjNKSmJuTjBZVzVqWlNBOUlIQnliMkpzWlcxaGRHbGpMbWx1YzNSaGJtTmxPMXh1WEc0Z0lDQWdJQ0IyWVhJZ1kyaHBiR1JQZDI1bGNpQTlJR05vYVd4a1NXNXpkR0Z1WTJVZ0ppWWdZMmhwYkdSSmJuTjBZVzVqWlM1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1WDI5M2JtVnlPMXh1SUNBZ0lDQWdkbUZ5SUdGdVkyVnpkRzl5VDNkdVpYSWdQU0JoYm1ObGMzUnZja2x1YzNSaGJtTmxJQ1ltSUdGdVkyVnpkRzl5U1c1emRHRnVZMlV1WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNqdGNibHh1SUNBZ0lDQWdkbUZ5SUdOb2FXeGtUM2R1WlhKeklEMGdabWx1WkU5M2JtVnlVM1JoWTJzb1kyaHBiR1JQZDI1bGNpazdYRzRnSUNBZ0lDQjJZWElnWVc1alpYTjBiM0pQZDI1bGNuTWdQU0JtYVc1a1QzZHVaWEpUZEdGamF5aGhibU5sYzNSdmNrOTNibVZ5S1R0Y2JseHVJQ0FnSUNBZ2RtRnlJRzFwYmxOMFlXTnJUR1Z1SUQwZ1RXRjBhQzV0YVc0b1kyaHBiR1JQZDI1bGNuTXViR1Z1WjNSb0xDQmhibU5sYzNSdmNrOTNibVZ5Y3k1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnZG1GeUlHazdYRzVjYmlBZ0lDQWdJSFpoY2lCa1pXVndaWE4wUTI5dGJXOXVJRDBnTFRFN1hHNGdJQ0FnSUNCbWIzSWdLR2tnUFNBd095QnBJRHdnYldsdVUzUmhZMnRNWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZMmhwYkdSUGQyNWxjbk5iYVYwZ1BUMDlJR0Z1WTJWemRHOXlUM2R1WlhKelcybGRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pHVmxjR1Z6ZEVOdmJXMXZiaUE5SUdrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkbUZ5SUZWT1MwNVBWMDRnUFNBbktIVnVhMjV2ZDI0cEp6dGNiaUFnSUNBZ0lIWmhjaUJqYUdsc1pFOTNibVZ5VG1GdFpYTWdQU0JqYUdsc1pFOTNibVZ5Y3k1emJHbGpaU2hrWldWd1pYTjBRMjl0Ylc5dUlDc2dNU2t1YldGd0tHWjFibU4wYVc5dUlDaHBibk4wS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGJuTjBMbWRsZEU1aGJXVW9LU0I4ZkNCVlRrdE9UMWRPTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCMllYSWdZVzVqWlhOMGIzSlBkMjVsY2s1aGJXVnpJRDBnWVc1alpYTjBiM0pQZDI1bGNuTXVjMnhwWTJVb1pHVmxjR1Z6ZEVOdmJXMXZiaUFySURFcExtMWhjQ2htZFc1amRHbHZiaUFvYVc1emRDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzV6ZEM1blpYUk9ZVzFsS0NrZ2ZId2dWVTVMVGs5WFRqdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdkbUZ5SUc5M2JtVnlTVzVtYnlBOUlGdGRMbU52Ym1OaGRDaGNiaUFnSUNBZ0lDOHZJRWxtSUhSb1pTQndZWEpsYm5RZ1lXNWtJR05vYVd4a0lHbHVjM1JoYm1ObGN5Qm9ZWFpsSUdFZ1kyOXRiVzl1SUc5M2JtVnlJR0Z1WTJWemRHOXlMQ0J6ZEdGeWRGeHVJQ0FnSUNBZ0x5OGdkMmwwYUNCMGFHRjBJQzB0SUc5MGFHVnlkMmx6WlNCM1pTQnFkWE4wSUhOMFlYSjBJSGRwZEdnZ2RHaGxJSEJoY21WdWRDZHpJRzkzYm1WeWN5NWNiaUFnSUNBZ0lHUmxaWEJsYzNSRGIyMXRiMjRnSVQwOUlDMHhJRDhnWTJocGJHUlBkMjVsY25OYlpHVmxjR1Z6ZEVOdmJXMXZibDB1WjJWMFRtRnRaU2dwSUh4OElGVk9TMDVQVjA0Z09pQmJYU3dnWVc1alpYTjBiM0pQZDI1bGNrNWhiV1Z6TENCaGJtTmxjM1J2Y2xSaFp5eGNiaUFnSUNBZ0lDOHZJRWxtSUhkbEozSmxJSGRoY201cGJtY2dZV0p2ZFhRZ1lXNGdhVzUyWVd4cFpDQW9ibTl1TFhCaGNtVnVkQ2tnWVc1alpYTjBjbmtzSUdGa1pDQW5MaTR1SjF4dUlDQWdJQ0FnYVc1MllXeHBaRUZ1WTJWemRHOXlJRDhnV3ljdUxpNG5YU0E2SUZ0ZExDQmphR2xzWkU5M2JtVnlUbUZ0WlhNc0lHTm9hV3hrVkdGbktTNXFiMmx1S0NjZ1BpQW5LVHRjYmx4dUlDQWdJQ0FnZG1GeUlIZGhjbTVMWlhrZ1BTQWhJV2x1ZG1Gc2FXUlFZWEpsYm5RZ0t5QW5mQ2NnS3lCamFHbHNaRlJoWnlBcklDZDhKeUFySUdGdVkyVnpkRzl5VkdGbklDc2dKM3duSUNzZ2IzZHVaWEpKYm1adk8xeHVJQ0FnSUNBZ2FXWWdLR1JwWkZkaGNtNWJkMkZ5Ymt0bGVWMHBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdaR2xrVjJGeWJsdDNZWEp1UzJWNVhTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lHbG1JQ2hwYm5aaGJHbGtVR0Z5Wlc1MEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCcGJtWnZJRDBnSnljN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hoYm1ObGMzUnZjbFJoWnlBOVBUMGdKM1JoWW14bEp5QW1KaUJqYUdsc1pGUmhaeUE5UFQwZ0ozUnlKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHbHVabThnS3owZ0p5QkJaR1FnWVNBOGRHSnZaSGsrSUhSdklIbHZkWElnWTI5a1pTQjBieUJ0WVhSamFDQjBhR1VnUkU5TklIUnlaV1VnWjJWdVpYSmhkR1ZrSUdKNUlDY2dLeUFuZEdobElHSnliM2R6WlhJdUp6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjNaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnlndUxpNHBPaUE4SlhNK0lHTmhibTV2ZENCaGNIQmxZWElnWVhNZ1lTQmphR2xzWkNCdlppQThKWE0rTGlBbklDc2dKMU5sWlNBbGN5NGxjeWNzSUdOb2FXeGtWR0ZuTENCaGJtTmxjM1J2Y2xSaFp5d2diM2R1WlhKSmJtWnZMQ0JwYm1adktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuS0M0dUxpazZJRHdsY3o0Z1kyRnVibTkwSUdGd2NHVmhjaUJoY3lCaElHUmxjMk5sYm1SaGJuUWdiMllnSnlBcklDYzhKWE0rTGlCVFpXVWdKWE11Snl3Z1kyaHBiR1JVWVdjc0lHRnVZMlZ6ZEc5eVZHRm5MQ0J2ZDI1bGNrbHVabThwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVHRjYmx4dUlDQjJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VZVzVqWlhOMGIzSkpibVp2UTI5dWRHVjRkRXRsZVNBOUlDZGZYM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaMTloYm1ObGMzUnZja2x1Wm04a0p5QXJJRTFoZEdndWNtRnVaRzl0S0NrdWRHOVRkSEpwYm1jb016WXBMbk5zYVdObEtESXBPMXh1WEc0Z0lIWmhiR2xrWVhSbFJFOU5UbVZ6ZEdsdVp5NTFjR1JoZEdWa1FXNWpaWE4wYjNKSmJtWnZJRDBnZFhCa1lYUmxaRUZ1WTJWemRHOXlTVzVtYnp0Y2JseHVJQ0F2THlCR2IzSWdkR1Z6ZEdsdVoxeHVJQ0IyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1YVhOVVlXZFdZV3hwWkVsdVEyOXVkR1Y0ZENBOUlHWjFibU4wYVc5dUlDaDBZV2NzSUdGdVkyVnpkRzl5U1c1bWJ5a2dlMXh1SUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieUE5SUdGdVkyVnpkRzl5U1c1bWJ5QjhmQ0JsYlhCMGVVRnVZMlZ6ZEc5eVNXNW1ienRjYmlBZ0lDQjJZWElnY0dGeVpXNTBTVzVtYnlBOUlHRnVZMlZ6ZEc5eVNXNW1ieTV3WVhKbGJuUlVZV2M3WEc0Z0lDQWdkbUZ5SUhCaGNtVnVkRlJoWnlBOUlIQmhjbVZ1ZEVsdVptOGdKaVlnY0dGeVpXNTBTVzVtYnk1MFlXYzdYRzRnSUNBZ2NtVjBkWEp1SUdselZHRm5WbUZzYVdSWGFYUm9VR0Z5Wlc1MEtIUmhaeXdnY0dGeVpXNTBWR0ZuS1NBbUppQWhabWx1WkVsdWRtRnNhV1JCYm1ObGMzUnZja1p2Y2xSaFp5aDBZV2NzSUdGdVkyVnpkRzl5U1c1bWJ5azdYRzRnSUgwN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuT3lKZGZRPT0iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvUmVhY3QnKTtcbiIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgQ1NTUHJvcGVydHlPcGVyYXRpb25zXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENTU1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9DU1NQcm9wZXJ0eScpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgY2FtZWxpemVTdHlsZU5hbWUgPSByZXF1aXJlKCdmYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFtZScpO1xudmFyIGRhbmdlcm91c1N0eWxlVmFsdWUgPSByZXF1aXJlKCcuL2Rhbmdlcm91c1N0eWxlVmFsdWUnKTtcbnZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSByZXF1aXJlKCdmYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUnKTtcbnZhciBtZW1vaXplU3RyaW5nT25seSA9IHJlcXVpcmUoJ2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVybiBoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKTtcbn0pO1xuXG52YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBmYWxzZTtcbnZhciBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnY3NzRmxvYXQnO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB2YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHRyeSB7XG4gICAgLy8gSUU4IHRocm93cyBcIkludmFsaWQgYXJndW1lbnQuXCIgaWYgcmVzZXR0aW5nIHNob3J0aGFuZCBzdHlsZSBwcm9wZXJ0aWVzLlxuICAgIHRlbXBTdHlsZS5mb250ID0gJyc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG4gIH1cbiAgLy8gSUU4IG9ubHkgc3VwcG9ydHMgYWNjZXNzaW5nIGNzc0Zsb2F0IChzdGFuZGFyZCkgYXMgc3R5bGVGbG9hdFxuICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnc3R5bGVGbG9hdCc7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVzIHNob3VsZCBiZSBjYXBpdGFsaXplZFxuICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8bW96fG8pW0EtWl0vO1xuXG4gIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvblxuICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuID0gLztcXHMqJC87XG5cbiAgdmFyIHdhcm5lZFN0eWxlTmFtZXMgPSB7fTtcbiAgdmFyIHdhcm5lZFN0eWxlVmFsdWVzID0ge307XG5cbiAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIGNhbWVsaXplU3R5bGVOYW1lKG5hbWUpKSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICB2YXIgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCB2ZW5kb3ItcHJlZml4ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8nLCBuYW1lLCBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSkgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIGlmICh3YXJuZWRTdHlsZVZhbHVlcy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkgJiYgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1N0eWxlIHByb3BlcnR5IHZhbHVlcyBzaG91bGRuXFwndCBjb250YWluIGEgc2VtaWNvbG9uLiAnICsgJ1RyeSBcIiVzOiAlc1wiIGluc3RlYWQuJywgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSkgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICovXG4gIHZhciB3YXJuVmFsaWRTdHlsZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybi50ZXN0KG5hbWUpKSB7XG4gICAgICB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUobmFtZSk7XG4gICAgfSBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHdhcm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbihuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBDU1MgcHJvcGVydGllcy5cbiAqL1xudmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHtcblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6XG4gICAqXG4gICAqICAgPiBjcmVhdGVNYXJrdXBGb3JTdHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWlnaHQ6IDB9KVxuICAgKiAgIFwid2lkdGg6MjAwcHg7aGVpZ2h0OjA7XCJcbiAgICpcbiAgICogVW5kZWZpbmVkIHZhbHVlcyBhcmUgaWdub3JlZCBzbyB0aGF0IGRlY2xhcmF0aXZlIHByb2dyYW1taW5nIGlzIGVhc2llci5cbiAgICogVGhlIHJlc3VsdCBzaG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9yZSBpbnNlcnRpb24gaW50byB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzXG4gICAqIEByZXR1cm4gez9zdHJpbmd9XG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JTdHlsZXM6IGZ1bmN0aW9uIChzdHlsZXMpIHtcbiAgICB2YXIgc2VyaWFsaXplZCA9ICcnO1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVdO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHlsZVZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgc2VyaWFsaXplZCArPSBwcm9jZXNzU3R5bGVOYW1lKHN0eWxlTmFtZSkgKyAnOic7XG4gICAgICAgIHNlcmlhbGl6ZWQgKz0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpICsgJzsnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2VyaWFsaXplZCB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgbXVsdGlwbGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIGFzXG4gICAqICcnIChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuICAgKi9cbiAgc2V0VmFsdWVGb3JTdHlsZXM6IGZ1bmN0aW9uIChub2RlLCBzdHlsZXMpIHtcbiAgICB2YXIgc3R5bGUgPSBub2RlLnN0eWxlO1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdKTtcbiAgICAgIH1cbiAgICAgIHZhciBzdHlsZVZhbHVlID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdKTtcbiAgICAgIGlmIChzdHlsZU5hbWUgPT09ICdmbG9hdCcpIHtcbiAgICAgICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vzc29yO1xuICAgICAgfVxuICAgICAgaWYgKHN0eWxlVmFsdWUpIHtcbiAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxlVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW3N0eWxlTmFtZV07XG4gICAgICAgIGlmIChleHBhbnNpb24pIHtcbiAgICAgICAgICAvLyBTaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNvIHVuc2V0IGVhY2hcbiAgICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdFxuICAgICAgICAgIGZvciAodmFyIGluZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7XG4gICAgICAgICAgICBzdHlsZVtpbmRpdmlkdWFsU3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKENTU1Byb3BlcnR5T3BlcmF0aW9ucywgJ0NTU1Byb3BlcnR5T3BlcmF0aW9ucycsIHtcbiAgc2V0VmFsdWVGb3JTdHlsZXM6ICdzZXRWYWx1ZUZvclN0eWxlcydcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZRMU5UVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjMXh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCRFUxTlFjbTl3WlhKMGVTQTlJSEpsY1hWcGNtVW9KeTR2UTFOVFVISnZjR1Z5ZEhrbktUdGNiblpoY2lCRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMFY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUlFaWEptSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZCbGNtWW5LVHRjYmx4dWRtRnlJR05oYldWc2FYcGxVM1I1YkdWT1lXMWxJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2WTJGdFpXeHBlbVZUZEhsc1pVNWhiV1VuS1R0Y2JuWmhjaUJrWVc1blpYSnZkWE5UZEhsc1pWWmhiSFZsSUQwZ2NtVnhkV2x5WlNnbkxpOWtZVzVuWlhKdmRYTlRkSGxzWlZaaGJIVmxKeWs3WEc1MllYSWdhSGx3YUdWdVlYUmxVM1I1YkdWT1lXMWxJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YUhsd2FHVnVZWFJsVTNSNWJHVk9ZVzFsSnlrN1hHNTJZWElnYldWdGIybDZaVk4wY21sdVowOXViSGtnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5dFpXMXZhWHBsVTNSeWFXNW5UMjVzZVNjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiblpoY2lCd2NtOWpaWE56VTNSNWJHVk9ZVzFsSUQwZ2JXVnRiMmw2WlZOMGNtbHVaMDl1Ykhrb1puVnVZM1JwYjI0Z0tITjBlV3hsVG1GdFpTa2dlMXh1SUNCeVpYUjFjbTRnYUhsd2FHVnVZWFJsVTNSNWJHVk9ZVzFsS0hOMGVXeGxUbUZ0WlNrN1hHNTlLVHRjYmx4dWRtRnlJR2hoYzFOb2IzSjBhR0Z1WkZCeWIzQmxjblI1UW5WbklEMGdabUZzYzJVN1hHNTJZWElnYzNSNWJHVkdiRzloZEVGalkyVnpjMjl5SUQwZ0oyTnpjMFpzYjJGMEp6dGNibWxtSUNoRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDNWpZVzVWYzJWRVQwMHBJSHRjYmlBZ2RtRnlJSFJsYlhCVGRIbHNaU0E5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9KMlJwZGljcExuTjBlV3hsTzF4dUlDQjBjbmtnZTF4dUlDQWdJQzh2SUVsRk9DQjBhSEp2ZDNNZ1hDSkpiblpoYkdsa0lHRnlaM1Z0Wlc1MExsd2lJR2xtSUhKbGMyVjBkR2x1WnlCemFHOXlkR2hoYm1RZ2MzUjViR1VnY0hKdmNHVnlkR2xsY3k1Y2JpQWdJQ0IwWlcxd1UzUjViR1V1Wm05dWRDQTlJQ2NuTzF4dUlDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdhR0Z6VTJodmNuUm9ZVzVrVUhKdmNHVnlkSGxDZFdjZ1BTQjBjblZsTzF4dUlDQjlYRzRnSUM4dklFbEZPQ0J2Ym14NUlITjFjSEJ2Y25SeklHRmpZMlZ6YzJsdVp5QmpjM05HYkc5aGRDQW9jM1JoYm1SaGNtUXBJR0Z6SUhOMGVXeGxSbXh2WVhSY2JpQWdhV1lnS0dSdlkzVnRaVzUwTG1SdlkzVnRaVzUwUld4bGJXVnVkQzV6ZEhsc1pTNWpjM05HYkc5aGRDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnYzNSNWJHVkdiRzloZEVGalkyVnpjMjl5SUQwZ0ozTjBlV3hsUm14dllYUW5PMXh1SUNCOVhHNTlYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDOHZJQ2R0YzFSeVlXNXpabTl5YlNjZ2FYTWdZMjl5Y21WamRDd2dZblYwSUhSb1pTQnZkR2hsY2lCd2NtVm1hWGhsY3lCemFHOTFiR1FnWW1VZ1kyRndhWFJoYkdsNlpXUmNiaUFnZG1GeUlHSmhaRlpsYm1SdmNtVmtVM1I1YkdWT1lXMWxVR0YwZEdWeWJpQTlJQzllS0Q4NmQyVmlhMmwwZkcxdmVueHZLVnRCTFZwZEx6dGNibHh1SUNBdkx5QnpkSGxzWlNCMllXeDFaWE1nYzJodmRXeGtiaWQwSUdOdmJuUmhhVzRnWVNCelpXMXBZMjlzYjI1Y2JpQWdkbUZ5SUdKaFpGTjBlV3hsVm1Gc2RXVlhhWFJvVTJWdGFXTnZiRzl1VUdGMGRHVnliaUE5SUM4N1hGeHpLaVF2TzF4dVhHNGdJSFpoY2lCM1lYSnVaV1JUZEhsc1pVNWhiV1Z6SUQwZ2UzMDdYRzRnSUhaaGNpQjNZWEp1WldSVGRIbHNaVlpoYkhWbGN5QTlJSHQ5TzF4dVhHNGdJSFpoY2lCM1lYSnVTSGx3YUdWdVlYUmxaRk4wZVd4bFRtRnRaU0E5SUdaMWJtTjBhVzl1SUNodVlXMWxLU0I3WEc0Z0lDQWdhV1lnS0hkaGNtNWxaRk4wZVd4bFRtRnRaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ0ppWWdkMkZ5Ym1Wa1UzUjViR1ZPWVcxbGMxdHVZVzFsWFNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSGRoY201bFpGTjBlV3hsVG1GdFpYTmJibUZ0WlYwZ1BTQjBjblZsTzF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVlc1emRYQndiM0owWldRZ2MzUjViR1VnY0hKdmNHVnlkSGtnSlhNdUlFUnBaQ0I1YjNVZ2JXVmhiaUFsY3o4bkxDQnVZVzFsTENCallXMWxiR2w2WlZOMGVXeGxUbUZ0WlNodVlXMWxLU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDA3WEc1Y2JpQWdkbUZ5SUhkaGNtNUNZV1JXWlc1a2IzSmxaRk4wZVd4bFRtRnRaU0E5SUdaMWJtTjBhVzl1SUNodVlXMWxLU0I3WEc0Z0lDQWdhV1lnS0hkaGNtNWxaRk4wZVd4bFRtRnRaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ0ppWWdkMkZ5Ym1Wa1UzUjViR1ZPWVcxbGMxdHVZVzFsWFNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSGRoY201bFpGTjBlV3hsVG1GdFpYTmJibUZ0WlYwZ1BTQjBjblZsTzF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVlc1emRYQndiM0owWldRZ2RtVnVaRzl5TFhCeVpXWnBlR1ZrSUhOMGVXeGxJSEJ5YjNCbGNuUjVJQ1Z6TGlCRWFXUWdlVzkxSUcxbFlXNGdKWE0vSnl3Z2JtRnRaU3dnYm1GdFpTNWphR0Z5UVhRb01Da3VkRzlWY0hCbGNrTmhjMlVvS1NBcklHNWhiV1V1YzJ4cFkyVW9NU2twSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5TzF4dVhHNGdJSFpoY2lCM1lYSnVVM1I1YkdWV1lXeDFaVmRwZEdoVFpXMXBZMjlzYjI0Z1BTQm1kVzVqZEdsdmJpQW9ibUZ0WlN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0JwWmlBb2QyRnlibVZrVTNSNWJHVldZV3gxWlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvZG1Gc2RXVXBJQ1ltSUhkaGNtNWxaRk4wZVd4bFZtRnNkV1Z6VzNaaGJIVmxYU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIZGhjbTVsWkZOMGVXeGxWbUZzZFdWelczWmhiSFZsWFNBOUlIUnlkV1U3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RUZEhsc1pTQndjbTl3WlhKMGVTQjJZV3gxWlhNZ2MyaHZkV3hrYmx4Y0ozUWdZMjl1ZEdGcGJpQmhJSE5sYldsamIyeHZiaTRnSnlBcklDZFVjbmtnWENJbGN6b2dKWE5jSWlCcGJuTjBaV0ZrTGljc0lHNWhiV1VzSUhaaGJIVmxMbkpsY0d4aFkyVW9ZbUZrVTNSNWJHVldZV3gxWlZkcGRHaFRaVzFwWTI5c2IyNVFZWFIwWlhKdUxDQW5KeWtwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibUZ0WlZ4dUlDQWdLaUJBY0dGeVlXMGdleXA5SUhaaGJIVmxYRzRnSUNBcUwxeHVJQ0IyWVhJZ2QyRnlibFpoYkdsa1UzUjViR1VnUFNCbWRXNWpkR2x2YmlBb2JtRnRaU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQnBaaUFvYm1GdFpTNXBibVJsZUU5bUtDY3RKeWtnUGlBdE1Ta2dlMXh1SUNBZ0lDQWdkMkZ5YmtoNWNHaGxibUYwWldSVGRIbHNaVTVoYldVb2JtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hpWVdSV1pXNWtiM0psWkZOMGVXeGxUbUZ0WlZCaGRIUmxjbTR1ZEdWemRDaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ2QyRnlia0poWkZabGJtUnZjbVZrVTNSNWJHVk9ZVzFsS0c1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9ZbUZrVTNSNWJHVldZV3gxWlZkcGRHaFRaVzFwWTI5c2IyNVFZWFIwWlhKdUxuUmxjM1FvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0IzWVhKdVUzUjViR1ZXWVd4MVpWZHBkR2hUWlcxcFkyOXNiMjRvYm1GdFpTd2dkbUZzZFdVcE8xeHVJQ0FnSUgxY2JpQWdmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlBjR1Z5WVhScGIyNXpJR1p2Y2lCa1pXRnNhVzVuSUhkcGRHZ2dRMU5USUhCeWIzQmxjblJwWlhNdVhHNGdLaTljYm5aaGNpQkRVMU5RY205d1pYSjBlVTl3WlhKaGRHbHZibk1nUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGNtbGhiR2w2WlhNZ1lTQnRZWEJ3YVc1bklHOW1JSE4wZVd4bElIQnliM0JsY25ScFpYTWdabTl5SUhWelpTQmhjeUJwYm14cGJtVWdjM1I1YkdWek9seHVJQ0FnS2x4dUlDQWdLaUFnSUQ0Z1kzSmxZWFJsVFdGeWEzVndSbTl5VTNSNWJHVnpLSHQzYVdSMGFEb2dKekl3TUhCNEp5d2dhR1ZwWjJoME9pQXdmU2xjYmlBZ0lDb2dJQ0JjSW5kcFpIUm9Pakl3TUhCNE8yaGxhV2RvZERvd08xd2lYRzRnSUNBcVhHNGdJQ0FxSUZWdVpHVm1hVzVsWkNCMllXeDFaWE1nWVhKbElHbG5ibTl5WldRZ2MyOGdkR2hoZENCa1pXTnNZWEpoZEdsMlpTQndjbTluY21GdGJXbHVaeUJwY3lCbFlYTnBaWEl1WEc0Z0lDQXFJRlJvWlNCeVpYTjFiSFFnYzJodmRXeGtJR0psSUVoVVRVd3RaWE5qWVhCbFpDQmlaV1p2Y21VZ2FXNXpaWEowYVc5dUlHbHVkRzhnZEdobElFUlBUUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhOMGVXeGxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIcy9jM1J5YVc1bmZWeHVJQ0FnS2k5Y2JpQWdZM0psWVhSbFRXRnlhM1Z3Um05eVUzUjViR1Z6T2lCbWRXNWpkR2x2YmlBb2MzUjViR1Z6S1NCN1hHNGdJQ0FnZG1GeUlITmxjbWxoYkdsNlpXUWdQU0FuSnp0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJ6ZEhsc1pVNWhiV1VnYVc0Z2MzUjViR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9JWE4wZVd4bGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNoemRIbHNaVTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUhOMGVXeGxWbUZzZFdVZ1BTQnpkSGxzWlhOYmMzUjViR1ZPWVcxbFhUdGNiaUFnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lIZGhjbTVXWVd4cFpGTjBlV3hsS0hOMGVXeGxUbUZ0WlN3Z2MzUjViR1ZXWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvYzNSNWJHVldZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lITmxjbWxoYkdsNlpXUWdLejBnY0hKdlkyVnpjMU4wZVd4bFRtRnRaU2h6ZEhsc1pVNWhiV1VwSUNzZ0p6b25PMXh1SUNBZ0lDQWdJQ0J6WlhKcFlXeHBlbVZrSUNzOUlHUmhibWRsY205MWMxTjBlV3hsVm1Gc2RXVW9jM1I1YkdWT1lXMWxMQ0J6ZEhsc1pWWmhiSFZsS1NBcklDYzdKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhObGNtbGhiR2w2WldRZ2ZId2diblZzYkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMlYwY3lCMGFHVWdkbUZzZFdVZ1ptOXlJRzExYkhScGNHeGxJSE4wZVd4bGN5QnZiaUJoSUc1dlpHVXVJQ0JKWmlCaElIWmhiSFZsSUdseklITndaV05wWm1sbFpDQmhjMXh1SUNBZ0tpQW5KeUFvWlcxd2RIa2djM1J5YVc1bktTd2dkR2hsSUdOdmNuSmxjM0J2Ym1ScGJtY2djM1I1YkdVZ2NISnZjR1Z5ZEhrZ2QybHNiQ0JpWlNCMWJuTmxkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZiR1Z0Wlc1MGZTQnViMlJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnpkSGxzWlhOY2JpQWdJQ292WEc0Z0lITmxkRlpoYkhWbFJtOXlVM1I1YkdWek9pQm1kVzVqZEdsdmJpQW9ibTlrWlN3Z2MzUjViR1Z6S1NCN1hHNGdJQ0FnZG1GeUlITjBlV3hsSUQwZ2JtOWtaUzV6ZEhsc1pUdGNiaUFnSUNCbWIzSWdLSFpoY2lCemRIbHNaVTVoYldVZ2FXNGdjM1I1YkdWektTQjdYRzRnSUNBZ0lDQnBaaUFvSVhOMGVXeGxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHpkSGxzWlU1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnZDJGeWJsWmhiR2xrVTNSNWJHVW9jM1I1YkdWT1lXMWxMQ0J6ZEhsc1pYTmJjM1I1YkdWT1lXMWxYU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IyWVhJZ2MzUjViR1ZXWVd4MVpTQTlJR1JoYm1kbGNtOTFjMU4wZVd4bFZtRnNkV1VvYzNSNWJHVk9ZVzFsTENCemRIbHNaWE5iYzNSNWJHVk9ZVzFsWFNrN1hHNGdJQ0FnSUNCcFppQW9jM1I1YkdWT1lXMWxJRDA5UFNBblpteHZZWFFuS1NCN1hHNGdJQ0FnSUNBZ0lITjBlV3hsVG1GdFpTQTlJSE4wZVd4bFJteHZZWFJCWTJObGMzTnZjanRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoemRIbHNaVlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJSE4wZVd4bFczTjBlV3hsVG1GdFpWMGdQU0J6ZEhsc1pWWmhiSFZsTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVjRjR0Z1YzJsdmJpQTlJR2hoYzFOb2IzSjBhR0Z1WkZCeWIzQmxjblI1UW5WbklDWW1JRU5UVTFCeWIzQmxjblI1TG5Ob2IzSjBhR0Z1WkZCeWIzQmxjblI1Ulhod1lXNXphVzl1YzF0emRIbHNaVTVoYldWZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWlhod1lXNXphVzl1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVTJodmNuUm9ZVzVrSUhCeWIzQmxjblI1SUhSb1lYUWdTVVU0SUhkdmJpZDBJR3hwYTJVZ2RXNXpaWFIwYVc1bkxDQnpieUIxYm5ObGRDQmxZV05vWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdZMjl0Y0c5dVpXNTBJSFJ2SUhCc1lXTmhkR1VnYVhSY2JpQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBibVJwZG1sa2RXRnNVM1I1YkdWT1lXMWxJR2x1SUdWNGNHRnVjMmx2YmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVmJhVzVrYVhacFpIVmhiRk4wZVd4bFRtRnRaVjBnUFNBbkp6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2MzUjViR1ZiYzNSNWJHVk9ZVzFsWFNBOUlDY25PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNibjA3WEc1Y2JsSmxZV04wVUdWeVppNXRaV0Z6ZFhKbFRXVjBhRzlrY3loRFUxTlFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXNJQ2REVTFOUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NbkxDQjdYRzRnSUhObGRGWmhiSFZsUm05eVUzUjViR1Z6T2lBbmMyVjBWbUZzZFdWR2IzSlRkSGxzWlhNblhHNTlLVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCRFUxTlFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTTdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBDYWxsYmFja1F1ZXVlXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHBzZXVkby1ldmVudCBtb2R1bGUgdG8gaGVscCBrZWVwIHRyYWNrIG9mIGNvbXBvbmVudHMgd2FpdGluZyB0b1xuICogYmUgbm90aWZpZWQgd2hlbiB0aGVpciBET00gcmVwcmVzZW50YXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIHVzZS5cbiAqXG4gKiBUaGlzIGltcGxlbWVudHMgYFBvb2xlZENsYXNzYCwgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuXG4gKiBJbnN0ZWFkLCB1c2UgYENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKClgLlxuICpcbiAqIEBjbGFzcyBSZWFjdE1vdW50UmVhZHlcbiAqIEBpbXBsZW1lbnRzIFBvb2xlZENsYXNzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gQ2FsbGJhY2tRdWV1ZSgpIHtcbiAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcbiAgdGhpcy5fY29udGV4dHMgPSBudWxsO1xufVxuXG5hc3NpZ24oQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUsIHtcblxuICAvKipcbiAgICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgSW52b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxiYWNrYCB3aXRoLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWU6IGZ1bmN0aW9uIChjYWxsYmFjaywgY29udGV4dCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCBbXTtcbiAgICB0aGlzLl9jb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzIHx8IFtdO1xuICAgIHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICB0aGlzLl9jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGFsbCBlbnF1ZXVlZCBjYWxsYmFja3MgYW5kIGNsZWFycyB0aGUgcXVldWUuIFRoaXMgaXMgaW52b2tlZCBhZnRlclxuICAgKiB0aGUgRE9NIHJlcHJlc2VudGF0aW9uIG9mIGEgY29tcG9uZW50IGhhcyBiZWVuIGNyZWF0ZWQgb3IgdXBkYXRlZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBub3RpZnlBbGw6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzO1xuICAgIHZhciBjb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzO1xuICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNaXNtYXRjaGVkIGxpc3Qgb2YgY29udGV4dHMgaW4gY2FsbGJhY2sgcXVldWUnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAgICAgdGhpcy5fY29udGV4dHMgPSBudWxsO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0pO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG4gICAgICBjb250ZXh0cy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBxdWV1ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZXNldDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fY29udGV4dHMgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuXG59KTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENhbGxiYWNrUXVldWUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbGxiYWNrUXVldWU7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2UTJGc2JHSmhZMnRSZFdWMVpTNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1EyRnNiR0poWTJ0UmRXVjFaVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZCdmIyeGxaRU5zWVhOeklEMGdjbVZ4ZFdseVpTZ25MaTlRYjI5c1pXUkRiR0Z6Y3ljcE8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nUVNCemNHVmphV0ZzYVhwbFpDQndjMlYxWkc4dFpYWmxiblFnYlc5a2RXeGxJSFJ2SUdobGJIQWdhMlZsY0NCMGNtRmpheUJ2WmlCamIyMXdiMjVsYm5SeklIZGhhWFJwYm1jZ2RHOWNiaUFxSUdKbElHNXZkR2xtYVdWa0lIZG9aVzRnZEdobGFYSWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVjeUJoY21VZ1lYWmhhV3hoWW14bElHWnZjaUIxYzJVdVhHNGdLbHh1SUNvZ1ZHaHBjeUJwYlhCc1pXMWxiblJ6SUdCUWIyOXNaV1JEYkdGemMyQXNJSE52SUhsdmRTQnphRzkxYkdRZ2JtVjJaWElnYm1WbFpDQjBieUJwYm5OMFlXNTBhV0YwWlNCMGFHbHpMbHh1SUNvZ1NXNXpkR1ZoWkN3Z2RYTmxJR0JEWVd4c1ltRmphMUYxWlhWbExtZGxkRkJ2YjJ4bFpDZ3BZQzVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdVbVZoWTNSTmIzVnVkRkpsWVdSNVhHNGdLaUJBYVcxd2JHVnRaVzUwY3lCUWIyOXNaV1JEYkdGemMxeHVJQ29nUUdsdWRHVnlibUZzWEc0Z0tpOWNibVoxYm1OMGFXOXVJRU5oYkd4aVlXTnJVWFZsZFdVb0tTQjdYRzRnSUhSb2FYTXVYMk5oYkd4aVlXTnJjeUE5SUc1MWJHdzdYRzRnSUhSb2FYTXVYMk52Ym5SbGVIUnpJRDBnYm5Wc2JEdGNibjFjYmx4dVlYTnphV2R1S0VOaGJHeGlZV05yVVhWbGRXVXVjSEp2ZEc5MGVYQmxMQ0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ1Y1hWbGRXVnpJR0VnWTJGc2JHSmhZMnNnZEc4Z1ltVWdhVzUyYjJ0bFpDQjNhR1Z1SUdCdWIzUnBabmxCYkd4Z0lHbHpJR2x1ZG05clpXUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVsdWRtOXJaV1FnZDJobGJpQmdibTkwYVdaNVFXeHNZQ0JwY3lCcGJuWnZhMlZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJR052Ym5SbGVIUWdRMjl1ZEdWNGRDQjBieUJqWVd4c0lHQmpZV3hzWW1GamEyQWdkMmwwYUM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsT2lCbWRXNWpkR2x2YmlBb1kyRnNiR0poWTJzc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCMGFHbHpMbDlqWVd4c1ltRmphM01nUFNCMGFHbHpMbDlqWVd4c1ltRmphM01nZkh3Z1cxMDdYRzRnSUNBZ2RHaHBjeTVmWTI5dWRHVjRkSE1nUFNCMGFHbHpMbDlqYjI1MFpYaDBjeUI4ZkNCYlhUdGNiaUFnSUNCMGFHbHpMbDlqWVd4c1ltRmphM011Y0hWemFDaGpZV3hzWW1GamF5azdYRzRnSUNBZ2RHaHBjeTVmWTI5dWRHVjRkSE11Y0hWemFDaGpiMjUwWlhoMEtUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxjeUJoYkd3Z1pXNXhkV1YxWldRZ1kyRnNiR0poWTJ0eklHRnVaQ0JqYkdWaGNuTWdkR2hsSUhGMVpYVmxMaUJVYUdseklHbHpJR2x1ZG05clpXUWdZV1owWlhKY2JpQWdJQ29nZEdobElFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJpQnZaaUJoSUdOdmJYQnZibVZ1ZENCb1lYTWdZbVZsYmlCamNtVmhkR1ZrSUc5eUlIVndaR0YwWldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnYm05MGFXWjVRV3hzT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RtRnlJR05oYkd4aVlXTnJjeUE5SUhSb2FYTXVYMk5oYkd4aVlXTnJjenRjYmlBZ0lDQjJZWElnWTI5dWRHVjRkSE1nUFNCMGFHbHpMbDlqYjI1MFpYaDBjenRjYmlBZ0lDQnBaaUFvWTJGc2JHSmhZMnR6S1NCN1hHNGdJQ0FnSUNBaEtHTmhiR3hpWVdOcmN5NXNaVzVuZEdnZ1BUMDlJR052Ym5SbGVIUnpMbXhsYm1kMGFDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblRXbHpiV0YwWTJobFpDQnNhWE4wSUc5bUlHTnZiblJsZUhSeklHbHVJR05oYkd4aVlXTnJJSEYxWlhWbEp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZEdocGN5NWZZMkZzYkdKaFkydHpJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIUm9hWE11WDJOdmJuUmxlSFJ6SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnWTJGc2JHSmhZMnR6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR05oYkd4aVlXTnJjMXRwWFM1allXeHNLR052Ym5SbGVIUnpXMmxkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdOaGJHeGlZV05yY3k1c1pXNW5kR2dnUFNBd08xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEhNdWJHVnVaM1JvSUQwZ01EdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsYzJWMGN5QjBhR1VnYVc1MFpYSnVZV3dnY1hWbGRXVXVYRzRnSUNBcVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2NtVnpaWFE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbDlqWVd4c1ltRmphM01nUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDJOdmJuUmxlSFJ6SUQwZ2JuVnNiRHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1lGQnZiMnhsWkVOc1lYTnpZQ0JzYjI5cmN5Qm1iM0lnZEdocGN5NWNiaUFnSUNvdlhHNGdJR1JsYzNSeWRXTjBiM0k2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbkpsYzJWMEtDazdYRzRnSUgxY2JseHVmU2s3WEc1Y2JsQnZiMnhsWkVOc1lYTnpMbUZrWkZCdmIyeHBibWRVYnloRFlXeHNZbUZqYTFGMVpYVmxLVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCRFlXeHNZbUZqYTFGMVpYVmxPeUpkZlE9PSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBDaGFuZ2VFdmVudFBsdWdpblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1aXJlKCcuL2lzVGV4dElucHV0RWxlbWVudCcpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgY2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DaGFuZ2U6IG51bGwgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNoYW5nZUNhcHR1cmU6IG51bGwgfSlcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogW3RvcExldmVsVHlwZXMudG9wQmx1ciwgdG9wTGV2ZWxUeXBlcy50b3BDaGFuZ2UsIHRvcExldmVsVHlwZXMudG9wQ2xpY2ssIHRvcExldmVsVHlwZXMudG9wRm9jdXMsIHRvcExldmVsVHlwZXMudG9wSW5wdXQsIHRvcExldmVsVHlwZXMudG9wS2V5RG93biwgdG9wTGV2ZWxUeXBlcy50b3BLZXlVcCwgdG9wTGV2ZWxUeXBlcy50b3BTZWxlY3Rpb25DaGFuZ2VdXG4gIH1cbn07XG5cbi8qKlxuICogRm9yIElFIHNoaW1zXG4gKi9cbnZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbnZhciBhY3RpdmVFbGVtZW50SUQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRWYWx1ZSA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBjaGFuZ2VgIGV2ZW50XG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHwgbm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAnZmlsZSc7XG59XG5cbnZhciBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBmYWxzZTtcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gU2VlIGBoYW5kbGVDaGFuZ2VgIGNvbW1lbnQgYmVsb3dcbiAgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gaXNFdmVudFN1cHBvcnRlZCgnY2hhbmdlJykgJiYgKCEoJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDgpO1xufVxuXG5mdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG4gIHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgYWN0aXZlRWxlbWVudElELCBuYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpKTtcbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcblxuICAvLyBJZiBjaGFuZ2UgYW5kIHByb3BlcnR5Y2hhbmdlIGJ1YmJsZWQsIHdlJ2QganVzdCBiaW5kIHRvIGl0IGxpa2UgYWxsIHRoZVxuICAvLyBvdGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28gdGhyb3VnaCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNlIGl0XG4gIC8vIGRvZXNuJ3QsIHdlIG1hbnVhbGx5IGxpc3RlbiBmb3IgdGhlIGV2ZW50cyBhbmQgc28gd2UgaGF2ZSB0byBlbnF1ZXVlIGFuZFxuICAvLyBwcm9jZXNzIHRoZSBhYnN0cmFjdCBldmVudCBtYW51YWxseS5cbiAgLy9cbiAgLy8gQmF0Y2hpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYWxsIGV2ZW50IGhhbmRsZXJzIHJ1blxuICAvLyBiZWZvcmUgdGhlIG5leHQgcmVyZW5kZXIgKGluY2x1ZGluZyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCB0byBhbmNlc3RvclxuICAvLyBlbGVtZW50cyBpbnN0ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJvbGxlZFxuICAvLyBjb21wb25lbnRzIGRvbid0IHdvcmsgcHJvcGVybHkgaW4gY29uanVuY3Rpb24gd2l0aCBldmVudCBidWJibGluZyBiZWNhdXNlXG4gIC8vIHRoZSBjb21wb25lbnQgaXMgcmVyZW5kZXJlZCBhbmQgdGhlIHZhbHVlIHJldmVydGVkIGJlZm9yZSBhbGwgdGhlIGV2ZW50XG4gIC8vIGhhbmRsZXJzIGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcwOC5cbiAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHJ1bkV2ZW50SW5CYXRjaCwgZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBydW5FdmVudEluQmF0Y2goZXZlbnQpIHtcbiAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudCk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SUQpIHtcbiAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudElEID0gdGFyZ2V0SUQ7XG4gIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG59XG5cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCkge1xuICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcbiAgYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gIGFjdGl2ZUVsZW1lbnRJRCA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldElERm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcENoYW5nZSkge1xuICAgIHJldHVybiB0b3BMZXZlbFRhcmdldElEO1xuICB9XG59XG5mdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wRm9jdXMpIHtcbiAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKTtcbiAgfSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wQmx1cikge1xuICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGlucHV0YCBldmVudFxuICovXG52YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFOSBjbGFpbXMgdG8gc3VwcG9ydCB0aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRvIHRyaWdnZXIgaXQgd2hlblxuICAvLyBkZWxldGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50c1xuICBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1dCcpICYmICghKCdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA5KTtcbn1cblxuLyoqXG4gKiAoRm9yIG9sZCBJRS4pIFJlcGxhY2VtZW50IGdldHRlci9zZXR0ZXIgZm9yIHRoZSBgdmFsdWVgIHByb3BlcnR5IHRoYXQgZ2V0c1xuICogc2V0IG9uIHRoZSBhY3RpdmUgZWxlbWVudC5cbiAqL1xudmFyIG5ld1ZhbHVlUHJvcCA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRWYWx1ZVByb3AuZ2V0LmNhbGwodGhpcyk7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbCkge1xuICAgIC8vIENhc3QgdG8gYSBzdHJpbmcgc28gd2UgY2FuIGRvIGVxdWFsaXR5IGNoZWNrcy5cbiAgICBhY3RpdmVFbGVtZW50VmFsdWUgPSAnJyArIHZhbDtcbiAgICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wLnNldC5jYWxsKHRoaXMsIHZhbCk7XG4gIH1cbn07XG5cbi8qKlxuICogKEZvciBvbGQgSUUuKSBTdGFydHMgdHJhY2tpbmcgcHJvcGVydHljaGFuZ2UgZXZlbnRzIG9uIHRoZSBwYXNzZWQtaW4gZWxlbWVudFxuICogYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBmcm9tXG4gKiB2YWx1ZSBjaGFuZ2VzIGluIEpTLlxuICovXG5mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJRCkge1xuICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xuICBhY3RpdmVFbGVtZW50SUQgPSB0YXJnZXRJRDtcbiAgYWN0aXZlRWxlbWVudFZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuICBhY3RpdmVFbGVtZW50VmFsdWVQcm9wID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQuY29uc3RydWN0b3IucHJvdG90eXBlLCAndmFsdWUnKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbmV3VmFsdWVQcm9wKTtcbiAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTtcbn1cblxuLyoqXG4gKiAoRm9yIG9sZCBJRS4pIFJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBjdXJyZW50bHktdHJhY2tlZCBlbGVtZW50LFxuICogaWYgYW55IGV4aXN0cy5cbiAqL1xuZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGRlbGV0ZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgcHJvcGVydHkgZGVmaW5pdGlvblxuICBkZWxldGUgYWN0aXZlRWxlbWVudC52YWx1ZTtcbiAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTtcblxuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudElEID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudFZhbHVlID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudFZhbHVlUHJvcCA9IG51bGw7XG59XG5cbi8qKlxuICogKEZvciBvbGQgSUUuKSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2UgZXZlbnQsIHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZlxuICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hhbmdlZC5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDaGFuZ2UobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgdmFsdWUgPSBuYXRpdmVFdmVudC5zcmNFbGVtZW50LnZhbHVlO1xuICBpZiAodmFsdWUgPT09IGFjdGl2ZUVsZW1lbnRWYWx1ZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhY3RpdmVFbGVtZW50VmFsdWUgPSB2YWx1ZTtcblxuICBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KTtcbn1cblxuLyoqXG4gKiBJZiBhIGBjaGFuZ2VgIGV2ZW50IHNob3VsZCBiZSBmaXJlZCwgcmV0dXJucyB0aGUgdGFyZ2V0J3MgSUQuXG4gKi9cbmZ1bmN0aW9uIGdldFRhcmdldElERm9ySW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wSW5wdXQpIHtcbiAgICAvLyBJbiBtb2Rlcm4gYnJvd3NlcnMgKGkuZS4sIG5vdCBJRTggb3IgSUU5KSwgdGhlIGlucHV0IGV2ZW50IGlzIGV4YWN0bHlcbiAgICAvLyB3aGF0IHdlIHdhbnQgc28gZmFsbCB0aHJvdWdoIGhlcmUgYW5kIHRyaWdnZXIgYW4gYWJzdHJhY3QgZXZlbnRcbiAgICByZXR1cm4gdG9wTGV2ZWxUYXJnZXRJRDtcbiAgfVxufVxuXG4vLyBGb3IgSUU4IGFuZCBJRTkuXG5mdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50SUUodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcEZvY3VzKSB7XG4gICAgLy8gSW4gSUU4LCB3ZSBjYW4gY2FwdHVyZSBhbG1vc3QgYWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhXG4gICAgLy8gcHJvcGVydHljaGFuZ2UgaGFuZGxlciBhbmQgbG9va2luZyBmb3IgZXZlbnRzIHdpdGggcHJvcGVydHlOYW1lXG4gICAgLy8gZXF1YWwgdG8gJ3ZhbHVlJ1xuICAgIC8vIEluIElFOSwgcHJvcGVydHljaGFuZ2UgZmlyZXMgZm9yIG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBidWdneSBhbmRcbiAgICAvLyBkb2Vzbid0IGZpcmUgd2hlbiB0ZXh0IGlzIGRlbGV0ZWQsIGJ1dCBjb252ZW5pZW50bHksIHNlbGVjdGlvbmNoYW5nZVxuICAgIC8vIGFwcGVhcnMgdG8gZmlyZSBpbiBhbGwgb2YgdGhlIHJlbWFpbmluZyBjYXNlcyBzbyB3ZSBjYXRjaCB0aG9zZSBhbmRcbiAgICAvLyBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICAvLyBJbiBlaXRoZXIgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSBldmVudCBoYW5kbGVyIGlmIHRoZSB2YWx1ZVxuICAgIC8vIGlzIGNoYW5nZWQgZnJvbSBKUyBzbyB3ZSByZWRlZmluZSBhIHNldHRlciBmb3IgYC52YWx1ZWAgdGhhdCB1cGRhdGVzXG4gICAgLy8gb3VyIGFjdGl2ZUVsZW1lbnRWYWx1ZSB2YXJpYWJsZSwgYWxsb3dpbmcgdXMgdG8gaWdub3JlIHRob3NlIGNoYW5nZXNcbiAgICAvL1xuICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2VcbiAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50IHNvbWVob3cuXG4gICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtcbiAgICBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpO1xuICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BCbHVyKSB7XG4gICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtcbiAgfVxufVxuXG4vLyBGb3IgSUU4IGFuZCBJRTkuXG5mdW5jdGlvbiBnZXRUYXJnZXRJREZvcklucHV0RXZlbnRJRSh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElEKSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wU2VsZWN0aW9uQ2hhbmdlIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BLZXlVcCB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wS2V5RG93bikge1xuICAgIC8vIE9uIHRoZSBzZWxlY3Rpb25jaGFuZ2UgZXZlbnQsIHRoZSB0YXJnZXQgaXMganVzdCBkb2N1bWVudCB3aGljaCBpc24ndFxuICAgIC8vIGhlbHBmdWwgZm9yIHVzIHNvIGp1c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFkLlxuICAgIC8vXG4gICAgLy8gOTklIG9mIHRoZSB0aW1lLCBrZXlkb3duIGFuZCBrZXl1cCBhcmVuJ3QgbmVjZXNzYXJ5LiBJRTggZmFpbHMgdG8gZmlyZVxuICAgIC8vIHByb3BlcnR5Y2hhbmdlIG9uIHRoZSBmaXJzdCBpbnB1dCBldmVudCBhZnRlciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBhXG4gICAgLy8gc2NyaXB0IGFuZCBmaXJlcyBvbmx5IGtleWRvd24sIGtleXByZXNzLCBrZXl1cC4gQ2F0Y2hpbmcga2V5dXAgdXN1YWxseVxuICAgIC8vIGdldHMgaXQgYW5kIGNhdGNoaW5nIGtleWRvd24gbGV0cyB1cyBmaXJlIGFuIGV2ZW50IGZvciB0aGUgZmlyc3RcbiAgICAvLyBrZXlzdHJva2UgaWYgdXNlciBkb2VzIGEga2V5IHJlcGVhdCAoaXQnbGwgYmUgYSBsaXR0bGUgZGVsYXllZDogcmlnaHRcbiAgICAvLyBiZWZvcmUgdGhlIHNlY29uZCBrZXlzdHJva2UpLiBPdGhlciBpbnB1dCBtZXRob2RzIChlLmcuLCBwYXN0ZSkgc2VlbSB0b1xuICAgIC8vIGZpcmUgc2VsZWN0aW9uY2hhbmdlIG5vcm1hbGx5LlxuICAgIGlmIChhY3RpdmVFbGVtZW50ICYmIGFjdGl2ZUVsZW1lbnQudmFsdWUgIT09IGFjdGl2ZUVsZW1lbnRWYWx1ZSkge1xuICAgICAgYWN0aXZlRWxlbWVudFZhbHVlID0gYWN0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50SUQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBjbGlja2AgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNlQ2xpY2tFdmVudChlbGVtKSB7XG4gIC8vIFVzZSB0aGUgYGNsaWNrYCBldmVudCB0byBkZXRlY3QgY2hhbmdlcyB0byBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRzLlxuICAvLyBUaGlzIGFwcHJvYWNoIHdvcmtzIGFjcm9zcyBhbGwgYnJvd3NlcnMsIHdoZXJlYXMgYGNoYW5nZWAgZG9lcyBub3QgZmlyZVxuICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LlxuICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRpbycpO1xufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJREZvckNsaWNrRXZlbnQodG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcENsaWNrKSB7XG4gICAgcmV0dXJuIHRvcExldmVsVGFyZ2V0SUQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvbkNoYW5nZWAgZXZlbnQgdGhhdCBub3JtYWxpemVzIGNoYW5nZSBldmVudHNcbiAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLiBUaGlzIGV2ZW50IGZpcmVzIGF0IGEgdGltZSB3aGVuIGl0J3MgcG9zc2libGUgdG9cbiAqIGNoYW5nZSB0aGUgZWxlbWVudCdzIHZhbHVlIHdpdGhvdXQgc2VlaW5nIGEgZmxpY2tlci5cbiAqXG4gKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOlxuICogLSBpbnB1dCAoc2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKVxuICogLSB0ZXh0YXJlYVxuICogLSBzZWxlY3RcbiAqL1xudmFyIENoYW5nZUV2ZW50UGx1Z2luID0ge1xuXG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdG9wTGV2ZWxUYXJnZXQgVGhlIGxpc3RlbmluZyBjb21wb25lbnQgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUYXJnZXRJRCBJRCBvZiBgdG9wTGV2ZWxUYXJnZXRgLlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzfVxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXG4gICAgdmFyIGdldFRhcmdldElERnVuYywgaGFuZGxlRXZlbnRGdW5jO1xuICAgIGlmIChzaG91bGRVc2VDaGFuZ2VFdmVudCh0b3BMZXZlbFRhcmdldCkpIHtcbiAgICAgIGlmIChkb2VzQ2hhbmdlRXZlbnRCdWJibGUpIHtcbiAgICAgICAgZ2V0VGFyZ2V0SURGdW5jID0gZ2V0VGFyZ2V0SURGb3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRvcExldmVsVGFyZ2V0KSkge1xuICAgICAgaWYgKGlzSW5wdXRFdmVudFN1cHBvcnRlZCkge1xuICAgICAgICBnZXRUYXJnZXRJREZ1bmMgPSBnZXRUYXJnZXRJREZvcklucHV0RXZlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRUYXJnZXRJREZ1bmMgPSBnZXRUYXJnZXRJREZvcklucHV0RXZlbnRJRTtcbiAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudElFO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0b3BMZXZlbFRhcmdldCkpIHtcbiAgICAgIGdldFRhcmdldElERnVuYyA9IGdldFRhcmdldElERm9yQ2xpY2tFdmVudDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VGFyZ2V0SURGdW5jKSB7XG4gICAgICB2YXIgdGFyZ2V0SUQgPSBnZXRUYXJnZXRJREZ1bmModG9wTGV2ZWxUeXBlLCB0b3BMZXZlbFRhcmdldCwgdG9wTGV2ZWxUYXJnZXRJRCk7XG4gICAgICBpZiAodGFyZ2V0SUQpIHtcbiAgICAgICAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuY2hhbmdlLCB0YXJnZXRJRCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgZXZlbnQudHlwZSA9ICdjaGFuZ2UnO1xuICAgICAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZUV2ZW50RnVuYykge1xuICAgICAgaGFuZGxlRXZlbnRGdW5jKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQpO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENoYW5nZUV2ZW50UGx1Z2luOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRE9NQ2hpbGRyZW5PcGVyYXRpb25zXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERhbmdlciA9IHJlcXVpcmUoJy4vRGFuZ2VyJyk7XG52YXIgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcblxudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3NldFRleHRDb250ZW50Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW5zZXJ0cyBgY2hpbGROb2RlYCBhcyBhIGNoaWxkIG9mIGBwYXJlbnROb2RlYCBhdCB0aGUgYGluZGV4YC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHBhcmVudE5vZGUgUGFyZW50IG5vZGUgaW4gd2hpY2ggdG8gaW5zZXJ0LlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjaGlsZE5vZGUgQ2hpbGQgbm9kZSB0byBpbnNlcnQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgaW5kZXgpIHtcbiAgLy8gQnkgZXhwbG9pdGluZyBhcnJheXMgcmV0dXJuaW5nIGB1bmRlZmluZWRgIGZvciBhbiB1bmRlZmluZWQgaW5kZXgsIHdlIGNhblxuICAvLyByZWx5IGV4Y2x1c2l2ZWx5IG9uIGBpbnNlcnRCZWZvcmUobm9kZSwgbnVsbClgIGluc3RlYWQgb2YgYWxzbyB1c2luZ1xuICAvLyBgYXBwZW5kQ2hpbGQobm9kZSlgLiBIb3dldmVyLCB1c2luZyBgdW5kZWZpbmVkYCBpcyBub3QgYWxsb3dlZCBieSBhbGxcbiAgLy8gYnJvd3NlcnMgc28gd2UgbXVzdCByZXBsYWNlIGl0IHdpdGggYG51bGxgLlxuXG4gIC8vIGZpeCByZW5kZXIgb3JkZXIgZXJyb3IgaW4gc2FmYXJpXG4gIC8vIElFOCB3aWxsIHRocm93IGVycm9yIHdoZW4gaW5kZXggb3V0IG9mIGxpc3Qgc2l6ZS5cbiAgdmFyIGJlZm9yZUNoaWxkID0gaW5kZXggPj0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA/IG51bGwgOiBwYXJlbnROb2RlLmNoaWxkTm9kZXMuaXRlbShpbmRleCk7XG5cbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGROb2RlLCBiZWZvcmVDaGlsZCk7XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRyZW4uXG4gKi9cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7XG5cbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxcblxuICB1cGRhdGVUZXh0Q29udGVudDogc2V0VGV4dENvbnRlbnQsXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuIFRoZVxuICAgKiB1cGRhdGUgY29uZmlndXJhdGlvbnMgYXJlIGVhY2ggZXhwZWN0ZWQgdG8gaGF2ZSBhIGBwYXJlbnROb2RlYCBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge2FycmF5PHN0cmluZz59IG1hcmt1cExpc3QgTGlzdCBvZiBtYXJrdXAgc3RyaW5ncy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzVXBkYXRlczogZnVuY3Rpb24gKHVwZGF0ZXMsIG1hcmt1cExpc3QpIHtcbiAgICB2YXIgdXBkYXRlO1xuICAgIC8vIE1hcHBpbmcgZnJvbSBwYXJlbnQgSURzIHRvIGluaXRpYWwgY2hpbGQgb3JkZXJpbmdzLlxuICAgIHZhciBpbml0aWFsQ2hpbGRyZW4gPSBudWxsO1xuICAgIC8vIExpc3Qgb2YgY2hpbGRyZW4gdGhhdCB3aWxsIGJlIG1vdmVkIG9yIHJlbW92ZWQuXG4gICAgdmFyIHVwZGF0ZWRDaGlsZHJlbiA9IG51bGw7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVwZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHVwZGF0ZSA9IHVwZGF0ZXNbaV07XG4gICAgICBpZiAodXBkYXRlLnR5cGUgPT09IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLk1PVkVfRVhJU1RJTkcgfHwgdXBkYXRlLnR5cGUgPT09IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlJFTU9WRV9OT0RFKSB7XG4gICAgICAgIHZhciB1cGRhdGVkSW5kZXggPSB1cGRhdGUuZnJvbUluZGV4O1xuICAgICAgICB2YXIgdXBkYXRlZENoaWxkID0gdXBkYXRlLnBhcmVudE5vZGUuY2hpbGROb2Rlc1t1cGRhdGVkSW5kZXhdO1xuICAgICAgICB2YXIgcGFyZW50SUQgPSB1cGRhdGUucGFyZW50SUQ7XG5cbiAgICAgICAgIXVwZGF0ZWRDaGlsZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwcm9jZXNzVXBkYXRlcygpOiBVbmFibGUgdG8gZmluZCBjaGlsZCAlcyBvZiBlbGVtZW50LiBUaGlzICcgKyAncHJvYmFibHkgbWVhbnMgdGhlIERPTSB3YXMgdW5leHBlY3RlZGx5IG11dGF0ZWQgKGUuZy4sIGJ5IHRoZSAnICsgJ2Jyb3dzZXIpLCB1c3VhbGx5IGR1ZSB0byBmb3JnZXR0aW5nIGEgPHRib2R5PiB3aGVuIHVzaW5nIHRhYmxlcywgJyArICduZXN0aW5nIHRhZ3MgbGlrZSA8Zm9ybT4sIDxwPiwgb3IgPGE+LCBvciB1c2luZyBub24tU1ZHIGVsZW1lbnRzICcgKyAnaW4gYW4gPHN2Zz4gcGFyZW50LiBUcnkgaW5zcGVjdGluZyB0aGUgY2hpbGQgbm9kZXMgb2YgdGhlIGVsZW1lbnQgJyArICd3aXRoIFJlYWN0IElEIGAlc2AuJywgdXBkYXRlZEluZGV4LCBwYXJlbnRJRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGluaXRpYWxDaGlsZHJlbiA9IGluaXRpYWxDaGlsZHJlbiB8fCB7fTtcbiAgICAgICAgaW5pdGlhbENoaWxkcmVuW3BhcmVudElEXSA9IGluaXRpYWxDaGlsZHJlbltwYXJlbnRJRF0gfHwgW107XG4gICAgICAgIGluaXRpYWxDaGlsZHJlbltwYXJlbnRJRF1bdXBkYXRlZEluZGV4XSA9IHVwZGF0ZWRDaGlsZDtcblxuICAgICAgICB1cGRhdGVkQ2hpbGRyZW4gPSB1cGRhdGVkQ2hpbGRyZW4gfHwgW107XG4gICAgICAgIHVwZGF0ZWRDaGlsZHJlbi5wdXNoKHVwZGF0ZWRDaGlsZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlbmRlcmVkTWFya3VwO1xuICAgIC8vIG1hcmt1cExpc3QgaXMgZWl0aGVyIGEgbGlzdCBvZiBtYXJrdXAgb3IganVzdCBhIGxpc3Qgb2YgZWxlbWVudHNcbiAgICBpZiAobWFya3VwTGlzdC5sZW5ndGggJiYgdHlwZW9mIG1hcmt1cExpc3RbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZW5kZXJlZE1hcmt1cCA9IERhbmdlci5kYW5nZXJvdXNseVJlbmRlck1hcmt1cChtYXJrdXBMaXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVyZWRNYXJrdXAgPSBtYXJrdXBMaXN0O1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB1cGRhdGVkIGNoaWxkcmVuIGZpcnN0IHNvIHRoYXQgYHRvSW5kZXhgIGlzIGNvbnNpc3RlbnQuXG4gICAgaWYgKHVwZGF0ZWRDaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB1cGRhdGVkQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdXBkYXRlZENoaWxkcmVuW2pdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodXBkYXRlZENoaWxkcmVuW2pdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IHVwZGF0ZXMubGVuZ3RoOyBrKyspIHtcbiAgICAgIHVwZGF0ZSA9IHVwZGF0ZXNba107XG4gICAgICBzd2l0Y2ggKHVwZGF0ZS50eXBlKSB7XG4gICAgICAgIGNhc2UgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuSU5TRVJUX01BUktVUDpcbiAgICAgICAgICBpbnNlcnRDaGlsZEF0KHVwZGF0ZS5wYXJlbnROb2RlLCByZW5kZXJlZE1hcmt1cFt1cGRhdGUubWFya3VwSW5kZXhdLCB1cGRhdGUudG9JbmRleCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuTU9WRV9FWElTVElORzpcbiAgICAgICAgICBpbnNlcnRDaGlsZEF0KHVwZGF0ZS5wYXJlbnROb2RlLCBpbml0aWFsQ2hpbGRyZW5bdXBkYXRlLnBhcmVudElEXVt1cGRhdGUuZnJvbUluZGV4XSwgdXBkYXRlLnRvSW5kZXgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlNFVF9NQVJLVVA6XG4gICAgICAgICAgc2V0SW5uZXJIVE1MKHVwZGF0ZS5wYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuVEVYVF9DT05URU5UOlxuICAgICAgICAgIHNldFRleHRDb250ZW50KHVwZGF0ZS5wYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuUkVNT1ZFX05PREU6XG4gICAgICAgICAgLy8gQWxyZWFkeSByZW1vdmVkIGJ5IHRoZSBmb3ItbG9vcCBhYm92ZS5cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKERPTUNoaWxkcmVuT3BlcmF0aW9ucywgJ0RPTUNoaWxkcmVuT3BlcmF0aW9ucycsIHtcbiAgdXBkYXRlVGV4dENvbnRlbnQ6ICd1cGRhdGVUZXh0Q29udGVudCdcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9ucztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZSRTlOUTJocGJHUnlaVzVQY0dWeVlYUnBiMjV6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5OY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdSR0Z1WjJWeUlEMGdjbVZ4ZFdseVpTZ25MaTlFWVc1blpYSW5LVHRjYm5aaGNpQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk5kV3gwYVVOb2FXeGtWWEJrWVhSbFZIbHdaWE1uS1R0Y2JuWmhjaUJTWldGamRGQmxjbVlnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUdWeVppY3BPMXh1WEc1MllYSWdjMlYwU1c1dVpYSklWRTFNSUQwZ2NtVnhkV2x5WlNnbkxpOXpaWFJKYm01bGNraFVUVXduS1R0Y2JuWmhjaUJ6WlhSVVpYaDBRMjl1ZEdWdWRDQTlJSEpsY1hWcGNtVW9KeTR2YzJWMFZHVjRkRU52Ym5SbGJuUW5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVMeW9xWEc0Z0tpQkpibk5sY25SeklHQmphR2xzWkU1dlpHVmdJR0Z6SUdFZ1kyaHBiR1FnYjJZZ1lIQmhjbVZ1ZEU1dlpHVmdJR0YwSUhSb1pTQmdhVzVrWlhoZ0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdjR0Z5Wlc1MFRtOWtaU0JRWVhKbGJuUWdibTlrWlNCcGJpQjNhR2xqYUNCMGJ5QnBibk5sY25RdVhHNGdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUdOb2FXeGtUbTlrWlNCRGFHbHNaQ0J1YjJSbElIUnZJR2x1YzJWeWRDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JwYm1SbGVDQkpibVJsZUNCaGRDQjNhR2xqYUNCMGJ5QnBibk5sY25RZ2RHaGxJR05vYVd4a0xseHVJQ29nUUdsdWRHVnlibUZzWEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x1YzJWeWRFTm9hV3hrUVhRb2NHRnlaVzUwVG05a1pTd2dZMmhwYkdST2IyUmxMQ0JwYm1SbGVDa2dlMXh1SUNBdkx5QkNlU0JsZUhCc2IybDBhVzVuSUdGeWNtRjVjeUJ5WlhSMWNtNXBibWNnWUhWdVpHVm1hVzVsWkdBZ1ptOXlJR0Z1SUhWdVpHVm1hVzVsWkNCcGJtUmxlQ3dnZDJVZ1kyRnVYRzRnSUM4dklISmxiSGtnWlhoamJIVnphWFpsYkhrZ2IyNGdZR2x1YzJWeWRFSmxabTl5WlNodWIyUmxMQ0J1ZFd4c0tXQWdhVzV6ZEdWaFpDQnZaaUJoYkhOdklIVnphVzVuWEc0Z0lDOHZJR0JoY0hCbGJtUkRhR2xzWkNodWIyUmxLV0F1SUVodmQyVjJaWElzSUhWemFXNW5JR0IxYm1SbFptbHVaV1JnSUdseklHNXZkQ0JoYkd4dmQyVmtJR0o1SUdGc2JGeHVJQ0F2THlCaWNtOTNjMlZ5Y3lCemJ5QjNaU0J0ZFhOMElISmxjR3hoWTJVZ2FYUWdkMmwwYUNCZ2JuVnNiR0F1WEc1Y2JpQWdMeThnWm1sNElISmxibVJsY2lCdmNtUmxjaUJsY25KdmNpQnBiaUJ6WVdaaGNtbGNiaUFnTHk4Z1NVVTRJSGRwYkd3Z2RHaHliM2NnWlhKeWIzSWdkMmhsYmlCcGJtUmxlQ0J2ZFhRZ2IyWWdiR2x6ZENCemFYcGxMbHh1SUNCMllYSWdZbVZtYjNKbFEyaHBiR1FnUFNCcGJtUmxlQ0ErUFNCd1lYSmxiblJPYjJSbExtTm9hV3hrVG05a1pYTXViR1Z1WjNSb0lEOGdiblZzYkNBNklIQmhjbVZ1ZEU1dlpHVXVZMmhwYkdST2IyUmxjeTVwZEdWdEtHbHVaR1Y0S1R0Y2JseHVJQ0J3WVhKbGJuUk9iMlJsTG1sdWMyVnlkRUpsWm05eVpTaGphR2xzWkU1dlpHVXNJR0psWm05eVpVTm9hV3hrS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJQY0dWeVlYUnBiMjV6SUdadmNpQjFjR1JoZEdsdVp5QjNhWFJvSUVSUFRTQmphR2xzWkhKbGJpNWNiaUFxTDF4dWRtRnlJRVJQVFVOb2FXeGtjbVZ1VDNCbGNtRjBhVzl1Y3lBOUlIdGNibHh1SUNCa1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRG9nUkdGdVoyVnlMbVJoYm1kbGNtOTFjMng1VW1Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd0xGeHVYRzRnSUhWd1pHRjBaVlJsZUhSRGIyNTBaVzUwT2lCelpYUlVaWGgwUTI5dWRHVnVkQ3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWWEJrWVhSbGN5QmhJR052YlhCdmJtVnVkQ2R6SUdOb2FXeGtjbVZ1SUdKNUlIQnliMk5sYzNOcGJtY2dZU0J6WlhKcFpYTWdiMllnZFhCa1lYUmxjeTRnVkdobFhHNGdJQ0FxSUhWd1pHRjBaU0JqYjI1bWFXZDFjbUYwYVc5dWN5QmhjbVVnWldGamFDQmxlSEJsWTNSbFpDQjBieUJvWVhabElHRWdZSEJoY21WdWRFNXZaR1ZnSUhCeWIzQmxjblI1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyRnljbUY1UEc5aWFtVmpkRDU5SUhWd1pHRjBaWE1nVEdsemRDQnZaaUIxY0dSaGRHVWdZMjl1Wm1sbmRYSmhkR2x2Ym5NdVhHNGdJQ0FxSUVCd1lYSmhiU0I3WVhKeVlYazhjM1J5YVc1blBuMGdiV0Z5YTNWd1RHbHpkQ0JNYVhOMElHOW1JRzFoY210MWNDQnpkSEpwYm1kekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lIQnliMk5sYzNOVmNHUmhkR1Z6T2lCbWRXNWpkR2x2YmlBb2RYQmtZWFJsY3l3Z2JXRnlhM1Z3VEdsemRDa2dlMXh1SUNBZ0lIWmhjaUIxY0dSaGRHVTdYRzRnSUNBZ0x5OGdUV0Z3Y0dsdVp5Qm1jbTl0SUhCaGNtVnVkQ0JKUkhNZ2RHOGdhVzVwZEdsaGJDQmphR2xzWkNCdmNtUmxjbWx1WjNNdVhHNGdJQ0FnZG1GeUlHbHVhWFJwWVd4RGFHbHNaSEpsYmlBOUlHNTFiR3c3WEc0Z0lDQWdMeThnVEdsemRDQnZaaUJqYUdsc1pISmxiaUIwYUdGMElIZHBiR3dnWW1VZ2JXOTJaV1FnYjNJZ2NtVnRiM1psWkM1Y2JpQWdJQ0IyWVhJZ2RYQmtZWFJsWkVOb2FXeGtjbVZ1SUQwZ2JuVnNiRHRjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnZFhCa1lYUmxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RYQmtZWFJsSUQwZ2RYQmtZWFJsYzF0cFhUdGNiaUFnSUNBZ0lHbG1JQ2gxY0dSaGRHVXVkSGx3WlNBOVBUMGdVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTXVUVTlXUlY5RldFbFRWRWxPUnlCOGZDQjFjR1JoZEdVdWRIbHdaU0E5UFQwZ1VtVmhZM1JOZFd4MGFVTm9hV3hrVlhCa1lYUmxWSGx3WlhNdVVrVk5UMVpGWDA1UFJFVXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIVndaR0YwWldSSmJtUmxlQ0E5SUhWd1pHRjBaUzVtY205dFNXNWtaWGc3WEc0Z0lDQWdJQ0FnSUhaaGNpQjFjR1JoZEdWa1EyaHBiR1FnUFNCMWNHUmhkR1V1Y0dGeVpXNTBUbTlrWlM1amFHbHNaRTV2WkdWelczVndaR0YwWldSSmJtUmxlRjA3WEc0Z0lDQWdJQ0FnSUhaaGNpQndZWEpsYm5SSlJDQTlJSFZ3WkdGMFpTNXdZWEpsYm5SSlJEdGNibHh1SUNBZ0lDQWdJQ0FoZFhCa1lYUmxaRU5vYVd4a0lEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNCeWIyTmxjM05WY0dSaGRHVnpLQ2s2SUZWdVlXSnNaU0IwYnlCbWFXNWtJR05vYVd4a0lDVnpJRzltSUdWc1pXMWxiblF1SUZSb2FYTWdKeUFySUNkd2NtOWlZV0pzZVNCdFpXRnVjeUIwYUdVZ1JFOU5JSGRoY3lCMWJtVjRjR1ZqZEdWa2JIa2diWFYwWVhSbFpDQW9aUzVuTGl3Z1lua2dkR2hsSUNjZ0t5QW5Zbkp2ZDNObGNpa3NJSFZ6ZFdGc2JIa2daSFZsSUhSdklHWnZjbWRsZEhScGJtY2dZU0E4ZEdKdlpIaytJSGRvWlc0Z2RYTnBibWNnZEdGaWJHVnpMQ0FuSUNzZ0oyNWxjM1JwYm1jZ2RHRm5jeUJzYVd0bElEeG1iM0p0UGl3Z1BIQStMQ0J2Y2lBOFlUNHNJRzl5SUhWemFXNW5JRzV2YmkxVFZrY2daV3hsYldWdWRITWdKeUFySUNkcGJpQmhiaUE4YzNablBpQndZWEpsYm5RdUlGUnllU0JwYm5Od1pXTjBhVzVuSUhSb1pTQmphR2xzWkNCdWIyUmxjeUJ2WmlCMGFHVWdaV3hsYldWdWRDQW5JQ3NnSjNkcGRHZ2dVbVZoWTNRZ1NVUWdZQ1Z6WUM0bkxDQjFjR1JoZEdWa1NXNWtaWGdzSUhCaGNtVnVkRWxFS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJQ0FnYVc1cGRHbGhiRU5vYVd4a2NtVnVJRDBnYVc1cGRHbGhiRU5vYVd4a2NtVnVJSHg4SUh0OU8xeHVJQ0FnSUNBZ0lDQnBibWwwYVdGc1EyaHBiR1J5Wlc1YmNHRnlaVzUwU1VSZElEMGdhVzVwZEdsaGJFTm9hV3hrY21WdVczQmhjbVZ1ZEVsRVhTQjhmQ0JiWFR0Y2JpQWdJQ0FnSUNBZ2FXNXBkR2xoYkVOb2FXeGtjbVZ1VzNCaGNtVnVkRWxFWFZ0MWNHUmhkR1ZrU1c1a1pYaGRJRDBnZFhCa1lYUmxaRU5vYVd4a08xeHVYRzRnSUNBZ0lDQWdJSFZ3WkdGMFpXUkRhR2xzWkhKbGJpQTlJSFZ3WkdGMFpXUkRhR2xzWkhKbGJpQjhmQ0JiWFR0Y2JpQWdJQ0FnSUNBZ2RYQmtZWFJsWkVOb2FXeGtjbVZ1TG5CMWMyZ29kWEJrWVhSbFpFTm9hV3hrS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2NtVnVaR1Z5WldSTllYSnJkWEE3WEc0Z0lDQWdMeThnYldGeWEzVndUR2x6ZENCcGN5QmxhWFJvWlhJZ1lTQnNhWE4wSUc5bUlHMWhjbXQxY0NCdmNpQnFkWE4wSUdFZ2JHbHpkQ0J2WmlCbGJHVnRaVzUwYzF4dUlDQWdJR2xtSUNodFlYSnJkWEJNYVhOMExteGxibWQwYUNBbUppQjBlWEJsYjJZZ2JXRnlhM1Z3VEdsemRGc3dYU0E5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNBZ0lISmxibVJsY21Wa1RXRnlhM1Z3SUQwZ1JHRnVaMlZ5TG1SaGJtZGxjbTkxYzJ4NVVtVnVaR1Z5VFdGeWEzVndLRzFoY210MWNFeHBjM1FwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaVzVrWlhKbFpFMWhjbXQxY0NBOUlHMWhjbXQxY0V4cGMzUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdVbVZ0YjNabElIVndaR0YwWldRZ1kyaHBiR1J5Wlc0Z1ptbHljM1FnYzI4Z2RHaGhkQ0JnZEc5SmJtUmxlR0FnYVhNZ1kyOXVjMmx6ZEdWdWRDNWNiaUFnSUNCcFppQW9kWEJrWVhSbFpFTm9hV3hrY21WdUtTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnFJRDBnTURzZ2FpQThJSFZ3WkdGMFpXUkRhR2xzWkhKbGJpNXNaVzVuZEdnN0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNCMWNHUmhkR1ZrUTJocGJHUnlaVzViYWwwdWNHRnlaVzUwVG05a1pTNXlaVzF2ZG1WRGFHbHNaQ2gxY0dSaGRHVmtRMmhwYkdSeVpXNWJhbDBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJR3NnUFNBd095QnJJRHdnZFhCa1lYUmxjeTVzWlc1bmRHZzdJR3NyS3lrZ2UxeHVJQ0FnSUNBZ2RYQmtZWFJsSUQwZ2RYQmtZWFJsYzF0clhUdGNiaUFnSUNBZ0lITjNhWFJqYUNBb2RYQmtZWFJsTG5SNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnWTJGelpTQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NUpUbE5GVWxSZlRVRlNTMVZRT2x4dUlDQWdJQ0FnSUNBZ0lHbHVjMlZ5ZEVOb2FXeGtRWFFvZFhCa1lYUmxMbkJoY21WdWRFNXZaR1VzSUhKbGJtUmxjbVZrVFdGeWEzVndXM1Z3WkdGMFpTNXRZWEpyZFhCSmJtUmxlRjBzSUhWd1pHRjBaUzUwYjBsdVpHVjRLVHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWTJGelpTQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NU5UMVpGWDBWWVNWTlVTVTVIT2x4dUlDQWdJQ0FnSUNBZ0lHbHVjMlZ5ZEVOb2FXeGtRWFFvZFhCa1lYUmxMbkJoY21WdWRFNXZaR1VzSUdsdWFYUnBZV3hEYUdsc1pISmxibHQxY0dSaGRHVXVjR0Z5Wlc1MFNVUmRXM1Z3WkdGMFpTNW1jbTl0U1c1a1pYaGRMQ0IxY0dSaGRHVXVkRzlKYm1SbGVDazdYRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJR05oYzJVZ1VtVmhZM1JOZFd4MGFVTm9hV3hrVlhCa1lYUmxWSGx3WlhNdVUwVlVYMDFCVWt0VlVEcGNiaUFnSUNBZ0lDQWdJQ0J6WlhSSmJtNWxja2hVVFV3b2RYQmtZWFJsTG5CaGNtVnVkRTV2WkdVc0lIVndaR0YwWlM1amIyNTBaVzUwS1R0Y2JpQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVVUlZoVVgwTlBUbFJGVGxRNlhHNGdJQ0FnSUNBZ0lDQWdjMlYwVkdWNGRFTnZiblJsYm5Rb2RYQmtZWFJsTG5CaGNtVnVkRTV2WkdVc0lIVndaR0YwWlM1amIyNTBaVzUwS1R0Y2JpQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JTWldGamRFMTFiSFJwUTJocGJHUlZjR1JoZEdWVWVYQmxjeTVTUlUxUFZrVmZUazlFUlRwY2JpQWdJQ0FnSUNBZ0lDQXZMeUJCYkhKbFlXUjVJSEpsYlc5MlpXUWdZbmtnZEdobElHWnZjaTFzYjI5d0lHRmliM1psTGx4dUlDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzU5TzF4dVhHNVNaV0ZqZEZCbGNtWXViV1ZoYzNWeVpVMWxkR2h2WkhNb1JFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpMQ0FuUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1ekp5d2dlMXh1SUNCMWNHUmhkR1ZVWlhoMFEyOXVkR1Z1ZERvZ0ozVndaR0YwWlZSbGVIUkRiMjUwWlc1MEoxeHVmU2s3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1JFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRE9NUHJvcGVydHlcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbmZ1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwgYml0bWFzaykge1xuICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7XG59XG5cbnZhciBET01Qcm9wZXJ0eUluamVjdGlvbiA9IHtcbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBub3JtYWxpemVkLCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0aGF0XG4gICAqIHNwZWNpZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBvciByZW5kZXJlZC5cbiAgICovXG4gIE1VU1RfVVNFX0FUVFJJQlVURTogMHgxLFxuICBNVVNUX1VTRV9QUk9QRVJUWTogMHgyLFxuICBIQVNfU0lERV9FRkZFQ1RTOiAweDQsXG4gIEhBU19CT09MRUFOX1ZBTFVFOiAweDgsXG4gIEhBU19OVU1FUklDX1ZBTFVFOiAweDEwLFxuICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgyMCB8IDB4MTAsXG4gIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6IDB4NDAsXG5cbiAgLyoqXG4gICAqIEluamVjdCBzb21lIHNwZWNpYWxpemVkIGtub3dsZWRnZSBhYm91dCB0aGUgRE9NLiBUaGlzIHRha2VzIGEgY29uZmlnIG9iamVjdFxuICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIHRoYXQgZ2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUgd2lsbCByZXR1cm4gdHJ1ZVxuICAgKiBpZiBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSpcbiAgICogYXR0cmlidXRlcyB3aGVyZSBpdCdzIGltcG9zc2libGUgdG8gZW51bWVyYXRlIGFsbCBvZiB0aGUgcG9zc2libGVcbiAgICogYXR0cmlidXRlIG5hbWVzLFxuICAgKlxuICAgKiBQcm9wZXJ0aWVzOiBvYmplY3QgbWFwcGluZyBET00gcHJvcGVydHkgbmFtZSB0byBvbmUgb2YgdGhlXG4gICAqIERPTVByb3BlcnR5SW5qZWN0aW9uIGNvbnN0YW50cyBvciBudWxsLiBJZiB5b3VyIGF0dHJpYnV0ZSBpc24ndCBpbiBoZXJlLFxuICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLlxuICAgKlxuICAgKiBET01BdHRyaWJ1dGVOYW1lczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqXG4gICAqIG5vcm1hbGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZXNwYWNlIFVSTC4gKEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSBubyBuYW1lc3BhY2UuKVxuICAgKlxuICAgKiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0ZU5hbWVzIGJ1dCBmb3IgRE9NIHByb3BlcnRpZXMuXG4gICAqIFByb3BlcnR5IG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSBub3JtYWxpemVkIG5hbWUuXG4gICAqXG4gICAqIERPTU11dGF0aW9uTWV0aG9kczogUHJvcGVydGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRob2RzLiBJZlxuICAgKiBgdmFsdWVgIGlzIHVuZGVmaW5lZCwgdGhlIG11dGF0aW9uIG1ldGhvZCBzaG91bGQgdW5zZXQgdGhlIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZG9tUHJvcGVydHlDb25maWcgdGhlIGNvbmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuXG4gICAqL1xuICBpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzogZnVuY3Rpb24gKGRvbVByb3BlcnR5Q29uZmlnKSB7XG4gICAgdmFyIEluamVjdGlvbiA9IERPTVByb3BlcnR5SW5qZWN0aW9uO1xuICAgIHZhciBQcm9wZXJ0aWVzID0gZG9tUHJvcGVydHlDb25maWcuUHJvcGVydGllcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXNwYWNlcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgfHwge307XG4gICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXMgfHwge307XG4gICAgdmFyIERPTVByb3BlcnR5TmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01Qcm9wZXJ0eU5hbWVzIHx8IHt9O1xuICAgIHZhciBET01NdXRhdGlvbk1ldGhvZHMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01NdXRhdGlvbk1ldGhvZHMgfHwge307XG5cbiAgICBpZiAoZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpIHtcbiAgICAgIERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRlKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBQcm9wZXJ0aWVzKSB7XG4gICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlvdVxcJ3JlIHRyeWluZyB0byBpbmplY3QgRE9NIHByb3BlcnR5ICcgKyAnXFwnJXNcXCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1heSBiZSBhY2NpZGVudGFsbHkgJyArICdpbmplY3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNvbmZpZyB0d2ljZSwgb3IgeW91IG1heSBiZSAnICsgJ2luamVjdGluZyB0d28gY29uZmlncyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9wTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3Byb3BOYW1lXTtcblxuICAgICAgdmFyIHByb3BlcnR5SW5mbyA9IHtcbiAgICAgICAgYXR0cmlidXRlTmFtZTogbG93ZXJDYXNlZCxcbiAgICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BOYW1lLFxuICAgICAgICBtdXRhdGlvbk1ldGhvZDogbnVsbCxcblxuICAgICAgICBtdXN0VXNlQXR0cmlidXRlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLk1VU1RfVVNFX0FUVFJJQlVURSksXG4gICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksXG4gICAgICAgIGhhc1NpZGVFZmZlY3RzOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19TSURFX0VGRkVDVFMpLFxuICAgICAgICBoYXNCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUpLFxuICAgICAgICBoYXNOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksXG4gICAgICAgIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSlcbiAgICAgIH07XG5cbiAgICAgICEoIXByb3BlcnR5SW5mby5tdXN0VXNlQXR0cmlidXRlIHx8ICFwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0eTogQ2Fubm90IHJlcXVpcmUgdXNpbmcgYm90aCBhdHRyaWJ1dGUgYW5kIHByb3BlcnR5OiAlcycsIHByb3BOYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAhKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkgfHwgIXByb3BlcnR5SW5mby5oYXNTaWRlRWZmZWN0cykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFByb3BlcnRpZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cyBtdXN0IHVzZSBwcm9wZXJ0eTogJXMnLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgIShwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICsgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSArIHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgJyArICdudW1lcmljIHZhbHVlLCBidXQgbm90IGEgY29tYmluYXRpb246ICVzJywgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZF0gPSBwcm9wTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTtcbiAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0gcHJvcE5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5hbWVzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG4gICAgfVxuICB9XG59O1xudmFyIGRlZmF1bHRWYWx1ZUNhY2hlID0ge307XG5cbi8qKlxuICogRE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2UgZnVuY3Rpb25zOlxuICpcbiAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddXG4gKiAgIHRydWVcbiAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXInXVxuICogICB1bmRlZmluZWRcbiAqXG4gKiBBbHRob3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJldHRlciBpbiBnZW5lcmFsLlxuICpcbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0c1xuICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZ1xuICovXG52YXIgRE9NUHJvcGVydHkgPSB7XG5cbiAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLFxuXG4gIC8qKlxuICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSBcInN0YW5kYXJkIG5hbWVcIiB0byBhbiBvYmplY3Qgd2l0aCBpbmZvIGFib3V0IGhvdyB0byBzZXRcbiAgICogdGhlIHByb3BlcnR5IGluIHRoZSBET00uIEVhY2ggb2JqZWN0IGNvbnRhaW5zOlxuICAgKlxuICAgKiBhdHRyaWJ1dGVOYW1lOlxuICAgKiAgIFVzZWQgd2hlbiByZW5kZXJpbmcgbWFya3VwIG9yIHdpdGggYCpBdHRyaWJ1dGUoKWAuXG4gICAqIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICAgKiBwcm9wZXJ0eU5hbWU6XG4gICAqICAgVXNlZCBvbiBET00gbm9kZSBpbnN0YW5jZXMuIChUaGlzIGluY2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBtdXRhdGUgZHVlIHRvXG4gICAqICAgZXh0ZXJuYWwgZmFjdG9ycy4pXG4gICAqIG11dGF0aW9uTWV0aG9kOlxuICAgKiAgIElmIG5vbi1udWxsLCB1c2VkIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG9yIGBzZXRBdHRyaWJ1dGUoKWAgYWZ0ZXJcbiAgICogICBpbml0aWFsIHJlbmRlci5cbiAgICogbXVzdFVzZUF0dHJpYnV0ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIHVzaW5nIGAqQXR0cmlidXRlKClgLlxuICAgKiAgIChUaGlzIGluY2x1ZGVzIGFueXRoaW5nIHRoYXQgZmFpbHMgYDxwcm9wTmFtZT4gaW4gPGVsZW1lbnQ+YC4pXG4gICAqIG11c3RVc2VQcm9wZXJ0eTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9wZXJ0eS5cbiAgICogaGFzU2lkZUVmZmVjdHM6XG4gICAqICAgV2hldGhlciBvciBub3Qgc2V0dGluZyBhIHZhbHVlIGNhdXNlcyBzaWRlIGVmZmVjdHMgc3VjaCBhcyB0cmlnZ2VyaW5nXG4gICAqICAgcmVzb3VyY2VzIHRvIGJlIGxvYWRlZCBvciB0ZXh0IHNlbGVjdGlvbiBjaGFuZ2VzLiBJZiB0cnVlLCB3ZSByZWFkIGZyb21cbiAgICogICB0aGUgRE9NIGJlZm9yZSB1cGRhdGluZyB0byBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXMgb25seSBzZXQgaWYgaXQgaGFzXG4gICAqICAgY2hhbmdlZC5cbiAgICogaGFzQm9vbGVhblZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IHNob3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNOdW1lcmljVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlXG4gICAqICAgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgcG9zaXRpdmVcbiAgICogICBudW1lcmljIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBhcyBhIGZsYWcgYXMgd2VsbCBhcyB3aXRoIGEgdmFsdWUuXG4gICAqICAgUmVtb3ZlZCB3aGVuIHN0cmljdGx5IGVxdWFsIHRvIGZhbHNlOyBwcmVzZW50IHdpdGhvdXQgYSB2YWx1ZSB3aGVuXG4gICAqICAgc3RyaWN0bHkgZXF1YWwgdG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJvcGVydGllczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcHJvcGVydHkgbmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVzZWRcbiAgICogdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9fREVWX18uXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHt9IDogbnVsbCxcblxuICAvKipcbiAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC5cbiAgICovXG4gIF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sXG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXNDdXN0b21BdHRyaWJ1dGVGbiA9IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTtcbiAgICAgIGlmIChpc0N1c3RvbUF0dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRlZmF1bHQgcHJvcGVydHkgdmFsdWUgZm9yIGEgRE9NIHByb3BlcnR5IChpLmUuLCBub3QgYW5cbiAgICogYXR0cmlidXRlKS4gTW9zdCBkZWZhdWx0IHZhbHVlcyBhcmUgJycgb3IgZmFsc2UsIGJ1dCBub3QgYWxsLiBXb3JzZSB5ZXQsXG4gICAqIHNvbWUgKGluIHBhcnRpY3VsYXIsIGB0eXBlYCkgdmFyeSBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZWxlbWVudC5cbiAgICpcbiAgICogVE9ETzogSXMgaXQgYmV0dGVyIHRvIGdyYWIgYWxsIHRoZSBwb3NzaWJsZSBwcm9wZXJ0aWVzIHdoZW4gY3JlYXRpbmcgYW5cbiAgICogZWxlbWVudCB0byBhdm9pZCBoYXZpbmcgdG8gY3JlYXRlIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2U/XG4gICAqL1xuICBnZXREZWZhdWx0VmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGVOYW1lLCBwcm9wKSB7XG4gICAgdmFyIG5vZGVEZWZhdWx0cyA9IGRlZmF1bHRWYWx1ZUNhY2hlW25vZGVOYW1lXTtcbiAgICB2YXIgdGVzdEVsZW1lbnQ7XG4gICAgaWYgKCFub2RlRGVmYXVsdHMpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZUNhY2hlW25vZGVOYW1lXSA9IG5vZGVEZWZhdWx0cyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShwcm9wIGluIG5vZGVEZWZhdWx0cykpIHtcbiAgICAgIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChub2RlTmFtZSk7XG4gICAgICBub2RlRGVmYXVsdHNbcHJvcF0gPSB0ZXN0RWxlbWVudFtwcm9wXTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVEZWZhdWx0c1twcm9wXTtcbiAgfSxcblxuICBpbmplY3Rpb246IERPTVByb3BlcnR5SW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJFOU5VSEp2Y0dWeWRIa3Vhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRVJQVFZCeWIzQmxjblI1WEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNW1kVzVqZEdsdmJpQmphR1ZqYTAxaGMyc29kbUZzZFdVc0lHSnBkRzFoYzJzcElIdGNiaUFnY21WMGRYSnVJQ2gyWVd4MVpTQW1JR0pwZEcxaGMyc3BJRDA5UFNCaWFYUnRZWE5yTzF4dWZWeHVYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIbEpibXBsWTNScGIyNGdQU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQk5ZWEJ3YVc1bklHWnliMjBnYm05eWJXRnNhWHBsWkN3Z1kyRnRaV3hqWVhObFpDQndjbTl3WlhKMGVTQnVZVzFsY3lCMGJ5QmhJR052Ym1acFozVnlZWFJwYjI0Z2RHaGhkRnh1SUNBZ0tpQnpjR1ZqYVdacFpYTWdhRzkzSUhSb1pTQmhjM052WTJsaGRHVmtJRVJQVFNCd2NtOXdaWEowZVNCemFHOTFiR1FnWW1VZ1lXTmpaWE56WldRZ2IzSWdjbVZ1WkdWeVpXUXVYRzRnSUNBcUwxeHVJQ0JOVlZOVVgxVlRSVjlCVkZSU1NVSlZWRVU2SURCNE1TeGNiaUFnVFZWVFZGOVZVMFZmVUZKUFVFVlNWRms2SURCNE1peGNiaUFnU0VGVFgxTkpSRVZmUlVaR1JVTlVVem9nTUhnMExGeHVJQ0JJUVZOZlFrOVBURVZCVGw5V1FVeFZSVG9nTUhnNExGeHVJQ0JJUVZOZlRsVk5SVkpKUTE5V1FVeFZSVG9nTUhneE1DeGNiaUFnU0VGVFgxQlBVMGxVU1ZaRlgwNVZUVVZTU1VOZlZrRk1WVVU2SURCNE1qQWdmQ0F3ZURFd0xGeHVJQ0JJUVZOZlQxWkZVa3hQUVVSRlJGOUNUMDlNUlVGT1gxWkJURlZGT2lBd2VEUXdMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpibXBsWTNRZ2MyOXRaU0J6Y0dWamFXRnNhWHBsWkNCcmJtOTNiR1ZrWjJVZ1lXSnZkWFFnZEdobElFUlBUUzRnVkdocGN5QjBZV3RsY3lCaElHTnZibVpwWnlCdlltcGxZM1JjYmlBZ0lDb2dkMmwwYUNCMGFHVWdabTlzYkc5M2FXNW5JSEJ5YjNCbGNuUnBaWE02WEc0Z0lDQXFYRzRnSUNBcUlHbHpRM1Z6ZEc5dFFYUjBjbWxpZFhSbE9pQm1kVzVqZEdsdmJpQjBhR0YwSUdkcGRtVnVJR0Z1SUdGMGRISnBZblYwWlNCdVlXMWxJSGRwYkd3Z2NtVjBkWEp1SUhSeWRXVmNiaUFnSUNvZ2FXWWdhWFFnWTJGdUlHSmxJR2x1YzJWeWRHVmtJR2x1ZEc4Z2RHaGxJRVJQVFNCMlpYSmlZWFJwYlM0Z1ZYTmxablZzSUdadmNpQmtZWFJoTFNvZ2IzSWdZWEpwWVMwcVhHNGdJQ0FxSUdGMGRISnBZblYwWlhNZ2QyaGxjbVVnYVhRbmN5QnBiWEJ2YzNOcFlteGxJSFJ2SUdWdWRXMWxjbUYwWlNCaGJHd2diMllnZEdobElIQnZjM05wWW14bFhHNGdJQ0FxSUdGMGRISnBZblYwWlNCdVlXMWxjeXhjYmlBZ0lDcGNiaUFnSUNvZ1VISnZjR1Z5ZEdsbGN6b2diMkpxWldOMElHMWhjSEJwYm1jZ1JFOU5JSEJ5YjNCbGNuUjVJRzVoYldVZ2RHOGdiMjVsSUc5bUlIUm9aVnh1SUNBZ0tpQkVUMDFRY205d1pYSjBlVWx1YW1WamRHbHZiaUJqYjI1emRHRnVkSE1nYjNJZ2JuVnNiQzRnU1dZZ2VXOTFjaUJoZEhSeWFXSjFkR1VnYVhOdUozUWdhVzRnYUdWeVpTeGNiaUFnSUNvZ2FYUWdkMjl1SjNRZ1oyVjBJSGR5YVhSMFpXNGdkRzhnZEdobElFUlBUUzVjYmlBZ0lDcGNiaUFnSUNvZ1JFOU5RWFIwY21saWRYUmxUbUZ0WlhNNklHOWlhbVZqZENCdFlYQndhVzVuSUZKbFlXTjBJR0YwZEhKcFluVjBaU0J1WVcxbElIUnZJSFJvWlNCRVQwMWNiaUFnSUNvZ1lYUjBjbWxpZFhSbElHNWhiV1V1SUVGMGRISnBZblYwWlNCdVlXMWxjeUJ1YjNRZ2MzQmxZMmxtYVdWa0lIVnpaU0IwYUdVZ0tpcHNiM2RsY21OaGMyVXFLbHh1SUNBZ0tpQnViM0p0WVd4cGVtVmtJRzVoYldVdVhHNGdJQ0FxWEc0Z0lDQXFJRVJQVFVGMGRISnBZblYwWlU1aGJXVnpjR0ZqWlhNNklHOWlhbVZqZENCdFlYQndhVzVuSUZKbFlXTjBJR0YwZEhKcFluVjBaU0J1WVcxbElIUnZJSFJvWlNCRVQwMWNiaUFnSUNvZ1lYUjBjbWxpZFhSbElHNWhiV1Z6Y0dGalpTQlZVa3d1SUNoQmRIUnlhV0oxZEdVZ2JtRnRaWE1nYm05MElITndaV05wWm1sbFpDQjFjMlVnYm04Z2JtRnRaWE53WVdObExpbGNiaUFnSUNwY2JpQWdJQ29nUkU5TlVISnZjR1Z5ZEhsT1lXMWxjem9nYzJsdGFXeGhjaUIwYnlCRVQwMUJkSFJ5YVdKMWRHVk9ZVzFsY3lCaWRYUWdabTl5SUVSUFRTQndjbTl3WlhKMGFXVnpMbHh1SUNBZ0tpQlFjbTl3WlhKMGVTQnVZVzFsY3lCdWIzUWdjM0JsWTJsbWFXVmtJSFZ6WlNCMGFHVWdibTl5YldGc2FYcGxaQ0J1WVcxbExseHVJQ0FnS2x4dUlDQWdLaUJFVDAxTmRYUmhkR2x2YmsxbGRHaHZaSE02SUZCeWIzQmxjblJwWlhNZ2RHaGhkQ0J5WlhGMWFYSmxJSE53WldOcFlXd2diWFYwWVhScGIyNGdiV1YwYUc5a2N5NGdTV1pjYmlBZ0lDb2dZSFpoYkhWbFlDQnBjeUIxYm1SbFptbHVaV1FzSUhSb1pTQnRkWFJoZEdsdmJpQnRaWFJvYjJRZ2MyaHZkV3hrSUhWdWMyVjBJSFJvWlNCd2NtOXdaWEowZVM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHUnZiVkJ5YjNCbGNuUjVRMjl1Wm1sbklIUm9aU0JqYjI1bWFXY2dZWE1nWkdWelkzSnBZbVZrSUdGaWIzWmxMbHh1SUNBZ0tpOWNiaUFnYVc1cVpXTjBSRTlOVUhKdmNHVnlkSGxEYjI1bWFXYzZJR1oxYm1OMGFXOXVJQ2hrYjIxUWNtOXdaWEowZVVOdmJtWnBaeWtnZTF4dUlDQWdJSFpoY2lCSmJtcGxZM1JwYjI0Z1BTQkVUMDFRY205d1pYSjBlVWx1YW1WamRHbHZianRjYmlBZ0lDQjJZWElnVUhKdmNHVnlkR2xsY3lBOUlHUnZiVkJ5YjNCbGNuUjVRMjl1Wm1sbkxsQnliM0JsY25ScFpYTWdmSHdnZTMwN1hHNGdJQ0FnZG1GeUlFUlBUVUYwZEhKcFluVjBaVTVoYldWemNHRmpaWE1nUFNCa2IyMVFjbTl3WlhKMGVVTnZibVpwWnk1RVQwMUJkSFJ5YVdKMWRHVk9ZVzFsYzNCaFkyVnpJSHg4SUh0OU8xeHVJQ0FnSUhaaGNpQkVUMDFCZEhSeWFXSjFkR1ZPWVcxbGN5QTlJR1J2YlZCeWIzQmxjblI1UTI5dVptbG5Ma1JQVFVGMGRISnBZblYwWlU1aGJXVnpJSHg4SUh0OU8xeHVJQ0FnSUhaaGNpQkVUMDFRY205d1pYSjBlVTVoYldWeklEMGdaRzl0VUhKdmNHVnlkSGxEYjI1bWFXY3VSRTlOVUhKdmNHVnlkSGxPWVcxbGN5QjhmQ0I3ZlR0Y2JpQWdJQ0IyWVhJZ1JFOU5UWFYwWVhScGIyNU5aWFJvYjJSeklEMGdaRzl0VUhKdmNHVnlkSGxEYjI1bWFXY3VSRTlOVFhWMFlYUnBiMjVOWlhSb2IyUnpJSHg4SUh0OU8xeHVYRzRnSUNBZ2FXWWdLR1J2YlZCeWIzQmxjblI1UTI5dVptbG5MbWx6UTNWemRHOXRRWFIwY21saWRYUmxLU0I3WEc0Z0lDQWdJQ0JFVDAxUWNtOXdaWEowZVM1ZmFYTkRkWE4wYjIxQmRIUnlhV0oxZEdWR2RXNWpkR2x2Ym5NdWNIVnphQ2hrYjIxUWNtOXdaWEowZVVOdmJtWnBaeTVwYzBOMWMzUnZiVUYwZEhKcFluVjBaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdabTl5SUNoMllYSWdjSEp2Y0U1aGJXVWdhVzRnVUhKdmNHVnlkR2xsY3lrZ2UxeHVJQ0FnSUNBZ0lTRkVUMDFRY205d1pYSjBlUzV3Y205d1pYSjBhV1Z6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHBibXBsWTNSRVQwMVFjbTl3WlhKMGVVTnZibVpwWnlndUxpNHBPaUJaYjNWY1hDZHlaU0IwY25scGJtY2dkRzhnYVc1cVpXTjBJRVJQVFNCd2NtOXdaWEowZVNBbklDc2dKMXhjSnlWelhGd25JSGRvYVdOb0lHaGhjeUJoYkhKbFlXUjVJR0psWlc0Z2FXNXFaV04wWldRdUlGbHZkU0J0WVhrZ1ltVWdZV05qYVdSbGJuUmhiR3g1SUNjZ0t5QW5hVzVxWldOMGFXNW5JSFJvWlNCellXMWxJRVJQVFNCd2NtOXdaWEowZVNCamIyNW1hV2NnZEhkcFkyVXNJRzl5SUhsdmRTQnRZWGtnWW1VZ0p5QXJJQ2RwYm1wbFkzUnBibWNnZEhkdklHTnZibVpwWjNNZ2RHaGhkQ0JvWVhabElHTnZibVpzYVdOMGFXNW5JSEJ5YjNCbGNuUjVJRzVoYldWekxpY3NJSEJ5YjNCT1lXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNBZ0lIWmhjaUJzYjNkbGNrTmhjMlZrSUQwZ2NISnZjRTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmlBZ0lDQWdJSFpoY2lCd2NtOXdRMjl1Wm1sbklEMGdVSEp2Y0dWeWRHbGxjMXR3Y205d1RtRnRaVjA3WEc1Y2JpQWdJQ0FnSUhaaGNpQndjbTl3WlhKMGVVbHVabThnUFNCN1hHNGdJQ0FnSUNBZ0lHRjBkSEpwWW5WMFpVNWhiV1U2SUd4dmQyVnlRMkZ6WldRc1hHNGdJQ0FnSUNBZ0lHRjBkSEpwWW5WMFpVNWhiV1Z6Y0dGalpUb2diblZzYkN4Y2JpQWdJQ0FnSUNBZ2NISnZjR1Z5ZEhsT1lXMWxPaUJ3Y205d1RtRnRaU3hjYmlBZ0lDQWdJQ0FnYlhWMFlYUnBiMjVOWlhSb2IyUTZJRzUxYkd3c1hHNWNiaUFnSUNBZ0lDQWdiWFZ6ZEZWelpVRjBkSEpwWW5WMFpUb2dZMmhsWTJ0TllYTnJLSEJ5YjNCRGIyNW1hV2NzSUVsdWFtVmpkR2x2Ymk1TlZWTlVYMVZUUlY5QlZGUlNTVUpWVkVVcExGeHVJQ0FnSUNBZ0lDQnRkWE4wVlhObFVISnZjR1Z5ZEhrNklHTm9aV05yVFdGemF5aHdjbTl3UTI5dVptbG5MQ0JKYm1wbFkzUnBiMjR1VFZWVFZGOVZVMFZmVUZKUFVFVlNWRmtwTEZ4dUlDQWdJQ0FnSUNCb1lYTlRhV1JsUldabVpXTjBjem9nWTJobFkydE5ZWE5yS0hCeWIzQkRiMjVtYVdjc0lFbHVhbVZqZEdsdmJpNUlRVk5mVTBsRVJWOUZSa1pGUTFSVEtTeGNiaUFnSUNBZ0lDQWdhR0Z6UW05dmJHVmhibFpoYkhWbE9pQmphR1ZqYTAxaGMyc29jSEp2Y0VOdmJtWnBaeXdnU1c1cVpXTjBhVzl1TGtoQlUxOUNUMDlNUlVGT1gxWkJURlZGS1N4Y2JpQWdJQ0FnSUNBZ2FHRnpUblZ0WlhKcFkxWmhiSFZsT2lCamFHVmphMDFoYzJzb2NISnZjRU52Ym1acFp5d2dTVzVxWldOMGFXOXVMa2hCVTE5T1ZVMUZVa2xEWDFaQlRGVkZLU3hjYmlBZ0lDQWdJQ0FnYUdGelVHOXphWFJwZG1WT2RXMWxjbWxqVm1Gc2RXVTZJR05vWldOclRXRnpheWh3Y205d1EyOXVabWxuTENCSmJtcGxZM1JwYjI0dVNFRlRYMUJQVTBsVVNWWkZYMDVWVFVWU1NVTmZWa0ZNVlVVcExGeHVJQ0FnSUNBZ0lDQm9ZWE5QZG1WeWJHOWhaR1ZrUW05dmJHVmhibFpoYkhWbE9pQmphR1ZqYTAxaGMyc29jSEp2Y0VOdmJtWnBaeXdnU1c1cVpXTjBhVzl1TGtoQlUxOVBWa1ZTVEU5QlJFVkVYMEpQVDB4RlFVNWZWa0ZNVlVVcFhHNGdJQ0FnSUNCOU8xeHVYRzRnSUNBZ0lDQWhLQ0Z3Y205d1pYSjBlVWx1Wm04dWJYVnpkRlZ6WlVGMGRISnBZblYwWlNCOGZDQWhjSEp2Y0dWeWRIbEpibVp2TG0xMWMzUlZjMlZRY205d1pYSjBlU2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5SRTlOVUhKdmNHVnlkSGs2SUVOaGJtNXZkQ0J5WlhGMWFYSmxJSFZ6YVc1bklHSnZkR2dnWVhSMGNtbGlkWFJsSUdGdVpDQndjbTl3WlhKMGVUb2dKWE1uTENCd2NtOXdUbUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJU2h3Y205d1pYSjBlVWx1Wm04dWJYVnpkRlZ6WlZCeWIzQmxjblI1SUh4OElDRndjbTl3WlhKMGVVbHVabTh1YUdGelUybGtaVVZtWm1WamRITXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owUlBUVkJ5YjNCbGNuUjVPaUJRY205d1pYSjBhV1Z6SUhSb1lYUWdhR0YyWlNCemFXUmxJR1ZtWm1WamRITWdiWFZ6ZENCMWMyVWdjSEp2Y0dWeWRIazZJQ1Z6Snl3Z2NISnZjRTVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0VvY0hKdmNHVnlkSGxKYm1adkxtaGhjMEp2YjJ4bFlXNVdZV3gxWlNBcklIQnliM0JsY25SNVNXNW1ieTVvWVhOT2RXMWxjbWxqVm1Gc2RXVWdLeUJ3Y205d1pYSjBlVWx1Wm04dWFHRnpUM1psY214dllXUmxaRUp2YjJ4bFlXNVdZV3gxWlNBOFBTQXhLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEVUMDFRY205d1pYSjBlVG9nVm1Gc2RXVWdZMkZ1SUdKbElHOXVaU0J2WmlCaWIyOXNaV0Z1TENCdmRtVnliRzloWkdWa0lHSnZiMnhsWVc0c0lHOXlJQ2NnS3lBbmJuVnRaWEpwWXlCMllXeDFaU3dnWW5WMElHNXZkQ0JoSUdOdmJXSnBibUYwYVc5dU9pQWxjeWNzSUhCeWIzQk9ZVzFsS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJRVJQVFZCeWIzQmxjblI1TG1kbGRGQnZjM05wWW14bFUzUmhibVJoY21ST1lXMWxXMnh2ZDJWeVEyRnpaV1JkSUQwZ2NISnZjRTVoYldVN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHbG1JQ2hFVDAxQmRIUnlhV0oxZEdWT1lXMWxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3VG1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHRjBkSEpwWW5WMFpVNWhiV1VnUFNCRVQwMUJkSFJ5YVdKMWRHVk9ZVzFsYzF0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnSUNBZ0lIQnliM0JsY25SNVNXNW1ieTVoZEhSeWFXSjFkR1ZPWVcxbElEMGdZWFIwY21saWRYUmxUbUZ0WlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQkVUMDFRY205d1pYSjBlUzVuWlhSUWIzTnphV0pzWlZOMFlXNWtZWEprVG1GdFpWdGhkSFJ5YVdKMWRHVk9ZVzFsWFNBOUlIQnliM0JPWVcxbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoRVQwMUJkSFJ5YVdKMWRHVk9ZVzFsYzNCaFkyVnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0J3Y205d1pYSjBlVWx1Wm04dVlYUjBjbWxpZFhSbFRtRnRaWE53WVdObElEMGdSRTlOUVhSMGNtbGlkWFJsVG1GdFpYTndZV05sYzF0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHbG1JQ2hFVDAxUWNtOXdaWEowZVU1aGJXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0J3Y205d1pYSjBlVWx1Wm04dWNISnZjR1Z5ZEhsT1lXMWxJRDBnUkU5TlVISnZjR1Z5ZEhsT1lXMWxjMXR3Y205d1RtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaEVUMDFOZFhSaGRHbHZiazFsZEdodlpITXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NISnZjRTVoYldVcEtTQjdYRzRnSUNBZ0lDQWdJSEJ5YjNCbGNuUjVTVzVtYnk1dGRYUmhkR2x2YmsxbGRHaHZaQ0E5SUVSUFRVMTFkR0YwYVc5dVRXVjBhRzlrYzF0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lFUlBUVkJ5YjNCbGNuUjVMbkJ5YjNCbGNuUnBaWE5iY0hKdmNFNWhiV1ZkSUQwZ2NISnZjR1Z5ZEhsSmJtWnZPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZUdGNiblpoY2lCa1pXWmhkV3gwVm1Gc2RXVkRZV05vWlNBOUlIdDlPMXh1WEc0dktpcGNiaUFxSUVSUFRWQnliM0JsY25SNUlHVjRjRzl5ZEhNZ2JHOXZhM1Z3SUc5aWFtVmpkSE1nZEdoaGRDQmpZVzRnWW1VZ2RYTmxaQ0JzYVd0bElHWjFibU4wYVc5dWN6cGNiaUFxWEc0Z0tpQWdJRDRnUkU5TlVISnZjR1Z5ZEhrdWFYTldZV3hwWkZzbmFXUW5YVnh1SUNvZ0lDQjBjblZsWEc0Z0tpQWdJRDRnUkU5TlVISnZjR1Z5ZEhrdWFYTldZV3hwWkZzblptOXZZbUZ5SjExY2JpQXFJQ0FnZFc1a1pXWnBibVZrWEc0Z0tseHVJQ29nUVd4MGFHOTFaMmdnZEdocGN5QnRZWGtnWW1VZ1kyOXVablZ6YVc1bkxDQnBkQ0J3WlhKbWIzSnRjeUJpWlhSMFpYSWdhVzRnWjJWdVpYSmhiQzVjYmlBcVhHNGdLaUJBYzJWbElHaDBkSEE2THk5cWMzQmxjbVl1WTI5dEwydGxlUzFsZUdsemRITmNiaUFxSUVCelpXVWdhSFIwY0RvdkwycHpjR1Z5Wmk1amIyMHZhMlY1TFcxcGMzTnBibWRjYmlBcUwxeHVkbUZ5SUVSUFRWQnliM0JsY25SNUlEMGdlMXh1WEc0Z0lFbEVYMEZVVkZKSlFsVlVSVjlPUVUxRk9pQW5aR0YwWVMxeVpXRmpkR2xrSnl4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVFdGd0lHWnliMjBnY0hKdmNHVnlkSGtnWENKemRHRnVaR0Z5WkNCdVlXMWxYQ0lnZEc4Z1lXNGdiMkpxWldOMElIZHBkR2dnYVc1bWJ5QmhZbTkxZENCb2IzY2dkRzhnYzJWMFhHNGdJQ0FxSUhSb1pTQndjbTl3WlhKMGVTQnBiaUIwYUdVZ1JFOU5MaUJGWVdOb0lHOWlhbVZqZENCamIyNTBZV2x1Y3pwY2JpQWdJQ3BjYmlBZ0lDb2dZWFIwY21saWRYUmxUbUZ0WlRwY2JpQWdJQ29nSUNCVmMyVmtJSGRvWlc0Z2NtVnVaR1Z5YVc1bklHMWhjbXQxY0NCdmNpQjNhWFJvSUdBcVFYUjBjbWxpZFhSbEtDbGdMbHh1SUNBZ0tpQmhkSFJ5YVdKMWRHVk9ZVzFsYzNCaFkyVmNiaUFnSUNvZ2NISnZjR1Z5ZEhsT1lXMWxPbHh1SUNBZ0tpQWdJRlZ6WldRZ2IyNGdSRTlOSUc1dlpHVWdhVzV6ZEdGdVkyVnpMaUFvVkdocGN5QnBibU5zZFdSbGN5QndjbTl3WlhKMGFXVnpJSFJvWVhRZ2JYVjBZWFJsSUdSMVpTQjBiMXh1SUNBZ0tpQWdJR1Y0ZEdWeWJtRnNJR1poWTNSdmNuTXVLVnh1SUNBZ0tpQnRkWFJoZEdsdmJrMWxkR2h2WkRwY2JpQWdJQ29nSUNCSlppQnViMjR0Ym5Wc2JDd2dkWE5sWkNCcGJuTjBaV0ZrSUc5bUlIUm9aU0J3Y205d1pYSjBlU0J2Y2lCZ2MyVjBRWFIwY21saWRYUmxLQ2xnSUdGbWRHVnlYRzRnSUNBcUlDQWdhVzVwZEdsaGJDQnlaVzVrWlhJdVhHNGdJQ0FxSUcxMWMzUlZjMlZCZEhSeWFXSjFkR1U2WEc0Z0lDQXFJQ0FnVjJobGRHaGxjaUIwYUdVZ2NISnZjR1Z5ZEhrZ2JYVnpkQ0JpWlNCaFkyTmxjM05sWkNCaGJtUWdiWFYwWVhSbFpDQjFjMmx1WnlCZ0trRjBkSEpwWW5WMFpTZ3BZQzVjYmlBZ0lDb2dJQ0FvVkdocGN5QnBibU5zZFdSbGN5QmhibmwwYUdsdVp5QjBhR0YwSUdaaGFXeHpJR0E4Y0hKdmNFNWhiV1UrSUdsdUlEeGxiR1Z0Wlc1MFBtQXVLVnh1SUNBZ0tpQnRkWE4wVlhObFVISnZjR1Z5ZEhrNlhHNGdJQ0FxSUNBZ1YyaGxkR2hsY2lCMGFHVWdjSEp2Y0dWeWRIa2diWFZ6ZENCaVpTQmhZMk5sYzNObFpDQmhibVFnYlhWMFlYUmxaQ0JoY3lCaGJpQnZZbXBsWTNRZ2NISnZjR1Z5ZEhrdVhHNGdJQ0FxSUdoaGMxTnBaR1ZGWm1abFkzUnpPbHh1SUNBZ0tpQWdJRmRvWlhSb1pYSWdiM0lnYm05MElITmxkSFJwYm1jZ1lTQjJZV3gxWlNCallYVnpaWE1nYzJsa1pTQmxabVpsWTNSeklITjFZMmdnWVhNZ2RISnBaMmRsY21sdVoxeHVJQ0FnS2lBZ0lISmxjMjkxY21ObGN5QjBieUJpWlNCc2IyRmtaV1FnYjNJZ2RHVjRkQ0J6Wld4bFkzUnBiMjRnWTJoaGJtZGxjeTRnU1dZZ2RISjFaU3dnZDJVZ2NtVmhaQ0JtY205dFhHNGdJQ0FxSUNBZ2RHaGxJRVJQVFNCaVpXWnZjbVVnZFhCa1lYUnBibWNnZEc4Z1pXNXpkWEpsSUhSb1lYUWdkR2hsSUhaaGJIVmxJR2x6SUc5dWJIa2djMlYwSUdsbUlHbDBJR2hoYzF4dUlDQWdLaUFnSUdOb1lXNW5aV1F1WEc0Z0lDQXFJR2hoYzBKdmIyeGxZVzVXWVd4MVpUcGNiaUFnSUNvZ0lDQlhhR1YwYUdWeUlIUm9aU0J3Y205d1pYSjBlU0J6YUc5MWJHUWdZbVVnY21WdGIzWmxaQ0IzYUdWdUlITmxkQ0IwYnlCaElHWmhiSE5sZVNCMllXeDFaUzVjYmlBZ0lDb2dhR0Z6VG5WdFpYSnBZMVpoYkhWbE9seHVJQ0FnS2lBZ0lGZG9aWFJvWlhJZ2RHaGxJSEJ5YjNCbGNuUjVJRzExYzNRZ1ltVWdiblZ0WlhKcFl5QnZjaUJ3WVhKelpTQmhjeUJoSUc1MWJXVnlhV01nWVc1a0lITm9iM1ZzWkNCaVpWeHVJQ0FnS2lBZ0lISmxiVzkyWldRZ2QyaGxiaUJ6WlhRZ2RHOGdZU0JtWVd4elpYa2dkbUZzZFdVdVhHNGdJQ0FxSUdoaGMxQnZjMmwwYVhabFRuVnRaWEpwWTFaaGJIVmxPbHh1SUNBZ0tpQWdJRmRvWlhSb1pYSWdkR2hsSUhCeWIzQmxjblI1SUcxMWMzUWdZbVVnY0c5emFYUnBkbVVnYm5WdFpYSnBZeUJ2Y2lCd1lYSnpaU0JoY3lCaElIQnZjMmwwYVhabFhHNGdJQ0FxSUNBZ2JuVnRaWEpwWXlCaGJtUWdjMmh2ZFd4a0lHSmxJSEpsYlc5MlpXUWdkMmhsYmlCelpYUWdkRzhnWVNCbVlXeHpaWGtnZG1Gc2RXVXVYRzRnSUNBcUlHaGhjMDkyWlhKc2IyRmtaV1JDYjI5c1pXRnVWbUZzZFdVNlhHNGdJQ0FxSUNBZ1YyaGxkR2hsY2lCMGFHVWdjSEp2Y0dWeWRIa2dZMkZ1SUdKbElIVnpaV1FnWVhNZ1lTQm1iR0ZuSUdGeklIZGxiR3dnWVhNZ2QybDBhQ0JoSUhaaGJIVmxMbHh1SUNBZ0tpQWdJRkpsYlc5MlpXUWdkMmhsYmlCemRISnBZM1JzZVNCbGNYVmhiQ0IwYnlCbVlXeHpaVHNnY0hKbGMyVnVkQ0IzYVhSb2IzVjBJR0VnZG1Gc2RXVWdkMmhsYmx4dUlDQWdLaUFnSUhOMGNtbGpkR3g1SUdWeGRXRnNJSFJ2SUhSeWRXVTdJSEJ5WlhObGJuUWdkMmwwYUNCaElIWmhiSFZsSUc5MGFHVnlkMmx6WlM1Y2JpQWdJQ292WEc0Z0lIQnliM0JsY25ScFpYTTZJSHQ5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJOWVhCd2FXNW5JR1p5YjIwZ2JHOTNaWEpqWVhObElIQnliM0JsY25SNUlHNWhiV1Z6SUhSdklIUm9aU0J3Y205d1pYSnNlU0JqWVhObFpDQjJaWEp6YVc5dUxDQjFjMlZrWEc0Z0lDQXFJSFJ2SUhkaGNtNGdhVzRnZEdobElHTmhjMlVnYjJZZ2JXbHpjMmx1WnlCd2NtOXdaWEowYVdWekxpQkJkbUZwYkdGaWJHVWdiMjVzZVNCcGJpQmZYMFJGVmw5ZkxseHVJQ0FnS2lCQWRIbHdaU0I3VDJKcVpXTjBmVnh1SUNBZ0tpOWNiaUFnWjJWMFVHOXpjMmxpYkdWVGRHRnVaR0Z5WkU1aGJXVTZJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCN2ZTQTZJRzUxYkd3c1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGc2JDQnZaaUIwYUdVZ2FYTkRkWE4wYjIxQmRIUnlhV0oxZEdVb0tTQm1kVzVqZEdsdmJuTWdkR2hoZENCb1lYWmxJR0psWlc0Z2FXNXFaV04wWldRdVhHNGdJQ0FxTDF4dUlDQmZhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVkdkVzVqZEdsdmJuTTZJRnRkTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYUdWamEzTWdkMmhsZEdobGNpQmhJSEJ5YjNCbGNuUjVJRzVoYldVZ2FYTWdZU0JqZFhOMGIyMGdZWFIwY21saWRYUmxMbHh1SUNBZ0tpQkFiV1YwYUc5a1hHNGdJQ0FxTDF4dUlDQnBjME4xYzNSdmJVRjBkSEpwWW5WMFpUb2dablZ1WTNScGIyNGdLR0YwZEhKcFluVjBaVTVoYldVcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElFUlBUVkJ5YjNCbGNuUjVMbDlwYzBOMWMzUnZiVUYwZEhKcFluVjBaVVoxYm1OMGFXOXVjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2x6UTNWemRHOXRRWFIwY21saWRYUmxSbTRnUFNCRVQwMVFjbTl3WlhKMGVTNWZhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVkdkVzVqZEdsdmJuTmJhVjA3WEc0Z0lDQWdJQ0JwWmlBb2FYTkRkWE4wYjIxQmRIUnlhV0oxZEdWR2JpaGhkSFJ5YVdKMWRHVk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQmtaV1poZFd4MElIQnliM0JsY25SNUlIWmhiSFZsSUdadmNpQmhJRVJQVFNCd2NtOXdaWEowZVNBb2FTNWxMaXdnYm05MElHRnVYRzRnSUNBcUlHRjBkSEpwWW5WMFpTa3VJRTF2YzNRZ1pHVm1ZWFZzZENCMllXeDFaWE1nWVhKbElDY25JRzl5SUdaaGJITmxMQ0JpZFhRZ2JtOTBJR0ZzYkM0Z1YyOXljMlVnZVdWMExGeHVJQ0FnS2lCemIyMWxJQ2hwYmlCd1lYSjBhV04xYkdGeUxDQmdkSGx3WldBcElIWmhjbmtnWkdWd1pXNWthVzVuSUc5dUlIUm9aU0IwZVhCbElHOW1JR1ZzWlcxbGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUZSUFJFODZJRWx6SUdsMElHSmxkSFJsY2lCMGJ5Qm5jbUZpSUdGc2JDQjBhR1VnY0c5emMybGliR1VnY0hKdmNHVnlkR2xsY3lCM2FHVnVJR055WldGMGFXNW5JR0Z1WEc0Z0lDQXFJR1ZzWlcxbGJuUWdkRzhnWVhadmFXUWdhR0YyYVc1bklIUnZJR055WldGMFpTQjBhR1VnYzJGdFpTQmxiR1Z0Wlc1MElIUjNhV05sUDF4dUlDQWdLaTljYmlBZ1oyVjBSR1ZtWVhWc2RGWmhiSFZsUm05eVVISnZjR1Z5ZEhrNklHWjFibU4wYVc5dUlDaHViMlJsVG1GdFpTd2djSEp2Y0NrZ2UxeHVJQ0FnSUhaaGNpQnViMlJsUkdWbVlYVnNkSE1nUFNCa1pXWmhkV3gwVm1Gc2RXVkRZV05vWlZ0dWIyUmxUbUZ0WlYwN1hHNGdJQ0FnZG1GeUlIUmxjM1JGYkdWdFpXNTBPMXh1SUNBZ0lHbG1JQ2doYm05a1pVUmxabUYxYkhSektTQjdYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1ZEWVdOb1pWdHViMlJsVG1GdFpWMGdQU0J1YjJSbFJHVm1ZWFZzZEhNZ1BTQjdmVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLQ0VvY0hKdmNDQnBiaUJ1YjJSbFJHVm1ZWFZzZEhNcEtTQjdYRzRnSUNBZ0lDQjBaWE4wUld4bGJXVnVkQ0E5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9ibTlrWlU1aGJXVXBPMXh1SUNBZ0lDQWdibTlrWlVSbFptRjFiSFJ6VzNCeWIzQmRJRDBnZEdWemRFVnNaVzFsYm5SYmNISnZjRjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdWIyUmxSR1ZtWVhWc2RITmJjSEp2Y0YwN1hHNGdJSDBzWEc1Y2JpQWdhVzVxWldOMGFXOXVPaUJFVDAxUWNtOXdaWEowZVVsdWFtVmpkR2x2Ymx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JFVDAxUWNtOXdaWEowZVRzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERPTVByb3BlcnR5T3BlcmF0aW9uc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIgPSByZXF1aXJlKCcuL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IC9eW2EtekEtWl9dW1xcd1xcLlxcLV0qJC87XG52YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xudmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTtcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHJlYWN0UHJvcHMgPSB7XG4gICAgY2hpbGRyZW46IHRydWUsXG4gICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHRydWUsXG4gICAga2V5OiB0cnVlLFxuICAgIHJlZjogdHJ1ZVxuICB9O1xuICB2YXIgd2FybmVkUHJvcGVydGllcyA9IHt9O1xuXG4gIHZhciB3YXJuVW5rbm93blByb3BlcnR5ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAocmVhY3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiByZWFjdFByb3BzW25hbWVdIHx8IHdhcm5lZFByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkUHJvcGVydGllc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlO1xuICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIGRhdGEtKiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBsb3dlcmNhc2U7IHN1Z2dlc3QgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uXG4gICAgdmFyIHN0YW5kYXJkTmFtZSA9IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDogRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpID8gRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDtcblxuICAgIC8vIEZvciBub3csIG9ubHkgd2FybiB3aGVuIHdlIGhhdmUgYSBzdWdnZXN0ZWQgY29ycmVjdGlvbi4gVGhpcyBwcmV2ZW50c1xuICAgIC8vIGxvZ2dpbmcgdG9vIG11Y2ggd2hlbiB1c2luZyB0cmFuc2ZlclByb3BzVG8uXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoc3RhbmRhcmROYW1lID09IG51bGwsICdVbmtub3duIERPTSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIHN0YW5kYXJkTmFtZSkgOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIERPTSBwcm9wZXJ0aWVzLlxuICovXG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0ge1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVkIElELlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIoaWQpO1xuICB9LFxuXG4gIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9kZSwgaWQpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSwgaWQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxsIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPVwiXCInO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuVW5rbm93blByb3BlcnR5KG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIGEgY3VzdG9tIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICovXG4gIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kO1xuICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7XG4gICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZUF0dHJpYnV0ZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgICAgICB2YXIgbmFtZXNwYWNlID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAgICAgICAgLy8gYHNldEF0dHJpYnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBgW29iamVjdF1gIGluIElFOC85LFxuICAgICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZTtcbiAgICAgICAgLy8gTXVzdCBleHBsaWNpdGx5IGNhc3QgdmFsdWVzIGZvciBIQVNfU0lERV9FRkZFQ1RTLXByb3BlcnRpZXMgdG8gdGhlXG4gICAgICAgIC8vIHByb3BlcnR5IHR5cGUgYmVmb3JlIGNvbXBhcmluZzsgb25seSBgdmFsdWVgIGRvZXMgYW5kIGlzIHN0cmluZy5cbiAgICAgICAgaWYgKCFwcm9wZXJ0eUluZm8uaGFzU2lkZUVmZmVjdHMgfHwgJycgKyBub2RlW3Byb3BOYW1lXSAhPT0gJycgKyB2YWx1ZSkge1xuICAgICAgICAgIC8vIENvbnRyYXJ5IHRvIGBzZXRBdHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGllcyBhcmUgcHJvcGVybHlcbiAgICAgICAgICAvLyBgdG9TdHJpbmdgZWQgYnkgSUU4LzkuXG4gICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuVW5rbm93blByb3BlcnR5KG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKi9cbiAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZUF0dHJpYnV0ZSkge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gRE9NUHJvcGVydHkuZ2V0RGVmYXVsdFZhbHVlRm9yUHJvcGVydHkobm9kZS5ub2RlTmFtZSwgcHJvcE5hbWUpO1xuICAgICAgICBpZiAoIXByb3BlcnR5SW5mby5oYXNTaWRlRWZmZWN0cyB8fCAnJyArIG5vZGVbcHJvcE5hbWVdICE9PSBkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblVua25vd25Qcm9wZXJ0eShuYW1lKTtcbiAgICB9XG4gIH1cblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKERPTVByb3BlcnR5T3BlcmF0aW9ucywgJ0RPTVByb3BlcnR5T3BlcmF0aW9ucycsIHtcbiAgc2V0VmFsdWVGb3JQcm9wZXJ0eTogJ3NldFZhbHVlRm9yUHJvcGVydHknLFxuICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTogJ3NldFZhbHVlRm9yQXR0cmlidXRlJyxcbiAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogJ2RlbGV0ZVZhbHVlRm9yUHJvcGVydHknXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2UkU5TlVISnZjR1Z5ZEhsUGNHVnlZWFJwYjI1ekxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk5jYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1JFOU5VSEp2Y0dWeWRIa2dQU0J5WlhGMWFYSmxLQ2N1TDBSUFRWQnliM0JsY25SNUp5azdYRzUyWVhJZ1VtVmhZM1JRWlhKbUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQmxjbVluS1R0Y2JseHVkbUZ5SUhGMWIzUmxRWFIwY21saWRYUmxWbUZzZFdWR2IzSkNjbTkzYzJWeUlEMGdjbVZ4ZFdseVpTZ25MaTl4ZFc5MFpVRjBkSEpwWW5WMFpWWmhiSFZsUm05eVFuSnZkM05sY2ljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiaTh2SUZOcGJYQnNhV1pwWldRZ2MzVmljMlYwWEc1MllYSWdWa0ZNU1VSZlFWUlVVa2xDVlZSRlgwNUJUVVZmVWtWSFJWZ2dQU0F2WGx0aExYcEJMVnBmWFZ0Y1hIZGNYQzVjWEMxZEtpUXZPMXh1ZG1GeUlHbHNiR1ZuWVd4QmRIUnlhV0oxZEdWT1lXMWxRMkZqYUdVZ1BTQjdmVHRjYm5aaGNpQjJZV3hwWkdGMFpXUkJkSFJ5YVdKMWRHVk9ZVzFsUTJGamFHVWdQU0I3ZlR0Y2JseHVablZ1WTNScGIyNGdhWE5CZEhSeWFXSjFkR1ZPWVcxbFUyRm1aU2hoZEhSeWFXSjFkR1ZPWVcxbEtTQjdYRzRnSUdsbUlDaDJZV3hwWkdGMFpXUkJkSFJ5YVdKMWRHVk9ZVzFsUTJGamFHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb1lYUjBjbWxpZFhSbFRtRnRaU2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1SUNCcFppQW9hV3hzWldkaGJFRjBkSEpwWW5WMFpVNWhiV1ZEWVdOb1pTNW9ZWE5QZDI1UWNtOXdaWEowZVNoaGRIUnlhV0oxZEdWT1lXMWxLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdmVnh1SUNCcFppQW9Wa0ZNU1VSZlFWUlVVa2xDVlZSRlgwNUJUVVZmVWtWSFJWZ3VkR1Z6ZENoaGRIUnlhV0oxZEdWT1lXMWxLU2tnZTF4dUlDQWdJSFpoYkdsa1lYUmxaRUYwZEhKcFluVjBaVTVoYldWRFlXTm9aVnRoZEhSeWFXSjFkR1ZPWVcxbFhTQTlJSFJ5ZFdVN1hHNGdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJSDFjYmlBZ2FXeHNaV2RoYkVGMGRISnBZblYwWlU1aGJXVkRZV05vWlZ0aGRIUnlhV0oxZEdWT1lXMWxYU0E5SUhSeWRXVTdYRzRnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblNXNTJZV3hwWkNCaGRIUnlhV0oxZEdVZ2JtRnRaVG9nWUNWellDY3NJR0YwZEhKcFluVjBaVTVoYldVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlITm9iM1ZzWkVsbmJtOXlaVlpoYkhWbEtIQnliM0JsY25SNVNXNW1ieXdnZG1Gc2RXVXBJSHRjYmlBZ2NtVjBkWEp1SUhaaGJIVmxJRDA5SUc1MWJHd2dmSHdnY0hKdmNHVnlkSGxKYm1adkxtaGhjMEp2YjJ4bFlXNVdZV3gxWlNBbUppQWhkbUZzZFdVZ2ZId2djSEp2Y0dWeWRIbEpibVp2TG1oaGMwNTFiV1Z5YVdOV1lXeDFaU0FtSmlCcGMwNWhUaWgyWVd4MVpTa2dmSHdnY0hKdmNHVnlkSGxKYm1adkxtaGhjMUJ2YzJsMGFYWmxUblZ0WlhKcFkxWmhiSFZsSUNZbUlIWmhiSFZsSUR3Z01TQjhmQ0J3Y205d1pYSjBlVWx1Wm04dWFHRnpUM1psY214dllXUmxaRUp2YjJ4bFlXNVdZV3gxWlNBbUppQjJZV3gxWlNBOVBUMGdabUZzYzJVN1hHNTlYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhjaUJ5WldGamRGQnliM0J6SUQwZ2UxeHVJQ0FnSUdOb2FXeGtjbVZ1T2lCMGNuVmxMRnh1SUNBZ0lHUmhibWRsY205MWMyeDVVMlYwU1c1dVpYSklWRTFNT2lCMGNuVmxMRnh1SUNBZ0lHdGxlVG9nZEhKMVpTeGNiaUFnSUNCeVpXWTZJSFJ5ZFdWY2JpQWdmVHRjYmlBZ2RtRnlJSGRoY201bFpGQnliM0JsY25ScFpYTWdQU0I3ZlR0Y2JseHVJQ0IyWVhJZ2QyRnlibFZ1YTI1dmQyNVFjbTl3WlhKMGVTQTlJR1oxYm1OMGFXOXVJQ2h1WVcxbEtTQjdYRzRnSUNBZ2FXWWdLSEpsWVdOMFVISnZjSE11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ0ppWWdjbVZoWTNSUWNtOXdjMXR1WVcxbFhTQjhmQ0IzWVhKdVpXUlFjbTl3WlhKMGFXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwSUNZbUlIZGhjbTVsWkZCeWIzQmxjblJwWlhOYmJtRnRaVjBwSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjNZWEp1WldSUWNtOXdaWEowYVdWelcyNWhiV1ZkSUQwZ2RISjFaVHRjYmlBZ0lDQjJZWElnYkc5M1pYSkRZWE5sWkU1aGJXVWdQU0J1WVcxbExuUnZURzkzWlhKRFlYTmxLQ2s3WEc1Y2JpQWdJQ0F2THlCa1lYUmhMU29nWVhSMGNtbGlkWFJsY3lCemFHOTFiR1FnWW1VZ2JHOTNaWEpqWVhObE95QnpkV2RuWlhOMElIUm9aU0JzYjNkbGNtTmhjMlVnZG1WeWMybHZibHh1SUNBZ0lIWmhjaUJ6ZEdGdVpHRnlaRTVoYldVZ1BTQkVUMDFRY205d1pYSjBlUzVwYzBOMWMzUnZiVUYwZEhKcFluVjBaU2hzYjNkbGNrTmhjMlZrVG1GdFpTa2dQeUJzYjNkbGNrTmhjMlZrVG1GdFpTQTZJRVJQVFZCeWIzQmxjblI1TG1kbGRGQnZjM05wWW14bFUzUmhibVJoY21ST1lXMWxMbWhoYzA5M2JsQnliM0JsY25SNUtHeHZkMlZ5UTJGelpXUk9ZVzFsS1NBL0lFUlBUVkJ5YjNCbGNuUjVMbWRsZEZCdmMzTnBZbXhsVTNSaGJtUmhjbVJPWVcxbFcyeHZkMlZ5UTJGelpXUk9ZVzFsWFNBNklHNTFiR3c3WEc1Y2JpQWdJQ0F2THlCR2IzSWdibTkzTENCdmJteDVJSGRoY200Z2QyaGxiaUIzWlNCb1lYWmxJR0VnYzNWbloyVnpkR1ZrSUdOdmNuSmxZM1JwYjI0dUlGUm9hWE1nY0hKbGRtVnVkSE5jYmlBZ0lDQXZMeUJzYjJkbmFXNW5JSFJ2YnlCdGRXTm9JSGRvWlc0Z2RYTnBibWNnZEhKaGJuTm1aWEpRY205d2MxUnZMbHh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSE4wWVc1a1lYSmtUbUZ0WlNBOVBTQnVkV3hzTENBblZXNXJibTkzYmlCRVQwMGdjSEp2Y0dWeWRIa2dKWE11SUVScFpDQjViM1VnYldWaGJpQWxjejhuTENCdVlXMWxMQ0J6ZEdGdVpHRnlaRTVoYldVcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOU8xeHVmVnh1WEc0dktpcGNiaUFxSUU5d1pYSmhkR2x2Ym5NZ1ptOXlJR1JsWVd4cGJtY2dkMmwwYUNCRVQwMGdjSEp2Y0dWeWRHbGxjeTVjYmlBcUwxeHVkbUZ5SUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5QTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QnRZWEpyZFhBZ1ptOXlJSFJvWlNCSlJDQndjbTl3WlhKMGVTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR2xrSUZWdVpYTmpZWEJsWkNCSlJDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCTllYSnJkWEFnYzNSeWFXNW5MbHh1SUNBZ0tpOWNiaUFnWTNKbFlYUmxUV0Z5YTNWd1JtOXlTVVE2SUdaMWJtTjBhVzl1SUNocFpDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCRVQwMVFjbTl3WlhKMGVTNUpSRjlCVkZSU1NVSlZWRVZmVGtGTlJTQXJJQ2M5SnlBcklIRjFiM1JsUVhSMGNtbGlkWFJsVm1Gc2RXVkdiM0pDY205M2MyVnlLR2xrS1R0Y2JpQWdmU3hjYmx4dUlDQnpaWFJCZEhSeWFXSjFkR1ZHYjNKSlJEb2dablZ1WTNScGIyNGdLRzV2WkdVc0lHbGtLU0I3WEc0Z0lDQWdibTlrWlM1elpYUkJkSFJ5YVdKMWRHVW9SRTlOVUhKdmNHVnlkSGt1U1VSZlFWUlVVa2xDVlZSRlgwNUJUVVVzSUdsa0tUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJ0WVhKcmRYQWdabTl5SUdFZ2NISnZjR1Z5ZEhrdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnVZVzFsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdLbjBnZG1Gc2RXVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1AzTjBjbWx1WjMwZ1RXRnlhM1Z3SUhOMGNtbHVaeXdnYjNJZ2JuVnNiQ0JwWmlCMGFHVWdjSEp2Y0dWeWRIa2dkMkZ6SUdsdWRtRnNhV1F1WEc0Z0lDQXFMMXh1SUNCamNtVmhkR1ZOWVhKcmRYQkdiM0pRY205d1pYSjBlVG9nWm5WdVkzUnBiMjRnS0c1aGJXVXNJSFpoYkhWbEtTQjdYRzRnSUNBZ2RtRnlJSEJ5YjNCbGNuUjVTVzVtYnlBOUlFUlBUVkJ5YjNCbGNuUjVMbkJ5YjNCbGNuUnBaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ1B5QkVUMDFRY205d1pYSjBlUzV3Y205d1pYSjBhV1Z6VzI1aGJXVmRJRG9nYm5Wc2JEdGNiaUFnSUNCcFppQW9jSEp2Y0dWeWRIbEpibVp2S1NCN1hHNGdJQ0FnSUNCcFppQW9jMmh2ZFd4a1NXZHViM0psVm1Gc2RXVW9jSEp2Y0dWeWRIbEpibVp2TENCMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNjbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RtRnlJR0YwZEhKcFluVjBaVTVoYldVZ1BTQndjbTl3WlhKMGVVbHVabTh1WVhSMGNtbGlkWFJsVG1GdFpUdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d1pYSjBlVWx1Wm04dWFHRnpRbTl2YkdWaGJsWmhiSFZsSUh4OElIQnliM0JsY25SNVNXNW1ieTVvWVhOUGRtVnliRzloWkdWa1FtOXZiR1ZoYmxaaGJIVmxJQ1ltSUhaaGJIVmxJRDA5UFNCMGNuVmxLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoZEhSeWFXSjFkR1ZPWVcxbElDc2dKejFjSWx3aUp6dGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCaGRIUnlhV0oxZEdWT1lXMWxJQ3NnSnowbklDc2djWFZ2ZEdWQmRIUnlhV0oxZEdWV1lXeDFaVVp2Y2tKeWIzZHpaWElvZG1Gc2RXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9SRTlOVUhKdmNHVnlkSGt1YVhORGRYTjBiMjFCZEhSeWFXSjFkR1VvYm1GdFpTa3BJSHRjYmlBZ0lDQWdJR2xtSUNoMllXeDFaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFuSnp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJ1WVcxbElDc2dKejBuSUNzZ2NYVnZkR1ZCZEhSeWFXSjFkR1ZXWVd4MVpVWnZja0p5YjNkelpYSW9kbUZzZFdVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkMkZ5YmxWdWEyNXZkMjVRY205d1pYSjBlU2h1WVcxbEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpYTWdiV0Z5YTNWd0lHWnZjaUJoSUdOMWMzUnZiU0J3Y205d1pYSjBlUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1aGJXVmNiaUFnSUNvZ1FIQmhjbUZ0SUhzcWZTQjJZV3gxWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRTFoY210MWNDQnpkSEpwYm1jc0lHOXlJR1Z0Y0hSNUlITjBjbWx1WnlCcFppQjBhR1VnY0hKdmNHVnlkSGtnZDJGeklHbHVkbUZzYVdRdVhHNGdJQ0FxTDF4dUlDQmpjbVZoZEdWTllYSnJkWEJHYjNKRGRYTjBiMjFCZEhSeWFXSjFkR1U2SUdaMWJtTjBhVzl1SUNodVlXMWxMQ0IyWVd4MVpTa2dlMXh1SUNBZ0lHbG1JQ2doYVhOQmRIUnlhV0oxZEdWT1lXMWxVMkZtWlNodVlXMWxLU0I4ZkNCMllXeDFaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdVlXMWxJQ3NnSnowbklDc2djWFZ2ZEdWQmRIUnlhV0oxZEdWV1lXeDFaVVp2Y2tKeWIzZHpaWElvZG1Gc2RXVXBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUnpJSFJvWlNCMllXeDFaU0JtYjNJZ1lTQndjbTl3WlhKMGVTQnZiaUJoSUc1dlpHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2V5cDlJSFpoYkhWbFhHNGdJQ0FxTDF4dUlDQnpaWFJXWVd4MVpVWnZjbEJ5YjNCbGNuUjVPaUJtZFc1amRHbHZiaUFvYm05a1pTd2dibUZ0WlN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0IyWVhJZ2NISnZjR1Z5ZEhsSmJtWnZJRDBnUkU5TlVISnZjR1Z5ZEhrdWNISnZjR1Z5ZEdsbGN5NW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU0EvSUVSUFRWQnliM0JsY25SNUxuQnliM0JsY25ScFpYTmJibUZ0WlYwZ09pQnVkV3hzTzF4dUlDQWdJR2xtSUNod2NtOXdaWEowZVVsdVptOHBJSHRjYmlBZ0lDQWdJSFpoY2lCdGRYUmhkR2x2YmsxbGRHaHZaQ0E5SUhCeWIzQmxjblI1U1c1bWJ5NXRkWFJoZEdsdmJrMWxkR2h2WkR0Y2JpQWdJQ0FnSUdsbUlDaHRkWFJoZEdsdmJrMWxkR2h2WkNrZ2UxeHVJQ0FnSUNBZ0lDQnRkWFJoZEdsdmJrMWxkR2h2WkNodWIyUmxMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSE5vYjNWc1pFbG5ibTl5WlZaaGJIVmxLSEJ5YjNCbGNuUjVTVzVtYnl3Z2RtRnNkV1VwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WkdWc1pYUmxWbUZzZFdWR2IzSlFjbTl3WlhKMGVTaHViMlJsTENCdVlXMWxLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvY0hKdmNHVnlkSGxKYm1adkxtMTFjM1JWYzJWQmRIUnlhV0oxZEdVcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdGMGRISnBZblYwWlU1aGJXVWdQU0J3Y205d1pYSjBlVWx1Wm04dVlYUjBjbWxpZFhSbFRtRnRaVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNWhiV1Z6Y0dGalpTQTlJSEJ5YjNCbGNuUjVTVzVtYnk1aGRIUnlhV0oxZEdWT1lXMWxjM0JoWTJVN1hHNGdJQ0FnSUNBZ0lDOHZJR0J6WlhSQmRIUnlhV0oxZEdWZ0lIZHBkR2dnYjJKcVpXTjBjeUJpWldOdmJXVnpJRzl1YkhrZ1lGdHZZbXBsWTNSZFlDQnBiaUJKUlRndk9TeGNiaUFnSUNBZ0lDQWdMeThnS0NjbklDc2dkbUZzZFdVcElHMWhhMlZ6SUdsMElHOTFkSEIxZENCMGFHVWdZMjl5Y21WamRDQjBiMU4wY21sdVp5Z3BMWFpoYkhWbExseHVJQ0FnSUNBZ0lDQnBaaUFvYm1GdFpYTndZV05sS1NCN1hHNGdJQ0FnSUNBZ0lDQWdibTlrWlM1elpYUkJkSFJ5YVdKMWRHVk9VeWh1WVcxbGMzQmhZMlVzSUdGMGRISnBZblYwWlU1aGJXVXNJQ2NuSUNzZ2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tIQnliM0JsY25SNVNXNW1ieTVvWVhOQ2IyOXNaV0Z1Vm1Gc2RXVWdmSHdnY0hKdmNHVnlkSGxKYm1adkxtaGhjMDkyWlhKc2IyRmtaV1JDYjI5c1pXRnVWbUZzZFdVZ0ppWWdkbUZzZFdVZ1BUMDlJSFJ5ZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0J1YjJSbExuTmxkRUYwZEhKcFluVjBaU2hoZEhSeWFXSjFkR1ZPWVcxbExDQW5KeWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JtOWtaUzV6WlhSQmRIUnlhV0oxZEdVb1lYUjBjbWxpZFhSbFRtRnRaU3dnSnljZ0t5QjJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ3Y205d1RtRnRaU0E5SUhCeWIzQmxjblI1U1c1bWJ5NXdjbTl3WlhKMGVVNWhiV1U3WEc0Z0lDQWdJQ0FnSUM4dklFMTFjM1FnWlhod2JHbGphWFJzZVNCallYTjBJSFpoYkhWbGN5Qm1iM0lnU0VGVFgxTkpSRVZmUlVaR1JVTlVVeTF3Y205d1pYSjBhV1Z6SUhSdklIUm9aVnh1SUNBZ0lDQWdJQ0F2THlCd2NtOXdaWEowZVNCMGVYQmxJR0psWm05eVpTQmpiMjF3WVhKcGJtYzdJRzl1YkhrZ1lIWmhiSFZsWUNCa2IyVnpJR0Z1WkNCcGN5QnpkSEpwYm1jdVhHNGdJQ0FnSUNBZ0lHbG1JQ2doY0hKdmNHVnlkSGxKYm1adkxtaGhjMU5wWkdWRlptWmxZM1J6SUh4OElDY25JQ3NnYm05a1pWdHdjbTl3VG1GdFpWMGdJVDA5SUNjbklDc2dkbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCRGIyNTBjbUZ5ZVNCMGJ5QmdjMlYwUVhSMGNtbGlkWFJsWUN3Z2IySnFaV04wSUhCeWIzQmxjblJwWlhNZ1lYSmxJSEJ5YjNCbGNteDVYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1lIUnZVM1J5YVc1bllHVmtJR0o1SUVsRk9DODVMbHh1SUNBZ0lDQWdJQ0FnSUc1dlpHVmJjSEp2Y0U1aGJXVmRJRDBnZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRVJQVFZCeWIzQmxjblI1TG1selEzVnpkRzl0UVhSMGNtbGlkWFJsS0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWMyVjBWbUZzZFdWR2IzSkJkSFJ5YVdKMWRHVW9ibTlrWlN3Z2JtRnRaU3dnZG1Gc2RXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZDJGeWJsVnVhMjV2ZDI1UWNtOXdaWEowZVNodVlXMWxLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnYzJWMFZtRnNkV1ZHYjNKQmRIUnlhV0oxZEdVNklHWjFibU4wYVc5dUlDaHViMlJsTENCdVlXMWxMQ0IyWVd4MVpTa2dlMXh1SUNBZ0lHbG1JQ2doYVhOQmRIUnlhV0oxZEdWT1lXMWxVMkZtWlNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kbUZzZFdVZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2JtOWtaUzV5WlcxdmRtVkJkSFJ5YVdKMWRHVW9ibUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJRzV2WkdVdWMyVjBRWFIwY21saWRYUmxLRzVoYldVc0lDY25JQ3NnZG1Gc2RXVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWc1pYUmxjeUIwYUdVZ2RtRnNkV1VnWm05eUlHRWdjSEp2Y0dWeWRIa2diMjRnWVNCdWIyUmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlHNXZaR1ZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNWhiV1ZjYmlBZ0lDb3ZYRzRnSUdSbGJHVjBaVlpoYkhWbFJtOXlVSEp2Y0dWeWRIazZJR1oxYm1OMGFXOXVJQ2h1YjJSbExDQnVZVzFsS1NCN1hHNGdJQ0FnZG1GeUlIQnliM0JsY25SNVNXNW1ieUE5SUVSUFRWQnliM0JsY25SNUxuQnliM0JsY25ScFpYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2tnUHlCRVQwMVFjbTl3WlhKMGVTNXdjbTl3WlhKMGFXVnpXMjVoYldWZElEb2diblZzYkR0Y2JpQWdJQ0JwWmlBb2NISnZjR1Z5ZEhsSmJtWnZLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JYVjBZWFJwYjI1TlpYUm9iMlFnUFNCd2NtOXdaWEowZVVsdVptOHViWFYwWVhScGIyNU5aWFJvYjJRN1hHNGdJQ0FnSUNCcFppQW9iWFYwWVhScGIyNU5aWFJvYjJRcElIdGNiaUFnSUNBZ0lDQWdiWFYwWVhScGIyNU5aWFJvYjJRb2JtOWtaU3dnZFc1a1pXWnBibVZrS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NISnZjR1Z5ZEhsSmJtWnZMbTExYzNSVmMyVkJkSFJ5YVdKMWRHVXBJSHRjYmlBZ0lDQWdJQ0FnYm05a1pTNXlaVzF2ZG1WQmRIUnlhV0oxZEdVb2NISnZjR1Z5ZEhsSmJtWnZMbUYwZEhKcFluVjBaVTVoYldVcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJ5YjNCT1lXMWxJRDBnY0hKdmNHVnlkSGxKYm1adkxuQnliM0JsY25SNVRtRnRaVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHUmxabUYxYkhSV1lXeDFaU0E5SUVSUFRWQnliM0JsY25SNUxtZGxkRVJsWm1GMWJIUldZV3gxWlVadmNsQnliM0JsY25SNUtHNXZaR1V1Ym05a1pVNWhiV1VzSUhCeWIzQk9ZVzFsS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z3Y205d1pYSjBlVWx1Wm04dWFHRnpVMmxrWlVWbVptVmpkSE1nZkh3Z0p5Y2dLeUJ1YjJSbFczQnliM0JPWVcxbFhTQWhQVDBnWkdWbVlYVnNkRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYm05a1pWdHdjbTl3VG1GdFpWMGdQU0JrWldaaGRXeDBWbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tFUlBUVkJ5YjNCbGNuUjVMbWx6UTNWemRHOXRRWFIwY21saWRYUmxLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQnViMlJsTG5KbGJXOTJaVUYwZEhKcFluVjBaU2h1WVcxbEtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSGRoY201VmJtdHViM2R1VUhKdmNHVnlkSGtvYm1GdFpTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JuMDdYRzVjYmxKbFlXTjBVR1Z5Wmk1dFpXRnpkWEpsVFdWMGFHOWtjeWhFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5Nc0lDZEVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk1uTENCN1hHNGdJSE5sZEZaaGJIVmxSbTl5VUhKdmNHVnlkSGs2SUNkelpYUldZV3gxWlVadmNsQnliM0JsY25SNUp5eGNiaUFnYzJWMFZtRnNkV1ZHYjNKQmRIUnlhV0oxZEdVNklDZHpaWFJXWVd4MVpVWnZja0YwZEhKcFluVjBaU2NzWEc0Z0lHUmxiR1YwWlZaaGJIVmxSbTl5VUhKdmNHVnlkSGs2SUNka1pXeGxkR1ZXWVd4MVpVWnZjbEJ5YjNCbGNuUjVKMXh1ZlNrN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6T3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIERhbmdlclxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSByZXF1aXJlKCdmYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAnKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGdldE1hcmt1cFdyYXAgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRNYXJrdXBXcmFwJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBPUEVOX1RBR19OQU1FX0VYUCA9IC9eKDxbXiBcXC8+XSspLztcbnZhciBSRVNVTFRfSU5ERVhfQVRUUiA9ICdkYXRhLWRhbmdlci1pbmRleCc7XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGBub2RlTmFtZWAgZnJvbSBhIHN0cmluZyBvZiBtYXJrdXAuXG4gKlxuICogTk9URTogRXh0cmFjdGluZyB0aGUgYG5vZGVOYW1lYCBkb2VzIG5vdCByZXF1aXJlIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoXG4gKiBiZWNhdXNlIHdlIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgUmVhY3QtZ2VuZXJhdGVkIG1hcmt1cCAoaS5lLiB0aGVyZSBhcmUgbm9cbiAqIHNwYWNlcyBzdXJyb3VuZGluZyB0aGUgb3BlbmluZyB0YWcgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGUpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAqIEByZXR1cm4ge3N0cmluZ30gTm9kZSBuYW1lIG9mIHRoZSBzdXBwbGllZCBtYXJrdXAuXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2V4dHJhY3Qtbm9kZW5hbWVcbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7XG4gIHJldHVybiBtYXJrdXAuc3Vic3RyaW5nKDEsIG1hcmt1cC5pbmRleE9mKCcgJykpO1xufVxuXG52YXIgRGFuZ2VyID0ge1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIG1hcmt1cCBpbnRvIGFuIGFycmF5IG9mIG5vZGVzLiBUaGUgbWFya3VwIGlzIGV4cGVjdGVkIHRvIHJlbmRlclxuICAgKiBpbnRvIGEgbGlzdCBvZiByb290IG5vZGVzLiBBbHNvLCB0aGUgbGVuZ3RoIG9mIGByZXN1bHRMaXN0YCBhbmRcbiAgICogYG1hcmt1cExpc3RgIHNob3VsZCBiZSB0aGUgc2FtZS5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxzdHJpbmc+fSBtYXJrdXBMaXN0IExpc3Qgb2YgbWFya3VwIHN0cmluZ3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50Pn0gTGlzdCBvZiByZW5kZXJlZCBub2Rlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlbmRlck1hcmt1cDogZnVuY3Rpb24gKG1hcmt1cExpc3QpIHtcbiAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVuZGVyTWFya3VwKC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgd29ya2VyICcgKyAndGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxseSAnICsgJ2JlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0IHRlc3Rpbmcgb3IgdXNlICcgKyAnUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciBub2RlTmFtZTtcbiAgICB2YXIgbWFya3VwQnlOb2RlTmFtZSA9IHt9O1xuICAgIC8vIEdyb3VwIG1hcmt1cCBieSBgbm9kZU5hbWVgIGlmIGEgd3JhcCBpcyBuZWNlc3NhcnksIGVsc2UgYnkgJyonLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3VwTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgIW1hcmt1cExpc3RbaV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZW5kZXJNYXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXBMaXN0W2ldKTtcbiAgICAgIG5vZGVOYW1lID0gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkgPyBub2RlTmFtZSA6ICcqJztcbiAgICAgIG1hcmt1cEJ5Tm9kZU5hbWVbbm9kZU5hbWVdID0gbWFya3VwQnlOb2RlTmFtZVtub2RlTmFtZV0gfHwgW107XG4gICAgICBtYXJrdXBCeU5vZGVOYW1lW25vZGVOYW1lXVtpXSA9IG1hcmt1cExpc3RbaV07XG4gICAgfVxuICAgIHZhciByZXN1bHRMaXN0ID0gW107XG4gICAgdmFyIHJlc3VsdExpc3RBc3NpZ25tZW50Q291bnQgPSAwO1xuICAgIGZvciAobm9kZU5hbWUgaW4gbWFya3VwQnlOb2RlTmFtZSkge1xuICAgICAgaWYgKCFtYXJrdXBCeU5vZGVOYW1lLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXJrdXBMaXN0QnlOb2RlTmFtZSA9IG1hcmt1cEJ5Tm9kZU5hbWVbbm9kZU5hbWVdO1xuXG4gICAgICAvLyBUaGlzIGZvci1pbiBsb29wIHNraXBzIHRoZSBob2xlcyBvZiB0aGUgc3BhcnNlIGFycmF5LiBUaGUgb3JkZXIgb2ZcbiAgICAgIC8vIGl0ZXJhdGlvbiBzaG91bGQgZm9sbG93IHRoZSBvcmRlciBvZiBhc3NpZ25tZW50LCB3aGljaCBoYXBwZW5zIHRvIG1hdGNoXG4gICAgICAvLyBudW1lcmljYWwgaW5kZXggb3JkZXIsIGJ1dCB3ZSBkb24ndCByZWx5IG9uIHRoYXQuXG4gICAgICB2YXIgcmVzdWx0SW5kZXg7XG4gICAgICBmb3IgKHJlc3VsdEluZGV4IGluIG1hcmt1cExpc3RCeU5vZGVOYW1lKSB7XG4gICAgICAgIGlmIChtYXJrdXBMaXN0QnlOb2RlTmFtZS5oYXNPd25Qcm9wZXJ0eShyZXN1bHRJbmRleCkpIHtcbiAgICAgICAgICB2YXIgbWFya3VwID0gbWFya3VwTGlzdEJ5Tm9kZU5hbWVbcmVzdWx0SW5kZXhdO1xuXG4gICAgICAgICAgLy8gUHVzaCB0aGUgcmVxdWVzdGVkIG1hcmt1cCB3aXRoIGFuIGFkZGl0aW9uYWwgUkVTVUxUX0lOREVYX0FUVFJcbiAgICAgICAgICAvLyBhdHRyaWJ1dGUuICBJZiB0aGUgbWFya3VwIGRvZXMgbm90IHN0YXJ0IHdpdGggYSA8IGNoYXJhY3RlciwgaXRcbiAgICAgICAgICAvLyB3aWxsIGJlIGRpc2NhcmRlZCBiZWxvdyAod2l0aCBhbiBhcHByb3ByaWF0ZSBjb25zb2xlLmVycm9yKS5cbiAgICAgICAgICBtYXJrdXBMaXN0QnlOb2RlTmFtZVtyZXN1bHRJbmRleF0gPSBtYXJrdXAucmVwbGFjZShPUEVOX1RBR19OQU1FX0VYUCxcbiAgICAgICAgICAvLyBUaGlzIGluZGV4IHdpbGwgYmUgcGFyc2VkIGJhY2sgb3V0IGJlbG93LlxuICAgICAgICAgICckMSAnICsgUkVTVUxUX0lOREVYX0FUVFIgKyAnPVwiJyArIHJlc3VsdEluZGV4ICsgJ1wiICcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbmRlciBlYWNoIGdyb3VwIG9mIG1hcmt1cCB3aXRoIHNpbWlsYXIgd3JhcHBpbmcgYG5vZGVOYW1lYC5cbiAgICAgIHZhciByZW5kZXJOb2RlcyA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXBMaXN0QnlOb2RlTmFtZS5qb2luKCcnKSwgZW1wdHlGdW5jdGlvbiAvLyBEbyBub3RoaW5nIHNwZWNpYWwgd2l0aCA8c2NyaXB0PiB0YWdzLlxuICAgICAgKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByZW5kZXJOb2Rlcy5sZW5ndGg7ICsraikge1xuICAgICAgICB2YXIgcmVuZGVyTm9kZSA9IHJlbmRlck5vZGVzW2pdO1xuICAgICAgICBpZiAocmVuZGVyTm9kZS5oYXNBdHRyaWJ1dGUgJiYgcmVuZGVyTm9kZS5oYXNBdHRyaWJ1dGUoUkVTVUxUX0lOREVYX0FUVFIpKSB7XG5cbiAgICAgICAgICByZXN1bHRJbmRleCA9ICtyZW5kZXJOb2RlLmdldEF0dHJpYnV0ZShSRVNVTFRfSU5ERVhfQVRUUik7XG4gICAgICAgICAgcmVuZGVyTm9kZS5yZW1vdmVBdHRyaWJ1dGUoUkVTVUxUX0lOREVYX0FUVFIpO1xuXG4gICAgICAgICAgISFyZXN1bHRMaXN0Lmhhc093blByb3BlcnR5KHJlc3VsdEluZGV4KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdEYW5nZXI6IEFzc2lnbmluZyB0byBhbiBhbHJlYWR5LW9jY3VwaWVkIHJlc3VsdCBpbmRleC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICByZXN1bHRMaXN0W3Jlc3VsdEluZGV4XSA9IHJlbmRlck5vZGU7XG5cbiAgICAgICAgICAvLyBUaGlzIHNob3VsZCBtYXRjaCByZXN1bHRMaXN0Lmxlbmd0aCBhbmQgbWFya3VwTGlzdC5sZW5ndGggd2hlblxuICAgICAgICAgIC8vIHdlJ3JlIGRvbmUuXG4gICAgICAgICAgcmVzdWx0TGlzdEFzc2lnbm1lbnRDb3VudCArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdEYW5nZXI6IERpc2NhcmRpbmcgdW5leHBlY3RlZCBub2RlOicsIHJlbmRlck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWx0aG91Z2ggcmVzdWx0TGlzdCB3YXMgcG9wdWxhdGVkIG91dCBvZiBvcmRlciwgaXQgc2hvdWxkIG5vdyBiZSBhIGRlbnNlXG4gICAgLy8gYXJyYXkuXG4gICAgIShyZXN1bHRMaXN0QXNzaWdubWVudENvdW50ID09PSByZXN1bHRMaXN0Lmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRGFuZ2VyOiBEaWQgbm90IGFzc2lnbiB0byBldmVyeSBpbmRleCBvZiByZXN1bHRMaXN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICEocmVzdWx0TGlzdC5sZW5ndGggPT09IG1hcmt1cExpc3QubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdEYW5nZXI6IEV4cGVjdGVkIG1hcmt1cCB0byByZW5kZXIgJXMgbm9kZXMsIGJ1dCByZW5kZXJlZCAlcy4nLCBtYXJrdXBMaXN0Lmxlbmd0aCwgcmVzdWx0TGlzdC5sZW5ndGgpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiByZXN1bHRMaXN0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIG5vZGUgd2l0aCBhIHN0cmluZyBvZiBtYXJrdXAgYXQgaXRzIGN1cnJlbnQgcG9zaXRpb24gd2l0aGluIGl0c1xuICAgKiBwYXJlbnQuIFRoZSBtYXJrdXAgbXVzdCByZW5kZXIgaW50byBhIHNpbmdsZSByb290IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gb2xkQ2hpbGQgQ2hpbGQgbm9kZSB0byByZXBsYWNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0byByZW5kZXIgaW4gcGxhY2Ugb2YgdGhlIGNoaWxkIG5vZGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwKSB7XG4gICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVuZGVyIG1hcmt1cCBpbiBhICcgKyAnd29ya2VyIHRocmVhZC4gTWFrZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9jdW1lbnRgIGFyZSBhdmFpbGFibGUgJyArICdnbG9iYWxseSBiZWZvcmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSAnICsgJ1JlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICFtYXJrdXAgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEob2xkQ2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnaHRtbCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgJyArICc8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVpcmtzIG1ha2UgdGhpcyB1bnJlbGlhYmxlICcgKyAnYW5kL29yIHNsb3cuIElmIHlvdSB3YW50IHRvIHJlbmRlciB0byB0aGUgcm9vdCB5b3UgbXVzdCB1c2UgJyArICdzZXJ2ZXIgcmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgbmV3Q2hpbGQ7XG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICBuZXdDaGlsZCA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDaGlsZCA9IG1hcmt1cDtcbiAgICB9XG4gICAgb2xkQ2hpbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKTtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhbmdlcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZSR0Z1WjJWeUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUVSaGJtZGxjbHh1SUNvZ1FIUjVjR1ZqYUdWamEzTWdjM1JoZEdsakxXOXViSGxjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCRmVHVmpkWFJwYjI1RmJuWnBjbTl1YldWdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMFY0WldOMWRHbHZia1Z1ZG1seWIyNXRaVzUwSnlrN1hHNWNiblpoY2lCamNtVmhkR1ZPYjJSbGMwWnliMjFOWVhKcmRYQWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlqY21WaGRHVk9iMlJsYzBaeWIyMU5ZWEpyZFhBbktUdGNiblpoY2lCbGJYQjBlVVoxYm1OMGFXOXVJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbEdkVzVqZEdsdmJpY3BPMXh1ZG1GeUlHZGxkRTFoY210MWNGZHlZWEFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5blpYUk5ZWEpyZFhCWGNtRndKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiblpoY2lCUFVFVk9YMVJCUjE5T1FVMUZYMFZZVUNBOUlDOWVLRHhiWGlCY1hDOCtYU3NwTHp0Y2JuWmhjaUJTUlZOVlRGUmZTVTVFUlZoZlFWUlVVaUE5SUNka1lYUmhMV1JoYm1kbGNpMXBibVJsZUNjN1hHNWNiaThxS2x4dUlDb2dSWGgwY21GamRITWdkR2hsSUdCdWIyUmxUbUZ0WldBZ1puSnZiU0JoSUhOMGNtbHVaeUJ2WmlCdFlYSnJkWEF1WEc0Z0tseHVJQ29nVGs5VVJUb2dSWGgwY21GamRHbHVaeUIwYUdVZ1lHNXZaR1ZPWVcxbFlDQmtiMlZ6SUc1dmRDQnlaWEYxYVhKbElHRWdjbVZuZFd4aGNpQmxlSEJ5WlhOemFXOXVJRzFoZEdOb1hHNGdLaUJpWldOaGRYTmxJSGRsSUcxaGEyVWdZWE56ZFcxd2RHbHZibk1nWVdKdmRYUWdVbVZoWTNRdFoyVnVaWEpoZEdWa0lHMWhjbXQxY0NBb2FTNWxMaUIwYUdWeVpTQmhjbVVnYm05Y2JpQXFJSE53WVdObGN5QnpkWEp5YjNWdVpHbHVaeUIwYUdVZ2IzQmxibWx1WnlCMFlXY2dZVzVrSUhSb1pYSmxJR2x6SUdGMElHeGxZWE4wSUc5dVpTQmhkSFJ5YVdKMWRHVXBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnRZWEpyZFhBZ1UzUnlhVzVuSUc5bUlHMWhjbXQxY0M1Y2JpQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdUbTlrWlNCdVlXMWxJRzltSUhSb1pTQnpkWEJ3YkdsbFpDQnRZWEpyZFhBdVhHNGdLaUJBYzJWbElHaDBkSEE2THk5cWMzQmxjbVl1WTI5dEwyVjRkSEpoWTNRdGJtOWtaVzVoYldWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWjJWMFRtOWtaVTVoYldVb2JXRnlhM1Z3S1NCN1hHNGdJSEpsZEhWeWJpQnRZWEpyZFhBdWMzVmljM1J5YVc1bktERXNJRzFoY210MWNDNXBibVJsZUU5bUtDY2dKeWtwTzF4dWZWeHVYRzUyWVhJZ1JHRnVaMlZ5SUQwZ2UxeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pXNWtaWEp6SUcxaGNtdDFjQ0JwYm5SdklHRnVJR0Z5Y21GNUlHOW1JRzV2WkdWekxpQlVhR1VnYldGeWEzVndJR2x6SUdWNGNHVmpkR1ZrSUhSdklISmxibVJsY2x4dUlDQWdLaUJwYm5SdklHRWdiR2x6ZENCdlppQnliMjkwSUc1dlpHVnpMaUJCYkhOdkxDQjBhR1VnYkdWdVozUm9JRzltSUdCeVpYTjFiSFJNYVhOMFlDQmhibVJjYmlBZ0lDb2dZRzFoY210MWNFeHBjM1JnSUhOb2IzVnNaQ0JpWlNCMGFHVWdjMkZ0WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdGhjbkpoZVR4emRISnBibWMrZlNCdFlYSnJkWEJNYVhOMElFeHBjM1FnYjJZZ2JXRnlhM1Z3SUhOMGNtbHVaM01nZEc4Z2NtVnVaR1Z5TGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoY25KaGVUeEVUMDFGYkdWdFpXNTBQbjBnVEdsemRDQnZaaUJ5Wlc1a1pYSmxaQ0J1YjJSbGN5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmtZVzVuWlhKdmRYTnNlVkpsYm1SbGNrMWhjbXQxY0RvZ1puVnVZM1JwYjI0Z0tHMWhjbXQxY0V4cGMzUXBJSHRjYmlBZ0lDQWhSWGhsWTNWMGFXOXVSVzUyYVhKdmJtMWxiblF1WTJGdVZYTmxSRTlOSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMlJoYm1kbGNtOTFjMng1VW1WdVpHVnlUV0Z5YTNWd0tDNHVMaWs2SUVOaGJtNXZkQ0J5Wlc1a1pYSWdiV0Z5YTNWd0lHbHVJR0VnZDI5eWEyVnlJQ2NnS3lBbmRHaHlaV0ZrTGlCTllXdGxJSE4xY21VZ1lIZHBibVJ2ZDJBZ1lXNWtJR0JrYjJOMWJXVnVkR0FnWVhKbElHRjJZV2xzWVdKc1pTQm5iRzlpWVd4c2VTQW5JQ3NnSjJKbFptOXlaU0J5WlhGMWFYSnBibWNnVW1WaFkzUWdkMmhsYmlCMWJtbDBJSFJsYzNScGJtY2diM0lnZFhObElDY2dLeUFuVW1WaFkzUkVUMDFUWlhKMlpYSXVjbVZ1WkdWeVZHOVRkSEpwYm1jZ1ptOXlJSE5sY25abGNpQnlaVzVrWlhKcGJtY3VKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhaaGNpQnViMlJsVG1GdFpUdGNiaUFnSUNCMllYSWdiV0Z5YTNWd1FubE9iMlJsVG1GdFpTQTlJSHQ5TzF4dUlDQWdJQzh2SUVkeWIzVndJRzFoY210MWNDQmllU0JnYm05a1pVNWhiV1ZnSUdsbUlHRWdkM0poY0NCcGN5QnVaV05sYzNOaGNua3NJR1ZzYzJVZ1lua2dKeW9uTGx4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYldGeWEzVndUR2x6ZEM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJVzFoY210MWNFeHBjM1JiYVYwZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWkdGdVoyVnliM1Z6YkhsU1pXNWtaWEpOWVhKcmRYQW9MaTR1S1RvZ1RXbHpjMmx1WnlCdFlYSnJkWEF1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdibTlrWlU1aGJXVWdQU0JuWlhST2IyUmxUbUZ0WlNodFlYSnJkWEJNYVhOMFcybGRLVHRjYmlBZ0lDQWdJRzV2WkdWT1lXMWxJRDBnWjJWMFRXRnlhM1Z3VjNKaGNDaHViMlJsVG1GdFpTa2dQeUJ1YjJSbFRtRnRaU0E2SUNjcUp6dGNiaUFnSUNBZ0lHMWhjbXQxY0VKNVRtOWtaVTVoYldWYmJtOWtaVTVoYldWZElEMGdiV0Z5YTNWd1FubE9iMlJsVG1GdFpWdHViMlJsVG1GdFpWMGdmSHdnVzEwN1hHNGdJQ0FnSUNCdFlYSnJkWEJDZVU1dlpHVk9ZVzFsVzI1dlpHVk9ZVzFsWFZ0cFhTQTlJRzFoY210MWNFeHBjM1JiYVYwN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCeVpYTjFiSFJNYVhOMElEMGdXMTA3WEc0Z0lDQWdkbUZ5SUhKbGMzVnNkRXhwYzNSQmMzTnBaMjV0Wlc1MFEyOTFiblFnUFNBd08xeHVJQ0FnSUdadmNpQW9ibTlrWlU1aGJXVWdhVzRnYldGeWEzVndRbmxPYjJSbFRtRnRaU2tnZTF4dUlDQWdJQ0FnYVdZZ0tDRnRZWEpyZFhCQ2VVNXZaR1ZPWVcxbExtaGhjMDkzYmxCeWIzQmxjblI1S0c1dlpHVk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIWmhjaUJ0WVhKcmRYQk1hWE4wUW5sT2IyUmxUbUZ0WlNBOUlHMWhjbXQxY0VKNVRtOWtaVTVoYldWYmJtOWtaVTVoYldWZE8xeHVYRzRnSUNBZ0lDQXZMeUJVYUdseklHWnZjaTFwYmlCc2IyOXdJSE5yYVhCeklIUm9aU0JvYjJ4bGN5QnZaaUIwYUdVZ2MzQmhjbk5sSUdGeWNtRjVMaUJVYUdVZ2IzSmtaWElnYjJaY2JpQWdJQ0FnSUM4dklHbDBaWEpoZEdsdmJpQnphRzkxYkdRZ1ptOXNiRzkzSUhSb1pTQnZjbVJsY2lCdlppQmhjM05wWjI1dFpXNTBMQ0IzYUdsamFDQm9ZWEJ3Wlc1eklIUnZJRzFoZEdOb1hHNGdJQ0FnSUNBdkx5QnVkVzFsY21sallXd2dhVzVrWlhnZ2IzSmtaWElzSUdKMWRDQjNaU0JrYjI0bmRDQnlaV3g1SUc5dUlIUm9ZWFF1WEc0Z0lDQWdJQ0IyWVhJZ2NtVnpkV3gwU1c1a1pYZzdYRzRnSUNBZ0lDQm1iM0lnS0hKbGMzVnNkRWx1WkdWNElHbHVJRzFoY210MWNFeHBjM1JDZVU1dlpHVk9ZVzFsS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h0WVhKcmRYQk1hWE4wUW5sT2IyUmxUbUZ0WlM1b1lYTlBkMjVRY205d1pYSjBlU2h5WlhOMWJIUkpibVJsZUNrcElIdGNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ2JXRnlhM1Z3SUQwZ2JXRnlhM1Z3VEdsemRFSjVUbTlrWlU1aGJXVmJjbVZ6ZFd4MFNXNWtaWGhkTzF4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnVUhWemFDQjBhR1VnY21WeGRXVnpkR1ZrSUcxaGNtdDFjQ0IzYVhSb0lHRnVJR0ZrWkdsMGFXOXVZV3dnVWtWVFZVeFVYMGxPUkVWWVgwRlVWRkpjYmlBZ0lDQWdJQ0FnSUNBdkx5QmhkSFJ5YVdKMWRHVXVJQ0JKWmlCMGFHVWdiV0Z5YTNWd0lHUnZaWE1nYm05MElITjBZWEowSUhkcGRHZ2dZU0E4SUdOb1lYSmhZM1JsY2l3Z2FYUmNiaUFnSUNBZ0lDQWdJQ0F2THlCM2FXeHNJR0psSUdScGMyTmhjbVJsWkNCaVpXeHZkeUFvZDJsMGFDQmhiaUJoY0hCeWIzQnlhV0YwWlNCamIyNXpiMnhsTG1WeWNtOXlLUzVjYmlBZ0lDQWdJQ0FnSUNCdFlYSnJkWEJNYVhOMFFubE9iMlJsVG1GdFpWdHlaWE4xYkhSSmJtUmxlRjBnUFNCdFlYSnJkWEF1Y21Wd2JHRmpaU2hQVUVWT1gxUkJSMTlPUVUxRlgwVllVQ3hjYmlBZ0lDQWdJQ0FnSUNBdkx5QlVhR2x6SUdsdVpHVjRJSGRwYkd3Z1ltVWdjR0Z5YzJWa0lHSmhZMnNnYjNWMElHSmxiRzkzTGx4dUlDQWdJQ0FnSUNBZ0lDY2tNU0FuSUNzZ1VrVlRWVXhVWDBsT1JFVllYMEZVVkZJZ0t5QW5QVndpSnlBcklISmxjM1ZzZEVsdVpHVjRJQ3NnSjF3aUlDY3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklGSmxibVJsY2lCbFlXTm9JR2R5YjNWd0lHOW1JRzFoY210MWNDQjNhWFJvSUhOcGJXbHNZWElnZDNKaGNIQnBibWNnWUc1dlpHVk9ZVzFsWUM1Y2JpQWdJQ0FnSUhaaGNpQnlaVzVrWlhKT2IyUmxjeUE5SUdOeVpXRjBaVTV2WkdWelJuSnZiVTFoY210MWNDaHRZWEpyZFhCTWFYTjBRbmxPYjJSbFRtRnRaUzVxYjJsdUtDY25LU3dnWlcxd2RIbEdkVzVqZEdsdmJpQXZMeUJFYnlCdWIzUm9hVzVuSUhOd1pXTnBZV3dnZDJsMGFDQThjMk55YVhCMFBpQjBZV2R6TGx4dUlDQWdJQ0FnS1R0Y2JseHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FpQTlJREE3SUdvZ1BDQnlaVzVrWlhKT2IyUmxjeTVzWlc1bmRHZzdJQ3NyYWlrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY21WdVpHVnlUbTlrWlNBOUlISmxibVJsY2s1dlpHVnpXMnBkTzF4dUlDQWdJQ0FnSUNCcFppQW9jbVZ1WkdWeVRtOWtaUzVvWVhOQmRIUnlhV0oxZEdVZ0ppWWdjbVZ1WkdWeVRtOWtaUzVvWVhOQmRIUnlhV0oxZEdVb1VrVlRWVXhVWDBsT1JFVllYMEZVVkZJcEtTQjdYRzVjYmlBZ0lDQWdJQ0FnSUNCeVpYTjFiSFJKYm1SbGVDQTlJQ3R5Wlc1a1pYSk9iMlJsTG1kbGRFRjBkSEpwWW5WMFpTaFNSVk5WVEZSZlNVNUVSVmhmUVZSVVVpazdYRzRnSUNBZ0lDQWdJQ0FnY21WdVpHVnlUbTlrWlM1eVpXMXZkbVZCZEhSeWFXSjFkR1VvVWtWVFZVeFVYMGxPUkVWWVgwRlVWRklwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJU0Z5WlhOMWJIUk1hWE4wTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEpsYzNWc2RFbHVaR1Y0S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RFWVc1blpYSTZJRUZ6YzJsbmJtbHVaeUIwYnlCaGJpQmhiSEpsWVdSNUxXOWpZM1Z3YVdWa0lISmxjM1ZzZENCcGJtUmxlQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJQ0FnSUNCeVpYTjFiSFJNYVhOMFczSmxjM1ZzZEVsdVpHVjRYU0E5SUhKbGJtUmxjazV2WkdVN1hHNWNiaUFnSUNBZ0lDQWdJQ0F2THlCVWFHbHpJSE5vYjNWc1pDQnRZWFJqYUNCeVpYTjFiSFJNYVhOMExteGxibWQwYUNCaGJtUWdiV0Z5YTNWd1RHbHpkQzVzWlc1bmRHZ2dkMmhsYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJSGRsSjNKbElHUnZibVV1WEc0Z0lDQWdJQ0FnSUNBZ2NtVnpkV3gwVEdsemRFRnpjMmxuYm0xbGJuUkRiM1Z1ZENBclBTQXhPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVZ5Y205eUtDZEVZVzVuWlhJNklFUnBjMk5oY21ScGJtY2dkVzVsZUhCbFkzUmxaQ0J1YjJSbE9pY3NJSEpsYm1SbGNrNXZaR1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1FXeDBhRzkxWjJnZ2NtVnpkV3gwVEdsemRDQjNZWE1nY0c5d2RXeGhkR1ZrSUc5MWRDQnZaaUJ2Y21SbGNpd2dhWFFnYzJodmRXeGtJRzV2ZHlCaVpTQmhJR1JsYm5ObFhHNGdJQ0FnTHk4Z1lYSnlZWGt1WEc0Z0lDQWdJU2h5WlhOMWJIUk1hWE4wUVhOemFXZHViV1Z1ZEVOdmRXNTBJRDA5UFNCeVpYTjFiSFJNYVhOMExteGxibWQwYUNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUkdGdVoyVnlPaUJFYVdRZ2JtOTBJR0Z6YzJsbmJpQjBieUJsZG1WeWVTQnBibVJsZUNCdlppQnlaWE4xYkhSTWFYTjBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDRW9jbVZ6ZFd4MFRHbHpkQzVzWlc1bmRHZ2dQVDA5SUcxaGNtdDFjRXhwYzNRdWJHVnVaM1JvS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RFWVc1blpYSTZJRVY0Y0dWamRHVmtJRzFoY210MWNDQjBieUJ5Wlc1a1pYSWdKWE1nYm05a1pYTXNJR0oxZENCeVpXNWtaWEpsWkNBbGN5NG5MQ0J0WVhKcmRYQk1hWE4wTG14bGJtZDBhQ3dnY21WemRXeDBUR2x6ZEM1c1pXNW5kR2dwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFJNYVhOME8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhCc1lXTmxjeUJoSUc1dlpHVWdkMmwwYUNCaElITjBjbWx1WnlCdlppQnRZWEpyZFhBZ1lYUWdhWFJ6SUdOMWNuSmxiblFnY0c5emFYUnBiMjRnZDJsMGFHbHVJR2wwYzF4dUlDQWdLaUJ3WVhKbGJuUXVJRlJvWlNCdFlYSnJkWEFnYlhWemRDQnlaVzVrWlhJZ2FXNTBieUJoSUhOcGJtZHNaU0J5YjI5MElHNXZaR1V1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdiMnhrUTJocGJHUWdRMmhwYkdRZ2JtOWtaU0IwYnlCeVpYQnNZV05sTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiV0Z5YTNWd0lFMWhjbXQxY0NCMGJ5QnlaVzVrWlhJZ2FXNGdjR3hoWTJVZ2IyWWdkR2hsSUdOb2FXeGtJRzV2WkdVdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pHRnVaMlZ5YjNWemJIbFNaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEE2SUdaMWJtTjBhVzl1SUNodmJHUkRhR2xzWkN3Z2JXRnlhM1Z3S1NCN1hHNGdJQ0FnSVVWNFpXTjFkR2x2YmtWdWRtbHliMjV0Wlc1MExtTmhibFZ6WlVSUFRTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNka1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjQ2d1TGk0cE9pQkRZVzV1YjNRZ2NtVnVaR1Z5SUcxaGNtdDFjQ0JwYmlCaElDY2dLeUFuZDI5eWEyVnlJSFJvY21WaFpDNGdUV0ZyWlNCemRYSmxJR0IzYVc1a2IzZGdJR0Z1WkNCZ1pHOWpkVzFsYm5SZ0lHRnlaU0JoZG1GcGJHRmliR1VnSnlBcklDZG5iRzlpWVd4c2VTQmlaV1p2Y21VZ2NtVnhkV2x5YVc1bklGSmxZV04wSUhkb1pXNGdkVzVwZENCMFpYTjBhVzVuSUc5eUlIVnpaU0FuSUNzZ0oxSmxZV04wUkU5TlUyVnlkbVZ5TG5KbGJtUmxjbFJ2VTNSeWFXNW5LQ2tnWm05eUlITmxjblpsY2lCeVpXNWtaWEpwYm1jdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0Z0WVhKcmRYQWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblpHRnVaMlZ5YjNWemJIbFNaWEJzWVdObFRtOWtaVmRwZEdoTllYSnJkWEFvTGk0dUtUb2dUV2x6YzJsdVp5QnRZWEpyZFhBdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0VvYjJ4a1EyaHBiR1F1ZEdGblRtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncElDRTlQU0FuYUhSdGJDY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3S0M0dUxpazZJRU5oYm01dmRDQnlaWEJzWVdObElHMWhjbXQxY0NCdlppQjBhR1VnSnlBcklDYzhhSFJ0YkQ0Z2JtOWtaUzRnVkdocGN5QnBjeUJpWldOaGRYTmxJR0p5YjNkelpYSWdjWFZwY210eklHMWhhMlVnZEdocGN5QjFibkpsYkdsaFlteGxJQ2NnS3lBbllXNWtMMjl5SUhOc2IzY3VJRWxtSUhsdmRTQjNZVzUwSUhSdklISmxibVJsY2lCMGJ5QjBhR1VnY205dmRDQjViM1VnYlhWemRDQjFjMlVnSnlBcklDZHpaWEoyWlhJZ2NtVnVaR1Z5YVc1bkxpQlRaV1VnVW1WaFkzUkVUMDFUWlhKMlpYSXVjbVZ1WkdWeVZHOVRkSEpwYm1jb0tTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCMllYSWdibVYzUTJocGJHUTdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnRZWEpyZFhBZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0J1WlhkRGFHbHNaQ0E5SUdOeVpXRjBaVTV2WkdWelJuSnZiVTFoY210MWNDaHRZWEpyZFhBc0lHVnRjSFI1Um5WdVkzUnBiMjRwV3pCZE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J1WlhkRGFHbHNaQ0E5SUcxaGNtdDFjRHRjYmlBZ0lDQjlYRzRnSUNBZ2IyeGtRMmhwYkdRdWNHRnlaVzUwVG05a1pTNXlaWEJzWVdObFEyaHBiR1FvYm1WM1EyaHBiR1FzSUc5c1pFTm9hV3hrS1R0Y2JpQWdmVnh1WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRVJoYm1kbGNqc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudFBsdWdpbkh1YlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBJbnRlcm5hbCBzdG9yZSBmb3IgZXZlbnQgbGlzdGVuZXJzXG4gKi9cbnZhciBsaXN0ZW5lckJhbmsgPSB7fTtcblxuLyoqXG4gKiBJbnRlcm5hbCBxdWV1ZSBvZiBldmVudHMgdGhhdCBoYXZlIGFjY3VtdWxhdGVkIHRoZWlyIGRpc3BhdGNoZXMgYW5kIGFyZVxuICogd2FpdGluZyB0byBoYXZlIHRoZWlyIGRpc3BhdGNoZXMgZXhlY3V0ZWQuXG4gKi9cbnZhciBldmVudFF1ZXVlID0gbnVsbDtcblxuLyoqXG4gKiBEaXNwYXRjaGVzIGFuIGV2ZW50IGFuZCByZWxlYXNlcyBpdCBiYWNrIGludG8gdGhlIHBvb2wsIHVubGVzcyBwZXJzaXN0ZW50LlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gZXZlbnQgU3ludGhldGljIGV2ZW50IHRvIGJlIGRpc3BhdGNoZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcilcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBmdW5jdGlvbiAoZXZlbnQsIHNpbXVsYXRlZCkge1xuICBpZiAoZXZlbnQpIHtcbiAgICBFdmVudFBsdWdpblV0aWxzLmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKTtcblxuICAgIGlmICghZXZlbnQuaXNQZXJzaXN0ZW50KCkpIHtcbiAgICAgIGV2ZW50LmNvbnN0cnVjdG9yLnJlbGVhc2UoZXZlbnQpO1xuICAgIH1cbiAgfVxufTtcbnZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQgPSBmdW5jdGlvbiAoZSkge1xuICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIHRydWUpO1xufTtcbnZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCA9IGZ1bmN0aW9uIChlKSB7XG4gIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgZmFsc2UpO1xufTtcblxuLyoqXG4gKiAtIGBJbnN0YW5jZUhhbmRsZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQgcGVyZm9ybXMgbG9naWNhbCB0cmF2ZXJzYWxzIG9mIERPTVxuICogICBoaWVyYXJjaHkgZ2l2ZW4gaWRzIG9mIHRoZSBsb2dpY2FsIERPTSBlbGVtZW50cyBpbnZvbHZlZC5cbiAqL1xudmFyIEluc3RhbmNlSGFuZGxlID0gbnVsbDtcblxuZnVuY3Rpb24gdmFsaWRhdGVJbnN0YW5jZUhhbmRsZSgpIHtcbiAgdmFyIHZhbGlkID0gSW5zdGFuY2VIYW5kbGUgJiYgSW5zdGFuY2VIYW5kbGUudHJhdmVyc2VUd29QaGFzZSAmJiBJbnN0YW5jZUhhbmRsZS50cmF2ZXJzZUVudGVyTGVhdmU7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHZhbGlkLCAnSW5zdGFuY2VIYW5kbGUgbm90IGluamVjdGVkIGJlZm9yZSB1c2UhJykgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBldmVudCBwbHVnaW5zIHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC5cbiAqXG4gKiBFdmVudCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgYGV4dHJhY3RFdmVudHNgIHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcsIG9iamVjdCk6ICp9XG4gKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvXG4gKiAgICAgZXh0cmFjdCBzeW50aGV0aWMgZXZlbnRzIHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC5cbiAqXG4gKiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fVxuICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRoYXQgZmlyZSBldmVudHMgbXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb25cbiAqICAgICBuYW1lcyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9mIHRoaXMgbWFwcGluZyBtdXN0XG4gKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5hbWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuXG4gKlxuICogICBgZXhlY3V0ZURpc3BhdGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX1cbiAqICAgICBPcHRpb25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlzcGF0Y2hlZC4gQnlcbiAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGludm9rZWQuXG4gKlxuICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIEV2ZW50UGx1Z2luSHViID0ge1xuXG4gIC8qKlxuICAgKiBNZXRob2RzIGZvciBpbmplY3RpbmcgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgaW5qZWN0aW9uOiB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gSW5qZWN0ZWRNb3VudFxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBpbmplY3RNb3VudDogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0TW91bnQsXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gSW5qZWN0ZWRJbnN0YW5jZUhhbmRsZVxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBpbmplY3RJbnN0YW5jZUhhbmRsZTogZnVuY3Rpb24gKEluamVjdGVkSW5zdGFuY2VIYW5kbGUpIHtcbiAgICAgIEluc3RhbmNlSGFuZGxlID0gSW5qZWN0ZWRJbnN0YW5jZUhhbmRsZTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlSW5zdGFuY2VIYW5kbGUoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0SW5zdGFuY2VIYW5kbGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlSW5zdGFuY2VIYW5kbGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBJbnN0YW5jZUhhbmRsZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcixcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuICAgICAqL1xuICAgIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWVcblxuICB9LFxuXG4gIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczogRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MsXG5cbiAgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMsXG5cbiAgLyoqXG4gICAqIFN0b3JlcyBgbGlzdGVuZXJgIGF0IGBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1baWRdYC4gSXMgaWRlbXBvdGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIHRoZSBET00gZWxlbWVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLlxuICAgKi9cbiAgcHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpZCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcbiAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgJXMgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbiwgaW5zdGVhZCBnb3QgdHlwZSAlcycsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdIHx8IChsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gPSB7fSk7XG4gICAgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVbaWRdID0gbGlzdGVuZXI7XG5cbiAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGlkLCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIERPTSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn0gVGhlIHN0b3JlZCBjYWxsYmFjay5cbiAgICovXG4gIGdldExpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgcmV0dXJuIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lICYmIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2lkXTtcbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyBhIGxpc3RlbmVyIGZyb20gdGhlIHJlZ2lzdHJhdGlvbiBiYW5rLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIERPTSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqL1xuICBkZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG4gICAgICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGlkLCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbCAtLSB3aGVuIGlzIGl0P1xuICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkge1xuICAgICAgZGVsZXRlIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2lkXTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElELlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIERPTSBlbGVtZW50LlxuICAgKi9cbiAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiAoaWQpIHtcbiAgICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGluIGxpc3RlbmVyQmFuaykge1xuICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1baWRdKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAgICAgICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGlkLCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtpZF07XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBBbGxvd3MgcmVnaXN0ZXJlZCBwbHVnaW5zIGFuIG9wcG9ydHVuaXR5IHRvIGV4dHJhY3QgZXZlbnRzIGZyb20gdG9wLWxldmVsXG4gICAqIG5hdGl2ZSBicm93c2VyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0b3BMZXZlbFRhcmdldCBUaGUgbGlzdGVuaW5nIGNvbXBvbmVudCByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFRhcmdldElEIElEIG9mIGB0b3BMZXZlbFRhcmdldGAuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZhciBldmVudHM7XG4gICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRpbWUuXG4gICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldO1xuICAgICAgaWYgKHBvc3NpYmxlUGx1Z2luKSB7XG4gICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBsdWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdG9wTGV2ZWxUYXJnZXQsIHRvcExldmVsVGFyZ2V0SUQsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAgIGlmIChleHRyYWN0ZWRFdmVudHMpIHtcbiAgICAgICAgICBldmVudHMgPSBhY2N1bXVsYXRlSW50byhldmVudHMsIGV4dHJhY3RlZEV2ZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50cztcbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZXMgYSBzeW50aGV0aWMgZXZlbnQgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuXG4gICAqIGBwcm9jZXNzRXZlbnRRdWV1ZWAgaXMgaW52b2tlZC5cbiAgICpcbiAgICogQHBhcmFtIHsqfSBldmVudHMgQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUV2ZW50czogZnVuY3Rpb24gKGV2ZW50cykge1xuICAgIGlmIChldmVudHMpIHtcbiAgICAgIGV2ZW50UXVldWUgPSBhY2N1bXVsYXRlSW50byhldmVudFF1ZXVlLCBldmVudHMpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbGwgc3ludGhldGljIGV2ZW50cyBvbiB0aGUgZXZlbnQgcXVldWUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvY2Vzc0V2ZW50UXVldWU6IGZ1bmN0aW9uIChzaW11bGF0ZWQpIHtcbiAgICAvLyBTZXQgYGV2ZW50UXVldWVgIHRvIG51bGwgYmVmb3JlIHByb2Nlc3NpbmcgaXQgc28gdGhhdCB3ZSBjYW4gdGVsbCBpZiBtb3JlXG4gICAgLy8gZXZlbnRzIGdldCBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nLlxuICAgIHZhciBwcm9jZXNzaW5nRXZlbnRRdWV1ZSA9IGV2ZW50UXVldWU7XG4gICAgZXZlbnRRdWV1ZSA9IG51bGw7XG4gICAgaWYgKHNpbXVsYXRlZCkge1xuICAgICAgZm9yRWFjaEFjY3VtdWxhdGVkKHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsKTtcbiAgICB9XG4gICAgISFldmVudFF1ZXVlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZlbnRzIHdlcmUgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyAnICsgJ2FuIGV2ZW50IHF1ZXVlLiBTdXBwb3J0IGZvciB0aGlzIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIC8vIFRoaXMgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcmV0aHJvdyBpZiBhbnkgb2YgdGhlIGV2ZW50IGhhbmRsZXJzIHRocmV3LlxuICAgIFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IoKTtcbiAgfSxcblxuICAvKipcbiAgICogVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGVzdHMgb25seS4gRG8gbm90IHVzZSFcbiAgICovXG4gIF9fcHVyZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICBsaXN0ZW5lckJhbmsgPSB7fTtcbiAgfSxcblxuICBfX2dldExpc3RlbmVyQmFuazogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBsaXN0ZW5lckJhbms7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpbkh1Yjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZSWFpsYm5SUWJIVm5hVzVJZFdJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElFVjJaVzUwVUd4MVoybHVTSFZpWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTQTlJSEpsY1hWcGNtVW9KeTR2UlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVNjcE8xeHVkbUZ5SUVWMlpXNTBVR3gxWjJsdVZYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwwVjJaVzUwVUd4MVoybHVWWFJwYkhNbktUdGNiblpoY2lCU1pXRmpkRVZ5Y205eVZYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUlhKeWIzSlZkR2xzY3ljcE8xeHVYRzUyWVhJZ1lXTmpkVzExYkdGMFpVbHVkRzhnUFNCeVpYRjFhWEpsS0NjdUwyRmpZM1Z0ZFd4aGRHVkpiblJ2SnlrN1hHNTJZWElnWm05eVJXRmphRUZqWTNWdGRXeGhkR1ZrSUQwZ2NtVnhkV2x5WlNnbkxpOW1iM0pGWVdOb1FXTmpkVzExYkdGMFpXUW5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNHZLaXBjYmlBcUlFbHVkR1Z5Ym1Gc0lITjBiM0psSUdadmNpQmxkbVZ1ZENCc2FYTjBaVzVsY25OY2JpQXFMMXh1ZG1GeUlHeHBjM1JsYm1WeVFtRnVheUE5SUh0OU8xeHVYRzR2S2lwY2JpQXFJRWx1ZEdWeWJtRnNJSEYxWlhWbElHOW1JR1YyWlc1MGN5QjBhR0YwSUdoaGRtVWdZV05qZFcxMWJHRjBaV1FnZEdobGFYSWdaR2x6Y0dGMFkyaGxjeUJoYm1RZ1lYSmxYRzRnS2lCM1lXbDBhVzVuSUhSdklHaGhkbVVnZEdobGFYSWdaR2x6Y0dGMFkyaGxjeUJsZUdWamRYUmxaQzVjYmlBcUwxeHVkbUZ5SUdWMlpXNTBVWFZsZFdVZ1BTQnVkV3hzTzF4dVhHNHZLaXBjYmlBcUlFUnBjM0JoZEdOb1pYTWdZVzRnWlhabGJuUWdZVzVrSUhKbGJHVmhjMlZ6SUdsMElHSmhZMnNnYVc1MGJ5QjBhR1VnY0c5dmJDd2dkVzVzWlhOeklIQmxjbk5wYzNSbGJuUXVYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQmxkbVZ1ZENCVGVXNTBhR1YwYVdNZ1pYWmxiblFnZEc4Z1ltVWdaR2x6Y0dGMFkyaGxaQzVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ2MybHRkV3hoZEdWa0lFbG1JSFJvWlNCbGRtVnVkQ0JwY3lCemFXMTFiR0YwWldRZ0tHTm9ZVzVuWlhNZ1pYaHVJR0psYUdGMmFXOXlLVnh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1ZG1GeUlHVjRaV04xZEdWRWFYTndZWFJqYUdWelFXNWtVbVZzWldGelpTQTlJR1oxYm1OMGFXOXVJQ2hsZG1WdWRDd2djMmx0ZFd4aGRHVmtLU0I3WEc0Z0lHbG1JQ2hsZG1WdWRDa2dlMXh1SUNBZ0lFVjJaVzUwVUd4MVoybHVWWFJwYkhNdVpYaGxZM1YwWlVScGMzQmhkR05vWlhOSmJrOXlaR1Z5S0dWMlpXNTBMQ0J6YVcxMWJHRjBaV1FwTzF4dVhHNGdJQ0FnYVdZZ0tDRmxkbVZ1ZEM1cGMxQmxjbk5wYzNSbGJuUW9LU2tnZTF4dUlDQWdJQ0FnWlhabGJuUXVZMjl1YzNSeWRXTjBiM0l1Y21Wc1pXRnpaU2hsZG1WdWRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVkbUZ5SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6UVc1a1VtVnNaV0Z6WlZOcGJYVnNZWFJsWkNBOUlHWjFibU4wYVc5dUlDaGxLU0I3WEc0Z0lISmxkSFZ5YmlCbGVHVmpkWFJsUkdsemNHRjBZMmhsYzBGdVpGSmxiR1ZoYzJVb1pTd2dkSEoxWlNrN1hHNTlPMXh1ZG1GeUlHVjRaV04xZEdWRWFYTndZWFJqYUdWelFXNWtVbVZzWldGelpWUnZjRXhsZG1Wc0lEMGdablZ1WTNScGIyNGdLR1VwSUh0Y2JpQWdjbVYwZFhKdUlHVjRaV04xZEdWRWFYTndZWFJqYUdWelFXNWtVbVZzWldGelpTaGxMQ0JtWVd4elpTazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlDMGdZRWx1YzNSaGJtTmxTR0Z1Wkd4bFlEb2dXM0psY1hWcGNtVmtYU0JOYjJSMWJHVWdkR2hoZENCd1pYSm1iM0p0Y3lCc2IyZHBZMkZzSUhSeVlYWmxjbk5oYkhNZ2IyWWdSRTlOWEc0Z0tpQWdJR2hwWlhKaGNtTm9lU0JuYVhabGJpQnBaSE1nYjJZZ2RHaGxJR3h2WjJsallXd2dSRTlOSUdWc1pXMWxiblJ6SUdsdWRtOXNkbVZrTGx4dUlDb3ZYRzUyWVhJZ1NXNXpkR0Z1WTJWSVlXNWtiR1VnUFNCdWRXeHNPMXh1WEc1bWRXNWpkR2x2YmlCMllXeHBaR0YwWlVsdWMzUmhibU5sU0dGdVpHeGxLQ2tnZTF4dUlDQjJZWElnZG1Gc2FXUWdQU0JKYm5OMFlXNWpaVWhoYm1Sc1pTQW1KaUJKYm5OMFlXNWpaVWhoYm1Sc1pTNTBjbUYyWlhKelpWUjNiMUJvWVhObElDWW1JRWx1YzNSaGJtTmxTR0Z1Wkd4bExuUnlZWFpsY25ObFJXNTBaWEpNWldGMlpUdGNiaUFnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2RtRnNhV1FzSUNkSmJuTjBZVzVqWlVoaGJtUnNaU0J1YjNRZ2FXNXFaV04wWldRZ1ltVm1iM0psSUhWelpTRW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JuMWNibHh1THlvcVhHNGdLaUJVYUdseklHbHpJR0VnZFc1cFptbGxaQ0JwYm5SbGNtWmhZMlVnWm05eUlHVjJaVzUwSUhCc2RXZHBibk1nZEc4Z1ltVWdhVzV6ZEdGc2JHVmtJR0Z1WkNCamIyNW1hV2QxY21Wa0xseHVJQ3BjYmlBcUlFVjJaVzUwSUhCc2RXZHBibk1nWTJGdUlHbHRjR3hsYldWdWRDQjBhR1VnWm05c2JHOTNhVzVuSUhCeWIzQmxjblJwWlhNNlhHNGdLbHh1SUNvZ0lDQmdaWGgwY21GamRFVjJaVzUwYzJBZ2UyWjFibU4wYVc5dUtITjBjbWx1Wnl3Z1JFOU5SWFpsYm5SVVlYSm5aWFFzSUhOMGNtbHVaeXdnYjJKcVpXTjBLVG9nS24xY2JpQXFJQ0FnSUNCU1pYRjFhWEpsWkM0Z1YyaGxiaUJoSUhSdmNDMXNaWFpsYkNCbGRtVnVkQ0JwY3lCbWFYSmxaQ3dnZEdocGN5QnRaWFJvYjJRZ2FYTWdaWGh3WldOMFpXUWdkRzljYmlBcUlDQWdJQ0JsZUhSeVlXTjBJSE41Ym5Sb1pYUnBZeUJsZG1WdWRITWdkR2hoZENCM2FXeHNJR2x1SUhSMWNtNGdZbVVnY1hWbGRXVmtJR0Z1WkNCa2FYTndZWFJqYUdWa0xseHVJQ3BjYmlBcUlDQWdZR1YyWlc1MFZIbHdaWE5nSUh0dlltcGxZM1I5WEc0Z0tpQWdJQ0FnVDNCMGFXOXVZV3dzSUhCc2RXZHBibk1nZEdoaGRDQm1hWEpsSUdWMlpXNTBjeUJ0ZFhOMElIQjFZbXhwYzJnZ1lTQnRZWEJ3YVc1bklHOW1JSEpsWjJsemRISmhkR2x2Ymx4dUlDb2dJQ0FnSUc1aGJXVnpJSFJvWVhRZ1lYSmxJSFZ6WldRZ2RHOGdjbVZuYVhOMFpYSWdiR2x6ZEdWdVpYSnpMaUJXWVd4MVpYTWdiMllnZEdocGN5QnRZWEJ3YVc1bklHMTFjM1JjYmlBcUlDQWdJQ0JpWlNCdlltcGxZM1J6SUhSb1lYUWdZMjl1ZEdGcGJpQmdjbVZuYVhOMGNtRjBhVzl1VG1GdFpXQWdiM0lnWUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpZQzVjYmlBcVhHNGdLaUFnSUdCbGVHVmpkWFJsUkdsemNHRjBZMmhnSUh0bWRXNWpkR2x2YmlodlltcGxZM1FzSUdaMWJtTjBhVzl1TENCemRISnBibWNwZlZ4dUlDb2dJQ0FnSUU5d2RHbHZibUZzTENCaGJHeHZkM01nY0d4MVoybHVjeUIwYnlCdmRtVnljbWxrWlNCb2IzY2dZVzRnWlhabGJuUWdaMlYwY3lCa2FYTndZWFJqYUdWa0xpQkNlVnh1SUNvZ0lDQWdJR1JsWm1GMWJIUXNJSFJvWlNCc2FYTjBaVzVsY2lCcGN5QnphVzF3YkhrZ2FXNTJiMnRsWkM1Y2JpQXFYRzRnS2lCRllXTm9JSEJzZFdkcGJpQjBhR0YwSUdseklHbHVhbVZqZEdWa0lHbHVkRzhnWUVWMlpXNTBjMUJzZFdkcGJraDFZbUFnYVhNZ2FXMXRaV1JwWVhSbGJIa2diM0JsY21GaWJHVXVYRzRnS2x4dUlDb2dRSEIxWW14cFkxeHVJQ292WEc1MllYSWdSWFpsYm5SUWJIVm5hVzVJZFdJZ1BTQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFMWxkR2h2WkhNZ1ptOXlJR2x1YW1WamRHbHVaeUJrWlhCbGJtUmxibU5wWlhNdVhHNGdJQ0FxTDF4dUlDQnBibXBsWTNScGIyNDZJSHRjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JKYm1wbFkzUmxaRTF2ZFc1MFhHNGdJQ0FnSUNvZ1FIQjFZbXhwWTF4dUlDQWdJQ0FxTDF4dUlDQWdJR2x1YW1WamRFMXZkVzUwT2lCRmRtVnVkRkJzZFdkcGJsVjBhV3h6TG1sdWFtVmpkR2x2Ymk1cGJtcGxZM1JOYjNWdWRDeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQkpibXBsWTNSbFpFbHVjM1JoYm1ObFNHRnVaR3hsWEc0Z0lDQWdJQ29nUUhCMVlteHBZMXh1SUNBZ0lDQXFMMXh1SUNBZ0lHbHVhbVZqZEVsdWMzUmhibU5sU0dGdVpHeGxPaUJtZFc1amRHbHZiaUFvU1c1cVpXTjBaV1JKYm5OMFlXNWpaVWhoYm1Sc1pTa2dlMXh1SUNBZ0lDQWdTVzV6ZEdGdVkyVklZVzVrYkdVZ1BTQkpibXBsWTNSbFpFbHVjM1JoYm1ObFNHRnVaR3hsTzF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2FXUmhkR1ZKYm5OMFlXNWpaVWhoYm1Sc1pTZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHNYRzVjYmlBZ0lDQm5aWFJKYm5OMFlXNWpaVWhoYm1Sc1pUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2FXUmhkR1ZKYm5OMFlXNWpaVWhoYm1Sc1pTZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlFbHVjM1JoYm1ObFNHRnVaR3hsTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTJGeWNtRjVmU0JKYm1wbFkzUmxaRVYyWlc1MFVHeDFaMmx1VDNKa1pYSmNiaUFnSUNBZ0tpQkFjSFZpYkdsalhHNGdJQ0FnSUNvdlhHNGdJQ0FnYVc1cVpXTjBSWFpsYm5SUWJIVm5hVzVQY21SbGNqb2dSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzVwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHbHVhbVZqZEdWa1RtRnRaWE5VYjFCc2RXZHBibk1nVFdGd0lHWnliMjBnYm1GdFpYTWdkRzhnY0d4MVoybHVJRzF2WkhWc1pYTXVYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2FXNXFaV04wUlhabGJuUlFiSFZuYVc1elFubE9ZVzFsT2lCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxtbHVhbVZqZEVWMlpXNTBVR3gxWjJsdWMwSjVUbUZ0WlZ4dVhHNGdJSDBzWEc1Y2JpQWdaWFpsYm5ST1lXMWxSR2x6Y0dGMFkyaERiMjVtYVdkek9pQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVMbVYyWlc1MFRtRnRaVVJwYzNCaGRHTm9RMjl1Wm1sbmN5eGNibHh1SUNCeVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjem9nUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjeXhjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVM1J2Y21WeklHQnNhWE4wWlc1bGNtQWdZWFFnWUd4cGMzUmxibVZ5UW1GdWExdHlaV2RwYzNSeVlYUnBiMjVPWVcxbFhWdHBaRjFnTGlCSmN5QnBaR1Z0Y0c5MFpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1NVUWdiMllnZEdobElFUlBUU0JsYkdWdFpXNTBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNCT1lXMWxJRzltSUd4cGMzUmxibVZ5SUNobExtY3VJR0J2YmtOc2FXTnJZQ2t1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JzYVhOMFpXNWxjaUJVYUdVZ1kyRnNiR0poWTJzZ2RHOGdjM1J2Y21VdVhHNGdJQ0FxTDF4dUlDQndkWFJNYVhOMFpXNWxjam9nWm5WdVkzUnBiMjRnS0dsa0xDQnlaV2RwYzNSeVlYUnBiMjVPWVcxbExDQnNhWE4wWlc1bGNpa2dlMXh1SUNBZ0lDRW9kSGx3Wlc5bUlHeHBjM1JsYm1WeUlEMDlQU0FuWm5WdVkzUnBiMjRuS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RGZUhCbFkzUmxaQ0FsY3lCc2FYTjBaVzVsY2lCMGJ5QmlaU0JoSUdaMWJtTjBhVzl1TENCcGJuTjBaV0ZrSUdkdmRDQjBlWEJsSUNWekp5d2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTd2dkSGx3Wlc5bUlHeHBjM1JsYm1WeUtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ1ltRnVhMFp2Y2xKbFoybHpkSEpoZEdsdmJrNWhiV1VnUFNCc2FYTjBaVzVsY2tKaGJtdGJjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMGdmSHdnS0d4cGMzUmxibVZ5UW1GdWExdHlaV2RwYzNSeVlYUnBiMjVPWVcxbFhTQTlJSHQ5S1R0Y2JpQWdJQ0JpWVc1clJtOXlVbVZuYVhOMGNtRjBhVzl1VG1GdFpWdHBaRjBnUFNCc2FYTjBaVzVsY2p0Y2JseHVJQ0FnSUhaaGNpQlFiSFZuYVc1TmIyUjFiR1VnUFNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6VzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkTzF4dUlDQWdJR2xtSUNoUWJIVm5hVzVOYjJSMWJHVWdKaVlnVUd4MVoybHVUVzlrZFd4bExtUnBaRkIxZEV4cGMzUmxibVZ5S1NCN1hHNGdJQ0FnSUNCUWJIVm5hVzVOYjJSMWJHVXVaR2xrVUhWMFRHbHpkR1Z1WlhJb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXNJR3hwYzNSbGJtVnlLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCSlJDQnZaaUIwYUdVZ1JFOU5JR1ZzWlcxbGJuUXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCeVpXZHBjM1J5WVhScGIyNU9ZVzFsSUU1aGJXVWdiMllnYkdsemRHVnVaWElnS0dVdVp5NGdZRzl1UTJ4cFkydGdLUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMloxYm1OMGFXOXVmU0JVYUdVZ2MzUnZjbVZrSUdOaGJHeGlZV05yTGx4dUlDQWdLaTljYmlBZ1oyVjBUR2x6ZEdWdVpYSTZJR1oxYm1OMGFXOXVJQ2hwWkN3Z2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ2UxeHVJQ0FnSUhaaGNpQmlZVzVyUm05eVVtVm5hWE4wY21GMGFXOXVUbUZ0WlNBOUlHeHBjM1JsYm1WeVFtRnVhMXR5WldkcGMzUnlZWFJwYjI1T1lXMWxYVHRjYmlBZ0lDQnlaWFIxY200Z1ltRnVhMFp2Y2xKbFoybHpkSEpoZEdsdmJrNWhiV1VnSmlZZ1ltRnVhMFp2Y2xKbFoybHpkSEpoZEdsdmJrNWhiV1ZiYVdSZE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFWld4bGRHVnpJR0VnYkdsemRHVnVaWElnWm5KdmJTQjBhR1VnY21WbmFYTjBjbUYwYVc5dUlHSmhibXN1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQkpSQ0J2WmlCMGFHVWdSRTlOSUdWc1pXMWxiblF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnlaV2RwYzNSeVlYUnBiMjVPWVcxbElFNWhiV1VnYjJZZ2JHbHpkR1Z1WlhJZ0tHVXVaeTRnWUc5dVEyeHBZMnRnS1M1Y2JpQWdJQ292WEc0Z0lHUmxiR1YwWlV4cGMzUmxibVZ5T2lCbWRXNWpkR2x2YmlBb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXBJSHRjYmlBZ0lDQjJZWElnVUd4MVoybHVUVzlrZFd4bElEMGdSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzV5WldkcGMzUnlZWFJwYjI1T1lXMWxUVzlrZFd4bGMxdHlaV2RwYzNSeVlYUnBiMjVPWVcxbFhUdGNiaUFnSUNCcFppQW9VR3gxWjJsdVRXOWtkV3hsSUNZbUlGQnNkV2RwYmsxdlpIVnNaUzUzYVd4c1JHVnNaWFJsVEdsemRHVnVaWElwSUh0Y2JpQWdJQ0FnSUZCc2RXZHBiazF2WkhWc1pTNTNhV3hzUkdWc1pYUmxUR2x6ZEdWdVpYSW9hV1FzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCaVlXNXJSbTl5VW1WbmFYTjBjbUYwYVc5dVRtRnRaU0E5SUd4cGMzUmxibVZ5UW1GdWExdHlaV2RwYzNSeVlYUnBiMjVPWVcxbFhUdGNiaUFnSUNBdkx5QlVUMFJQT2lCVWFHbHpJSE5vYjNWc1pDQnVaWFpsY2lCaVpTQnVkV3hzSUMwdElIZG9aVzRnYVhNZ2FYUS9YRzRnSUNBZ2FXWWdLR0poYm10R2IzSlNaV2RwYzNSeVlYUnBiMjVPWVcxbEtTQjdYRzRnSUNBZ0lDQmtaV3hsZEdVZ1ltRnVhMFp2Y2xKbFoybHpkSEpoZEdsdmJrNWhiV1ZiYVdSZE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSR1ZzWlhSbGN5QmhiR3dnYkdsemRHVnVaWEp6SUdadmNpQjBhR1VnUkU5TklHVnNaVzFsYm5RZ2QybDBhQ0IwYUdVZ2MzVndjR3hwWldRZ1NVUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCSlJDQnZaaUIwYUdVZ1JFOU5JR1ZzWlcxbGJuUXVYRzRnSUNBcUwxeHVJQ0JrWld4bGRHVkJiR3hNYVhOMFpXNWxjbk02SUdaMWJtTjBhVzl1SUNocFpDa2dlMXh1SUNBZ0lHWnZjaUFvZG1GeUlISmxaMmx6ZEhKaGRHbHZiazVoYldVZ2FXNGdiR2x6ZEdWdVpYSkNZVzVyS1NCN1hHNGdJQ0FnSUNCcFppQW9JV3hwYzNSbGJtVnlRbUZ1YTF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFZ0cFpGMHBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhaaGNpQlFiSFZuYVc1TmIyUjFiR1VnUFNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNUxuSmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6VzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkTzF4dUlDQWdJQ0FnYVdZZ0tGQnNkV2RwYmsxdlpIVnNaU0FtSmlCUWJIVm5hVzVOYjJSMWJHVXVkMmxzYkVSbGJHVjBaVXhwYzNSbGJtVnlLU0I3WEc0Z0lDQWdJQ0FnSUZCc2RXZHBiazF2WkhWc1pTNTNhV3hzUkdWc1pYUmxUR2x6ZEdWdVpYSW9hV1FzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCa1pXeGxkR1VnYkdsemRHVnVaWEpDWVc1clczSmxaMmx6ZEhKaGRHbHZiazVoYldWZFcybGtYVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVGc2JHOTNjeUJ5WldkcGMzUmxjbVZrSUhCc2RXZHBibk1nWVc0Z2IzQndiM0owZFc1cGRIa2dkRzhnWlhoMGNtRmpkQ0JsZG1WdWRITWdabkp2YlNCMGIzQXRiR1YyWld4Y2JpQWdJQ29nYm1GMGFYWmxJR0p5YjNkelpYSWdaWFpsYm5SekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkRzl3VEdWMlpXeFVlWEJsSUZKbFkyOXlaQ0JtY205dElHQkZkbVZ1ZEVOdmJuTjBZVzUwYzJBdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJYWmxiblJVWVhKblpYUjlJSFJ2Y0V4bGRtVnNWR0Z5WjJWMElGUm9aU0JzYVhOMFpXNXBibWNnWTI5dGNHOXVaVzUwSUhKdmIzUWdibTlrWlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSFJ2Y0V4bGRtVnNWR0Z5WjJWMFNVUWdTVVFnYjJZZ1lIUnZjRXhsZG1Wc1ZHRnlaMlYwWUM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzVoZEdsMlpVVjJaVzUwSUU1aGRHbDJaU0JpY205M2MyVnlJR1YyWlc1MExseHVJQ0FnS2lCQWNtVjBkWEp1SUhzcWZTQkJiaUJoWTJOMWJYVnNZWFJwYjI0Z2IyWWdjM2x1ZEdobGRHbGpJR1YyWlc1MGN5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxlSFJ5WVdOMFJYWmxiblJ6T2lCbWRXNWpkR2x2YmlBb2RHOXdUR1YyWld4VWVYQmxMQ0IwYjNCTVpYWmxiRlJoY21kbGRDd2dkRzl3VEdWMlpXeFVZWEpuWlhSSlJDd2dibUYwYVhabFJYWmxiblFzSUc1aGRHbDJaVVYyWlc1MFZHRnlaMlYwS1NCN1hHNGdJQ0FnZG1GeUlHVjJaVzUwY3p0Y2JpQWdJQ0IyWVhJZ2NHeDFaMmx1Y3lBOUlFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNua3VjR3gxWjJsdWN6dGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElIQnNkV2RwYm5NdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQzh2SUU1dmRDQmxkbVZ5ZVNCd2JIVm5hVzRnYVc0Z2RHaGxJRzl5WkdWeWFXNW5JRzFoZVNCaVpTQnNiMkZrWldRZ1lYUWdjblZ1ZEdsdFpTNWNiaUFnSUNBZ0lIWmhjaUJ3YjNOemFXSnNaVkJzZFdkcGJpQTlJSEJzZFdkcGJuTmJhVjA3WEc0Z0lDQWdJQ0JwWmlBb2NHOXpjMmxpYkdWUWJIVm5hVzRwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR1Y0ZEhKaFkzUmxaRVYyWlc1MGN5QTlJSEJ2YzNOcFlteGxVR3gxWjJsdUxtVjRkSEpoWTNSRmRtVnVkSE1vZEc5d1RHVjJaV3hVZVhCbExDQjBiM0JNWlhabGJGUmhjbWRsZEN3Z2RHOXdUR1YyWld4VVlYSm5aWFJKUkN3Z2JtRjBhWFpsUlhabGJuUXNJRzVoZEdsMlpVVjJaVzUwVkdGeVoyVjBLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHVjRkSEpoWTNSbFpFVjJaVzUwY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1YyWlc1MGN5QTlJR0ZqWTNWdGRXeGhkR1ZKYm5SdktHVjJaVzUwY3l3Z1pYaDBjbUZqZEdWa1JYWmxiblJ6S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaWFpsYm5Sek8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYm5GMVpYVmxjeUJoSUhONWJuUm9aWFJwWXlCbGRtVnVkQ0IwYUdGMElITm9iM1ZzWkNCaVpTQmthWE53WVhSamFHVmtJSGRvWlc1Y2JpQWdJQ29nWUhCeWIyTmxjM05GZG1WdWRGRjFaWFZsWUNCcGN5QnBiblp2YTJWa0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdleXA5SUdWMlpXNTBjeUJCYmlCaFkyTjFiWFZzWVhScGIyNGdiMllnYzNsdWRHaGxkR2xqSUdWMlpXNTBjeTVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxSWFpsYm5Sek9pQm1kVzVqZEdsdmJpQW9aWFpsYm5SektTQjdYRzRnSUNBZ2FXWWdLR1YyWlc1MGN5a2dlMXh1SUNBZ0lDQWdaWFpsYm5SUmRXVjFaU0E5SUdGalkzVnRkV3hoZEdWSmJuUnZLR1YyWlc1MFVYVmxkV1VzSUdWMlpXNTBjeWs3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRWFYTndZWFJqYUdWeklHRnNiQ0J6ZVc1MGFHVjBhV01nWlhabGJuUnpJRzl1SUhSb1pTQmxkbVZ1ZENCeGRXVjFaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQndjbTlqWlhOelJYWmxiblJSZFdWMVpUb2dablZ1WTNScGIyNGdLSE5wYlhWc1lYUmxaQ2tnZTF4dUlDQWdJQzh2SUZObGRDQmdaWFpsYm5SUmRXVjFaV0FnZEc4Z2JuVnNiQ0JpWldadmNtVWdjSEp2WTJWemMybHVaeUJwZENCemJ5QjBhR0YwSUhkbElHTmhiaUIwWld4c0lHbG1JRzF2Y21WY2JpQWdJQ0F2THlCbGRtVnVkSE1nWjJWMElHVnVjWFZsZFdWa0lIZG9hV3hsSUhCeWIyTmxjM05wYm1jdVhHNGdJQ0FnZG1GeUlIQnliMk5sYzNOcGJtZEZkbVZ1ZEZGMVpYVmxJRDBnWlhabGJuUlJkV1YxWlR0Y2JpQWdJQ0JsZG1WdWRGRjFaWFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvYzJsdGRXeGhkR1ZrS1NCN1hHNGdJQ0FnSUNCbWIzSkZZV05vUVdOamRXMTFiR0YwWldRb2NISnZZMlZ6YzJsdVowVjJaVzUwVVhWbGRXVXNJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpRVzVrVW1Wc1pXRnpaVk5wYlhWc1lYUmxaQ2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHWnZja1ZoWTJoQlkyTjFiWFZzWVhSbFpDaHdjbTlqWlhOemFXNW5SWFpsYm5SUmRXVjFaU3dnWlhobFkzVjBaVVJwYzNCaGRHTm9aWE5CYm1SU1pXeGxZWE5sVkc5d1RHVjJaV3dwTzF4dUlDQWdJSDFjYmlBZ0lDQWhJV1YyWlc1MFVYVmxkV1VnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5jSEp2WTJWemMwVjJaVzUwVVhWbGRXVW9LVG9nUVdSa2FYUnBiMjVoYkNCbGRtVnVkSE1nZDJWeVpTQmxibkYxWlhWbFpDQjNhR2xzWlNCd2NtOWpaWE56YVc1bklDY2dLeUFuWVc0Z1pYWmxiblFnY1hWbGRXVXVJRk4xY0hCdmNuUWdabTl5SUhSb2FYTWdhR0Z6SUc1dmRDQjVaWFFnWW1WbGJpQnBiWEJzWlcxbGJuUmxaQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0x5OGdWR2hwY3lCM2IzVnNaQ0JpWlNCaElHZHZiMlFnZEdsdFpTQjBieUJ5WlhSb2NtOTNJR2xtSUdGdWVTQnZaaUIwYUdVZ1pYWmxiblFnYUdGdVpHeGxjbk1nZEdoeVpYY3VYRzRnSUNBZ1VtVmhZM1JGY25KdmNsVjBhV3h6TG5KbGRHaHliM2REWVhWbmFIUkZjbkp2Y2lncE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJVYUdWelpTQmhjbVVnYm1WbFpHVmtJR1p2Y2lCMFpYTjBjeUJ2Ym14NUxpQkVieUJ1YjNRZ2RYTmxJVnh1SUNBZ0tpOWNiaUFnWDE5d2RYSm5aVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUd4cGMzUmxibVZ5UW1GdWF5QTlJSHQ5TzF4dUlDQjlMRnh1WEc0Z0lGOWZaMlYwVEdsemRHVnVaWEpDWVc1ck9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHeHBjM1JsYm1WeVFtRnVhenRjYmlBZ2ZWeHVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFVjJaVzUwVUd4MVoybHVTSFZpT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV2ZW50UGx1Z2luUmVnaXN0cnlcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVudCBwbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG4gKi9cbnZhciBuYW1lc1RvUGx1Z2lucyA9IHt9O1xuXG4vKipcbiAqIFJlY29tcHV0ZXMgdGhlIHBsdWdpbiBsaXN0IHVzaW5nIHRoZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG4gIGlmICghRXZlbnRQbHVnaW5PcmRlcikge1xuICAgIC8vIFdhaXQgdW50aWwgYW4gYEV2ZW50UGx1Z2luT3JkZXJgIGlzIGluamVjdGVkLlxuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIFBsdWdpbk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgIHZhciBwbHVnaW5JbmRleCA9IEV2ZW50UGx1Z2luT3JkZXIuaW5kZXhPZihwbHVnaW5OYW1lKTtcbiAgICAhKHBsdWdpbkluZGV4ID4gLTEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiAnICsgJ3RoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIGlmIChFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgIVBsdWdpbk1vZHVsZS5leHRyYWN0RXZlbnRzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4gYGV4dHJhY3RFdmVudHNgICcgKyAnbWV0aG9kLCBidXQgYCVzYCBkb2VzIG5vdC4nLCBwbHVnaW5OYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IFBsdWdpbk1vZHVsZTtcbiAgICB2YXIgcHVibGlzaGVkRXZlbnRzID0gUGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7XG4gICAgZm9yICh2YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hlZEV2ZW50cykge1xuICAgICAgIXB1Ymxpc2hFdmVudEZvclBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgUGx1Z2luTW9kdWxlLCBldmVudE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdpbiBgJXNgLicsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhbiBldmVudCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBzdXBwbGllZCBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIERpc3BhdGNoIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBldmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwdWJsaXNoRXZlbnRGb3JQbHVnaW4oZGlzcGF0Y2hDb25maWcsIFBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgJyArICdldmVudCBuYW1lLCBgJXNgLicsIGV2ZW50TmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdID0gZGlzcGF0Y2hDb25maWc7XG5cbiAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7XG4gIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIGZvciAodmFyIHBoYXNlTmFtZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlTmFtZSkpIHtcbiAgICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUgPSBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZU5hbWVdO1xuICAgICAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShwaGFzZWRSZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhIHJlZ2lzdHJhdGlvbiBuYW1lIHRoYXQgaXMgdXNlZCB0byBpZGVudGlmeSBkaXNwYXRjaGVkIGV2ZW50cyBhbmRcbiAqIGNhbiBiZSB1c2VkIHdpdGggYEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyYCB0byByZWdpc3RlciBsaXN0ZW5lcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgUmVnaXN0cmF0aW9uIG5hbWUgdG8gYWRkLlxuICogQHBhcmFtIHtvYmplY3R9IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShyZWdpc3RyYXRpb25OYW1lLCBQbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lICcgKyAncmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9uTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gUGx1Z2luTW9kdWxlO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBQbHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tldmVudE5hbWVdLmRlcGVuZGVuY2llcztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy5cbiAqXG4gKiBAc2VlIHtFdmVudFBsdWdpbkh1Yn1cbiAqL1xudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSB7XG5cbiAgLyoqXG4gICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLlxuICAgKi9cbiAgcGx1Z2luczogW10sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3BhdGNoIGNvbmZpZ1xuICAgKi9cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGVcbiAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWVcbiAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBJbmplY3RzIGFuIG9yZGVyaW5nIG9mIHBsdWdpbnMgKGJ5IHBsdWdpbiBuYW1lKS4gVGhpcyBhbGxvd3MgdGhlIG9yZGVyaW5nXG4gICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGluamVjdGlvbiBvZiB0aGUgYWN0dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuICAgKiBhbHdheXMgZGV0ZXJtaW5pc3RpYyByZWdhcmRsZXNzIG9mIHBhY2thZ2luZywgb24tdGhlLWZseSBpbmplY3Rpb24sIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcn1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IGZ1bmN0aW9uIChJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAhIUV2ZW50UGx1Z2luT3JkZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuICcgKyAnb25jZS4gWW91IGFyZSBsaWtlbHkgdHJ5aW5nIHRvIGxvYWQgbW9yZSB0aGFuIG9uZSBjb3B5IG9mIFJlYWN0LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28gaXQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IG11dGF0ZWQuXG4gICAgRXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKEluamVjdGVkRXZlbnRQbHVnaW5PcmRlcik7XG4gICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgfSxcblxuICAvKipcbiAgICogSW5qZWN0cyBwbHVnaW5zIHRvIGJlIHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1lcyBtdXN0IGJlXG4gICAqIGluIHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAuXG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0aWFsaXphdGlvbiBvciBvbi10aGUtZmx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1bmN0aW9uIChpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIGlzT3JkZXJpbmdEaXJ0eSA9IGZhbHNlO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICBpZiAoIW5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpIHx8IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdICE9PSBQbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lucyAnICsgJ3VzaW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA9IFBsdWdpbk1vZHVsZTtcbiAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkge1xuICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnO1xuICAgIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsO1xuICAgIH1cbiAgICBmb3IgKHZhciBwaGFzZSBpbiBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgaWYgKCFkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZV1dO1xuICAgICAgaWYgKFBsdWdpbk1vZHVsZSkge1xuICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Jlc2V0RXZlbnRQbHVnaW5zOiBmdW5jdGlvbiAoKSB7XG4gICAgRXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG4gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYgKG5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zLmxlbmd0aCA9IDA7XG5cbiAgICB2YXIgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7XG4gICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncykge1xuICAgICAgaWYgKGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO1xuICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMpIHtcbiAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5SZWdpc3RyeTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNVhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzR2S2lwY2JpQXFJRWx1YW1WamRHRmliR1VnYjNKa1pYSnBibWNnYjJZZ1pYWmxiblFnY0d4MVoybHVjeTVjYmlBcUwxeHVkbUZ5SUVWMlpXNTBVR3gxWjJsdVQzSmtaWElnUFNCdWRXeHNPMXh1WEc0dktpcGNiaUFxSUVsdWFtVmpkR0ZpYkdVZ2JXRndjR2x1WnlCbWNtOXRJRzVoYldWeklIUnZJR1YyWlc1MElIQnNkV2RwYmlCdGIyUjFiR1Z6TGx4dUlDb3ZYRzUyWVhJZ2JtRnRaWE5VYjFCc2RXZHBibk1nUFNCN2ZUdGNibHh1THlvcVhHNGdLaUJTWldOdmJYQjFkR1Z6SUhSb1pTQndiSFZuYVc0Z2JHbHpkQ0IxYzJsdVp5QjBhR1VnYVc1cVpXTjBaV1FnY0d4MVoybHVjeUJoYm1RZ2NHeDFaMmx1SUc5eVpHVnlhVzVuTGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJSEpsWTI5dGNIVjBaVkJzZFdkcGJrOXlaR1Z5YVc1bktDa2dlMXh1SUNCcFppQW9JVVYyWlc1MFVHeDFaMmx1VDNKa1pYSXBJSHRjYmlBZ0lDQXZMeUJYWVdsMElIVnVkR2xzSUdGdUlHQkZkbVZ1ZEZCc2RXZHBiazl5WkdWeVlDQnBjeUJwYm1wbFkzUmxaQzVjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ1ptOXlJQ2gyWVhJZ2NHeDFaMmx1VG1GdFpTQnBiaUJ1WVcxbGMxUnZVR3gxWjJsdWN5a2dlMXh1SUNBZ0lIWmhjaUJRYkhWbmFXNU5iMlIxYkdVZ1BTQnVZVzFsYzFSdlVHeDFaMmx1YzF0d2JIVm5hVzVPWVcxbFhUdGNiaUFnSUNCMllYSWdjR3gxWjJsdVNXNWtaWGdnUFNCRmRtVnVkRkJzZFdkcGJrOXlaR1Z5TG1sdVpHVjRUMllvY0d4MVoybHVUbUZ0WlNrN1hHNGdJQ0FnSVNod2JIVm5hVzVKYm1SbGVDQStJQzB4S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1T2lCRFlXNXViM1FnYVc1cVpXTjBJR1YyWlc1MElIQnNkV2RwYm5NZ2RHaGhkQ0JrYnlCdWIzUWdaWGhwYzNRZ2FXNGdKeUFySUNkMGFHVWdjR3gxWjJsdUlHOXlaR1Z5YVc1bkxDQmdKWE5nTGljc0lIQnNkV2RwYms1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXdiSFZuYVc1elczQnNkV2RwYmtsdVpHVjRYU2tnZTF4dUlDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdmVnh1SUNBZ0lDRlFiSFZuYVc1TmIyUjFiR1V1WlhoMGNtRmpkRVYyWlc1MGN5QS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNU9pQkZkbVZ1ZENCd2JIVm5hVzV6SUcxMWMzUWdhVzF3YkdWdFpXNTBJR0Z1SUdCbGVIUnlZV04wUlhabGJuUnpZQ0FuSUNzZ0oyMWxkR2h2WkN3Z1luVjBJR0FsYzJBZ1pHOWxjeUJ1YjNRdUp5d2djR3gxWjJsdVRtRnRaU2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdWNHeDFaMmx1YzF0d2JIVm5hVzVKYm1SbGVGMGdQU0JRYkhWbmFXNU5iMlIxYkdVN1hHNGdJQ0FnZG1GeUlIQjFZbXhwYzJobFpFVjJaVzUwY3lBOUlGQnNkV2RwYmsxdlpIVnNaUzVsZG1WdWRGUjVjR1Z6TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR1YyWlc1MFRtRnRaU0JwYmlCd2RXSnNhWE5vWldSRmRtVnVkSE1wSUh0Y2JpQWdJQ0FnSUNGd2RXSnNhWE5vUlhabGJuUkdiM0pRYkhWbmFXNG9jSFZpYkdsemFHVmtSWFpsYm5SelcyVjJaVzUwVG1GdFpWMHNJRkJzZFdkcGJrMXZaSFZzWlN3Z1pYWmxiblJPWVcxbEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmRtVnVkRkJzZFdkcGJsSmxaMmx6ZEhKNU9pQkdZV2xzWldRZ2RHOGdjSFZpYkdsemFDQmxkbVZ1ZENCZ0pYTmdJR1p2Y2lCd2JIVm5hVzRnWUNWellDNG5MQ0JsZG1WdWRFNWhiV1VzSUhCc2RXZHBiazVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJRZFdKc2FYTm9aWE1nWVc0Z1pYWmxiblFnYzI4Z2RHaGhkQ0JwZENCallXNGdZbVVnWkdsemNHRjBZMmhsWkNCaWVTQjBhR1VnYzNWd2NHeHBaV1FnY0d4MVoybHVMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQmthWE53WVhSamFFTnZibVpwWnlCRWFYTndZWFJqYUNCamIyNW1hV2QxY21GMGFXOXVJR1p2Y2lCMGFHVWdaWFpsYm5RdVhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdVR3gxWjJsdVRXOWtkV3hsSUZCc2RXZHBiaUJ3ZFdKc2FYTm9hVzVuSUhSb1pTQmxkbVZ1ZEM1Y2JpQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWWdkR2hsSUdWMlpXNTBJSGRoY3lCemRXTmpaWE56Wm5Wc2JIa2djSFZpYkdsemFHVmtMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnY0hWaWJHbHphRVYyWlc1MFJtOXlVR3gxWjJsdUtHUnBjM0JoZEdOb1EyOXVabWxuTENCUWJIVm5hVzVOYjJSMWJHVXNJR1YyWlc1MFRtRnRaU2tnZTF4dUlDQWhJVVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1WlhabGJuUk9ZVzFsUkdsemNHRjBZMmhEYjI1bWFXZHpMbWhoYzA5M2JsQnliM0JsY25SNUtHVjJaVzUwVG1GdFpTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJYWmxiblJRYkhWbmFXNUlkV0k2SUUxdmNtVWdkR2hoYmlCdmJtVWdjR3gxWjJsdUlHRjBkR1Z0Y0hSbFpDQjBieUJ3ZFdKc2FYTm9JSFJvWlNCellXMWxJQ2NnS3lBblpYWmxiblFnYm1GdFpTd2dZQ1Z6WUM0bkxDQmxkbVZ1ZEU1aGJXVXBJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdSWFpsYm5SUWJIVm5hVzVTWldkcGMzUnllUzVsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTmJaWFpsYm5ST1lXMWxYU0E5SUdScGMzQmhkR05vUTI5dVptbG5PMXh1WEc0Z0lIWmhjaUJ3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5QTlJR1JwYzNCaGRHTm9RMjl1Wm1sbkxuQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6TzF4dUlDQnBaaUFvY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTXBJSHRjYmlBZ0lDQm1iM0lnS0haaGNpQndhR0Z6WlU1aGJXVWdhVzRnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTXBJSHRjYmlBZ0lDQWdJR2xtSUNod2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdhR0Z6WlU1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsSUQwZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE5iY0doaGMyVk9ZVzFsWFR0Y2JpQWdJQ0FnSUNBZ2NIVmliR2x6YUZKbFoybHpkSEpoZEdsdmJrNWhiV1VvY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpTd2dVR3gxWjJsdVRXOWtkV3hsTENCbGRtVnVkRTVoYldVcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmU0JsYkhObElHbG1JQ2hrYVhOd1lYUmphRU52Ym1acFp5NXlaV2RwYzNSeVlYUnBiMjVPWVcxbEtTQjdYRzRnSUNBZ2NIVmliR2x6YUZKbFoybHpkSEpoZEdsdmJrNWhiV1VvWkdsemNHRjBZMmhEYjI1bWFXY3VjbVZuYVhOMGNtRjBhVzl1VG1GdFpTd2dVR3gxWjJsdVRXOWtkV3hsTENCbGRtVnVkRTVoYldVcE8xeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCbVlXeHpaVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlFkV0pzYVhOb1pYTWdZU0J5WldkcGMzUnlZWFJwYjI0Z2JtRnRaU0IwYUdGMElHbHpJSFZ6WldRZ2RHOGdhV1JsYm5ScFpua2daR2x6Y0dGMFkyaGxaQ0JsZG1WdWRITWdZVzVrWEc0Z0tpQmpZVzRnWW1VZ2RYTmxaQ0IzYVhSb0lHQkZkbVZ1ZEZCc2RXZHBia2gxWWk1d2RYUk1hWE4wWlc1bGNtQWdkRzhnY21WbmFYTjBaWElnYkdsemRHVnVaWEp6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldkcGMzUnlZWFJwYjI1T1lXMWxJRkpsWjJsemRISmhkR2x2YmlCdVlXMWxJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JRYkhWbmFXNU5iMlIxYkdVZ1VHeDFaMmx1SUhCMVlteHBjMmhwYm1jZ2RHaGxJR1YyWlc1MExseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdjSFZpYkdsemFGSmxaMmx6ZEhKaGRHbHZiazVoYldVb2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z1VHeDFaMmx1VFc5a2RXeGxMQ0JsZG1WdWRFNWhiV1VwSUh0Y2JpQWdJU0ZGZG1WdWRGQnNkV2RwYmxKbFoybHpkSEo1TG5KbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpXM0psWjJsemRISmhkR2x2Yms1aGJXVmRJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVjJaVzUwVUd4MVoybHVTSFZpT2lCTmIzSmxJSFJvWVc0Z2IyNWxJSEJzZFdkcGJpQmhkSFJsYlhCMFpXUWdkRzhnY0hWaWJHbHphQ0IwYUdVZ2MyRnRaU0FuSUNzZ0ozSmxaMmx6ZEhKaGRHbHZiaUJ1WVcxbExDQmdKWE5nTGljc0lISmxaMmx6ZEhKaGRHbHZiazVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsYzF0eVpXZHBjM1J5WVhScGIyNU9ZVzFsWFNBOUlGQnNkV2RwYmsxdlpIVnNaVHRjYmlBZ1JYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVTNXlaV2RwYzNSeVlYUnBiMjVPWVcxbFJHVndaVzVrWlc1amFXVnpXM0psWjJsemRISmhkR2x2Yms1aGJXVmRJRDBnVUd4MVoybHVUVzlrZFd4bExtVjJaVzUwVkhsd1pYTmJaWFpsYm5ST1lXMWxYUzVrWlhCbGJtUmxibU5wWlhNN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WbmFYTjBaWEp6SUhCc2RXZHBibk1nYzI4Z2RHaGhkQ0IwYUdWNUlHTmhiaUJsZUhSeVlXTjBJR0Z1WkNCa2FYTndZWFJqYUNCbGRtVnVkSE11WEc0Z0tseHVJQ29nUUhObFpTQjdSWFpsYm5SUWJIVm5hVzVJZFdKOVhHNGdLaTljYm5aaGNpQkZkbVZ1ZEZCc2RXZHBibEpsWjJsemRISjVJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJQY21SbGNtVmtJR3hwYzNRZ2IyWWdhVzVxWldOMFpXUWdjR3gxWjJsdWN5NWNiaUFnSUNvdlhHNGdJSEJzZFdkcGJuTTZJRnRkTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJOWVhCd2FXNW5JR1p5YjIwZ1pYWmxiblFnYm1GdFpTQjBieUJrYVhOd1lYUmphQ0JqYjI1bWFXZGNiaUFnSUNvdlhHNGdJR1YyWlc1MFRtRnRaVVJwYzNCaGRHTm9RMjl1Wm1sbmN6b2dlMzBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoY0hCcGJtY2dabkp2YlNCeVpXZHBjM1J5WVhScGIyNGdibUZ0WlNCMGJ5QndiSFZuYVc0Z2JXOWtkV3hsWEc0Z0lDQXFMMXh1SUNCeVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjem9nZTMwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUUxaGNIQnBibWNnWm5KdmJTQnlaV2RwYzNSeVlYUnBiMjRnYm1GdFpTQjBieUJsZG1WdWRDQnVZVzFsWEc0Z0lDQXFMMXh1SUNCeVpXZHBjM1J5WVhScGIyNU9ZVzFsUkdWd1pXNWtaVzVqYVdWek9pQjdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzVxWldOMGN5QmhiaUJ2Y21SbGNtbHVaeUJ2WmlCd2JIVm5hVzV6SUNoaWVTQndiSFZuYVc0Z2JtRnRaU2t1SUZSb2FYTWdZV3hzYjNkeklIUm9aU0J2Y21SbGNtbHVaMXh1SUNBZ0tpQjBieUJpWlNCa1pXTnZkWEJzWldRZ1puSnZiU0JwYm1wbFkzUnBiMjRnYjJZZ2RHaGxJR0ZqZEhWaGJDQndiSFZuYVc1eklITnZJSFJvWVhRZ2IzSmtaWEpwYm1jZ2FYTmNiaUFnSUNvZ1lXeDNZWGx6SUdSbGRHVnliV2x1YVhOMGFXTWdjbVZuWVhKa2JHVnpjeUJ2WmlCd1lXTnJZV2RwYm1jc0lHOXVMWFJvWlMxbWJIa2dhVzVxWldOMGFXOXVMQ0JsZEdNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdZWEp5WVhsOUlFbHVhbVZqZEdWa1JYWmxiblJRYkhWbmFXNVBjbVJsY2x4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb2dRSE5sWlNCN1JYWmxiblJRYkhWbmFXNUlkV0l1YVc1cVpXTjBhVzl1TG1sdWFtVmpkRVYyWlc1MFVHeDFaMmx1VDNKa1pYSjlYRzRnSUNBcUwxeHVJQ0JwYm1wbFkzUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeU9pQm1kVzVqZEdsdmJpQW9TVzVxWldOMFpXUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeUtTQjdYRzRnSUNBZ0lTRkZkbVZ1ZEZCc2RXZHBiazl5WkdWeUlEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rNklFTmhibTV2ZENCcGJtcGxZM1FnWlhabGJuUWdjR3gxWjJsdUlHOXlaR1Z5YVc1bklHMXZjbVVnZEdoaGJpQW5JQ3NnSjI5dVkyVXVJRmx2ZFNCaGNtVWdiR2xyWld4NUlIUnllV2x1WnlCMGJ5QnNiMkZrSUcxdmNtVWdkR2hoYmlCdmJtVWdZMjl3ZVNCdlppQlNaV0ZqZEM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdMeThnUTJ4dmJtVWdkR2hsSUc5eVpHVnlhVzVuSUhOdklHbDBJR05oYm01dmRDQmlaU0JrZVc1aGJXbGpZV3hzZVNCdGRYUmhkR1ZrTGx4dUlDQWdJRVYyWlc1MFVHeDFaMmx1VDNKa1pYSWdQU0JCY25KaGVTNXdjbTkwYjNSNWNHVXVjMnhwWTJVdVkyRnNiQ2hKYm1wbFkzUmxaRVYyWlc1MFVHeDFaMmx1VDNKa1pYSXBPMXh1SUNBZ0lISmxZMjl0Y0hWMFpWQnNkV2RwYms5eVpHVnlhVzVuS0NrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1YW1WamRITWdjR3gxWjJsdWN5QjBieUJpWlNCMWMyVmtJR0o1SUdCRmRtVnVkRkJzZFdkcGJraDFZbUF1SUZSb1pTQndiSFZuYVc0Z2JtRnRaWE1nYlhWemRDQmlaVnh1SUNBZ0tpQnBiaUIwYUdVZ2IzSmtaWEpwYm1jZ2FXNXFaV04wWldRZ1lua2dZR2x1YW1WamRFVjJaVzUwVUd4MVoybHVUM0prWlhKZ0xseHVJQ0FnS2x4dUlDQWdLaUJRYkhWbmFXNXpJR05oYmlCaVpTQnBibXBsWTNSbFpDQmhjeUJ3WVhKMElHOW1JSEJoWjJVZ2FXNXBkR2xoYkdsNllYUnBiMjRnYjNJZ2IyNHRkR2hsTFdac2VTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR2x1YW1WamRHVmtUbUZ0WlhOVWIxQnNkV2RwYm5NZ1RXRndJR1p5YjIwZ2JtRnRaWE1nZEc4Z2NHeDFaMmx1SUcxdlpIVnNaWE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpQkFjMlZsSUh0RmRtVnVkRkJzZFdkcGJraDFZaTVwYm1wbFkzUnBiMjR1YVc1cVpXTjBSWFpsYm5SUWJIVm5hVzV6UW5sT1lXMWxmVnh1SUNBZ0tpOWNiaUFnYVc1cVpXTjBSWFpsYm5SUWJIVm5hVzV6UW5sT1lXMWxPaUJtZFc1amRHbHZiaUFvYVc1cVpXTjBaV1JPWVcxbGMxUnZVR3gxWjJsdWN5a2dlMXh1SUNBZ0lIWmhjaUJwYzA5eVpHVnlhVzVuUkdseWRIa2dQU0JtWVd4elpUdGNiaUFnSUNCbWIzSWdLSFpoY2lCd2JIVm5hVzVPWVcxbElHbHVJR2x1YW1WamRHVmtUbUZ0WlhOVWIxQnNkV2RwYm5NcElIdGNiaUFnSUNBZ0lHbG1JQ2doYVc1cVpXTjBaV1JPWVcxbGMxUnZVR3gxWjJsdWN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2JIVm5hVzVPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFpoY2lCUWJIVm5hVzVOYjJSMWJHVWdQU0JwYm1wbFkzUmxaRTVoYldWelZHOVFiSFZuYVc1elczQnNkV2RwYms1aGJXVmRPMXh1SUNBZ0lDQWdhV1lnS0NGdVlXMWxjMVJ2VUd4MVoybHVjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdiSFZuYVc1T1lXMWxLU0I4ZkNCdVlXMWxjMVJ2VUd4MVoybHVjMXR3YkhWbmFXNU9ZVzFsWFNBaFBUMGdVR3gxWjJsdVRXOWtkV3hsS1NCN1hHNGdJQ0FnSUNBZ0lDRWhibUZ0WlhOVWIxQnNkV2RwYm5OYmNHeDFaMmx1VG1GdFpWMGdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJYWmxiblJRYkhWbmFXNVNaV2RwYzNSeWVUb2dRMkZ1Ym05MElHbHVhbVZqZENCMGQyOGdaR2xtWm1WeVpXNTBJR1YyWlc1MElIQnNkV2RwYm5NZ0p5QXJJQ2QxYzJsdVp5QjBhR1VnYzJGdFpTQnVZVzFsTENCZ0pYTmdMaWNzSUhCc2RXZHBiazVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnYm1GdFpYTlViMUJzZFdkcGJuTmJjR3gxWjJsdVRtRnRaVjBnUFNCUWJIVm5hVzVOYjJSMWJHVTdYRzRnSUNBZ0lDQWdJR2x6VDNKa1pYSnBibWRFYVhKMGVTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNocGMwOXlaR1Z5YVc1blJHbHlkSGtwSUh0Y2JpQWdJQ0FnSUhKbFkyOXRjSFYwWlZCc2RXZHBiazl5WkdWeWFXNW5LQ2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCTWIyOXJjeUIxY0NCMGFHVWdjR3gxWjJsdUlHWnZjaUIwYUdVZ2MzVndjR3hwWldRZ1pYWmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCbGRtVnVkQ0JCSUhONWJuUm9aWFJwWXlCbGRtVnVkQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMjlpYW1WamRIMGdWR2hsSUhCc2RXZHBiaUIwYUdGMElHTnlaV0YwWldRZ2RHaGxJSE4xY0hCc2FXVmtJR1YyWlc1MExseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHZGxkRkJzZFdkcGJrMXZaSFZzWlVadmNrVjJaVzUwT2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0IyWVhJZ1pHbHpjR0YwWTJoRGIyNW1hV2NnUFNCbGRtVnVkQzVrYVhOd1lYUmphRU52Ym1acFp6dGNiaUFnSUNCcFppQW9aR2x6Y0dGMFkyaERiMjVtYVdjdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE5iWkdsemNHRjBZMmhEYjI1bWFXY3VjbVZuYVhOMGNtRjBhVzl1VG1GdFpWMGdmSHdnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnWm05eUlDaDJZWElnY0doaGMyVWdhVzRnWkdsemNHRjBZMmhEYjI1bWFXY3VjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2doWkdsemNHRjBZMmhEYjI1bWFXY3VjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0doaGMyVXBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZG1GeUlGQnNkV2RwYmsxdlpIVnNaU0E5SUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE5iWkdsemNHRjBZMmhEYjI1bWFXY3VjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhOYmNHaGhjMlZkWFR0Y2JpQWdJQ0FnSUdsbUlDaFFiSFZuYVc1TmIyUjFiR1VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZCc2RXZHBiazF2WkhWc1pUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVY0Y0c5elpXUWdabTl5SUhWdWFYUWdkR1Z6ZEdsdVp5NWNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOXlaWE5sZEVWMlpXNTBVR3gxWjJsdWN6b2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJRVYyWlc1MFVHeDFaMmx1VDNKa1pYSWdQU0J1ZFd4c08xeHVJQ0FnSUdadmNpQW9kbUZ5SUhCc2RXZHBiazVoYldVZ2FXNGdibUZ0WlhOVWIxQnNkV2RwYm5NcElIdGNiaUFnSUNBZ0lHbG1JQ2h1WVcxbGMxUnZVR3gxWjJsdWN5NW9ZWE5QZDI1UWNtOXdaWEowZVNod2JIVm5hVzVPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JrWld4bGRHVWdibUZ0WlhOVWIxQnNkV2RwYm5OYmNHeDFaMmx1VG1GdFpWMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUVWMlpXNTBVR3gxWjJsdVVtVm5hWE4wY25rdWNHeDFaMmx1Y3k1c1pXNW5kR2dnUFNBd08xeHVYRzRnSUNBZ2RtRnlJR1YyWlc1MFRtRnRaVVJwYzNCaGRHTm9RMjl1Wm1sbmN5QTlJRVYyWlc1MFVHeDFaMmx1VW1WbmFYTjBjbmt1WlhabGJuUk9ZVzFsUkdsemNHRjBZMmhEYjI1bWFXZHpPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHVjJaVzUwVG1GdFpTQnBiaUJsZG1WdWRFNWhiV1ZFYVhOd1lYUmphRU52Ym1acFozTXBJSHRjYmlBZ0lDQWdJR2xtSUNobGRtVnVkRTVoYldWRWFYTndZWFJqYUVOdmJtWnBaM011YUdGelQzZHVVSEp2Y0dWeWRIa29aWFpsYm5ST1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCa1pXeGxkR1VnWlhabGJuUk9ZVzFsUkdsemNHRjBZMmhEYjI1bWFXZHpXMlYyWlc1MFRtRnRaVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUhKbFoybHpkSEpoZEdsdmJrNWhiV1ZOYjJSMWJHVnpJRDBnUlhabGJuUlFiSFZuYVc1U1pXZHBjM1J5ZVM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjenRjYmlBZ0lDQm1iM0lnS0haaGNpQnlaV2RwYzNSeVlYUnBiMjVPWVcxbElHbHVJSEpsWjJsemRISmhkR2x2Yms1aGJXVk5iMlIxYkdWektTQjdYRzRnSUNBZ0lDQnBaaUFvY21WbmFYTjBjbUYwYVc5dVRtRnRaVTF2WkhWc1pYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdaR1ZzWlhSbElISmxaMmx6ZEhKaGRHbHZiazVoYldWTmIyUjFiR1Z6VzNKbFoybHpkSEpoZEdsdmJrNWhiV1ZkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFVjJaVzUwVUd4MVoybHVVbVZuYVhOMGNuazdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFdmVudFBsdWdpblV0aWxzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOlxuICovXG5cbi8qKlxuICogLSBgTW91bnRgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgZG9tIElEcyBhbmRcbiAqICAgYWN0dWFsIG5vZGUgcmVmZXJlbmNlcy5cbiAqL1xudmFyIGluamVjdGlvbiA9IHtcbiAgTW91bnQ6IG51bGwsXG4gIGluamVjdE1vdW50OiBmdW5jdGlvbiAoSW5qZWN0ZWRNb3VudCkge1xuICAgIGluamVjdGlvbi5Nb3VudCA9IEluamVjdGVkTW91bnQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkTW91bnQgJiYgSW5qZWN0ZWRNb3VudC5nZXROb2RlICYmIEluamVjdGVkTW91bnQuZ2V0SUQsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RNb3VudCguLi4pOiBJbmplY3RlZCBNb3VudCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGUgb3IgZ2V0SUQuJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59O1xuXG52YXIgdG9wTGV2ZWxUeXBlcyA9IEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXM7XG5cbmZ1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlVXAgfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoRW5kIHx8IHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BUb3VjaENhbmNlbDtcbn1cblxuZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlTW92ZSB8fCB0b3BMZXZlbFR5cGUgPT09IHRvcExldmVsVHlwZXMudG9wVG91Y2hNb3ZlO1xufVxuZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd24gfHwgdG9wTGV2ZWxUeXBlID09PSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoU3RhcnQ7XG59XG5cbnZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICAgIHZhciBkaXNwYXRjaElEcyA9IGV2ZW50Ll9kaXNwYXRjaElEcztcblxuICAgIHZhciBsaXN0ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpO1xuICAgIHZhciBpZHNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJRHMpO1xuICAgIHZhciBJRHNMZW4gPSBpZHNJc0FyciA/IGRpc3BhdGNoSURzLmxlbmd0aCA6IGRpc3BhdGNoSURzID8gMSA6IDA7XG4gICAgdmFyIGxpc3RlbmVyc0xlbiA9IGxpc3RlbmVyc0lzQXJyID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoIDogZGlzcGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDtcblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGlkc0lzQXJyID09PSBsaXN0ZW5lcnNJc0FyciAmJiBJRHNMZW4gPT09IGxpc3RlbmVyc0xlbiwgJ0V2ZW50UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLlxuICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcilcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxldmVsIGNhbGxiYWNrXG4gKiBAcGFyYW0ge3N0cmluZ30gZG9tSUQgRE9NIGlkIHRvIHBhc3MgdG8gdGhlIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVsYXRlZCwgbGlzdGVuZXIsIGRvbUlEKSB7XG4gIHZhciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBpbmplY3Rpb24uTW91bnQuZ2V0Tm9kZShkb21JRCk7XG4gIGlmIChzaW11bGF0ZWQpIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBldmVudCwgZG9tSUQpO1xuICB9IGVsc2Uge1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sodHlwZSwgbGlzdGVuZXIsIGV2ZW50LCBkb21JRCk7XG4gIH1cbiAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7XG59XG5cbi8qKlxuICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMuXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKSB7XG4gIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgdmFyIGRpc3BhdGNoSURzID0gZXZlbnQuX2Rpc3BhdGNoSURzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIExpc3RlbmVycyBhbmQgSURzIGFyZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLlxuICAgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzW2ldLCBkaXNwYXRjaElEc1tpXSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzLCBkaXNwYXRjaElEcyk7XG4gIH1cbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoSURzID0gbnVsbDtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcywgYnV0IHN0b3BzXG4gKiBhdCB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHJldHVybmluZyB0cnVlLCBhbmQgcmV0dXJucyB0aGF0IGlkLlxuICpcbiAqIEByZXR1cm4gez9zdHJpbmd9IGlkIG9mIHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gd2hvJ3MgbGlzdGVuZXIgcmV0dXJuc1xuICogdHJ1ZSwgb3IgbnVsbCBpZiBubyBsaXN0ZW5lciByZXR1cm5lZCB0cnVlLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaElEcyA9IGV2ZW50Ll9kaXNwYXRjaElEcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMgYW5kIElEcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cbiAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJRHNbaV0pKSB7XG4gICAgICAgIHJldHVybiBkaXNwYXRjaElEc1tpXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHtcbiAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSURzKSkge1xuICAgICAgcmV0dXJuIGRpc3BhdGNoSURzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBAc2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHtcbiAgdmFyIHJldCA9IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTtcbiAgZXZlbnQuX2Rpc3BhdGNoSURzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBFeGVjdXRpb24gb2YgYSBcImRpcmVjdFwiIGRpc3BhdGNoIC0gdGhlcmUgbXVzdCBiZSBhdCBtb3N0IG9uZSBkaXNwYXRjaFxuICogYWNjdW11bGF0ZWQgb24gdGhlIGV2ZW50IG9yIGl0IGlzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIEl0IGRvZXNuJ3QgcmVhbGx5IG1ha2VcbiAqIHNlbnNlIGZvciBhbiBldmVudCB3aXRoIG11bHRpcGxlIGRpc3BhdGNoZXMgKGJ1YmJsZWQpIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gKiByZXR1cm4gdmFsdWVzIGF0IGVhY2ggZGlzcGF0Y2ggZXhlY3V0aW9uLCBidXQgaXQgZG9lcyB0ZW5kIHRvIG1ha2Ugc2Vuc2Ugd2hlblxuICogZGVhbGluZyB3aXRoIFwiZGlyZWN0XCIgZGlzcGF0Y2hlcy5cbiAqXG4gKiBAcmV0dXJuIHsqfSBUaGUgcmV0dXJuIHZhbHVlIG9mIGV4ZWN1dGluZyB0aGUgc2luZ2xlIGRpc3BhdGNoLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlyZWN0RGlzcGF0Y2goZXZlbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXIgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaElEID0gZXZlbnQuX2Rpc3BhdGNoSURzO1xuICAhIUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURpcmVjdERpc3BhdGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIHZhciByZXMgPSBkaXNwYXRjaExpc3RlbmVyID8gZGlzcGF0Y2hMaXN0ZW5lcihldmVudCwgZGlzcGF0Y2hJRCkgOiBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hJRHMgPSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmZiBudW1iZXIgb2YgZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cbiAqL1xuZnVuY3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG59XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZnVsIGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHtcbiAgaXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVpc2g6IGlzTW92ZWlzaCxcbiAgaXNTdGFydGlzaDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGlyZWN0RGlzcGF0Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhhc0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMsXG5cbiAgZ2V0Tm9kZTogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGluamVjdGlvbi5Nb3VudC5nZXROb2RlKGlkKTtcbiAgfSxcbiAgZ2V0SUQ6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGluamVjdGlvbi5Nb3VudC5nZXRJRChub2RlKTtcbiAgfSxcblxuICBpbmplY3Rpb246IGluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblV0aWxzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlJYWmxiblJRYkhWbmFXNVZkR2xzY3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQkZkbVZ1ZEZCc2RXZHBibFYwYVd4elhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdSWFpsYm5SRGIyNXpkR0Z1ZEhNZ1BTQnlaWEYxYVhKbEtDY3VMMFYyWlc1MFEyOXVjM1JoYm5Sekp5azdYRzUyWVhJZ1VtVmhZM1JGY25KdmNsVjBhV3h6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWeWNtOXlWWFJwYkhNbktUdGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JpOHFLbHh1SUNvZ1NXNXFaV04wWldRZ1pHVndaVzVrWlc1amFXVnpPbHh1SUNvdlhHNWNiaThxS2x4dUlDb2dMU0JnVFc5MWJuUmdPaUJiY21WeGRXbHlaV1JkSUUxdlpIVnNaU0IwYUdGMElHTmhiaUJqYjI1MlpYSjBJR0psZEhkbFpXNGdVbVZoWTNRZ1pHOXRJRWxFY3lCaGJtUmNiaUFxSUNBZ1lXTjBkV0ZzSUc1dlpHVWdjbVZtWlhKbGJtTmxjeTVjYmlBcUwxeHVkbUZ5SUdsdWFtVmpkR2x2YmlBOUlIdGNiaUFnVFc5MWJuUTZJRzUxYkd3c1hHNGdJR2x1YW1WamRFMXZkVzUwT2lCbWRXNWpkR2x2YmlBb1NXNXFaV04wWldSTmIzVnVkQ2tnZTF4dUlDQWdJR2x1YW1WamRHbHZiaTVOYjNWdWRDQTlJRWx1YW1WamRHVmtUVzkxYm5RN1hHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0VsdWFtVmpkR1ZrVFc5MWJuUWdKaVlnU1c1cVpXTjBaV1JOYjNWdWRDNW5aWFJPYjJSbElDWW1JRWx1YW1WamRHVmtUVzkxYm5RdVoyVjBTVVFzSUNkRmRtVnVkRkJzZFdkcGJsVjBhV3h6TG1sdWFtVmpkR2x2Ymk1cGJtcGxZM1JOYjNWdWRDZ3VMaTRwT2lCSmJtcGxZM1JsWkNCTmIzVnVkQ0FuSUNzZ0oyMXZaSFZzWlNCcGN5QnRhWE56YVc1bklHZGxkRTV2WkdVZ2IzSWdaMlYwU1VRdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1WEc1MllYSWdkRzl3VEdWMlpXeFVlWEJsY3lBOUlFVjJaVzUwUTI5dWMzUmhiblJ6TG5SdmNFeGxkbVZzVkhsd1pYTTdYRzVjYm1aMWJtTjBhVzl1SUdselJXNWthWE5vS0hSdmNFeGxkbVZzVkhsd1pTa2dlMXh1SUNCeVpYUjFjbTRnZEc5d1RHVjJaV3hVZVhCbElEMDlQU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRTF2ZFhObFZYQWdmSHdnZEc5d1RHVjJaV3hVZVhCbElEMDlQU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRlJ2ZFdOb1JXNWtJSHg4SUhSdmNFeGxkbVZzVkhsd1pTQTlQVDBnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JVYjNWamFFTmhibU5sYkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYVhOTmIzWmxhWE5vS0hSdmNFeGxkbVZzVkhsd1pTa2dlMXh1SUNCeVpYUjFjbTRnZEc5d1RHVjJaV3hVZVhCbElEMDlQU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRTF2ZFhObFRXOTJaU0I4ZkNCMGIzQk1aWFpsYkZSNWNHVWdQVDA5SUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vkc5MVkyaE5iM1psTzF4dWZWeHVablZ1WTNScGIyNGdhWE5UZEdGeWRHbHphQ2gwYjNCTVpYWmxiRlI1Y0dVcElIdGNiaUFnY21WMGRYSnVJSFJ2Y0V4bGRtVnNWSGx3WlNBOVBUMGdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQk5iM1Z6WlVSdmQyNGdmSHdnZEc5d1RHVjJaV3hVZVhCbElEMDlQU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRlJ2ZFdOb1UzUmhjblE3WEc1OVhHNWNiblpoY2lCMllXeHBaR0YwWlVWMlpXNTBSR2x6Y0dGMFkyaGxjenRjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhiR2xrWVhSbFJYWmxiblJFYVhOd1lYUmphR1Z6SUQwZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnZG1GeUlHUnBjM0JoZEdOb1RHbHpkR1Z1WlhKeklEMGdaWFpsYm5RdVgyUnBjM0JoZEdOb1RHbHpkR1Z1WlhKek8xeHVJQ0FnSUhaaGNpQmthWE53WVhSamFFbEVjeUE5SUdWMlpXNTBMbDlrYVhOd1lYUmphRWxFY3p0Y2JseHVJQ0FnSUhaaGNpQnNhWE4wWlc1bGNuTkpjMEZ5Y2lBOUlFRnljbUY1TG1selFYSnlZWGtvWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1wTzF4dUlDQWdJSFpoY2lCcFpITkpjMEZ5Y2lBOUlFRnljbUY1TG1selFYSnlZWGtvWkdsemNHRjBZMmhKUkhNcE8xeHVJQ0FnSUhaaGNpQkpSSE5NWlc0Z1BTQnBaSE5KYzBGeWNpQS9JR1JwYzNCaGRHTm9TVVJ6TG14bGJtZDBhQ0E2SUdScGMzQmhkR05vU1VSeklEOGdNU0E2SURBN1hHNGdJQ0FnZG1GeUlHeHBjM1JsYm1WeWMweGxiaUE5SUd4cGMzUmxibVZ5YzBselFYSnlJRDhnWkdsemNHRjBZMmhNYVhOMFpXNWxjbk11YkdWdVozUm9JRG9nWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1nUHlBeElEb2dNRHRjYmx4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0dsa2MwbHpRWEp5SUQwOVBTQnNhWE4wWlc1bGNuTkpjMEZ5Y2lBbUppQkpSSE5NWlc0Z1BUMDlJR3hwYzNSbGJtVnljMHhsYml3Z0owVjJaVzUwVUd4MVoybHVWWFJwYkhNNklFbHVkbUZzYVdRZ1lHVjJaVzUwWUM0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZUdGNibjFjYmx4dUx5b3FYRzRnS2lCRWFYTndZWFJqYUNCMGFHVWdaWFpsYm5RZ2RHOGdkR2hsSUd4cGMzUmxibVZ5TGx4dUlDb2dRSEJoY21GdElIdFRlVzUwYUdWMGFXTkZkbVZ1ZEgwZ1pYWmxiblFnVTNsdWRHaGxkR2xqUlhabGJuUWdkRzhnYUdGdVpHeGxYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUhOcGJYVnNZWFJsWkNCSlppQjBhR1VnWlhabGJuUWdhWE1nYzJsdGRXeGhkR1ZrSUNoamFHRnVaMlZ6SUdWNGJpQmlaV2hoZG1sdmNpbGNiaUFxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUd4cGMzUmxibVZ5SUVGd2NHeHBZMkYwYVc5dUxXeGxkbVZzSUdOaGJHeGlZV05yWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1pHOXRTVVFnUkU5TklHbGtJSFJ2SUhCaGMzTWdkRzhnZEdobElHTmhiR3hpWVdOckxseHVJQ292WEc1bWRXNWpkR2x2YmlCbGVHVmpkWFJsUkdsemNHRjBZMmdvWlhabGJuUXNJSE5wYlhWc1lYUmxaQ3dnYkdsemRHVnVaWElzSUdSdmJVbEVLU0I3WEc0Z0lIWmhjaUIwZVhCbElEMGdaWFpsYm5RdWRIbHdaU0I4ZkNBbmRXNXJibTkzYmkxbGRtVnVkQ2M3WEc0Z0lHVjJaVzUwTG1OMWNuSmxiblJVWVhKblpYUWdQU0JwYm1wbFkzUnBiMjR1VFc5MWJuUXVaMlYwVG05a1pTaGtiMjFKUkNrN1hHNGdJR2xtSUNoemFXMTFiR0YwWldRcElIdGNiaUFnSUNCU1pXRmpkRVZ5Y205eVZYUnBiSE11YVc1MmIydGxSM1ZoY21SbFpFTmhiR3hpWVdOclYybDBhRU5oZEdOb0tIUjVjR1VzSUd4cGMzUmxibVZ5TENCbGRtVnVkQ3dnWkc5dFNVUXBPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJRkpsWVdOMFJYSnliM0pWZEdsc2N5NXBiblp2YTJWSGRXRnlaR1ZrUTJGc2JHSmhZMnNvZEhsd1pTd2diR2x6ZEdWdVpYSXNJR1YyWlc1MExDQmtiMjFKUkNrN1hHNGdJSDFjYmlBZ1pYWmxiblF1WTNWeWNtVnVkRlJoY21kbGRDQTlJRzUxYkd3N1hHNTlYRzVjYmk4cUtseHVJQ29nVTNSaGJtUmhjbVF2YzJsdGNHeGxJR2wwWlhKaGRHbHZiaUIwYUhKdmRXZG9JR0Z1SUdWMlpXNTBKM01nWTI5c2JHVmpkR1ZrSUdScGMzQmhkR05vWlhNdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdWNFpXTjFkR1ZFYVhOd1lYUmphR1Z6U1c1UGNtUmxjaWhsZG1WdWRDd2djMmx0ZFd4aGRHVmtLU0I3WEc0Z0lIWmhjaUJrYVhOd1lYUmphRXhwYzNSbGJtVnljeUE5SUdWMlpXNTBMbDlrYVhOd1lYUmphRXhwYzNSbGJtVnljenRjYmlBZ2RtRnlJR1JwYzNCaGRHTm9TVVJ6SUQwZ1pYWmxiblF1WDJScGMzQmhkR05vU1VSek8xeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIWmhiR2xrWVhSbFJYWmxiblJFYVhOd1lYUmphR1Z6S0dWMlpXNTBLVHRjYmlBZ2ZWeHVJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hrYVhOd1lYUmphRXhwYzNSbGJtVnljeWtwSUh0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUdScGMzQmhkR05vVEdsemRHVnVaWEp6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvWlhabGJuUXVhWE5RY205d1lXZGhkR2x2YmxOMGIzQndaV1FvS1NrZ2UxeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklFeHBjM1JsYm1WeWN5QmhibVFnU1VSeklHRnlaU0IwZDI4Z2NHRnlZV3hzWld3Z1lYSnlZWGx6SUhSb1lYUWdZWEpsSUdGc2QyRjVjeUJwYmlCemVXNWpMbHh1SUNBZ0lDQWdaWGhsWTNWMFpVUnBjM0JoZEdOb0tHVjJaVzUwTENCemFXMTFiR0YwWldRc0lHUnBjM0JoZEdOb1RHbHpkR1Z1WlhKelcybGRMQ0JrYVhOd1lYUmphRWxFYzF0cFhTazdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0dScGMzQmhkR05vVEdsemRHVnVaWEp6S1NCN1hHNGdJQ0FnWlhobFkzVjBaVVJwYzNCaGRHTm9LR1YyWlc1MExDQnphVzExYkdGMFpXUXNJR1JwYzNCaGRHTm9UR2x6ZEdWdVpYSnpMQ0JrYVhOd1lYUmphRWxFY3lrN1hHNGdJSDFjYmlBZ1pYWmxiblF1WDJScGMzQmhkR05vVEdsemRHVnVaWEp6SUQwZ2JuVnNiRHRjYmlBZ1pYWmxiblF1WDJScGMzQmhkR05vU1VSeklEMGdiblZzYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZEdGdVpHRnlaQzl6YVcxd2JHVWdhWFJsY21GMGFXOXVJSFJvY205MVoyZ2dZVzRnWlhabGJuUW5jeUJqYjJ4c1pXTjBaV1FnWkdsemNHRjBZMmhsY3l3Z1luVjBJSE4wYjNCelhHNGdLaUJoZENCMGFHVWdabWx5YzNRZ1pHbHpjR0YwWTJnZ1pYaGxZM1YwYVc5dUlISmxkSFZ5Ym1sdVp5QjBjblZsTENCaGJtUWdjbVYwZFhKdWN5QjBhR0YwSUdsa0xseHVJQ3BjYmlBcUlFQnlaWFIxY200Z2V6OXpkSEpwYm1kOUlHbGtJRzltSUhSb1pTQm1hWEp6ZENCa2FYTndZWFJqYUNCbGVHVmpkWFJwYjI0Z2QyaHZKM01nYkdsemRHVnVaWElnY21WMGRYSnVjMXh1SUNvZ2RISjFaU3dnYjNJZ2JuVnNiQ0JwWmlCdWJ5QnNhWE4wWlc1bGNpQnlaWFIxY201bFpDQjBjblZsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJsZUdWamRYUmxSR2x6Y0dGMFkyaGxjMGx1VDNKa1pYSlRkRzl3UVhSVWNuVmxTVzF3YkNobGRtVnVkQ2tnZTF4dUlDQjJZWElnWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1nUFNCbGRtVnVkQzVmWkdsemNHRjBZMmhNYVhOMFpXNWxjbk03WEc0Z0lIWmhjaUJrYVhOd1lYUmphRWxFY3lBOUlHVjJaVzUwTGw5a2FYTndZWFJqYUVsRWN6dGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQjJZV3hwWkdGMFpVVjJaVzUwUkdsemNHRjBZMmhsY3lobGRtVnVkQ2s3WEc0Z0lIMWNiaUFnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvWkdsemNHRjBZMmhNYVhOMFpXNWxjbk1wS1NCN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCa2FYTndZWFJqYUV4cGMzUmxibVZ5Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0dWMlpXNTBMbWx6VUhKdmNHRm5ZWFJwYjI1VGRHOXdjR1ZrS0NrcElIdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBdkx5Qk1hWE4wWlc1bGNuTWdZVzVrSUVsRWN5QmhjbVVnZEhkdklIQmhjbUZzYkdWc0lHRnljbUY1Y3lCMGFHRjBJR0Z5WlNCaGJIZGhlWE1nYVc0Z2MzbHVZeTVjYmlBZ0lDQWdJR2xtSUNoa2FYTndZWFJqYUV4cGMzUmxibVZ5YzF0cFhTaGxkbVZ1ZEN3Z1pHbHpjR0YwWTJoSlJITmJhVjBwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2FYTndZWFJqYUVsRWMxdHBYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0JwWmlBb1pHbHpjR0YwWTJoTWFYTjBaVzVsY25NcElIdGNiaUFnSUNCcFppQW9aR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTW9aWFpsYm5Rc0lHUnBjM0JoZEdOb1NVUnpLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1JwYzNCaGRHTm9TVVJ6TzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdiblZzYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJBYzJWbElHVjRaV04xZEdWRWFYTndZWFJqYUdWelNXNVBjbVJsY2xOMGIzQkJkRlJ5ZFdWSmJYQnNYRzRnS2k5Y2JtWjFibU4wYVc5dUlHVjRaV04xZEdWRWFYTndZWFJqYUdWelNXNVBjbVJsY2xOMGIzQkJkRlJ5ZFdVb1pYWmxiblFwSUh0Y2JpQWdkbUZ5SUhKbGRDQTlJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpTVzVQY21SbGNsTjBiM0JCZEZSeWRXVkpiWEJzS0dWMlpXNTBLVHRjYmlBZ1pYWmxiblF1WDJScGMzQmhkR05vU1VSeklEMGdiblZzYkR0Y2JpQWdaWFpsYm5RdVgyUnBjM0JoZEdOb1RHbHpkR1Z1WlhKeklEMGdiblZzYkR0Y2JpQWdjbVYwZFhKdUlISmxkRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkZlR1ZqZFhScGIyNGdiMllnWVNCY0ltUnBjbVZqZEZ3aUlHUnBjM0JoZEdOb0lDMGdkR2hsY21VZ2JYVnpkQ0JpWlNCaGRDQnRiM04wSUc5dVpTQmthWE53WVhSamFGeHVJQ29nWVdOamRXMTFiR0YwWldRZ2IyNGdkR2hsSUdWMlpXNTBJRzl5SUdsMElHbHpJR052Ym5OcFpHVnlaV1FnWVc0Z1pYSnliM0l1SUVsMElHUnZaWE51SjNRZ2NtVmhiR3g1SUcxaGEyVmNiaUFxSUhObGJuTmxJR1p2Y2lCaGJpQmxkbVZ1ZENCM2FYUm9JRzExYkhScGNHeGxJR1JwYzNCaGRHTm9aWE1nS0dKMVltSnNaV1FwSUhSdklHdGxaWEFnZEhKaFkyc2diMllnZEdobFhHNGdLaUJ5WlhSMWNtNGdkbUZzZFdWeklHRjBJR1ZoWTJnZ1pHbHpjR0YwWTJnZ1pYaGxZM1YwYVc5dUxDQmlkWFFnYVhRZ1pHOWxjeUIwWlc1a0lIUnZJRzFoYTJVZ2MyVnVjMlVnZDJobGJseHVJQ29nWkdWaGJHbHVaeUIzYVhSb0lGd2laR2x5WldOMFhDSWdaR2x6Y0dGMFkyaGxjeTVjYmlBcVhHNGdLaUJBY21WMGRYSnVJSHNxZlNCVWFHVWdjbVYwZFhKdUlIWmhiSFZsSUc5bUlHVjRaV04xZEdsdVp5QjBhR1VnYzJsdVoyeGxJR1JwYzNCaGRHTm9MbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmxlR1ZqZFhSbFJHbHlaV04wUkdsemNHRjBZMmdvWlhabGJuUXBJSHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0IyWVd4cFpHRjBaVVYyWlc1MFJHbHpjR0YwWTJobGN5aGxkbVZ1ZENrN1hHNGdJSDFjYmlBZ2RtRnlJR1JwYzNCaGRHTm9UR2x6ZEdWdVpYSWdQU0JsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTTdYRzRnSUhaaGNpQmthWE53WVhSamFFbEVJRDBnWlhabGJuUXVYMlJwYzNCaGRHTm9TVVJ6TzF4dUlDQWhJVUZ5Y21GNUxtbHpRWEp5WVhrb1pHbHpjR0YwWTJoTWFYTjBaVzVsY2lrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWlhobFkzVjBaVVJwY21WamRFUnBjM0JoZEdOb0tDNHVMaWs2SUVsdWRtRnNhV1FnWUdWMlpXNTBZQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUhaaGNpQnlaWE1nUFNCa2FYTndZWFJqYUV4cGMzUmxibVZ5SUQ4Z1pHbHpjR0YwWTJoTWFYTjBaVzVsY2lobGRtVnVkQ3dnWkdsemNHRjBZMmhKUkNrZ09pQnVkV3hzTzF4dUlDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoTWFYTjBaVzVsY25NZ1BTQnVkV3hzTzF4dUlDQmxkbVZ1ZEM1ZlpHbHpjR0YwWTJoSlJITWdQU0J1ZFd4c08xeHVJQ0J5WlhSMWNtNGdjbVZ6TzF4dWZWeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdVM2x1ZEdobGRHbGpSWFpsYm5SOUlHVjJaVzUwWEc0Z0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbVppQnVkVzFpWlhJZ2IyWWdaR2x6Y0dGMFkyaGxjeUJoWTJOMWJYVnNZWFJsWkNCcGN5Qm5jbVZoZEdWeUlIUm9ZVzRnTUM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYUdGelJHbHpjR0YwWTJobGN5aGxkbVZ1ZENrZ2UxeHVJQ0J5WlhSMWNtNGdJU0ZsZG1WdWRDNWZaR2x6Y0dGMFkyaE1hWE4wWlc1bGNuTTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoYkNCMWRHbHNhWFJwWlhNZ2RHaGhkQ0JoY21VZ2RYTmxablZzSUdsdUlHTnlaV0YwYVc1bklHTjFjM1J2YlNCRmRtVnVkQ0JRYkhWbmFXNXpMbHh1SUNvdlhHNTJZWElnUlhabGJuUlFiSFZuYVc1VmRHbHNjeUE5SUh0Y2JpQWdhWE5GYm1ScGMyZzZJR2x6Ulc1a2FYTm9MRnh1SUNCcGMwMXZkbVZwYzJnNklHbHpUVzkyWldsemFDeGNiaUFnYVhOVGRHRnlkR2x6YURvZ2FYTlRkR0Z5ZEdsemFDeGNibHh1SUNCbGVHVmpkWFJsUkdseVpXTjBSR2x6Y0dGMFkyZzZJR1Y0WldOMWRHVkVhWEpsWTNSRWFYTndZWFJqYUN4Y2JpQWdaWGhsWTNWMFpVUnBjM0JoZEdOb1pYTkpiazl5WkdWeU9pQmxlR1ZqZFhSbFJHbHpjR0YwWTJobGMwbHVUM0prWlhJc1hHNGdJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpTVzVQY21SbGNsTjBiM0JCZEZSeWRXVTZJR1Y0WldOMWRHVkVhWE53WVhSamFHVnpTVzVQY21SbGNsTjBiM0JCZEZSeWRXVXNYRzRnSUdoaGMwUnBjM0JoZEdOb1pYTTZJR2hoYzBScGMzQmhkR05vWlhNc1hHNWNiaUFnWjJWMFRtOWtaVG9nWm5WdVkzUnBiMjRnS0dsa0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUdsdWFtVmpkR2x2Ymk1TmIzVnVkQzVuWlhST2IyUmxLR2xrS1R0Y2JpQWdmU3hjYmlBZ1oyVjBTVVE2SUdaMWJtTjBhVzl1SUNodWIyUmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHbHVhbVZqZEdsdmJpNU5iM1Z1ZEM1blpYUkpSQ2h1YjJSbEtUdGNiaUFnZlN4Y2JseHVJQ0JwYm1wbFkzUnBiMjQ2SUdsdWFtVmpkR2x2Ymx4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JGZG1WdWRGQnNkV2RwYmxWMGFXeHpPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgRXZlbnRQcm9wYWdhdG9yc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50Q29uc3RhbnRzID0gcmVxdWlyZSgnLi9FdmVudENvbnN0YW50cycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7XG5cbnZhciBQcm9wYWdhdGlvblBoYXNlcyA9IEV2ZW50Q29uc3RhbnRzLlByb3BhZ2F0aW9uUGhhc2VzO1xudmFyIGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7XG5cbi8qKlxuICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCByZWdpc3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudFxuICogXCJwaGFzZXNcIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5lcnMgYnkgYSBnaXZlbiBwaGFzZS5cbiAqL1xuZnVuY3Rpb24gbGlzdGVuZXJBdFBoYXNlKGlkLCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkge1xuICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdO1xuICByZXR1cm4gZ2V0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xufVxuXG4vKipcbiAqIFRhZ3MgYSBgU3ludGhldGljRXZlbnRgIHdpdGggZGlzcGF0Y2hlZCBsaXN0ZW5lcnMuIENyZWF0aW5nIHRoaXMgZnVuY3Rpb25cbiAqIGhlcmUsIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBiaW5kIG9yIGNyZWF0ZSBmdW5jdGlvbnMgZm9yIGVhY2ggZXZlbnQuXG4gKiBNdXRhdGluZyB0aGUgZXZlbnQncyBtZW1iZXJzIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBjcmVhdGUgYSB3cmFwcGluZ1xuICogXCJkaXNwYXRjaFwiIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhkb21JRCwgdXB3YXJkcywgZXZlbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkb21JRCwgJ0Rpc3BhdGNoaW5nIGlkIG11c3Qgbm90IGJlIG51bGwnKSA6IHVuZGVmaW5lZDtcbiAgfVxuICB2YXIgcGhhc2UgPSB1cHdhcmRzID8gUHJvcGFnYXRpb25QaGFzZXMuYnViYmxlZCA6IFByb3BhZ2F0aW9uUGhhc2VzLmNhcHR1cmVkO1xuICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lckF0UGhhc2UoZG9tSUQsIGV2ZW50LCBwaGFzZSk7XG4gIGlmIChsaXN0ZW5lcikge1xuICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpO1xuICAgIGV2ZW50Ll9kaXNwYXRjaElEcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaElEcywgZG9tSUQpO1xuICB9XG59XG5cbi8qKlxuICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdFxuICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG4gKiBlYWNoIGV2ZW50IGFuZCBwZXJmb3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhXG4gKiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXlcbiAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5nZXRJbnN0YW5jZUhhbmRsZSgpLnRyYXZlcnNlVHdvUGhhc2UoZXZlbnQuZGlzcGF0Y2hNYXJrZXIsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFNhbWUgYXMgYGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVgLCBidXQgc2tpcHMgb3ZlciB0aGUgdGFyZ2V0SUQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIEV2ZW50UGx1Z2luSHViLmluamVjdGlvbi5nZXRJbnN0YW5jZUhhbmRsZSgpLnRyYXZlcnNlVHdvUGhhc2VTa2lwVGFyZ2V0KGV2ZW50LmRpc3BhdGNoTWFya2VyLCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2FyZCB0byBkaXJlY3Rpb24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZFxuICogcmVnaXN0cmF0aW9uIG5hbWVzLiBTYW1lIGFzIGBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhvdXRcbiAqIHJlcXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNwYXRjaGVkIElELlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhpZCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7XG4gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaWQsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gICAgICBldmVudC5fZGlzcGF0Y2hJRHMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJRHMsIGlkKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9uIGFuIGBTeW50aGV0aWNFdmVudGAsIGJ1dCBvbmx5IGZvciB0aGVcbiAqIGBkaXNwYXRjaE1hcmtlcmAuXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudFxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIGFjY3VtdWxhdGVEaXNwYXRjaGVzKGV2ZW50LmRpc3BhdGNoTWFya2VyLCBudWxsLCBldmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb21JRCwgdG9JRCkge1xuICBFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uZ2V0SW5zdGFuY2VIYW5kbGUoKS50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbUlELCB0b0lELCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVudGVyKTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKTtcbn1cblxuLyoqXG4gKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0ZXJucywgZWFjaCBvZiB3aGljaCB3aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudFxuICogb2YgaW5mb3JtYXRpb24sIGFuZCBnZW5lcmF0ZSBhIHNldCBvZiBcImRpc3BhdGNoIHJlYWR5IGV2ZW50IG9iamVjdHNcIiAtIHdoaWNoXG4gKiBhcmUgc2V0cyBvZiBldmVudHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdGF0ZWQgd2l0aCBhIHNldCBvZiBkaXNwYXRjaGVkXG4gKiBsaXN0ZW5lciBmdW5jdGlvbnMvaWRzLiBUaGUgQVBJIGlzIGRlc2lnbmVkIHRoaXMgd2F5IHRvIGRpc2NvdXJhZ2UgdGhlc2VcbiAqIHByb3BhZ2F0aW9uIHN0cmF0ZWdpZXMgZnJvbSBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGRpc3BhdGNoZXMsIHNpbmNlIHdlXG4gKiBhbHdheXMgd2FudCB0byBjb2xsZWN0IHRoZSBlbnRpcmUgc2V0IG9mIGRpc3BhdGNoZXMgYmVmb3JlIGV4ZWN1dGluZyBldmVudCBhXG4gKiBzaW5nbGUgb25lLlxuICpcbiAqIEBjb25zdHJ1Y3RvciBFdmVudFByb3BhZ2F0b3JzXG4gKi9cbnZhciBFdmVudFByb3BhZ2F0b3JzID0ge1xuICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzLFxuICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQsXG4gIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyxcbiAgYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzOiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQcm9wYWdhdG9ycztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZSWFpsYm5SUWNtOXdZV2RoZEc5eWN5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdSWFpsYm5SUWNtOXdZV2RoZEc5eWMxeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRVYyWlc1MFEyOXVjM1JoYm5SeklEMGdjbVZ4ZFdseVpTZ25MaTlGZG1WdWRFTnZibk4wWVc1MGN5Y3BPMXh1ZG1GeUlFVjJaVzUwVUd4MVoybHVTSFZpSUQwZ2NtVnhkV2x5WlNnbkxpOUZkbVZ1ZEZCc2RXZHBia2gxWWljcE8xeHVYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlHRmpZM1Z0ZFd4aGRHVkpiblJ2SUQwZ2NtVnhkV2x5WlNnbkxpOWhZMk4xYlhWc1lYUmxTVzUwYnljcE8xeHVkbUZ5SUdadmNrVmhZMmhCWTJOMWJYVnNZWFJsWkNBOUlISmxjWFZwY21Vb0p5NHZabTl5UldGamFFRmpZM1Z0ZFd4aGRHVmtKeWs3WEc1Y2JuWmhjaUJRY205d1lXZGhkR2x2YmxCb1lYTmxjeUE5SUVWMlpXNTBRMjl1YzNSaGJuUnpMbEJ5YjNCaFoyRjBhVzl1VUdoaGMyVnpPMXh1ZG1GeUlHZGxkRXhwYzNSbGJtVnlJRDBnUlhabGJuUlFiSFZuYVc1SWRXSXVaMlYwVEdsemRHVnVaWEk3WEc1Y2JpOHFLbHh1SUNvZ1UyOXRaU0JsZG1WdWRDQjBlWEJsY3lCb1lYWmxJR0VnYm05MGFXOXVJRzltSUdScFptWmxjbVZ1ZENCeVpXZHBjM1J5WVhScGIyNGdibUZ0WlhNZ1ptOXlJR1JwWm1abGNtVnVkRnh1SUNvZ1hDSndhR0Z6WlhOY0lpQnZaaUJ3Y205d1lXZGhkR2x2Ymk0Z1ZHaHBjeUJtYVc1a2N5QnNhWE4wWlc1bGNuTWdZbmtnWVNCbmFYWmxiaUJ3YUdGelpTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2JHbHpkR1Z1WlhKQmRGQm9ZWE5sS0dsa0xDQmxkbVZ1ZEN3Z2NISnZjR0ZuWVhScGIyNVFhR0Z6WlNrZ2UxeHVJQ0IyWVhJZ2NtVm5hWE4wY21GMGFXOXVUbUZ0WlNBOUlHVjJaVzUwTG1ScGMzQmhkR05vUTI5dVptbG5MbkJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWelczQnliM0JoWjJGMGFXOXVVR2hoYzJWZE8xeHVJQ0J5WlhSMWNtNGdaMlYwVEdsemRHVnVaWElvYVdRc0lISmxaMmx6ZEhKaGRHbHZiazVoYldVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZSaFozTWdZU0JnVTNsdWRHaGxkR2xqUlhabGJuUmdJSGRwZEdnZ1pHbHpjR0YwWTJobFpDQnNhWE4wWlc1bGNuTXVJRU55WldGMGFXNW5JSFJvYVhNZ1puVnVZM1JwYjI1Y2JpQXFJR2hsY21Vc0lHRnNiRzkzY3lCMWN5QjBieUJ1YjNRZ2FHRjJaU0IwYnlCaWFXNWtJRzl5SUdOeVpXRjBaU0JtZFc1amRHbHZibk1nWm05eUlHVmhZMmdnWlhabGJuUXVYRzRnS2lCTmRYUmhkR2x1WnlCMGFHVWdaWFpsYm5RbmN5QnRaVzFpWlhKeklHRnNiRzkzY3lCMWN5QjBieUJ1YjNRZ2FHRjJaU0IwYnlCamNtVmhkR1VnWVNCM2NtRndjR2x1WjF4dUlDb2dYQ0prYVhOd1lYUmphRndpSUc5aWFtVmpkQ0IwYUdGMElIQmhhWEp6SUhSb1pTQmxkbVZ1ZENCM2FYUm9JSFJvWlNCc2FYTjBaVzVsY2k1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWVdOamRXMTFiR0YwWlVScGNtVmpkR2x2Ym1Gc1JHbHpjR0YwWTJobGN5aGtiMjFKUkN3Z2RYQjNZWEprY3l3Z1pYWmxiblFwSUh0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aGtiMjFKUkN3Z0owUnBjM0JoZEdOb2FXNW5JR2xrSUcxMWMzUWdibTkwSUdKbElHNTFiR3duS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dUlDQjJZWElnY0doaGMyVWdQU0IxY0hkaGNtUnpJRDhnVUhKdmNHRm5ZWFJwYjI1UWFHRnpaWE11WW5WaVlteGxaQ0E2SUZCeWIzQmhaMkYwYVc5dVVHaGhjMlZ6TG1OaGNIUjFjbVZrTzF4dUlDQjJZWElnYkdsemRHVnVaWElnUFNCc2FYTjBaVzVsY2tGMFVHaGhjMlVvWkc5dFNVUXNJR1YyWlc1MExDQndhR0Z6WlNrN1hHNGdJR2xtSUNoc2FYTjBaVzVsY2lrZ2UxeHVJQ0FnSUdWMlpXNTBMbDlrYVhOd1lYUmphRXhwYzNSbGJtVnljeUE5SUdGalkzVnRkV3hoZEdWSmJuUnZLR1YyWlc1MExsOWthWE53WVhSamFFeHBjM1JsYm1WeWN5d2diR2x6ZEdWdVpYSXBPMXh1SUNBZ0lHVjJaVzUwTGw5a2FYTndZWFJqYUVsRWN5QTlJR0ZqWTNWdGRXeGhkR1ZKYm5SdktHVjJaVzUwTGw5a2FYTndZWFJqYUVsRWN5d2daRzl0U1VRcE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dRMjlzYkdWamRDQmthWE53WVhSamFHVnpJQ2h0ZFhOMElHSmxJR1Z1ZEdseVpXeDVJR052Ykd4bFkzUmxaQ0JpWldadmNtVWdaR2x6Y0dGMFkyaHBibWNnTFNCelpXVWdkVzVwZEZ4dUlDb2dkR1Z6ZEhNcExpQk1ZWHBwYkhrZ1lXeHNiMk5oZEdVZ2RHaGxJR0Z5Y21GNUlIUnZJR052Ym5ObGNuWmxJRzFsYlc5eWVTNGdJRmRsSUcxMWMzUWdiRzl2Y0NCMGFISnZkV2RvWEc0Z0tpQmxZV05vSUdWMlpXNTBJR0Z1WkNCd1pYSm1iM0p0SUhSb1pTQjBjbUYyWlhKellXd2dabTl5SUdWaFkyZ2diMjVsTGlCWFpTQmpZVzV1YjNRZ2NHVnlabTl5YlNCaFhHNGdLaUJ6YVc1bmJHVWdkSEpoZG1WeWMyRnNJR1p2Y2lCMGFHVWdaVzUwYVhKbElHTnZiR3hsWTNScGIyNGdiMllnWlhabGJuUnpJR0psWTJGMWMyVWdaV0ZqYUNCbGRtVnVkQ0J0WVhsY2JpQXFJR2hoZG1VZ1lTQmthV1ptWlhKbGJuUWdkR0Z5WjJWMExseHVJQ292WEc1bWRXNWpkR2x2YmlCaFkyTjFiWFZzWVhSbFZIZHZVR2hoYzJWRWFYTndZWFJqYUdWelUybHVaMnhsS0dWMlpXNTBLU0I3WEc0Z0lHbG1JQ2hsZG1WdWRDQW1KaUJsZG1WdWRDNWthWE53WVhSamFFTnZibVpwWnk1d2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjeWtnZTF4dUlDQWdJRVYyWlc1MFVHeDFaMmx1U0hWaUxtbHVhbVZqZEdsdmJpNW5aWFJKYm5OMFlXNWpaVWhoYm1Sc1pTZ3BMblJ5WVhabGNuTmxWSGR2VUdoaGMyVW9aWFpsYm5RdVpHbHpjR0YwWTJoTllYSnJaWElzSUdGalkzVnRkV3hoZEdWRWFYSmxZM1JwYjI1aGJFUnBjM0JoZEdOb1pYTXNJR1YyWlc1MEtUdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRk5oYldVZ1lYTWdZR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE5UYVc1bmJHVmdMQ0JpZFhRZ2MydHBjSE1nYjNabGNpQjBhR1VnZEdGeVoyVjBTVVF1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0ZqWTNWdGRXeGhkR1ZVZDI5UWFHRnpaVVJwYzNCaGRHTm9aWE5UYVc1bmJHVlRhMmx3VkdGeVoyVjBLR1YyWlc1MEtTQjdYRzRnSUdsbUlDaGxkbVZ1ZENBbUppQmxkbVZ1ZEM1a2FYTndZWFJqYUVOdmJtWnBaeTV3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN5a2dlMXh1SUNBZ0lFVjJaVzUwVUd4MVoybHVTSFZpTG1sdWFtVmpkR2x2Ymk1blpYUkpibk4wWVc1alpVaGhibVJzWlNncExuUnlZWFpsY25ObFZIZHZVR2hoYzJWVGEybHdWR0Z5WjJWMEtHVjJaVzUwTG1ScGMzQmhkR05vVFdGeWEyVnlMQ0JoWTJOMWJYVnNZWFJsUkdseVpXTjBhVzl1WVd4RWFYTndZWFJqYUdWekxDQmxkbVZ1ZENrN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkJZMk4xYlhWc1lYUmxjeUIzYVhSb2IzVjBJSEpsWjJGeVpDQjBieUJrYVhKbFkzUnBiMjRzSUdSdlpYTWdibTkwSUd4dmIyc2dabTl5SUhCb1lYTmxaRnh1SUNvZ2NtVm5hWE4wY21GMGFXOXVJRzVoYldWekxpQlRZVzFsSUdGeklHQmhZMk4xYlhWc1lYUmxSR2x5WldOMFJHbHpjR0YwWTJobGMxTnBibWRzWldBZ1luVjBJSGRwZEdodmRYUmNiaUFxSUhKbGNYVnBjbWx1WnlCMGFHRjBJSFJvWlNCZ1pHbHpjR0YwWTJoTllYSnJaWEpnSUdKbElIUm9aU0J6WVcxbElHRnpJSFJvWlNCa2FYTndZWFJqYUdWa0lFbEVMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmhZMk4xYlhWc1lYUmxSR2x6Y0dGMFkyaGxjeWhwWkN3Z2FXZHViM0psWkVScGNtVmpkR2x2Yml3Z1pYWmxiblFwSUh0Y2JpQWdhV1lnS0dWMlpXNTBJQ1ltSUdWMlpXNTBMbVJwYzNCaGRHTm9RMjl1Wm1sbkxuSmxaMmx6ZEhKaGRHbHZiazVoYldVcElIdGNiaUFnSUNCMllYSWdjbVZuYVhOMGNtRjBhVzl1VG1GdFpTQTlJR1YyWlc1MExtUnBjM0JoZEdOb1EyOXVabWxuTG5KbFoybHpkSEpoZEdsdmJrNWhiV1U3WEc0Z0lDQWdkbUZ5SUd4cGMzUmxibVZ5SUQwZ1oyVjBUR2x6ZEdWdVpYSW9hV1FzSUhKbFoybHpkSEpoZEdsdmJrNWhiV1VwTzF4dUlDQWdJR2xtSUNoc2FYTjBaVzVsY2lrZ2UxeHVJQ0FnSUNBZ1pYWmxiblF1WDJScGMzQmhkR05vVEdsemRHVnVaWEp6SUQwZ1lXTmpkVzExYkdGMFpVbHVkRzhvWlhabGJuUXVYMlJwYzNCaGRHTm9UR2x6ZEdWdVpYSnpMQ0JzYVhOMFpXNWxjaWs3WEc0Z0lDQWdJQ0JsZG1WdWRDNWZaR2x6Y0dGMFkyaEpSSE1nUFNCaFkyTjFiWFZzWVhSbFNXNTBieWhsZG1WdWRDNWZaR2x6Y0dGMFkyaEpSSE1zSUdsa0tUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkJZMk4xYlhWc1lYUmxjeUJrYVhOd1lYUmphR1Z6SUc5dUlHRnVJR0JUZVc1MGFHVjBhV05GZG1WdWRHQXNJR0oxZENCdmJteDVJR1p2Y2lCMGFHVmNiaUFxSUdCa2FYTndZWFJqYUUxaGNtdGxjbUF1WEc0Z0tpQkFjR0Z5WVcwZ2UxTjViblJvWlhScFkwVjJaVzUwZlNCbGRtVnVkRnh1SUNvdlhHNW1kVzVqZEdsdmJpQmhZMk4xYlhWc1lYUmxSR2x5WldOMFJHbHpjR0YwWTJobGMxTnBibWRzWlNobGRtVnVkQ2tnZTF4dUlDQnBaaUFvWlhabGJuUWdKaVlnWlhabGJuUXVaR2x6Y0dGMFkyaERiMjVtYVdjdWNtVm5hWE4wY21GMGFXOXVUbUZ0WlNrZ2UxeHVJQ0FnSUdGalkzVnRkV3hoZEdWRWFYTndZWFJqYUdWektHVjJaVzUwTG1ScGMzQmhkR05vVFdGeWEyVnlMQ0J1ZFd4c0xDQmxkbVZ1ZENrN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdZV05qZFcxMWJHRjBaVlIzYjFCb1lYTmxSR2x6Y0dGMFkyaGxjeWhsZG1WdWRITXBJSHRjYmlBZ1ptOXlSV0ZqYUVGalkzVnRkV3hoZEdWa0tHVjJaVzUwY3l3Z1lXTmpkVzExYkdGMFpWUjNiMUJvWVhObFJHbHpjR0YwWTJobGMxTnBibWRzWlNrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdGalkzVnRkV3hoZEdWVWQyOVFhR0Z6WlVScGMzQmhkR05vWlhOVGEybHdWR0Z5WjJWMEtHVjJaVzUwY3lrZ2UxeHVJQ0JtYjNKRllXTm9RV05qZFcxMWJHRjBaV1FvWlhabGJuUnpMQ0JoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6VTJsdVoyeGxVMnRwY0ZSaGNtZGxkQ2s3WEc1OVhHNWNibVoxYm1OMGFXOXVJR0ZqWTNWdGRXeGhkR1ZGYm5SbGNreGxZWFpsUkdsemNHRjBZMmhsY3loc1pXRjJaU3dnWlc1MFpYSXNJR1p5YjIxSlJDd2dkRzlKUkNrZ2UxeHVJQ0JGZG1WdWRGQnNkV2RwYmtoMVlpNXBibXBsWTNScGIyNHVaMlYwU1c1emRHRnVZMlZJWVc1a2JHVW9LUzUwY21GMlpYSnpaVVZ1ZEdWeVRHVmhkbVVvWm5KdmJVbEVMQ0IwYjBsRUxDQmhZMk4xYlhWc1lYUmxSR2x6Y0dGMFkyaGxjeXdnYkdWaGRtVXNJR1Z1ZEdWeUtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1lXTmpkVzExYkdGMFpVUnBjbVZqZEVScGMzQmhkR05vWlhNb1pYWmxiblJ6S1NCN1hHNGdJR1p2Y2tWaFkyaEJZMk4xYlhWc1lYUmxaQ2hsZG1WdWRITXNJR0ZqWTNWdGRXeGhkR1ZFYVhKbFkzUkVhWE53WVhSamFHVnpVMmx1WjJ4bEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCQklITnRZV3hzSUhObGRDQnZaaUJ3Y205d1lXZGhkR2x2YmlCd1lYUjBaWEp1Y3l3Z1pXRmphQ0J2WmlCM2FHbGphQ0IzYVd4c0lHRmpZMlZ3ZENCaElITnRZV3hzSUdGdGIzVnVkRnh1SUNvZ2IyWWdhVzVtYjNKdFlYUnBiMjRzSUdGdVpDQm5aVzVsY21GMFpTQmhJSE5sZENCdlppQmNJbVJwYzNCaGRHTm9JSEpsWVdSNUlHVjJaVzUwSUc5aWFtVmpkSE5jSWlBdElIZG9hV05vWEc0Z0tpQmhjbVVnYzJWMGN5QnZaaUJsZG1WdWRITWdkR2hoZENCb1lYWmxJR0ZzY21WaFpIa2dZbVZsYmlCaGJtNXZkR0YwWldRZ2QybDBhQ0JoSUhObGRDQnZaaUJrYVhOd1lYUmphR1ZrWEc0Z0tpQnNhWE4wWlc1bGNpQm1kVzVqZEdsdmJuTXZhV1J6TGlCVWFHVWdRVkJKSUdseklHUmxjMmxuYm1Wa0lIUm9hWE1nZDJGNUlIUnZJR1JwYzJOdmRYSmhaMlVnZEdobGMyVmNiaUFxSUhCeWIzQmhaMkYwYVc5dUlITjBjbUYwWldkcFpYTWdabkp2YlNCaFkzUjFZV3hzZVNCbGVHVmpkWFJwYm1jZ2RHaGxJR1JwYzNCaGRHTm9aWE1zSUhOcGJtTmxJSGRsWEc0Z0tpQmhiSGRoZVhNZ2QyRnVkQ0IwYnlCamIyeHNaV04wSUhSb1pTQmxiblJwY21VZ2MyVjBJRzltSUdScGMzQmhkR05vWlhNZ1ltVm1iM0psSUdWNFpXTjFkR2x1WnlCbGRtVnVkQ0JoWEc0Z0tpQnphVzVuYkdVZ2IyNWxMbHh1SUNwY2JpQXFJRUJqYjI1emRISjFZM1J2Y2lCRmRtVnVkRkJ5YjNCaFoyRjBiM0p6WEc0Z0tpOWNiblpoY2lCRmRtVnVkRkJ5YjNCaFoyRjBiM0p6SUQwZ2UxeHVJQ0JoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6T2lCaFkyTjFiWFZzWVhSbFZIZHZVR2hoYzJWRWFYTndZWFJqYUdWekxGeHVJQ0JoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6VTJ0cGNGUmhjbWRsZERvZ1lXTmpkVzExYkdGMFpWUjNiMUJvWVhObFJHbHpjR0YwWTJobGMxTnJhWEJVWVhKblpYUXNYRzRnSUdGalkzVnRkV3hoZEdWRWFYSmxZM1JFYVhOd1lYUmphR1Z6T2lCaFkyTjFiWFZzWVhSbFJHbHlaV04wUkdsemNHRjBZMmhsY3l4Y2JpQWdZV05qZFcxMWJHRjBaVVZ1ZEdWeVRHVmhkbVZFYVhOd1lYUmphR1Z6T2lCaFkyTjFiWFZzWVhSbFJXNTBaWEpNWldGMlpVUnBjM0JoZEdOb1pYTmNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1JYWmxiblJRY205d1lXZGhkRzl5Y3pzaVhYMD0iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgSFRNTERPTVByb3BlcnR5Q29uZmlnXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgTVVTVF9VU0VfQVRUUklCVVRFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLk1VU1RfVVNFX0FUVFJJQlVURTtcbnZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWTtcbnZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTtcbnZhciBIQVNfU0lERV9FRkZFQ1RTID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19TSURFX0VGRkVDVFM7XG52YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFO1xuXG52YXIgaGFzU1ZHO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB2YXIgaW1wbGVtZW50YXRpb24gPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbjtcbiAgaGFzU1ZHID0gaW1wbGVtZW50YXRpb24gJiYgaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJiBpbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlJywgJzEuMScpO1xufVxuXG52YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0ge1xuICBpc0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQoL14oZGF0YXxhcmlhKS1bYS16X11bYS16XFxkXy5cXC1dKiQvKSxcbiAgUHJvcGVydGllczoge1xuICAgIC8qKlxuICAgICAqIFN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhY2NlcHQ6IG51bGwsXG4gICAgYWNjZXB0Q2hhcnNldDogbnVsbCxcbiAgICBhY2Nlc3NLZXk6IG51bGwsXG4gICAgYWN0aW9uOiBudWxsLFxuICAgIGFsbG93RnVsbFNjcmVlbjogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYWxsb3dUcmFuc3BhcmVuY3k6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBhbHQ6IG51bGwsXG4gICAgYXN5bmM6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGF1dG9Db21wbGV0ZTogbnVsbCxcbiAgICAvLyBhdXRvRm9jdXMgaXMgcG9seWZpbGxlZC9ub3JtYWxpemVkIGJ5IEF1dG9Gb2N1c1V0aWxzXG4gICAgLy8gYXV0b0ZvY3VzOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBhdXRvUGxheTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2FwdHVyZTogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2VsbFBhZGRpbmc6IG51bGwsXG4gICAgY2VsbFNwYWNpbmc6IG51bGwsXG4gICAgY2hhclNldDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGNoYWxsZW5nZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGNoZWNrZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2xhc3NJRDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIFRvIHNldCBjbGFzc05hbWUgb24gU1ZHIGVsZW1lbnRzLCBpdCdzIG5lY2Vzc2FyeSB0byB1c2UgLnNldEF0dHJpYnV0ZTtcbiAgICAvLyB0aGlzIHdvcmtzIG9uIEhUTUwgZWxlbWVudHMgdG9vIGluIGFsbCBicm93c2VycyBleGNlcHQgSUU4LiBDb252ZW5pZW50bHksXG4gICAgLy8gSUU4IGRvZXNuJ3Qgc3VwcG9ydCBTVkcgYW5kIHNvIHdlIGNhbiBzaW1wbHkgdXNlIHRoZSBhdHRyaWJ1dGUgaW5cbiAgICAvLyBicm93c2VycyB0aGF0IHN1cHBvcnQgU1ZHIGFuZCB0aGUgcHJvcGVydHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCxcbiAgICAvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgSFRNTCBvciBTVkcuXG4gICAgY2xhc3NOYW1lOiBoYXNTVkcgPyBNVVNUX1VTRV9BVFRSSUJVVEUgOiBNVVNUX1VTRV9QUk9QRVJUWSxcbiAgICBjb2xzOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBjb2xTcGFuOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudEVkaXRhYmxlOiBudWxsLFxuICAgIGNvbnRleHRNZW51OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgY29udHJvbHM6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY29vcmRzOiBudWxsLFxuICAgIGNyb3NzT3JpZ2luOiBudWxsLFxuICAgIGRhdGE6IG51bGwsIC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBhcyBgc3JjYC5cbiAgICBkYXRlVGltZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBkaXI6IG51bGwsXG4gICAgZGlzYWJsZWQ6IE1VU1RfVVNFX0FUVFJJQlVURSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuICAgIGRyYWdnYWJsZTogbnVsbCxcbiAgICBlbmNUeXBlOiBudWxsLFxuICAgIGZvcm06IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtQWN0aW9uOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZm9ybUVuY1R5cGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmb3JtTWV0aG9kOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZm9ybU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGZvcm1UYXJnZXQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBmcmFtZUJvcmRlcjogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIGhlYWRlcnM6IG51bGwsXG4gICAgaGVpZ2h0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaGlkZGVuOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBoaWdoOiBudWxsLFxuICAgIGhyZWY6IG51bGwsXG4gICAgaHJlZkxhbmc6IG51bGwsXG4gICAgaHRtbEZvcjogbnVsbCxcbiAgICBodHRwRXF1aXY6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBpZDogTVVTVF9VU0VfUFJPUEVSVFksXG4gICAgaW5wdXRNb2RlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaXM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBrZXlQYXJhbXM6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBrZXlUeXBlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgbGFuZzogbnVsbCxcbiAgICBsaXN0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbG9vcDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBsb3c6IG51bGwsXG4gICAgbWFuaWZlc3Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBtYXJnaW5IZWlnaHQ6IG51bGwsXG4gICAgbWFyZ2luV2lkdGg6IG51bGwsXG4gICAgbWF4OiBudWxsLFxuICAgIG1heExlbmd0aDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG1lZGlhOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgbWVkaWFHcm91cDogbnVsbCxcbiAgICBtZXRob2Q6IG51bGwsXG4gICAgbWluOiBudWxsLFxuICAgIG1pbkxlbmd0aDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIG11bHRpcGxlOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG11dGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG5hbWU6IG51bGwsXG4gICAgbm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgb3BlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgb3B0aW11bTogbnVsbCxcbiAgICBwYXR0ZXJuOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyOiBudWxsLFxuICAgIHBvc3RlcjogbnVsbCxcbiAgICBwcmVsb2FkOiBudWxsLFxuICAgIHJhZGlvR3JvdXA6IG51bGwsXG4gICAgcmVhZE9ubHk6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgcmVsOiBudWxsLFxuICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByb2xlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgcm93czogTVVTVF9VU0VfQVRUUklCVVRFIHwgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgcm93U3BhbjogbnVsbCxcbiAgICBzYW5kYm94OiBudWxsLFxuICAgIHNjb3BlOiBudWxsLFxuICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgc2Nyb2xsaW5nOiBudWxsLFxuICAgIHNlYW1sZXNzOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzaGFwZTogbnVsbCxcbiAgICBzaXplOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzaXplczogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHNwYW46IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHNwZWxsQ2hlY2s6IG51bGwsXG4gICAgc3JjOiBudWxsLFxuICAgIHNyY0RvYzogTVVTVF9VU0VfUFJPUEVSVFksXG4gICAgc3JjU2V0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgc3RhcnQ6IEhBU19OVU1FUklDX1ZBTFVFLFxuICAgIHN0ZXA6IG51bGwsXG4gICAgc3R5bGU6IG51bGwsXG4gICAgc3VtbWFyeTogbnVsbCxcbiAgICB0YWJJbmRleDogbnVsbCxcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgdGl0bGU6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB1c2VNYXA6IG51bGwsXG4gICAgdmFsdWU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX1NJREVfRUZGRUNUUyxcbiAgICB3aWR0aDogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHdtb2RlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgd3JhcDogbnVsbCxcblxuICAgIC8qKlxuICAgICAqIFJERmEgUHJvcGVydGllc1xuICAgICAqL1xuICAgIGFib3V0OiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgZGF0YXR5cGU6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpbmxpc3Q6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBwcmVmaXg6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICAvLyBwcm9wZXJ0eSBpcyBhbHNvIHN1cHBvcnRlZCBmb3IgT3BlbkdyYXBoIGluIG1ldGEgdGFncy5cbiAgICBwcm9wZXJ0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIHJlc291cmNlOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgJ3R5cGVvZic6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICB2b2NhYjogTVVTVF9VU0VfQVRUUklCVVRFLFxuXG4gICAgLyoqXG4gICAgICogTm9uLXN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvclxuICAgIC8vIGtleWJvYXJkIGhpbnRzLlxuICAgIGF1dG9DYXBpdGFsaXplOiBudWxsLFxuICAgIGF1dG9Db3JyZWN0OiBudWxsLFxuICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lzdCB2YWx1ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2Fkc1xuICAgIGF1dG9TYXZlOiBudWxsLFxuICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2NvcGUsIGl0ZW1UeXBlIGFyZSBmb3JcbiAgICAvLyBNaWNyb2RhdGEgc3VwcG9ydC4gU2VlIGh0dHA6Ly9zY2hlbWEub3JnL2RvY3MvZ3MuaHRtbFxuICAgIGl0ZW1Qcm9wOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgaXRlbVNjb3BlOiBNVVNUX1VTRV9BVFRSSUJVVEUgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBpdGVtVHlwZTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwgYnV0XG4gICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIHRoZSBXSEFUV0cgc3BlYyBkb2N1bWVudC4gU2VlXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbWljcm9kYXRhLmh0bWwjbWljcm9kYXRhLWRvbS1hcGlcbiAgICBpdGVtSUQ6IE1VU1RfVVNFX0FUVFJJQlVURSxcbiAgICBpdGVtUmVmOiBNVVNUX1VTRV9BVFRSSUJVVEUsXG4gICAgLy8gcmVzdWx0cyBzaG93IGxvb2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0XG4gICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcbiAgICByZXN1bHRzOiBudWxsLFxuICAgIC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0aW9ucyBvbiBhbiBpZnJhbWVcbiAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgb24gSUU8MTBcbiAgICBzZWN1cml0eTogTVVTVF9VU0VfQVRUUklCVVRFLFxuICAgIC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgY29udHJvbHMgZm9jdXMgYmVoYXZpb3JcbiAgICB1bnNlbGVjdGFibGU6IE1VU1RfVVNFX0FUVFJJQlVURVxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge1xuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnXG4gIH0sXG4gIERPTVByb3BlcnR5TmFtZXM6IHtcbiAgICBhdXRvQ2FwaXRhbGl6ZTogJ2F1dG9jYXBpdGFsaXplJyxcbiAgICBhdXRvQ29tcGxldGU6ICdhdXRvY29tcGxldGUnLFxuICAgIGF1dG9Db3JyZWN0OiAnYXV0b2NvcnJlY3QnLFxuICAgIGF1dG9Gb2N1czogJ2F1dG9mb2N1cycsXG4gICAgYXV0b1BsYXk6ICdhdXRvcGxheScsXG4gICAgYXV0b1NhdmU6ICdhdXRvc2F2ZScsXG4gICAgLy8gYGVuY29kaW5nYCBpcyBlcXVpdmFsZW50IHRvIGBlbmN0eXBlYCwgSUU4IGxhY2tzIGFuIGBlbmN0eXBlYCBzZXR0ZXIuXG4gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvZm9ybXMuaHRtbCNkb20tZnMtZW5jb2RpbmdcbiAgICBlbmNUeXBlOiAnZW5jb2RpbmcnLFxuICAgIGhyZWZMYW5nOiAnaHJlZmxhbmcnLFxuICAgIHJhZGlvR3JvdXA6ICdyYWRpb2dyb3VwJyxcbiAgICBzcGVsbENoZWNrOiAnc3BlbGxjaGVjaycsXG4gICAgc3JjRG9jOiAnc3JjZG9jJyxcbiAgICBzcmNTZXQ6ICdzcmNzZXQnXG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgTGlua2VkVmFsdWVVdGlsc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZXMnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25zJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaGFzUmVhZE9ubHlWYWx1ZSA9IHtcbiAgJ2J1dHRvbic6IHRydWUsXG4gICdjaGVja2JveCc6IHRydWUsXG4gICdpbWFnZSc6IHRydWUsXG4gICdoaWRkZW4nOiB0cnVlLFxuICAncmFkaW8nOiB0cnVlLFxuICAncmVzZXQnOiB0cnVlLFxuICAnc3VibWl0JzogdHJ1ZVxufTtcblxuZnVuY3Rpb24gX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcykge1xuICAhKGlucHV0UHJvcHMuY2hlY2tlZExpbmsgPT0gbnVsbCB8fCBpbnB1dFByb3BzLnZhbHVlTGluayA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYgeW91IHdhbnQgdG8gdXNlICcgKyAnY2hlY2tlZExpbmssIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpIHtcbiAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG4gICEoaW5wdXRQcm9wcy52YWx1ZSA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSB2YWx1ZUxpbmsgYW5kIGEgdmFsdWUgb3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50ICcgKyAndG8gdXNlIHZhbHVlIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gJyArICdJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZCBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byAnICsgJ3VzZSBjaGVja2VkTGluaycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxudmFyIHByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIG9uQ2hhbmdlOiBSZWFjdFByb3BUeXBlcy5mdW5jXG59O1xuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBQcm92aWRlIGEgbGlua2VkIGB2YWx1ZWAgYXR0cmlidXRlIGZvciBjb250cm9sbGVkIGZvcm1zLiBZb3Ugc2hvdWxkIG5vdCB1c2VcbiAqIHRoaXMgb3V0c2lkZSBvZiB0aGUgUmVhY3RET00gY29udHJvbGxlZCBmb3JtIGNvbXBvbmVudHMuXG4gKi9cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0ge1xuICBjaGVja1Byb3BUeXBlczogZnVuY3Rpb24gKHRhZ05hbWUsIHByb3BzLCBvd25lcikge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIHRhZ05hbWUsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCk7XG4gICAgICB9XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBmb3JtIHByb3BUeXBlOiAlcyVzJywgZXJyb3IubWVzc2FnZSwgYWRkZW5kdW0pIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlucHV0IGVpdGhlciBmcm9tIHZhbHVlIHByb3Agb3IgbGluay5cbiAgICovXG4gIGdldFZhbHVlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IGNoZWNrZWQgc3RhdHVzIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSBjaGVja2VkIHByb3BcbiAgICogICAgICAgICAgICAgb3IgbGluay5cbiAgICovXG4gIGdldENoZWNrZWQ6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcbiAgICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAgZXhlY3V0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcywgZXZlbnQpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcbiAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy5vbkNoYW5nZS5jYWxsKHVuZGVmaW5lZCwgZXZlbnQpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlRHbHVhMlZrVm1Gc2RXVlZkR2xzY3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRXhwYm10bFpGWmhiSFZsVlhScGJITmNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUlFjbTl3Vkhsd1pYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVSEp2Y0ZSNWNHVnpKeWs3WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3ljcE8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dWRtRnlJR2hoYzFKbFlXUlBibXg1Vm1Gc2RXVWdQU0I3WEc0Z0lDZGlkWFIwYjI0bk9pQjBjblZsTEZ4dUlDQW5ZMmhsWTJ0aWIzZ25PaUIwY25WbExGeHVJQ0FuYVcxaFoyVW5PaUIwY25WbExGeHVJQ0FuYUdsa1pHVnVKem9nZEhKMVpTeGNiaUFnSjNKaFpHbHZKem9nZEhKMVpTeGNiaUFnSjNKbGMyVjBKem9nZEhKMVpTeGNiaUFnSjNOMVltMXBkQ2M2SUhSeWRXVmNibjA3WEc1Y2JtWjFibU4wYVc5dUlGOWhjM05sY25SVGFXNW5iR1ZNYVc1cktHbHVjSFYwVUhKdmNITXBJSHRjYmlBZ0lTaHBibkIxZEZCeWIzQnpMbU5vWldOclpXUk1hVzVySUQwOUlHNTFiR3dnZkh3Z2FXNXdkWFJRY205d2N5NTJZV3gxWlV4cGJtc2dQVDBnYm5Wc2JDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblEyRnVibTkwSUhCeWIzWnBaR1VnWVNCamFHVmphMlZrVEdsdWF5QmhibVFnWVNCMllXeDFaVXhwYm1zdUlFbG1JSGx2ZFNCM1lXNTBJSFJ2SUhWelpTQW5JQ3NnSjJOb1pXTnJaV1JNYVc1ckxDQjViM1VnY0hKdlltRmliSGtnWkc5dVhGd25kQ0IzWVc1MElIUnZJSFZ6WlNCMllXeDFaVXhwYm1zZ1lXNWtJSFpwWTJVZ2RtVnljMkV1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1ZlZ4dVpuVnVZM1JwYjI0Z1gyRnpjMlZ5ZEZaaGJIVmxUR2x1YXlocGJuQjFkRkJ5YjNCektTQjdYRzRnSUY5aGMzTmxjblJUYVc1bmJHVk1hVzVyS0dsdWNIVjBVSEp2Y0hNcE8xeHVJQ0FoS0dsdWNIVjBVSEp2Y0hNdWRtRnNkV1VnUFQwZ2JuVnNiQ0FtSmlCcGJuQjFkRkJ5YjNCekxtOXVRMmhoYm1kbElEMDlJRzUxYkd3cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBOaGJtNXZkQ0J3Y205MmFXUmxJR0VnZG1Gc2RXVk1hVzVySUdGdVpDQmhJSFpoYkhWbElHOXlJRzl1UTJoaGJtZGxJR1YyWlc1MExpQkpaaUI1YjNVZ2QyRnVkQ0FuSUNzZ0ozUnZJSFZ6WlNCMllXeDFaU0J2Y2lCdmJrTm9ZVzVuWlN3Z2VXOTFJSEJ5YjJKaFlteDVJR1J2Ymx4Y0ozUWdkMkZ1ZENCMGJ5QjFjMlVnZG1Gc2RXVk1hVzVyTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVablZ1WTNScGIyNGdYMkZ6YzJWeWRFTm9aV05yWldSTWFXNXJLR2x1Y0hWMFVISnZjSE1wSUh0Y2JpQWdYMkZ6YzJWeWRGTnBibWRzWlV4cGJtc29hVzV3ZFhSUWNtOXdjeWs3WEc0Z0lDRW9hVzV3ZFhSUWNtOXdjeTVqYUdWamEyVmtJRDA5SUc1MWJHd2dKaVlnYVc1d2RYUlFjbTl3Y3k1dmJrTm9ZVzVuWlNBOVBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2REWVc1dWIzUWdjSEp2ZG1sa1pTQmhJR05vWldOclpXUk1hVzVySUdGdVpDQmhJR05vWldOclpXUWdjSEp2Y0dWeWRIa2diM0lnYjI1RGFHRnVaMlVnWlhabGJuUXVJQ2NnS3lBblNXWWdlVzkxSUhkaGJuUWdkRzhnZFhObElHTm9aV05yWldRZ2IzSWdiMjVEYUdGdVoyVXNJSGx2ZFNCd2NtOWlZV0pzZVNCa2IyNWNYQ2QwSUhkaGJuUWdkRzhnSnlBcklDZDFjMlVnWTJobFkydGxaRXhwYm1zbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1OVhHNWNiblpoY2lCd2NtOXdWSGx3WlhNZ1BTQjdYRzRnSUhaaGJIVmxPaUJtZFc1amRHbHZiaUFvY0hKdmNITXNJSEJ5YjNCT1lXMWxMQ0JqYjIxd2IyNWxiblJPWVcxbEtTQjdYRzRnSUNBZ2FXWWdLQ0Z3Y205d2MxdHdjbTl3VG1GdFpWMGdmSHdnYUdGelVtVmhaRTl1YkhsV1lXeDFaVnR3Y205d2N5NTBlWEJsWFNCOGZDQndjbTl3Y3k1dmJrTm9ZVzVuWlNCOGZDQndjbTl3Y3k1eVpXRmtUMjVzZVNCOGZDQndjbTl3Y3k1a2FYTmhZbXhsWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JYSnliM0lvSjFsdmRTQndjbTkyYVdSbFpDQmhJR0IyWVd4MVpXQWdjSEp2Y0NCMGJ5QmhJR1p2Y20wZ1ptbGxiR1FnZDJsMGFHOTFkQ0JoYmlBbklDc2dKMkJ2YmtOb1lXNW5aV0FnYUdGdVpHeGxjaTRnVkdocGN5QjNhV3hzSUhKbGJtUmxjaUJoSUhKbFlXUXRiMjVzZVNCbWFXVnNaQzRnU1dZZ0p5QXJJQ2QwYUdVZ1ptbGxiR1FnYzJodmRXeGtJR0psSUcxMWRHRmliR1VnZFhObElHQmtaV1poZFd4MFZtRnNkV1ZnTGlCUGRHaGxjbmRwYzJVc0lDY2dLeUFuYzJWMElHVnBkR2hsY2lCZ2IyNURhR0Z1WjJWZ0lHOXlJR0J5WldGa1QyNXNlV0F1SnlrN1hHNGdJSDBzWEc0Z0lHTm9aV05yWldRNklHWjFibU4wYVc5dUlDaHdjbTl3Y3l3Z2NISnZjRTVoYldVc0lHTnZiWEJ2Ym1WdWRFNWhiV1VwSUh0Y2JpQWdJQ0JwWmlBb0lYQnliM0J6VzNCeWIzQk9ZVzFsWFNCOGZDQndjbTl3Y3k1dmJrTm9ZVzVuWlNCOGZDQndjbTl3Y3k1eVpXRmtUMjVzZVNCOGZDQndjbTl3Y3k1a2FYTmhZbXhsWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JYSnliM0lvSjFsdmRTQndjbTkyYVdSbFpDQmhJR0JqYUdWamEyVmtZQ0J3Y205d0lIUnZJR0VnWm05eWJTQm1hV1ZzWkNCM2FYUm9iM1YwSUdGdUlDY2dLeUFuWUc5dVEyaGhibWRsWUNCb1lXNWtiR1Z5TGlCVWFHbHpJSGRwYkd3Z2NtVnVaR1Z5SUdFZ2NtVmhaQzF2Ym14NUlHWnBaV3hrTGlCSlppQW5JQ3NnSjNSb1pTQm1hV1ZzWkNCemFHOTFiR1FnWW1VZ2JYVjBZV0pzWlNCMWMyVWdZR1JsWm1GMWJIUkRhR1ZqYTJWa1lDNGdUM1JvWlhKM2FYTmxMQ0FuSUNzZ0ozTmxkQ0JsYVhSb1pYSWdZRzl1UTJoaGJtZGxZQ0J2Y2lCZ2NtVmhaRTl1YkhsZ0xpY3BPMXh1SUNCOUxGeHVJQ0J2YmtOb1lXNW5aVG9nVW1WaFkzUlFjbTl3Vkhsd1pYTXVablZ1WTF4dWZUdGNibHh1ZG1GeUlHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGN5QTlJSHQ5TzF4dVpuVnVZM1JwYjI0Z1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtHOTNibVZ5S1NCN1hHNGdJR2xtSUNodmQyNWxjaWtnZTF4dUlDQWdJSFpoY2lCdVlXMWxJRDBnYjNkdVpYSXVaMlYwVG1GdFpTZ3BPMXh1SUNBZ0lHbG1JQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0p5QkRhR1ZqYXlCMGFHVWdjbVZ1WkdWeUlHMWxkR2h2WkNCdlppQmdKeUFySUc1aGJXVWdLeUFuWUM0bk8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnSnljN1hHNTlYRzVjYmk4cUtseHVJQ29nVUhKdmRtbGtaU0JoSUd4cGJtdGxaQ0JnZG1Gc2RXVmdJR0YwZEhKcFluVjBaU0JtYjNJZ1kyOXVkSEp2Ykd4bFpDQm1iM0p0Y3k0Z1dXOTFJSE5vYjNWc1pDQnViM1FnZFhObFhHNGdLaUIwYUdseklHOTFkSE5wWkdVZ2IyWWdkR2hsSUZKbFlXTjBSRTlOSUdOdmJuUnliMnhzWldRZ1ptOXliU0JqYjIxd2IyNWxiblJ6TGx4dUlDb3ZYRzUyWVhJZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3lBOUlIdGNiaUFnWTJobFkydFFjbTl3Vkhsd1pYTTZJR1oxYm1OMGFXOXVJQ2gwWVdkT1lXMWxMQ0J3Y205d2N5d2diM2R1WlhJcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCd2NtOXdUbUZ0WlNCcGJpQndjbTl3Vkhsd1pYTXBJSHRjYmlBZ0lDQWdJR2xtSUNod2NtOXdWSGx3WlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFNWhiV1VwS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJsY25KdmNpQTlJSEJ5YjNCVWVYQmxjMXR3Y205d1RtRnRaVjBvY0hKdmNITXNJSEJ5YjNCT1lXMWxMQ0IwWVdkT1lXMWxMQ0JTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1ekxuQnliM0FwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tHVnljbTl5SUdsdWMzUmhibU5sYjJZZ1JYSnliM0lnSmlZZ0lTaGxjbkp2Y2k1dFpYTnpZV2RsSUdsdUlHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGN5a3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1QyNXNlU0J0YjI1cGRHOXlJSFJvYVhNZ1ptRnBiSFZ5WlNCdmJtTmxJR0psWTJGMWMyVWdkR2hsY21VZ2RHVnVaSE1nZEc4Z1ltVWdZU0JzYjNRZ2IyWWdkR2hsWEc0Z0lDQWdJQ0FnSUM4dklITmhiV1VnWlhKeWIzSXVYRzRnSUNBZ0lDQWdJR3h2WjJkbFpGUjVjR1ZHWVdsc2RYSmxjMXRsY25KdmNpNXRaWE56WVdkbFhTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUdGa1pHVnVaSFZ0SUQwZ1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtHOTNibVZ5S1R0Y2JpQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZEdZV2xzWldRZ1ptOXliU0J3Y205d1ZIbHdaVG9nSlhNbGN5Y3NJR1Z5Y205eUxtMWxjM05oWjJVc0lHRmtaR1Z1WkhWdEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JwYm5CMWRGQnliM0J6SUZCeWIzQnpJR1p2Y2lCbWIzSnRJR052YlhCdmJtVnVkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIc3FmU0JqZFhKeVpXNTBJSFpoYkhWbElHOW1JSFJvWlNCcGJuQjFkQ0JsYVhSb1pYSWdabkp2YlNCMllXeDFaU0J3Y205d0lHOXlJR3hwYm1zdVhHNGdJQ0FxTDF4dUlDQm5aWFJXWVd4MVpUb2dablZ1WTNScGIyNGdLR2x1Y0hWMFVISnZjSE1wSUh0Y2JpQWdJQ0JwWmlBb2FXNXdkWFJRY205d2N5NTJZV3gxWlV4cGJtc3BJSHRjYmlBZ0lDQWdJRjloYzNObGNuUldZV3gxWlV4cGJtc29hVzV3ZFhSUWNtOXdjeWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzV3ZFhSUWNtOXdjeTUyWVd4MVpVeHBibXN1ZG1Gc2RXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJwYm5CMWRGQnliM0J6TG5aaGJIVmxPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYVc1d2RYUlFjbTl3Y3lCUWNtOXdjeUJtYjNJZ1ptOXliU0JqYjIxd2IyNWxiblJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdLbjBnWTNWeWNtVnVkQ0JqYUdWamEyVmtJSE4wWVhSMWN5QnZaaUIwYUdVZ2FXNXdkWFFnWldsMGFHVnlJR1p5YjIwZ1kyaGxZMnRsWkNCd2NtOXdYRzRnSUNBcUlDQWdJQ0FnSUNBZ0lDQWdJRzl5SUd4cGJtc3VYRzRnSUNBcUwxeHVJQ0JuWlhSRGFHVmphMlZrT2lCbWRXNWpkR2x2YmlBb2FXNXdkWFJRY205d2N5a2dlMXh1SUNBZ0lHbG1JQ2hwYm5CMWRGQnliM0J6TG1Ob1pXTnJaV1JNYVc1cktTQjdYRzRnSUNBZ0lDQmZZWE56WlhKMFEyaGxZMnRsWkV4cGJtc29hVzV3ZFhSUWNtOXdjeWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzV3ZFhSUWNtOXdjeTVqYUdWamEyVmtUR2x1YXk1MllXeDFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdsdWNIVjBVSEp2Y0hNdVkyaGxZMnRsWkR0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHbHVjSFYwVUhKdmNITWdVSEp2Y0hNZ1ptOXlJR1p2Y20wZ1kyOXRjRzl1Wlc1MFhHNGdJQ0FxSUVCd1lYSmhiU0I3VTNsdWRHaGxkR2xqUlhabGJuUjlJR1YyWlc1MElHTm9ZVzVuWlNCbGRtVnVkQ0IwYnlCb1lXNWtiR1ZjYmlBZ0lDb3ZYRzRnSUdWNFpXTjFkR1ZQYmtOb1lXNW5aVG9nWm5WdVkzUnBiMjRnS0dsdWNIVjBVSEp2Y0hNc0lHVjJaVzUwS1NCN1hHNGdJQ0FnYVdZZ0tHbHVjSFYwVUhKdmNITXVkbUZzZFdWTWFXNXJLU0I3WEc0Z0lDQWdJQ0JmWVhOelpYSjBWbUZzZFdWTWFXNXJLR2x1Y0hWMFVISnZjSE1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1Y0hWMFVISnZjSE11ZG1Gc2RXVk1hVzVyTG5KbGNYVmxjM1JEYUdGdVoyVW9aWFpsYm5RdWRHRnlaMlYwTG5aaGJIVmxLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLR2x1Y0hWMFVISnZjSE11WTJobFkydGxaRXhwYm1zcElIdGNiaUFnSUNBZ0lGOWhjM05sY25SRGFHVmphMlZrVEdsdWF5aHBibkIxZEZCeWIzQnpLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBibkIxZEZCeWIzQnpMbU5vWldOclpXUk1hVzVyTG5KbGNYVmxjM1JEYUdGdVoyVW9aWFpsYm5RdWRHRnlaMlYwTG1Ob1pXTnJaV1FwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYVc1d2RYUlFjbTl3Y3k1dmJrTm9ZVzVuWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdsdWNIVjBVSEp2Y0hNdWIyNURhR0Z1WjJVdVkyRnNiQ2gxYm1SbFptbHVaV1FzSUdWMlpXNTBLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVEdsdWEyVmtWbUZzZFdWVmRHbHNjenNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUG9vbGVkQ2xhc3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBTdGF0aWMgcG9vbGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50aWFsIG51bWJlciBvZlxuICogYXJndW1lbnRzLiBBIGNvbXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBsZW1lbnQsIGJ1dCB3b3VsZFxuICogcmVxdWlyZSBhY2Nlc3NpbmcgdGhlIGBhcmd1bWVudHNgIG9iamVjdC4gSW4gZWFjaCBvZiB0aGVzZSwgYHRoaXNgIHJlZmVycyB0b1xuICogdGhlIENsYXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJzIGFyZSBuZWVkZWQsIHNpbXBseSBhZGQgdGhlbVxuICogaGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLlxuICovXG52YXIgb25lQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoY29weUZpZWxkc0Zyb20pIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgY29weUZpZWxkc0Zyb20pO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGNvcHlGaWVsZHNGcm9tKTtcbiAgfVxufTtcblxudmFyIHR3b0FyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMikge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMik7XG4gIH1cbn07XG5cbnZhciB0aHJlZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMyk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMyk7XG4gIH1cbn07XG5cbnZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0KTtcbiAgfVxufTtcblxudmFyIGZpdmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCwgYTUpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQsIGE1KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUpO1xuICB9XG59O1xuXG52YXIgc3RhbmRhcmRSZWxlYXNlciA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICAhKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3MpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHtcbiAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7XG4gIH1cbn07XG5cbnZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwO1xudmFyIERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7XG5cbi8qKlxuICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBjbGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzc1xuICogaXRzZWxmIChzdGF0aWNhbGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yXG4gKiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYVxuICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5jZXMgKG9wdGlvbmFsKS5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29uc3RydWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBvb2xlciBDdXN0b21pemFibGUgcG9vbGVyLlxuICovXG52YXIgYWRkUG9vbGluZ1RvID0gZnVuY3Rpb24gKENvcHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7XG4gIHZhciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjtcbiAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107XG4gIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjtcbiAgaWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkge1xuICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09MX1NJWkU7XG4gIH1cbiAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7XG4gIHJldHVybiBOZXdLbGFzcztcbn07XG5cbnZhciBQb29sZWRDbGFzcyA9IHtcbiAgYWRkUG9vbGluZ1RvOiBhZGRQb29saW5nVG8sXG4gIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBvb2xlcixcbiAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxuICB0aHJlZUFyZ3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuICBmb3VyQXJndW1lbnRQb29sZXI6IGZvdXJBcmd1bWVudFBvb2xlcixcbiAgZml2ZUFyZ3VtZW50UG9vbGVyOiBmaXZlQXJndW1lbnRQb29sZXJcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VUc5dmJHVmtRMnhoYzNNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUJ3Y205MmFXUmxjMDF2WkhWc1pTQlFiMjlzWldSRGJHRnpjMXh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc0dktpcGNiaUFxSUZOMFlYUnBZeUJ3YjI5c1pYSnpMaUJUWlhabGNtRnNJR04xYzNSdmJTQjJaWEp6YVc5dWN5Qm1iM0lnWldGamFDQndiM1JsYm5ScFlXd2diblZ0WW1WeUlHOW1YRzRnS2lCaGNtZDFiV1Z1ZEhNdUlFRWdZMjl0Y0d4bGRHVnNlU0JuWlc1bGNtbGpJSEJ2YjJ4bGNpQnBjeUJsWVhONUlIUnZJR2x0Y0d4bGJXVnVkQ3dnWW5WMElIZHZkV3hrWEc0Z0tpQnlaWEYxYVhKbElHRmpZMlZ6YzJsdVp5QjBhR1VnWUdGeVozVnRaVzUwYzJBZ2IySnFaV04wTGlCSmJpQmxZV05vSUc5bUlIUm9aWE5sTENCZ2RHaHBjMkFnY21WbVpYSnpJSFJ2WEc0Z0tpQjBhR1VnUTJ4aGMzTWdhWFJ6Wld4bUxDQnViM1FnWVc0Z2FXNXpkR0Z1WTJVdUlFbG1JR0Z1ZVNCdmRHaGxjbk1nWVhKbElHNWxaV1JsWkN3Z2MybHRjR3g1SUdGa1pDQjBhR1Z0WEc0Z0tpQm9aWEpsTENCdmNpQnBiaUIwYUdWcGNpQnZkMjRnWm1sc1pYTXVYRzRnS2k5Y2JuWmhjaUJ2Ym1WQmNtZDFiV1Z1ZEZCdmIyeGxjaUE5SUdaMWJtTjBhVzl1SUNoamIzQjVSbWxsYkdSelJuSnZiU2tnZTF4dUlDQjJZWElnUzJ4aGMzTWdQU0IwYUdsek8xeHVJQ0JwWmlBb1MyeGhjM011YVc1emRHRnVZMlZRYjI5c0xteGxibWQwYUNrZ2UxeHVJQ0FnSUhaaGNpQnBibk4wWVc1alpTQTlJRXRzWVhOekxtbHVjM1JoYm1ObFVHOXZiQzV3YjNBb0tUdGNiaUFnSUNCTGJHRnpjeTVqWVd4c0tHbHVjM1JoYm1ObExDQmpiM0I1Um1sbGJHUnpSbkp2YlNrN1hHNGdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnUzJ4aGMzTW9ZMjl3ZVVacFpXeGtjMFp5YjIwcE8xeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ2RIZHZRWEpuZFcxbGJuUlFiMjlzWlhJZ1BTQm1kVzVqZEdsdmJpQW9ZVEVzSUdFeUtTQjdYRzRnSUhaaGNpQkxiR0Z6Y3lBOUlIUm9hWE03WEc0Z0lHbG1JQ2hMYkdGemN5NXBibk4wWVc1alpWQnZiMnd1YkdWdVozUm9LU0I3WEc0Z0lDQWdkbUZ5SUdsdWMzUmhibU5sSUQwZ1MyeGhjM011YVc1emRHRnVZMlZRYjI5c0xuQnZjQ2dwTzF4dUlDQWdJRXRzWVhOekxtTmhiR3dvYVc1emRHRnVZMlVzSUdFeExDQmhNaWs3WEc0Z0lDQWdjbVYwZFhKdUlHbHVjM1JoYm1ObE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dTMnhoYzNNb1lURXNJR0V5S1R0Y2JpQWdmVnh1ZlR0Y2JseHVkbUZ5SUhSb2NtVmxRWEpuZFcxbGJuUlFiMjlzWlhJZ1BTQm1kVzVqZEdsdmJpQW9ZVEVzSUdFeUxDQmhNeWtnZTF4dUlDQjJZWElnUzJ4aGMzTWdQU0IwYUdsek8xeHVJQ0JwWmlBb1MyeGhjM011YVc1emRHRnVZMlZRYjI5c0xteGxibWQwYUNrZ2UxeHVJQ0FnSUhaaGNpQnBibk4wWVc1alpTQTlJRXRzWVhOekxtbHVjM1JoYm1ObFVHOXZiQzV3YjNBb0tUdGNiaUFnSUNCTGJHRnpjeTVqWVd4c0tHbHVjM1JoYm1ObExDQmhNU3dnWVRJc0lHRXpLVHRjYmlBZ0lDQnlaWFIxY200Z2FXNXpkR0Z1WTJVN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QkxiR0Z6Y3loaE1Td2dZVElzSUdFektUdGNiaUFnZlZ4dWZUdGNibHh1ZG1GeUlHWnZkWEpCY21kMWJXVnVkRkJ2YjJ4bGNpQTlJR1oxYm1OMGFXOXVJQ2hoTVN3Z1lUSXNJR0V6TENCaE5Da2dlMXh1SUNCMllYSWdTMnhoYzNNZ1BTQjBhR2x6TzF4dUlDQnBaaUFvUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG14bGJtZDBhQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBZVzVqWlNBOUlFdHNZWE56TG1sdWMzUmhibU5sVUc5dmJDNXdiM0FvS1R0Y2JpQWdJQ0JMYkdGemN5NWpZV3hzS0dsdWMzUmhibU5sTENCaE1Td2dZVElzSUdFekxDQmhOQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHbHVjM1JoYm1ObE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dTMnhoYzNNb1lURXNJR0V5TENCaE15d2dZVFFwTzF4dUlDQjlYRzU5TzF4dVhHNTJZWElnWm1sMlpVRnlaM1Z0Wlc1MFVHOXZiR1Z5SUQwZ1puVnVZM1JwYjI0Z0tHRXhMQ0JoTWl3Z1lUTXNJR0UwTENCaE5Ta2dlMXh1SUNCMllYSWdTMnhoYzNNZ1BTQjBhR2x6TzF4dUlDQnBaaUFvUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG14bGJtZDBhQ2tnZTF4dUlDQWdJSFpoY2lCcGJuTjBZVzVqWlNBOUlFdHNZWE56TG1sdWMzUmhibU5sVUc5dmJDNXdiM0FvS1R0Y2JpQWdJQ0JMYkdGemN5NWpZV3hzS0dsdWMzUmhibU5sTENCaE1Td2dZVElzSUdFekxDQmhOQ3dnWVRVcE8xeHVJQ0FnSUhKbGRIVnliaUJwYm5OMFlXNWpaVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUV0c1lYTnpLR0V4TENCaE1pd2dZVE1zSUdFMExDQmhOU2s3WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUJ6ZEdGdVpHRnlaRkpsYkdWaGMyVnlJRDBnWm5WdVkzUnBiMjRnS0dsdWMzUmhibU5sS1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUNFb2FXNXpkR0Z1WTJVZ2FXNXpkR0Z1WTJWdlppQkxiR0Z6Y3lrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVkhKNWFXNW5JSFJ2SUhKbGJHVmhjMlVnWVc0Z2FXNXpkR0Z1WTJVZ2FXNTBieUJoSUhCdmIyd2diMllnWVNCa2FXWm1aWEpsYm5RZ2RIbHdaUzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUdsdWMzUmhibU5sTG1SbGMzUnlkV04wYjNJb0tUdGNiaUFnYVdZZ0tFdHNZWE56TG1sdWMzUmhibU5sVUc5dmJDNXNaVzVuZEdnZ1BDQkxiR0Z6Y3k1d2IyOXNVMmw2WlNrZ2UxeHVJQ0FnSUV0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkM1d2RYTm9LR2x1YzNSaGJtTmxLVHRjYmlBZ2ZWeHVmVHRjYmx4dWRtRnlJRVJGUmtGVlRGUmZVRTlQVEY5VFNWcEZJRDBnTVRBN1hHNTJZWElnUkVWR1FWVk1WRjlRVDA5TVJWSWdQU0J2Ym1WQmNtZDFiV1Z1ZEZCdmIyeGxjanRjYmx4dUx5b3FYRzRnS2lCQmRXZHRaVzUwY3lCZ1EyOXdlVU52Ym5OMGNuVmpkRzl5WUNCMGJ5QmlaU0JoSUhCdmIyeGhZbXhsSUdOc1lYTnpMQ0JoZFdkdFpXNTBhVzVuSUc5dWJIa2dkR2hsSUdOc1lYTnpYRzRnS2lCcGRITmxiR1lnS0hOMFlYUnBZMkZzYkhrcElHNXZkQ0JoWkdScGJtY2dZVzU1SUhCeWIzUnZkSGx3YVdOaGJDQm1hV1ZzWkhNdUlFRnVlU0JEYjNCNVEyOXVjM1J5ZFdOMGIzSmNiaUFxSUhsdmRTQm5hWFpsSUhSb2FYTWdiV0Y1SUdoaGRtVWdZU0JnY0c5dmJGTnBlbVZnSUhCeWIzQmxjblI1TENCaGJtUWdkMmxzYkNCc2IyOXJJR1p2Y2lCaFhHNGdLaUJ3Y205MGIzUjVjR2xqWVd3Z1lHUmxjM1J5ZFdOMGIzSmdJRzl1SUdsdWMzUmhibU5sY3lBb2IzQjBhVzl1WVd3cExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlFTnZjSGxEYjI1emRISjFZM1J2Y2lCRGIyNXpkSEoxWTNSdmNpQjBhR0YwSUdOaGJpQmlaU0IxYzJWa0lIUnZJSEpsYzJWMExseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnY0c5dmJHVnlJRU4xYzNSdmJXbDZZV0pzWlNCd2IyOXNaWEl1WEc0Z0tpOWNiblpoY2lCaFpHUlFiMjlzYVc1blZHOGdQU0JtZFc1amRHbHZiaUFvUTI5d2VVTnZibk4wY25WamRHOXlMQ0J3YjI5c1pYSXBJSHRjYmlBZ2RtRnlJRTVsZDB0c1lYTnpJRDBnUTI5d2VVTnZibk4wY25WamRHOXlPMXh1SUNCT1pYZExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd2dQU0JiWFR0Y2JpQWdUbVYzUzJ4aGMzTXVaMlYwVUc5dmJHVmtJRDBnY0c5dmJHVnlJSHg4SUVSRlJrRlZURlJmVUU5UFRFVlNPMXh1SUNCcFppQW9JVTVsZDB0c1lYTnpMbkJ2YjJ4VGFYcGxLU0I3WEc0Z0lDQWdUbVYzUzJ4aGMzTXVjRzl2YkZOcGVtVWdQU0JFUlVaQlZVeFVYMUJQVDB4ZlUwbGFSVHRjYmlBZ2ZWeHVJQ0JPWlhkTGJHRnpjeTV5Wld4bFlYTmxJRDBnYzNSaGJtUmhjbVJTWld4bFlYTmxjanRjYmlBZ2NtVjBkWEp1SUU1bGQwdHNZWE56TzF4dWZUdGNibHh1ZG1GeUlGQnZiMnhsWkVOc1lYTnpJRDBnZTF4dUlDQmhaR1JRYjI5c2FXNW5WRzg2SUdGa1pGQnZiMnhwYm1kVWJ5eGNiaUFnYjI1bFFYSm5kVzFsYm5SUWIyOXNaWEk2SUc5dVpVRnlaM1Z0Wlc1MFVHOXZiR1Z5TEZ4dUlDQjBkMjlCY21kMWJXVnVkRkJ2YjJ4bGNqb2dkSGR2UVhKbmRXMWxiblJRYjI5c1pYSXNYRzRnSUhSb2NtVmxRWEpuZFcxbGJuUlFiMjlzWlhJNklIUm9jbVZsUVhKbmRXMWxiblJRYjI5c1pYSXNYRzRnSUdadmRYSkJjbWQxYldWdWRGQnZiMnhsY2pvZ1ptOTFja0Z5WjNWdFpXNTBVRzl2YkdWeUxGeHVJQ0JtYVhabFFYSm5kVzFsYm5SUWIyOXNaWEk2SUdacGRtVkJjbWQxYldWdWRGQnZiMnhsY2x4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JRYjI5c1pXUkRiR0Z6Y3pzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0QnJvd3NlckNvbXBvbmVudE1peGluXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xuXG52YXIgZmluZERPTU5vZGUgPSByZXF1aXJlKCcuL2ZpbmRET01Ob2RlJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGRpZFdhcm5LZXkgPSAnX2dldERPTU5vZGVEaWRXYXJuJztcblxudmFyIFJlYWN0QnJvd3NlckNvbXBvbmVudE1peGluID0ge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgRE9NIG5vZGUgcmVuZGVyZWQgYnkgdGhpcyBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IFRoZSByb290IG5vZGUgb2YgdGhpcyBjb21wb25lbnQuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBnZXRET01Ob2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodGhpcy5jb25zdHJ1Y3RvcltkaWRXYXJuS2V5XSwgJyVzLmdldERPTU5vZGUoLi4uKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICcgKyAnUmVhY3RET00uZmluZERPTU5vZGUoaW5zdGFuY2UpIGluc3RlYWQuJywgUmVhY3RJbnN0YW5jZU1hcC5nZXQodGhpcykuZ2V0TmFtZSgpIHx8IHRoaXMudGFnTmFtZSB8fCAnVW5rbm93bicpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuY29uc3RydWN0b3JbZGlkV2FybktleV0gPSB0cnVlO1xuICAgIHJldHVybiBmaW5kRE9NTm9kZSh0aGlzKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJDb21wb25lbnRNaXhpbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSQ2NtOTNjMlZ5UTI5dGNHOXVaVzUwVFdsNGFXNHVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFFuSnZkM05sY2tOdmJYQnZibVZ1ZEUxcGVHbHVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkpibk4wWVc1alpVMWhjQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JKYm5OMFlXNWpaVTFoY0NjcE8xeHVYRzUyWVhJZ1ptbHVaRVJQVFU1dlpHVWdQU0J5WlhGMWFYSmxLQ2N1TDJacGJtUkVUMDFPYjJSbEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1ZG1GeUlHUnBaRmRoY201TFpYa2dQU0FuWDJkbGRFUlBUVTV2WkdWRWFXUlhZWEp1Snp0Y2JseHVkbUZ5SUZKbFlXTjBRbkp2ZDNObGNrTnZiWEJ2Ym1WdWRFMXBlR2x1SUQwZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUIwYUdVZ1JFOU5JRzV2WkdVZ2NtVnVaR1Z5WldRZ1lua2dkR2hwY3lCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJQVFVWc1pXMWxiblI5SUZSb1pTQnliMjkwSUc1dlpHVWdiMllnZEdocGN5QmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQXFMMXh1SUNCblpYUkVUMDFPYjJSbE9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvZEdocGN5NWpiMjV6ZEhKMVkzUnZjbHRrYVdSWFlYSnVTMlY1WFN3Z0p5VnpMbWRsZEVSUFRVNXZaR1VvTGk0dUtTQnBjeUJrWlhCeVpXTmhkR1ZrTGlCUWJHVmhjMlVnZFhObElDY2dLeUFuVW1WaFkzUkVUMDB1Wm1sdVpFUlBUVTV2WkdVb2FXNXpkR0Z1WTJVcElHbHVjM1JsWVdRdUp5d2dVbVZoWTNSSmJuTjBZVzVqWlUxaGNDNW5aWFFvZEdocGN5a3VaMlYwVG1GdFpTZ3BJSHg4SUhSb2FYTXVkR0ZuVG1GdFpTQjhmQ0FuVlc1cmJtOTNiaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhSb2FYTXVZMjl1YzNSeWRXTjBiM0piWkdsa1YyRnlia3RsZVYwZ1BTQjBjblZsTzF4dUlDQWdJSEpsZEhWeWJpQm1hVzVrUkU5TlRtOWtaU2gwYUdsektUdGNiaUFnZlZ4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFSnliM2R6WlhKRGIyMXdiMjVsYm5STmFYaHBianNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDaGlsZFJlY29uY2lsZXJcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcblxudmFyIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gaW5zdGFudGlhdGVDaGlsZChjaGlsZEluc3RhbmNlcywgY2hpbGQsIG5hbWUpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG4gIHZhciBrZXlVbmlxdWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVkO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGtleVVuaXF1ZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLicsIG5hbWUpIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmIChjaGlsZCAhPSBudWxsICYmIGtleVVuaXF1ZSkge1xuICAgIGNoaWxkSW5zdGFuY2VzW25hbWVdID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChjaGlsZCwgbnVsbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFjdENoaWxkUmVjb25jaWxlciBwcm92aWRlcyBoZWxwZXJzIGZvciBpbml0aWFsaXppbmcgb3IgdXBkYXRpbmcgYSBzZXQgb2ZcbiAqIGNoaWxkcmVuLiBJdHMgb3V0cHV0IGlzIHN1aXRhYmxlIGZvciBwYXNzaW5nIGl0IG9udG8gUmVhY3RNdWx0aUNoaWxkIHdoaWNoXG4gKiBkb2VzIGRpZmZlZCByZW9yZGVyaW5nIGFuZCBpbnNlcnRpb24uXG4gKi9cbnZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIFwibW91bnQgaW1hZ2VcIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlXG4gICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuXG4gICAqIEByZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICBpZiAobmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307XG4gICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNoaWxkLCBjaGlsZEluc3RhbmNlcyk7XG4gICAgcmV0dXJuIGNoaWxkSW5zdGFuY2VzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByZW5kZXJlZCBjaGlsZHJlbiBhbmQgcmV0dXJucyBhIG5ldyBzZXQgb2YgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDaGlsZHJlbiBGbGF0IGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIG5ldyBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gdHJhY2sgbW92ZXMgaGVyZSBidXQgaWYgd2UgdXNlIGl0ZXJhdG9yc1xuICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4gemlwIHRoZSBpdGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzXG4gICAgLy8gbW92ZWQuXG4gICAgLy8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwgcmV0dXJuIHRoZSBwcmV2Q2hpbGRyZW4gb2JqZWN0IHNvIHRoYXQgd2VcbiAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQuXG4gICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBuYW1lO1xuICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcbiAgICAgIGlmICghbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07XG4gICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYgcHJldkNoaWxkLl9jdXJyZW50RWxlbWVudDtcbiAgICAgIHZhciBuZXh0RWxlbWVudCA9IG5leHRDaGlsZHJlbltuYW1lXTtcbiAgICAgIGlmIChwcmV2Q2hpbGQgIT0gbnVsbCAmJiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gcHJldkNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGlsZCwgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIG51bGwpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBuZXh0Q2hpbGRJbnN0YW5jZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cbiAgICBmb3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkcmVuW25hbWVdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcbiAgfSxcblxuICAvKipcbiAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IHJlbmRlcmVkQ2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAocmVuZGVyZWRDaGlsZHJlbikge1xuICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikge1xuICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgdmFyIHJlbmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxkcmVuW25hbWVdO1xuICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChyZW5kZXJlZENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkUmVjb25jaWxlcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRGFHbHNaRkpsWTI5dVkybHNaWEl1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFTm9hV3hrVW1WamIyNWphV3hsY2x4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEZKbFkyOXVZMmxzWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVtVmpiMjVqYVd4bGNpY3BPMXh1WEc1MllYSWdhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2YVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJSE5vYjNWc1pGVndaR0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5emFHOTFiR1JWY0dSaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUhSeVlYWmxjbk5sUVd4c1EyaHBiR1J5Wlc0Z1BTQnlaWEYxYVhKbEtDY3VMM1J5WVhabGNuTmxRV3hzUTJocGJHUnlaVzRuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNW1kVzVqZEdsdmJpQnBibk4wWVc1MGFXRjBaVU5vYVd4a0tHTm9hV3hrU1c1emRHRnVZMlZ6TENCamFHbHNaQ3dnYm1GdFpTa2dlMXh1SUNBdkx5QlhaU0JtYjNWdVpDQmhJR052YlhCdmJtVnVkQ0JwYm5OMFlXNWpaUzVjYmlBZ2RtRnlJR3RsZVZWdWFYRjFaU0E5SUdOb2FXeGtTVzV6ZEdGdVkyVnpXMjVoYldWZElEMDlQU0IxYm1SbFptbHVaV1E3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2EyVjVWVzVwY1hWbExDQW5abXhoZEhSbGJrTm9hV3hrY21WdUtDNHVMaWs2SUVWdVkyOTFiblJsY21Wa0lIUjNieUJqYUdsc1pISmxiaUIzYVhSb0lIUm9aU0J6WVcxbElHdGxlU3dnSnlBcklDZGdKWE5nTGlCRGFHbHNaQ0JyWlhseklHMTFjM1FnWW1VZ2RXNXBjWFZsT3lCM2FHVnVJSFIzYnlCamFHbHNaSEpsYmlCemFHRnlaU0JoSUd0bGVTd2diMjVzZVNBbklDc2dKM1JvWlNCbWFYSnpkQ0JqYUdsc1pDQjNhV3hzSUdKbElIVnpaV1F1Snl3Z2JtRnRaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmlBZ2FXWWdLR05vYVd4a0lDRTlJRzUxYkd3Z0ppWWdhMlY1Vlc1cGNYVmxLU0I3WEc0Z0lDQWdZMmhwYkdSSmJuTjBZVzVqWlhOYmJtRnRaVjBnUFNCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwS0dOb2FXeGtMQ0J1ZFd4c0tUdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5SUhCeWIzWnBaR1Z6SUdobGJIQmxjbk1nWm05eUlHbHVhWFJwWVd4cGVtbHVaeUJ2Y2lCMWNHUmhkR2x1WnlCaElITmxkQ0J2Wmx4dUlDb2dZMmhwYkdSeVpXNHVJRWwwY3lCdmRYUndkWFFnYVhNZ2MzVnBkR0ZpYkdVZ1ptOXlJSEJoYzNOcGJtY2dhWFFnYjI1MGJ5QlNaV0ZqZEUxMWJIUnBRMmhwYkdRZ2QyaHBZMmhjYmlBcUlHUnZaWE1nWkdsbVptVmtJSEpsYjNKa1pYSnBibWNnWVc1a0lHbHVjMlZ5ZEdsdmJpNWNiaUFxTDF4dWRtRnlJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5SUQwZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nUjJWdVpYSmhkR1Z6SUdFZ1hDSnRiM1Z1ZENCcGJXRm5aVndpSUdadmNpQmxZV05vSUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0JqYUdsc1pISmxiaTRnU1c0Z2RHaGxJR05oYzJWY2JpQWdJQ29nYjJZZ1lGSmxZV04wUkU5TlEyOXRjRzl1Wlc1MFlDd2dZU0J0YjNWdWRDQnBiV0ZuWlNCcGN5QmhJSE4wY21sdVp5QnZaaUJ0WVhKcmRYQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WemRHVmtRMmhwYkdST2IyUmxjeUJPWlhOMFpXUWdZMmhwYkdRZ2JXRndjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdQMjlpYW1WamRIMGdRU0J6WlhRZ2IyWWdZMmhwYkdRZ2FXNXpkR0Z1WTJWekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHbHVjM1JoYm5ScFlYUmxRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2h1WlhOMFpXUkRhR2xzWkU1dlpHVnpMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUdsbUlDaHVaWE4wWldSRGFHbHNaRTV2WkdWeklEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdZMmhwYkdSSmJuTjBZVzVqWlhNZ1BTQjdmVHRjYmlBZ0lDQjBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVLRzVsYzNSbFpFTm9hV3hrVG05a1pYTXNJR2x1YzNSaGJuUnBZWFJsUTJocGJHUXNJR05vYVd4a1NXNXpkR0Z1WTJWektUdGNiaUFnSUNCeVpYUjFjbTRnWTJocGJHUkpibk4wWVc1alpYTTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWd1pHRjBaWE1nZEdobElISmxibVJsY21Wa0lHTm9hV3hrY21WdUlHRnVaQ0J5WlhSMWNtNXpJR0VnYm1WM0lITmxkQ0J2WmlCamFHbHNaSEpsYmk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQndjbVYyUTJocGJHUnlaVzRnVUhKbGRtbHZkWE5zZVNCcGJtbDBhV0ZzYVhwbFpDQnpaWFFnYjJZZ1kyaHBiR1J5Wlc0dVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRFTm9hV3hrY21WdUlFWnNZWFFnWTJocGJHUWdaV3hsYldWdWRDQnRZWEJ6TGx4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQmpiMjUwWlhoMFhHNGdJQ0FxSUVCeVpYUjFjbTRnZXo5dlltcGxZM1I5SUVFZ2JtVjNJSE5sZENCdlppQmphR2xzWkNCcGJuTjBZVzVqWlhNdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2RYQmtZWFJsUTJocGJHUnlaVzQ2SUdaMWJtTjBhVzl1SUNod2NtVjJRMmhwYkdSeVpXNHNJRzVsZUhSRGFHbHNaSEpsYml3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQXZMeUJYWlNCamRYSnlaVzUwYkhrZ1pHOXVKM1FnYUdGMlpTQmhJSGRoZVNCMGJ5QjBjbUZqYXlCdGIzWmxjeUJvWlhKbElHSjFkQ0JwWmlCM1pTQjFjMlVnYVhSbGNtRjBiM0p6WEc0Z0lDQWdMeThnYVc1emRHVmhaQ0J2WmlCbWIzSXVMbWx1SUhkbElHTmhiaUI2YVhBZ2RHaGxJR2wwWlhKaGRHOXljeUJoYm1RZ1kyaGxZMnNnYVdZZ1lXNGdhWFJsYlNCb1lYTmNiaUFnSUNBdkx5QnRiM1psWkM1Y2JpQWdJQ0F2THlCVVQwUlBPaUJKWmlCdWIzUm9hVzVuSUdoaGN5QmphR0Z1WjJWa0xDQnlaWFIxY200Z2RHaGxJSEJ5WlhaRGFHbHNaSEpsYmlCdlltcGxZM1FnYzI4Z2RHaGhkQ0IzWlZ4dUlDQWdJQzh2SUdOaGJpQnhkV2xqYTJ4NUlHSmhhV3h2ZFhRZ2FXWWdibTkwYUdsdVp5Qm9ZWE1nWTJoaGJtZGxaQzVjYmlBZ0lDQnBaaUFvSVc1bGVIUkRhR2xzWkhKbGJpQW1KaUFoY0hKbGRrTm9hV3hrY21WdUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJRzVoYldVN1hHNGdJQ0FnWm05eUlDaHVZVzFsSUdsdUlHNWxlSFJEYUdsc1pISmxiaWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRnVaWGgwUTJocGJHUnlaVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjJZWElnY0hKbGRrTm9hV3hrSUQwZ2NISmxka05vYVd4a2NtVnVJQ1ltSUhCeVpYWkRhR2xzWkhKbGJsdHVZVzFsWFR0Y2JpQWdJQ0FnSUhaaGNpQndjbVYyUld4bGJXVnVkQ0E5SUhCeVpYWkRhR2xzWkNBbUppQndjbVYyUTJocGJHUXVYMk4xY25KbGJuUkZiR1Z0Wlc1ME8xeHVJQ0FnSUNBZ2RtRnlJRzVsZUhSRmJHVnRaVzUwSUQwZ2JtVjRkRU5vYVd4a2NtVnVXMjVoYldWZE8xeHVJQ0FnSUNBZ2FXWWdLSEJ5WlhaRGFHbHNaQ0FoUFNCdWRXeHNJQ1ltSUhOb2IzVnNaRlZ3WkdGMFpWSmxZV04wUTI5dGNHOXVaVzUwS0hCeVpYWkZiR1Z0Wlc1MExDQnVaWGgwUld4bGJXVnVkQ2twSUh0Y2JpQWdJQ0FnSUNBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5KbFkyVnBkbVZEYjIxd2IyNWxiblFvY0hKbGRrTm9hV3hrTENCdVpYaDBSV3hsYldWdWRDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCdVpYaDBRMmhwYkdSeVpXNWJibUZ0WlYwZ1BTQndjbVYyUTJocGJHUTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKbGRrTm9hV3hrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdVbVZoWTNSU1pXTnZibU5wYkdWeUxuVnViVzkxYm5SRGIyMXdiMjVsYm5Rb2NISmxka05vYVd4a0xDQnVZVzFsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQXZMeUJVYUdVZ1kyaHBiR1FnYlhWemRDQmlaU0JwYm5OMFlXNTBhV0YwWldRZ1ltVm1iM0psSUdsMEozTWdiVzkxYm5SbFpDNWNiaUFnSUNBZ0lDQWdkbUZ5SUc1bGVIUkRhR2xzWkVsdWMzUmhibU5sSUQwZ2FXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZENodVpYaDBSV3hsYldWdWRDd2diblZzYkNrN1hHNGdJQ0FnSUNBZ0lHNWxlSFJEYUdsc1pISmxibHR1WVcxbFhTQTlJRzVsZUhSRGFHbHNaRWx1YzNSaGJtTmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNBdkx5QlZibTF2ZFc1MElHTm9hV3hrY21WdUlIUm9ZWFFnWVhKbElHNXZJR3h2Ym1kbGNpQndjbVZ6Wlc1MExseHVJQ0FnSUdadmNpQW9ibUZ0WlNCcGJpQndjbVYyUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUdsbUlDaHdjbVYyUTJocGJHUnlaVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrZ0ppWWdJU2h1WlhoMFEyaHBiR1J5Wlc0Z0ppWWdibVY0ZEVOb2FXeGtjbVZ1TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcEtTa2dlMXh1SUNBZ0lDQWdJQ0JTWldGamRGSmxZMjl1WTJsc1pYSXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRDaHdjbVYyUTJocGJHUnlaVzViYm1GdFpWMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYm1WNGRFTm9hV3hrY21WdU8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWYm0xdmRXNTBjeUJoYkd3Z2NtVnVaR1Z5WldRZ1kyaHBiR1J5Wlc0dUlGUm9hWE1nYzJodmRXeGtJR0psSUhWelpXUWdkRzhnWTJ4bFlXNGdkWEFnWTJocGJHUnlaVzVjYmlBZ0lDb2dkMmhsYmlCMGFHbHpJR052YlhCdmJtVnVkQ0JwY3lCMWJtMXZkVzUwWldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdjbVZ1WkdWeVpXUkRhR2xzWkhKbGJpQlFjbVYyYVc5MWMyeDVJR2x1YVhScFlXeHBlbVZrSUhObGRDQnZaaUJqYUdsc1pISmxiaTVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0IxYm0xdmRXNTBRMmhwYkdSeVpXNDZJR1oxYm1OMGFXOXVJQ2h5Wlc1a1pYSmxaRU5vYVd4a2NtVnVLU0I3WEc0Z0lDQWdabTl5SUNoMllYSWdibUZ0WlNCcGJpQnlaVzVrWlhKbFpFTm9hV3hrY21WdUtTQjdYRzRnSUNBZ0lDQnBaaUFvY21WdVpHVnlaV1JEYUdsc1pISmxiaTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY21WdVpHVnlaV1JEYUdsc1pDQTlJSEpsYm1SbGNtVmtRMmhwYkdSeVpXNWJibUZ0WlYwN1hHNGdJQ0FnSUNBZ0lGSmxZV04wVW1WamIyNWphV3hsY2k1MWJtMXZkVzUwUTI5dGNHOXVaVzUwS0hKbGJtUmxjbVZrUTJocGJHUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeU95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENsYXNzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25zJyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzJyk7XG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIga2V5TWlycm9yID0gcmVxdWlyZSgnZmJqcy9saWIva2V5TWlycm9yJyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBNSVhJTlNfS0VZID0ga2V5T2YoeyBtaXhpbnM6IG51bGwgfSk7XG5cbi8qKlxuICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cbiAqL1xudmFyIFNwZWNQb2xpY3kgPSBrZXlNaXJyb3Ioe1xuICAvKipcbiAgICogVGhlc2UgbWV0aG9kcyBtYXkgYmUgZGVmaW5lZCBvbmx5IG9uY2UgYnkgdGhlIGNsYXNzIHNwZWNpZmljYXRpb24gb3IgbWl4aW4uXG4gICAqL1xuICBERUZJTkVfT05DRTogbnVsbCxcbiAgLyoqXG4gICAqIFRoZXNlIG1ldGhvZHMgbWF5IGJlIGRlZmluZWQgYnkgYm90aCB0aGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBhbmQgbWl4aW5zLlxuICAgKiBTdWJzZXF1ZW50IGRlZmluaXRpb25zIHdpbGwgYmUgY2hhaW5lZC4gVGhlc2UgbWV0aG9kcyBtdXN0IHJldHVybiB2b2lkLlxuICAgKi9cbiAgREVGSU5FX01BTlk6IG51bGwsXG4gIC8qKlxuICAgKiBUaGVzZSBtZXRob2RzIGFyZSBvdmVycmlkaW5nIHRoZSBiYXNlIGNsYXNzLlxuICAgKi9cbiAgT1ZFUlJJREVfQkFTRTogbnVsbCxcbiAgLyoqXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIHNpbWlsYXIgdG8gREVGSU5FX01BTlksIGV4Y2VwdCB3ZSBhc3N1bWUgdGhleSByZXR1cm5cbiAgICogb2JqZWN0cy4gV2UgdHJ5IHRvIG1lcmdlIHRoZSBrZXlzIG9mIHRoZSByZXR1cm4gdmFsdWVzIG9mIGFsbCB0aGUgbWl4ZWQgaW5cbiAgICogZnVuY3Rpb25zLiBJZiB0aGVyZSBpcyBhIGtleSBjb25mbGljdCB3ZSB0aHJvdy5cbiAgICovXG4gIERFRklORV9NQU5ZX01FUkdFRDogbnVsbFxufSk7XG5cbnZhciBpbmplY3RlZE1peGlucyA9IFtdO1xuXG52YXIgd2FybmVkU2V0UHJvcHMgPSBmYWxzZTtcbmZ1bmN0aW9uIHdhcm5TZXRQcm9wcygpIHtcbiAgaWYgKCF3YXJuZWRTZXRQcm9wcykge1xuICAgIHdhcm5lZFNldFByb3BzID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3NldFByb3BzKC4uLikgYW5kIHJlcGxhY2VQcm9wcyguLi4pIGFyZSBkZXByZWNhdGVkLiAnICsgJ0luc3RlYWQsIGNhbGwgcmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJykgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuICogb3IgbmF0aXZlIGNvbXBvbmVudHMuXG4gKlxuICogVG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzc1xuICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG4gKlxuICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuICogICAgIH1cbiAqICAgfSk7XG4gKlxuICogVGhlIGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRob2RzIHRoYXQgaGF2ZVxuICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3JcbiAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuICogY2xhc3Mgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLlxuICpcbiAqIEBpbnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZVxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmplY3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge2FycmF5fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIG1peGluczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXG4gICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBzdGF0aWNzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIHByb3BUeXBlczogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBjb250ZXh0VHlwZXM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY2hpbGRDb250ZXh0VHlwZXM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQgb25cbiAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWx5XG4gICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgZ2V0RGVmYXVsdFByb3BzOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCxcblxuICAvKipcbiAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkXG4gICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5cbiAgICpcbiAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgcmV0dXJuIHtcbiAgICogICAgICAgaXNPbjogZmFsc2UsXG4gICAqICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgZ2V0SW5pdGlhbFN0YXRlOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZX01FUkdFRCxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGdldENoaWxkQ29udGV4dDogU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQsXG5cbiAgLyoqXG4gICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcbiAgICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cbiAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuXG4gICAqXG4gICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICogICAgIHZhciBuYW1lID0gdGhpcy5wcm9wcy5uYW1lO1xuICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8L2Rpdj47XG4gICAqICAgfVxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAgICogQG5vc2lkZWVmZmVjdHNcbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICByZW5kZXI6IFNwZWNQb2xpY3kuREVGSU5FX09OQ0UsXG5cbiAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG4gICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAqIGJ5IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRgLlxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxNb3VudDogU3BlY1BvbGljeS5ERUZJTkVfTUFOWSxcblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgKiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50LlxuICAgKlxuICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudERpZE1vdW50OiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXG4gICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICpcbiAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XG4gICAqICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRcbiAgICogICAgIH0pO1xuICAgKiAgIH1cbiAgICpcbiAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3BcbiAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50XG4gICAqIHVwZGF0ZS5cbiAgICpcbiAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkge1xuICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMpIHx8XG4gICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG4gICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICogICB9XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICBzaG91bGRDb21wb25lbnRVcGRhdGU6IFNwZWNQb2xpY3kuREVGSU5FX09OQ0UsXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb21cbiAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuICAgKiBhbmQgYG5leHRDb250ZXh0YC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAgICpcbiAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGNvbXBvbmVudFdpbGxVcGRhdGU6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAqXG4gICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAqIGJlZW4gdXBkYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wc1xuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0XG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50RGlkVXBkYXRlOiBTcGVjUG9saWN5LkRFRklORV9NQU5ZLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkIGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZVxuICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cbiAgICpcbiAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW5cbiAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuXG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgY29tcG9uZW50V2lsbFVubW91bnQ6IFNwZWNQb2xpY3kuREVGSU5FX01BTlksXG5cbiAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBTcGVjUG9saWN5Lk9WRVJSSURFX0JBU0VcblxufTtcblxuLyoqXG4gKiBNYXBwaW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG4gKlxuICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xuICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5cGUuIERlc3BpdGVcbiAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5IHVuZGVyXG4gKiB3aGljaCBhbGwgb3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gKi9cbnZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG4gIGRpc3BsYXlOYW1lOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG4gICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgfSxcbiAgbWl4aW5zOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIG1peGlucykge1xuICAgIGlmIChtaXhpbnMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jaGlsZENvbnRleHQpO1xuICAgIH1cbiAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IGFzc2lnbih7fSwgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dFR5cGVzKTtcbiAgfSxcbiAgY29udGV4dFR5cGVzOiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jb250ZXh0KTtcbiAgICB9XG4gICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMsIGNvbnRleHRUeXBlcyk7XG4gIH0sXG4gIC8qKlxuICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcbiAgICogYXV0b21hdGljIG1lcmdpbmcuXG4gICAqL1xuICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLCBnZXREZWZhdWx0UHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBnZXREZWZhdWx0UHJvcHM7XG4gICAgfVxuICB9LFxuICBwcm9wVHlwZXM6IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLnByb3ApO1xuICAgIH1cbiAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBhc3NpZ24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcbiAgfSxcbiAgc3RhdGljczogZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuICB9LFxuICBhdXRvYmluZDogZnVuY3Rpb24gKCkge30gfTtcblxuLy8gbm9vcFxuZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7XG4gICAgaWYgKHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gaW52YXJpYW50IHNvIGNvbXBvbmVudHNcbiAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgbm90IGluIF9fREVWX19cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJywgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHByb3BOYW1lKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RPdmVycmlkZShwcm90bywgbmFtZSkge1xuICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSkgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdIDogbnVsbDtcblxuICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgIShzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5Lk9WRVJSSURFX0JBU0UpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSAnICsgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgKyAnZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLicsIG5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgaWYgKHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgIShzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZIHx8IHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VEKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgKyAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlICcgKyAndG8gYSBtaXhpbi4nLCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcbiAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzc2VzLlxuICovXG5mdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICBpZiAoIXNwZWMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAhKHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcXCdyZSBhdHRlbXB0aW5nIHRvICcgKyAndXNlIGEgY29tcG9uZW50IGNsYXNzIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAhIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzcGVjKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3VcXCdyZSBhdHRlbXB0aW5nIHRvICcgKyAndXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIHZhciBwcm90byA9IENvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcbiAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXG4gIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRlciB0aGVzZSBtZXRob2RzIGluIHRoZSBzcGVjLlxuICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcbiAgfVxuXG4gIGZvciAodmFyIG5hbWUgaW4gc3BlYykge1xuICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09IE1JWElOU19LRVkpIHtcbiAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92ZS5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBwcm9wZXJ0eSA9IHNwZWNbbmFtZV07XG4gICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShwcm90bywgbmFtZSk7XG5cbiAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG4gICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3VuZDpcbiAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPSBpc0Z1bmN0aW9uICYmICFpc1JlYWN0Q2xhc3NNZXRob2QgJiYgIWlzQWxyZWFkeURlZmluZWQgJiYgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAgIGlmIChzaG91bGRBdXRvQmluZCkge1xuICAgICAgICBpZiAoIXByb3RvLl9fcmVhY3RBdXRvQmluZE1hcCkge1xuICAgICAgICAgIHByb3RvLl9fcmVhY3RBdXRvQmluZE1hcCA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHByb3RvLl9fcmVhY3RBdXRvQmluZE1hcFtuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cbiAgICAgICAgICAhKGlzUmVhY3RDbGFzc01ldGhvZCAmJiAoc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWV9NRVJHRUQgfHwgc3BlY1BvbGljeSA9PT0gU3BlY1BvbGljeS5ERUZJTkVfTUFOWSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyAnICsgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLCBzcGVjUG9saWN5LCBuYW1lKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcbiAgICAgICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXG4gICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09IFNwZWNQb2xpY3kuREVGSU5FX01BTllfTUVSR0VEKSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09PSBTcGVjUG9saWN5LkRFRklORV9NQU5ZKSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gIGlmICghc3RhdGljcykge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdO1xuICAgIGlmICghc3RhdGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGlzUmVzZXJ2ZWQgPSAobmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVMpO1xuICAgICEhaXNSZXNlcnZlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIga2V5LiBEZWZpbmUgaXQgJyArICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgKyAnY29uc3RydWN0b3IuJywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGlzSW5oZXJpdGVkID0gKG5hbWUgaW4gQ29uc3RydWN0b3IpO1xuICAgICEhaXNJbmhlcml0ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICsgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlICcgKyAnZHVlIHRvIGEgbWl4aW4uJywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIENvbnN0cnVjdG9yW25hbWVdID0gcHJvcGVydHk7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICovXG5mdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4gICEob25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gIGZvciAodmFyIGtleSBpbiB0d28pIHtcbiAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICEob25lW2tleV0gPT09IHVuZGVmaW5lZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICsgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0ICcgKyAnbWF5IGJlIGR1ZSB0byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0aGlzIG1heSBiZSBjYXVzZWQgYnkgdHdvICcgKyAnZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICsgJ3dpdGggY2xhc2hpbmcga2V5cy4nLCBrZXkpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvbmU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMgdGhlaXIgcmV0dXJuIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZFJlc3VsdCgpIHtcbiAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKGEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGI7XG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cbiAgICB2YXIgYyA9IHt9O1xuICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBiKTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtcbiAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5cbiAqL1xuZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XG4gIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDtcbiAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcbiAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIGJsb2NrLXNjb3BlZC12YXIsIG5vLXVuZGVmICovXG4gICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uIChuZXdUaGlzKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIC8vIFVzZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBhbiBhdXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsXG4gICAgICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cbiAgICAgIC8vIGxldCdzIHdhcm4uXG4gICAgICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdiaW5kKCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2RzIG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAnICsgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJywgY29tcG9uZW50TmFtZSkgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICsgJ1JlYWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgKyAnd2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLCBjb21wb25lbnROYW1lKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICAgICAgfVxuICAgICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcbiAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG4gICAgfTtcbiAgfVxuICByZXR1cm4gYm91bmRNZXRob2Q7XG59XG5cbi8qKlxuICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gKi9cbmZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7XG4gIGZvciAodmFyIGF1dG9CaW5kS2V5IGluIGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRNYXApIHtcbiAgICBpZiAoY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZE1hcC5oYXNPd25Qcm9wZXJ0eShhdXRvQmluZEtleSkpIHtcbiAgICAgIHZhciBtZXRob2QgPSBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kTWFwW2F1dG9CaW5kS2V5XTtcbiAgICAgIGNvbXBvbmVudFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFuZFxuICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5cbiAqL1xudmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHtcblxuICAvKipcbiAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50XG4gICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cbiAgICovXG4gIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKG5ld1N0YXRlLCBjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBwcm9wcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxQcm9wcyBTdWJzZXQgb2YgdGhlIG5leHQgcHJvcHMuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgcHJvcHMgYXJlIHVwZGF0ZWQuXG4gICAqIEBmaW5hbFxuICAgKiBAcHVibGljXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzZXRQcm9wczogZnVuY3Rpb24gKHBhcnRpYWxQcm9wcywgY2FsbGJhY2spIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FyblNldFByb3BzKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0UHJvcHModGhpcywgcGFydGlhbFByb3BzKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZSBhbGwgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3UHJvcHMgU3Vic2V0IG9mIHRoZSBuZXh0IHByb3BzLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHByb3BzIGFyZSB1cGRhdGVkLlxuICAgKiBAZmluYWxcbiAgICogQHB1YmxpY1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcmVwbGFjZVByb3BzOiBmdW5jdGlvbiAobmV3UHJvcHMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5TZXRQcm9wcygpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VQcm9wcyh0aGlzLCBuZXdQcm9wcyk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge307XG5hc3NpZ24oUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RDbGFzc01peGluKTtcblxuLyoqXG4gKiBNb2R1bGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0ZSBjb21wb25lbnRzLlxuICpcbiAqIEBjbGFzcyBSZWFjdENsYXNzXG4gKi9cbnZhciBSZWFjdENsYXNzID0ge1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgY3JlYXRlQ2xhc3M6IGZ1bmN0aW9uIChzcGVjKSB7XG4gICAgdmFyIENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXG4gICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvciwgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgKyAnSlNYIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5JykgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRNYXApIHtcbiAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cbiAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFkLCB0aGV5IHVzZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIgaW5pdGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5nZXRJbml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9uKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJywgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIH07XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xhc3NDb21wb25lbnQoKTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcblxuICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3BlcnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRlLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/Jywgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHtcbiAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9LFxuXG4gIGluamVjdGlvbjoge1xuICAgIGluamVjdE1peGluOiBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICAgIGluamVjdGVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICAgIH1cbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2xhc3M7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkRiR0Z6Y3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSRGJHRnpjMXh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBRMjl0Y0c5dVpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dWN5QTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dWN5Y3BPMXh1ZG1GeUlGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjeWNwTzF4dWRtRnlJRkpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEU1dmIzQlZjR1JoZEdWUmRXVjFaU2NwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdaVzF3ZEhsUFltcGxZM1FnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5bGJYQjBlVTlpYW1WamRDY3BPMXh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dWRtRnlJR3RsZVUxcGNuSnZjaUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJ0bGVVMXBjbkp2Y2ljcE8xeHVkbUZ5SUd0bGVVOW1JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YTJWNVQyWW5LVHRjYm5aaGNpQjNZWEp1YVc1bklEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZkMkZ5Ym1sdVp5Y3BPMXh1WEc1MllYSWdUVWxZU1U1VFgwdEZXU0E5SUd0bGVVOW1LSHNnYldsNGFXNXpPaUJ1ZFd4c0lIMHBPMXh1WEc0dktpcGNiaUFxSUZCdmJHbGphV1Z6SUhSb1lYUWdaR1Z6WTNKcFltVWdiV1YwYUc5a2N5QnBiaUJnVW1WaFkzUkRiR0Z6YzBsdWRHVnlabUZqWldBdVhHNGdLaTljYm5aaGNpQlRjR1ZqVUc5c2FXTjVJRDBnYTJWNVRXbHljbTl5S0h0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlhObElHMWxkR2h2WkhNZ2JXRjVJR0psSUdSbFptbHVaV1FnYjI1c2VTQnZibU5sSUdKNUlIUm9aU0JqYkdGemN5QnpjR1ZqYVdacFkyRjBhVzl1SUc5eUlHMXBlR2x1TGx4dUlDQWdLaTljYmlBZ1JFVkdTVTVGWDA5T1EwVTZJRzUxYkd3c1hHNGdJQzhxS2x4dUlDQWdLaUJVYUdWelpTQnRaWFJvYjJSeklHMWhlU0JpWlNCa1pXWnBibVZrSUdKNUlHSnZkR2dnZEdobElHTnNZWE56SUhOd1pXTnBabWxqWVhScGIyNGdZVzVrSUcxcGVHbHVjeTVjYmlBZ0lDb2dVM1ZpYzJWeGRXVnVkQ0JrWldacGJtbDBhVzl1Y3lCM2FXeHNJR0psSUdOb1lXbHVaV1F1SUZSb1pYTmxJRzFsZEdodlpITWdiWFZ6ZENCeVpYUjFjbTRnZG05cFpDNWNiaUFnSUNvdlhHNGdJRVJGUmtsT1JWOU5RVTVaT2lCdWRXeHNMRnh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxjMlVnYldWMGFHOWtjeUJoY21VZ2IzWmxjbkpwWkdsdVp5QjBhR1VnWW1GelpTQmpiR0Z6Y3k1Y2JpQWdJQ292WEc0Z0lFOVdSVkpTU1VSRlgwSkJVMFU2SUc1MWJHd3NYRzRnSUM4cUtseHVJQ0FnS2lCVWFHVnpaU0J0WlhSb2IyUnpJR0Z5WlNCemFXMXBiR0Z5SUhSdklFUkZSa2xPUlY5TlFVNVpMQ0JsZUdObGNIUWdkMlVnWVhOemRXMWxJSFJvWlhrZ2NtVjBkWEp1WEc0Z0lDQXFJRzlpYW1WamRITXVJRmRsSUhSeWVTQjBieUJ0WlhKblpTQjBhR1VnYTJWNWN5QnZaaUIwYUdVZ2NtVjBkWEp1SUhaaGJIVmxjeUJ2WmlCaGJHd2dkR2hsSUcxcGVHVmtJR2x1WEc0Z0lDQXFJR1oxYm1OMGFXOXVjeTRnU1dZZ2RHaGxjbVVnYVhNZ1lTQnJaWGtnWTI5dVpteHBZM1FnZDJVZ2RHaHliM2N1WEc0Z0lDQXFMMXh1SUNCRVJVWkpUa1ZmVFVGT1dWOU5SVkpIUlVRNklHNTFiR3hjYm4wcE8xeHVYRzUyWVhJZ2FXNXFaV04wWldSTmFYaHBibk1nUFNCYlhUdGNibHh1ZG1GeUlIZGhjbTVsWkZObGRGQnliM0J6SUQwZ1ptRnNjMlU3WEc1bWRXNWpkR2x2YmlCM1lYSnVVMlYwVUhKdmNITW9LU0I3WEc0Z0lHbG1JQ2doZDJGeWJtVmtVMlYwVUhKdmNITXBJSHRjYmlBZ0lDQjNZWEp1WldSVFpYUlFjbTl3Y3lBOUlIUnlkV1U3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2R6WlhSUWNtOXdjeWd1TGk0cElHRnVaQ0J5WlhCc1lXTmxVSEp2Y0hNb0xpNHVLU0JoY21VZ1pHVndjbVZqWVhSbFpDNGdKeUFySUNkSmJuTjBaV0ZrTENCallXeHNJSEpsYm1SbGNpQmhaMkZwYmlCaGRDQjBhR1VnZEc5d0lHeGxkbVZzTGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUTI5dGNHOXphWFJsSUdOdmJYQnZibVZ1ZEhNZ1lYSmxJR2hwWjJobGNpMXNaWFpsYkNCamIyMXdiMjVsYm5SeklIUm9ZWFFnWTI5dGNHOXpaU0J2ZEdobGNpQmpiMjF3YjNOcGRHVmNiaUFxSUc5eUlHNWhkR2wyWlNCamIyMXdiMjVsYm5SekxseHVJQ3BjYmlBcUlGUnZJR055WldGMFpTQmhJRzVsZHlCMGVYQmxJRzltSUdCU1pXRmpkRU5zWVhOellDd2djR0Z6Y3lCaElITndaV05wWm1sallYUnBiMjRnYjJaY2JpQXFJSGx2ZFhJZ2JtVjNJR05zWVhOeklIUnZJR0JTWldGamRDNWpjbVZoZEdWRGJHRnpjMkF1SUZSb1pTQnZibXg1SUhKbGNYVnBjbVZ0Wlc1MElHOW1JSGx2ZFhJZ1kyeGhjM05jYmlBcUlITndaV05wWm1sallYUnBiMjRnYVhNZ2RHaGhkQ0I1YjNVZ2FXMXdiR1Z0Wlc1MElHRWdZSEpsYm1SbGNtQWdiV1YwYUc5a0xseHVJQ3BjYmlBcUlDQWdkbUZ5SUUxNVEyOXRjRzl1Wlc1MElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNvZ0lDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNG9LU0I3WEc0Z0tpQWdJQ0FnSUNCeVpYUjFjbTRnUEdScGRqNUlaV3hzYnlCWGIzSnNaRHd2WkdsMlBqdGNiaUFxSUNBZ0lDQjlYRzRnS2lBZ0lIMHBPMXh1SUNwY2JpQXFJRlJvWlNCamJHRnpjeUJ6Y0dWamFXWnBZMkYwYVc5dUlITjFjSEJ2Y25SeklHRWdjM0JsWTJsbWFXTWdjSEp2ZEc5amIyd2diMllnYldWMGFHOWtjeUIwYUdGMElHaGhkbVZjYmlBcUlITndaV05wWVd3Z2JXVmhibWx1WnlBb1pTNW5MaUJnY21WdVpHVnlZQ2t1SUZObFpTQmdVbVZoWTNSRGJHRnpjMGx1ZEdWeVptRmpaV0FnWm05eVhHNGdLaUJ0YjNKbElIUm9aU0JqYjIxd2NtVm9aVzV6YVhabElIQnliM1J2WTI5c0xpQkJibmtnYjNSb1pYSWdjSEp2Y0dWeWRHbGxjeUJoYm1RZ2JXVjBhRzlrY3lCcGJpQjBhR1ZjYmlBcUlHTnNZWE56SUhOd1pXTnBabWxqWVhScGIyNGdkMmxzYkNCaVpTQmhkbUZwYkdGaWJHVWdiMjRnZEdobElIQnliM1J2ZEhsd1pTNWNiaUFxWEc0Z0tpQkFhVzUwWlhKbVlXTmxJRkpsWVdOMFEyeGhjM05KYm5SbGNtWmhZMlZjYmlBcUlFQnBiblJsY201aGJGeHVJQ292WEc1MllYSWdVbVZoWTNSRGJHRnpjMGx1ZEdWeVptRmpaU0E5SUh0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVc0Z1lYSnlZWGtnYjJZZ1RXbDRhVzRnYjJKcVpXTjBjeUIwYnlCcGJtTnNkV1JsSUhkb1pXNGdaR1ZtYVc1cGJtY2dlVzkxY2lCamIyMXdiMjVsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUIwZVhCbElIdGhjbkpoZVgxY2JpQWdJQ29nUUc5d2RHbHZibUZzWEc0Z0lDQXFMMXh1SUNCdGFYaHBibk02SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRnVJRzlpYW1WamRDQmpiMjUwWVdsdWFXNW5JSEJ5YjNCbGNuUnBaWE1nWVc1a0lHMWxkR2h2WkhNZ2RHaGhkQ0J6YUc5MWJHUWdZbVVnWkdWbWFXNWxaQ0J2Ymx4dUlDQWdLaUIwYUdVZ1kyOXRjRzl1Wlc1MEozTWdZMjl1YzNSeWRXTjBiM0lnYVc1emRHVmhaQ0J2WmlCcGRITWdjSEp2ZEc5MGVYQmxJQ2h6ZEdGMGFXTWdiV1YwYUc5a2N5a3VYRzRnSUNBcVhHNGdJQ0FxSUVCMGVYQmxJSHR2WW1wbFkzUjlYRzRnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsamN6b2dVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1N4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWbWFXNXBkR2x2YmlCdlppQndjbTl3SUhSNWNHVnpJR1p2Y2lCMGFHbHpJR052YlhCdmJtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIUjVjR1VnZTI5aWFtVmpkSDFjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0J3Y205d1ZIbHdaWE02SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3NYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUmxabWx1YVhScGIyNGdiMllnWTI5dWRHVjRkQ0IwZVhCbGN5Qm1iM0lnZEdocGN5QmpiMjF3YjI1bGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCMGVYQmxJSHR2WW1wbFkzUjlYRzRnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnS2k5Y2JpQWdZMjl1ZEdWNGRGUjVjR1Z6T2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVaV1pwYm1sMGFXOXVJRzltSUdOdmJuUmxlSFFnZEhsd1pYTWdkR2hwY3lCamIyMXdiMjVsYm5RZ2MyVjBjeUJtYjNJZ2FYUnpJR05vYVd4a2NtVnVMbHh1SUNBZ0tseHVJQ0FnS2lCQWRIbHdaU0I3YjJKcVpXTjBmVnh1SUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNvdlhHNGdJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WkxGeHVYRzRnSUM4dklEMDlQVDBnUkdWbWFXNXBkR2x2YmlCdFpYUm9iMlJ6SUQwOVBUMWNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNTJiMnRsWkNCM2FHVnVJSFJvWlNCamIyMXdiMjVsYm5RZ2FYTWdiVzkxYm5SbFpDNGdWbUZzZFdWeklHbHVJSFJvWlNCdFlYQndhVzVuSUhkcGJHd2dZbVVnYzJWMElHOXVYRzRnSUNBcUlHQjBhR2x6TG5CeWIzQnpZQ0JwWmlCMGFHRjBJSEJ5YjNBZ2FYTWdibTkwSUhOd1pXTnBabWxsWkNBb2FTNWxMaUIxYzJsdVp5QmhiaUJnYVc1Z0lHTm9aV05yS1M1Y2JpQWdJQ3BjYmlBZ0lDb2dWR2hwY3lCdFpYUm9iMlFnYVhNZ2FXNTJiMnRsWkNCaVpXWnZjbVVnWUdkbGRFbHVhWFJwWVd4VGRHRjBaV0FnWVc1a0lIUm9aWEpsWm05eVpTQmpZVzV1YjNRZ2NtVnNlVnh1SUNBZ0tpQnZiaUJnZEdocGN5NXpkR0YwWldBZ2IzSWdkWE5sSUdCMGFHbHpMbk5sZEZOMFlYUmxZQzVjYmlBZ0lDcGNiaUFnSUNvZ1FISmxkSFZ5YmlCN2IySnFaV04wZlZ4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdkbGRFUmxabUYxYkhSUWNtOXdjem9nVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dWOU5SVkpIUlVRc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsdWRtOXJaV1FnYjI1alpTQmlaV1p2Y21VZ2RHaGxJR052YlhCdmJtVnVkQ0JwY3lCdGIzVnVkR1ZrTGlCVWFHVWdjbVYwZFhKdUlIWmhiSFZsSUhkcGJHd2dZbVVnZFhObFpGeHVJQ0FnS2lCaGN5QjBhR1VnYVc1cGRHbGhiQ0IyWVd4MVpTQnZaaUJnZEdocGN5NXpkR0YwWldBdVhHNGdJQ0FxWEc0Z0lDQXFJQ0FnWjJWMFNXNXBkR2xoYkZOMFlYUmxPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ29nSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FxSUNBZ0lDQWdJR2x6VDI0NklHWmhiSE5sTEZ4dUlDQWdLaUFnSUNBZ0lDQm1iMjlDWVhvNklHNWxkeUJDWVhwR2IyOG9LVnh1SUNBZ0tpQWdJQ0FnZlZ4dUlDQWdLaUFnSUgxY2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJpQjdiMkpxWldOMGZWeHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHZGxkRWx1YVhScFlXeFRkR0YwWlRvZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XVjlOUlZKSFJVUXNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQnlaWFIxY200Z2UyOWlhbVZqZEgxY2JpQWdJQ29nUUc5d2RHbHZibUZzWEc0Z0lDQXFMMXh1SUNCblpYUkRhR2xzWkVOdmJuUmxlSFE2SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsbGZUVVZTUjBWRUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVmMyVnpJSEJ5YjNCeklHWnliMjBnWUhSb2FYTXVjSEp2Y0hOZ0lHRnVaQ0J6ZEdGMFpTQm1jbTl0SUdCMGFHbHpMbk4wWVhSbFlDQjBieUJ5Wlc1a1pYSWdkR2hsWEc0Z0lDQXFJSE4wY25WamRIVnlaU0J2WmlCMGFHVWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCT2J5Qm5kV0Z5WVc1MFpXVnpJR0Z5WlNCdFlXUmxJR0ZpYjNWMElIZG9aVzRnYjNJZ2FHOTNJRzltZEdWdUlIUm9hWE1nYldWMGFHOWtJR2x6SUdsdWRtOXJaV1FzSUhOdlhHNGdJQ0FxSUdsMElHMTFjM1FnYm05MElHaGhkbVVnYzJsa1pTQmxabVpsWTNSekxseHVJQ0FnS2x4dUlDQWdLaUFnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FxSUNBZ0lDQjJZWElnYm1GdFpTQTlJSFJvYVhNdWNISnZjSE11Ym1GdFpUdGNiaUFnSUNvZ0lDQWdJSEpsZEhWeWJpQThaR2wyUGtobGJHeHZMQ0I3Ym1GdFpYMGhQQzlrYVhZK08xeHVJQ0FnS2lBZ0lIMWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnliaUI3VW1WaFkzUkRiMjF3YjI1bGJuUjlYRzRnSUNBcUlFQnViM05wWkdWbFptWmxZM1J6WEc0Z0lDQXFJRUJ5WlhGMWFYSmxaRnh1SUNBZ0tpOWNiaUFnY21WdVpHVnlPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlQVGtORkxGeHVYRzRnSUM4dklEMDlQVDBnUkdWc1pXZGhkR1VnYldWMGFHOWtjeUE5UFQwOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsdWRtOXJaV1FnZDJobGJpQjBhR1VnWTI5dGNHOXVaVzUwSUdseklHbHVhWFJwWVd4c2VTQmpjbVZoZEdWa0lHRnVaQ0JoWW05MWRDQjBieUJpWlNCdGIzVnVkR1ZrTGx4dUlDQWdLaUJVYUdseklHMWhlU0JvWVhabElITnBaR1VnWldabVpXTjBjeXdnWW5WMElHRnVlU0JsZUhSbGNtNWhiQ0J6ZFdKelkzSnBjSFJwYjI1eklHOXlJR1JoZEdFZ1kzSmxZWFJsWkZ4dUlDQWdLaUJpZVNCMGFHbHpJRzFsZEdodlpDQnRkWE4wSUdKbElHTnNaV0Z1WldRZ2RYQWdhVzRnWUdOdmJYQnZibVZ1ZEZkcGJHeFZibTF2ZFc1MFlDNWNiaUFnSUNwY2JpQWdJQ29nUUc5d2RHbHZibUZzWEc0Z0lDQXFMMXh1SUNCamIyMXdiMjVsYm5SWGFXeHNUVzkxYm5RNklGTndaV05RYjJ4cFkza3VSRVZHU1U1RlgwMUJUbGtzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWx1ZG05clpXUWdkMmhsYmlCMGFHVWdZMjl0Y0c5dVpXNTBJR2hoY3lCaVpXVnVJRzF2ZFc1MFpXUWdZVzVrSUdoaGN5QmhJRVJQVFNCeVpYQnlaWE5sYm5SaGRHbHZiaTVjYmlBZ0lDb2dTRzkzWlhabGNpd2dkR2hsY21VZ2FYTWdibThnWjNWaGNtRnVkR1ZsSUhSb1lYUWdkR2hsSUVSUFRTQnViMlJsSUdseklHbHVJSFJvWlNCa2IyTjFiV1Z1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dWWE5sSUhSb2FYTWdZWE1nWVc0Z2IzQndiM0owZFc1cGRIa2dkRzhnYjNCbGNtRjBaU0J2YmlCMGFHVWdSRTlOSUhkb1pXNGdkR2hsSUdOdmJYQnZibVZ1ZENCb1lYTmNiaUFnSUNvZ1ltVmxiaUJ0YjNWdWRHVmtJQ2hwYm1sMGFXRnNhWHBsWkNCaGJtUWdjbVZ1WkdWeVpXUXBJR1p2Y2lCMGFHVWdabWx5YzNRZ2RHbHRaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZiR1Z0Wlc1MGZTQnliMjkwVG05a1pTQkVUMDBnWld4bGJXVnVkQ0J5WlhCeVpYTmxiblJwYm1jZ2RHaGxJR052YlhCdmJtVnVkQzVjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0JqYjIxd2IyNWxiblJFYVdSTmIzVnVkRG9nVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1NXNTJiMnRsWkNCaVpXWnZjbVVnZEdobElHTnZiWEJ2Ym1WdWRDQnlaV05sYVhabGN5QnVaWGNnY0hKdmNITXVYRzRnSUNBcVhHNGdJQ0FxSUZWelpTQjBhR2x6SUdGeklHRnVJRzl3Y0c5eWRIVnVhWFI1SUhSdklISmxZV04wSUhSdklHRWdjSEp2Y0NCMGNtRnVjMmwwYVc5dUlHSjVJSFZ3WkdGMGFXNW5JSFJvWlZ4dUlDQWdLaUJ6ZEdGMFpTQjFjMmx1WnlCZ2RHaHBjeTV6WlhSVGRHRjBaV0F1SUVOMWNuSmxiblFnY0hKdmNITWdZWEpsSUdGalkyVnpjMlZrSUhacFlTQmdkR2hwY3k1d2NtOXdjMkF1WEc0Z0lDQXFYRzRnSUNBcUlDQWdZMjl0Y0c5dVpXNTBWMmxzYkZKbFkyVnBkbVZRY205d2N6b2dablZ1WTNScGIyNG9ibVY0ZEZCeWIzQnpMQ0J1WlhoMFEyOXVkR1Y0ZENrZ2UxeHVJQ0FnS2lBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN1hHNGdJQ0FxSUNBZ0lDQWdJR3hwYTJWelNXNWpjbVZoYzJsdVp6b2dibVY0ZEZCeWIzQnpMbXhwYTJWRGIzVnVkQ0ErSUhSb2FYTXVjSEp2Y0hNdWJHbHJaVU52ZFc1MFhHNGdJQ0FxSUNBZ0lDQjlLVHRjYmlBZ0lDb2dJQ0I5WEc0Z0lDQXFYRzRnSUNBcUlFNVBWRVU2SUZSb1pYSmxJR2x6SUc1dklHVnhkV2wyWVd4bGJuUWdZR052YlhCdmJtVnVkRmRwYkd4U1pXTmxhWFpsVTNSaGRHVmdMaUJCYmlCcGJtTnZiV2x1WnlCd2NtOXdYRzRnSUNBcUlIUnlZVzV6YVhScGIyNGdiV0Y1SUdOaGRYTmxJR0VnYzNSaGRHVWdZMmhoYm1kbExDQmlkWFFnZEdobElHOXdjRzl6YVhSbElHbHpJRzV2ZENCMGNuVmxMaUJKWmlCNWIzVmNiaUFnSUNvZ2JtVmxaQ0JwZEN3Z2VXOTFJR0Z5WlNCd2NtOWlZV0pzZVNCc2IyOXJhVzVuSUdadmNpQmdZMjl0Y0c5dVpXNTBWMmxzYkZWd1pHRjBaV0F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCdVpYaDBVSEp2Y0hOY2JpQWdJQ29nUUc5d2RHbHZibUZzWEc0Z0lDQXFMMXh1SUNCamIyMXdiMjVsYm5SWGFXeHNVbVZqWldsMlpWQnliM0J6T2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWa0lIZG9hV3hsSUdSbFkybGthVzVuSUdsbUlIUm9aU0JqYjIxd2IyNWxiblFnYzJodmRXeGtJR0psSUhWd1pHRjBaV1FnWVhNZ1lTQnlaWE4xYkhRZ2IyWmNiaUFnSUNvZ2NtVmpaV2wyYVc1bklHNWxkeUJ3Y205d2N5d2djM1JoZEdVZ1lXNWtMMjl5SUdOdmJuUmxlSFF1WEc0Z0lDQXFYRzRnSUNBcUlGVnpaU0IwYUdseklHRnpJR0Z1SUc5d2NHOXlkSFZ1YVhSNUlIUnZJR0J5WlhSMWNtNGdabUZzYzJWZ0lIZG9aVzRnZVc5MUozSmxJR05sY25SaGFXNGdkR2hoZENCMGFHVmNiaUFnSUNvZ2RISmhibk5wZEdsdmJpQjBieUIwYUdVZ2JtVjNJSEJ5YjNCekwzTjBZWFJsTDJOdmJuUmxlSFFnZDJsc2JDQnViM1FnY21WeGRXbHlaU0JoSUdOdmJYQnZibVZ1ZEZ4dUlDQWdLaUIxY0dSaGRHVXVYRzRnSUNBcVhHNGdJQ0FxSUNBZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxPaUJtZFc1amRHbHZiaWh1WlhoMFVISnZjSE1zSUc1bGVIUlRkR0YwWlN3Z2JtVjRkRU52Ym5SbGVIUXBJSHRjYmlBZ0lDb2dJQ0FnSUhKbGRIVnliaUFoWlhGMVlXd29ibVY0ZEZCeWIzQnpMQ0IwYUdsekxuQnliM0J6S1NCOGZGeHVJQ0FnS2lBZ0lDQWdJQ0FoWlhGMVlXd29ibVY0ZEZOMFlYUmxMQ0IwYUdsekxuTjBZWFJsS1NCOGZGeHVJQ0FnS2lBZ0lDQWdJQ0FoWlhGMVlXd29ibVY0ZEVOdmJuUmxlSFFzSUhSb2FYTXVZMjl1ZEdWNGRDazdYRzRnSUNBcUlDQWdmVnh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1WNGRGQnliM0J6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMjlpYW1WamRIMGdibVY0ZEZOMFlYUmxYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRU52Ym5SbGVIUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1ltOXZiR1ZoYm4wZ1ZISjFaU0JwWmlCMGFHVWdZMjl0Y0c5dVpXNTBJSE5vYjNWc1pDQjFjR1JoZEdVdVhHNGdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdLaTljYmlBZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxPaUJUY0dWalVHOXNhV041TGtSRlJrbE9SVjlQVGtORkxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSmJuWnZhMlZrSUhkb1pXNGdkR2hsSUdOdmJYQnZibVZ1ZENCcGN5QmhZbTkxZENCMGJ5QjFjR1JoZEdVZ1pIVmxJSFJ2SUdFZ2RISmhibk5wZEdsdmJpQm1jbTl0WEc0Z0lDQXFJR0IwYUdsekxuQnliM0J6WUN3Z1lIUm9hWE11YzNSaGRHVmdJR0Z1WkNCZ2RHaHBjeTVqYjI1MFpYaDBZQ0IwYnlCZ2JtVjRkRkJ5YjNCellDd2dZRzVsZUhSVGRHRjBaV0JjYmlBZ0lDb2dZVzVrSUdCdVpYaDBRMjl1ZEdWNGRHQXVYRzRnSUNBcVhHNGdJQ0FxSUZWelpTQjBhR2x6SUdGeklHRnVJRzl3Y0c5eWRIVnVhWFI1SUhSdklIQmxjbVp2Y20wZ2NISmxjR0Z5WVhScGIyNGdZbVZtYjNKbElHRnVJSFZ3WkdGMFpTQnZZMk4xY25NdVhHNGdJQ0FxWEc0Z0lDQXFJRTVQVkVVNklGbHZkU0FxS21OaGJtNXZkQ29xSUhWelpTQmdkR2hwY3k1elpYUlRkR0YwWlNncFlDQnBiaUIwYUdseklHMWxkR2h2WkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHNWxlSFJRY205d2MxeHVJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUc1bGVIUlRkR0YwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJRzVsZUhSRGIyNTBaWGgwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJuMGdkSEpoYm5OaFkzUnBiMjVjYmlBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBcUwxeHVJQ0JqYjIxd2IyNWxiblJYYVd4c1ZYQmtZWFJsT2lCVGNHVmpVRzlzYVdONUxrUkZSa2xPUlY5TlFVNVpMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkpiblp2YTJWa0lIZG9aVzRnZEdobElHTnZiWEJ2Ym1WdWRDZHpJRVJQVFNCeVpYQnlaWE5sYm5SaGRHbHZiaUJvWVhNZ1ltVmxiaUIxY0dSaGRHVmtMbHh1SUNBZ0tseHVJQ0FnS2lCVmMyVWdkR2hwY3lCaGN5QmhiaUJ2Y0hCdmNuUjFibWwwZVNCMGJ5QnZjR1Z5WVhSbElHOXVJSFJvWlNCRVQwMGdkMmhsYmlCMGFHVWdZMjl0Y0c5dVpXNTBJR2hoYzF4dUlDQWdLaUJpWldWdUlIVndaR0YwWldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQndjbVYyVUhKdmNITmNiaUFnSUNvZ1FIQmhjbUZ0SUhzL2IySnFaV04wZlNCd2NtVjJVM1JoZEdWY2JpQWdJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0J3Y21WMlEyOXVkR1Y0ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUhKdmIzUk9iMlJsSUVSUFRTQmxiR1Z0Wlc1MElISmxjSEpsYzJWdWRHbHVaeUIwYUdVZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2lCQWIzQjBhVzl1WVd4Y2JpQWdJQ292WEc0Z0lHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpUb2dVM0JsWTFCdmJHbGplUzVFUlVaSlRrVmZUVUZPV1N4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0IzYUdWdUlIUm9aU0JqYjIxd2IyNWxiblFnYVhNZ1lXSnZkWFFnZEc4Z1ltVWdjbVZ0YjNabFpDQm1jbTl0SUdsMGN5QndZWEpsYm5RZ1lXNWtJR2hoZG1WY2JpQWdJQ29nYVhSeklFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJpQmtaWE4wY205NVpXUXVYRzRnSUNBcVhHNGdJQ0FxSUZWelpTQjBhR2x6SUdGeklHRnVJRzl3Y0c5eWRIVnVhWFI1SUhSdklHUmxZV3hzYjJOaGRHVWdZVzU1SUdWNGRHVnlibUZzSUhKbGMyOTFjbU5sY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dUazlVUlRvZ1ZHaGxjbVVnYVhNZ2JtOGdZR052YlhCdmJtVnVkRVJwWkZWdWJXOTFiblJnSUhOcGJtTmxJSGx2ZFhJZ1kyOXRjRzl1Wlc1MElIZHBiR3dnYUdGMlpTQmlaV1Z1WEc0Z0lDQXFJR1JsYzNSeWIzbGxaQ0JpZVNCMGFHRjBJSEJ2YVc1MExseHVJQ0FnS2x4dUlDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDb3ZYRzRnSUdOdmJYQnZibVZ1ZEZkcGJHeFZibTF2ZFc1ME9pQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaTEZ4dVhHNGdJQzh2SUQwOVBUMGdRV1IyWVc1alpXUWdiV1YwYUc5a2N5QTlQVDA5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlZ3WkdGMFpYTWdkR2hsSUdOdmJYQnZibVZ1ZENkeklHTjFjbkpsYm5Sc2VTQnRiM1Z1ZEdWa0lFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJpNWNiaUFnSUNwY2JpQWdJQ29nUW5rZ1pHVm1ZWFZzZEN3Z2RHaHBjeUJwYlhCc1pXMWxiblJ6SUZKbFlXTjBKM01nY21WdVpHVnlhVzVuSUdGdVpDQnlaV052Ym1OcGJHbGhkR2x2YmlCaGJHZHZjbWwwYUcwdVhHNGdJQ0FxSUZOdmNHaHBjM1JwWTJGMFpXUWdZMnhwWlc1MGN5QnRZWGtnZDJsemFDQjBieUJ2ZG1WeWNtbGtaU0IwYUdsekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpQkFiM1psY25KcFpHRmliR1ZjYmlBZ0lDb3ZYRzRnSUhWd1pHRjBaVU52YlhCdmJtVnVkRG9nVTNCbFkxQnZiR2xqZVM1UFZrVlNVa2xFUlY5Q1FWTkZYRzVjYm4wN1hHNWNiaThxS2x4dUlDb2dUV0Z3Y0dsdVp5Qm1jbTl0SUdOc1lYTnpJSE53WldOcFptbGpZWFJwYjI0Z2EyVjVjeUIwYnlCemNHVmphV0ZzSUhCeWIyTmxjM05wYm1jZ1puVnVZM1JwYjI1ekxseHVJQ3BjYmlBcUlFRnNkR2h2ZFdkb0lIUm9aWE5sSUdGeVpTQmtaV05zWVhKbFpDQnNhV3RsSUdsdWMzUmhibU5sSUhCeWIzQmxjblJwWlhNZ2FXNGdkR2hsSUhOd1pXTnBabWxqWVhScGIyNWNiaUFxSUhkb1pXNGdaR1ZtYVc1cGJtY2dZMnhoYzNObGN5QjFjMmx1WnlCZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNOZ0xDQjBhR1Y1SUdGeVpTQmhZM1IxWVd4c2VTQnpkR0YwYVdOY2JpQXFJR0Z1WkNCaGNtVWdZV05qWlhOemFXSnNaU0J2YmlCMGFHVWdZMjl1YzNSeWRXTjBiM0lnYVc1emRHVmhaQ0J2WmlCMGFHVWdjSEp2ZEc5MGVYQmxMaUJFWlhOd2FYUmxYRzRnS2lCaVpXbHVaeUJ6ZEdGMGFXTXNJSFJvWlhrZ2JYVnpkQ0JpWlNCa1pXWnBibVZrSUc5MWRITnBaR1VnYjJZZ2RHaGxJRndpYzNSaGRHbGpjMXdpSUd0bGVTQjFibVJsY2x4dUlDb2dkMmhwWTJnZ1lXeHNJRzkwYUdWeUlITjBZWFJwWXlCdFpYUm9iMlJ6SUdGeVpTQmtaV1pwYm1Wa0xseHVJQ292WEc1MllYSWdVa1ZUUlZKV1JVUmZVMUJGUTE5TFJWbFRJRDBnZTF4dUlDQmthWE53YkdGNVRtRnRaVG9nWm5WdVkzUnBiMjRnS0VOdmJuTjBjblZqZEc5eUxDQmthWE53YkdGNVRtRnRaU2tnZTF4dUlDQWdJRU52Ym5OMGNuVmpkRzl5TG1ScGMzQnNZWGxPWVcxbElEMGdaR2x6Y0d4aGVVNWhiV1U3WEc0Z0lIMHNYRzRnSUcxcGVHbHVjem9nWm5WdVkzUnBiMjRnS0VOdmJuTjBjblZqZEc5eUxDQnRhWGhwYm5NcElIdGNiaUFnSUNCcFppQW9iV2w0YVc1ektTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJRzFwZUdsdWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCdGFYaFRjR1ZqU1c1MGIwTnZiWEJ2Ym1WdWRDaERiMjV6ZEhKMVkzUnZjaXdnYldsNGFXNXpXMmxkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdOb2FXeGtRMjl1ZEdWNGRGUjVjR1Z6T2lCbWRXNWpkR2x2YmlBb1EyOXVjM1J5ZFdOMGIzSXNJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpLU0I3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lIWmhiR2xrWVhSbFZIbHdaVVJsWmloRGIyNXpkSEoxWTNSdmNpd2dZMmhwYkdSRGIyNTBaWGgwVkhsd1pYTXNJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdVkyaHBiR1JEYjI1MFpYaDBLVHRjYmlBZ0lDQjlYRzRnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVZMmhwYkdSRGIyNTBaWGgwVkhsd1pYTWdQU0JoYzNOcFoyNG9lMzBzSUVOdmJuTjBjblZqZEc5eUxtTm9hV3hrUTI5dWRHVjRkRlI1Y0dWekxDQmphR2xzWkVOdmJuUmxlSFJVZVhCbGN5azdYRzRnSUgwc1hHNGdJR052Ym5SbGVIUlVlWEJsY3pvZ1puVnVZM1JwYjI0Z0tFTnZibk4wY25WamRHOXlMQ0JqYjI1MFpYaDBWSGx3WlhNcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZG1Gc2FXUmhkR1ZVZVhCbFJHVm1LRU52Ym5OMGNuVmpkRzl5TENCamIyNTBaWGgwVkhsd1pYTXNJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NdVkyOXVkR1Y0ZENrN1hHNGdJQ0FnZlZ4dUlDQWdJRU52Ym5OMGNuVmpkRzl5TG1OdmJuUmxlSFJVZVhCbGN5QTlJR0Z6YzJsbmJpaDdmU3dnUTI5dWMzUnlkV04wYjNJdVkyOXVkR1Y0ZEZSNWNHVnpMQ0JqYjI1MFpYaDBWSGx3WlhNcE8xeHVJQ0I5TEZ4dUlDQXZLaXBjYmlBZ0lDb2dVM0JsWTJsaGJDQmpZWE5sSUdkbGRFUmxabUYxYkhSUWNtOXdjeUIzYUdsamFDQnphRzkxYkdRZ2JXOTJaU0JwYm5SdklITjBZWFJwWTNNZ1luVjBJSEpsY1hWcGNtVnpYRzRnSUNBcUlHRjFkRzl0WVhScFl5QnRaWEpuYVc1bkxseHVJQ0FnS2k5Y2JpQWdaMlYwUkdWbVlYVnNkRkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9RMjl1YzNSeWRXTjBiM0lzSUdkbGRFUmxabUYxYkhSUWNtOXdjeWtnZTF4dUlDQWdJR2xtSUNoRGIyNXpkSEoxWTNSdmNpNW5aWFJFWldaaGRXeDBVSEp2Y0hNcElIdGNiaUFnSUNBZ0lFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5QTlJR055WldGMFpVMWxjbWRsWkZKbGMzVnNkRVoxYm1OMGFXOXVLRU52Ym5OMGNuVmpkRzl5TG1kbGRFUmxabUYxYkhSUWNtOXdjeXdnWjJWMFJHVm1ZWFZzZEZCeWIzQnpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVaMlYwUkdWbVlYVnNkRkJ5YjNCeklEMGdaMlYwUkdWbVlYVnNkRkJ5YjNCek8xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2NISnZjRlI1Y0dWek9pQm1kVzVqZEdsdmJpQW9RMjl1YzNSeWRXTjBiM0lzSUhCeWIzQlVlWEJsY3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IyWVd4cFpHRjBaVlI1Y0dWRVpXWW9RMjl1YzNSeWRXTjBiM0lzSUhCeWIzQlVlWEJsY3l3Z1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVjeTV3Y205d0tUdGNiaUFnSUNCOVhHNGdJQ0FnUTI5dWMzUnlkV04wYjNJdWNISnZjRlI1Y0dWeklEMGdZWE56YVdkdUtIdDlMQ0JEYjI1emRISjFZM1J2Y2k1d2NtOXdWSGx3WlhNc0lIQnliM0JVZVhCbGN5azdYRzRnSUgwc1hHNGdJSE4wWVhScFkzTTZJR1oxYm1OMGFXOXVJQ2hEYjI1emRISjFZM1J2Y2l3Z2MzUmhkR2xqY3lrZ2UxeHVJQ0FnSUcxcGVGTjBZWFJwWTFOd1pXTkpiblJ2UTI5dGNHOXVaVzUwS0VOdmJuTjBjblZqZEc5eUxDQnpkR0YwYVdOektUdGNiaUFnZlN4Y2JpQWdZWFYwYjJKcGJtUTZJR1oxYm1OMGFXOXVJQ2dwSUh0OUlIMDdYRzVjYmk4dklHNXZiM0JjYm1aMWJtTjBhVzl1SUhaaGJHbGtZWFJsVkhsd1pVUmxaaWhEYjI1emRISjFZM1J2Y2l3Z2RIbHdaVVJsWml3Z2JHOWpZWFJwYjI0cElIdGNiaUFnWm05eUlDaDJZWElnY0hKdmNFNWhiV1VnYVc0Z2RIbHdaVVJsWmlrZ2UxeHVJQ0FnSUdsbUlDaDBlWEJsUkdWbUxtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0x5OGdkWE5sSUdFZ2QyRnlibWx1WnlCcGJuTjBaV0ZrSUc5bUlHRnVJR2x1ZG1GeWFXRnVkQ0J6YnlCamIyMXdiMjVsYm5SelhHNGdJQ0FnSUNBdkx5QmtiMjRuZENCemFHOTNJSFZ3SUdsdUlIQnliMlFnWW5WMElHNXZkQ0JwYmlCZlgwUkZWbDlmWEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGVYQmxiMllnZEhsd1pVUmxabHR3Y205d1RtRnRaVjBnUFQwOUlDZG1kVzVqZEdsdmJpY3NJQ2NsY3pvZ0pYTWdkSGx3WlNCZ0pYTmdJR2x6SUdsdWRtRnNhV1E3SUdsMElHMTFjM1FnWW1VZ1lTQm1kVzVqZEdsdmJpd2dkWE4xWVd4c2VTQm1jbTl0SUNjZ0t5QW5VbVZoWTNRdVVISnZjRlI1Y0dWekxpY3NJRU52Ym5OMGNuVmpkRzl5TG1ScGMzQnNZWGxPWVcxbElIeDhJQ2RTWldGamRFTnNZWE56Snl3Z1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhOYmJHOWpZWFJwYjI1ZExDQndjbTl3VG1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUhaaGJHbGtZWFJsVFdWMGFHOWtUM1psY25KcFpHVW9jSEp2ZEc4c0lHNWhiV1VwSUh0Y2JpQWdkbUZ5SUhOd1pXTlFiMnhwWTNrZ1BTQlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwSUQ4Z1VtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpWdHVZVzFsWFNBNklHNTFiR3c3WEc1Y2JpQWdMeThnUkdsellXeHNiM2NnYjNabGNuSnBaR2x1WnlCdlppQmlZWE5sSUdOc1lYTnpJRzFsZEdodlpITWdkVzVzWlhOeklHVjRjR3hwWTJsMGJIa2dZV3hzYjNkbFpDNWNiaUFnYVdZZ0tGSmxZV04wUTJ4aGMzTk5hWGhwYmk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDRW9jM0JsWTFCdmJHbGplU0E5UFQwZ1UzQmxZMUJ2YkdsamVTNVBWa1ZTVWtsRVJWOUNRVk5GS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sT2lCWmIzVWdZWEpsSUdGMGRHVnRjSFJwYm1jZ2RHOGdiM1psY25KcFpHVWdKeUFySUNkZ0pYTmdJR1p5YjIwZ2VXOTFjaUJqYkdGemN5QnpjR1ZqYVdacFkyRjBhVzl1TGlCRmJuTjFjbVVnZEdoaGRDQjViM1Z5SUcxbGRHaHZaQ0J1WVcxbGN5QW5JQ3NnSjJSdklHNXZkQ0J2ZG1WeWJHRndJSGRwZEdnZ1VtVmhZM1FnYldWMGFHOWtjeTRuTENCdVlXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmx4dUlDQXZMeUJFYVhOaGJHeHZkeUJrWldacGJtbHVaeUJ0WlhSb2IyUnpJRzF2Y21VZ2RHaGhiaUJ2Ym1ObElIVnViR1Z6Y3lCbGVIQnNhV05wZEd4NUlHRnNiRzkzWldRdVhHNGdJR2xtSUNod2NtOTBieTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNFb2MzQmxZMUJ2YkdsamVTQTlQVDBnVTNCbFkxQnZiR2xqZVM1RVJVWkpUa1ZmVFVGT1dTQjhmQ0J6Y0dWalVHOXNhV041SUQwOVBTQlRjR1ZqVUc5c2FXTjVMa1JGUmtsT1JWOU5RVTVaWDAxRlVrZEZSQ2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5VbVZoWTNSRGJHRnpjMGx1ZEdWeVptRmpaVG9nV1c5MUlHRnlaU0JoZEhSbGJYQjBhVzVuSUhSdklHUmxabWx1WlNBbklDc2dKMkFsYzJBZ2IyNGdlVzkxY2lCamIyMXdiMjVsYm5RZ2JXOXlaU0IwYUdGdUlHOXVZMlV1SUZSb2FYTWdZMjl1Wm14cFkzUWdiV0Y1SUdKbElHUjFaU0FuSUNzZ0ozUnZJR0VnYldsNGFXNHVKeXdnYm1GdFpTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RXbDRhVzRnYUdWc2NHVnlJSGRvYVdOb0lHaGhibVJzWlhNZ2NHOXNhV041SUhaaGJHbGtZWFJwYjI0Z1lXNWtJSEpsYzJWeWRtVmtYRzRnS2lCemNHVmphV1pwWTJGMGFXOXVJR3RsZVhNZ2QyaGxiaUJpZFdsc1pHbHVaeUJTWldGamRDQmpiR0Z6YzNObGN5NWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2JXbDRVM0JsWTBsdWRHOURiMjF3YjI1bGJuUW9RMjl1YzNSeWRXTjBiM0lzSUhOd1pXTXBJSHRjYmlBZ2FXWWdLQ0Z6Y0dWaktTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzVjYmlBZ0lTaDBlWEJsYjJZZ2MzQmxZeUFoUFQwZ0oyWjFibU4wYVc5dUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JEYkdGemN6b2dXVzkxWEZ3bmNtVWdZWFIwWlcxd2RHbHVaeUIwYnlBbklDc2dKM1Z6WlNCaElHTnZiWEJ2Ym1WdWRDQmpiR0Z6Y3lCaGN5QmhJRzFwZUdsdUxpQkpibk4wWldGa0xDQnFkWE4wSUhWelpTQmhJSEpsWjNWc1lYSWdiMkpxWldOMExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJU0ZTWldGamRFVnNaVzFsYm5RdWFYTldZV3hwWkVWc1pXMWxiblFvYzNCbFl5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JEYkdGemN6b2dXVzkxWEZ3bmNtVWdZWFIwWlcxd2RHbHVaeUIwYnlBbklDc2dKM1Z6WlNCaElHTnZiWEJ2Ym1WdWRDQmhjeUJoSUcxcGVHbHVMaUJKYm5OMFpXRmtMQ0JxZFhOMElIVnpaU0JoSUhKbFozVnNZWElnYjJKcVpXTjBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNCMllYSWdjSEp2ZEc4Z1BTQkRiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1U3WEc1Y2JpQWdMeThnUW5rZ2FHRnVaR3hwYm1jZ2JXbDRhVzV6SUdKbFptOXlaU0JoYm5rZ2IzUm9aWElnY0hKdmNHVnlkR2xsY3l3Z2QyVWdaVzV6ZFhKbElIUm9aU0J6WVcxbFhHNGdJQzh2SUdOb1lXbHVhVzVuSUc5eVpHVnlJR2x6SUdGd2NHeHBaV1FnZEc4Z2JXVjBhRzlrY3lCM2FYUm9JRVJGUmtsT1JWOU5RVTVaSUhCdmJHbGplU3dnZDJobGRHaGxjbHh1SUNBdkx5QnRhWGhwYm5NZ1lYSmxJR3hwYzNSbFpDQmlaV1p2Y21VZ2IzSWdZV1owWlhJZ2RHaGxjMlVnYldWMGFHOWtjeUJwYmlCMGFHVWdjM0JsWXk1Y2JpQWdhV1lnS0hOd1pXTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb1RVbFlTVTVUWDB0RldTa3BJSHRjYmlBZ0lDQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTXViV2w0YVc1ektFTnZibk4wY25WamRHOXlMQ0J6Y0dWakxtMXBlR2x1Y3lrN1hHNGdJSDFjYmx4dUlDQm1iM0lnS0haaGNpQnVZVzFsSUdsdUlITndaV01wSUh0Y2JpQWdJQ0JwWmlBb0lYTndaV011YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHVZVzFsSUQwOVBTQk5TVmhKVGxOZlMwVlpLU0I3WEc0Z0lDQWdJQ0F2THlCWFpTQm9ZWFpsSUdGc2NtVmhaSGtnYUdGdVpHeGxaQ0J0YVhocGJuTWdhVzRnWVNCemNHVmphV0ZzSUdOaGMyVWdZV0p2ZG1VdVhHNGdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2NISnZjR1Z5ZEhrZ1BTQnpjR1ZqVzI1aGJXVmRPMXh1SUNBZ0lIWmhiR2xrWVhSbFRXVjBhRzlrVDNabGNuSnBaR1VvY0hKdmRHOHNJRzVoYldVcE8xeHVYRzRnSUNBZ2FXWWdLRkpGVTBWU1ZrVkVYMU5RUlVOZlMwVlpVeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHVZVzFsS1NrZ2UxeHVJQ0FnSUNBZ1VrVlRSVkpXUlVSZlUxQkZRMTlMUlZsVFcyNWhiV1ZkS0VOdmJuTjBjblZqZEc5eUxDQndjbTl3WlhKMGVTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUM4dklGTmxkSFZ3SUcxbGRHaHZaSE1nYjI0Z2NISnZkRzkwZVhCbE9seHVJQ0FnSUNBZ0x5OGdWR2hsSUdadmJHeHZkMmx1WnlCdFpXMWlaWElnYldWMGFHOWtjeUJ6YUc5MWJHUWdibTkwSUdKbElHRjFkRzl0WVhScFkyRnNiSGtnWW05MWJtUTZYRzRnSUNBZ0lDQXZMeUF4TGlCRmVIQmxZM1JsWkNCU1pXRmpkRU5zWVhOeklHMWxkR2h2WkhNZ0tHbHVJSFJvWlNCY0ltbHVkR1Z5Wm1GalpWd2lLUzVjYmlBZ0lDQWdJQzh2SURJdUlFOTJaWEp5YVdSa1pXNGdiV1YwYUc5a2N5QW9kR2hoZENCM1pYSmxJRzFwZUdWa0lHbHVLUzVjYmlBZ0lDQWdJSFpoY2lCcGMxSmxZV04wUTJ4aGMzTk5aWFJvYjJRZ1BTQlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxMbWhoYzA5M2JsQnliM0JsY25SNUtHNWhiV1VwTzF4dUlDQWdJQ0FnZG1GeUlHbHpRV3h5WldGa2VVUmxabWx1WldRZ1BTQndjbTkwYnk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtUdGNiaUFnSUNBZ0lIWmhjaUJwYzBaMWJtTjBhVzl1SUQwZ2RIbHdaVzltSUhCeWIzQmxjblI1SUQwOVBTQW5ablZ1WTNScGIyNG5PMXh1SUNBZ0lDQWdkbUZ5SUhOb2IzVnNaRUYxZEc5Q2FXNWtJRDBnYVhOR2RXNWpkR2x2YmlBbUppQWhhWE5TWldGamRFTnNZWE56VFdWMGFHOWtJQ1ltSUNGcGMwRnNjbVZoWkhsRVpXWnBibVZrSUNZbUlITndaV011WVhWMGIySnBibVFnSVQwOUlHWmhiSE5sTzF4dVhHNGdJQ0FnSUNCcFppQW9jMmh2ZFd4a1FYVjBiMEpwYm1RcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGd2NtOTBieTVmWDNKbFlXTjBRWFYwYjBKcGJtUk5ZWEFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQndjbTkwYnk1ZlgzSmxZV04wUVhWMGIwSnBibVJOWVhBZ1BTQjdmVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCd2NtOTBieTVmWDNKbFlXTjBRWFYwYjBKcGJtUk5ZWEJiYm1GdFpWMGdQU0J3Y205d1pYSjBlVHRjYmlBZ0lDQWdJQ0FnY0hKdmRHOWJibUZ0WlYwZ1BTQndjbTl3WlhKMGVUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBGc2NtVmhaSGxFWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJSE53WldOUWIyeHBZM2tnUFNCU1pXRmpkRU5zWVhOelNXNTBaWEptWVdObFcyNWhiV1ZkTzF4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnVkdobGMyVWdZMkZ6WlhNZ2MyaHZkV3hrSUdGc2NtVmhaSGtnWW1VZ1kyRjFaMmgwSUdKNUlIWmhiR2xrWVhSbFRXVjBhRzlrVDNabGNuSnBaR1V1WEc0Z0lDQWdJQ0FnSUNBZ0lTaHBjMUpsWVdOMFEyeGhjM05OWlhSb2IyUWdKaVlnS0hOd1pXTlFiMnhwWTNrZ1BUMDlJRk53WldOUWIyeHBZM2t1UkVWR1NVNUZYMDFCVGxsZlRVVlNSMFZFSUh4OElITndaV05RYjJ4cFkza2dQVDA5SUZOd1pXTlFiMnhwWTNrdVJFVkdTVTVGWDAxQlRsa3BLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFNaV0ZqZEVOc1lYTnpPaUJWYm1WNGNHVmpkR1ZrSUhOd1pXTWdjRzlzYVdONUlDVnpJR1p2Y2lCclpYa2dKWE1nSnlBcklDZDNhR1Z1SUcxcGVHbHVaeUJwYmlCamIyMXdiMjVsYm5RZ2MzQmxZM011Snl3Z2MzQmxZMUJ2YkdsamVTd2dibUZ0WlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdSbTl5SUcxbGRHaHZaSE1nZDJocFkyZ2dZWEpsSUdSbFptbHVaV1FnYlc5eVpTQjBhR0Z1SUc5dVkyVXNJR05oYkd3Z2RHaGxJR1Y0YVhOMGFXNW5YRzRnSUNBZ0lDQWdJQ0FnTHk4Z2JXVjBhRzlrY3lCaVpXWnZjbVVnWTJGc2JHbHVaeUIwYUdVZ2JtVjNJSEJ5YjNCbGNuUjVMQ0J0WlhKbmFXNW5JR2xtSUdGd2NISnZjSEpwWVhSbExseHVJQ0FnSUNBZ0lDQWdJR2xtSUNoemNHVmpVRzlzYVdONUlEMDlQU0JUY0dWalVHOXNhV041TGtSRlJrbE9SVjlOUVU1WlgwMUZVa2RGUkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmRHOWJibUZ0WlYwZ1BTQmpjbVZoZEdWTlpYSm5aV1JTWlhOMWJIUkdkVzVqZEdsdmJpaHdjbTkwYjF0dVlXMWxYU3dnY0hKdmNHVnlkSGtwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jM0JsWTFCdmJHbGplU0E5UFQwZ1UzQmxZMUJ2YkdsamVTNUVSVVpKVGtWZlRVRk9XU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjSEp2ZEc5YmJtRnRaVjBnUFNCamNtVmhkR1ZEYUdGcGJtVmtSblZ1WTNScGIyNG9jSEp2ZEc5YmJtRnRaVjBzSUhCeWIzQmxjblI1S1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnY0hKdmRHOWJibUZ0WlYwZ1BTQndjbTl3WlhKMGVUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdRV1JrSUhabGNtSnZjMlVnWkdsemNHeGhlVTVoYldVZ2RHOGdkR2hsSUdaMWJtTjBhVzl1TENCM2FHbGphQ0JvWld4d2N5QjNhR1Z1SUd4dmIydHBibWRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR0YwSUhCeWIyWnBiR2x1WnlCMGIyOXNjeTVjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdjSEp2Y0dWeWRIa2dQVDA5SUNkbWRXNWpkR2x2YmljZ0ppWWdjM0JsWXk1a2FYTndiR0Y1VG1GdFpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbTkwYjF0dVlXMWxYUzVrYVhOd2JHRjVUbUZ0WlNBOUlITndaV011WkdsemNHeGhlVTVoYldVZ0t5QW5YeWNnS3lCdVlXMWxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCdGFYaFRkR0YwYVdOVGNHVmpTVzUwYjBOdmJYQnZibVZ1ZENoRGIyNXpkSEoxWTNSdmNpd2djM1JoZEdsamN5a2dlMXh1SUNCcFppQW9JWE4wWVhScFkzTXBJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ1ptOXlJQ2gyWVhJZ2JtRnRaU0JwYmlCemRHRjBhV056S1NCN1hHNGdJQ0FnZG1GeUlIQnliM0JsY25SNUlEMGdjM1JoZEdsamMxdHVZVzFsWFR0Y2JpQWdJQ0JwWmlBb0lYTjBZWFJwWTNNdWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa3BJSHRjYmlBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJwYzFKbGMyVnlkbVZrSUQwZ0tHNWhiV1VnYVc0Z1VrVlRSVkpXUlVSZlUxQkZRMTlMUlZsVEtUdGNiaUFnSUNBaElXbHpVbVZ6WlhKMlpXUWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JEYkdGemN6b2dXVzkxSUdGeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUdSbFptbHVaU0JoSUhKbGMyVnlkbVZrSUNjZ0t5QW5jSEp2Y0dWeWRIa3NJR0FsYzJBc0lIUm9ZWFFnYzJodmRXeGtibHhjSjNRZ1ltVWdiMjRnZEdobElGd2ljM1JoZEdsamMxd2lJR3RsZVM0Z1JHVm1hVzVsSUdsMElDY2dLeUFuWVhNZ1lXNGdhVzV6ZEdGdVkyVWdjSEp2Y0dWeWRIa2dhVzV6ZEdWaFpEc2dhWFFnZDJsc2JDQnpkR2xzYkNCaVpTQmhZMk5sYzNOcFlteGxJRzl1SUhSb1pTQW5JQ3NnSjJOdmJuTjBjblZqZEc5eUxpY3NJRzVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSFpoY2lCcGMwbHVhR1Z5YVhSbFpDQTlJQ2h1WVcxbElHbHVJRU52Ym5OMGNuVmpkRzl5S1R0Y2JpQWdJQ0FoSVdselNXNW9aWEpwZEdWa0lEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBRMnhoYzNNNklGbHZkU0JoY21VZ1lYUjBaVzF3ZEdsdVp5QjBieUJrWldacGJtVWdKeUFySUNkZ0pYTmdJRzl1SUhsdmRYSWdZMjl0Y0c5dVpXNTBJRzF2Y21VZ2RHaGhiaUJ2Ym1ObExpQlVhR2x6SUdOdmJtWnNhV04wSUcxaGVTQmlaU0FuSUNzZ0oyUjFaU0IwYnlCaElHMXBlR2x1TGljc0lHNWhiV1VwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCRGIyNXpkSEoxWTNSdmNsdHVZVzFsWFNBOUlIQnliM0JsY25SNU8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dUV1Z5WjJVZ2RIZHZJRzlpYW1WamRITXNJR0oxZENCMGFISnZkeUJwWmlCaWIzUm9JR052Ym5SaGFXNGdkR2hsSUhOaGJXVWdhMlY1TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J2Ym1VZ1ZHaGxJR1pwY25OMElHOWlhbVZqZEN3Z2QyaHBZMmdnYVhNZ2JYVjBZWFJsWkM1Y2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQjBkMjhnVkdobElITmxZMjl1WkNCdlltcGxZM1JjYmlBcUlFQnlaWFIxY200Z2UyOWlhbVZqZEgwZ2IyNWxJR0ZtZEdWeUlHbDBJR2hoY3lCaVpXVnVJRzExZEdGMFpXUWdkRzhnWTI5dWRHRnBiaUJsZG1WeWVYUm9hVzVuSUdsdUlIUjNieTVjYmlBcUwxeHVablZ1WTNScGIyNGdiV1Z5WjJWSmJuUnZWMmwwYUU1dlJIVndiR2xqWVhSbFMyVjVjeWh2Ym1Vc0lIUjNieWtnZTF4dUlDQWhLRzl1WlNBbUppQjBkMjhnSmlZZ2RIbHdaVzltSUc5dVpTQTlQVDBnSjI5aWFtVmpkQ2NnSmlZZ2RIbHdaVzltSUhSM2J5QTlQVDBnSjI5aWFtVmpkQ2NwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMjFsY21kbFNXNTBiMWRwZEdoT2IwUjFjR3hwWTJGMFpVdGxlWE1vS1RvZ1EyRnVibTkwSUcxbGNtZGxJRzV2YmkxdlltcGxZM1J6TGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQm1iM0lnS0haaGNpQnJaWGtnYVc0Z2RIZHZLU0I3WEc0Z0lDQWdhV1lnS0hSM2J5NW9ZWE5QZDI1UWNtOXdaWEowZVNoclpYa3BLU0I3WEc0Z0lDQWdJQ0FoS0c5dVpWdHJaWGxkSUQwOVBTQjFibVJsWm1sdVpXUXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyMWxjbWRsU1c1MGIxZHBkR2hPYjBSMWNHeHBZMkYwWlV0bGVYTW9LVG9nSnlBcklDZFVjbWxsWkNCMGJ5QnRaWEpuWlNCMGQyOGdiMkpxWldOMGN5QjNhWFJvSUhSb1pTQnpZVzFsSUd0bGVUb2dZQ1Z6WUM0Z1ZHaHBjeUJqYjI1bWJHbGpkQ0FuSUNzZ0oyMWhlU0JpWlNCa2RXVWdkRzhnWVNCdGFYaHBianNnYVc0Z2NHRnlkR2xqZFd4aGNpd2dkR2hwY3lCdFlYa2dZbVVnWTJGMWMyVmtJR0o1SUhSM2J5QW5JQ3NnSjJkbGRFbHVhWFJwWVd4VGRHRjBaU2dwSUc5eUlHZGxkRVJsWm1GMWJIUlFjbTl3Y3lncElHMWxkR2h2WkhNZ2NtVjBkWEp1YVc1bklHOWlhbVZqZEhNZ0p5QXJJQ2QzYVhSb0lHTnNZWE5vYVc1bklHdGxlWE11Snl3Z2EyVjVLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCdmJtVmJhMlY1WFNBOUlIUjNiMXRyWlhsZE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnYjI1bE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCbWRXNWpkR2x2YmlCMGFHRjBJR2x1ZG05clpYTWdkSGR2SUdaMWJtTjBhVzl1Y3lCaGJtUWdiV1Z5WjJWeklIUm9aV2x5SUhKbGRIVnliaUIyWVd4MVpYTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdiMjVsSUVaMWJtTjBhVzl1SUhSdklHbHVkbTlyWlNCbWFYSnpkQzVjYmlBcUlFQndZWEpoYlNCN1puVnVZM1JwYjI1OUlIUjNieUJHZFc1amRHbHZiaUIwYnlCcGJuWnZhMlVnYzJWamIyNWtMbHh1SUNvZ1FISmxkSFZ5YmlCN1puVnVZM1JwYjI1OUlFWjFibU4wYVc5dUlIUm9ZWFFnYVc1MmIydGxjeUIwYUdVZ2RIZHZJR0Z5WjNWdFpXNTBJR1oxYm1OMGFXOXVjeTVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOeVpXRjBaVTFsY21kbFpGSmxjM1ZzZEVaMWJtTjBhVzl1S0c5dVpTd2dkSGR2S1NCN1hHNGdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpQnRaWEpuWldSU1pYTjFiSFFvS1NCN1hHNGdJQ0FnZG1GeUlHRWdQU0J2Ym1VdVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQjJZWElnWWlBOUlIUjNieTVoY0hCc2VTaDBhR2x6TENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUdsbUlDaGhJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmlPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9ZaUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJR01nUFNCN2ZUdGNiaUFnSUNCdFpYSm5aVWx1ZEc5WGFYUm9UbTlFZFhCc2FXTmhkR1ZMWlhsektHTXNJR0VwTzF4dUlDQWdJRzFsY21kbFNXNTBiMWRwZEdoT2IwUjFjR3hwWTJGMFpVdGxlWE1vWXl3Z1lpazdYRzRnSUNBZ2NtVjBkWEp1SUdNN1hHNGdJSDA3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1oxYm1OMGFXOXVJSFJvWVhRZ2FXNTJiMnRsY3lCMGQyOGdablZ1WTNScGIyNXpJR0Z1WkNCcFoyNXZjbVZ6SUhSb1pXbHlJSEpsZEhWeWJpQjJZV3hsY3k1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCdmJtVWdSblZ1WTNScGIyNGdkRzhnYVc1MmIydGxJR1pwY25OMExseHVJQ29nUUhCaGNtRnRJSHRtZFc1amRHbHZibjBnZEhkdklFWjFibU4wYVc5dUlIUnZJR2x1ZG05clpTQnpaV052Ym1RdVhHNGdLaUJBY21WMGRYSnVJSHRtZFc1amRHbHZibjBnUm5WdVkzUnBiMjRnZEdoaGRDQnBiblp2YTJWeklIUm9aU0IwZDI4Z1lYSm5kVzFsYm5RZ1puVnVZM1JwYjI1ekxseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdZM0psWVhSbFEyaGhhVzVsWkVaMWJtTjBhVzl1S0c5dVpTd2dkSGR2S1NCN1hHNGdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpQmphR0ZwYm1Wa1JuVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2IyNWxMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnZEhkdkxtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lIMDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FtbHVaSE1nWVNCdFpYUm9iMlFnZEc4Z2RHaGxJR052YlhCdmJtVnVkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdZMjl0Y0c5dVpXNTBJRU52YlhCdmJtVnVkQ0IzYUc5elpTQnRaWFJvYjJRZ2FYTWdaMjlwYm1jZ2RHOGdZbVVnWW05MWJtUXVYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCdFpYUm9iMlFnVFdWMGFHOWtJSFJ2SUdKbElHSnZkVzVrTGx4dUlDb2dRSEpsZEhWeWJpQjdablZ1WTNScGIyNTlJRlJvWlNCaWIzVnVaQ0J0WlhSb2IyUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHSnBibVJCZFhSdlFtbHVaRTFsZEdodlpDaGpiMjF3YjI1bGJuUXNJRzFsZEdodlpDa2dlMXh1SUNCMllYSWdZbTkxYm1STlpYUm9iMlFnUFNCdFpYUm9iMlF1WW1sdVpDaGpiMjF3YjI1bGJuUXBPMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJR0p2ZFc1a1RXVjBhRzlrTGw5ZmNtVmhZM1JDYjNWdVpFTnZiblJsZUhRZ1BTQmpiMjF3YjI1bGJuUTdYRzRnSUNBZ1ltOTFibVJOWlhSb2IyUXVYMTl5WldGamRFSnZkVzVrVFdWMGFHOWtJRDBnYldWMGFHOWtPMXh1SUNBZ0lHSnZkVzVrVFdWMGFHOWtMbDlmY21WaFkzUkNiM1Z1WkVGeVozVnRaVzUwY3lBOUlHNTFiR3c3WEc0Z0lDQWdkbUZ5SUdOdmJYQnZibVZ1ZEU1aGJXVWdQU0JqYjIxd2IyNWxiblF1WTI5dWMzUnlkV04wYjNJdVpHbHpjR3hoZVU1aGJXVTdYRzRnSUNBZ2RtRnlJRjlpYVc1a0lEMGdZbTkxYm1STlpYUm9iMlF1WW1sdVpEdGNiaUFnSUNBdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCaWJHOWpheTF6WTI5d1pXUXRkbUZ5TENCdWJ5MTFibVJsWmlBcUwxeHVJQ0FnSUdKdmRXNWtUV1YwYUc5a0xtSnBibVFnUFNCbWRXNWpkR2x2YmlBb2JtVjNWR2hwY3lrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ1gyeGxiaUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dzSUdGeVozTWdQU0JCY25KaGVTaGZiR1Z1SUQ0Z01TQS9JRjlzWlc0Z0xTQXhJRG9nTUNrc0lGOXJaWGtnUFNBeE95QmZhMlY1SUR3Z1gyeGxianNnWDJ0bGVTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdGeVozTmJYMnRsZVNBdElERmRJRDBnWVhKbmRXMWxiblJ6VzE5clpYbGRPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0F2THlCVmMyVnlJR2x6SUhSeWVXbHVaeUIwYnlCaWFXNWtLQ2tnWVc0Z1lYVjBiMkp2ZFc1a0lHMWxkR2h2WkRzZ2QyVWdaV1ptWldOMGFYWmxiSGtnZDJsc2JGeHVJQ0FnSUNBZ0x5OGdhV2R1YjNKbElIUm9aU0IyWVd4MVpTQnZaaUJjSW5Sb2FYTmNJaUIwYUdGMElIUm9aU0IxYzJWeUlHbHpJSFJ5ZVdsdVp5QjBieUIxYzJVc0lITnZYRzRnSUNBZ0lDQXZMeUJzWlhRbmN5QjNZWEp1TGx4dUlDQWdJQ0FnYVdZZ0tHNWxkMVJvYVhNZ0lUMDlJR052YlhCdmJtVnVkQ0FtSmlCdVpYZFVhR2x6SUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5ZbWx1WkNncE9pQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2JXVjBhRzlrY3lCdFlYa2diMjVzZVNCaVpTQmliM1Z1WkNCMGJ5QjBhR1VnSnlBcklDZGpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVXVJRk5sWlNBbGN5Y3NJR052YlhCdmJtVnVkRTVoYldVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2doWVhKbmN5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RpYVc1a0tDazZJRmx2ZFNCaGNtVWdZbWx1WkdsdVp5QmhJR052YlhCdmJtVnVkQ0J0WlhSb2IyUWdkRzhnZEdobElHTnZiWEJ2Ym1WdWRDNGdKeUFySUNkU1pXRmpkQ0JrYjJWeklIUm9hWE1nWm05eUlIbHZkU0JoZFhSdmJXRjBhV05oYkd4NUlHbHVJR0VnYUdsbmFDMXdaWEptYjNKdFlXNWpaU0FuSUNzZ0ozZGhlU3dnYzI4Z2VXOTFJR05oYmlCellXWmxiSGtnY21WdGIzWmxJSFJvYVhNZ1kyRnNiQzRnVTJWbElDVnpKeXdnWTI5dGNHOXVaVzUwVG1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJpYjNWdVpFMWxkR2h2WkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQnlaV0p2ZFc1a1RXVjBhRzlrSUQwZ1gySnBibVF1WVhCd2JIa29ZbTkxYm1STlpYUm9iMlFzSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnSUNCeVpXSnZkVzVrVFdWMGFHOWtMbDlmY21WaFkzUkNiM1Z1WkVOdmJuUmxlSFFnUFNCamIyMXdiMjVsYm5RN1hHNGdJQ0FnSUNCeVpXSnZkVzVrVFdWMGFHOWtMbDlmY21WaFkzUkNiM1Z1WkUxbGRHaHZaQ0E5SUcxbGRHaHZaRHRjYmlBZ0lDQWdJSEpsWW05MWJtUk5aWFJvYjJRdVgxOXlaV0ZqZEVKdmRXNWtRWEpuZFcxbGJuUnpJRDBnWVhKbmN6dGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpXSnZkVzVrVFdWMGFHOWtPMXh1SUNBZ0lDQWdMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQXFMMXh1SUNBZ0lIMDdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHSnZkVzVrVFdWMGFHOWtPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFSnBibVJ6SUdGc2JDQmhkWFJ2TFdKdmRXNWtJRzFsZEdodlpITWdhVzRnWVNCamIyMXdiMjVsYm5RdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJYQnZibVZ1ZENCRGIyMXdiMjVsYm5RZ2QyaHZjMlVnYldWMGFHOWtJR2x6SUdkdmFXNW5JSFJ2SUdKbElHSnZkVzVrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJpYVc1a1FYVjBiMEpwYm1STlpYUm9iMlJ6S0dOdmJYQnZibVZ1ZENrZ2UxeHVJQ0JtYjNJZ0tIWmhjaUJoZFhSdlFtbHVaRXRsZVNCcGJpQmpiMjF3YjI1bGJuUXVYMTl5WldGamRFRjFkRzlDYVc1a1RXRndLU0I3WEc0Z0lDQWdhV1lnS0dOdmJYQnZibVZ1ZEM1ZlgzSmxZV04wUVhWMGIwSnBibVJOWVhBdWFHRnpUM2R1VUhKdmNHVnlkSGtvWVhWMGIwSnBibVJMWlhrcEtTQjdYRzRnSUNBZ0lDQjJZWElnYldWMGFHOWtJRDBnWTI5dGNHOXVaVzUwTGw5ZmNtVmhZM1JCZFhSdlFtbHVaRTFoY0Z0aGRYUnZRbWx1WkV0bGVWMDdYRzRnSUNBZ0lDQmpiMjF3YjI1bGJuUmJZWFYwYjBKcGJtUkxaWGxkSUQwZ1ltbHVaRUYxZEc5Q2FXNWtUV1YwYUc5a0tHTnZiWEJ2Ym1WdWRDd2diV1YwYUc5a0tUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkJaR1FnYlc5eVpTQjBieUIwYUdVZ1VtVmhZM1JEYkdGemN5QmlZWE5sSUdOc1lYTnpMaUJVYUdWelpTQmhjbVVnWVd4c0lHeGxaMkZqZVNCbVpXRjBkWEpsY3lCaGJtUmNiaUFxSUhSb1pYSmxabTl5WlNCdWIzUWdZV3h5WldGa2VTQndZWEowSUc5bUlIUm9aU0J0YjJSbGNtNGdVbVZoWTNSRGIyMXdiMjVsYm5RdVhHNGdLaTljYm5aaGNpQlNaV0ZqZEVOc1lYTnpUV2w0YVc0Z1BTQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUlBSRTg2SUZSb2FYTWdkMmxzYkNCaVpTQmtaWEJ5WldOaGRHVmtJR0psWTJGMWMyVWdjM1JoZEdVZ2MyaHZkV3hrSUdGc2QyRjVjeUJyWldWd0lHRWdZMjl1YzJsemRHVnVkRnh1SUNBZ0tpQjBlWEJsSUhOcFoyNWhkSFZ5WlNCaGJtUWdkR2hsSUc5dWJIa2dkWE5sSUdOaGMyVWdabTl5SUhSb2FYTXNJR2x6SUhSdklHRjJiMmxrSUhSb1lYUXVYRzRnSUNBcUwxeHVJQ0J5WlhCc1lXTmxVM1JoZEdVNklHWjFibU4wYVc5dUlDaHVaWGRUZEdGMFpTd2dZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVkpsY0d4aFkyVlRkR0YwWlNoMGFHbHpMQ0J1WlhkVGRHRjBaU2s3WEc0Z0lDQWdhV1lnS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVTmhiR3hpWVdOcktIUm9hWE1zSUdOaGJHeGlZV05yS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTm9aV05yY3lCM2FHVjBhR1Z5SUc5eUlHNXZkQ0IwYUdseklHTnZiWEJ2YzJsMFpTQmpiMjF3YjI1bGJuUWdhWE1nYlc5MWJuUmxaQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWSEoxWlNCcFppQnRiM1Z1ZEdWa0xDQm1ZV3h6WlNCdmRHaGxjbmRwYzJVdVhHNGdJQ0FxSUVCd2NtOTBaV04wWldSY2JpQWdJQ29nUUdacGJtRnNYRzRnSUNBcUwxeHVJQ0JwYzAxdmRXNTBaV1E2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTFjR1JoZEdWeUxtbHpUVzkxYm5SbFpDaDBhR2x6S1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMlYwY3lCaElITjFZbk5sZENCdlppQjBhR1VnY0hKdmNITXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J3WVhKMGFXRnNVSEp2Y0hNZ1UzVmljMlYwSUc5bUlIUm9aU0J1WlhoMElIQnliM0J6TGx4dUlDQWdLaUJBY0dGeVlXMGdlejltZFc1amRHbHZibjBnWTJGc2JHSmhZMnNnUTJGc2JHVmtJR0ZtZEdWeUlIQnliM0J6SUdGeVpTQjFjR1JoZEdWa0xseHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb2dRSEIxWW14cFkxeHVJQ0FnS2lCQVpHVndjbVZqWVhSbFpGeHVJQ0FnS2k5Y2JpQWdjMlYwVUhKdmNITTZJR1oxYm1OMGFXOXVJQ2h3WVhKMGFXRnNVSEp2Y0hNc0lHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhkaGNtNVRaWFJRY205d2N5Z3BPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpWTmxkRkJ5YjNCektIUm9hWE1zSUhCaGNuUnBZV3hRY205d2N5azdYRzRnSUNBZ2FXWWdLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVOaGJHeGlZV05yS0hSb2FYTXNJR05oYkd4aVlXTnJLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGNHeGhZMlVnWVd4c0lIUm9aU0J3Y205d2N5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzVsZDFCeWIzQnpJRk4xWW5ObGRDQnZaaUIwYUdVZ2JtVjRkQ0J3Y205d2N5NWNiaUFnSUNvZ1FIQmhjbUZ0SUhzL1puVnVZM1JwYjI1OUlHTmhiR3hpWVdOcklFTmhiR3hsWkNCaFpuUmxjaUJ3Y205d2N5QmhjbVVnZFhCa1lYUmxaQzVjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxSUVCd2RXSnNhV05jYmlBZ0lDb2dRR1JsY0hKbFkyRjBaV1JjYmlBZ0lDb3ZYRzRnSUhKbGNHeGhZMlZRY205d2N6b2dablZ1WTNScGIyNGdLRzVsZDFCeWIzQnpMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQjNZWEp1VTJWMFVISnZjSE1vS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1MWNHUmhkR1Z5TG1WdWNYVmxkV1ZTWlhCc1lXTmxVSEp2Y0hNb2RHaHBjeXdnYm1WM1VISnZjSE1wTzF4dUlDQWdJR2xtSUNoallXeHNZbUZqYXlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVnlMbVZ1Y1hWbGRXVkRZV3hzWW1GamF5aDBhR2x6TENCallXeHNZbUZqYXlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNTJZWElnVW1WaFkzUkRiR0Z6YzBOdmJYQnZibVZ1ZENBOUlHWjFibU4wYVc5dUlDZ3BJSHQ5TzF4dVlYTnphV2R1S0ZKbFlXTjBRMnhoYzNORGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbExDQlNaV0ZqZEVOdmJYQnZibVZ1ZEM1d2NtOTBiM1I1Y0dVc0lGSmxZV04wUTJ4aGMzTk5hWGhwYmlrN1hHNWNiaThxS2x4dUlDb2dUVzlrZFd4bElHWnZjaUJqY21WaGRHbHVaeUJqYjIxd2IzTnBkR1VnWTI5dGNHOXVaVzUwY3k1Y2JpQXFYRzRnS2lCQVkyeGhjM01nVW1WaFkzUkRiR0Z6YzF4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JEYkdGemN5QTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhJR052YlhCdmMybDBaU0JqYjIxd2IyNWxiblFnWTJ4aGMzTWdaMmwyWlc0Z1lTQmpiR0Z6Y3lCemNHVmphV1pwWTJGMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYzNCbFl5QkRiR0Z6Y3lCemNHVmphV1pwWTJGMGFXOXVJQ2gzYUdsamFDQnRkWE4wSUdSbFptbHVaU0JnY21WdVpHVnlZQ2t1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMloxYm1OMGFXOXVmU0JEYjIxd2IyNWxiblFnWTI5dWMzUnlkV04wYjNJZ1puVnVZM1JwYjI0dVhHNGdJQ0FxSUVCd2RXSnNhV05jYmlBZ0lDb3ZYRzRnSUdOeVpXRjBaVU5zWVhOek9pQm1kVzVqZEdsdmJpQW9jM0JsWXlrZ2UxeHVJQ0FnSUhaaGNpQkRiMjV6ZEhKMVkzUnZjaUE5SUdaMWJtTjBhVzl1SUNod2NtOXdjeXdnWTI5dWRHVjRkQ3dnZFhCa1lYUmxjaWtnZTF4dUlDQWdJQ0FnTHk4Z1ZHaHBjeUJqYjI1emRISjFZM1J2Y2lCcGN5QnZkbVZ5Y21sa1pHVnVJR0o1SUcxdlkydHpMaUJVYUdVZ1lYSm5kVzFsYm5RZ2FYTWdkWE5sWkZ4dUlDQWdJQ0FnTHk4Z1lua2diVzlqYTNNZ2RHOGdZWE56WlhKMElHOXVJSGRvWVhRZ1oyVjBjeUJ0YjNWdWRHVmtMbHh1WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGFHbHpJR2x1YzNSaGJtTmxiMllnUTI5dWMzUnlkV04wYjNJc0lDZFRiMjFsZEdocGJtY2dhWE1nWTJGc2JHbHVaeUJoSUZKbFlXTjBJR052YlhCdmJtVnVkQ0JrYVhKbFkzUnNlUzRnVlhObElHRWdabUZqZEc5eWVTQnZjaUFuSUNzZ0owcFRXQ0JwYm5OMFpXRmtMaUJUWldVNklHaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRiR1ZuWVdONVptRmpkRzl5ZVNjcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0F2THlCWGFYSmxJSFZ3SUdGMWRHOHRZbWx1WkdsdVoxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgxOXlaV0ZqZEVGMWRHOUNhVzVrVFdGd0tTQjdYRzRnSUNBZ0lDQWdJR0pwYm1SQmRYUnZRbWx1WkUxbGRHaHZaSE1vZEdocGN5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFJvYVhNdWNISnZjSE1nUFNCd2NtOXdjenRjYmlBZ0lDQWdJSFJvYVhNdVkyOXVkR1Y0ZENBOUlHTnZiblJsZUhRN1hHNGdJQ0FnSUNCMGFHbHpMbkpsWm5NZ1BTQmxiWEIwZVU5aWFtVmpkRHRjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsY2lBOUlIVndaR0YwWlhJZ2ZId2dVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1U3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVjM1JoZEdVZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnSUNBdkx5QlNaV0ZqZEVOc1lYTnpaWE1nWkc5bGMyNG5kQ0JvWVhabElHTnZibk4wY25WamRHOXljeTRnU1c1emRHVmhaQ3dnZEdobGVTQjFjMlVnZEdobFhHNGdJQ0FnSUNBdkx5Qm5aWFJKYm1sMGFXRnNVM1JoZEdVZ1lXNWtJR052YlhCdmJtVnVkRmRwYkd4TmIzVnVkQ0J0WlhSb2IyUnpJR1p2Y2lCcGJtbDBhV0ZzYVhwaGRHbHZiaTVjYmx4dUlDQWdJQ0FnZG1GeUlHbHVhWFJwWVd4VGRHRjBaU0E5SUhSb2FYTXVaMlYwU1c1cGRHbGhiRk4wWVhSbElEOGdkR2hwY3k1blpYUkpibWwwYVdGc1UzUmhkR1VvS1NBNklHNTFiR3c3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0F2THlCWFpTQmhiR3h2ZHlCaGRYUnZMVzF2WTJ0eklIUnZJSEJ5YjJObFpXUWdZWE1nYVdZZ2RHaGxlU2R5WlNCeVpYUjFjbTVwYm1jZ2JuVnNiQzVjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCcGJtbDBhV0ZzVTNSaGRHVWdQVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSFJvYVhNdVoyVjBTVzVwZEdsaGJGTjBZWFJsTGw5cGMwMXZZMnRHZFc1amRHbHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRlJvYVhNZ2FYTWdjSEp2WW1GaWJIa2dZbUZrSUhCeVlXTjBhV05sTGlCRGIyNXphV1JsY2lCM1lYSnVhVzVuSUdobGNtVWdZVzVrWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdaR1Z3Y21WallYUnBibWNnZEdocGN5QmpiMjUyWlc1cFpXNWpaUzVjYmlBZ0lDQWdJQ0FnSUNCcGJtbDBhV0ZzVTNSaGRHVWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQWhLSFI1Y0dWdlppQnBibWwwYVdGc1UzUmhkR1VnUFQwOUlDZHZZbXBsWTNRbklDWW1JQ0ZCY25KaGVTNXBjMEZ5Y21GNUtHbHVhWFJwWVd4VGRHRjBaU2twSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKeVZ6TG1kbGRFbHVhWFJwWVd4VGRHRjBaU2dwT2lCdGRYTjBJSEpsZEhWeWJpQmhiaUJ2WW1wbFkzUWdiM0lnYm5Wc2JDY3NJRU52Ym5OMGNuVmpkRzl5TG1ScGMzQnNZWGxPWVcxbElIeDhJQ2RTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRDY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUNBZ2RHaHBjeTV6ZEdGMFpTQTlJR2x1YVhScFlXeFRkR0YwWlR0Y2JpQWdJQ0I5TzF4dUlDQWdJRU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlNBOUlHNWxkeUJTWldGamRFTnNZWE56UTI5dGNHOXVaVzUwS0NrN1hHNGdJQ0FnUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbExtTnZibk4wY25WamRHOXlJRDBnUTI5dWMzUnlkV04wYjNJN1hHNWNiaUFnSUNCcGJtcGxZM1JsWkUxcGVHbHVjeTVtYjNKRllXTm9LRzFwZUZOd1pXTkpiblJ2UTI5dGNHOXVaVzUwTG1KcGJtUW9iblZzYkN3Z1EyOXVjM1J5ZFdOMGIzSXBLVHRjYmx4dUlDQWdJRzFwZUZOd1pXTkpiblJ2UTI5dGNHOXVaVzUwS0VOdmJuTjBjblZqZEc5eUxDQnpjR1ZqS1R0Y2JseHVJQ0FnSUM4dklFbHVhWFJwWVd4cGVtVWdkR2hsSUdSbFptRjFiSFJRY205d2N5QndjbTl3WlhKMGVTQmhablJsY2lCaGJHd2diV2w0YVc1eklHaGhkbVVnWW1WbGJpQnRaWEpuWldRdVhHNGdJQ0FnYVdZZ0tFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5a2dlMXh1SUNBZ0lDQWdRMjl1YzNSeWRXTjBiM0l1WkdWbVlYVnNkRkJ5YjNCeklEMGdRMjl1YzNSeWRXTjBiM0l1WjJWMFJHVm1ZWFZzZEZCeWIzQnpLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDOHZJRlJvYVhNZ2FYTWdZU0IwWVdjZ2RHOGdhVzVrYVdOaGRHVWdkR2hoZENCMGFHVWdkWE5sSUc5bUlIUm9aWE5sSUcxbGRHaHZaQ0J1WVcxbGN5QnBjeUJ2YXl4Y2JpQWdJQ0FnSUM4dklITnBibU5sSUdsMEozTWdkWE5sWkNCM2FYUm9JR055WldGMFpVTnNZWE56TGlCSlppQnBkQ2R6SUc1dmRDd2dkR2hsYmlCcGRDZHpJR3hwYTJWc2VTQmhYRzRnSUNBZ0lDQXZMeUJ0YVhOMFlXdGxJSE52SUhkbEoyeHNJSGRoY200Z2VXOTFJSFJ2SUhWelpTQjBhR1VnYzNSaGRHbGpJSEJ5YjNCbGNuUjVMQ0J3Y205d1pYSjBlVnh1SUNBZ0lDQWdMeThnYVc1cGRHbGhiR2w2WlhJZ2IzSWdZMjl1YzNSeWRXTjBiM0lnY21WemNHVmpkR2wyWld4NUxseHVJQ0FnSUNBZ2FXWWdLRU52Ym5OMGNuVmpkRzl5TG1kbGRFUmxabUYxYkhSUWNtOXdjeWtnZTF4dUlDQWdJQ0FnSUNCRGIyNXpkSEoxWTNSdmNpNW5aWFJFWldaaGRXeDBVSEp2Y0hNdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUWdQU0I3ZlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaERiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1V1WjJWMFNXNXBkR2xoYkZOMFlYUmxLU0I3WEc0Z0lDQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxuQnliM1J2ZEhsd1pTNW5aWFJKYm1sMGFXRnNVM1JoZEdVdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUWdQU0I3ZlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0FoUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbExuSmxibVJsY2lBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RqY21WaGRHVkRiR0Z6Y3lndUxpNHBPaUJEYkdGemN5QnpjR1ZqYVdacFkyRjBhVzl1SUcxMWMzUWdhVzF3YkdWdFpXNTBJR0VnWUhKbGJtUmxjbUFnYldWMGFHOWtMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5Z2hRMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsTG1OdmJYQnZibVZ1ZEZOb2IzVnNaRlZ3WkdGMFpTd2dKeVZ6SUdoaGN5QmhJRzFsZEdodlpDQmpZV3hzWldRZ0p5QXJJQ2RqYjIxd2IyNWxiblJUYUc5MWJHUlZjR1JoZEdVb0tTNGdSR2xrSUhsdmRTQnRaV0Z1SUhOb2IzVnNaRU52YlhCdmJtVnVkRlZ3WkdGMFpTZ3BQeUFuSUNzZ0oxUm9aU0J1WVcxbElHbHpJSEJvY21GelpXUWdZWE1nWVNCeGRXVnpkR2x2YmlCaVpXTmhkWE5sSUhSb1pTQm1kVzVqZEdsdmJpQnBjeUFuSUNzZ0oyVjRjR1ZqZEdWa0lIUnZJSEpsZEhWeWJpQmhJSFpoYkhWbExpY3NJSE53WldNdVpHbHpjR3hoZVU1aGJXVWdmSHdnSjBFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaFEyOXVjM1J5ZFdOMGIzSXVjSEp2ZEc5MGVYQmxMbU52YlhCdmJtVnVkRmRwYkd4U1pXTnBaWFpsVUhKdmNITXNJQ2NsY3lCb1lYTWdZU0J0WlhSb2IyUWdZMkZzYkdWa0lDY2dLeUFuWTI5dGNHOXVaVzUwVjJsc2JGSmxZMmxsZG1WUWNtOXdjeWdwTGlCRWFXUWdlVzkxSUcxbFlXNGdZMjl0Y0c5dVpXNTBWMmxzYkZKbFkyVnBkbVZRY205d2N5Z3BQeWNzSUhOd1pXTXVaR2x6Y0d4aGVVNWhiV1VnZkh3Z0owRWdZMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1VtVmtkV05sSUhScGJXVWdjM0JsYm5RZ1pHOXBibWNnYkc5dmEzVndjeUJpZVNCelpYUjBhVzVuSUhSb1pYTmxJRzl1SUhSb1pTQndjbTkwYjNSNWNHVXVYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2JXVjBhRzlrVG1GdFpTQnBiaUJTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sS1NCN1hHNGdJQ0FnSUNCcFppQW9JVU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlZ0dFpYUm9iMlJPWVcxbFhTa2dlMXh1SUNBZ0lDQWdJQ0JEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dWYmJXVjBhRzlrVG1GdFpWMGdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJEYjI1emRISjFZM1J2Y2p0Y2JpQWdmU3hjYmx4dUlDQnBibXBsWTNScGIyNDZJSHRjYmlBZ0lDQnBibXBsWTNSTmFYaHBiam9nWm5WdVkzUnBiMjRnS0cxcGVHbHVLU0I3WEc0Z0lDQWdJQ0JwYm1wbFkzUmxaRTFwZUdsdWN5NXdkWE5vS0cxcGVHbHVLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRU5zWVhOek95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENvbXBvbmVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4gKi9cbmZ1bmN0aW9uIFJlYWN0Q29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8vIHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuXG4vKipcbiAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgdG8gbXV0YXRlXG4gKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBydW4gc3luY2hyb25vdXNseSxcbiAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuICogY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHlcbiAqIGNvbXBsZXRlZC5cbiAqXG4gKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3RhdGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW5cbiAqIHRoZSBmdXR1cmUgKG5vdCBzeW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8gZGF0ZVxuICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcbiAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlXG4gKiBzaG91bGRDb21wb25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250ZXh0IHdpbGwgbm90IHlldCBiZVxuICogYXNzaWduZWQgdG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0b1xuICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRcbiAqL1xuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2spIHtcbiAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhICcgKyAnZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwYXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlvdSBwYXNzZWQgYW4gdW5kZWZpbmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQsIHVzZSBmb3JjZVVwZGF0ZSgpLicpIDogdW5kZWZpbmVkO1xuICB9XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgcGFydGlhbFN0YXRlKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cbi8qKlxuICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gKlxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gKlxuICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAqXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICogd2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNcbiAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG4gICAgZ2V0RE9NTm9kZTogWydnZXRET01Ob2RlJywgJ1VzZSBSZWFjdERPTS5maW5kRE9NTm9kZShjb21wb25lbnQpIGluc3RlYWQuJ10sXG4gICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VQcm9wczogWydyZXBsYWNlUHJvcHMnLCAnSW5zdGVhZCwgY2FsbCByZW5kZXIgYWdhaW4gYXQgdGhlIHRvcCBsZXZlbC4nXSxcbiAgICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4nXSxcbiAgICBzZXRQcm9wczogWydzZXRQcm9wcycsICdJbnN0ZWFkLCBjYWxsIHJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLiddXG4gIH07XG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykge1xuICAgIHRyeSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1lLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoICh4KSB7XG4gICAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHkgKGVzNS1zaGltL3NoYW0gdG9vKVxuICAgIH1cbiAgfTtcbiAgZm9yICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7XG4gICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHtcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JEYjIxd2IyNWxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUTI5dGNHOXVaVzUwWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUbTl2Y0ZWd1pHRjBaVkYxWlhWbEp5azdYRzVjYm5aaGNpQmxiWEIwZVU5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJWdGNIUjVUMkpxWldOMEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dUx5b3FYRzRnS2lCQ1lYTmxJR05zWVhOeklHaGxiSEJsY25NZ1ptOXlJSFJvWlNCMWNHUmhkR2x1WnlCemRHRjBaU0J2WmlCaElHTnZiWEJ2Ym1WdWRDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1VtVmhZM1JEYjIxd2IyNWxiblFvY0hKdmNITXNJR052Ym5SbGVIUXNJSFZ3WkdGMFpYSXBJSHRjYmlBZ2RHaHBjeTV3Y205d2N5QTlJSEJ5YjNCek8xeHVJQ0IwYUdsekxtTnZiblJsZUhRZ1BTQmpiMjUwWlhoME8xeHVJQ0IwYUdsekxuSmxabk1nUFNCbGJYQjBlVTlpYW1WamREdGNiaUFnTHk4Z1YyVWdhVzVwZEdsaGJHbDZaU0IwYUdVZ1pHVm1ZWFZzZENCMWNHUmhkR1Z5SUdKMWRDQjBhR1VnY21WaGJDQnZibVVnWjJWMGN5QnBibXBsWTNSbFpDQmllU0IwYUdWY2JpQWdMeThnY21WdVpHVnlaWEl1WEc0Z0lIUm9hWE11ZFhCa1lYUmxjaUE5SUhWd1pHRjBaWElnZkh3Z1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVTdYRzU5WEc1Y2JsSmxZV04wUTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlM1cGMxSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2UzMDdYRzVjYmk4cUtseHVJQ29nVTJWMGN5QmhJSE4xWW5ObGRDQnZaaUIwYUdVZ2MzUmhkR1V1SUVGc2QyRjVjeUIxYzJVZ2RHaHBjeUIwYnlCdGRYUmhkR1ZjYmlBcUlITjBZWFJsTGlCWmIzVWdjMmh2ZFd4a0lIUnlaV0YwSUdCMGFHbHpMbk4wWVhSbFlDQmhjeUJwYlcxMWRHRmliR1V1WEc0Z0tseHVJQ29nVkdobGNtVWdhWE1nYm04Z1ozVmhjbUZ1ZEdWbElIUm9ZWFFnWUhSb2FYTXVjM1JoZEdWZ0lIZHBiR3dnWW1VZ2FXMXRaV1JwWVhSbGJIa2dkWEJrWVhSbFpDd2djMjljYmlBcUlHRmpZMlZ6YzJsdVp5QmdkR2hwY3k1emRHRjBaV0FnWVdaMFpYSWdZMkZzYkdsdVp5QjBhR2x6SUcxbGRHaHZaQ0J0WVhrZ2NtVjBkWEp1SUhSb1pTQnZiR1FnZG1Gc2RXVXVYRzRnS2x4dUlDb2dWR2hsY21VZ2FYTWdibThnWjNWaGNtRnVkR1ZsSUhSb1lYUWdZMkZzYkhNZ2RHOGdZSE5sZEZOMFlYUmxZQ0IzYVd4c0lISjFiaUJ6ZVc1amFISnZibTkxYzJ4NUxGeHVJQ29nWVhNZ2RHaGxlU0J0WVhrZ1pYWmxiblIxWVd4c2VTQmlaU0JpWVhSamFHVmtJSFJ2WjJWMGFHVnlMaUFnV1c5MUlHTmhiaUJ3Y205MmFXUmxJR0Z1SUc5d2RHbHZibUZzWEc0Z0tpQmpZV3hzWW1GamF5QjBhR0YwSUhkcGJHd2dZbVVnWlhobFkzVjBaV1FnZDJobGJpQjBhR1VnWTJGc2JDQjBieUJ6WlhSVGRHRjBaU0JwY3lCaFkzUjFZV3hzZVZ4dUlDb2dZMjl0Y0d4bGRHVmtMbHh1SUNwY2JpQXFJRmRvWlc0Z1lTQm1kVzVqZEdsdmJpQnBjeUJ3Y205MmFXUmxaQ0IwYnlCelpYUlRkR0YwWlN3Z2FYUWdkMmxzYkNCaVpTQmpZV3hzWldRZ1lYUWdjMjl0WlNCd2IybHVkQ0JwYmx4dUlDb2dkR2hsSUdaMWRIVnlaU0FvYm05MElITjVibU5vY205dWIzVnpiSGtwTGlCSmRDQjNhV3hzSUdKbElHTmhiR3hsWkNCM2FYUm9JSFJvWlNCMWNDQjBieUJrWVhSbFhHNGdLaUJqYjIxd2IyNWxiblFnWVhKbmRXMWxiblJ6SUNoemRHRjBaU3dnY0hKdmNITXNJR052Ym5SbGVIUXBMaUJVYUdWelpTQjJZV3gxWlhNZ1kyRnVJR0psSUdScFptWmxjbVZ1ZEZ4dUlDb2dabkp2YlNCMGFHbHpMaW9nWW1WallYVnpaU0I1YjNWeUlHWjFibU4wYVc5dUlHMWhlU0JpWlNCallXeHNaV1FnWVdaMFpYSWdjbVZqWldsMlpWQnliM0J6SUdKMWRDQmlaV1p2Y21WY2JpQXFJSE5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlN3Z1lXNWtJSFJvYVhNZ2JtVjNJSE4wWVhSbExDQndjbTl3Y3l3Z1lXNWtJR052Ym5SbGVIUWdkMmxzYkNCdWIzUWdlV1YwSUdKbFhHNGdLaUJoYzNOcFoyNWxaQ0IwYnlCMGFHbHpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZHWjFibU4wYVc5dWZTQndZWEowYVdGc1UzUmhkR1VnVG1WNGRDQndZWEowYVdGc0lITjBZWFJsSUc5eUlHWjFibU4wYVc5dUlIUnZYRzRnS2lBZ0lDQWdJQ0FnY0hKdlpIVmpaU0J1WlhoMElIQmhjblJwWVd3Z2MzUmhkR1VnZEc4Z1ltVWdiV1Z5WjJWa0lIZHBkR2dnWTNWeWNtVnVkQ0J6ZEdGMFpTNWNiaUFxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCRFlXeHNaV1FnWVdaMFpYSWdjM1JoZEdVZ2FYTWdkWEJrWVhSbFpDNWNiaUFxSUVCbWFXNWhiRnh1SUNvZ1FIQnliM1JsWTNSbFpGeHVJQ292WEc1U1pXRmpkRU52YlhCdmJtVnVkQzV3Y205MGIzUjVjR1V1YzJWMFUzUmhkR1VnUFNCbWRXNWpkR2x2YmlBb2NHRnlkR2xoYkZOMFlYUmxMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWhLSFI1Y0dWdlppQndZWEowYVdGc1UzUmhkR1VnUFQwOUlDZHZZbXBsWTNRbklIeDhJSFI1Y0dWdlppQndZWEowYVdGc1UzUmhkR1VnUFQwOUlDZG1kVzVqZEdsdmJpY2dmSHdnY0dGeWRHbGhiRk4wWVhSbElEMDlJRzUxYkd3cElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjNObGRGTjBZWFJsS0M0dUxpazZJSFJoYTJWeklHRnVJRzlpYW1WamRDQnZaaUJ6ZEdGMFpTQjJZWEpwWVdKc1pYTWdkRzhnZFhCa1lYUmxJRzl5SUdFZ0p5QXJJQ2RtZFc1amRHbHZiaUIzYUdsamFDQnlaWFIxY201eklHRnVJRzlpYW1WamRDQnZaaUJ6ZEdGMFpTQjJZWEpwWVdKc1pYTXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSEJoY25ScFlXeFRkR0YwWlNBaFBTQnVkV3hzTENBbmMyVjBVM1JoZEdVb0xpNHVLVG9nV1c5MUlIQmhjM05sWkNCaGJpQjFibVJsWm1sdVpXUWdiM0lnYm5Wc2JDQnpkR0YwWlNCdlltcGxZM1E3SUNjZ0t5QW5hVzV6ZEdWaFpDd2dkWE5sSUdadmNtTmxWWEJrWVhSbEtDa3VKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmlBZ2RHaHBjeTUxY0dSaGRHVnlMbVZ1Y1hWbGRXVlRaWFJUZEdGMFpTaDBhR2x6TENCd1lYSjBhV0ZzVTNSaGRHVXBPMXh1SUNCcFppQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVU5oYkd4aVlXTnJLSFJvYVhNc0lHTmhiR3hpWVdOcktUdGNiaUFnZlZ4dWZUdGNibHh1THlvcVhHNGdLaUJHYjNKalpYTWdZVzRnZFhCa1lYUmxMaUJVYUdseklITm9iM1ZzWkNCdmJteDVJR0psSUdsdWRtOXJaV1FnZDJobGJpQnBkQ0JwY3lCcmJtOTNiaUIzYVhSb1hHNGdLaUJqWlhKMFlXbHVkSGtnZEdoaGRDQjNaU0JoY21VZ0tpcHViM1FxS2lCcGJpQmhJRVJQVFNCMGNtRnVjMkZqZEdsdmJpNWNiaUFxWEc0Z0tpQlpiM1VnYldGNUlIZGhiblFnZEc4Z1kyRnNiQ0IwYUdseklIZG9aVzRnZVc5MUlHdHViM2NnZEdoaGRDQnpiMjFsSUdSbFpYQmxjaUJoYzNCbFkzUWdiMllnZEdobFhHNGdLaUJqYjIxd2IyNWxiblFuY3lCemRHRjBaU0JvWVhNZ1kyaGhibWRsWkNCaWRYUWdZSE5sZEZOMFlYUmxZQ0IzWVhNZ2JtOTBJR05oYkd4bFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhkcGJHd2dibTkwSUdsdWRtOXJaU0JnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbFlDd2dZblYwSUdsMElIZHBiR3dnYVc1MmIydGxYRzRnS2lCZ1kyOXRjRzl1Wlc1MFYybHNiRlZ3WkdGMFpXQWdZVzVrSUdCamIyMXdiMjVsYm5SRWFXUlZjR1JoZEdWZ0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1AyWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QkRZV3hzWldRZ1lXWjBaWElnZFhCa1lYUmxJR2x6SUdOdmJYQnNaWFJsTGx4dUlDb2dRR1pwYm1Gc1hHNGdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0tpOWNibEpsWVdOMFEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTNW1iM0pqWlZWd1pHRjBaU0E5SUdaMWJtTjBhVzl1SUNoallXeHNZbUZqYXlrZ2UxeHVJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVadmNtTmxWWEJrWVhSbEtIUm9hWE1wTzF4dUlDQnBaaUFvWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0IwYUdsekxuVndaR0YwWlhJdVpXNXhkV1YxWlVOaGJHeGlZV05yS0hSb2FYTXNJR05oYkd4aVlXTnJLVHRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCRVpYQnlaV05oZEdWa0lFRlFTWE11SUZSb1pYTmxJRUZRU1hNZ2RYTmxaQ0IwYnlCbGVHbHpkQ0J2YmlCamJHRnpjMmxqSUZKbFlXTjBJR05zWVhOelpYTWdZblYwSUhOcGJtTmxYRzRnS2lCM1pTQjNiM1ZzWkNCc2FXdGxJSFJ2SUdSbGNISmxZMkYwWlNCMGFHVnRMQ0IzWlNkeVpTQnViM1FnWjI5cGJtY2dkRzhnYlc5MlpTQjBhR1Z0SUc5MlpYSWdkRzhnZEdocGMxeHVJQ29nYlc5a1pYSnVJR0poYzJVZ1kyeGhjM011SUVsdWMzUmxZV1FzSUhkbElHUmxabWx1WlNCaElHZGxkSFJsY2lCMGFHRjBJSGRoY201eklHbG1JR2wwSjNNZ1lXTmpaWE56WldRdVhHNGdLaTljYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhjaUJrWlhCeVpXTmhkR1ZrUVZCSmN5QTlJSHRjYmlBZ0lDQm5aWFJFVDAxT2IyUmxPaUJiSjJkbGRFUlBUVTV2WkdVbkxDQW5WWE5sSUZKbFlXTjBSRTlOTG1acGJtUkVUMDFPYjJSbEtHTnZiWEJ2Ym1WdWRDa2dhVzV6ZEdWaFpDNG5YU3hjYmlBZ0lDQnBjMDF2ZFc1MFpXUTZJRnNuYVhOTmIzVnVkR1ZrSnl3Z0owbHVjM1JsWVdRc0lHMWhhMlVnYzNWeVpTQjBieUJqYkdWaGJpQjFjQ0J6ZFdKelkzSnBjSFJwYjI1eklHRnVaQ0J3Wlc1a2FXNW5JSEpsY1hWbGMzUnpJR2x1SUNjZ0t5QW5ZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFnZEc4Z2NISmxkbVZ1ZENCdFpXMXZjbmtnYkdWaGEzTXVKMTBzWEc0Z0lDQWdjbVZ3YkdGalpWQnliM0J6T2lCYkozSmxjR3hoWTJWUWNtOXdjeWNzSUNkSmJuTjBaV0ZrTENCallXeHNJSEpsYm1SbGNpQmhaMkZwYmlCaGRDQjBhR1VnZEc5d0lHeGxkbVZzTGlkZExGeHVJQ0FnSUhKbGNHeGhZMlZUZEdGMFpUb2dXeWR5WlhCc1lXTmxVM1JoZEdVbkxDQW5VbVZtWVdOMGIzSWdlVzkxY2lCamIyUmxJSFJ2SUhWelpTQnpaWFJUZEdGMFpTQnBibk4wWldGa0lDaHpaV1VnSnlBcklDZG9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZabUZqWldKdmIyc3ZjbVZoWTNRdmFYTnpkV1Z6THpNeU16WXBMaWRkTEZ4dUlDQWdJSE5sZEZCeWIzQnpPaUJiSjNObGRGQnliM0J6Snl3Z0owbHVjM1JsWVdRc0lHTmhiR3dnY21WdVpHVnlJR0ZuWVdsdUlHRjBJSFJvWlNCMGIzQWdiR1YyWld3dUoxMWNiaUFnZlR0Y2JpQWdkbUZ5SUdSbFptbHVaVVJsY0hKbFkyRjBhVzl1VjJGeWJtbHVaeUE5SUdaMWJtTjBhVzl1SUNodFpYUm9iMlJPWVcxbExDQnBibVp2S1NCN1hHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hTWldGamRFTnZiWEJ2Ym1WdWRDNXdjbTkwYjNSNWNHVXNJRzFsZEdodlpFNWhiV1VzSUh0Y2JpQWdJQ0FnSUNBZ1oyVjBPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2NsY3lndUxpNHBJR2x6SUdSbGNISmxZMkYwWldRZ2FXNGdjR3hoYVc0Z1NtRjJZVk5qY21sd2RDQlNaV0ZqZENCamJHRnpjMlZ6TGlBbGN5Y3NJR2x1Wm05Yk1GMHNJR2x1Wm05Yk1WMHBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tIZ3BJSHRjYmlBZ0lDQWdJQzh2SUVsRklIZHBiR3dnWm1GcGJDQnZiaUJrWldacGJtVlFjbTl3WlhKMGVTQW9aWE0xTFhOb2FXMHZjMmhoYlNCMGIyOHBYRzRnSUNBZ2ZWeHVJQ0I5TzF4dUlDQm1iM0lnS0haaGNpQm1iazVoYldVZ2FXNGdaR1Z3Y21WallYUmxaRUZRU1hNcElIdGNiaUFnSUNCcFppQW9aR1Z3Y21WallYUmxaRUZRU1hNdWFHRnpUM2R1VUhKdmNHVnlkSGtvWm01T1lXMWxLU2tnZTF4dUlDQWdJQ0FnWkdWbWFXNWxSR1Z3Y21WallYUnBiMjVYWVhKdWFXNW5LR1p1VG1GdFpTd2daR1Z3Y21WallYUmxaRUZRU1hOYlptNU9ZVzFsWFNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JEYjIxd2IyNWxiblE3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgaW5qZWN0ZWQgPSBmYWxzZTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBlbnZpcm9ubWVudCBkZXBlbmRlbnQgY2xlYW51cCBob29rLiAoc2VydmVyIHZzLlxuICAgKiBicm93c2VyIGV0YykuIEV4YW1wbGU6IEEgYnJvd3NlciBzeXN0ZW0gY2FjaGVzIERPTSBub2RlcyBiYXNlZCBvbiBjb21wb25lbnRcbiAgICogSUQgYW5kIG11c3QgcmVtb3ZlIHRoYXQgY2FjaGUgZW50cnkgd2hlbiB0aGlzIGluc3RhbmNlIGlzIHVubW91bnRlZC5cbiAgICovXG4gIHVubW91bnRJREZyb21FbnZpcm9ubWVudDogbnVsbCxcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgKiB0aGUgdHJlZS5cbiAgICovXG4gIHJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ6IG51bGwsXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBwcm9jZXNzaW5nIGEgcXVldWUgb2YgY2hpbGQgdXBkYXRlcy4gV2lsbFxuICAgKiBsYXRlciBtb3ZlIGludG8gTXVsdGlDaGlsZENvbXBvbmVudHMuXG4gICAqL1xuICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBudWxsLFxuXG4gIGluamVjdGlvbjoge1xuICAgIGluamVjdEVudmlyb25tZW50OiBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHtcbiAgICAgICEhaW5qZWN0ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQ6IGluamVjdEVudmlyb25tZW50KCkgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudC51bm1vdW50SURGcm9tRW52aXJvbm1lbnQ7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEO1xuICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcztcbiAgICAgIGluamVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50O1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JEYjIxd2IyNWxiblJGYm5acGNtOXViV1Z1ZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERTBMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSRGIyMXdiMjVsYm5SRmJuWnBjbTl1YldWdWRGeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ2FXNXFaV04wWldRZ1BTQm1ZV3h6WlR0Y2JseHVkbUZ5SUZKbFlXTjBRMjl0Y0c5dVpXNTBSVzUyYVhKdmJtMWxiblFnUFNCN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUU5d2RHbHZibUZzYkhrZ2FXNXFaV04wWVdKc1pTQmxiblpwY205dWJXVnVkQ0JrWlhCbGJtUmxiblFnWTJ4bFlXNTFjQ0JvYjI5ckxpQW9jMlZ5ZG1WeUlIWnpMbHh1SUNBZ0tpQmljbTkzYzJWeUlHVjBZeWt1SUVWNFlXMXdiR1U2SUVFZ1luSnZkM05sY2lCemVYTjBaVzBnWTJGamFHVnpJRVJQVFNCdWIyUmxjeUJpWVhObFpDQnZiaUJqYjIxd2IyNWxiblJjYmlBZ0lDb2dTVVFnWVc1a0lHMTFjM1FnY21WdGIzWmxJSFJvWVhRZ1kyRmphR1VnWlc1MGNua2dkMmhsYmlCMGFHbHpJR2x1YzNSaGJtTmxJR2x6SUhWdWJXOTFiblJsWkM1Y2JpQWdJQ292WEc0Z0lIVnViVzkxYm5SSlJFWnliMjFGYm5acGNtOXViV1Z1ZERvZ2JuVnNiQ3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dUM0IwYVc5dVlXeHNlU0JwYm1wbFkzUmhZbXhsSUdodmIyc2dabTl5SUhOM1lYQndhVzVuSUc5MWRDQnRiM1Z1ZENCcGJXRm5aWE1nYVc0Z2RHaGxJRzFwWkdSc1pTQnZabHh1SUNBZ0tpQjBhR1VnZEhKbFpTNWNiaUFnSUNvdlhHNGdJSEpsY0d4aFkyVk9iMlJsVjJsMGFFMWhjbXQxY0VKNVNVUTZJRzUxYkd3c1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUU5d2RHbHZibUZzYkhrZ2FXNXFaV04wWVdKc1pTQm9iMjlySUdadmNpQndjbTlqWlhOemFXNW5JR0VnY1hWbGRXVWdiMllnWTJocGJHUWdkWEJrWVhSbGN5NGdWMmxzYkZ4dUlDQWdLaUJzWVhSbGNpQnRiM1psSUdsdWRHOGdUWFZzZEdsRGFHbHNaRU52YlhCdmJtVnVkSE11WEc0Z0lDQXFMMXh1SUNCd2NtOWpaWE56UTJocGJHUnlaVzVWY0dSaGRHVnpPaUJ1ZFd4c0xGeHVYRzRnSUdsdWFtVmpkR2x2YmpvZ2UxeHVJQ0FnSUdsdWFtVmpkRVZ1ZG1seWIyNXRaVzUwT2lCbWRXNWpkR2x2YmlBb1pXNTJhWEp2Ym0xbGJuUXBJSHRjYmlBZ0lDQWdJQ0VoYVc1cVpXTjBaV1FnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5VbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RNklHbHVhbVZqZEVWdWRtbHliMjV0Wlc1MEtDa2dZMkZ1SUc5dWJIa2dZbVVnWTJGc2JHVmtJRzl1WTJVdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnVW1WaFkzUkRiMjF3YjI1bGJuUkZiblpwY205dWJXVnVkQzUxYm0xdmRXNTBTVVJHY205dFJXNTJhWEp2Ym0xbGJuUWdQU0JsYm5acGNtOXViV1Z1ZEM1MWJtMXZkVzUwU1VSR2NtOXRSVzUyYVhKdmJtMWxiblE3WEc0Z0lDQWdJQ0JTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBMbkpsY0d4aFkyVk9iMlJsVjJsMGFFMWhjbXQxY0VKNVNVUWdQU0JsYm5acGNtOXViV1Z1ZEM1eVpYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQkNlVWxFTzF4dUlDQWdJQ0FnVW1WaFkzUkRiMjF3YjI1bGJuUkZiblpwY205dWJXVnVkQzV3Y205alpYTnpRMmhwYkdSeVpXNVZjR1JoZEdWeklEMGdaVzUyYVhKdmJtMWxiblF1Y0hKdlkyVnpjME5vYVd4a2NtVnVWWEJrWVhSbGN6dGNiaUFnSUNBZ0lHbHVhbVZqZEdWa0lEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEVWdWRtbHliMjV0Wlc1ME95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVMb2NhdGlvbnMnKTtcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlUXVldWUnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSB7XG4gIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG4gIGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpIHt9XG5TdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICByZXR1cm4gQ29tcG9uZW50KHRoaXMucHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTtcbn07XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiAtIGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGluc3RhbmNlIGlzIG5vdyByZXRhaW5lZC5cbiAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcbiAqICAgLSByZW5kZXJcbiAqICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdXG4gKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl1cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudERpZE1vdW50XVxuICogICAgIC0gY29tcG9uZW50RGlkTW91bnRcbiAqXG4gKiAgICAgICBVcGRhdGUgUGhhc2VzOlxuICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5IGNhbGxlZCBpZiBwYXJlbnQgdXBkYXRlZClcbiAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZVxuICogICAgICAgICAgIC0gcmVuZGVyXG4gKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFzZXNdXG4gKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlXG4gKlxuICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnRcbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxVbm1vdW50XVxuICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdXG4gKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxuICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBBbiBpbmNyZW1lbnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBUaGlzIGlzXG4gKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFjdFVwZGF0ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgbmV4dE1vdW50SUQgPSAxO1xuXG4vKipcbiAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVDb21wb25lbnQucHJvdG90eXBlfVxuICovXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnRNaXhpbiA9IHtcblxuICAvKipcbiAgICogQmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIGNvbXBvc2l0ZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IG51bGw7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRlUXVldWVcbiAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblxuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcblxuICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSAwO1xuICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVzIGFuZCBSZWFjdFVwZGF0ZVF1ZXVlLlxuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByb290SUQgRE9NIElEIG9mIHRoZSByb290IG5vZGUuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLl9tb3VudE9yZGVyID0gbmV4dE1vdW50SUQrKztcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gcm9vdElEO1xuXG4gICAgdmFyIHB1YmxpY1Byb3BzID0gdGhpcy5fcHJvY2Vzc1Byb3BzKHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzKTtcbiAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBwdWJsaWMgY2xhc3NcbiAgICB2YXIgaW5zdDtcbiAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXG4gICAgLy8gVGhpcyBpcyBhIHdheSB0byBkZXRlY3QgaWYgQ29tcG9uZW50IGlzIGEgc3RhdGVsZXNzIGFycm93IGZ1bmN0aW9uXG4gICAgLy8gY29tcG9uZW50LCB3aGljaCBpcyBub3QgbmV3YWJsZS4gSXQgbWlnaHQgbm90IGJlIDEwMCUgcmVsaWFibGUgYnV0IGlzXG4gICAgLy8gc29tZXRoaW5nIHdlIGNhbiBkbyB1bnRpbCB3ZSBzdGFydCBkZXRlY3RpbmcgdGhhdCBDb21wb25lbnQgZXh0ZW5kc1xuICAgIC8vIFJlYWN0LkNvbXBvbmVudC4gV2UgYWxyZWFkeSBhc3N1bWUgdGhhdCB0eXBlb2YgQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nLlxuICAgIHZhciBjYW5JbnN0YW50aWF0ZSA9ICgncHJvdG90eXBlJyBpbiBDb21wb25lbnQpO1xuXG4gICAgaWYgKGNhbkluc3RhbnRpYXRlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpbnN0ID0gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgUmVhY3RVcGRhdGVRdWV1ZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3QgPSBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCBSZWFjdFVwZGF0ZVF1ZXVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNhbkluc3RhbnRpYXRlIHx8IGluc3QgPT09IG51bGwgfHwgaW5zdCA9PT0gZmFsc2UgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGluc3QpKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0O1xuICAgICAgaW5zdCA9IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4gZWFybHlcbiAgICAgIC8vIHdhcm5pbmcgbm93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBpZiAoaW5zdC5yZW5kZXIgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLCByZXR1cm5lZCAnICsgJ251bGwvZmFsc2UgZnJvbSBhIHN0YXRlbGVzcyBjb21wb25lbnQsIG9yIHRyaWVkIHRvIHJlbmRlciBhbiAnICsgJ2VsZW1lbnQgd2hvc2UgdHlwZSBpcyBhIGZ1bmN0aW9uIHRoYXQgaXNuXFwndCBhIFJlYWN0IGNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2Ugc3VwcG9ydCBFUzYgaW5oZXJpdGluZyBmcm9tIFJlYWN0LkNvbXBvbmVudCwgdGhlIG1vZHVsZSBwYXR0ZXJuLFxuICAgICAgICAvLyBhbmQgc3RhdGVsZXNzIGNvbXBvbmVudHMsIGJ1dCBub3QgRVM2IGNsYXNzZXMgdGhhdCBkb24ndCBleHRlbmRcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgfHwgIWNhbkluc3RhbnRpYXRlIHx8ICEoaW5zdCBpbnN0YW5jZW9mIENvbXBvbmVudCksICclcyguLi4pOiBSZWFjdCBjb21wb25lbnQgY2xhc3NlcyBtdXN0IGV4dGVuZCBSZWFjdC5Db21wb25lbnQuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFzIGEgY29udmVuaWVuY2UgZm9yXG4gICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0cmFjdGlvbnMsIHdlIHNldCB0aGVtIHVwIGFmdGVyIHRoZSBmYWN0LlxuICAgIGluc3QucHJvcHMgPSBwdWJsaWNQcm9wcztcbiAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuICAgIGluc3QucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgIGluc3QudXBkYXRlciA9IFJlYWN0VXBkYXRlUXVldWU7XG5cbiAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7XG5cbiAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFNpbmNlIHBsYWluIEpTIGNsYXNzZXMgYXJlIGRlZmluZWQgd2l0aG91dCBhbnkgc3BlY2lhbCBpbml0aWFsaXphdGlvblxuICAgICAgLy8gbG9naWMsIHdlIGNhbiBub3QgY2F0Y2ggY29tbW9uIGVycm9ycyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvXG4gICAgICAvLyBjYXRjaCB0aGVtIGhlcmUsIGF0IGluaXRpYWxpemF0aW9uIHRpbWUsIGluc3RlYWQuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXRJbml0aWFsU3RhdGUgfHwgaW5zdC5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBtZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJvcHMgfHwgaW5zdC5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LnByb3BUeXBlcywgJ3Byb3BUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5lIHByb3BUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudERpZFVubW91bnQgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50RGlkVW5tb3VudCgpLiBCdXQgdGhlcmUgaXMgbm8gc3VjaCBsaWZlY3ljbGUgbWV0aG9kLiAnICsgJ0RpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsVW5tb3VudCgpPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbnN0LnN0YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICB9XG4gICAgISh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50KSB7XG4gICAgICBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgLy8gV2hlbiBtb3VudGluZywgY2FsbHMgdG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxsIHNldFxuICAgICAgLy8gYHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlYCB3aXRob3V0IHRyaWdnZXJpbmcgYSByZS1yZW5kZXIuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtcbiAgICAgICAgaW5zdC5zdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaW5zdC5wcm9wcywgaW5zdC5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBub3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50LCB3ZSBub3cgcmVuZGVyXG4gICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVtZW50KTtcblxuICAgIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21wb25lbnQsIHJvb3RJRCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuICAgIGlmIChpbnN0LmNvbXBvbmVudERpZE1vdW50KSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkTW91bnQsIGluc3QpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVudGAuXG4gICAqXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVubW91bnQpIHtcbiAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcbiAgICB9XG5cbiAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCk7XG4gICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblxuICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzXG4gICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVudCBpcyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcbiAgICAvLyBpdCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSByZXNldC5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIC8vIFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5IG5lZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMgbm9cbiAgICAvLyBsb25nZXIgYWNjZXNzaWJsZS5cbiAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuXG4gICAgLy8gRGVsZXRlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJvcGVybHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG4gICAgLy8gbGVha3MgYSByZWZlcmVuY2UgdG8gdGhlIHB1YmxpYyBpbnN0YW5jZS5cbiAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0KTtcblxuICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMgZXZlbiBhZnRlciB0aGV5J3ZlIGJlZW5cbiAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRsZXJzKS5cbiAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LnN0YXRlID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2BcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IG51bGw7XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGNvbnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7XG4gICAgaWYgKCFjb250ZXh0VHlwZXMpIHtcbiAgICAgIHJldHVybiBlbXB0eU9iamVjdDtcbiAgICB9XG4gICAgbWFza2VkQ29udGV4dCA9IHt9O1xuICAgIGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRUeXBlcykge1xuICAgICAgbWFza2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBgY29udGV4dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFyZSB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRleHQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChDb21wb25lbnQuY29udGV4dFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJvcFR5cGVzKENvbXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMuY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHRcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChjdXJyZW50Q29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0ICYmIGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG4gICAgaWYgKGNoaWxkQ29udGV4dCkge1xuICAgICAgISh0eXBlb2YgQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byAnICsgJ3VzZSBnZXRDaGlsZENvbnRleHQoKS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0aGlzLl9jaGVja1Byb3BUeXBlcyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5jaGlsZENvbnRleHQpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHtcbiAgICAgICAgIShuYW1lIGluIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVzXCIgaXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFzc2lnbih7fSwgY3VycmVudENvbnRleHQsIGNoaWxkQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50Q29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogUHJvY2Vzc2VzIHByb3BzIGJ5IHNldHRpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuc3BlY2lmaWVkIHByb3BzIGFuZFxuICAgKiBhc3NlcnRpbmcgdGhhdCB0aGUgcHJvcHMgYXJlIHZhbGlkLiBEb2VzIG5vdCBtdXRhdGUgaXRzIGFyZ3VtZW50OyByZXR1cm5zXG4gICAqIGEgbmV3IHByb3BzIG9iamVjdCB3aXRoIGRlZmF1bHRzIG1lcmdlZCBpbi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1Byb3BzXG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzUHJvcHM6IGZ1bmN0aW9uIChuZXdQcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChDb21wb25lbnQucHJvcFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJvcFR5cGVzKENvbXBvbmVudC5wcm9wVHlwZXMsIG5ld1Byb3BzLCBSZWFjdFByb3BUeXBlTG9jYXRpb25zLnByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3UHJvcHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFzc2VydCB0aGF0IHRoZSBwcm9wcyBhcmUgdmFsaWRcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BUeXBlcyBNYXAgb2YgcHJvcCBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2NoZWNrUHJvcFR5cGVzOiBmdW5jdGlvbiAocHJvcFR5cGVzLCBwcm9wcywgbG9jYXRpb24pIHtcbiAgICAvLyBUT0RPOiBTdG9wIHZhbGlkYXRpbmcgcHJvcCB0eXBlcyBoZXJlIGFuZCBvbmx5IHVzZSB0aGUgZWxlbWVudFxuICAgIC8vIHZhbGlkYXRpb24uXG4gICAgdmFyIGNvbXBvbmVudE5hbWUgPSB0aGlzLmdldE5hbWUoKTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgISh0eXBlb2YgcHJvcFR5cGVzW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgJyArICdmcm9tIFJlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGV4dGVuZCB0aGlzIGxvZ2ljIGZvciBzaW1pbGFyIGVycm9ycyBpblxuICAgICAgICAgIC8vIHRvcC1sZXZlbCByZW5kZXIgY2FsbHMsIHNvIEknbSBhYnN0cmFjdGluZyBpdCBhd2F5IGludG9cbiAgICAgICAgICAvLyBhIGZ1bmN0aW9uIHRvIG1pbmltaXplIHJlZmFjdG9yaW5nIGluIHRoZSBmdXR1cmVcbiAgICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0odGhpcyk7XG5cbiAgICAgICAgICBpZiAobG9jYXRpb24gPT09IFJlYWN0UHJvcFR5cGVMb2NhdGlvbnMucHJvcCkge1xuICAgICAgICAgICAgLy8gUHJlZmFjZSBnaXZlcyB1cyBzb21ldGhpbmcgdG8gYmxhY2tsaXN0IGluIHdhcm5pbmcgbW9kdWxlXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIENvbnRleHQgVHlwZXM6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIG5leHRDb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtcblxuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9wZW5kaW5nU3RhdGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYFxuICAgKiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHtcbiAgICBpZiAodGhpcy5fcGVuZGluZ0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQgfHwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9jb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0aGlzLl9jb250ZXh0KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGFuZFxuICAgKiBzaG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9kcyBhcmUgY2FsbGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0XG4gICAqIHNraXBwZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5kIHRoZSBET01cbiAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG4gICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2UGFyZW50RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnRcbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICB2YXIgbmV4dENvbnRleHQgPSB0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0ID8gaW5zdC5jb250ZXh0IDogdGhpcy5fcHJvY2Vzc0NvbnRleHQobmV4dFVubWFza2VkQ29udGV4dCk7XG4gICAgdmFyIG5leHRQcm9wcztcblxuICAgIC8vIERpc3Rpbmd1aXNoIGJldHdlZW4gYSBwcm9wcyB1cGRhdGUgdmVyc3VzIGEgc2ltcGxlIHN0YXRlIHVwZGF0ZVxuICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCA9PT0gbmV4dFBhcmVudEVsZW1lbnQpIHtcbiAgICAgIC8vIFNraXAgY2hlY2tpbmcgcHJvcCB0eXBlcyBhZ2FpbiAtLSB3ZSBkb24ndCByZWFkIGluc3QucHJvcHMgdG8gYXZvaWRcbiAgICAgIC8vIHdhcm5pbmcgZm9yIERPTSBjb21wb25lbnQgcHJvcHMgaW4gdGhpcyB1cGdyYWRlXG4gICAgICBuZXh0UHJvcHMgPSBuZXh0UGFyZW50RWxlbWVudC5wcm9wcztcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFByb3BzID0gdGhpcy5fcHJvY2Vzc1Byb3BzKG5leHRQYXJlbnRFbGVtZW50LnByb3BzKTtcbiAgICAgIC8vIEFuIHVwZGF0ZSBoZXJlIHdpbGwgc2NoZWR1bGUgYW4gdXBkYXRlIGJ1dCBpbW1lZGlhdGVseSBzZXRcbiAgICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVzIGdldHNcbiAgICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgbmV4dCBiYXRjaC5cblxuICAgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcykge1xuICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG5cbiAgICB2YXIgc2hvdWxkVXBkYXRlID0gdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlIHx8ICFpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSB8fCBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBzaG91bGRVcGRhdGUgIT09ICd1bmRlZmluZWQnLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJldHVybmVkIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1cmUgdG8gcmV0dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgICAvLyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAuXG4gICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBkZXRlcm1pbmVkIHRoYXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0aWxsIHdhbnRcbiAgICAgIC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRoZSB1cGRhdGUuXG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRQYXJlbnRFbGVtZW50O1xuICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4gICAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuICAgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBfcHJvY2Vzc1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZTtcbiAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcblxuICAgIGlmICghcXVldWUpIHtcbiAgICAgIHJldHVybiBpbnN0LnN0YXRlO1xuICAgIH1cblxuICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHF1ZXVlWzBdO1xuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUgPSBhc3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVswXSA6IGluc3Quc3RhdGUpO1xuICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcnRpYWwgPSBxdWV1ZVtpXTtcbiAgICAgIGFzc2lnbihuZXh0U3RhdGUsIHR5cGVvZiBwYXJ0aWFsID09PSAnZnVuY3Rpb24nID8gcGFydGlhbC5jYWxsKGluc3QsIG5leHRTdGF0ZSwgcHJvcHMsIGNvbnRleHQpIDogcGFydGlhbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfSxcblxuICAvKipcbiAgICogTWVyZ2VzIG5ldyBwcm9wcyBhbmQgc3RhdGUsIG5vdGlmaWVzIGRlbGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZFxuICAgKiBwZXJmb3JtcyB1cGRhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBOZXh0IGVsZW1lbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlIE5leHQgb2JqZWN0IHRvIHNldCBhcyBzdGF0ZS5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dCBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/b2JqZWN0fSB1bm1hc2tlZENvbnRleHRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4dCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBkYXRlID0gQm9vbGVhbihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZSk7XG4gICAgdmFyIHByZXZQcm9wcztcbiAgICB2YXIgcHJldlN0YXRlO1xuICAgIHZhciBwcmV2Q29udGV4dDtcbiAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7XG4gICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzO1xuICAgICAgcHJldlN0YXRlID0gaW5zdC5zdGF0ZTtcbiAgICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250ZXh0O1xuICAgIH1cblxuICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHtcbiAgICAgIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDtcbiAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7XG5cbiAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KTtcblxuICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB2YXIgcHJldlJlbmRlcmVkRWxlbWVudCA9IHByZXZDb21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIG5leHRSZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcbiAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVudCkpIHtcbiAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVzZSB0d28gSURzIGFyZSBhY3R1YWxseSB0aGUgc2FtZSEgQnV0IG5vdGhpbmcgc2hvdWxkIHJlbHkgb24gdGhhdC5cbiAgICAgIHZhciB0aGlzSUQgPSB0aGlzLl9yb290Tm9kZUlEO1xuICAgICAgdmFyIHByZXZDb21wb25lbnRJRCA9IHByZXZDb21wb25lbnRJbnN0YW5jZS5fcm9vdE5vZGVJRDtcbiAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG5cbiAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50KTtcbiAgICAgIHZhciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LCB0aGlzSUQsIHRyYW5zYWN0aW9uLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTtcbiAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQocHJldkNvbXBvbmVudElELCBuZXh0TWFya3VwKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEOiBmdW5jdGlvbiAocHJldkNvbXBvbmVudElELCBuZXh0TWFya3VwKSB7XG4gICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXBCeUlEKHByZXZDb21wb25lbnRJRCwgbmV4dE1hcmt1cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciByZW5kZXJlZENvbXBvbmVudCA9IGluc3QucmVuZGVyKCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgaWYgKHR5cGVvZiByZW5kZXJlZENvbXBvbmVudCA9PT0gJ3VuZGVmaW5lZCcgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1bmN0aW9uKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG4gICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgIHJlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbmRlcmVkQ29tcG9uZW50O1xuICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuICAgIHRyeSB7XG4gICAgICByZW5kZXJlZENvbXBvbmVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgIShcbiAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcbiAgICByZW5kZXJlZENvbXBvbmVudCA9PT0gbnVsbCB8fCByZW5kZXJlZENvbXBvbmVudCA9PT0gZmFsc2UgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KHJlbmRlcmVkQ29tcG9uZW50KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMucmVuZGVyKCk6IEEgdmFsaWQgUmVhY3RDb21wb25lbnQgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlICcgKyAncmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJlZnMgb2JqZWN0IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgUmVmZXJlbmNlIG5hbWUuXG4gICAqIEBwYXJhbSB7Y29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLlxuICAgKiBAZmluYWxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGF0dGFjaFJlZjogZnVuY3Rpb24gKHJlZiwgY29tcG9uZW50KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgIShpbnN0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudCAmJiBjb21wb25lbnQuZ2V0TmFtZSA/IGNvbXBvbmVudC5nZXROYW1lKCkgOiAnYSBjb21wb25lbnQnO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHVibGljQ29tcG9uZW50SW5zdGFuY2UgIT0gbnVsbCwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBiZSBnaXZlbiByZWZzICcgKyAnKFNlZSByZWYgXCIlc1wiIGluICVzIGNyZWF0ZWQgYnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFjY2VzcyB0aGlzIHJlZiB3aWxsIGZhaWwuJywgcmVmLCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5hbWUoKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3QucmVmcyA9IHt9IDogaW5zdC5yZWZzO1xuICAgIHJlZnNbcmVmXSA9IHB1YmxpY0NvbXBvbmVudEluc3RhbmNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyBhIHJlZmVyZW5jZSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGV0YWNoUmVmOiBmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmcztcbiAgICBkZWxldGUgcmVmc1tyZWZdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBpdFxuICAgKiBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvciBudWxsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldE5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLm5hbWUgfHwgbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3aGF0XG4gICAqIGlzIGV4cG9zZWQgYnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3RhdGVsZXNzXG4gICAqIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgaWYgKGluc3QgaW5zdGFuY2VvZiBTdGF0ZWxlc3NDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdDtcbiAgfSxcblxuICAvLyBTdHViXG4gIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBudWxsXG5cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhSZWFjdENvbXBvc2l0ZUNvbXBvbmVudE1peGluLCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCB7XG4gIG1vdW50Q29tcG9uZW50OiAnbW91bnRDb21wb25lbnQnLFxuICB1cGRhdGVDb21wb25lbnQ6ICd1cGRhdGVDb21wb25lbnQnLFxuICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiAnX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCdcbn0pO1xuXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7XG5cbiAgTWl4aW46IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50TWl4aW5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkRVZ1ZG1seWIyNXRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWElnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUTNWeWNtVnVkRTkzYm1WeUp5azdYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFbHVjM1JoYm1ObFRXRndKeWs3WEc1MllYSWdVbVZoWTNSUVpYSm1JRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkJsY21ZbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNXpKeWs3WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6SnlrN1hHNTJZWElnVW1WaFkzUlNaV052Ym1OcGJHVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRkpsWTI5dVkybHNaWEluS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlZGMVpYVmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJsYlhCMGVVOWlhbVZqZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1VDJKcVpXTjBKeWs3WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNTJZWElnYzJodmRXeGtWWEJrWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwzTm9iM1ZzWkZWd1pHRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ2QyRnlibWx1WnlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwzZGhjbTVwYm1jbktUdGNibHh1Wm5WdVkzUnBiMjRnWjJWMFJHVmpiR0Z5WVhScGIyNUZjbkp2Y2tGa1pHVnVaSFZ0S0dOdmJYQnZibVZ1ZENrZ2UxeHVJQ0IyWVhJZ2IzZHVaWElnUFNCamIyMXdiMjVsYm5RdVgyTjFjbkpsYm5SRmJHVnRaVzUwTGw5dmQyNWxjaUI4ZkNCdWRXeHNPMXh1SUNCcFppQW9iM2R1WlhJcElIdGNiaUFnSUNCMllYSWdibUZ0WlNBOUlHOTNibVZ5TG1kbGRFNWhiV1VvS1R0Y2JpQWdJQ0JwWmlBb2JtRnRaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2NnUTJobFkyc2dkR2hsSUhKbGJtUmxjaUJ0WlhSb2IyUWdiMllnWUNjZ0t5QnVZVzFsSUNzZ0oyQXVKenRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlDY25PMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQlRkR0YwWld4bGMzTkRiMjF3YjI1bGJuUW9RMjl0Y0c5dVpXNTBLU0I3ZlZ4dVUzUmhkR1ZzWlhOelEyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTNXlaVzVrWlhJZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lIWmhjaUJEYjIxd2IyNWxiblFnUFNCU1pXRmpkRWx1YzNSaGJtTmxUV0Z3TG1kbGRDaDBhR2x6S1M1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1ZEhsd1pUdGNiaUFnY21WMGRYSnVJRU52YlhCdmJtVnVkQ2gwYUdsekxuQnliM0J6TENCMGFHbHpMbU52Ym5SbGVIUXNJSFJvYVhNdWRYQmtZWFJsY2lrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFNCVWFHVWdUR2xtWlMxRGVXTnNaU0J2WmlCaElFTnZiWEJ2YzJsMFpTQkRiMjF3YjI1bGJuUWdMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRYRzRnS2x4dUlDb2dMU0JqYjI1emRISjFZM1J2Y2pvZ1NXNXBkR2xoYkdsNllYUnBiMjRnYjJZZ2MzUmhkR1V1SUZSb1pTQnBibk4wWVc1alpTQnBjeUJ1YjNjZ2NtVjBZV2x1WldRdVhHNGdLaUFnSUMwZ1kyOXRjRzl1Wlc1MFYybHNiRTF2ZFc1MFhHNGdLaUFnSUMwZ2NtVnVaR1Z5WEc0Z0tpQWdJQzBnVzJOb2FXeGtjbVZ1SjNNZ1kyOXVjM1J5ZFdOMGIzSnpYVnh1SUNvZ0lDQWdJQzBnVzJOb2FXeGtjbVZ1SjNNZ1kyOXRjRzl1Wlc1MFYybHNiRTF2ZFc1MElHRnVaQ0J5Wlc1a1pYSmRYRzRnS2lBZ0lDQWdMU0JiWTJocGJHUnlaVzRuY3lCamIyMXdiMjVsYm5SRWFXUk5iM1Z1ZEYxY2JpQXFJQ0FnSUNBdElHTnZiWEJ2Ym1WdWRFUnBaRTF2ZFc1MFhHNGdLbHh1SUNvZ0lDQWdJQ0FnVlhCa1lYUmxJRkJvWVhObGN6cGNiaUFxSUNBZ0lDQWdJQzBnWTI5dGNHOXVaVzUwVjJsc2JGSmxZMlZwZG1WUWNtOXdjeUFvYjI1c2VTQmpZV3hzWldRZ2FXWWdjR0Z5Wlc1MElIVndaR0YwWldRcFhHNGdLaUFnSUNBZ0lDQXRJSE5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlZ4dUlDb2dJQ0FnSUNBZ0lDQXRJR052YlhCdmJtVnVkRmRwYkd4VmNHUmhkR1ZjYmlBcUlDQWdJQ0FnSUNBZ0lDQXRJSEpsYm1SbGNseHVJQ29nSUNBZ0lDQWdJQ0FnSUMwZ1cyTm9hV3hrY21WdUozTWdZMjl1YzNSeWRXTjBiM0p6SUc5eUlISmxZMlZwZG1VZ2NISnZjSE1nY0doaGMyVnpYVnh1SUNvZ0lDQWdJQ0FnSUNBdElHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpWeHVJQ3BjYmlBcUlDQWdJQ0F0SUdOdmJYQnZibVZ1ZEZkcGJHeFZibTF2ZFc1MFhHNGdLaUFnSUNBZ0xTQmJZMmhwYkdSeVpXNG5jeUJqYjIxd2IyNWxiblJYYVd4c1ZXNXRiM1Z1ZEYxY2JpQXFJQ0FnTFNCYlkyaHBiR1J5Wlc0Z1pHVnpkSEp2ZVdWa1hWeHVJQ29nTFNBb1pHVnpkSEp2ZVdWa0tUb2dWR2hsSUdsdWMzUmhibU5sSUdseklHNXZkeUJpYkdGdWF5d2djbVZzWldGelpXUWdZbmtnVW1WaFkzUWdZVzVrSUhKbFlXUjVJR1p2Y2lCSFF5NWNiaUFxWEc0Z0tpQXRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFZ4dUlDb3ZYRzVjYmk4cUtseHVJQ29nUVc0Z2FXNWpjbVZ0Wlc1MGFXNW5JRWxFSUdGemMybG5ibVZrSUhSdklHVmhZMmdnWTI5dGNHOXVaVzUwSUhkb1pXNGdhWFFnYVhNZ2JXOTFiblJsWkM0Z1ZHaHBjeUJwYzF4dUlDb2dkWE5sWkNCMGJ5QmxibVp2Y21ObElIUm9aU0J2Y21SbGNpQnBiaUIzYUdsamFDQmdVbVZoWTNSVmNHUmhkR1Z6WUNCMWNHUmhkR1Z6SUdScGNuUjVJR052YlhCdmJtVnVkSE11WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVkbUZ5SUc1bGVIUk5iM1Z1ZEVsRUlEMGdNVHRjYmx4dUx5b3FYRzRnS2lCQWJHVnVaSE1nZTFKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaWDFjYmlBcUwxeHVkbUZ5SUZKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBUV2w0YVc0Z1BTQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFSmhjMlVnWTI5dWMzUnlkV04wYjNJZ1ptOXlJR0ZzYkNCamIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ1pXeGxiV1Z1ZEZ4dUlDQWdLaUJBWm1sdVlXeGNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUTZJR1oxYm1OMGFXOXVJQ2hsYkdWdFpXNTBLU0I3WEc0Z0lDQWdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblFnUFNCbGJHVnRaVzUwTzF4dUlDQWdJSFJvYVhNdVgzSnZiM1JPYjJSbFNVUWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYMmx1YzNSaGJtTmxJRDBnYm5Wc2JEdGNibHh1SUNBZ0lDOHZJRk5sWlNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsWEc0Z0lDQWdkR2hwY3k1ZmNHVnVaR2x1WjBWc1pXMWxiblFnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRUZEdGMFpWRjFaWFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuVW1Wd2JHRmpaVk4wWVhSbElEMGdabUZzYzJVN1hHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVowWnZjbU5sVlhCa1lYUmxJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQjBhR2x6TGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOUlHNTFiR3c3WEc1Y2JpQWdJQ0IwYUdsekxsOWpiMjUwWlhoMElEMGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxsOXRiM1Z1ZEU5eVpHVnlJRDBnTUR0Y2JpQWdJQ0IwYUdsekxsOTBiM0JNWlhabGJGZHlZWEJ3WlhJZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnTHk4Z1UyVmxJRkpsWVdOMFZYQmtZWFJsY3lCaGJtUWdVbVZoWTNSVmNHUmhkR1ZSZFdWMVpTNWNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5RMkZzYkdKaFkydHpJRDBnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1cGRHbGhiR2w2WlhNZ2RHaGxJR052YlhCdmJtVnVkQ3dnY21WdVpHVnljeUJ0WVhKcmRYQXNJR0Z1WkNCeVpXZHBjM1JsY25NZ1pYWmxiblFnYkdsemRHVnVaWEp6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NtOXZkRWxFSUVSUFRTQkpSQ0J2WmlCMGFHVWdjbTl2ZENCdWIyUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OFVtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZibjBnZEhKaGJuTmhZM1JwYjI1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UDNOMGNtbHVaMzBnVW1WdVpHVnlaV1FnYldGeWEzVndJSFJ2SUdKbElHbHVjMlZ5ZEdWa0lHbHVkRzhnZEdobElFUlBUUzVjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ2JXOTFiblJEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNoeWIyOTBTVVFzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ2RHaHBjeTVmWTI5dWRHVjRkQ0E5SUdOdmJuUmxlSFE3WEc0Z0lDQWdkR2hwY3k1ZmJXOTFiblJQY21SbGNpQTlJRzVsZUhSTmIzVnVkRWxFS3lzN1hHNGdJQ0FnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0E5SUhKdmIzUkpSRHRjYmx4dUlDQWdJSFpoY2lCd2RXSnNhV05RY205d2N5QTlJSFJvYVhNdVgzQnliMk5sYzNOUWNtOXdjeWgwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjeWs3WEc0Z0lDQWdkbUZ5SUhCMVlteHBZME52Ym5SbGVIUWdQU0IwYUdsekxsOXdjbTlqWlhOelEyOXVkR1Y0ZENoamIyNTBaWGgwS1R0Y2JseHVJQ0FnSUhaaGNpQkRiMjF3YjI1bGJuUWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1MGVYQmxPMXh1WEc0Z0lDQWdMeThnU1c1cGRHbGhiR2w2WlNCMGFHVWdjSFZpYkdsaklHTnNZWE56WEc0Z0lDQWdkbUZ5SUdsdWMzUTdYRzRnSUNBZ2RtRnlJSEpsYm1SbGNtVmtSV3hsYldWdWREdGNibHh1SUNBZ0lDOHZJRlJvYVhNZ2FYTWdZU0IzWVhrZ2RHOGdaR1YwWldOMElHbG1JRU52YlhCdmJtVnVkQ0JwY3lCaElITjBZWFJsYkdWemN5Qmhjbkp2ZHlCbWRXNWpkR2x2Ymx4dUlDQWdJQzh2SUdOdmJYQnZibVZ1ZEN3Z2QyaHBZMmdnYVhNZ2JtOTBJRzVsZDJGaWJHVXVJRWwwSUcxcFoyaDBJRzV2ZENCaVpTQXhNREFsSUhKbGJHbGhZbXhsSUdKMWRDQnBjMXh1SUNBZ0lDOHZJSE52YldWMGFHbHVaeUIzWlNCallXNGdaRzhnZFc1MGFXd2dkMlVnYzNSaGNuUWdaR1YwWldOMGFXNW5JSFJvWVhRZ1EyOXRjRzl1Wlc1MElHVjRkR1Z1WkhOY2JpQWdJQ0F2THlCU1pXRmpkQzVEYjIxd2IyNWxiblF1SUZkbElHRnNjbVZoWkhrZ1lYTnpkVzFsSUhSb1lYUWdkSGx3Wlc5bUlFTnZiWEJ2Ym1WdWRDQTlQVDBnSjJaMWJtTjBhVzl1Snk1Y2JpQWdJQ0IyWVhJZ1kyRnVTVzV6ZEdGdWRHbGhkR1VnUFNBb0ozQnliM1J2ZEhsd1pTY2dhVzRnUTI5dGNHOXVaVzUwS1R0Y2JseHVJQ0FnSUdsbUlDaGpZVzVKYm5OMFlXNTBhV0YwWlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENBOUlIUm9hWE03WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnYVc1emRDQTlJRzVsZHlCRGIyMXdiMjVsYm5Rb2NIVmliR2xqVUhKdmNITXNJSEIxWW14cFkwTnZiblJsZUhRc0lGSmxZV04wVlhCa1lYUmxVWFZsZFdVcE8xeHVJQ0FnSUNBZ0lDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lDQWdJQ0FnSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JwYm5OMElEMGdibVYzSUVOdmJYQnZibVZ1ZENod2RXSnNhV05RY205d2N5d2djSFZpYkdsalEyOXVkR1Y0ZEN3Z1VtVmhZM1JWY0dSaGRHVlJkV1YxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRmpZVzVKYm5OMFlXNTBhV0YwWlNCOGZDQnBibk4wSUQwOVBTQnVkV3hzSUh4OElHbHVjM1FnUFQwOUlHWmhiSE5sSUh4OElGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaHBibk4wS1NrZ2UxeHVJQ0FnSUNBZ2NtVnVaR1Z5WldSRmJHVnRaVzUwSUQwZ2FXNXpkRHRjYmlBZ0lDQWdJR2x1YzNRZ1BTQnVaWGNnVTNSaGRHVnNaWE56UTI5dGNHOXVaVzUwS0VOdmJYQnZibVZ1ZENrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQzh2SUZSb2FYTWdkMmxzYkNCMGFISnZkeUJzWVhSbGNpQnBiaUJmY21WdVpHVnlWbUZzYVdSaGRHVmtRMjl0Y0c5dVpXNTBMQ0JpZFhRZ1lXUmtJR0Z1SUdWaGNteDVYRzRnSUNBZ0lDQXZMeUIzWVhKdWFXNW5JRzV2ZHlCMGJ5Qm9aV3h3SUdSbFluVm5aMmx1WjF4dUlDQWdJQ0FnYVdZZ0tHbHVjM1F1Y21WdVpHVnlJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNjbGN5Z3VMaTRwT2lCT2J5QmdjbVZ1WkdWeVlDQnRaWFJvYjJRZ1ptOTFibVFnYjI0Z2RHaGxJSEpsZEhWeWJtVmtJR052YlhCdmJtVnVkQ0FuSUNzZ0oybHVjM1JoYm1ObE9pQjViM1VnYldGNUlHaGhkbVVnWm05eVoyOTBkR1Z1SUhSdklHUmxabWx1WlNCZ2NtVnVaR1Z5WUN3Z2NtVjBkWEp1WldRZ0p5QXJJQ2R1ZFd4c0wyWmhiSE5sSUdaeWIyMGdZU0J6ZEdGMFpXeGxjM01nWTI5dGNHOXVaVzUwTENCdmNpQjBjbWxsWkNCMGJ5QnlaVzVrWlhJZ1lXNGdKeUFySUNkbGJHVnRaVzUwSUhkb2IzTmxJSFI1Y0dVZ2FYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElHbHpibHhjSjNRZ1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RdUp5d2dRMjl0Y0c5dVpXNTBMbVJwYzNCc1lYbE9ZVzFsSUh4OElFTnZiWEJ2Ym1WdWRDNXVZVzFsSUh4OElDZERiMjF3YjI1bGJuUW5LU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUM4dklGZGxJSE4xY0hCdmNuUWdSVk0ySUdsdWFHVnlhWFJwYm1jZ1puSnZiU0JTWldGamRDNURiMjF3YjI1bGJuUXNJSFJvWlNCdGIyUjFiR1VnY0dGMGRHVnliaXhjYmlBZ0lDQWdJQ0FnTHk4Z1lXNWtJSE4wWVhSbGJHVnpjeUJqYjIxd2IyNWxiblJ6TENCaWRYUWdibTkwSUVWVE5pQmpiR0Z6YzJWeklIUm9ZWFFnWkc5dUozUWdaWGgwWlc1a1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LRU52YlhCdmJtVnVkQzV3Y205MGIzUjVjR1VnSmlZZ1EyOXRjRzl1Wlc1MExuQnliM1J2ZEhsd1pTNXBjMUpsWVdOMFEyOXRjRzl1Wlc1MElIeDhJQ0ZqWVc1SmJuTjBZVzUwYVdGMFpTQjhmQ0FoS0dsdWMzUWdhVzV6ZEdGdVkyVnZaaUJEYjIxd2IyNWxiblFwTENBbkpYTW9MaTR1S1RvZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUdOc1lYTnpaWE1nYlhWemRDQmxlSFJsYm1RZ1VtVmhZM1F1UTI5dGNHOXVaVzUwTGljc0lFTnZiWEJ2Ym1WdWRDNWthWE53YkdGNVRtRnRaU0I4ZkNCRGIyMXdiMjVsYm5RdWJtRnRaU0I4ZkNBblEyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVkdobGMyVWdjMmh2ZFd4a0lHSmxJSE5sZENCMWNDQnBiaUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSXNJR0oxZENCaGN5QmhJR052Ym5abGJtbGxibU5sSUdadmNseHVJQ0FnSUM4dklITnBiWEJzWlhJZ1kyeGhjM01nWVdKemRISmhZM1JwYjI1ekxDQjNaU0J6WlhRZ2RHaGxiU0IxY0NCaFpuUmxjaUIwYUdVZ1ptRmpkQzVjYmlBZ0lDQnBibk4wTG5CeWIzQnpJRDBnY0hWaWJHbGpVSEp2Y0hNN1hHNGdJQ0FnYVc1emRDNWpiMjUwWlhoMElEMGdjSFZpYkdsalEyOXVkR1Y0ZER0Y2JpQWdJQ0JwYm5OMExuSmxabk1nUFNCbGJYQjBlVTlpYW1WamREdGNiaUFnSUNCcGJuTjBMblZ3WkdGMFpYSWdQU0JTWldGamRGVndaR0YwWlZGMVpYVmxPMXh1WEc0Z0lDQWdkR2hwY3k1ZmFXNXpkR0Z1WTJVZ1BTQnBibk4wTzF4dVhHNGdJQ0FnTHk4Z1UzUnZjbVVnWVNCeVpXWmxjbVZ1WTJVZ1puSnZiU0IwYUdVZ2FXNXpkR0Z1WTJVZ1ltRmpheUIwYnlCMGFHVWdhVzUwWlhKdVlXd2djbVZ3Y21WelpXNTBZWFJwYjI1Y2JpQWdJQ0JTWldGamRFbHVjM1JoYm1ObFRXRndMbk5sZENocGJuTjBMQ0IwYUdsektUdGNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBdkx5QlRhVzVqWlNCd2JHRnBiaUJLVXlCamJHRnpjMlZ6SUdGeVpTQmtaV1pwYm1Wa0lIZHBkR2h2ZFhRZ1lXNTVJSE53WldOcFlXd2dhVzVwZEdsaGJHbDZZWFJwYjI1Y2JpQWdJQ0FnSUM4dklHeHZaMmxqTENCM1pTQmpZVzRnYm05MElHTmhkR05vSUdOdmJXMXZiaUJsY25KdmNuTWdaV0Z5YkhrdUlGUm9aWEpsWm05eVpTd2dkMlVnYUdGMlpTQjBiMXh1SUNBZ0lDQWdMeThnWTJGMFkyZ2dkR2hsYlNCb1pYSmxMQ0JoZENCcGJtbDBhV0ZzYVhwaGRHbHZiaUIwYVcxbExDQnBibk4wWldGa0xseHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JV2x1YzNRdVoyVjBTVzVwZEdsaGJGTjBZWFJsSUh4OElHbHVjM1F1WjJWMFNXNXBkR2xoYkZOMFlYUmxMbWx6VW1WaFkzUkRiR0Z6YzBGd2NISnZkbVZrTENBbloyVjBTVzVwZEdsaGJGTjBZWFJsSUhkaGN5QmtaV1pwYm1Wa0lHOXVJQ1Z6TENCaElIQnNZV2x1SUVwaGRtRlRZM0pwY0hRZ1kyeGhjM011SUNjZ0t5QW5WR2hwY3lCcGN5QnZibXg1SUhOMWNIQnZjblJsWkNCbWIzSWdZMnhoYzNObGN5QmpjbVZoZEdWa0lIVnphVzVuSUZKbFlXTjBMbU55WldGMFpVTnNZWE56TGlBbklDc2dKMFJwWkNCNWIzVWdiV1ZoYmlCMGJ5QmtaV1pwYm1VZ1lTQnpkR0YwWlNCd2NtOXdaWEowZVNCcGJuTjBaV0ZrUHljc0lIUm9hWE11WjJWMFRtRnRaU2dwSUh4OElDZGhJR052YlhCdmJtVnVkQ2NwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JV2x1YzNRdVoyVjBSR1ZtWVhWc2RGQnliM0J6SUh4OElHbHVjM1F1WjJWMFJHVm1ZWFZzZEZCeWIzQnpMbWx6VW1WaFkzUkRiR0Z6YzBGd2NISnZkbVZrTENBbloyVjBSR1ZtWVhWc2RGQnliM0J6SUhkaGN5QmtaV1pwYm1Wa0lHOXVJQ1Z6TENCaElIQnNZV2x1SUVwaGRtRlRZM0pwY0hRZ1kyeGhjM011SUNjZ0t5QW5WR2hwY3lCcGN5QnZibXg1SUhOMWNIQnZjblJsWkNCbWIzSWdZMnhoYzNObGN5QmpjbVZoZEdWa0lIVnphVzVuSUZKbFlXTjBMbU55WldGMFpVTnNZWE56TGlBbklDc2dKMVZ6WlNCaElITjBZWFJwWXlCd2NtOXdaWEowZVNCMGJ5QmtaV1pwYm1VZ1pHVm1ZWFZzZEZCeWIzQnpJR2x1YzNSbFlXUXVKeXdnZEdocGN5NW5aWFJPWVcxbEtDa2dmSHdnSjJFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlnaGFXNXpkQzV3Y205d1ZIbHdaWE1zSUNkd2NtOXdWSGx3WlhNZ2QyRnpJR1JsWm1sdVpXUWdZWE1nWVc0Z2FXNXpkR0Z1WTJVZ2NISnZjR1Z5ZEhrZ2IyNGdKWE11SUZWelpTQmhJSE4wWVhScFl5QW5JQ3NnSjNCeWIzQmxjblI1SUhSdklHUmxabWx1WlNCd2NtOXdWSGx3WlhNZ2FXNXpkR1ZoWkM0bkxDQjBhR2x6TG1kbGRFNWhiV1VvS1NCOGZDQW5ZU0JqYjIxd2IyNWxiblFuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LQ0ZwYm5OMExtTnZiblJsZUhSVWVYQmxjeXdnSjJOdmJuUmxlSFJVZVhCbGN5QjNZWE1nWkdWbWFXNWxaQ0JoY3lCaGJpQnBibk4wWVc1alpTQndjbTl3WlhKMGVTQnZiaUFsY3k0Z1ZYTmxJR0VnSnlBcklDZHpkR0YwYVdNZ2NISnZjR1Z5ZEhrZ2RHOGdaR1ZtYVc1bElHTnZiblJsZUhSVWVYQmxjeUJwYm5OMFpXRmtMaWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkaElHTnZiWEJ2Ym1WdWRDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2RIbHdaVzltSUdsdWMzUXVZMjl0Y0c5dVpXNTBVMmh2ZFd4a1ZYQmtZWFJsSUNFOVBTQW5ablZ1WTNScGIyNG5MQ0FuSlhNZ2FHRnpJR0VnYldWMGFHOWtJR05oYkd4bFpDQW5JQ3NnSjJOdmJYQnZibVZ1ZEZOb2IzVnNaRlZ3WkdGMFpTZ3BMaUJFYVdRZ2VXOTFJRzFsWVc0Z2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxLQ2svSUNjZ0t5QW5WR2hsSUc1aGJXVWdhWE1nY0doeVlYTmxaQ0JoY3lCaElIRjFaWE4wYVc5dUlHSmxZMkYxYzJVZ2RHaGxJR1oxYm1OMGFXOXVJR2x6SUNjZ0t5QW5aWGh3WldOMFpXUWdkRzhnY21WMGRYSnVJR0VnZG1Gc2RXVXVKeXdnZEdocGN5NW5aWFJPWVcxbEtDa2dmSHdnSjBFZ1kyOXRjRzl1Wlc1MEp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGVYQmxiMllnYVc1emRDNWpiMjF3YjI1bGJuUkVhV1JWYm0xdmRXNTBJQ0U5UFNBblpuVnVZM1JwYjI0bkxDQW5KWE1nYUdGeklHRWdiV1YwYUc5a0lHTmhiR3hsWkNBbklDc2dKMk52YlhCdmJtVnVkRVJwWkZWdWJXOTFiblFvS1M0Z1FuVjBJSFJvWlhKbElHbHpJRzV2SUhOMVkyZ2diR2xtWldONVkyeGxJRzFsZEdodlpDNGdKeUFySUNkRWFXUWdlVzkxSUcxbFlXNGdZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFvS1Q4bkxDQjBhR2x6TG1kbGRFNWhiV1VvS1NCOGZDQW5RU0JqYjIxd2IyNWxiblFuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSFI1Y0dWdlppQnBibk4wTG1OdmJYQnZibVZ1ZEZkcGJHeFNaV05wWlhabFVISnZjSE1nSVQwOUlDZG1kVzVqZEdsdmJpY3NJQ2NsY3lCb1lYTWdZU0J0WlhSb2IyUWdZMkZzYkdWa0lDY2dLeUFuWTI5dGNHOXVaVzUwVjJsc2JGSmxZMmxsZG1WUWNtOXdjeWdwTGlCRWFXUWdlVzkxSUcxbFlXNGdZMjl0Y0c5dVpXNTBWMmxzYkZKbFkyVnBkbVZRY205d2N5Z3BQeWNzSUhSb2FYTXVaMlYwVG1GdFpTZ3BJSHg4SUNkQklHTnZiWEJ2Ym1WdWRDY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCcGJtbDBhV0ZzVTNSaGRHVWdQU0JwYm5OMExuTjBZWFJsTzF4dUlDQWdJR2xtSUNocGJtbDBhV0ZzVTNSaGRHVWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2FXNXpkQzV6ZEdGMFpTQTlJR2x1YVhScFlXeFRkR0YwWlNBOUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lDRW9kSGx3Wlc5bUlHbHVhWFJwWVd4VGRHRjBaU0E5UFQwZ0oyOWlhbVZqZENjZ0ppWWdJVUZ5Y21GNUxtbHpRWEp5WVhrb2FXNXBkR2xoYkZOMFlYUmxLU2tnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE11YzNSaGRHVTZJRzExYzNRZ1ltVWdjMlYwSUhSdklHRnVJRzlpYW1WamRDQnZjaUJ1ZFd4c0p5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnZEdocGN5NWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVYM0JsYm1ScGJtZFNaWEJzWVdObFUzUmhkR1VnUFNCbVlXeHpaVHRjYmlBZ0lDQjBhR2x6TGw5d1pXNWthVzVuUm05eVkyVlZjR1JoZEdVZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUdsbUlDaHBibk4wTG1OdmJYQnZibVZ1ZEZkcGJHeE5iM1Z1ZENrZ2UxeHVJQ0FnSUNBZ2FXNXpkQzVqYjIxd2IyNWxiblJYYVd4c1RXOTFiblFvS1R0Y2JpQWdJQ0FnSUM4dklGZG9aVzRnYlc5MWJuUnBibWNzSUdOaGJHeHpJSFJ2SUdCelpYUlRkR0YwWldBZ1lua2dZR052YlhCdmJtVnVkRmRwYkd4TmIzVnVkR0FnZDJsc2JDQnpaWFJjYmlBZ0lDQWdJQzh2SUdCMGFHbHpMbDl3Wlc1a2FXNW5VM1JoZEdWUmRXVjFaV0FnZDJsMGFHOTFkQ0IwY21sbloyVnlhVzVuSUdFZ2NtVXRjbVZ1WkdWeUxseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgzQmxibVJwYm1kVGRHRjBaVkYxWlhWbEtTQjdYRzRnSUNBZ0lDQWdJR2x1YzNRdWMzUmhkR1VnUFNCMGFHbHpMbDl3Y205alpYTnpVR1Z1WkdsdVoxTjBZWFJsS0dsdWMzUXVjSEp2Y0hNc0lHbHVjM1F1WTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnU1dZZ2JtOTBJR0VnYzNSaGRHVnNaWE56SUdOdmJYQnZibVZ1ZEN3Z2QyVWdibTkzSUhKbGJtUmxjbHh1SUNBZ0lHbG1JQ2h5Wlc1a1pYSmxaRVZzWlcxbGJuUWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2NtVnVaR1Z5WldSRmJHVnRaVzUwSUQwZ2RHaHBjeTVmY21WdVpHVnlWbUZzYVdSaGRHVmtRMjl0Y0c5dVpXNTBLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1ZmNtVnVaR1Z5WldSRGIyMXdiMjVsYm5RZ1BTQjBhR2x6TGw5cGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwS0hKbGJtUmxjbVZrUld4bGJXVnVkQ2s3WEc1Y2JpQWdJQ0IyWVhJZ2JXRnlhM1Z3SUQwZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG0xdmRXNTBRMjl0Y0c5dVpXNTBLSFJvYVhNdVgzSmxibVJsY21Wa1EyOXRjRzl1Wlc1MExDQnliMjkwU1VRc0lIUnlZVzV6WVdOMGFXOXVMQ0IwYUdsekxsOXdjbTlqWlhOelEyaHBiR1JEYjI1MFpYaDBLR052Ym5SbGVIUXBLVHRjYmlBZ0lDQnBaaUFvYVc1emRDNWpiMjF3YjI1bGJuUkVhV1JOYjNWdWRDa2dlMXh1SUNBZ0lDQWdkSEpoYm5OaFkzUnBiMjR1WjJWMFVtVmhZM1JOYjNWdWRGSmxZV1I1S0NrdVpXNXhkV1YxWlNocGJuTjBMbU52YlhCdmJtVnVkRVJwWkUxdmRXNTBMQ0JwYm5OMEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYldGeWEzVndPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pXeGxZWE5sY3lCaGJua2djbVZ6YjNWeVkyVnpJR0ZzYkc5allYUmxaQ0JpZVNCZ2JXOTFiblJEYjIxd2IyNWxiblJnTGx4dUlDQWdLbHh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCMWJtMXZkVzUwUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNRZ1BTQjBhR2x6TGw5cGJuTjBZVzVqWlR0Y2JseHVJQ0FnSUdsbUlDaHBibk4wTG1OdmJYQnZibVZ1ZEZkcGJHeFZibTF2ZFc1MEtTQjdYRzRnSUNBZ0lDQnBibk4wTG1OdmJYQnZibVZ1ZEZkcGJHeFZibTF2ZFc1MEtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG5WdWJXOTFiblJEYjIxd2IyNWxiblFvZEdocGN5NWZjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUXBPMXh1SUNBZ0lIUm9hWE11WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQjBhR2x6TGw5cGJuTjBZVzVqWlNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0F2THlCU1pYTmxkQ0J3Wlc1a2FXNW5JR1pwWld4a2MxeHVJQ0FnSUM4dklFVjJaVzRnYVdZZ2RHaHBjeUJqYjIxd2IyNWxiblFnYVhNZ2MyTm9aV1IxYkdWa0lHWnZjaUJoYm05MGFHVnlJSFZ3WkdGMFpTQnBiaUJTWldGamRGVndaR0YwWlhNc1hHNGdJQ0FnTHk4Z2FYUWdkMjkxYkdRZ2MzUnBiR3dnWW1VZ2FXZHViM0psWkNCaVpXTmhkWE5sSUhSb1pYTmxJR1pwWld4a2N5QmhjbVVnY21WelpYUXVYRzRnSUNBZ2RHaHBjeTVmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRTWlhCc1lXTmxVM1JoZEdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blJtOXlZMlZWY0dSaGRHVWdQU0JtWVd4elpUdGNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5RMkZzYkdKaFkydHpJRDBnYm5Wc2JEdGNiaUFnSUNCMGFHbHpMbDl3Wlc1a2FXNW5SV3hsYldWdWRDQTlJRzUxYkd3N1hHNWNiaUFnSUNBdkx5QlVhR1Z6WlNCbWFXVnNaSE1nWkc4Z2JtOTBJSEpsWVd4c2VTQnVaV1ZrSUhSdklHSmxJSEpsYzJWMElITnBibU5sSUhSb2FYTWdiMkpxWldOMElHbHpJRzV2WEc0Z0lDQWdMeThnYkc5dVoyVnlJR0ZqWTJWemMybGliR1V1WEc0Z0lDQWdkR2hwY3k1ZlkyOXVkR1Y0ZENBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZmNtOXZkRTV2WkdWSlJDQTlJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NWZkRzl3VEdWMlpXeFhjbUZ3Y0dWeUlEMGdiblZzYkR0Y2JseHVJQ0FnSUM4dklFUmxiR1YwWlNCMGFHVWdjbVZtWlhKbGJtTmxJR1p5YjIwZ2RHaGxJR2x1YzNSaGJtTmxJSFJ2SUhSb2FYTWdhVzUwWlhKdVlXd2djbVZ3Y21WelpXNTBZWFJwYjI1Y2JpQWdJQ0F2THlCM2FHbGphQ0JoYkd4dmR5QjBhR1VnYVc1MFpYSnVZV3h6SUhSdklHSmxJSEJ5YjNCbGNteDVJR05zWldGdVpXUWdkWEFnWlhabGJpQnBaaUIwYUdVZ2RYTmxjbHh1SUNBZ0lDOHZJR3hsWVd0eklHRWdjbVZtWlhKbGJtTmxJSFJ2SUhSb1pTQndkV0pzYVdNZ2FXNXpkR0Z1WTJVdVhHNGdJQ0FnVW1WaFkzUkpibk4wWVc1alpVMWhjQzV5WlcxdmRtVW9hVzV6ZENrN1hHNWNiaUFnSUNBdkx5QlRiMjFsSUdWNGFYTjBhVzVuSUdOdmJYQnZibVZ1ZEhNZ2NtVnNlU0J2YmlCcGJuTjBMbkJ5YjNCeklHVjJaVzRnWVdaMFpYSWdkR2hsZVNkMlpTQmlaV1Z1WEc0Z0lDQWdMeThnWkdWemRISnZlV1ZrSUNocGJpQmxkbVZ1ZENCb1lXNWtiR1Z5Y3lrdVhHNGdJQ0FnTHk4Z1ZFOUVUem9nYVc1emRDNXdjbTl3Y3lBOUlHNTFiR3c3WEc0Z0lDQWdMeThnVkU5RVR6b2dhVzV6ZEM1emRHRjBaU0E5SUc1MWJHdzdYRzRnSUNBZ0x5OGdWRTlFVHpvZ2FXNXpkQzVqYjI1MFpYaDBJRDBnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUm1sc2RHVnljeUIwYUdVZ1kyOXVkR1Y0ZENCdlltcGxZM1FnZEc4Z2IyNXNlU0JqYjI1MFlXbHVJR3RsZVhNZ2MzQmxZMmxtYVdWa0lHbHVYRzRnSUNBcUlHQmpiMjUwWlhoMFZIbHdaWE5nWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCamIyNTBaWGgwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejl2WW1wbFkzUjlYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmZiV0Z6YTBOdmJuUmxlSFE2SUdaMWJtTjBhVzl1SUNoamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlHMWhjMnRsWkVOdmJuUmxlSFFnUFNCdWRXeHNPMXh1SUNBZ0lIWmhjaUJEYjIxd2IyNWxiblFnUFNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNTBlWEJsTzF4dUlDQWdJSFpoY2lCamIyNTBaWGgwVkhsd1pYTWdQU0JEYjIxd2IyNWxiblF1WTI5dWRHVjRkRlI1Y0dWek8xeHVJQ0FnSUdsbUlDZ2hZMjl1ZEdWNGRGUjVjR1Z6S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWlcxd2RIbFBZbXBsWTNRN1hHNGdJQ0FnZlZ4dUlDQWdJRzFoYzJ0bFpFTnZiblJsZUhRZ1BTQjdmVHRjYmlBZ0lDQm1iM0lnS0haaGNpQmpiMjUwWlhoMFRtRnRaU0JwYmlCamIyNTBaWGgwVkhsd1pYTXBJSHRjYmlBZ0lDQWdJRzFoYzJ0bFpFTnZiblJsZUhSYlkyOXVkR1Y0ZEU1aGJXVmRJRDBnWTI5dWRHVjRkRnRqYjI1MFpYaDBUbUZ0WlYwN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWE5yWldSRGIyNTBaWGgwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdhV3gwWlhKeklIUm9aU0JqYjI1MFpYaDBJRzlpYW1WamRDQjBieUJ2Ym14NUlHTnZiblJoYVc0Z2EyVjVjeUJ6Y0dWamFXWnBaV1FnYVc1Y2JpQWdJQ29nWUdOdmJuUmxlSFJVZVhCbGMyQXNJR0Z1WkNCaGMzTmxjblJ6SUhSb1lYUWdkR2hsZVNCaGNtVWdkbUZzYVdRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQmpiMjUwWlhoMFhHNGdJQ0FxSUVCeVpYUjFjbTRnZXo5dlltcGxZM1I5WEc0Z0lDQXFJRUJ3Y21sMllYUmxYRzRnSUNBcUwxeHVJQ0JmY0hKdlkyVnpjME52Ym5SbGVIUTZJR1oxYm1OMGFXOXVJQ2hqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkbUZ5SUcxaGMydGxaRU52Ym5SbGVIUWdQU0IwYUdsekxsOXRZWE5yUTI5dWRHVjRkQ2hqYjI1MFpYaDBLVHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJRU52YlhCdmJtVnVkQ0E5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuUjVjR1U3WEc0Z0lDQWdJQ0JwWmlBb1EyOXRjRzl1Wlc1MExtTnZiblJsZUhSVWVYQmxjeWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDlqYUdWamExQnliM0JVZVhCbGN5aERiMjF3YjI1bGJuUXVZMjl1ZEdWNGRGUjVjR1Z6TENCdFlYTnJaV1JEYjI1MFpYaDBMQ0JTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1ekxtTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiV0Z6YTJWa1EyOXVkR1Y0ZER0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHTjFjbkpsYm5SRGIyNTBaWGgwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjlpYW1WamRIMWNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ292WEc0Z0lGOXdjbTlqWlhOelEyaHBiR1JEYjI1MFpYaDBPaUJtZFc1amRHbHZiaUFvWTNWeWNtVnVkRU52Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnUTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVkSGx3WlR0Y2JpQWdJQ0IyWVhJZ2FXNXpkQ0E5SUhSb2FYTXVYMmx1YzNSaGJtTmxPMXh1SUNBZ0lIWmhjaUJqYUdsc1pFTnZiblJsZUhRZ1BTQnBibk4wTG1kbGRFTm9hV3hrUTI5dWRHVjRkQ0FtSmlCcGJuTjBMbWRsZEVOb2FXeGtRMjl1ZEdWNGRDZ3BPMXh1SUNBZ0lHbG1JQ2hqYUdsc1pFTnZiblJsZUhRcElIdGNiaUFnSUNBZ0lDRW9kSGx3Wlc5bUlFTnZiWEJ2Ym1WdWRDNWphR2xzWkVOdmJuUmxlSFJVZVhCbGN5QTlQVDBnSjI5aWFtVmpkQ2NwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKeVZ6TG1kbGRFTm9hV3hrUTI5dWRHVjRkQ2dwT2lCamFHbHNaRU52Ym5SbGVIUlVlWEJsY3lCdGRYTjBJR0psSUdSbFptbHVaV1FnYVc0Z2IzSmtaWElnZEc4Z0p5QXJJQ2QxYzJVZ1oyVjBRMmhwYkdSRGIyNTBaWGgwS0NrdUp5d2dkR2hwY3k1blpYUk9ZVzFsS0NrZ2ZId2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZZMmhsWTJ0UWNtOXdWSGx3WlhNb1EyOXRjRzl1Wlc1MExtTm9hV3hrUTI5dWRHVjRkRlI1Y0dWekxDQmphR2xzWkVOdmJuUmxlSFFzSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJuTXVZMmhwYkdSRGIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUc1aGJXVWdhVzRnWTJocGJHUkRiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQWdJQ0VvYm1GdFpTQnBiaUJEYjIxd2IyNWxiblF1WTJocGJHUkRiMjUwWlhoMFZIbHdaWE1wSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKeVZ6TG1kbGRFTm9hV3hrUTI5dWRHVjRkQ2dwT2lCclpYa2dYQ0lsYzF3aUlHbHpJRzV2ZENCa1pXWnBibVZrSUdsdUlHTm9hV3hrUTI5dWRHVjRkRlI1Y0dWekxpY3NJSFJvYVhNdVoyVjBUbUZ0WlNncElIeDhJQ2RTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRDY3NJRzVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQmhjM05wWjI0b2UzMHNJR04xY25KbGJuUkRiMjUwWlhoMExDQmphR2xzWkVOdmJuUmxlSFFwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1kzVnljbVZ1ZEVOdmJuUmxlSFE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGQnliMk5sYzNObGN5QndjbTl3Y3lCaWVTQnpaWFIwYVc1bklHUmxabUYxYkhRZ2RtRnNkV1Z6SUdadmNpQjFibk53WldOcFptbGxaQ0J3Y205d2N5QmhibVJjYmlBZ0lDb2dZWE56WlhKMGFXNW5JSFJvWVhRZ2RHaGxJSEJ5YjNCeklHRnlaU0IyWVd4cFpDNGdSRzlsY3lCdWIzUWdiWFYwWVhSbElHbDBjeUJoY21kMWJXVnVkRHNnY21WMGRYSnVjMXh1SUNBZ0tpQmhJRzVsZHlCd2NtOXdjeUJ2WW1wbFkzUWdkMmwwYUNCa1pXWmhkV3gwY3lCdFpYSm5aV1FnYVc0dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnVaWGRRY205d2MxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0dlltcGxZM1I5WEc0Z0lDQXFJRUJ3Y21sMllYUmxYRzRnSUNBcUwxeHVJQ0JmY0hKdlkyVnpjMUJ5YjNCek9pQm1kVzVqZEdsdmJpQW9ibVYzVUhKdmNITXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJRU52YlhCdmJtVnVkQ0E5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuUjVjR1U3WEc0Z0lDQWdJQ0JwWmlBb1EyOXRjRzl1Wlc1MExuQnliM0JVZVhCbGN5a2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWphR1ZqYTFCeWIzQlVlWEJsY3loRGIyMXdiMjVsYm5RdWNISnZjRlI1Y0dWekxDQnVaWGRRY205d2N5d2dVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1Y3k1d2NtOXdLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc1bGQxQnliM0J6TzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJjM05sY25RZ2RHaGhkQ0IwYUdVZ2NISnZjSE1nWVhKbElIWmhiR2xrWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCd2NtOXdWSGx3WlhNZ1RXRndJRzltSUhCeWIzQWdibUZ0WlNCMGJ5QmhJRkpsWVdOMFVISnZjRlI1Y0dWY2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJ5YjNCelhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JzYjJOaGRHbHZiaUJsTG1jdUlGd2ljSEp2Y0Z3aUxDQmNJbU52Ym5SbGVIUmNJaXdnWENKamFHbHNaQ0JqYjI1MFpYaDBYQ0pjYmlBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNvdlhHNGdJRjlqYUdWamExQnliM0JVZVhCbGN6b2dablZ1WTNScGIyNGdLSEJ5YjNCVWVYQmxjeXdnY0hKdmNITXNJR3h2WTJGMGFXOXVLU0I3WEc0Z0lDQWdMeThnVkU5RVR6b2dVM1J2Y0NCMllXeHBaR0YwYVc1bklIQnliM0FnZEhsd1pYTWdhR1Z5WlNCaGJtUWdiMjVzZVNCMWMyVWdkR2hsSUdWc1pXMWxiblJjYmlBZ0lDQXZMeUIyWVd4cFpHRjBhVzl1TGx4dUlDQWdJSFpoY2lCamIyMXdiMjVsYm5ST1lXMWxJRDBnZEdocGN5NW5aWFJPWVcxbEtDazdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NISnZjRTVoYldVZ2FXNGdjSEp2Y0ZSNWNHVnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NISnZjRlI1Y0dWekxtaGhjMDkzYmxCeWIzQmxjblI1S0hCeWIzQk9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWlhKeWIzSTdYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVkdocGN5QnBjeUJwYm5SbGJuUnBiMjVoYkd4NUlHRnVJR2x1ZG1GeWFXRnVkQ0IwYUdGMElHZGxkSE1nWTJGMVoyaDBMaUJKZENkeklIUm9aU0J6WVcxbFhHNGdJQ0FnSUNBZ0lDQWdMeThnWW1Wb1lYWnBiM0lnWVhNZ2QybDBhRzkxZENCMGFHbHpJSE4wWVhSbGJXVnVkQ0JsZUdObGNIUWdkMmwwYUNCaElHSmxkSFJsY2lCdFpYTnpZV2RsTGx4dUlDQWdJQ0FnSUNBZ0lDRW9kSGx3Wlc5bUlIQnliM0JVZVhCbGMxdHdjbTl3VG1GdFpWMGdQVDA5SUNkbWRXNWpkR2x2YmljcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSnlWek9pQWxjeUIwZVhCbElHQWxjMkFnYVhNZ2FXNTJZV3hwWkRzZ2FYUWdiWFZ6ZENCaVpTQmhJR1oxYm1OMGFXOXVMQ0IxYzNWaGJHeDVJQ2NnS3lBblpuSnZiU0JTWldGamRDNVFjbTl3Vkhsd1pYTXVKeXdnWTI5dGNHOXVaVzUwVG1GdFpTQjhmQ0FuVW1WaFkzUWdZMnhoYzNNbkxDQlNaV0ZqZEZCeWIzQlVlWEJsVEc5allYUnBiMjVPWVcxbGMxdHNiMk5oZEdsdmJsMHNJSEJ5YjNCT1lXMWxLU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdaWEp5YjNJZ1BTQndjbTl3Vkhsd1pYTmJjSEp2Y0U1aGJXVmRLSEJ5YjNCekxDQndjbTl3VG1GdFpTd2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2JHOWpZWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxlQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHVnljbTl5SUQwZ1pYZzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHVnljbTl5SUdsdWMzUmhibU5sYjJZZ1JYSnliM0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJYWlNCdFlYa2dkMkZ1ZENCMGJ5QmxlSFJsYm1RZ2RHaHBjeUJzYjJkcFl5Qm1iM0lnYzJsdGFXeGhjaUJsY25KdmNuTWdhVzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QjBiM0F0YkdWMlpXd2djbVZ1WkdWeUlHTmhiR3h6TENCemJ5QkpKMjBnWVdKemRISmhZM1JwYm1jZ2FYUWdZWGRoZVNCcGJuUnZYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1lTQm1kVzVqZEdsdmJpQjBieUJ0YVc1cGJXbDZaU0J5WldaaFkzUnZjbWx1WnlCcGJpQjBhR1VnWm5WMGRYSmxYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlHRmtaR1Z1WkhWdElEMGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLSFJvYVhNcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHeHZZMkYwYVc5dUlEMDlQU0JTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1ekxuQnliM0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUZCeVpXWmhZMlVnWjJsMlpYTWdkWE1nYzI5dFpYUm9hVzVuSUhSdklHSnNZV05yYkdsemRDQnBiaUIzWVhKdWFXNW5JRzF2WkhWc1pWeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkR1lXbHNaV1FnUTI5dGNHOXphWFJsSUhCeWIzQlVlWEJsT2lBbGN5VnpKeXdnWlhKeWIzSXViV1Z6YzJGblpTd2dZV1JrWlc1a2RXMHBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjBaaGFXeGxaQ0JEYjI1MFpYaDBJRlI1Y0dWek9pQWxjeVZ6Snl3Z1pYSnliM0l1YldWemMyRm5aU3dnWVdSa1pXNWtkVzBwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCeVpXTmxhWFpsUTI5dGNHOXVaVzUwT2lCbWRXNWpkR2x2YmlBb2JtVjRkRVZzWlcxbGJuUXNJSFJ5WVc1ellXTjBhVzl1TENCdVpYaDBRMjl1ZEdWNGRDa2dlMXh1SUNBZ0lIWmhjaUJ3Y21WMlJXeGxiV1Z1ZENBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBPMXh1SUNBZ0lIWmhjaUJ3Y21WMlEyOXVkR1Y0ZENBOUlIUm9hWE11WDJOdmJuUmxlSFE3WEc1Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blJXeGxiV1Z1ZENBOUlHNTFiR3c3WEc1Y2JpQWdJQ0IwYUdsekxuVndaR0YwWlVOdmJYQnZibVZ1ZENoMGNtRnVjMkZqZEdsdmJpd2djSEpsZGtWc1pXMWxiblFzSUc1bGVIUkZiR1Z0Wlc1MExDQndjbVYyUTI5dWRHVjRkQ3dnYm1WNGRFTnZiblJsZUhRcE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKWmlCaGJua2diMllnWUY5d1pXNWthVzVuUld4bGJXVnVkR0FzSUdCZmNHVnVaR2x1WjFOMFlYUmxVWFZsZFdWZ0xDQnZjaUJnWDNCbGJtUnBibWRHYjNKalpWVndaR0YwWldCY2JpQWdJQ29nYVhNZ2MyVjBMQ0IxY0dSaGRHVWdkR2hsSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJSEJsY21admNtMVZjR1JoZEdWSlprNWxZMlZ6YzJGeWVUb2dablZ1WTNScGIyNGdLSFJ5WVc1ellXTjBhVzl1S1NCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDNCbGJtUnBibWRGYkdWdFpXNTBJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJRkpsWVdOMFVtVmpiMjVqYVd4bGNpNXlaV05sYVhabFEyOXRjRzl1Wlc1MEtIUm9hWE1zSUhSb2FYTXVYM0JsYm1ScGJtZEZiR1Z0Wlc1MElIeDhJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTENCMGNtRnVjMkZqZEdsdmJpd2dkR2hwY3k1ZlkyOXVkR1Y0ZENrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WDNCbGJtUnBibWRUZEdGMFpWRjFaWFZsSUNFOVBTQnVkV3hzSUh4OElIUm9hWE11WDNCbGJtUnBibWRHYjNKalpWVndaR0YwWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVkRiMjF3YjI1bGJuUW9kSEpoYm5OaFkzUnBiMjRzSUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExDQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ3dnZEdocGN5NWZZMjl1ZEdWNGRDd2dkR2hwY3k1ZlkyOXVkR1Y0ZENrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlFaWEptYjNKdElHRnVJSFZ3WkdGMFpTQjBieUJoSUcxdmRXNTBaV1FnWTI5dGNHOXVaVzUwTGlCVWFHVWdZMjl0Y0c5dVpXNTBWMmxzYkZKbFkyVnBkbVZRY205d2N5QmhibVJjYmlBZ0lDb2djMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsSUcxbGRHaHZaSE1nWVhKbElHTmhiR3hsWkN3Z2RHaGxiaUFvWVhOemRXMXBibWNnZEdobElIVndaR0YwWlNCcGMyNG5kRnh1SUNBZ0tpQnphMmx3Y0dWa0tTQjBhR1VnY21WdFlXbHVhVzVuSUhWd1pHRjBaU0JzYVdabFkzbGpiR1VnYldWMGFHOWtjeUJoY21VZ1kyRnNiR1ZrSUdGdVpDQjBhR1VnUkU5TlhHNGdJQ0FxSUhKbGNISmxjMlZ1ZEdGMGFXOXVJR2x6SUhWd1pHRjBaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFSjVJR1JsWm1GMWJIUXNJSFJvYVhNZ2FXMXdiR1Z0Wlc1MGN5QlNaV0ZqZENkeklISmxibVJsY21sdVp5QmhibVFnY21WamIyNWphV3hwWVhScGIyNGdZV3huYjNKcGRHaHRMbHh1SUNBZ0tpQlRiM0JvYVhOMGFXTmhkR1ZrSUdOc2FXVnVkSE1nYldGNUlIZHBjMmdnZEc4Z2IzWmxjbkpwWkdVZ2RHaHBjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdjSEpsZGxCaGNtVnVkRVZzWlcxbGJuUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJRzVsZUhSUVlYSmxiblJGYkdWdFpXNTBYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2lCQWIzWmxjbkpwWkdGaWJHVmNiaUFnSUNvdlhHNGdJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLSFJ5WVc1ellXTjBhVzl1TENCd2NtVjJVR0Z5Wlc1MFJXeGxiV1Z1ZEN3Z2JtVjRkRkJoY21WdWRFVnNaVzFsYm5Rc0lIQnlaWFpWYm0xaGMydGxaRU52Ym5SbGVIUXNJRzVsZUhSVmJtMWhjMnRsWkVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkQ0E5SUhSb2FYTXVYMmx1YzNSaGJtTmxPMXh1WEc0Z0lDQWdkbUZ5SUc1bGVIUkRiMjUwWlhoMElEMGdkR2hwY3k1ZlkyOXVkR1Y0ZENBOVBUMGdibVY0ZEZWdWJXRnphMlZrUTI5dWRHVjRkQ0EvSUdsdWMzUXVZMjl1ZEdWNGRDQTZJSFJvYVhNdVgzQnliMk5sYzNORGIyNTBaWGgwS0c1bGVIUlZibTFoYzJ0bFpFTnZiblJsZUhRcE8xeHVJQ0FnSUhaaGNpQnVaWGgwVUhKdmNITTdYRzVjYmlBZ0lDQXZMeUJFYVhOMGFXNW5kV2x6YUNCaVpYUjNaV1Z1SUdFZ2NISnZjSE1nZFhCa1lYUmxJSFpsY25OMWN5QmhJSE5wYlhCc1pTQnpkR0YwWlNCMWNHUmhkR1ZjYmlBZ0lDQnBaaUFvY0hKbGRsQmhjbVZ1ZEVWc1pXMWxiblFnUFQwOUlHNWxlSFJRWVhKbGJuUkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQXZMeUJUYTJsd0lHTm9aV05yYVc1bklIQnliM0FnZEhsd1pYTWdZV2RoYVc0Z0xTMGdkMlVnWkc5dUozUWdjbVZoWkNCcGJuTjBMbkJ5YjNCeklIUnZJR0YyYjJsa1hHNGdJQ0FnSUNBdkx5QjNZWEp1YVc1bklHWnZjaUJFVDAwZ1kyOXRjRzl1Wlc1MElIQnliM0J6SUdsdUlIUm9hWE1nZFhCbmNtRmtaVnh1SUNBZ0lDQWdibVY0ZEZCeWIzQnpJRDBnYm1WNGRGQmhjbVZ1ZEVWc1pXMWxiblF1Y0hKdmNITTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUc1bGVIUlFjbTl3Y3lBOUlIUm9hWE11WDNCeWIyTmxjM05RY205d2N5aHVaWGgwVUdGeVpXNTBSV3hsYldWdWRDNXdjbTl3Y3lrN1hHNGdJQ0FnSUNBdkx5QkJiaUIxY0dSaGRHVWdhR1Z5WlNCM2FXeHNJSE5qYUdWa2RXeGxJR0Z1SUhWd1pHRjBaU0JpZFhRZ2FXMXRaV1JwWVhSbGJIa2djMlYwWEc0Z0lDQWdJQ0F2THlCZmNHVnVaR2x1WjFOMFlYUmxVWFZsZFdVZ2QyaHBZMmdnZDJsc2JDQmxibk4xY21VZ2RHaGhkQ0JoYm5rZ2MzUmhkR1VnZFhCa1lYUmxjeUJuWlhSelhHNGdJQ0FnSUNBdkx5QnBiVzFsWkdsaGRHVnNlU0J5WldOdmJtTnBiR1ZrSUdsdWMzUmxZV1FnYjJZZ2QyRnBkR2x1WnlCbWIzSWdkR2hsSUc1bGVIUWdZbUYwWTJndVhHNWNiaUFnSUNBZ0lHbG1JQ2hwYm5OMExtTnZiWEJ2Ym1WdWRGZHBiR3hTWldObGFYWmxVSEp2Y0hNcElIdGNiaUFnSUNBZ0lDQWdhVzV6ZEM1amIyMXdiMjVsYm5SWGFXeHNVbVZqWldsMlpWQnliM0J6S0c1bGVIUlFjbTl3Y3l3Z2JtVjRkRU52Ym5SbGVIUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ1WlhoMFUzUmhkR1VnUFNCMGFHbHpMbDl3Y205alpYTnpVR1Z1WkdsdVoxTjBZWFJsS0c1bGVIUlFjbTl3Y3l3Z2JtVjRkRU52Ym5SbGVIUXBPMXh1WEc0Z0lDQWdkbUZ5SUhOb2IzVnNaRlZ3WkdGMFpTQTlJSFJvYVhNdVgzQmxibVJwYm1kR2IzSmpaVlZ3WkdGMFpTQjhmQ0FoYVc1emRDNXphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1VnZkh3Z2FXNXpkQzV6YUc5MWJHUkRiMjF3YjI1bGJuUlZjR1JoZEdVb2JtVjRkRkJ5YjNCekxDQnVaWGgwVTNSaGRHVXNJRzVsZUhSRGIyNTBaWGgwS1R0Y2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGVYQmxiMllnYzJodmRXeGtWWEJrWVhSbElDRTlQU0FuZFc1a1pXWnBibVZrSnl3Z0p5VnpMbk5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlNncE9pQlNaWFIxY201bFpDQjFibVJsWm1sdVpXUWdhVzV6ZEdWaFpDQnZaaUJoSUNjZ0t5QW5ZbTl2YkdWaGJpQjJZV3gxWlM0Z1RXRnJaU0J6ZFhKbElIUnZJSEpsZEhWeWJpQjBjblZsSUc5eUlHWmhiSE5sTGljc0lIUm9hWE11WjJWMFRtRnRaU2dwSUh4OElDZFNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h6YUc5MWJHUlZjR1JoZEdVcElIdGNiaUFnSUNBZ0lIUm9hWE11WDNCbGJtUnBibWRHYjNKalpWVndaR0YwWlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnTHk4Z1YybHNiQ0J6WlhRZ1lIUm9hWE11Y0hKdmNITmdMQ0JnZEdocGN5NXpkR0YwWldBZ1lXNWtJR0IwYUdsekxtTnZiblJsZUhSZ0xseHVJQ0FnSUNBZ2RHaHBjeTVmY0dWeVptOXliVU52YlhCdmJtVnVkRlZ3WkdGMFpTaHVaWGgwVUdGeVpXNTBSV3hsYldWdWRDd2dibVY0ZEZCeWIzQnpMQ0J1WlhoMFUzUmhkR1VzSUc1bGVIUkRiMjUwWlhoMExDQjBjbUZ1YzJGamRHbHZiaXdnYm1WNGRGVnViV0Z6YTJWa1EyOXVkR1Y0ZENrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQzh2SUVsbUlHbDBKM01nWkdWMFpYSnRhVzVsWkNCMGFHRjBJR0VnWTI5dGNHOXVaVzUwSUhOb2IzVnNaQ0J1YjNRZ2RYQmtZWFJsTENCM1pTQnpkR2xzYkNCM1lXNTBYRzRnSUNBZ0lDQXZMeUIwYnlCelpYUWdjSEp2Y0hNZ1lXNWtJSE4wWVhSbElHSjFkQ0IzWlNCemFHOXlkR04xZENCMGFHVWdjbVZ6ZENCdlppQjBhR1VnZFhCa1lYUmxMbHh1SUNBZ0lDQWdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblFnUFNCdVpYaDBVR0Z5Wlc1MFJXeGxiV1Z1ZER0Y2JpQWdJQ0FnSUhSb2FYTXVYMk52Ym5SbGVIUWdQU0J1WlhoMFZXNXRZWE5yWldSRGIyNTBaWGgwTzF4dUlDQWdJQ0FnYVc1emRDNXdjbTl3Y3lBOUlHNWxlSFJRY205d2N6dGNiaUFnSUNBZ0lHbHVjM1F1YzNSaGRHVWdQU0J1WlhoMFUzUmhkR1U3WEc0Z0lDQWdJQ0JwYm5OMExtTnZiblJsZUhRZ1BTQnVaWGgwUTI5dWRHVjRkRHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnWDNCeWIyTmxjM05RWlc1a2FXNW5VM1JoZEdVNklHWjFibU4wYVc5dUlDaHdjbTl3Y3l3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQnBibk4wSUQwZ2RHaHBjeTVmYVc1emRHRnVZMlU3WEc0Z0lDQWdkbUZ5SUhGMVpYVmxJRDBnZEdocGN5NWZjR1Z1WkdsdVoxTjBZWFJsVVhWbGRXVTdYRzRnSUNBZ2RtRnlJSEpsY0d4aFkyVWdQU0IwYUdsekxsOXdaVzVrYVc1blVtVndiR0ZqWlZOMFlYUmxPMXh1SUNBZ0lIUm9hWE11WDNCbGJtUnBibWRTWlhCc1lXTmxVM1JoZEdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0IwYUdsekxsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpTQTlJRzUxYkd3N1hHNWNiaUFnSUNCcFppQW9JWEYxWlhWbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNXpkQzV6ZEdGMFpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jbVZ3YkdGalpTQW1KaUJ4ZFdWMVpTNXNaVzVuZEdnZ1BUMDlJREVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ4ZFdWMVpWc3dYVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnYm1WNGRGTjBZWFJsSUQwZ1lYTnphV2R1S0h0OUxDQnlaWEJzWVdObElEOGdjWFZsZFdWYk1GMGdPaUJwYm5OMExuTjBZWFJsS1R0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ2NtVndiR0ZqWlNBL0lERWdPaUF3T3lCcElEd2djWFZsZFdVdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCd1lYSjBhV0ZzSUQwZ2NYVmxkV1ZiYVYwN1hHNGdJQ0FnSUNCaGMzTnBaMjRvYm1WNGRGTjBZWFJsTENCMGVYQmxiMllnY0dGeWRHbGhiQ0E5UFQwZ0oyWjFibU4wYVc5dUp5QS9JSEJoY25ScFlXd3VZMkZzYkNocGJuTjBMQ0J1WlhoMFUzUmhkR1VzSUhCeWIzQnpMQ0JqYjI1MFpYaDBLU0E2SUhCaGNuUnBZV3dwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnVaWGgwVTNSaGRHVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUUxbGNtZGxjeUJ1WlhjZ2NISnZjSE1nWVc1a0lITjBZWFJsTENCdWIzUnBabWxsY3lCa1pXeGxaMkYwWlNCdFpYUm9iMlJ6SUc5bUlIVndaR0YwWlNCaGJtUmNiaUFnSUNvZ2NHVnlabTl5YlhNZ2RYQmtZWFJsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnYm1WNGRFVnNaVzFsYm5RZ1RtVjRkQ0JsYkdWdFpXNTBYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCdVpYaDBVSEp2Y0hNZ1RtVjRkQ0J3ZFdKc2FXTWdiMkpxWldOMElIUnZJSE5sZENCaGN5QndjbTl3WlhKMGFXVnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHNWxlSFJUZEdGMFpTQk9aWGgwSUc5aWFtVmpkQ0IwYnlCelpYUWdZWE1nYzNSaGRHVXVYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRU52Ym5SbGVIUWdUbVY0ZENCd2RXSnNhV01nYjJKcVpXTjBJSFJ2SUhObGRDQmhjeUJqYjI1MFpYaDBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2RXNXRZWE5yWldSRGIyNTBaWGgwWEc0Z0lDQXFJRUJ3Y21sMllYUmxYRzRnSUNBcUwxeHVJQ0JmY0dWeVptOXliVU52YlhCdmJtVnVkRlZ3WkdGMFpUb2dablZ1WTNScGIyNGdLRzVsZUhSRmJHVnRaVzUwTENCdVpYaDBVSEp2Y0hNc0lHNWxlSFJUZEdGMFpTd2dibVY0ZEVOdmJuUmxlSFFzSUhSeVlXNXpZV04wYVc5dUxDQjFibTFoYzJ0bFpFTnZiblJsZUhRcElIdGNiaUFnSUNCMllYSWdhVzV6ZENBOUlIUm9hWE11WDJsdWMzUmhibU5sTzF4dVhHNGdJQ0FnZG1GeUlHaGhjME52YlhCdmJtVnVkRVJwWkZWd1pHRjBaU0E5SUVKdmIyeGxZVzRvYVc1emRDNWpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVXBPMXh1SUNBZ0lIWmhjaUJ3Y21WMlVISnZjSE03WEc0Z0lDQWdkbUZ5SUhCeVpYWlRkR0YwWlR0Y2JpQWdJQ0IyWVhJZ2NISmxka052Ym5SbGVIUTdYRzRnSUNBZ2FXWWdLR2hoYzBOdmJYQnZibVZ1ZEVScFpGVndaR0YwWlNrZ2UxeHVJQ0FnSUNBZ2NISmxkbEJ5YjNCeklEMGdhVzV6ZEM1d2NtOXdjenRjYmlBZ0lDQWdJSEJ5WlhaVGRHRjBaU0E5SUdsdWMzUXVjM1JoZEdVN1hHNGdJQ0FnSUNCd2NtVjJRMjl1ZEdWNGRDQTlJR2x1YzNRdVkyOXVkR1Y0ZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FXNXpkQzVqYjIxd2IyNWxiblJYYVd4c1ZYQmtZWFJsS1NCN1hHNGdJQ0FnSUNCcGJuTjBMbU52YlhCdmJtVnVkRmRwYkd4VmNHUmhkR1VvYm1WNGRGQnliM0J6TENCdVpYaDBVM1JoZEdVc0lHNWxlSFJEYjI1MFpYaDBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ0E5SUc1bGVIUkZiR1Z0Wlc1ME8xeHVJQ0FnSUhSb2FYTXVYMk52Ym5SbGVIUWdQU0IxYm0xaGMydGxaRU52Ym5SbGVIUTdYRzRnSUNBZ2FXNXpkQzV3Y205d2N5QTlJRzVsZUhSUWNtOXdjenRjYmlBZ0lDQnBibk4wTG5OMFlYUmxJRDBnYm1WNGRGTjBZWFJsTzF4dUlDQWdJR2x1YzNRdVkyOXVkR1Y0ZENBOUlHNWxlSFJEYjI1MFpYaDBPMXh1WEc0Z0lDQWdkR2hwY3k1ZmRYQmtZWFJsVW1WdVpHVnlaV1JEYjIxd2IyNWxiblFvZEhKaGJuTmhZM1JwYjI0c0lIVnViV0Z6YTJWa1EyOXVkR1Y0ZENrN1hHNWNiaUFnSUNCcFppQW9hR0Z6UTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsS1NCN1hHNGdJQ0FnSUNCMGNtRnVjMkZqZEdsdmJpNW5aWFJTWldGamRFMXZkVzUwVW1WaFpIa29LUzVsYm5GMVpYVmxLR2x1YzNRdVkyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbExtSnBibVFvYVc1emRDd2djSEpsZGxCeWIzQnpMQ0J3Y21WMlUzUmhkR1VzSUhCeVpYWkRiMjUwWlhoMEtTd2dhVzV6ZENrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRZV3hzSUhSb1pTQmpiMjF3YjI1bGJuUW5jeUJnY21WdVpHVnlZQ0J0WlhSb2IyUWdZVzVrSUhWd1pHRjBaU0IwYUdVZ1JFOU5JR0ZqWTI5eVpHbHVaMng1TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdYM1Z3WkdGMFpWSmxibVJsY21Wa1EyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9kSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2NISmxka052YlhCdmJtVnVkRWx1YzNSaGJtTmxJRDBnZEdocGN5NWZjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUTdYRzRnSUNBZ2RtRnlJSEJ5WlhaU1pXNWtaWEpsWkVWc1pXMWxiblFnUFNCd2NtVjJRMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXVYMk4xY25KbGJuUkZiR1Z0Wlc1ME8xeHVJQ0FnSUhaaGNpQnVaWGgwVW1WdVpHVnlaV1JGYkdWdFpXNTBJRDBnZEdocGN5NWZjbVZ1WkdWeVZtRnNhV1JoZEdWa1EyOXRjRzl1Wlc1MEtDazdYRzRnSUNBZ2FXWWdLSE5vYjNWc1pGVndaR0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLSEJ5WlhaU1pXNWtaWEpsWkVWc1pXMWxiblFzSUc1bGVIUlNaVzVrWlhKbFpFVnNaVzFsYm5RcEtTQjdYRzRnSUNBZ0lDQlNaV0ZqZEZKbFkyOXVZMmxzWlhJdWNtVmpaV2wyWlVOdmJYQnZibVZ1ZENod2NtVjJRMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJRzVsZUhSU1pXNWtaWEpsWkVWc1pXMWxiblFzSUhSeVlXNXpZV04wYVc5dUxDQjBhR2x6TGw5d2NtOWpaWE56UTJocGJHUkRiMjUwWlhoMEtHTnZiblJsZUhRcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1ZHaGxjMlVnZEhkdklFbEVjeUJoY21VZ1lXTjBkV0ZzYkhrZ2RHaGxJSE5oYldVaElFSjFkQ0J1YjNSb2FXNW5JSE5vYjNWc1pDQnlaV3g1SUc5dUlIUm9ZWFF1WEc0Z0lDQWdJQ0IyWVhJZ2RHaHBjMGxFSUQwZ2RHaHBjeTVmY205dmRFNXZaR1ZKUkR0Y2JpQWdJQ0FnSUhaaGNpQndjbVYyUTI5dGNHOXVaVzUwU1VRZ1BTQndjbVYyUTI5dGNHOXVaVzUwU1c1emRHRnVZMlV1WDNKdmIzUk9iMlJsU1VRN1hHNGdJQ0FnSUNCU1pXRmpkRkpsWTI5dVkybHNaWEl1ZFc1dGIzVnVkRU52YlhCdmJtVnVkQ2h3Y21WMlEyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDJsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvYm1WNGRGSmxibVJsY21Wa1JXeGxiV1Z1ZENrN1hHNGdJQ0FnSUNCMllYSWdibVY0ZEUxaGNtdDFjQ0E5SUZKbFlXTjBVbVZqYjI1amFXeGxjaTV0YjNWdWRFTnZiWEJ2Ym1WdWRDaDBhR2x6TGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZEN3Z2RHaHBjMGxFTENCMGNtRnVjMkZqZEdsdmJpd2dkR2hwY3k1ZmNISnZZMlZ6YzBOb2FXeGtRMjl1ZEdWNGRDaGpiMjUwWlhoMEtTazdYRzRnSUNBZ0lDQjBhR2x6TGw5eVpYQnNZV05sVG05a1pWZHBkR2hOWVhKcmRYQkNlVWxFS0hCeVpYWkRiMjF3YjI1bGJuUkpSQ3dnYm1WNGRFMWhjbXQxY0NrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjSEp2ZEdWamRHVmtYRzRnSUNBcUwxeHVJQ0JmY21Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd1FubEpSRG9nWm5WdVkzUnBiMjRnS0hCeVpYWkRiMjF3YjI1bGJuUkpSQ3dnYm1WNGRFMWhjbXQxY0NrZ2UxeHVJQ0FnSUZKbFlXTjBRMjl0Y0c5dVpXNTBSVzUyYVhKdmJtMWxiblF1Y21Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd1FubEpSQ2h3Y21WMlEyOXRjRzl1Wlc1MFNVUXNJRzVsZUhSTllYSnJkWEFwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjSEp2ZEdWamRHVmtYRzRnSUNBcUwxeHVJQ0JmY21WdVpHVnlWbUZzYVdSaGRHVmtRMjl0Y0c5dVpXNTBWMmwwYUc5MWRFOTNibVZ5VDNKRGIyNTBaWGgwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNRZ1BTQjBhR2x6TGw5cGJuTjBZVzVqWlR0Y2JpQWdJQ0IyWVhJZ2NtVnVaR1Z5WldSRGIyMXdiMjVsYm5RZ1BTQnBibk4wTG5KbGJtUmxjaWdwTzF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJYWlNCaGJHeHZkeUJoZFhSdkxXMXZZMnR6SUhSdklIQnliMk5sWldRZ1lYTWdhV1lnZEdobGVTZHlaU0J5WlhSMWNtNXBibWNnYm5Wc2JDNWNiaUFnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUWdQVDA5SUNkMWJtUmxabWx1WldRbklDWW1JR2x1YzNRdWNtVnVaR1Z5TGw5cGMwMXZZMnRHZFc1amRHbHZiaWtnZTF4dUlDQWdJQ0FnSUNBdkx5QlVhR2x6SUdseklIQnliMkpoWW14NUlHSmhaQ0J3Y21GamRHbGpaUzRnUTI5dWMybGtaWElnZDJGeWJtbHVaeUJvWlhKbElHRnVaRnh1SUNBZ0lDQWdJQ0F2THlCa1pYQnlaV05oZEdsdVp5QjBhR2x6SUdOdmJuWmxibWxsYm1ObExseHVJQ0FnSUNBZ0lDQnlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDQTlJRzUxYkd3N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSEpsYm1SbGNtVmtRMjl0Y0c5dVpXNTBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ1gzSmxibVJsY2xaaGJHbGtZWFJsWkVOdmJYQnZibVZ1ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIWmhjaUJ5Wlc1a1pYSmxaRU52YlhCdmJtVnVkRHRjYmlBZ0lDQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMGdkR2hwY3p0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NtVnVaR1Z5WldSRGIyMXdiMjVsYm5RZ1BTQjBhR2x6TGw5eVpXNWtaWEpXWVd4cFpHRjBaV1JEYjIxd2IyNWxiblJYYVhSb2IzVjBUM2R1WlhKUGNrTnZiblJsZUhRb0tUdGNiaUFnSUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUNBZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENBOUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lDRW9YRzRnSUNBZ0x5OGdWRTlFVHpvZ1FXNGdZR2x6Vm1Gc2FXUk9iMlJsWUNCbWRXNWpkR2x2YmlCM2IzVnNaQ0J3Y205aVlXSnNlU0JpWlNCdGIzSmxJR0Z3Y0hKdmNISnBZWFJsWEc0Z0lDQWdjbVZ1WkdWeVpXUkRiMjF3YjI1bGJuUWdQVDA5SUc1MWJHd2dmSHdnY21WdVpHVnlaV1JEYjIxd2IyNWxiblFnUFQwOUlHWmhiSE5sSUh4OElGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaHlaVzVrWlhKbFpFTnZiWEJ2Ym1WdWRDa3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0p5VnpMbkpsYm1SbGNpZ3BPaUJCSUhaaGJHbGtJRkpsWVdOMFEyOXRjRzl1Wlc1MElHMTFjM1FnWW1VZ2NtVjBkWEp1WldRdUlGbHZkU0J0WVhrZ2FHRjJaU0FuSUNzZ0ozSmxkSFZ5Ym1Wa0lIVnVaR1ZtYVc1bFpDd2dZVzRnWVhKeVlYa2diM0lnYzI5dFpTQnZkR2hsY2lCcGJuWmhiR2xrSUc5aWFtVmpkQzRuTENCMGFHbHpMbWRsZEU1aGJXVW9LU0I4ZkNBblVtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblFuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2NtVjBkWEp1SUhKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQk1ZWHBwYkhrZ1lXeHNiMk5oZEdWeklIUm9aU0J5WldaeklHOWlhbVZqZENCaGJtUWdjM1J2Y21WeklHQmpiMjF3YjI1bGJuUmdJR0Z6SUdCeVpXWmdMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY21WbUlGSmxabVZ5Wlc1alpTQnVZVzFsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMk52YlhCdmJtVnVkSDBnWTI5dGNHOXVaVzUwSUVOdmJYQnZibVZ1ZENCMGJ5QnpkRzl5WlNCaGN5QmdjbVZtWUM1Y2JpQWdJQ29nUUdacGJtRnNYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmhkSFJoWTJoU1pXWTZJR1oxYm1OMGFXOXVJQ2h5WldZc0lHTnZiWEJ2Ym1WdWRDa2dlMXh1SUNBZ0lIWmhjaUJwYm5OMElEMGdkR2hwY3k1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncE8xeHVJQ0FnSUNFb2FXNXpkQ0FoUFNCdWRXeHNLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFRkR0YwWld4bGMzTWdablZ1WTNScGIyNGdZMjl0Y0c5dVpXNTBjeUJqWVc1dWIzUWdhR0YyWlNCeVpXWnpMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCMllYSWdjSFZpYkdsalEyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1BTQmpiMjF3YjI1bGJuUXVaMlYwVUhWaWJHbGpTVzV6ZEdGdVkyVW9LVHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJR052YlhCdmJtVnVkRTVoYldVZ1BTQmpiMjF3YjI1bGJuUWdKaVlnWTI5dGNHOXVaVzUwTG1kbGRFNWhiV1VnUHlCamIyMXdiMjVsYm5RdVoyVjBUbUZ0WlNncElEb2dKMkVnWTI5dGNHOXVaVzUwSnp0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIQjFZbXhwWTBOdmJYQnZibVZ1ZEVsdWMzUmhibU5sSUNFOUlHNTFiR3dzSUNkVGRHRjBaV3hsYzNNZ1puVnVZM1JwYjI0Z1kyOXRjRzl1Wlc1MGN5QmpZVzV1YjNRZ1ltVWdaMmwyWlc0Z2NtVm1jeUFuSUNzZ0p5aFRaV1VnY21WbUlGd2lKWE5jSWlCcGJpQWxjeUJqY21WaGRHVmtJR0o1SUNWektTNGdKeUFySUNkQmRIUmxiWEIwY3lCMGJ5QmhZMk5sYzNNZ2RHaHBjeUJ5WldZZ2QybHNiQ0JtWVdsc0xpY3NJSEpsWml3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnZEdocGN5NW5aWFJPWVcxbEtDa3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmlBZ0lDQjJZWElnY21WbWN5QTlJR2x1YzNRdWNtVm1jeUE5UFQwZ1pXMXdkSGxQWW1wbFkzUWdQeUJwYm5OMExuSmxabk1nUFNCN2ZTQTZJR2x1YzNRdWNtVm1jenRjYmlBZ0lDQnlaV1p6VzNKbFpsMGdQU0J3ZFdKc2FXTkRiMjF3YjI1bGJuUkpibk4wWVc1alpUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWMFlXTm9aWE1nWVNCeVpXWmxjbVZ1WTJVZ2JtRnRaUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKbFppQk9ZVzFsSUhSdklHUmxjbVZtWlhKbGJtTmxMbHh1SUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ29nUUhCeWFYWmhkR1ZjYmlBZ0lDb3ZYRzRnSUdSbGRHRmphRkpsWmpvZ1puVnVZM1JwYjI0Z0tISmxaaWtnZTF4dUlDQWdJSFpoY2lCeVpXWnpJRDBnZEdocGN5NW5aWFJRZFdKc2FXTkpibk4wWVc1alpTZ3BMbkpsWm5NN1hHNGdJQ0FnWkdWc1pYUmxJSEpsWm5OYmNtVm1YVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJR0VnZEdWNGRDQmtaWE5qY21sd2RHbHZiaUJ2WmlCMGFHVWdZMjl0Y0c5dVpXNTBJSFJvWVhRZ1kyRnVJR0psSUhWelpXUWdkRzhnYVdSbGJuUnBabmtnYVhSY2JpQWdJQ29nYVc0Z1pYSnliM0lnYldWemMyRm5aWE11WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdWR2hsSUc1aGJXVWdiM0lnYm5Wc2JDNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQm5aWFJPWVcxbE9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdkbUZ5SUhSNWNHVWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1MGVYQmxPMXh1SUNBZ0lIWmhjaUJqYjI1emRISjFZM1J2Y2lBOUlIUm9hWE11WDJsdWMzUmhibU5sSUNZbUlIUm9hWE11WDJsdWMzUmhibU5sTG1OdmJuTjBjblZqZEc5eU8xeHVJQ0FnSUhKbGRIVnliaUIwZVhCbExtUnBjM0JzWVhsT1lXMWxJSHg4SUdOdmJuTjBjblZqZEc5eUlDWW1JR052Ym5OMGNuVmpkRzl5TG1ScGMzQnNZWGxPWVcxbElIeDhJSFI1Y0dVdWJtRnRaU0I4ZkNCamIyNXpkSEoxWTNSdmNpQW1KaUJqYjI1emRISjFZM1J2Y2k1dVlXMWxJSHg4SUc1MWJHdzdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnY0hWaWJHbGpiSGtnWVdOalpYTnphV0pzWlNCeVpYQnlaWE5sYm5SaGRHbHZiaUJ2WmlCMGFHbHpJR052YlhCdmJtVnVkQ0F0SUdrdVpTNGdkMmhoZEZ4dUlDQWdLaUJwY3lCbGVIQnZjMlZrSUdKNUlISmxabk1nWVc1a0lISmxkSFZ5Ym1Wa0lHSjVJSEpsYm1SbGNpNGdRMkZ1SUdKbElHNTFiR3dnWm05eUlITjBZWFJsYkdWemMxeHVJQ0FnS2lCamIyMXdiMjVsYm5SekxseHVJQ0FnS2x4dUlDQWdLaUJBY21WMGRYSnVJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdkR2hsSUhCMVlteHBZeUJqYjIxd2IyNWxiblFnYVc1emRHRnVZMlV1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWjJWMFVIVmliR2xqU1c1emRHRnVZMlU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMllYSWdhVzV6ZENBOUlIUm9hWE11WDJsdWMzUmhibU5sTzF4dUlDQWdJR2xtSUNocGJuTjBJR2x1YzNSaGJtTmxiMllnVTNSaGRHVnNaWE56UTI5dGNHOXVaVzUwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR2x1YzNRN1hHNGdJSDBzWEc1Y2JpQWdMeThnVTNSMVlseHVJQ0JmYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkRG9nYm5Wc2JGeHVYRzU5TzF4dVhHNVNaV0ZqZEZCbGNtWXViV1ZoYzNWeVpVMWxkR2h2WkhNb1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblJOYVhocGJpd2dKMUpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MEp5d2dlMXh1SUNCdGIzVnVkRU52YlhCdmJtVnVkRG9nSjIxdmRXNTBRMjl0Y0c5dVpXNTBKeXhjYmlBZ2RYQmtZWFJsUTI5dGNHOXVaVzUwT2lBbmRYQmtZWFJsUTI5dGNHOXVaVzUwSnl4Y2JpQWdYM0psYm1SbGNsWmhiR2xrWVhSbFpFTnZiWEJ2Ym1WdWREb2dKMTl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUW5YRzU5S1R0Y2JseHVkbUZ5SUZKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBJRDBnZTF4dVhHNGdJRTFwZUdsdU9pQlNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEUxcGVHbHVYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NXG4gKi9cblxuLyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18qL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJlYWN0RGVmYXVsdEluamVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0SW5qZWN0aW9uJyk7XG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VIYW5kbGVzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9uJyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUnKTtcbnZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciA9IHJlcXVpcmUoJy4vcmVuZGVyU3VidHJlZUludG9Db250YWluZXInKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5SZWFjdERlZmF1bHRJbmplY3Rpb24uaW5qZWN0KCk7XG5cbnZhciByZW5kZXIgPSBSZWFjdFBlcmYubWVhc3VyZSgnUmVhY3QnLCAncmVuZGVyJywgUmVhY3RNb3VudC5yZW5kZXIpO1xuXG52YXIgUmVhY3QgPSB7XG4gIGZpbmRET01Ob2RlOiBmaW5kRE9NTm9kZSxcbiAgcmVuZGVyOiByZW5kZXIsXG4gIHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZSxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczogUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzLFxuICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogcmVuZGVyU3VidHJlZUludG9Db250YWluZXJcbn07XG5cbi8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJkbGVzcyBvZiBicm93c2VyLlxuLy8gQWxsb3dzIGZvciBkZWJ1Z2dpbmcgd2hlbiB0aGUgaG9vayBpcyBpbmplY3RlZCBvbiB0aGUgcGFnZS5cbi8qIGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXG5pZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7XG4gICAgQ3VycmVudE93bmVyOiBSZWFjdEN1cnJlbnRPd25lcixcbiAgICBJbnN0YW5jZUhhbmRsZXM6IFJlYWN0SW5zdGFuY2VIYW5kbGVzLFxuICAgIE1vdW50OiBSZWFjdE1vdW50LFxuICAgIFJlY29uY2lsZXI6IFJlYWN0UmVjb25jaWxlcixcbiAgICBUZXh0Q29tcG9uZW50OiBSZWFjdERPTVRleHRDb21wb25lbnRcbiAgfSk7XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG4gIGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93LnNlbGYpIHtcblxuICAgIC8vIEZpcnN0IGNoZWNrIGlmIGRldnRvb2xzIGlzIG5vdCBpbnN0YWxsZWRcbiAgICBpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIHdlJ3JlIGluIENocm9tZSBvciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3QgaW5zdGFsbGVkLlxuICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2VG9vbHMgZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHdlJ3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUgYW5kIHByb3ZpZGVcbiAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50aW5nIGNvbXBhdGliaWxpdHkgbW9kZVxuICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaWVDb21wYXRpYmlsaXR5TW9kZSwgJ0ludGVybmV0IEV4cGxvcmVyIGlzIHJ1bm5pbmcgaW4gY29tcGF0aWJpbGl0eSBtb2RlOyBwbGVhc2UgYWRkIHRoZSAnICsgJ2ZvbGxvd2luZyB0YWcgdG8geW91ciBIVE1MIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZzogJyArICc8bWV0YSBodHRwLWVxdWl2PVwiWC1VQS1Db21wYXRpYmxlXCIgY29udGVudD1cIklFPWVkZ2VcIiAvPicpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGV4cGVjdGVkRmVhdHVyZXMgPSBbXG4gICAgLy8gc2hpbXNcbiAgICBBcnJheS5pc0FycmF5LCBBcnJheS5wcm90b3R5cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5ub3csIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCwgU3RyaW5nLnByb3RvdHlwZS50cmltLFxuXG4gICAgLy8gc2hhbXNcbiAgICBPYmplY3QuY3JlYXRlLCBPYmplY3QuZnJlZXplXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRGZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFleHBlY3RlZEZlYXR1cmVzW2ldKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ09uZSBvciBtb3JlIEVTNSBzaGltL3NoYW1zIGV4cGVjdGVkIGJ5IFJlYWN0IGFyZSBub3QgYXZhaWxhYmxlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1wb2x5ZmlsbHMnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkVUMDB1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRVJQVFZ4dUlDb3ZYRzVjYmk4cUlHZHNiMkpoYkhNZ1gxOVNSVUZEVkY5RVJWWlVUMDlNVTE5SFRFOUNRVXhmU0U5UFMxOWZLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SnlrN1hHNTJZWElnVW1WaFkzUkVUMDFVWlhoMFEyOXRjRzl1Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVlJsZUhSRGIyMXdiMjVsYm5RbktUdGNiblpoY2lCU1pXRmpkRVJsWm1GMWJIUkpibXBsWTNScGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSR1ZtWVhWc2RFbHVhbVZqZEdsdmJpY3BPMXh1ZG1GeUlGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5Y3BPMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUVzkxYm5RbktUdGNiblpoY2lCU1pXRmpkRkJsY21ZZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVHVnlaaWNwTzF4dWRtRnlJRkpsWVdOMFVtVmpiMjVqYVd4bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlNaV052Ym1OcGJHVnlKeWs3WEc1MllYSWdVbVZoWTNSVmNHUmhkR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaWE1uS1R0Y2JuWmhjaUJTWldGamRGWmxjbk5wYjI0Z1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFZtVnljMmx2YmljcE8xeHVYRzUyWVhJZ1ptbHVaRVJQVFU1dlpHVWdQU0J5WlhGMWFYSmxLQ2N1TDJacGJtUkVUMDFPYjJSbEp5azdYRzUyWVhJZ2NtVnVaR1Z5VTNWaWRISmxaVWx1ZEc5RGIyNTBZV2x1WlhJZ1BTQnlaWEYxYVhKbEtDY3VMM0psYm1SbGNsTjFZblJ5WldWSmJuUnZRMjl1ZEdGcGJtVnlKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dVVtVmhZM1JFWldaaGRXeDBTVzVxWldOMGFXOXVMbWx1YW1WamRDZ3BPMXh1WEc1MllYSWdjbVZ1WkdWeUlEMGdVbVZoWTNSUVpYSm1MbTFsWVhOMWNtVW9KMUpsWVdOMEp5d2dKM0psYm1SbGNpY3NJRkpsWVdOMFRXOTFiblF1Y21WdVpHVnlLVHRjYmx4dWRtRnlJRkpsWVdOMElEMGdlMXh1SUNCbWFXNWtSRTlOVG05a1pUb2dabWx1WkVSUFRVNXZaR1VzWEc0Z0lISmxibVJsY2pvZ2NtVnVaR1Z5TEZ4dUlDQjFibTF2ZFc1MFEyOXRjRzl1Wlc1MFFYUk9iMlJsT2lCU1pXRmpkRTF2ZFc1MExuVnViVzkxYm5SRGIyMXdiMjVsYm5SQmRFNXZaR1VzWEc0Z0lIWmxjbk5wYjI0NklGSmxZV04wVm1WeWMybHZiaXhjYmx4dUlDQXZLaUJsYzJ4cGJuUXRaR2x6WVdKc1pTQmpZVzFsYkdOaGMyVWdLaTljYmlBZ2RXNXpkR0ZpYkdWZlltRjBZMmhsWkZWd1pHRjBaWE02SUZKbFlXTjBWWEJrWVhSbGN5NWlZWFJqYUdWa1ZYQmtZWFJsY3l4Y2JpQWdkVzV6ZEdGaWJHVmZjbVZ1WkdWeVUzVmlkSEpsWlVsdWRHOURiMjUwWVdsdVpYSTZJSEpsYm1SbGNsTjFZblJ5WldWSmJuUnZRMjl1ZEdGcGJtVnlYRzU5TzF4dVhHNHZMeUJKYm1wbFkzUWdkR2hsSUhKMWJuUnBiV1VnYVc1MGJ5QmhJR1JsZG5SdmIyeHpJR2RzYjJKaGJDQm9iMjlySUhKbFoyRnlaR3hsYzNNZ2IyWWdZbkp2ZDNObGNpNWNiaTh2SUVGc2JHOTNjeUJtYjNJZ1pHVmlkV2RuYVc1bklIZG9aVzRnZEdobElHaHZiMnNnYVhNZ2FXNXFaV04wWldRZ2IyNGdkR2hsSUhCaFoyVXVYRzR2S2lCbGMyeHBiblF0Wlc1aFlteGxJR05oYldWc1kyRnpaU0FxTDF4dWFXWWdLSFI1Y0dWdlppQmZYMUpGUVVOVVgwUkZWbFJQVDB4VFgwZE1UMEpCVEY5SVQwOUxYMThnSVQwOUlDZDFibVJsWm1sdVpXUW5JQ1ltSUhSNWNHVnZaaUJmWDFKRlFVTlVYMFJGVmxSUFQweFRYMGRNVDBKQlRGOUlUMDlMWDE4dWFXNXFaV04wSUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lGOWZVa1ZCUTFSZlJFVldWRTlQVEZOZlIweFBRa0ZNWDBoUFQwdGZYeTVwYm1wbFkzUW9lMXh1SUNBZ0lFTjFjbkpsYm5SUGQyNWxjam9nVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWElzWEc0Z0lDQWdTVzV6ZEdGdVkyVklZVzVrYkdWek9pQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeXhjYmlBZ0lDQk5iM1Z1ZERvZ1VtVmhZM1JOYjNWdWRDeGNiaUFnSUNCU1pXTnZibU5wYkdWeU9pQlNaV0ZqZEZKbFkyOXVZMmxzWlhJc1hHNGdJQ0FnVkdWNGRFTnZiWEJ2Ym1WdWREb2dVbVZoWTNSRVQwMVVaWGgwUTI5dGNHOXVaVzUwWEc0Z0lIMHBPMXh1ZlZ4dVhHNXBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0IyWVhJZ1JYaGxZM1YwYVc5dVJXNTJhWEp2Ym0xbGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZENjcE8xeHVJQ0JwWmlBb1JYaGxZM1YwYVc5dVJXNTJhWEp2Ym0xbGJuUXVZMkZ1VlhObFJFOU5JQ1ltSUhkcGJtUnZkeTUwYjNBZ1BUMDlJSGRwYm1SdmR5NXpaV3htS1NCN1hHNWNiaUFnSUNBdkx5QkdhWEp6ZENCamFHVmpheUJwWmlCa1pYWjBiMjlzY3lCcGN5QnViM1FnYVc1emRHRnNiR1ZrWEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJmWDFKRlFVTlVYMFJGVmxSUFQweFRYMGRNVDBKQlRGOUlUMDlMWDE4Z1BUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBdkx5QkpaaUIzWlNkeVpTQnBiaUJEYUhKdmJXVWdiM0lnUm1seVpXWnZlQ3dnY0hKdmRtbGtaU0JoSUdSdmQyNXNiMkZrSUd4cGJtc2dhV1lnYm05MElHbHVjM1JoYkd4bFpDNWNiaUFnSUNBZ0lHbG1JQ2h1WVhacFoyRjBiM0l1ZFhObGNrRm5aVzUwTG1sdVpHVjRUMllvSjBOb2NtOXRaU2NwSUQ0Z0xURWdKaVlnYm1GMmFXZGhkRzl5TG5WelpYSkJaMlZ1ZEM1cGJtUmxlRTltS0NkRlpHZGxKeWtnUFQwOUlDMHhJSHg4SUc1aGRtbG5ZWFJ2Y2k1MWMyVnlRV2RsYm5RdWFXNWtaWGhQWmlnblJtbHlaV1p2ZUNjcElENGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWduUkc5M2JteHZZV1FnZEdobElGSmxZV04wSUVSbGRsUnZiMnh6SUdadmNpQmhJR0psZEhSbGNpQmtaWFpsYkc5d2JXVnVkQ0JsZUhCbGNtbGxibU5sT2lBbklDc2dKMmgwZEhCek9pOHZabUl1YldVdmNtVmhZM1F0WkdWMmRHOXZiSE1uS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCSlppQjNaU2R5WlNCcGJpQkpSVGdzSUdOb1pXTnJJSFJ2SUhObFpTQnBaaUIzWlNCaGNtVWdhVzRnWTI5dGNHRjBhV0pwYkdsMGVTQnRiMlJsSUdGdVpDQndjbTkyYVdSbFhHNGdJQ0FnTHk4Z2FXNW1iM0p0WVhScGIyNGdiMjRnY0hKbGRtVnVkR2x1WnlCamIyMXdZWFJwWW1sc2FYUjVJRzF2WkdWY2JpQWdJQ0IyWVhJZ2FXVkRiMjF3WVhScFltbHNhWFI1VFc5a1pTQTlJR1J2WTNWdFpXNTBMbVJ2WTNWdFpXNTBUVzlrWlNBbUppQmtiMk4xYldWdWRDNWtiMk4xYldWdWRFMXZaR1VnUENBNE8xeHVYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JV2xsUTI5dGNHRjBhV0pwYkdsMGVVMXZaR1VzSUNkSmJuUmxjbTVsZENCRmVIQnNiM0psY2lCcGN5QnlkVzV1YVc1bklHbHVJR052YlhCaGRHbGlhV3hwZEhrZ2JXOWtaVHNnY0d4bFlYTmxJR0ZrWkNCMGFHVWdKeUFySUNkbWIyeHNiM2RwYm1jZ2RHRm5JSFJ2SUhsdmRYSWdTRlJOVENCMGJ5QndjbVYyWlc1MElIUm9hWE1nWm5KdmJTQm9ZWEJ3Wlc1cGJtYzZJQ2NnS3lBblBHMWxkR0VnYUhSMGNDMWxjWFZwZGoxY0lsZ3RWVUV0UTI5dGNHRjBhV0pzWlZ3aUlHTnZiblJsYm5ROVhDSkpSVDFsWkdkbFhDSWdMejRuS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUJsZUhCbFkzUmxaRVpsWVhSMWNtVnpJRDBnVzF4dUlDQWdJQzh2SUhOb2FXMXpYRzRnSUNBZ1FYSnlZWGt1YVhOQmNuSmhlU3dnUVhKeVlYa3VjSEp2ZEc5MGVYQmxMbVYyWlhKNUxDQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdVptOXlSV0ZqYUN3Z1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG1sdVpHVjRUMllzSUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzV0WVhBc0lFUmhkR1V1Ym05M0xDQkdkVzVqZEdsdmJpNXdjbTkwYjNSNWNHVXVZbWx1WkN3Z1QySnFaV04wTG10bGVYTXNJRk4wY21sdVp5NXdjbTkwYjNSNWNHVXVjM0JzYVhRc0lGTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWRISnBiU3hjYmx4dUlDQWdJQzh2SUhOb1lXMXpYRzRnSUNBZ1QySnFaV04wTG1OeVpXRjBaU3dnVDJKcVpXTjBMbVp5WldWNlpWMDdYRzVjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR1Y0Y0dWamRHVmtSbVZoZEhWeVpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdsbUlDZ2haWGh3WldOMFpXUkdaV0YwZFhKbGMxdHBYU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpiMnhsTG1WeWNtOXlLQ2RQYm1VZ2IzSWdiVzl5WlNCRlV6VWdjMmhwYlM5emFHRnRjeUJsZUhCbFkzUmxaQ0JpZVNCU1pXRmpkQ0JoY21VZ2JtOTBJR0YyWVdsc1lXSnNaVG9nSnlBcklDZG9kSFJ3Y3pvdkwyWmlMbTFsTDNKbFlXTjBMWGRoY201cGJtY3RjRzlzZVdacGJHeHpKeWs3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOME95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTUNvbXBvbmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4vKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBBdXRvRm9jdXNVdGlscyA9IHJlcXVpcmUoJy4vQXV0b0ZvY3VzVXRpbHMnKTtcbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgRXZlbnRDb25zdGFudHMgPSByZXF1aXJlKCcuL0V2ZW50Q29uc3RhbnRzJyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERPTUJ1dHRvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01CdXR0b24nKTtcbnZhciBSZWFjdERPTUlucHV0ID0gcmVxdWlyZSgnLi9SZWFjdERPTUlucHV0Jyk7XG52YXIgUmVhY3RET01PcHRpb24gPSByZXF1aXJlKCcuL1JlYWN0RE9NT3B0aW9uJyk7XG52YXIgUmVhY3RET01TZWxlY3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0Jyk7XG52YXIgUmVhY3RET01UZXh0YXJlYSA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0YXJlYScpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdE11bHRpQ2hpbGQgPSByZXF1aXJlKCcuL1JlYWN0TXVsdGlDaGlsZCcpO1xudmFyIFJlYWN0UGVyZiA9IHJlcXVpcmUoJy4vUmVhY3RQZXJmJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBpc0V2ZW50U3VwcG9ydGVkID0gcmVxdWlyZSgnLi9pc0V2ZW50U3VwcG9ydGVkJyk7XG52YXIga2V5T2YgPSByZXF1aXJlKCdmYmpzL2xpYi9rZXlPZicpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3NldFRleHRDb250ZW50Jyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGVsZXRlTGlzdGVuZXIgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuZGVsZXRlTGlzdGVuZXI7XG52YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87XG52YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG5cbi8vIEZvciBxdWlja2x5IG1hdGNoaW5nIGNoaWxkcmVuIHR5cGUsIHRvIHRlc3QgaWYgY2FuIGJlIHRyZWF0ZWQgYXMgY29udGVudC5cbnZhciBDT05URU5UX1RZUEVTID0geyAnc3RyaW5nJzogdHJ1ZSwgJ251bWJlcic6IHRydWUgfTtcblxudmFyIFNUWUxFID0ga2V5T2YoeyBzdHlsZTogbnVsbCB9KTtcblxudmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG50cnkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd0ZXN0JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHt9IH0pO1xuICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7XG59IGNhdGNoIChlKSB7fVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oaW50ZXJuYWxJbnN0YW5jZSkge1xuICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIHZhciBvd25lciA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lciB8fCBudWxsO1xuICAgIGlmIChvd25lcikge1xuICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJyBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJlZCBieSBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsZWdhY3lQcm9wc0Rlc2NyaXB0b3I7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBsZWdhY3lQcm9wc0Rlc2NyaXB0b3IgPSB7XG4gICAgcHJvcHM6IHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLl9yZWFjdEludGVybmFsQ29tcG9uZW50O1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5wcm9wcyBvZiBhIERPTSBub2RlOyBpbnN0ZWFkLCAnICsgJ3JlY3JlYXRlIHRoZSBwcm9wcyBhcyBgcmVuZGVyYCBkaWQgb3JpZ2luYWxseSBvciByZWFkIHRoZSBET00gJyArICdwcm9wZXJ0aWVzL2F0dHJpYnV0ZXMgZGlyZWN0bHkgZnJvbSB0aGlzIG5vZGUgKGUuZy4sICcgKyAndGhpcy5yZWZzLmJveC5jbGFzc05hbWUpLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeUdldERPTU5vZGUoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAuZ2V0RE9NTm9kZSgpIG9mIGEgRE9NIG5vZGU7ICcgKyAnaW5zdGVhZCwgdXNlIHRoZSBub2RlIGRpcmVjdGx5LiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBsZWdhY3lJc01vdW50ZWQoKSB7XG4gIHZhciBjb21wb25lbnQgPSB0aGlzLl9yZWFjdEludGVybmFsQ29tcG9uZW50O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3RET01Db21wb25lbnQ6IERvIG5vdCBhY2Nlc3MgLmlzTW91bnRlZCgpIG9mIGEgRE9NIG5vZGUuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuICEhY29tcG9uZW50O1xufVxuXG5mdW5jdGlvbiBsZWdhY3lTZXRTdGF0ZUV0YygpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5fcmVhY3RJbnRlcm5hbENvbXBvbmVudDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0RE9NQ29tcG9uZW50OiBEbyBub3QgYWNjZXNzIC5zZXRTdGF0ZSgpLCAucmVwbGFjZVN0YXRlKCksIG9yICcgKyAnLmZvcmNlVXBkYXRlKCkgb2YgYSBET00gbm9kZS4gVGhpcyBpcyBhIG5vLW9wLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxlZ2FjeVNldFByb3BzKHBhcnRpYWxQcm9wcywgY2FsbGJhY2spIHtcbiAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAuc2V0UHJvcHMoKSBvZiBhIERPTSBub2RlLiAnICsgJ0luc3RlYWQsIGNhbGwgUmVhY3RET00ucmVuZGVyIGFnYWluIGF0IHRoZSB0b3AgbGV2ZWwuJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKCFjb21wb25lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlU2V0UHJvcHNJbnRlcm5hbChjb21wb25lbnQsIHBhcnRpYWxQcm9wcyk7XG4gIGlmIChjYWxsYmFjaykge1xuICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoY29tcG9uZW50LCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGVnYWN5UmVwbGFjZVByb3BzKHBhcnRpYWxQcm9wcywgY2FsbGJhY2spIHtcbiAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3JlYWN0SW50ZXJuYWxDb21wb25lbnQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdERPTUNvbXBvbmVudDogRG8gbm90IGFjY2VzcyAucmVwbGFjZVByb3BzKCkgb2YgYSBET00gbm9kZS4gJyArICdJbnN0ZWFkLCBjYWxsIFJlYWN0RE9NLnJlbmRlciBhZ2FpbiBhdCB0aGUgdG9wIGxldmVsLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmICghY29tcG9uZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VQcm9wc0ludGVybmFsKGNvbXBvbmVudCwgcGFydGlhbFByb3BzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChjb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykgKyAnXSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYWlycyA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcbiAgICAgICAgICBwYWlycy5wdXNoKGtleUVzY2FwZWQgKyAnOiAnICsgZnJpZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiAnW2Z1bmN0aW9uIG9iamVjdF0nO1xuICB9XG4gIC8vIERpZmZlcnMgZnJvbSBKU09OLnN0cmluZ2lmeSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlcyB1bmRlZmluZWQgYW5kIHRoYXRcbiAgLy8gaW5mIGFuZCBuYW4gZG9uJ3QgYmVjb21lIG51bGxcbiAgcmV0dXJuIFN0cmluZyhvYmopO1xufVxuXG52YXIgc3R5bGVNdXRhdGlvbldhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHN0eWxlMSwgc3R5bGUyLCBjb21wb25lbnQpIHtcbiAgaWYgKHN0eWxlMSA9PSBudWxsIHx8IHN0eWxlMiA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChzaGFsbG93RXF1YWwoc3R5bGUxLCBzdHlsZTIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuX3RhZztcbiAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gIHZhciBvd25lck5hbWU7XG4gIGlmIChvd25lcikge1xuICAgIG93bmVyTmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgfVxuXG4gIHZhciBoYXNoID0gb3duZXJOYW1lICsgJ3wnICsgY29tcG9uZW50TmFtZTtcblxuICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcuaGFzT3duUHJvcGVydHkoaGFzaCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZU11dGF0aW9uV2FybmluZ1toYXNoXSA9IHRydWU7XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNseSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25zaWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQcmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFtZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUyKSkgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wc1xuICovXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHtcbiAgaWYgKCFwcm9wcykge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9uZW50Ll90YWddKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5jaGlsZHJlbiA9PSBudWxsICYmIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwsICclcyBpcyBhIHZvaWQgZWxlbWVudCB0YWcgYW5kIG11c3Qgbm90IGhhdmUgYGNoaWxkcmVuYCBvciAnICsgJ3VzZSBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBpZiAocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09PSAnb2JqZWN0JyAmJiAnX19odG1sJyBpbiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gJyArICdQbGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1pbnZhcmlhbnQtZGFuZ2Vyb3VzbHktc2V0LWlubmVyLWh0bWwgJyArICdmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5pbm5lckhUTUwgPT0gbnVsbCwgJ0RpcmVjdGx5IHNldHRpbmcgcHJvcGVydHkgYGlubmVySFRNTGAgaXMgbm90IHBlcm1pdHRlZC4gJyArICdGb3IgbW9yZSBpbmZvcm1hdGlvbiwgbG9va3VwIGRvY3VtZW50YXRpb24gb24gYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IHVuZGVmaW5lZDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghcHJvcHMuY29udGVudEVkaXRhYmxlIHx8IHByb3BzLmNoaWxkcmVuID09IG51bGwsICdBIGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMgYGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5leHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBub3QgaW50ZW50aW9uYWwuJykgOiB1bmRlZmluZWQ7XG4gIH1cbiAgIShwcm9wcy5zdHlsZSA9PSBudWxsIHx8IHR5cGVvZiBwcm9wcy5zdHlsZSA9PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RoZSBgc3R5bGVgIHByb3AgZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcywgJyArICdub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5nICsgXFwnZW1cXCd9fSB3aGVuICcgKyAndXNpbmcgSlNYLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGlkLCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lciwgdHJhbnNhY3Rpb24pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBJRTggaGFzIG5vIEFQSSBmb3IgZXZlbnQgY2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0XG4gICAgLy8gYnViYmxlLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHJlZ2lzdHJhdGlvbk5hbWUgIT09ICdvblNjcm9sbCcgfHwgaXNFdmVudFN1cHBvcnRlZCgnc2Nyb2xsJywgdHJ1ZSksICdUaGlzIGJyb3dzZXIgZG9lc25cXCd0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAgZXZlbnQnKSA6IHVuZGVmaW5lZDtcbiAgfVxuICB2YXIgY29udGFpbmVyID0gUmVhY3RNb3VudC5maW5kUmVhY3RDb250YWluZXJGb3JJRChpZCk7XG4gIGlmIChjb250YWluZXIpIHtcbiAgICB2YXIgZG9jID0gY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSA/IGNvbnRhaW5lci5vd25lckRvY3VtZW50IDogY29udGFpbmVyO1xuICAgIGxpc3RlblRvKHJlZ2lzdHJhdGlvbk5hbWUsIGRvYyk7XG4gIH1cbiAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5lciwge1xuICAgIGlkOiBpZCxcbiAgICByZWdpc3RyYXRpb25OYW1lOiByZWdpc3RyYXRpb25OYW1lLFxuICAgIGxpc3RlbmVyOiBsaXN0ZW5lclxuICB9KTtcbn1cblxuZnVuY3Rpb24gcHV0TGlzdGVuZXIoKSB7XG4gIHZhciBsaXN0ZW5lclRvUHV0ID0gdGhpcztcbiAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaWQsIGxpc3RlbmVyVG9QdXQucmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXJUb1B1dC5saXN0ZW5lcik7XG59XG5cbi8vIFRoZXJlIGFyZSBzbyBtYW55IG1lZGlhIGV2ZW50cywgaXQgbWFrZXMgc2Vuc2UgdG8ganVzdFxuLy8gbWFpbnRhaW4gYSBsaXN0IHJhdGhlciB0aGFuIGNyZWF0ZSBhIGB0cmFwQnViYmxlZEV2ZW50YCBmb3IgZWFjaFxudmFyIG1lZGlhRXZlbnRzID0ge1xuICB0b3BBYm9ydDogJ2Fib3J0JyxcbiAgdG9wQ2FuUGxheTogJ2NhbnBsYXknLFxuICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdoJyxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdlbmRlZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BQYXVzZTogJ3BhdXNlJyxcbiAgdG9wUGxheTogJ3BsYXknLFxuICB0b3BQbGF5aW5nOiAncGxheWluZycsXG4gIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsXG4gIHRvcFNlZWtlZDogJ3NlZWtlZCcsXG4gIHRvcFNlZWtpbmc6ICdzZWVraW5nJyxcbiAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLFxuICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcsXG4gIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcbiAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2FpdGluZzogJ3dhaXRpbmcnXG59O1xuXG5mdW5jdGlvbiB0cmFwQnViYmxlZEV2ZW50c0xvY2FsKCkge1xuICB2YXIgaW5zdCA9IHRoaXM7XG4gIC8vIElmIGEgY29tcG9uZW50IHJlbmRlcnMgdG8gbnVsbCBvciBpZiBhbm90aGVyIGNvbXBvbmVudCBmYXRhbHMgYW5kIGNhdXNlc1xuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHRyZWUgdG8gYmUgY29ycnVwdGVkLCBgbm9kZWAgaGVyZSBjYW4gYmUgbnVsbC5cbiAgIWluc3QuX3Jvb3ROb2RlSUQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTXVzdCBiZSBtb3VudGVkIHRvIHRyYXAgZXZlbnRzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpbnN0Ll9yb290Tm9kZUlEKTtcbiAgIW5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndHJhcEJ1YmJsZWRFdmVudCguLi4pOiBSZXF1aXJlcyBub2RlIHRvIGJlIHJlbmRlcmVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICBzd2l0Y2ggKGluc3QuX3RhZykge1xuICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wTG9hZCwgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICd2aWRlbyc6XG4gICAgY2FzZSAnYXVkaW8nOlxuXG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW107XG4gICAgICAvLyBjcmVhdGUgbGlzdGVuZXIgZm9yIGVhY2ggbWVkaWEgZXZlbnRcbiAgICAgIGZvciAodmFyIGV2ZW50IGluIG1lZGlhRXZlbnRzKSB7XG4gICAgICAgIGlmIChtZWRpYUV2ZW50cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcbiAgICAgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoRXZlbnRDb25zdGFudHMudG9wTGV2ZWxUeXBlc1tldmVudF0sIG1lZGlhRXZlbnRzW2V2ZW50XSwgbm9kZSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ltZyc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wRXJyb3IsICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzLnRvcExvYWQsICdsb2FkJywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZm9ybSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KEV2ZW50Q29uc3RhbnRzLnRvcExldmVsVHlwZXMudG9wUmVzZXQsICdyZXNldCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzLnRvcFN1Ym1pdCwgJ3N1Ym1pdCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1vdW50UmVhZHlJbnB1dFdyYXBwZXIoKSB7XG4gIFJlYWN0RE9NSW5wdXQubW91bnRSZWFkeVdyYXBwZXIodGhpcyk7XG59XG5cbmZ1bmN0aW9uIHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkge1xuICBSZWFjdERPTVNlbGVjdC5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKTtcbn1cblxuLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBzaG91bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3QgZm9yXG4vLyB0aG9zZSBzcGVjaWFsIGNhc2VkIHRhZ3MuXG5cbnZhciBvbWl0dGVkQ2xvc2VUYWdzID0ge1xuICAnYXJlYSc6IHRydWUsXG4gICdiYXNlJzogdHJ1ZSxcbiAgJ2JyJzogdHJ1ZSxcbiAgJ2NvbCc6IHRydWUsXG4gICdlbWJlZCc6IHRydWUsXG4gICdocic6IHRydWUsXG4gICdpbWcnOiB0cnVlLFxuICAnaW5wdXQnOiB0cnVlLFxuICAna2V5Z2VuJzogdHJ1ZSxcbiAgJ2xpbmsnOiB0cnVlLFxuICAnbWV0YSc6IHRydWUsXG4gICdwYXJhbSc6IHRydWUsXG4gICdzb3VyY2UnOiB0cnVlLFxuICAndHJhY2snOiB0cnVlLFxuICAnd2JyJzogdHJ1ZVxufTtcblxuLy8gTk9URTogbWVudWl0ZW0ncyBjbG9zZSB0YWcgc2hvdWxkIGJlIG9taXR0ZWQsIGJ1dCB0aGF0IGNhdXNlcyBwcm9ibGVtcy5cbnZhciBuZXdsaW5lRWF0aW5nVGFncyA9IHtcbiAgJ2xpc3RpbmcnOiB0cnVlLFxuICAncHJlJzogdHJ1ZSxcbiAgJ3RleHRhcmVhJzogdHJ1ZVxufTtcblxuLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBjYW5ub3QgaGF2ZSBjaGlsZHJlbi4gVGhpcyBoYXMgdGhlIHNhbWUgcHVycG9zZSBhc1xuLy8gYG9taXR0ZWRDbG9zZVRhZ3NgIGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAgc2hvdWxkIHN0aWxsIGhhdmUgaXRzIGNsb3NpbmcgdGFnLlxuXG52YXIgdm9pZEVsZW1lbnRUYWdzID0gYXNzaWduKHtcbiAgJ21lbnVpdGVtJzogdHJ1ZVxufSwgb21pdHRlZENsb3NlVGFncyk7XG5cbi8vIFdlIGFjY2VwdCBhbnkgdGFnIHRvIGJlIHJlbmRlcmVkIGJ1dCBzaW5jZSB0aGlzIGdldHMgaW5qZWN0ZWQgaW50byBhcmJpdHJhcnlcbi8vIEhUTUwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgaXQncyBhIHNhZmUgdGFnLlxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jTlQtTmFtZVxuXG52YXIgVkFMSURfVEFHX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC87IC8vIFNpbXBsaWZpZWQgc3Vic2V0XG52YXIgdmFsaWRhdGVkVGFnQ2FjaGUgPSB7fTtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9ICh7fSkuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykge1xuICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHtcbiAgICAhVkFMSURfVEFHX1JFR0VYLnRlc3QodGFnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJbnZhbGlkIHRhZzogJXMnLCB0YWcpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICB2YWxpZGF0ZWRUYWdDYWNoZVt0YWddID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQ2hpbGRDb250ZXh0RGV2KGNvbnRleHQsIGluc3QpIHtcbiAgLy8gUGFzcyBkb3duIG91ciB0YWcgbmFtZSB0byBjaGlsZCBjb21wb25lbnRzIGZvciB2YWxpZGF0aW9uIHB1cnBvc2VzXG4gIGNvbnRleHQgPSBhc3NpZ24oe30sIGNvbnRleHQpO1xuICB2YXIgaW5mbyA9IGNvbnRleHRbdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXldO1xuICBjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKGluZm8sIGluc3QuX3RhZywgaW5zdCk7XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xuICByZXR1cm4gdGFnTmFtZS5pbmRleE9mKCctJykgPj0gMCB8fCBwcm9wcy5pcyAhPSBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgUmVhY3QgY2xhc3MgdGhhdCBpcyBpZGVtcG90ZW50IGFuZCBjYXBhYmxlIG9mIGNvbnRhaW5pbmcgb3RoZXJcbiAqIFJlYWN0IGNvbXBvbmVudHMuIEl0IGFjY2VwdHMgZXZlbnQgbGlzdGVuZXJzIGFuZCBET00gcHJvcGVydGllcyB0aGF0IGFyZVxuICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAuXG4gKlxuICogIC0gRXZlbnQgbGlzdGVuZXJzOiBgb25DbGlja2AsIGBvbk1vdXNlRG93bmAsIGV0Yy5cbiAqICAtIERPTSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0bGVgLCBldGMuXG4gKlxuICogVGhlIGBzdHlsZWAgcHJvcGVydHkgZnVuY3Rpb25zIGRpZmZlcmVudGx5IGZyb20gdGhlIERPTSBBUEkuIEl0IGFjY2VwdHMgYW5cbiAqIG9iamVjdCBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLlxuICpcbiAqIEBjb25zdHJ1Y3RvciBSZWFjdERPTUNvbXBvbmVudFxuICogQGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkXG4gKi9cbmZ1bmN0aW9uIFJlYWN0RE9NQ29tcG9uZW50KHRhZykge1xuICB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpO1xuICB0aGlzLl90YWcgPSB0YWcudG9Mb3dlckNhc2UoKTtcbiAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxsO1xuICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG4gIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuICB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXMgPSBudWxsO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHRoaXMuX3VucHJvY2Vzc2VkQ29udGV4dERldiA9IG51bGw7XG4gICAgdGhpcy5fcHJvY2Vzc2VkQ29udGV4dERldiA9IG51bGw7XG4gIH1cbn1cblxuUmVhY3RET01Db21wb25lbnQuZGlzcGxheU5hbWUgPSAnUmVhY3RET01Db21wb25lbnQnO1xuXG5SZWFjdERPTUNvbXBvbmVudC5NaXhpbiA9IHtcblxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgcm9vdCB0YWcgbWFya3VwIHRoZW4gcmVjdXJzZXMuIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYW5kXG4gICAqIGlzIG5vdCBpZGVtcG90ZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBUaGUgcm9vdCBET00gSUQgZm9yIHRoaXMgbm9kZS5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbXB1dGVkIG1hcmt1cC5cbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSByb290SUQ7XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgY2FzZSAnaW1nJzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSB7XG4gICAgICAgICAgbGlzdGVuZXJzOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTUJ1dHRvbi5nZXROYXRpdmVQcm9wcyh0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXROYXRpdmVQcm9wcyh0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgUmVhY3RET01PcHRpb24ubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXROYXRpdmVQcm9wcyh0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgUmVhY3RET01TZWxlY3QubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXROYXRpdmVQcm9wcyh0aGlzLCBwcm9wcywgY29udGV4dCk7XG4gICAgICAgIGNvbnRleHQgPSBSZWFjdERPTVNlbGVjdC5wcm9jZXNzQ2hpbGRDb250ZXh0KHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJlYWN0RE9NVGV4dGFyZWEubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldE5hdGl2ZVByb3BzKHRoaXMsIHByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXNzZXJ0VmFsaWRQcm9wcyh0aGlzLCBwcm9wcyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSkge1xuICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcodGhpcy5fdGFnLCB0aGlzLCBjb250ZXh0W3ZhbGlkYXRlRE9NTmVzdGluZy5hbmNlc3RvckluZm9Db250ZXh0S2V5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRoaXMuX3VucHJvY2Vzc2VkQ29udGV4dERldiA9IGNvbnRleHQ7XG4gICAgICB0aGlzLl9wcm9jZXNzZWRDb250ZXh0RGV2ID0gcHJvY2Vzc0NoaWxkQ29udGV4dERldihjb250ZXh0LCB0aGlzKTtcbiAgICAgIGNvbnRleHQgPSB0aGlzLl9wcm9jZXNzZWRDb250ZXh0RGV2O1xuICAgIH1cblxuICAgIHZhciBtb3VudEltYWdlO1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGNvbnRleHRbUmVhY3RNb3VudC5vd25lckRvY3VtZW50Q29udGV4dEtleV07XG4gICAgICB2YXIgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9ySUQoZWwsIHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgLy8gUG9wdWxhdGUgbm9kZSBjYWNoZVxuICAgICAgUmVhY3RNb3VudC5nZXRJRChlbCk7XG4gICAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKHt9LCBwcm9wcywgdHJhbnNhY3Rpb24sIGVsKTtcbiAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbih0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGVsKTtcbiAgICAgIG1vdW50SW1hZ2UgPSBlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9wcyk7XG4gICAgICB2YXIgdGFnQ29udGVudCA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0KTtcbiAgICAgIGlmICghdGFnQ29udGVudCAmJiBvbWl0dGVkQ2xvc2VUYWdzW3RoaXMuX3RhZ10pIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnPicgKyB0YWdDb250ZW50ICsgJzwvJyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUgKyAnPic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShtb3VudFJlYWR5SW5wdXRXcmFwcGVyLCB0aGlzKTtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vdW50SW1hZ2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgb3BlbiB0YWcgYW5kIGFsbCBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGJlY2F1c2UgZXZlbnRzIGdldCByZWdpc3RlcmVkLlxuICAgKlxuICAgKiBJdGVyYXRpbmcgb3ZlciBvYmplY3QgcHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgb3ZlciBhcnJheXMuXG4gICAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vb2JqLXZzLWFyci1pdGVyYXRpb25cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRhZy5cbiAgICovXG4gIF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzKSB7XG4gICAgdmFyIHJldCA9ICc8JyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgICBpZiAoIXByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcy5fcm9vdE5vZGVJRCwgcHJvcEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICAgIGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIC8vIFNlZSBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBzdHlsZSBibG9ja1xuICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvcFZhbHVlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBhc3NpZ24oe30sIHByb3BzLnN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvcFZhbHVlID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0eWxlcyhwcm9wVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtYXJrdXAgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5fdGFnICE9IG51bGwgJiYgaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBwcm9wcykpIHtcbiAgICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlKHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmt1cCkge1xuICAgICAgICAgIHJldCArPSAnICcgKyBtYXJrdXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2ZcbiAgICAvLyBieXRlcy5cbiAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgdmFyIG1hcmt1cEZvcklEID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgIHJldHVybiByZXQgKyAnICcgKyBtYXJrdXBGb3JJRDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBjb250ZW50IGJldHdlZW4gdGhlIHRhZ3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb250ZW50IG1hcmt1cC5cbiAgICovXG4gIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIHJldCA9ICcnO1xuXG4gICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuXG4gICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xuICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkge1xuICAgICAgICByZXQgPSBpbm5lckhUTUwuX19odG1sO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtcbiAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29udGVudFRvVXNlKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG4gICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIHJldCA9IG1vdW50SW1hZ2VzLmpvaW4oJycpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV3bGluZUVhdGluZ1RhZ3NbdGhpcy5fdGFnXSAmJiByZXQuY2hhckF0KDApID09PSAnXFxuJykge1xuICAgICAgLy8gdGV4dC9odG1sIGlnbm9yZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5lXG4gICAgICAvLyBQcmVmZXIgdG8gYnJlYWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4dC9odG1sIChmb3Igbm93KSBieSBhZGRpbmdcbiAgICAgIC8vIGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8gZ2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRlcm5hdGVseSBmb3JcbiAgICAgIC8vIHRleHRhcmVhcywgcmVwbGFjaW5nIFwiXlxcblwiIHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdFxuICAgICAgLy8gXFxyIGlzIG5vcm1hbGl6ZWQgb3V0IGJ5IEhUTUxUZXh0QXJlYUVsZW1lbnQjdmFsdWUuKVxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1wb2x5Z2xvdC8jbmV3bGluZXMtaW4tdGV4dGFyZWEtYW5kLXByZT5cbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI2VsZW1lbnQtcmVzdHJpY3Rpb25zPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjbmV3bGluZXM+XG4gICAgICAvLyBTZWU6IFBhcnNpbmcgb2YgXCJ0ZXh0YXJlYVwiIFwibGlzdGluZ1wiIGFuZCBcInByZVwiIGVsZW1lbnRzXG4gICAgICAvLyAgZnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keT5cbiAgICAgIHJldHVybiAnXFxuJyArIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sXG5cbiAgX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgZWwpIHtcbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIHNldElubmVySFRNTChlbCwgaW5uZXJIVE1MLl9faHRtbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlXG4gICAgICAgIHNldFRleHRDb250ZW50KGVsLCBjb250ZW50VG9Vc2UpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb3VudEltYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGVsLmFwcGVuZENoaWxkKG1vdW50SW1hZ2VzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVjZWl2ZXMgYSBuZXh0IGVsZW1lbnQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICovXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50O1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgbmF0aXZlIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kXG4gICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRoZW4gcmVjdXJzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIGxhc3RQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzO1xuICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTUJ1dHRvbi5nZXROYXRpdmVQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTUJ1dHRvbi5nZXROYXRpdmVQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTUlucHV0LmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0TmF0aXZlUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXROYXRpdmVQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXROYXRpdmVQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldE5hdGl2ZVByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldE5hdGl2ZVByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0TmF0aXZlUHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXROYXRpdmVQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gSWYgdGhlIGNvbnRleHQgaXMgcmVmZXJlbmNlLWVxdWFsIHRvIHRoZSBvbGQgb25lLCBwYXNzIGRvd24gdGhlIHNhbWVcbiAgICAgIC8vIHByb2Nlc3NlZCBvYmplY3Qgc28gdGhlIHVwZGF0ZSBiYWlsb3V0IGluIFJlYWN0UmVjb25jaWxlciBiZWhhdmVzXG4gICAgICAvLyBjb3JyZWN0bHkgKGFuZCBpZGVudGljYWxseSBpbiBkZXYgYW5kIHByb2QpLiBTZWUgIzUwMDUuXG4gICAgICBpZiAodGhpcy5fdW5wcm9jZXNzZWRDb250ZXh0RGV2ICE9PSBjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuX3VucHJvY2Vzc2VkQ29udGV4dERldiA9IGNvbnRleHQ7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXYgPSBwcm9jZXNzQ2hpbGRDb250ZXh0RGV2KGNvbnRleHQsIHRoaXMpO1xuICAgICAgfVxuICAgICAgY29udGV4dCA9IHRoaXMuX3Byb2Nlc3NlZENvbnRleHREZXY7XG4gICAgfVxuXG4gICAgYXNzZXJ0VmFsaWRQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBudWxsKTtcbiAgICB0aGlzLl91cGRhdGVET01DaGlsZHJlbihsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXG4gICAgaWYgKCFjYW5EZWZpbmVQcm9wZXJ0eSAmJiB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcy5wcm9wcyA9IG5leHRQcm9wcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRzIHRvIG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuXG4gICAgICAvLyByZWNvbmNpbGlhdGlvblxuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwb3N0VXBkYXRlU2VsZWN0V3JhcHBlciwgdGhpcyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIHRoZSBwcm9wZXJ0aWVzIGJ5IGRldGVjdGluZyBkaWZmZXJlbmNlcyBpbiBwcm9wZXJ0eSB2YWx1ZXMgYW5kXG4gICAqIHVwZGF0aW5nIHRoZSBET00gYXMgbmVjZXNzYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBzaW5nbGUgbW9zdFxuICAgKiBjcml0aWNhbCBwYXRoIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFRPRE86IEJlbmNobWFyayB3aGV0aGVyIGNoZWNraW5nIGZvciBjaGFuZ2VkIHZhbHVlcyBpbiBtZW1vcnkgYWN0dWFsbHlcbiAgICogICAgICAgaW1wcm92ZXMgcGVyZm9ybWFuY2UgKGVzcGVjaWFsbHkgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnRzKS5cbiAgICogVE9ETzogQmVuY2htYXJrIHRoZSBlZmZlY3RzIG9mIHB1dHRpbmcgdGhpcyBhdCB0aGUgdG9wIHNpbmNlIDk5JSBvZiBwcm9wc1xuICAgKiAgICAgICBkbyBub3QgY2hhbmdlIGZvciBhIGdpdmVuIHJlY29uY2lsaWF0aW9uLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgYXJlYXMgdGhhdCBjYW4gYmUgaW1wcm92ZWQgd2l0aCBjYWNoaW5nLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlXG4gICAqL1xuICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgbm9kZSkge1xuICAgIHZhciBwcm9wS2V5O1xuICAgIHZhciBzdHlsZU5hbWU7XG4gICAgdmFyIHN0eWxlVXBkYXRlcztcbiAgICBmb3IgKHByb3BLZXkgaW4gbGFzdFByb3BzKSB7XG4gICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O1xuICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHtcbiAgICAgICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKGxhc3RQcm9wc1twcm9wS2V5XSkge1xuICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yXG4gICAgICAgICAgLy8gZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYVxuICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSlcbiAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAgIH1cbiAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAocHJvcEtleSBpbiBuZXh0UHJvcHMpIHtcbiAgICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTtcbiAgICAgIHZhciBsYXN0UHJvcCA9IHByb3BLZXkgPT09IFNUWUxFID8gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgOiBsYXN0UHJvcHNbcHJvcEtleV07XG4gICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3ApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAgaWYgKG5leHRQcm9wKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZSh0aGlzLl9wcmV2aW91c1N0eWxlQ29weSwgdGhpcy5fcHJldmlvdXNTdHlsZSwgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbmV4dFByb3A7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHRQcm9wID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBhc3NpZ24oe30sIG5leHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhc3RQcm9wKSB7XG4gICAgICAgICAgLy8gVW5zZXQgc3R5bGVzIG9uIGBsYXN0UHJvcGAgYnV0IG5vdCBvbiBgbmV4dFByb3BgLlxuICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9wKSB7XG4gICAgICAgICAgICBpZiAobGFzdFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiAoIW5leHRQcm9wIHx8ICFuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSkge1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2VkIHNpbmNlIGBsYXN0UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbmV4dFByb3ApIHtcbiAgICAgICAgICAgIGlmIChuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmIGxhc3RQcm9wW3N0eWxlTmFtZV0gIT09IG5leHRQcm9wW3N0eWxlTmFtZV0pIHtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9IG5leHRQcm9wW3N0eWxlTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlbGllcyBvbiBgdXBkYXRlU3R5bGVzQnlJRGAgbm90IG11dGF0aW5nIGBzdHlsZVVwZGF0ZXNgLlxuICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xuICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLl9yb290Tm9kZUlELCBwcm9wS2V5LCBuZXh0UHJvcCwgdHJhbnNhY3Rpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKGxhc3RQcm9wKSB7XG4gICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcy5fcm9vdE5vZGVJRCwgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBuZXh0UHJvcHMpKSB7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgICAgIH1cbiAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIHByb3BLZXksIG5leHRQcm9wKTtcbiAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgICAgICAvLyBmcm9tIHRoZSBET00gbm9kZSBpbnN0ZWFkIG9mIGluYWR2ZXJ0YW50bHkgc2V0dGluZyB0byBhIHN0cmluZy4gVGhpc1xuICAgICAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24gaW5pdGlhbCByZW5kZXIuXG4gICAgICAgIGlmIChuZXh0UHJvcCAhPSBudWxsKSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdHlsZVVwZGF0ZXMpIHtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgfVxuICAgICAgQ1NTUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yU3R5bGVzKG5vZGUsIHN0eWxlVXBkYXRlcyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIHRoZSBjaGlsZHJlbiB3aXRoIHRoZSB2YXJpb3VzIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlXG4gICAqIGNoaWxkcmVuIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqL1xuICBfdXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBuZXh0UHJvcHMuY2hpbGRyZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVsbDtcblxuICAgIHZhciBsYXN0SHRtbCA9IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuICAgIHZhciBuZXh0SHRtbCA9IG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuXG4gICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC5cbiAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBsYXN0UHJvcHMuY2hpbGRyZW47XG4gICAgdmFyIG5leHRDaGlsZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVuO1xuXG4gICAgLy8gSWYgd2UncmUgc3dpdGNoaW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9odG1sIG9yIHZpY2UgdmVyc2EsIHJlbW92ZVxuICAgIC8vIHRoZSBvbGQgY29udGVudFxuICAgIHZhciBsYXN0SGFzQ29udGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51bGwgfHwgbGFzdEh0bWwgIT0gbnVsbDtcbiAgICB2YXIgbmV4dEhhc0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBudWxsIHx8IG5leHRIdG1sICE9IG51bGw7XG4gICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JIdG1sICYmICFuZXh0SGFzQ29udGVudE9ySHRtbCkge1xuICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyk7XG4gICAgfVxuXG4gICAgaWYgKG5leHRDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0Q29udGVudCAhPT0gbmV4dENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyArIG5leHRDb250ZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0SHRtbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2VzIG5vdCByZW1vdmUgZnJvbVxuICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGNhc2UgJ2ltZyc6XG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGlzdGVuZXJzW2ldLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgUmVhY3RET01JbnB1dC51bm1vdW50V3JhcHBlcih0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wb25lbnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWRcbiAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvXG4gICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT5cbiAgICAgICAgICogbWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVjYXVzZSBvZiBjcm9zcy1icm93c2VyIHF1aXJrcyBpdCBpcyAnICsgJ2ltcG9zc2libGUgdG8gdW5tb3VudCBzb21lIHRvcC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4sICcgKyAnPGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBhbmQgZWZmaWNpZW50bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEgJyArICdzaW5nbGUgdG9wLWxldmVsIGNvbXBvbmVudCB0aGF0IG5ldmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSAnICsgJ2VsZW1lbnRzLicsIHRoaXMuX3RhZykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnVubW91bnRDaGlsZHJlbigpO1xuICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5kZWxldGVBbGxMaXN0ZW5lcnModGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQudW5tb3VudElERnJvbUVudmlyb25tZW50KHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBudWxsO1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gICAgaWYgKHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcykge1xuICAgICAgdmFyIG5vZGUgPSB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXM7XG4gICAgICBub2RlLl9yZWFjdEludGVybmFsQ29tcG9uZW50ID0gbnVsbDtcbiAgICAgIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcyA9IG51bGw7XG4gICAgfVxuICB9LFxuXG4gIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXMpIHtcbiAgICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuXG4gICAgICBub2RlLl9yZWFjdEludGVybmFsQ29tcG9uZW50ID0gdGhpcztcbiAgICAgIG5vZGUuZ2V0RE9NTm9kZSA9IGxlZ2FjeUdldERPTU5vZGU7XG4gICAgICBub2RlLmlzTW91bnRlZCA9IGxlZ2FjeUlzTW91bnRlZDtcbiAgICAgIG5vZGUuc2V0U3RhdGUgPSBsZWdhY3lTZXRTdGF0ZUV0YztcbiAgICAgIG5vZGUucmVwbGFjZVN0YXRlID0gbGVnYWN5U2V0U3RhdGVFdGM7XG4gICAgICBub2RlLmZvcmNlVXBkYXRlID0gbGVnYWN5U2V0U3RhdGVFdGM7XG4gICAgICBub2RlLnNldFByb3BzID0gbGVnYWN5U2V0UHJvcHM7XG4gICAgICBub2RlLnJlcGxhY2VQcm9wcyA9IGxlZ2FjeVJlcGxhY2VQcm9wcztcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobm9kZSwgbGVnYWN5UHJvcHNEZXNjcmlwdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1cGRhdGVDb21wb25lbnQgd2lsbCB1cGRhdGUgdGhpcyBwcm9wZXJ0eSBvbiBzdWJzZXF1ZW50IHJlbmRlcnNcbiAgICAgICAgICBub2RlLnByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHVwZGF0ZUNvbXBvbmVudCB3aWxsIHVwZGF0ZSB0aGlzIHByb3BlcnR5IG9uIHN1YnNlcXVlbnQgcmVuZGVyc1xuICAgICAgICBub2RlLnByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX25vZGVXaXRoTGVnYWN5UHJvcGVydGllcyA9IG5vZGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub2RlV2l0aExlZ2FjeVByb3BlcnRpZXM7XG4gIH1cblxufTtcblxuUmVhY3RQZXJmLm1lYXN1cmVNZXRob2RzKFJlYWN0RE9NQ29tcG9uZW50LCAnUmVhY3RET01Db21wb25lbnQnLCB7XG4gIG1vdW50Q29tcG9uZW50OiAnbW91bnRDb21wb25lbnQnLFxuICB1cGRhdGVDb21wb25lbnQ6ICd1cGRhdGVDb21wb25lbnQnXG59KTtcblxuYXNzaWduKFJlYWN0RE9NQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVsdGlDaGlsZC5NaXhpbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkVUMDFEYjIxd2IyNWxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUkU5TlEyOXRjRzl1Wlc1MFhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpOHFJR2RzYjJKaGJDQm9ZWE5QZDI1UWNtOXdaWEowZVRwMGNuVmxJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRUYxZEc5R2IyTjFjMVYwYVd4eklEMGdjbVZ4ZFdseVpTZ25MaTlCZFhSdlJtOWpkWE5WZEdsc2N5Y3BPMXh1ZG1GeUlFTlRVMUJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeUE5SUhKbGNYVnBjbVVvSnk0dlExTlRVSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpKeWs3WEc1MllYSWdSRTlOVUhKdmNHVnlkSGtnUFNCeVpYRjFhWEpsS0NjdUwwUlBUVkJ5YjNCbGNuUjVKeWs3WEc1MllYSWdSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6SUQwZ2NtVnhkV2x5WlNnbkxpOUVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk1uS1R0Y2JuWmhjaUJGZG1WdWRFTnZibk4wWVc1MGN5QTlJSEpsY1hWcGNtVW9KeTR2UlhabGJuUkRiMjV6ZEdGdWRITW5LVHRjYm5aaGNpQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpY3BPMXh1ZG1GeUlGSmxZV04wUTI5dGNHOXVaVzUwUW5KdmQzTmxja1Z1ZG1seWIyNXRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOdmJYQnZibVZ1ZEVKeWIzZHpaWEpGYm5acGNtOXViV1Z1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSRTlOUW5WMGRHOXVJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJQVFVKMWRIUnZiaWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5TVzV3ZFhRZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJFOU5TVzV3ZFhRbktUdGNiblpoY2lCU1pXRmpkRVJQVFU5d2RHbHZiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFVDAxUGNIUnBiMjRuS1R0Y2JuWmhjaUJTWldGamRFUlBUVk5sYkdWamRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVUMDFUWld4bFkzUW5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRWUmxlSFJoY21WaElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVlJsZUhSaGNtVmhKeWs3WEc1MllYSWdVbVZoWTNSTmIzVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOYjNWdWRDY3BPMXh1ZG1GeUlGSmxZV04wVFhWc2RHbERhR2xzWkNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmRXeDBhVU5vYVd4a0p5azdYRzUyWVhJZ1VtVmhZM1JRWlhKbUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGQmxjbVluS1R0Y2JuWmhjaUJTWldGamRGVndaR0YwWlZGMVpYVmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpWRjFaWFZsSnlrN1hHNWNiblpoY2lCaGMzTnBaMjRnUFNCeVpYRjFhWEpsS0NjdUwwOWlhbVZqZEM1aGMzTnBaMjRuS1R0Y2JuWmhjaUJsYzJOaGNHVlVaWGgwUTI5dWRHVnVkRVp2Y2tKeWIzZHpaWElnUFNCeVpYRjFhWEpsS0NjdUwyVnpZMkZ3WlZSbGVIUkRiMjUwWlc1MFJtOXlRbkp2ZDNObGNpY3BPMXh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dWRtRnlJR2x6UlhabGJuUlRkWEJ3YjNKMFpXUWdQU0J5WlhGMWFYSmxLQ2N1TDJselJYWmxiblJUZFhCd2IzSjBaV1FuS1R0Y2JuWmhjaUJyWlhsUFppQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMnRsZVU5bUp5azdYRzUyWVhJZ2MyVjBTVzV1WlhKSVZFMU1JRDBnY21WeGRXbHlaU2duTGk5elpYUkpibTVsY2toVVRVd25LVHRjYm5aaGNpQnpaWFJVWlhoMFEyOXVkR1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZjMlYwVkdWNGRFTnZiblJsYm5RbktUdGNiblpoY2lCemFHRnNiRzkzUlhGMVlXd2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTl6YUdGc2JHOTNSWEYxWVd3bktUdGNiblpoY2lCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQnlaWEYxYVhKbEtDY3VMM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUJrWld4bGRHVk1hWE4wWlc1bGNpQTlJRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNWtaV3hsZEdWTWFYTjBaVzVsY2p0Y2JuWmhjaUJzYVhOMFpXNVVieUE5SUZKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaTVzYVhOMFpXNVVienRjYm5aaGNpQnlaV2RwYzNSeVlYUnBiMjVPWVcxbFRXOWtkV3hsY3lBOUlGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1eVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjenRjYmx4dUx5OGdSbTl5SUhGMWFXTnJiSGtnYldGMFkyaHBibWNnWTJocGJHUnlaVzRnZEhsd1pTd2dkRzhnZEdWemRDQnBaaUJqWVc0Z1ltVWdkSEpsWVhSbFpDQmhjeUJqYjI1MFpXNTBMbHh1ZG1GeUlFTlBUbFJGVGxSZlZGbFFSVk1nUFNCN0lDZHpkSEpwYm1jbk9pQjBjblZsTENBbmJuVnRZbVZ5SnpvZ2RISjFaU0I5TzF4dVhHNTJZWElnVTFSWlRFVWdQU0JyWlhsUFppaDdJSE4wZVd4bE9pQnVkV3hzSUgwcE8xeHVYRzUyWVhJZ1JVeEZUVVZPVkY5T1QwUkZYMVJaVUVVZ1BTQXhPMXh1WEc1MllYSWdZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa2dQU0JtWVd4elpUdGNiblJ5ZVNCN1hHNGdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoN2ZTd2dKM1JsYzNRbkxDQjdJR2RsZERvZ1puVnVZM1JwYjI0Z0tDa2dlMzBnZlNrN1hHNGdJR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVJRDBnZEhKMVpUdGNibjBnWTJGMFkyZ2dLR1VwSUh0OVhHNWNibVoxYm1OMGFXOXVJR2RsZEVSbFkyeGhjbUYwYVc5dVJYSnliM0pCWkdSbGJtUjFiU2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lHbG1JQ2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdkbUZ5SUc5M2JtVnlJRDBnYVc1MFpYSnVZV3hKYm5OMFlXNWpaUzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeUlIeDhJRzUxYkd3N1hHNGdJQ0FnYVdZZ0tHOTNibVZ5S1NCN1hHNGdJQ0FnSUNCMllYSWdibUZ0WlNBOUlHOTNibVZ5TG1kbGRFNWhiV1VvS1R0Y2JpQWdJQ0FnSUdsbUlDaHVZVzFsS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBbklGUm9hWE1nUkU5TklHNXZaR1VnZDJGeklISmxibVJsY21Wa0lHSjVJR0FuSUNzZ2JtRnRaU0FySUNkZ0xpYzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlBbkp6dGNibjFjYmx4dWRtRnlJR3hsWjJGamVWQnliM0J6UkdWelkzSnBjSFJ2Y2p0Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJR3hsWjJGamVWQnliM0J6UkdWelkzSnBjSFJ2Y2lBOUlIdGNiaUFnSUNCd2NtOXdjem9nZTF4dUlDQWdJQ0FnWlc1MWJXVnlZV0pzWlRvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0JuWlhRNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRDQTlJSFJvYVhNdVgzSmxZV04wU1c1MFpYSnVZV3hEYjIxd2IyNWxiblE3WEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblVtVmhZM1JFVDAxRGIyMXdiMjVsYm5RNklFUnZJRzV2ZENCaFkyTmxjM01nTG5CeWIzQnpJRzltSUdFZ1JFOU5JRzV2WkdVN0lHbHVjM1JsWVdRc0lDY2dLeUFuY21WamNtVmhkR1VnZEdobElIQnliM0J6SUdGeklHQnlaVzVrWlhKZ0lHUnBaQ0J2Y21sbmFXNWhiR3g1SUc5eUlISmxZV1FnZEdobElFUlBUU0FuSUNzZ0ozQnliM0JsY25ScFpYTXZZWFIwY21saWRYUmxjeUJrYVhKbFkzUnNlU0JtY205dElIUm9hWE1nYm05a1pTQW9aUzVuTGl3Z0p5QXJJQ2QwYUdsekxuSmxabk11WW05NExtTnNZWE56VG1GdFpTa3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJqYjIxd2IyNWxiblF1WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCek8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVHRjYm4xY2JseHVablZ1WTNScGIyNGdiR1ZuWVdONVIyVjBSRTlOVG05a1pTZ3BJSHRjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdkR2hwY3k1ZmNtVmhZM1JKYm5SbGNtNWhiRU52YlhCdmJtVnVkRHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMUpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBPaUJFYnlCdWIzUWdZV05qWlhOeklDNW5aWFJFVDAxT2IyUmxLQ2tnYjJZZ1lTQkVUMDBnYm05a1pUc2dKeUFySUNkcGJuTjBaV0ZrTENCMWMyVWdkR2hsSUc1dlpHVWdaR2x5WldOMGJIa3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSFJvYVhNN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUd4bFoyRmplVWx6VFc5MWJuUmxaQ2dwSUh0Y2JpQWdkbUZ5SUdOdmJYQnZibVZ1ZENBOUlIUm9hWE11WDNKbFlXTjBTVzUwWlhKdVlXeERiMjF3YjI1bGJuUTdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RTWldGamRFUlBUVU52YlhCdmJtVnVkRG9nUkc4Z2JtOTBJR0ZqWTJWemN5QXVhWE5OYjNWdWRHVmtLQ2tnYjJZZ1lTQkVUMDBnYm05a1pTNGxjeWNzSUdkbGRFUmxZMnhoY21GMGFXOXVSWEp5YjNKQlpHUmxibVIxYlNoamIyMXdiMjVsYm5RcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdJU0ZqYjIxd2IyNWxiblE3WEc1OVhHNWNibVoxYm1OMGFXOXVJR3hsWjJGamVWTmxkRk4wWVhSbFJYUmpLQ2tnZTF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUhaaGNpQmpiMjF3YjI1bGJuUWdQU0IwYUdsekxsOXlaV0ZqZEVsdWRHVnlibUZzUTI5dGNHOXVaVzUwTzF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVW1WaFkzUkVUMDFEYjIxd2IyNWxiblE2SUVSdklHNXZkQ0JoWTJObGMzTWdMbk5sZEZOMFlYUmxLQ2tzSUM1eVpYQnNZV05sVTNSaGRHVW9LU3dnYjNJZ0p5QXJJQ2N1Wm05eVkyVlZjR1JoZEdVb0tTQnZaaUJoSUVSUFRTQnViMlJsTGlCVWFHbHpJR2x6SUdFZ2JtOHRiM0F1SlhNbkxDQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9ZMjl0Y0c5dVpXNTBLU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdiR1ZuWVdONVUyVjBVSEp2Y0hNb2NHRnlkR2xoYkZCeWIzQnpMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQjJZWElnWTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVmY21WaFkzUkpiblJsY201aGJFTnZiWEJ2Ym1WdWREdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhtWVd4elpTd2dKMUpsWVdOMFJFOU5RMjl0Y0c5dVpXNTBPaUJFYnlCdWIzUWdZV05qWlhOeklDNXpaWFJRY205d2N5Z3BJRzltSUdFZ1JFOU5JRzV2WkdVdUlDY2dLeUFuU1c1emRHVmhaQ3dnWTJGc2JDQlNaV0ZqZEVSUFRTNXlaVzVrWlhJZ1lXZGhhVzRnWVhRZ2RHaGxJSFJ2Y0NCc1pYWmxiQzRsY3ljc0lHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaGpiMjF3YjI1bGJuUXBLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNCcFppQW9JV052YlhCdmJtVnVkQ2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbExtVnVjWFZsZFdWVFpYUlFjbTl3YzBsdWRHVnlibUZzS0dOdmJYQnZibVZ1ZEN3Z2NHRnlkR2xoYkZCeWIzQnpLVHRjYmlBZ2FXWWdLR05oYkd4aVlXTnJLU0I3WEc0Z0lDQWdVbVZoWTNSVmNHUmhkR1ZSZFdWMVpTNWxibkYxWlhWbFEyRnNiR0poWTJ0SmJuUmxjbTVoYkNoamIyMXdiMjVsYm5Rc0lHTmhiR3hpWVdOcktUdGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJzWldkaFkzbFNaWEJzWVdObFVISnZjSE1vY0dGeWRHbGhiRkJ5YjNCekxDQmpZV3hzWW1GamF5a2dlMXh1SUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnZEdocGN5NWZjbVZoWTNSSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZER0Y2JpQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxSmxZV04wUkU5TlEyOXRjRzl1Wlc1ME9pQkVieUJ1YjNRZ1lXTmpaWE56SUM1eVpYQnNZV05sVUhKdmNITW9LU0J2WmlCaElFUlBUU0J1YjJSbExpQW5JQ3NnSjBsdWMzUmxZV1FzSUdOaGJHd2dVbVZoWTNSRVQwMHVjbVZ1WkdWeUlHRm5ZV2x1SUdGMElIUm9aU0IwYjNBZ2JHVjJaV3d1SlhNbkxDQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9ZMjl0Y0c5dVpXNTBLU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSDFjYmlBZ2FXWWdLQ0ZqYjIxd2IyNWxiblFwSUh0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JpQWdVbVZoWTNSVmNHUmhkR1ZSZFdWMVpTNWxibkYxWlhWbFVtVndiR0ZqWlZCeWIzQnpTVzUwWlhKdVlXd29ZMjl0Y0c5dVpXNTBMQ0J3WVhKMGFXRnNVSEp2Y0hNcE8xeHVJQ0JwWmlBb1kyRnNiR0poWTJzcElIdGNiaUFnSUNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTG1WdWNYVmxkV1ZEWVd4c1ltRmphMGx1ZEdWeWJtRnNLR052YlhCdmJtVnVkQ3dnWTJGc2JHSmhZMnNwTzF4dUlDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlHWnlhV1Z1Wkd4NVUzUnlhVzVuYVdaNUtHOWlhaWtnZTF4dUlDQnBaaUFvZEhsd1pXOW1JRzlpYWlBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaHZZbW9wS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnSjFzbklDc2diMkpxTG0xaGNDaG1jbWxsYm1Sc2VWTjBjbWx1WjJsbWVTa3VhbTlwYmlnbkxDQW5LU0FySUNkZEp6dGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZG1GeUlIQmhhWEp6SUQwZ1cxMDdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnJaWGtnYVc0Z2IySnFLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaFBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29iMkpxTENCclpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJR3RsZVVWelkyRndaV1FnUFNBdlhsdGhMWG9rWDExYlhGeDNKRjlkS2lRdmFTNTBaWE4wS0d0bGVTa2dQeUJyWlhrZ09pQktVMDlPTG5OMGNtbHVaMmxtZVNoclpYa3BPMXh1SUNBZ0lDQWdJQ0FnSUhCaGFYSnpMbkIxYzJnb2EyVjVSWE5qWVhCbFpDQXJJQ2M2SUNjZ0t5Qm1jbWxsYm1Sc2VWTjBjbWx1WjJsbWVTaHZZbXBiYTJWNVhTa3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKM3NuSUNzZ2NHRnBjbk11YW05cGJpZ25MQ0FuS1NBcklDZDlKenRjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUc5aWFpQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdTbE5QVGk1emRISnBibWRwWm5rb2IySnFLVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ2IySnFJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ2NtVjBkWEp1SUNkYlpuVnVZM1JwYjI0Z2IySnFaV04wWFNjN1hHNGdJSDFjYmlBZ0x5OGdSR2xtWm1WeWN5Qm1jbTl0SUVwVFQwNHVjM1J5YVc1bmFXWjVJR2x1SUhSb1lYUWdkVzVrWldacGJtVmtJR0psWTJGMWMyVnpJSFZ1WkdWbWFXNWxaQ0JoYm1RZ2RHaGhkRnh1SUNBdkx5QnBibVlnWVc1a0lHNWhiaUJrYjI0bmRDQmlaV052YldVZ2JuVnNiRnh1SUNCeVpYUjFjbTRnVTNSeWFXNW5LRzlpYWlrN1hHNTlYRzVjYm5aaGNpQnpkSGxzWlUxMWRHRjBhVzl1VjJGeWJtbHVaeUE5SUh0OU8xeHVYRzVtZFc1amRHbHZiaUJqYUdWamEwRnVaRmRoY201R2IzSk5kWFJoZEdWa1UzUjViR1VvYzNSNWJHVXhMQ0J6ZEhsc1pUSXNJR052YlhCdmJtVnVkQ2tnZTF4dUlDQnBaaUFvYzNSNWJHVXhJRDA5SUc1MWJHd2dmSHdnYzNSNWJHVXlJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ2FXWWdLSE5vWVd4c2IzZEZjWFZoYkNoemRIbHNaVEVzSUhOMGVXeGxNaWtwSUh0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JseHVJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFRtRnRaU0E5SUdOdmJYQnZibVZ1ZEM1ZmRHRm5PMXh1SUNCMllYSWdiM2R1WlhJZ1BTQmpiMjF3YjI1bGJuUXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExsOXZkMjVsY2p0Y2JpQWdkbUZ5SUc5M2JtVnlUbUZ0WlR0Y2JpQWdhV1lnS0c5M2JtVnlLU0I3WEc0Z0lDQWdiM2R1WlhKT1lXMWxJRDBnYjNkdVpYSXVaMlYwVG1GdFpTZ3BPMXh1SUNCOVhHNWNiaUFnZG1GeUlHaGhjMmdnUFNCdmQyNWxjazVoYldVZ0t5QW5mQ2NnS3lCamIyMXdiMjVsYm5ST1lXMWxPMXh1WEc0Z0lHbG1JQ2h6ZEhsc1pVMTFkR0YwYVc5dVYyRnlibWx1Wnk1b1lYTlBkMjVRY205d1pYSjBlU2hvWVhOb0tTa2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1WEc0Z0lITjBlV3hsVFhWMFlYUnBiMjVYWVhKdWFXNW5XMmhoYzJoZElEMGdkSEoxWlR0Y2JseHVJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjJBbGMyQWdkMkZ6SUhCaGMzTmxaQ0JoSUhOMGVXeGxJRzlpYW1WamRDQjBhR0YwSUdoaGN5QndjbVYyYVc5MWMyeDVJR0psWlc0Z2JYVjBZWFJsWkM0Z0p5QXJJQ2ROZFhSaGRHbHVaeUJnYzNSNWJHVmdJR2x6SUdSbGNISmxZMkYwWldRdUlFTnZibk5wWkdWeUlHTnNiMjVwYm1jZ2FYUWdZbVZtYjNKbGFHRnVaQzRnUTJobFkyc2dKeUFySUNkMGFHVWdZSEpsYm1SbGNtQWdKWE11SUZCeVpYWnBiM1Z6SUhOMGVXeGxPaUFsY3k0Z1RYVjBZWFJsWkNCemRIbHNaVG9nSlhNdUp5d2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2IzZHVaWElnUHlBbmIyWWdZQ2NnS3lCdmQyNWxjazVoYldVZ0t5QW5ZQ2NnT2lBbmRYTnBibWNnUENjZ0t5QmpiMjF3YjI1bGJuUk9ZVzFsSUNzZ0p6NG5MQ0JtY21sbGJtUnNlVk4wY21sdVoybG1lU2h6ZEhsc1pURXBMQ0JtY21sbGJtUnNlVk4wY21sdVoybG1lU2h6ZEhsc1pUSXBLU0E2SUhWdVpHVm1hVzVsWkR0Y2JuMWNibHh1THlvcVhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdZMjl0Y0c5dVpXNTBYRzRnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUhCeWIzQnpYRzRnS2k5Y2JtWjFibU4wYVc5dUlHRnpjMlZ5ZEZaaGJHbGtVSEp2Y0hNb1kyOXRjRzl1Wlc1MExDQndjbTl3Y3lrZ2UxeHVJQ0JwWmlBb0lYQnliM0J6S1NCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNGdJQzh2SUU1dmRHVWdkR2hsSUhWelpTQnZaaUJnUFQxZ0lIZG9hV05vSUdOb1pXTnJjeUJtYjNJZ2JuVnNiQ0J2Y2lCMWJtUmxabWx1WldRdVhHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2FXWWdLSFp2YVdSRmJHVnRaVzUwVkdGbmMxdGpiMjF3YjI1bGJuUXVYM1JoWjEwcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LSEJ5YjNCekxtTm9hV3hrY21WdUlEMDlJRzUxYkd3Z0ppWWdjSEp2Y0hNdVpHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXdnUFQwZ2JuVnNiQ3dnSnlWeklHbHpJR0VnZG05cFpDQmxiR1Z0Wlc1MElIUmhaeUJoYm1RZ2JYVnpkQ0J1YjNRZ2FHRjJaU0JnWTJocGJHUnlaVzVnSUc5eUlDY2dLeUFuZFhObElHQndjbTl3Y3k1a1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UR0F1SlhNbkxDQmpiMjF3YjI1bGJuUXVYM1JoWnl3Z1kyOXRjRzl1Wlc1MExsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1ZmIzZHVaWElnUHlBbklFTm9aV05ySUhSb1pTQnlaVzVrWlhJZ2JXVjBhRzlrSUc5bUlDY2dLeUJqYjIxd2IyNWxiblF1WDJOMWNuSmxiblJGYkdWdFpXNTBMbDl2ZDI1bGNpNW5aWFJPWVcxbEtDa2dLeUFuTGljZ09pQW5KeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUdsbUlDaHdjbTl3Y3k1a1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJU2h3Y205d2N5NWphR2xzWkhKbGJpQTlQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRFlXNGdiMjVzZVNCelpYUWdiMjVsSUc5bUlHQmphR2xzWkhKbGJtQWdiM0lnWUhCeWIzQnpMbVJoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTVlDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSVNoMGVYQmxiMllnY0hKdmNITXVaR0Z1WjJWeWIzVnpiSGxUWlhSSmJtNWxja2hVVFV3Z1BUMDlJQ2R2WW1wbFkzUW5JQ1ltSUNkZlgyaDBiV3duSUdsdUlIQnliM0J6TG1SaGJtZGxjbTkxYzJ4NVUyVjBTVzV1WlhKSVZFMU1LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZGdjSEp2Y0hNdVpHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXhnSUcxMWMzUWdZbVVnYVc0Z2RHaGxJR1p2Y20wZ1lIdGZYMmgwYld3NklDNHVMbjFnTGlBbklDc2dKMUJzWldGelpTQjJhWE5wZENCb2RIUndjem92TDJaaUxtMWxMM0psWVdOMExXbHVkbUZ5YVdGdWRDMWtZVzVuWlhKdmRYTnNlUzF6WlhRdGFXNXVaWEl0YUhSdGJDQW5JQ3NnSjJadmNpQnRiM0psSUdsdVptOXliV0YwYVc5dUxpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0hCeWIzQnpMbWx1Ym1WeVNGUk5UQ0E5UFNCdWRXeHNMQ0FuUkdseVpXTjBiSGtnYzJWMGRHbHVaeUJ3Y205d1pYSjBlU0JnYVc1dVpYSklWRTFNWUNCcGN5QnViM1FnY0dWeWJXbDBkR1ZrTGlBbklDc2dKMFp2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1TENCc2IyOXJkWEFnWkc5amRXMWxiblJoZEdsdmJpQnZiaUJnWkdGdVoyVnliM1Z6YkhsVFpYUkpibTVsY2toVVRVeGdMaWNwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRndjbTl3Y3k1amIyNTBaVzUwUldScGRHRmliR1VnZkh3Z2NISnZjSE11WTJocGJHUnlaVzRnUFQwZ2JuVnNiQ3dnSjBFZ1kyOXRjRzl1Wlc1MElHbHpJR0JqYjI1MFpXNTBSV1JwZEdGaWJHVmdJR0Z1WkNCamIyNTBZV2x1Y3lCZ1kyaHBiR1J5Wlc1Z0lHMWhibUZuWldRZ1lua2dKeUFySUNkU1pXRmpkQzRnU1hRZ2FYTWdibTkzSUhsdmRYSWdjbVZ6Y0c5dWMybGlhV3hwZEhrZ2RHOGdaM1ZoY21GdWRHVmxJSFJvWVhRZ2JtOXVaU0J2WmlBbklDc2dKM1JvYjNObElHNXZaR1Z6SUdGeVpTQjFibVY0Y0dWamRHVmtiSGtnYlc5a2FXWnBaV1FnYjNJZ1pIVndiR2xqWVhSbFpDNGdWR2hwY3lCcGN5QW5JQ3NnSjNCeWIySmhZbXg1SUc1dmRDQnBiblJsYm5ScGIyNWhiQzRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dUlDQWhLSEJ5YjNCekxuTjBlV3hsSUQwOUlHNTFiR3dnZkh3Z2RIbHdaVzltSUhCeWIzQnpMbk4wZVd4bElEMDlQU0FuYjJKcVpXTjBKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5WR2hsSUdCemRIbHNaV0FnY0hKdmNDQmxlSEJsWTNSeklHRWdiV0Z3Y0dsdVp5Qm1jbTl0SUhOMGVXeGxJSEJ5YjNCbGNuUnBaWE1nZEc4Z2RtRnNkV1Z6TENBbklDc2dKMjV2ZENCaElITjBjbWx1Wnk0Z1JtOXlJR1Y0WVcxd2JHVXNJSE4wZVd4bFBYdDdiV0Z5WjJsdVVtbG5hSFE2SUhOd1lXTnBibWNnS3lCY1hDZGxiVnhjSjMxOUlIZG9aVzRnSnlBcklDZDFjMmx1WnlCS1UxZ3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb1kyOXRjRzl1Wlc1MEtTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJsYm5GMVpYVmxVSFYwVEdsemRHVnVaWElvYVdRc0lISmxaMmx6ZEhKaGRHbHZiazVoYldVc0lHeHBjM1JsYm1WeUxDQjBjbUZ1YzJGamRHbHZiaWtnZTF4dUlDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUM4dklFbEZPQ0JvWVhNZ2JtOGdRVkJKSUdadmNpQmxkbVZ1ZENCallYQjBkWEpwYm1jZ1lXNWtJSFJvWlNCZ2IyNVRZM0p2Ykd4Z0lHVjJaVzUwSUdSdlpYTnVKM1JjYmlBZ0lDQXZMeUJpZFdKaWJHVXVYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29jbVZuYVhOMGNtRjBhVzl1VG1GdFpTQWhQVDBnSjI5dVUyTnliMnhzSnlCOGZDQnBjMFYyWlc1MFUzVndjRzl5ZEdWa0tDZHpZM0p2Ykd3bkxDQjBjblZsS1N3Z0oxUm9hWE1nWW5KdmQzTmxjaUJrYjJWemJseGNKM1FnYzNWd2NHOXlkQ0IwYUdVZ1lHOXVVMk55YjJ4c1lDQmxkbVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1SUNCOVhHNGdJSFpoY2lCamIyNTBZV2x1WlhJZ1BTQlNaV0ZqZEUxdmRXNTBMbVpwYm1SU1pXRmpkRU52Ym5SaGFXNWxja1p2Y2tsRUtHbGtLVHRjYmlBZ2FXWWdLR052Ym5SaGFXNWxjaWtnZTF4dUlDQWdJSFpoY2lCa2IyTWdQU0JqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFVk1SVTFGVGxSZlRrOUVSVjlVV1ZCRklEOGdZMjl1ZEdGcGJtVnlMbTkzYm1WeVJHOWpkVzFsYm5RZ09pQmpiMjUwWVdsdVpYSTdYRzRnSUNBZ2JHbHpkR1Z1Vkc4b2NtVm5hWE4wY21GMGFXOXVUbUZ0WlN3Z1pHOWpLVHRjYmlBZ2ZWeHVJQ0IwY21GdWMyRmpkR2x2Ymk1blpYUlNaV0ZqZEUxdmRXNTBVbVZoWkhrb0tTNWxibkYxWlhWbEtIQjFkRXhwYzNSbGJtVnlMQ0I3WEc0Z0lDQWdhV1E2SUdsa0xGeHVJQ0FnSUhKbFoybHpkSEpoZEdsdmJrNWhiV1U2SUhKbFoybHpkSEpoZEdsdmJrNWhiV1VzWEc0Z0lDQWdiR2x6ZEdWdVpYSTZJR3hwYzNSbGJtVnlYRzRnSUgwcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCd2RYUk1hWE4wWlc1bGNpZ3BJSHRjYmlBZ2RtRnlJR3hwYzNSbGJtVnlWRzlRZFhRZ1BTQjBhR2x6TzF4dUlDQlNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJdWNIVjBUR2x6ZEdWdVpYSW9iR2x6ZEdWdVpYSlViMUIxZEM1cFpDd2diR2x6ZEdWdVpYSlViMUIxZEM1eVpXZHBjM1J5WVhScGIyNU9ZVzFsTENCc2FYTjBaVzVsY2xSdlVIVjBMbXhwYzNSbGJtVnlLVHRjYm4xY2JseHVMeThnVkdobGNtVWdZWEpsSUhOdklHMWhibmtnYldWa2FXRWdaWFpsYm5SekxDQnBkQ0J0WVd0bGN5QnpaVzV6WlNCMGJ5QnFkWE4wWEc0dkx5QnRZV2x1ZEdGcGJpQmhJR3hwYzNRZ2NtRjBhR1Z5SUhSb1lXNGdZM0psWVhSbElHRWdZSFJ5WVhCQ2RXSmliR1ZrUlhabGJuUmdJR1p2Y2lCbFlXTm9YRzUyWVhJZ2JXVmthV0ZGZG1WdWRITWdQU0I3WEc0Z0lIUnZjRUZpYjNKME9pQW5ZV0p2Y25RbkxGeHVJQ0IwYjNCRFlXNVFiR0Y1T2lBblkyRnVjR3hoZVNjc1hHNGdJSFJ2Y0VOaGJsQnNZWGxVYUhKdmRXZG9PaUFuWTJGdWNHeGhlWFJvY205MVoyZ25MRnh1SUNCMGIzQkVkWEpoZEdsdmJrTm9ZVzVuWlRvZ0oyUjFjbUYwYVc5dVkyaGhibWRsSnl4Y2JpQWdkRzl3Ulcxd2RHbGxaRG9nSjJWdGNIUnBaV1FuTEZ4dUlDQjBiM0JGYm1OeWVYQjBaV1E2SUNkbGJtTnllWEIwWldRbkxGeHVJQ0IwYjNCRmJtUmxaRG9nSjJWdVpHVmtKeXhjYmlBZ2RHOXdSWEp5YjNJNklDZGxjbkp2Y2ljc1hHNGdJSFJ2Y0V4dllXUmxaRVJoZEdFNklDZHNiMkZrWldSa1lYUmhKeXhjYmlBZ2RHOXdURzloWkdWa1RXVjBZV1JoZEdFNklDZHNiMkZrWldSdFpYUmhaR0YwWVNjc1hHNGdJSFJ2Y0V4dllXUlRkR0Z5ZERvZ0oyeHZZV1J6ZEdGeWRDY3NYRzRnSUhSdmNGQmhkWE5sT2lBbmNHRjFjMlVuTEZ4dUlDQjBiM0JRYkdGNU9pQW5jR3hoZVNjc1hHNGdJSFJ2Y0ZCc1lYbHBibWM2SUNkd2JHRjVhVzVuSnl4Y2JpQWdkRzl3VUhKdlozSmxjM002SUNkd2NtOW5jbVZ6Y3ljc1hHNGdJSFJ2Y0ZKaGRHVkRhR0Z1WjJVNklDZHlZWFJsWTJoaGJtZGxKeXhjYmlBZ2RHOXdVMlZsYTJWa09pQW5jMlZsYTJWa0p5eGNiaUFnZEc5d1UyVmxhMmx1WnpvZ0ozTmxaV3RwYm1jbkxGeHVJQ0IwYjNCVGRHRnNiR1ZrT2lBbmMzUmhiR3hsWkNjc1hHNGdJSFJ2Y0ZOMWMzQmxibVE2SUNkemRYTndaVzVrSnl4Y2JpQWdkRzl3VkdsdFpWVndaR0YwWlRvZ0ozUnBiV1YxY0dSaGRHVW5MRnh1SUNCMGIzQldiMngxYldWRGFHRnVaMlU2SUNkMmIyeDFiV1ZqYUdGdVoyVW5MRnh1SUNCMGIzQlhZV2wwYVc1bk9pQW5kMkZwZEdsdVp5ZGNibjA3WEc1Y2JtWjFibU4wYVc5dUlIUnlZWEJDZFdKaWJHVmtSWFpsYm5SelRHOWpZV3dvS1NCN1hHNGdJSFpoY2lCcGJuTjBJRDBnZEdocGN6dGNiaUFnTHk4Z1NXWWdZU0JqYjIxd2IyNWxiblFnY21WdVpHVnljeUIwYnlCdWRXeHNJRzl5SUdsbUlHRnViM1JvWlhJZ1kyOXRjRzl1Wlc1MElHWmhkR0ZzY3lCaGJtUWdZMkYxYzJWelhHNGdJQzh2SUhSb1pTQnpkR0YwWlNCdlppQjBhR1VnZEhKbFpTQjBieUJpWlNCamIzSnlkWEIwWldRc0lHQnViMlJsWUNCb1pYSmxJR05oYmlCaVpTQnVkV3hzTGx4dUlDQWhhVzV6ZEM1ZmNtOXZkRTV2WkdWSlJDQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkTmRYTjBJR0psSUcxdmRXNTBaV1FnZEc4Z2RISmhjQ0JsZG1WdWRITW5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJSFpoY2lCdWIyUmxJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0dsdWMzUXVYM0p2YjNST2IyUmxTVVFwTzF4dUlDQWhibTlrWlNBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2QwY21Gd1FuVmlZbXhsWkVWMlpXNTBLQzR1TGlrNklGSmxjWFZwY21WeklHNXZaR1VnZEc4Z1ltVWdjbVZ1WkdWeVpXUXVKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUhOM2FYUmphQ0FvYVc1emRDNWZkR0ZuS1NCN1hHNGdJQ0FnWTJGelpTQW5hV1p5WVcxbEp6cGNiaUFnSUNBZ0lHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXNhWE4wWlc1bGNuTWdQU0JiVW1WaFkzUkNjbTkzYzJWeVJYWmxiblJGYldsMGRHVnlMblJ5WVhCQ2RXSmliR1ZrUlhabGJuUW9SWFpsYm5SRGIyNXpkR0Z1ZEhNdWRHOXdUR1YyWld4VWVYQmxjeTUwYjNCTWIyRmtMQ0FuYkc5aFpDY3NJRzV2WkdVcFhUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozWnBaR1Z2SnpwY2JpQWdJQ0JqWVhObElDZGhkV1JwYnljNlhHNWNiaUFnSUNBZ0lHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXNhWE4wWlc1bGNuTWdQU0JiWFR0Y2JpQWdJQ0FnSUM4dklHTnlaV0YwWlNCc2FYTjBaVzVsY2lCbWIzSWdaV0ZqYUNCdFpXUnBZU0JsZG1WdWRGeHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ1pYWmxiblFnYVc0Z2JXVmthV0ZGZG1WdWRITXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWxaR2xoUlhabGJuUnpMbWhoYzA5M2JsQnliM0JsY25SNUtHVjJaVzUwS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzVzYVhOMFpXNWxjbk11Y0hWemFDaFNaV0ZqZEVKeWIzZHpaWEpGZG1WdWRFVnRhWFIwWlhJdWRISmhjRUoxWW1Kc1pXUkZkbVZ1ZENoRmRtVnVkRU52Ym5OMFlXNTBjeTUwYjNCTVpYWmxiRlI1Y0dWelcyVjJaVzUwWFN3Z2JXVmthV0ZGZG1WdWRITmJaWFpsYm5SZExDQnViMlJsS1NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5hVzFuSnpwY2JpQWdJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1c2FYTjBaVzVsY25NZ1BTQmJVbVZoWTNSQ2NtOTNjMlZ5UlhabGJuUkZiV2wwZEdWeUxuUnlZWEJDZFdKaWJHVmtSWFpsYm5Rb1JYWmxiblJEYjI1emRHRnVkSE11ZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JGY25KdmNpd2dKMlZ5Y205eUp5d2dibTlrWlNrc0lGSmxZV04wUW5KdmQzTmxja1YyWlc1MFJXMXBkSFJsY2k1MGNtRndRblZpWW14bFpFVjJaVzUwS0VWMlpXNTBRMjl1YzNSaGJuUnpMblJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdURzloWkN3Z0oyeHZZV1FuTENCdWIyUmxLVjA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2RtYjNKdEp6cGNiaUFnSUNBZ0lHbHVjM1F1WDNkeVlYQndaWEpUZEdGMFpTNXNhWE4wWlc1bGNuTWdQU0JiVW1WaFkzUkNjbTkzYzJWeVJYWmxiblJGYldsMGRHVnlMblJ5WVhCQ2RXSmliR1ZrUlhabGJuUW9SWFpsYm5SRGIyNXpkR0Z1ZEhNdWRHOXdUR1YyWld4VWVYQmxjeTUwYjNCU1pYTmxkQ3dnSjNKbGMyVjBKeXdnYm05a1pTa3NJRkpsWVdOMFFuSnZkM05sY2tWMlpXNTBSVzFwZEhSbGNpNTBjbUZ3UW5WaVlteGxaRVYyWlc1MEtFVjJaVzUwUTI5dWMzUmhiblJ6TG5SdmNFeGxkbVZzVkhsd1pYTXVkRzl3VTNWaWJXbDBMQ0FuYzNWaWJXbDBKeXdnYm05a1pTbGRPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdiVzkxYm5SU1pXRmtlVWx1Y0hWMFYzSmhjSEJsY2lncElIdGNiaUFnVW1WaFkzUkVUMDFKYm5CMWRDNXRiM1Z1ZEZKbFlXUjVWM0poY0hCbGNpaDBhR2x6S1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY0c5emRGVndaR0YwWlZObGJHVmpkRmR5WVhCd1pYSW9LU0I3WEc0Z0lGSmxZV04wUkU5TlUyVnNaV04wTG5CdmMzUlZjR1JoZEdWWGNtRndjR1Z5S0hSb2FYTXBPMXh1ZlZ4dVhHNHZMeUJHYjNJZ1NGUk5UQ3dnWTJWeWRHRnBiaUIwWVdkeklITm9iM1ZzWkNCdmJXbDBJSFJvWldseUlHTnNiM05sSUhSaFp5NGdWMlVnYTJWbGNDQmhJSGRvYVhSbGJHbHpkQ0JtYjNKY2JpOHZJSFJvYjNObElITndaV05wWVd3Z1kyRnpaV1FnZEdGbmN5NWNibHh1ZG1GeUlHOXRhWFIwWldSRGJHOXpaVlJoWjNNZ1BTQjdYRzRnSUNkaGNtVmhKem9nZEhKMVpTeGNiaUFnSjJKaGMyVW5PaUIwY25WbExGeHVJQ0FuWW5Jbk9pQjBjblZsTEZ4dUlDQW5ZMjlzSnpvZ2RISjFaU3hjYmlBZ0oyVnRZbVZrSnpvZ2RISjFaU3hjYmlBZ0oyaHlKem9nZEhKMVpTeGNiaUFnSjJsdFp5YzZJSFJ5ZFdVc1hHNGdJQ2RwYm5CMWRDYzZJSFJ5ZFdVc1hHNGdJQ2RyWlhsblpXNG5PaUIwY25WbExGeHVJQ0FuYkdsdWF5YzZJSFJ5ZFdVc1hHNGdJQ2R0WlhSaEp6b2dkSEoxWlN4Y2JpQWdKM0JoY21GdEp6b2dkSEoxWlN4Y2JpQWdKM052ZFhKalpTYzZJSFJ5ZFdVc1hHNGdJQ2QwY21GamF5YzZJSFJ5ZFdVc1hHNGdJQ2QzWW5Jbk9pQjBjblZsWEc1OU8xeHVYRzR2THlCT1QxUkZPaUJ0Wlc1MWFYUmxiU2R6SUdOc2IzTmxJSFJoWnlCemFHOTFiR1FnWW1VZ2IyMXBkSFJsWkN3Z1luVjBJSFJvWVhRZ1kyRjFjMlZ6SUhCeWIySnNaVzF6TGx4dWRtRnlJRzVsZDJ4cGJtVkZZWFJwYm1kVVlXZHpJRDBnZTF4dUlDQW5iR2x6ZEdsdVp5YzZJSFJ5ZFdVc1hHNGdJQ2R3Y21Vbk9pQjBjblZsTEZ4dUlDQW5kR1Y0ZEdGeVpXRW5PaUIwY25WbFhHNTlPMXh1WEc0dkx5QkdiM0lnU0ZSTlRDd2dZMlZ5ZEdGcGJpQjBZV2R6SUdOaGJtNXZkQ0JvWVhabElHTm9hV3hrY21WdUxpQlVhR2x6SUdoaGN5QjBhR1VnYzJGdFpTQndkWEp3YjNObElHRnpYRzR2THlCZ2IyMXBkSFJsWkVOc2IzTmxWR0ZuYzJBZ1pYaGpaWEIwSUhSb1lYUWdZRzFsYm5WcGRHVnRZQ0J6YUc5MWJHUWdjM1JwYkd3Z2FHRjJaU0JwZEhNZ1kyeHZjMmx1WnlCMFlXY3VYRzVjYm5aaGNpQjJiMmxrUld4bGJXVnVkRlJoWjNNZ1BTQmhjM05wWjI0b2UxeHVJQ0FuYldWdWRXbDBaVzBuT2lCMGNuVmxYRzU5TENCdmJXbDBkR1ZrUTJ4dmMyVlVZV2R6S1R0Y2JseHVMeThnVjJVZ1lXTmpaWEIwSUdGdWVTQjBZV2NnZEc4Z1ltVWdjbVZ1WkdWeVpXUWdZblYwSUhOcGJtTmxJSFJvYVhNZ1oyVjBjeUJwYm1wbFkzUmxaQ0JwYm5SdklHRnlZbWwwY21GeWVWeHVMeThnU0ZSTlRDd2dkMlVnZDJGdWRDQjBieUJ0WVd0bElITjFjbVVnZEdoaGRDQnBkQ2R6SUdFZ2MyRm1aU0IwWVdjdVhHNHZMeUJvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5U1JVTXRlRzFzTHlOT1ZDMU9ZVzFsWEc1Y2JuWmhjaUJXUVV4SlJGOVVRVWRmVWtWSFJWZ2dQU0F2WGx0aExYcEJMVnBkVzJFdGVrRXRXanBmWEZ3dVhGd3RYRnhrWFNva0x6c2dMeThnVTJsdGNHeHBabWxsWkNCemRXSnpaWFJjYm5aaGNpQjJZV3hwWkdGMFpXUlVZV2REWVdOb1pTQTlJSHQ5TzF4dWRtRnlJR2hoYzA5M2JsQnliM0JsY25SNUlEMGdLSHQ5S1M1b1lYTlBkMjVRY205d1pYSjBlVHRjYmx4dVpuVnVZM1JwYjI0Z2RtRnNhV1JoZEdWRVlXNW5aWEp2ZFhOVVlXY29kR0ZuS1NCN1hHNGdJR2xtSUNnaGFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaDJZV3hwWkdGMFpXUlVZV2REWVdOb1pTd2dkR0ZuS1NrZ2UxeHVJQ0FnSUNGV1FVeEpSRjlVUVVkZlVrVkhSVmd1ZEdWemRDaDBZV2NwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMGx1ZG1Gc2FXUWdkR0ZuT2lBbGN5Y3NJSFJoWnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIWmhiR2xrWVhSbFpGUmhaME5oWTJobFczUmhaMTBnUFNCMGNuVmxPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUhCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhSRVpYWW9ZMjl1ZEdWNGRDd2dhVzV6ZENrZ2UxeHVJQ0F2THlCUVlYTnpJR1J2ZDI0Z2IzVnlJSFJoWnlCdVlXMWxJSFJ2SUdOb2FXeGtJR052YlhCdmJtVnVkSE1nWm05eUlIWmhiR2xrWVhScGIyNGdjSFZ5Y0c5elpYTmNiaUFnWTI5dWRHVjRkQ0E5SUdGemMybG5iaWg3ZlN3Z1kyOXVkR1Y0ZENrN1hHNGdJSFpoY2lCcGJtWnZJRDBnWTI5dWRHVjRkRnQyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWN1WVc1alpYTjBiM0pKYm1adlEyOXVkR1Y0ZEV0bGVWMDdYRzRnSUdOdmJuUmxlSFJiZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG1GdVkyVnpkRzl5U1c1bWIwTnZiblJsZUhSTFpYbGRJRDBnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG5Wd1pHRjBaV1JCYm1ObGMzUnZja2x1Wm04b2FXNW1ieXdnYVc1emRDNWZkR0ZuTENCcGJuTjBLVHRjYmlBZ2NtVjBkWEp1SUdOdmJuUmxlSFE3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2x6UTNWemRHOXRRMjl0Y0c5dVpXNTBLSFJoWjA1aGJXVXNJSEJ5YjNCektTQjdYRzRnSUhKbGRIVnliaUIwWVdkT1lXMWxMbWx1WkdWNFQyWW9KeTBuS1NBK1BTQXdJSHg4SUhCeWIzQnpMbWx6SUNFOUlHNTFiR3c3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJRzVsZHlCU1pXRmpkQ0JqYkdGemN5QjBhR0YwSUdseklHbGtaVzF3YjNSbGJuUWdZVzVrSUdOaGNHRmliR1VnYjJZZ1kyOXVkR0ZwYm1sdVp5QnZkR2hsY2x4dUlDb2dVbVZoWTNRZ1kyOXRjRzl1Wlc1MGN5NGdTWFFnWVdOalpYQjBjeUJsZG1WdWRDQnNhWE4wWlc1bGNuTWdZVzVrSUVSUFRTQndjbTl3WlhKMGFXVnpJSFJvWVhRZ1lYSmxYRzRnS2lCMllXeHBaQ0JoWTJOdmNtUnBibWNnZEc4Z1lFUlBUVkJ5YjNCbGNuUjVZQzVjYmlBcVhHNGdLaUFnTFNCRmRtVnVkQ0JzYVhOMFpXNWxjbk02SUdCdmJrTnNhV05yWUN3Z1lHOXVUVzkxYzJWRWIzZHVZQ3dnWlhSakxseHVJQ29nSUMwZ1JFOU5JSEJ5YjNCbGNuUnBaWE02SUdCamJHRnpjMDVoYldWZ0xDQmdibUZ0WldBc0lHQjBhWFJzWldBc0lHVjBZeTVjYmlBcVhHNGdLaUJVYUdVZ1lITjBlV3hsWUNCd2NtOXdaWEowZVNCbWRXNWpkR2x2Ym5NZ1pHbG1abVZ5Wlc1MGJIa2dabkp2YlNCMGFHVWdSRTlOSUVGUVNTNGdTWFFnWVdOalpYQjBjeUJoYmx4dUlDb2diMkpxWldOMElHMWhjSEJwYm1jZ2IyWWdjM1I1YkdVZ2NISnZjR1Z5ZEdsbGN5QjBieUIyWVd4MVpYTXVYRzRnS2x4dUlDb2dRR052Ym5OMGNuVmpkRzl5SUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWEc0Z0tpQkFaWGgwWlc1a2N5QlNaV0ZqZEUxMWJIUnBRMmhwYkdSY2JpQXFMMXh1Wm5WdVkzUnBiMjRnVW1WaFkzUkVUMDFEYjIxd2IyNWxiblFvZEdGbktTQjdYRzRnSUhaaGJHbGtZWFJsUkdGdVoyVnliM1Z6VkdGbktIUmhaeWs3WEc0Z0lIUm9hWE11WDNSaFp5QTlJSFJoWnk1MGIweHZkMlZ5UTJGelpTZ3BPMXh1SUNCMGFHbHpMbDl5Wlc1a1pYSmxaRU5vYVd4a2NtVnVJRDBnYm5Wc2JEdGNiaUFnZEdocGN5NWZjSEpsZG1sdmRYTlRkSGxzWlNBOUlHNTFiR3c3WEc0Z0lIUm9hWE11WDNCeVpYWnBiM1Z6VTNSNWJHVkRiM0I1SUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVmY205dmRFNXZaR1ZKUkNBOUlHNTFiR3c3WEc0Z0lIUm9hWE11WDNkeVlYQndaWEpUZEdGMFpTQTlJRzUxYkd3N1hHNGdJSFJvYVhNdVgzUnZjRXhsZG1Wc1YzSmhjSEJsY2lBOUlHNTFiR3c3WEc0Z0lIUm9hWE11WDI1dlpHVlhhWFJvVEdWbllXTjVVSEp2Y0dWeWRHbGxjeUE5SUc1MWJHdzdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdkR2hwY3k1ZmRXNXdjbTlqWlhOelpXUkRiMjUwWlhoMFJHVjJJRDBnYm5Wc2JEdGNiaUFnSUNCMGFHbHpMbDl3Y205alpYTnpaV1JEYjI1MFpYaDBSR1YySUQwZ2JuVnNiRHRjYmlBZ2ZWeHVmVnh1WEc1U1pXRmpkRVJQVFVOdmJYQnZibVZ1ZEM1a2FYTndiR0Y1VG1GdFpTQTlJQ2RTWldGamRFUlBUVU52YlhCdmJtVnVkQ2M3WEc1Y2JsSmxZV04wUkU5TlEyOXRjRzl1Wlc1MExrMXBlR2x1SUQwZ2UxeHVYRzRnSUdOdmJuTjBjblZqZERvZ1puVnVZM1JwYjI0Z0tHVnNaVzFsYm5RcElIdGNiaUFnSUNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDQTlJR1ZzWlcxbGJuUTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGJtVnlZWFJsY3lCeWIyOTBJSFJoWnlCdFlYSnJkWEFnZEdobGJpQnlaV04xY25ObGN5NGdWR2hwY3lCdFpYUm9iMlFnYUdGeklITnBaR1VnWldabVpXTjBjeUJoYm1SY2JpQWdJQ29nYVhNZ2JtOTBJR2xrWlcxd2IzUmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY205dmRFbEVJRlJvWlNCeWIyOTBJRVJQVFNCSlJDQm1iM0lnZEdocGN5QnViMlJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNThVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWRVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJuUmxlSFJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQlVhR1VnWTI5dGNIVjBaV1FnYldGeWEzVndMbHh1SUNBZ0tpOWNiaUFnYlc5MWJuUkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h5YjI5MFNVUXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0E5SUhKdmIzUkpSRHRjYmx4dUlDQWdJSFpoY2lCd2NtOXdjeUE5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuQnliM0J6TzF4dVhHNGdJQ0FnYzNkcGRHTm9JQ2gwYUdsekxsOTBZV2NwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdKMmxtY21GdFpTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkcGJXY25PbHh1SUNBZ0lDQWdZMkZ6WlNBblptOXliU2M2WEc0Z0lDQWdJQ0JqWVhObElDZDJhV1JsYnljNlhHNGdJQ0FnSUNCallYTmxJQ2RoZFdScGJ5YzZYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzZHlZWEJ3WlhKVGRHRjBaU0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQnNhWE4wWlc1bGNuTTZJRzUxYkd4Y2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdkSEpoYm5OaFkzUnBiMjR1WjJWMFVtVmhZM1JOYjNWdWRGSmxZV1I1S0NrdVpXNXhkV1YxWlNoMGNtRndRblZpWW14bFpFVjJaVzUwYzB4dlkyRnNMQ0IwYUdsektUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2RpZFhSMGIyNG5PbHh1SUNBZ0lDQWdJQ0J3Y205d2N5QTlJRkpsWVdOMFJFOU5RblYwZEc5dUxtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJSEJ5YjNCekxDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2RwYm5CMWRDYzZYRzRnSUNBZ0lDQWdJRkpsWVdOMFJFOU5TVzV3ZFhRdWJXOTFiblJYY21Gd2NHVnlLSFJvYVhNc0lIQnliM0J6TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ2NISnZjSE1nUFNCU1pXRmpkRVJQVFVsdWNIVjBMbWRsZEU1aGRHbDJaVkJ5YjNCektIUm9hWE1zSUhCeWIzQnpMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkdmNIUnBiMjRuT2x4dUlDQWdJQ0FnSUNCU1pXRmpkRVJQVFU5d2RHbHZiaTV0YjNWdWRGZHlZWEJ3WlhJb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0J3Y205d2N5QTlJRkpsWVdOMFJFOU5UM0IwYVc5dUxtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJSEJ5YjNCekxDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2R6Wld4bFkzUW5PbHh1SUNBZ0lDQWdJQ0JTWldGamRFUlBUVk5sYkdWamRDNXRiM1Z1ZEZkeVlYQndaWElvZEdocGN5d2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQndjbTl3Y3lBOUlGSmxZV04wUkU5TlUyVnNaV04wTG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lIQnliM0J6TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUNBZ1kyOXVkR1Y0ZENBOUlGSmxZV04wUkU5TlUyVnNaV04wTG5CeWIyTmxjM05EYUdsc1pFTnZiblJsZUhRb2RHaHBjeXdnY0hKdmNITXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjNSbGVIUmhjbVZoSnpwY2JpQWdJQ0FnSUNBZ1VtVmhZM1JFVDAxVVpYaDBZWEpsWVM1dGIzVnVkRmR5WVhCd1pYSW9kR2hwY3l3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCd2NtOXdjeUE5SUZKbFlXTjBSRTlOVkdWNGRHRnlaV0V1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2NISnZjSE1zSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmhjM05sY25SV1lXeHBaRkJ5YjNCektIUm9hWE1zSUhCeWIzQnpLVHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2FXWWdLR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZEtTQjdYRzRnSUNBZ0lDQWdJSFpoYkdsa1lYUmxSRTlOVG1WemRHbHVaeWgwYUdsekxsOTBZV2NzSUhSb2FYTXNJR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWZkVzV3Y205alpYTnpaV1JEYjI1MFpYaDBSR1YySUQwZ1kyOXVkR1Y0ZER0Y2JpQWdJQ0FnSUhSb2FYTXVYM0J5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFlnUFNCd2NtOWpaWE56UTJocGJHUkRiMjUwWlhoMFJHVjJLR052Ym5SbGVIUXNJSFJvYVhNcE8xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZENBOUlIUm9hWE11WDNCeWIyTmxjM05sWkVOdmJuUmxlSFJFWlhZN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlHMXZkVzUwU1cxaFoyVTdYRzRnSUNBZ2FXWWdLSFJ5WVc1ellXTjBhVzl1TG5WelpVTnlaV0YwWlVWc1pXMWxiblFwSUh0Y2JpQWdJQ0FnSUhaaGNpQnZkMjVsY2tSdlkzVnRaVzUwSUQwZ1kyOXVkR1Y0ZEZ0U1pXRmpkRTF2ZFc1MExtOTNibVZ5Ukc5amRXMWxiblJEYjI1MFpYaDBTMlY1WFR0Y2JpQWdJQ0FnSUhaaGNpQmxiQ0E5SUc5M2JtVnlSRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENoMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNTBlWEJsS1R0Y2JpQWdJQ0FnSUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NXpaWFJCZEhSeWFXSjFkR1ZHYjNKSlJDaGxiQ3dnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDQWdJQ0F2THlCUWIzQjFiR0YwWlNCdWIyUmxJR05oWTJobFhHNGdJQ0FnSUNCU1pXRmpkRTF2ZFc1MExtZGxkRWxFS0dWc0tUdGNiaUFnSUNBZ0lIUm9hWE11WDNWd1pHRjBaVVJQVFZCeWIzQmxjblJwWlhNb2UzMHNJSEJ5YjNCekxDQjBjbUZ1YzJGamRHbHZiaXdnWld3cE8xeHVJQ0FnSUNBZ2RHaHBjeTVmWTNKbFlYUmxTVzVwZEdsaGJFTm9hV3hrY21WdUtIUnlZVzV6WVdOMGFXOXVMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDd2daV3dwTzF4dUlDQWdJQ0FnYlc5MWJuUkpiV0ZuWlNBOUlHVnNPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMllYSWdkR0ZuVDNCbGJpQTlJSFJvYVhNdVgyTnlaV0YwWlU5d1pXNVVZV2ROWVhKcmRYQkJibVJRZFhSTWFYTjBaVzVsY25Nb2RISmhibk5oWTNScGIyNHNJSEJ5YjNCektUdGNiaUFnSUNBZ0lIWmhjaUIwWVdkRGIyNTBaVzUwSUQwZ2RHaHBjeTVmWTNKbFlYUmxRMjl1ZEdWdWRFMWhjbXQxY0NoMGNtRnVjMkZqZEdsdmJpd2djSEp2Y0hNc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ2FXWWdLQ0YwWVdkRGIyNTBaVzUwSUNZbUlHOXRhWFIwWldSRGJHOXpaVlJoWjNOYmRHaHBjeTVmZEdGblhTa2dlMXh1SUNBZ0lDQWdJQ0J0YjNWdWRFbHRZV2RsSUQwZ2RHRm5UM0JsYmlBcklDY3ZQaWM3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J0YjNWdWRFbHRZV2RsSUQwZ2RHRm5UM0JsYmlBcklDYytKeUFySUhSaFowTnZiblJsYm5RZ0t5QW5QQzhuSUNzZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUXVkSGx3WlNBcklDYytKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnpkMmwwWTJnZ0tIUm9hWE11WDNSaFp5a2dlMXh1SUNBZ0lDQWdZMkZ6WlNBbmFXNXdkWFFuT2x4dUlDQWdJQ0FnSUNCMGNtRnVjMkZqZEdsdmJpNW5aWFJTWldGamRFMXZkVzUwVW1WaFpIa29LUzVsYm5GMVpYVmxLRzF2ZFc1MFVtVmhaSGxKYm5CMWRGZHlZWEJ3WlhJc0lIUm9hWE1wTzF4dUlDQWdJQ0FnTHk4Z1ptRnNiSE1nZEdoeWIzVm5hRnh1SUNBZ0lDQWdZMkZ6WlNBblluVjBkRzl1SnpwY2JpQWdJQ0FnSUdOaGMyVWdKM05sYkdWamRDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMFpYaDBZWEpsWVNjNlhHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205d2N5NWhkWFJ2Um05amRYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMGNtRnVjMkZqZEdsdmJpNW5aWFJTWldGamRFMXZkVzUwVW1WaFpIa29LUzVsYm5GMVpYVmxLRUYxZEc5R2IyTjFjMVYwYVd4ekxtWnZZM1Z6UkU5TlEyOXRjRzl1Wlc1MExDQjBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiVzkxYm5SSmJXRm5aVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCdFlYSnJkWEFnWm05eUlIUm9aU0J2Y0dWdUlIUmhaeUJoYm1RZ1lXeHNJR0YwZEhKcFluVjBaWE11WEc0Z0lDQXFYRzRnSUNBcUlGUm9hWE1nYldWMGFHOWtJR2hoY3lCemFXUmxJR1ZtWm1WamRITWdZbVZqWVhWelpTQmxkbVZ1ZEhNZ1oyVjBJSEpsWjJsemRHVnlaV1F1WEc0Z0lDQXFYRzRnSUNBcUlFbDBaWEpoZEdsdVp5QnZkbVZ5SUc5aWFtVmpkQ0J3Y205d1pYSjBhV1Z6SUdseklHWmhjM1JsY2lCMGFHRnVJR2wwWlhKaGRHbHVaeUJ2ZG1WeUlHRnljbUY1Y3k1Y2JpQWdJQ29nUUhObFpTQm9kSFJ3T2k4dmFuTndaWEptTG1OdmJTOXZZbW90ZG5NdFlYSnlMV2wwWlhKaGRHbHZibHh1SUNBZ0tseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNThVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWRVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCeWIzQnpYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ1RXRnlhM1Z3SUc5bUlHOXdaVzVwYm1jZ2RHRm5MbHh1SUNBZ0tpOWNiaUFnWDJOeVpXRjBaVTl3Wlc1VVlXZE5ZWEpyZFhCQmJtUlFkWFJNYVhOMFpXNWxjbk02SUdaMWJtTjBhVzl1SUNoMGNtRnVjMkZqZEdsdmJpd2djSEp2Y0hNcElIdGNiaUFnSUNCMllYSWdjbVYwSUQwZ0p6d25JQ3NnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWRIbHdaVHRjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJSEJ5YjNCTFpYa2dhVzRnY0hKdmNITXBJSHRjYmlBZ0lDQWdJR2xtSUNnaGNISnZjSE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0V0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IyWVhJZ2NISnZjRlpoYkhWbElEMGdjSEp2Y0hOYmNISnZjRXRsZVYwN1hHNGdJQ0FnSUNCcFppQW9jSEp2Y0ZaaGJIVmxJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JwWmlBb2NtVm5hWE4wY21GMGFXOXVUbUZ0WlUxdlpIVnNaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0V0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnliM0JXWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdWdWNYVmxkV1ZRZFhSTWFYTjBaVzVsY2loMGFHbHpMbDl5YjI5MFRtOWtaVWxFTENCd2NtOXdTMlY1TENCd2NtOXdWbUZzZFdVc0lIUnlZVzV6WVdOMGFXOXVLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnliM0JMWlhrZ1BUMDlJRk5VV1V4RktTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tIQnliM0JXWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1UyVmxJR0JmZFhCa1lYUmxSRTlOVUhKdmNHVnlkR2xsYzJBdUlITjBlV3hsSUdKc2IyTnJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WDNCeVpYWnBiM1Z6VTNSNWJHVWdQU0J3Y205d1ZtRnNkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtOXdWbUZzZFdVZ1BTQjBhR2x6TGw5d2NtVjJhVzkxYzFOMGVXeGxRMjl3ZVNBOUlHRnpjMmxuYmloN2ZTd2djSEp2Y0hNdWMzUjViR1VwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0J3Y205d1ZtRnNkV1VnUFNCRFUxTlFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVZM0psWVhSbFRXRnlhM1Z3Um05eVUzUjViR1Z6S0hCeWIzQldZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkbUZ5SUcxaGNtdDFjQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbDkwWVdjZ0lUMGdiblZzYkNBbUppQnBjME4xYzNSdmJVTnZiWEJ2Ym1WdWRDaDBhR2x6TGw5MFlXY3NJSEJ5YjNCektTa2dlMXh1SUNBZ0lDQWdJQ0FnSUcxaGNtdDFjQ0E5SUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NWpjbVZoZEdWTllYSnJkWEJHYjNKRGRYTjBiMjFCZEhSeWFXSjFkR1VvY0hKdmNFdGxlU3dnY0hKdmNGWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQnRZWEpyZFhBZ1BTQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11WTNKbFlYUmxUV0Z5YTNWd1JtOXlVSEp2Y0dWeWRIa29jSEp2Y0V0bGVTd2djSEp2Y0ZaaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9iV0Z5YTNWd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMElDczlJQ2NnSnlBcklHMWhjbXQxY0R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFWnZjaUJ6ZEdGMGFXTWdjR0ZuWlhNc0lHNXZJRzVsWldRZ2RHOGdjSFYwSUZKbFlXTjBJRWxFSUdGdVpDQmphR1ZqYTNOMWJTNGdVMkYyWlhNZ2JHOTBjeUJ2Wmx4dUlDQWdJQzh2SUdKNWRHVnpMbHh1SUNBZ0lHbG1JQ2gwY21GdWMyRmpkR2x2Ymk1eVpXNWtaWEpVYjFOMFlYUnBZMDFoY210MWNDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnYldGeWEzVndSbTl5U1VRZ1BTQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11WTNKbFlYUmxUV0Z5YTNWd1JtOXlTVVFvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDQWdjbVYwZFhKdUlISmxkQ0FySUNjZ0p5QXJJRzFoY210MWNFWnZja2xFTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdWeklHMWhjbXQxY0NCbWIzSWdkR2hsSUdOdmJuUmxiblFnWW1WMGQyVmxiaUIwYUdVZ2RHRm5jeTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQnlhWFpoZEdWY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVmRkpsWVdOMFUyVnlkbVZ5VW1WdVpHVnlhVzVuVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCd2NtOXdjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXVkR1Y0ZEZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRU52Ym5SbGJuUWdiV0Z5YTNWd0xseHVJQ0FnS2k5Y2JpQWdYMk55WldGMFpVTnZiblJsYm5STllYSnJkWEE2SUdaMWJtTjBhVzl1SUNoMGNtRnVjMkZqZEdsdmJpd2djSEp2Y0hNc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCMllYSWdjbVYwSUQwZ0p5YzdYRzVjYmlBZ0lDQXZMeUJKYm5SbGJuUnBiMjVoYkNCMWMyVWdiMllnSVQwZ2RHOGdZWFp2YVdRZ1kyRjBZMmhwYm1jZ2VtVnlieTltWVd4elpTNWNiaUFnSUNCMllYSWdhVzV1WlhKSVZFMU1JRDBnY0hKdmNITXVaR0Z1WjJWeWIzVnpiSGxUWlhSSmJtNWxja2hVVFV3N1hHNGdJQ0FnYVdZZ0tHbHVibVZ5U0ZSTlRDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnBaaUFvYVc1dVpYSklWRTFNTGw5ZmFIUnRiQ0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRDQTlJR2x1Ym1WeVNGUk5UQzVmWDJoMGJXdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhaaGNpQmpiMjUwWlc1MFZHOVZjMlVnUFNCRFQwNVVSVTVVWDFSWlVFVlRXM1I1Y0dWdlppQndjbTl3Y3k1amFHbHNaSEpsYmwwZ1B5QndjbTl3Y3k1amFHbHNaSEpsYmlBNklHNTFiR3c3WEc0Z0lDQWdJQ0IyWVhJZ1kyaHBiR1J5Wlc1VWIxVnpaU0E5SUdOdmJuUmxiblJVYjFWelpTQWhQU0J1ZFd4c0lEOGdiblZzYkNBNklIQnliM0J6TG1Ob2FXeGtjbVZ1TzF4dUlDQWdJQ0FnYVdZZ0tHTnZiblJsYm5SVWIxVnpaU0FoUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGUlBSRTg2SUZaaGJHbGtZWFJsSUhSb1lYUWdkR1Y0ZENCcGN5QmhiR3h2ZDJWa0lHRnpJR0VnWTJocGJHUWdiMllnZEdocGN5QnViMlJsWEc0Z0lDQWdJQ0FnSUhKbGRDQTlJR1Z6WTJGd1pWUmxlSFJEYjI1MFpXNTBSbTl5UW5KdmQzTmxjaWhqYjI1MFpXNTBWRzlWYzJVcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGphR2xzWkhKbGJsUnZWWE5sSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJRzF2ZFc1MFNXMWhaMlZ6SUQwZ2RHaHBjeTV0YjNWdWRFTm9hV3hrY21WdUtHTm9hV3hrY21WdVZHOVZjMlVzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lDQWdjbVYwSUQwZ2JXOTFiblJKYldGblpYTXVhbTlwYmlnbkp5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHVaWGRzYVc1bFJXRjBhVzVuVkdGbmMxdDBhR2x6TGw5MFlXZGRJQ1ltSUhKbGRDNWphR0Z5UVhRb01Da2dQVDA5SUNkY1hHNG5LU0I3WEc0Z0lDQWdJQ0F2THlCMFpYaDBMMmgwYld3Z2FXZHViM0psY3lCMGFHVWdabWx5YzNRZ1kyaGhjbUZqZEdWeUlHbHVJSFJvWlhObElIUmhaM01nYVdZZ2FYUW5jeUJoSUc1bGQyeHBibVZjYmlBZ0lDQWdJQzh2SUZCeVpXWmxjaUIwYnlCaWNtVmhheUJoY0hCc2FXTmhkR2x2Ymk5NGJXd2diM1psY2lCMFpYaDBMMmgwYld3Z0tHWnZjaUJ1YjNjcElHSjVJR0ZrWkdsdVoxeHVJQ0FnSUNBZ0x5OGdZU0J1Wlhkc2FXNWxJSE53WldOcFptbGpZV3hzZVNCMGJ5Qm5aWFFnWldGMFpXNGdZbmtnZEdobElIQmhjbk5sY2k0Z0tFRnNkR1Z5Ym1GMFpXeDVJR1p2Y2x4dUlDQWdJQ0FnTHk4Z2RHVjRkR0Z5WldGekxDQnlaWEJzWVdOcGJtY2dYQ0plWEZ4dVhDSWdkMmwwYUNCY0lseGNjbHhjYmx3aUlHUnZaWE51SjNRZ1oyVjBJR1ZoZEdWdUxDQmhibVFnZEdobElHWnBjbk4wWEc0Z0lDQWdJQ0F2THlCY1hISWdhWE1nYm05eWJXRnNhWHBsWkNCdmRYUWdZbmtnU0ZSTlRGUmxlSFJCY21WaFJXeGxiV1Z1ZENOMllXeDFaUzRwWEc0Z0lDQWdJQ0F2THlCVFpXVTZJRHhvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5b2RHMXNMWEJ2YkhsbmJHOTBMeU51Wlhkc2FXNWxjeTFwYmkxMFpYaDBZWEpsWVMxaGJtUXRjSEpsUGx4dUlDQWdJQ0FnTHk4Z1UyVmxPaUE4YUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmFIUnRiRFV2YzNsdWRHRjRMbWgwYld3alpXeGxiV1Z1ZEMxeVpYTjBjbWxqZEdsdmJuTStYRzRnSUNBZ0lDQXZMeUJUWldVNklEeG9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlvZEcxc05TOXplVzUwWVhndWFIUnRiQ051Wlhkc2FXNWxjejVjYmlBZ0lDQWdJQzh2SUZObFpUb2dVR0Z5YzJsdVp5QnZaaUJjSW5SbGVIUmhjbVZoWENJZ1hDSnNhWE4wYVc1blhDSWdZVzVrSUZ3aWNISmxYQ0lnWld4bGJXVnVkSE5jYmlBZ0lDQWdJQzh2SUNCbWNtOXRJRHhvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5b2RHMXNOUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzVpYjJSNVBseHVJQ0FnSUNBZ2NtVjBkWEp1SUNkY1hHNG5JQ3NnY21WME8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNCZlkzSmxZWFJsU1c1cGRHbGhiRU5vYVd4a2NtVnVPaUJtZFc1amRHbHZiaUFvZEhKaGJuTmhZM1JwYjI0c0lIQnliM0J6TENCamIyNTBaWGgwTENCbGJDa2dlMXh1SUNBZ0lDOHZJRWx1ZEdWdWRHbHZibUZzSUhWelpTQnZaaUFoUFNCMGJ5QmhkbTlwWkNCallYUmphR2x1WnlCNlpYSnZMMlpoYkhObExseHVJQ0FnSUhaaGNpQnBibTVsY2toVVRVd2dQU0J3Y205d2N5NWtZVzVuWlhKdmRYTnNlVk5sZEVsdWJtVnlTRlJOVER0Y2JpQWdJQ0JwWmlBb2FXNXVaWEpJVkUxTUlDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHbG1JQ2hwYm01bGNraFVUVXd1WDE5b2RHMXNJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnYzJWMFNXNXVaWEpJVkUxTUtHVnNMQ0JwYm01bGNraFVUVXd1WDE5b2RHMXNLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJR052Ym5SbGJuUlViMVZ6WlNBOUlFTlBUbFJGVGxSZlZGbFFSVk5iZEhsd1pXOW1JSEJ5YjNCekxtTm9hV3hrY21WdVhTQS9JSEJ5YjNCekxtTm9hV3hrY21WdUlEb2diblZzYkR0Y2JpQWdJQ0FnSUhaaGNpQmphR2xzWkhKbGJsUnZWWE5sSUQwZ1kyOXVkR1Z1ZEZSdlZYTmxJQ0U5SUc1MWJHd2dQeUJ1ZFd4c0lEb2djSEp2Y0hNdVkyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNCcFppQW9ZMjl1ZEdWdWRGUnZWWE5sSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWRTlFVHpvZ1ZtRnNhV1JoZEdVZ2RHaGhkQ0IwWlhoMElHbHpJR0ZzYkc5M1pXUWdZWE1nWVNCamFHbHNaQ0J2WmlCMGFHbHpJRzV2WkdWY2JpQWdJQ0FnSUNBZ2MyVjBWR1Y0ZEVOdmJuUmxiblFvWld3c0lHTnZiblJsYm5SVWIxVnpaU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOb2FXeGtjbVZ1Vkc5VmMyVWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JXOTFiblJKYldGblpYTWdQU0IwYUdsekxtMXZkVzUwUTJocGJHUnlaVzRvWTJocGJHUnlaVzVVYjFWelpTd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHMXZkVzUwU1cxaFoyVnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdaV3d1WVhCd1pXNWtRMmhwYkdRb2JXOTFiblJKYldGblpYTmJhVjBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaV05sYVhabGN5QmhJRzVsZUhRZ1pXeGxiV1Z1ZENCaGJtUWdkWEJrWVhSbGN5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJRzVsZUhSRmJHVnRaVzUwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJueFNaV0ZqZEZObGNuWmxjbEpsYm1SbGNtbHVaMVJ5WVc1ellXTjBhVzl1ZlNCMGNtRnVjMkZqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dWRHVjRkRnh1SUNBZ0tpOWNiaUFnY21WalpXbDJaVU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0c1bGVIUkZiR1Z0Wlc1MExDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJSFpoY2lCd2NtVjJSV3hsYldWdWRDQTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTzF4dUlDQWdJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwSUQwZ2JtVjRkRVZzWlcxbGJuUTdYRzRnSUNBZ2RHaHBjeTUxY0dSaGRHVkRiMjF3YjI1bGJuUW9kSEpoYm5OaFkzUnBiMjRzSUhCeVpYWkZiR1Z0Wlc1MExDQnVaWGgwUld4bGJXVnVkQ3dnWTI5dWRHVjRkQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndaR0YwWlhNZ1lTQnVZWFJwZG1VZ1JFOU5JR052YlhCdmJtVnVkQ0JoWm5SbGNpQnBkQ0JvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJR0ZzYkc5allYUmxaQ0JoYm1SY2JpQWdJQ29nWVhSMFlXTm9aV1FnZEc4Z2RHaGxJRVJQVFM0Z1VtVmpiMjVqYVd4bGN5QjBhR1VnY205dmRDQkVUMDBnYm05a1pTd2dkR2hsYmlCeVpXTjFjbk5sY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnY0hKbGRrVnNaVzFsYm5SY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFVnNaVzFsYm5SOUlHNWxlSFJGYkdWdFpXNTBYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2lCQWIzWmxjbkpwWkdGaWJHVmNiaUFnSUNvdlhHNGdJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLSFJ5WVc1ellXTjBhVzl1TENCd2NtVjJSV3hsYldWdWRDd2dibVY0ZEVWc1pXMWxiblFzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2JHRnpkRkJ5YjNCeklEMGdjSEpsZGtWc1pXMWxiblF1Y0hKdmNITTdYRzRnSUNBZ2RtRnlJRzVsZUhSUWNtOXdjeUE5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MExuQnliM0J6TzF4dVhHNGdJQ0FnYzNkcGRHTm9JQ2gwYUdsekxsOTBZV2NwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdKMkoxZEhSdmJpYzZYRzRnSUNBZ0lDQWdJR3hoYzNSUWNtOXdjeUE5SUZKbFlXTjBSRTlOUW5WMGRHOXVMbWRsZEU1aGRHbDJaVkJ5YjNCektIUm9hWE1zSUd4aGMzUlFjbTl3Y3lrN1hHNGdJQ0FnSUNBZ0lHNWxlSFJRY205d2N5QTlJRkpsWVdOMFJFOU5RblYwZEc5dUxtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJRzVsZUhSUWNtOXdjeWs3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBbmFXNXdkWFFuT2x4dUlDQWdJQ0FnSUNCU1pXRmpkRVJQVFVsdWNIVjBMblZ3WkdGMFpWZHlZWEJ3WlhJb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUd4aGMzUlFjbTl3Y3lBOUlGSmxZV04wUkU5TlNXNXdkWFF1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2JHRnpkRkJ5YjNCektUdGNiaUFnSUNBZ0lDQWdibVY0ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFKYm5CMWRDNW5aWFJPWVhScGRtVlFjbTl3Y3loMGFHbHpMQ0J1WlhoMFVISnZjSE1wTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyOXdkR2x2YmljNlhHNGdJQ0FnSUNBZ0lHeGhjM1JRY205d2N5QTlJRkpsWVdOMFJFOU5UM0IwYVc5dUxtZGxkRTVoZEdsMlpWQnliM0J6S0hSb2FYTXNJR3hoYzNSUWNtOXdjeWs3WEc0Z0lDQWdJQ0FnSUc1bGVIUlFjbTl3Y3lBOUlGSmxZV04wUkU5TlQzQjBhVzl1TG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lHNWxlSFJRY205d2N5azdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0FuYzJWc1pXTjBKenBjYmlBZ0lDQWdJQ0FnYkdGemRGQnliM0J6SUQwZ1VtVmhZM1JFVDAxVFpXeGxZM1F1WjJWMFRtRjBhWFpsVUhKdmNITW9kR2hwY3l3Z2JHRnpkRkJ5YjNCektUdGNiaUFnSUNBZ0lDQWdibVY0ZEZCeWIzQnpJRDBnVW1WaFkzUkVUMDFUWld4bFkzUXVaMlYwVG1GMGFYWmxVSEp2Y0hNb2RHaHBjeXdnYm1WNGRGQnliM0J6S1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZDBaWGgwWVhKbFlTYzZYRzRnSUNBZ0lDQWdJRkpsWVdOMFJFOU5WR1Y0ZEdGeVpXRXVkWEJrWVhSbFYzSmhjSEJsY2loMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnYkdGemRGQnliM0J6SUQwZ1VtVmhZM1JFVDAxVVpYaDBZWEpsWVM1blpYUk9ZWFJwZG1WUWNtOXdjeWgwYUdsekxDQnNZWE4wVUhKdmNITXBPMXh1SUNBZ0lDQWdJQ0J1WlhoMFVISnZjSE1nUFNCU1pXRmpkRVJQVFZSbGVIUmhjbVZoTG1kbGRFNWhkR2wyWlZCeWIzQnpLSFJvYVhNc0lHNWxlSFJRY205d2N5azdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0F2THlCSlppQjBhR1VnWTI5dWRHVjRkQ0JwY3lCeVpXWmxjbVZ1WTJVdFpYRjFZV3dnZEc4Z2RHaGxJRzlzWkNCdmJtVXNJSEJoYzNNZ1pHOTNiaUIwYUdVZ2MyRnRaVnh1SUNBZ0lDQWdMeThnY0hKdlkyVnpjMlZrSUc5aWFtVmpkQ0J6YnlCMGFHVWdkWEJrWVhSbElHSmhhV3h2ZFhRZ2FXNGdVbVZoWTNSU1pXTnZibU5wYkdWeUlHSmxhR0YyWlhOY2JpQWdJQ0FnSUM4dklHTnZjbkpsWTNSc2VTQW9ZVzVrSUdsa1pXNTBhV05oYkd4NUlHbHVJR1JsZGlCaGJtUWdjSEp2WkNrdUlGTmxaU0FqTlRBd05TNWNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxsOTFibkJ5YjJObGMzTmxaRU52Ym5SbGVIUkVaWFlnSVQwOUlHTnZiblJsZUhRcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmRXNXdjbTlqWlhOelpXUkRiMjUwWlhoMFJHVjJJRDBnWTI5dWRHVjRkRHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZjSEp2WTJWemMyVmtRMjl1ZEdWNGRFUmxkaUE5SUhCeWIyTmxjM05EYUdsc1pFTnZiblJsZUhSRVpYWW9ZMjl1ZEdWNGRDd2dkR2hwY3lrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCamIyNTBaWGgwSUQwZ2RHaHBjeTVmY0hKdlkyVnpjMlZrUTI5dWRHVjRkRVJsZGp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JoYzNObGNuUldZV3hwWkZCeWIzQnpLSFJvYVhNc0lHNWxlSFJRY205d2N5azdYRzRnSUNBZ2RHaHBjeTVmZFhCa1lYUmxSRTlOVUhKdmNHVnlkR2xsY3loc1lYTjBVSEp2Y0hNc0lHNWxlSFJRY205d2N5d2dkSEpoYm5OaFkzUnBiMjRzSUc1MWJHd3BPMXh1SUNBZ0lIUm9hWE11WDNWd1pHRjBaVVJQVFVOb2FXeGtjbVZ1S0d4aGMzUlFjbTl3Y3l3Z2JtVjRkRkJ5YjNCekxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2s3WEc1Y2JpQWdJQ0JwWmlBb0lXTmhia1JsWm1sdVpWQnliM0JsY25SNUlDWW1JSFJvYVhNdVgyNXZaR1ZYYVhSb1RHVm5ZV041VUhKdmNHVnlkR2xsY3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYm05a1pWZHBkR2hNWldkaFkzbFFjbTl3WlhKMGFXVnpMbkJ5YjNCeklEMGdibVY0ZEZCeWIzQnpPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwYUdsekxsOTBZV2NnUFQwOUlDZHpaV3hsWTNRbktTQjdYRzRnSUNBZ0lDQXZMeUE4YzJWc1pXTjBQaUIyWVd4MVpTQjFjR1JoZEdVZ2JtVmxaSE1nZEc4Z2IyTmpkWElnWVdaMFpYSWdQRzl3ZEdsdmJqNGdZMmhwYkdSeVpXNWNiaUFnSUNBZ0lDOHZJSEpsWTI5dVkybHNhV0YwYVc5dVhHNGdJQ0FnSUNCMGNtRnVjMkZqZEdsdmJpNW5aWFJTWldGamRFMXZkVzUwVW1WaFpIa29LUzVsYm5GMVpYVmxLSEJ2YzNSVmNHUmhkR1ZUWld4bFkzUlhjbUZ3Y0dWeUxDQjBhR2x6S1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxZMjl1WTJsc1pYTWdkR2hsSUhCeWIzQmxjblJwWlhNZ1lua2daR1YwWldOMGFXNW5JR1JwWm1abGNtVnVZMlZ6SUdsdUlIQnliM0JsY25SNUlIWmhiSFZsY3lCaGJtUmNiaUFnSUNvZ2RYQmtZWFJwYm1jZ2RHaGxJRVJQVFNCaGN5QnVaV05sYzNOaGNua3VJRlJvYVhNZ1puVnVZM1JwYjI0Z2FYTWdjSEp2WW1GaWJIa2dkR2hsSUhOcGJtZHNaU0J0YjNOMFhHNGdJQ0FxSUdOeWFYUnBZMkZzSUhCaGRHZ2dabTl5SUhCbGNtWnZjbTFoYm1ObElHOXdkR2x0YVhwaGRHbHZiaTVjYmlBZ0lDcGNiaUFnSUNvZ1ZFOUVUem9nUW1WdVkyaHRZWEpySUhkb1pYUm9aWElnWTJobFkydHBibWNnWm05eUlHTm9ZVzVuWldRZ2RtRnNkV1Z6SUdsdUlHMWxiVzl5ZVNCaFkzUjFZV3hzZVZ4dUlDQWdLaUFnSUNBZ0lDQnBiWEJ5YjNabGN5QndaWEptYjNKdFlXNWpaU0FvWlhOd1pXTnBZV3hzZVNCemRHRjBhV05oYkd4NUlIQnZjMmwwYVc5dVpXUWdaV3hsYldWdWRITXBMbHh1SUNBZ0tpQlVUMFJQT2lCQ1pXNWphRzFoY21zZ2RHaGxJR1ZtWm1WamRITWdiMllnY0hWMGRHbHVaeUIwYUdseklHRjBJSFJvWlNCMGIzQWdjMmx1WTJVZ09Ua2xJRzltSUhCeWIzQnpYRzRnSUNBcUlDQWdJQ0FnSUdSdklHNXZkQ0JqYUdGdVoyVWdabTl5SUdFZ1oybDJaVzRnY21WamIyNWphV3hwWVhScGIyNHVYRzRnSUNBcUlGUlBSRTg2SUVKbGJtTm9iV0Z5YXlCaGNtVmhjeUIwYUdGMElHTmhiaUJpWlNCcGJYQnliM1psWkNCM2FYUm9JR05oWTJocGJtY3VYRzRnSUNBcVhHNGdJQ0FxSUVCd2NtbDJZWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnNZWE4wVUhKdmNITmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc1bGVIUlFjbTl3YzF4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMFJQVFVWc1pXMWxiblI5SUc1dlpHVmNiaUFnSUNvdlhHNGdJRjkxY0dSaGRHVkVUMDFRY205d1pYSjBhV1Z6T2lCbWRXNWpkR2x2YmlBb2JHRnpkRkJ5YjNCekxDQnVaWGgwVUhKdmNITXNJSFJ5WVc1ellXTjBhVzl1TENCdWIyUmxLU0I3WEc0Z0lDQWdkbUZ5SUhCeWIzQkxaWGs3WEc0Z0lDQWdkbUZ5SUhOMGVXeGxUbUZ0WlR0Y2JpQWdJQ0IyWVhJZ2MzUjViR1ZWY0dSaGRHVnpPMXh1SUNBZ0lHWnZjaUFvY0hKdmNFdGxlU0JwYmlCc1lYTjBVSEp2Y0hNcElIdGNiaUFnSUNBZ0lHbG1JQ2h1WlhoMFVISnZjSE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0V0bGVTa2dmSHdnSVd4aGMzUlFjbTl3Y3k1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1MyVjVLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaHdjbTl3UzJWNUlEMDlQU0JUVkZsTVJTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JHRnpkRk4wZVd4bElEMGdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaVU52Y0hrN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvYzNSNWJHVk9ZVzFsSUdsdUlHeGhjM1JUZEhsc1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHNZWE4wVTNSNWJHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2MzUjViR1ZPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUjViR1ZWY0dSaGRHVnpJRDBnYzNSNWJHVlZjR1JoZEdWeklIeDhJSHQ5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdWVmNHUmhkR1Z6VzNOMGVXeGxUbUZ0WlYwZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmNISmxkbWx2ZFhOVGRIbHNaVU52Y0hrZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoeVpXZHBjM1J5WVhScGIyNU9ZVzFsVFc5a2RXeGxjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3UzJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JHRnpkRkJ5YjNCelczQnliM0JMWlhsZEtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1QyNXNlU0JqWVd4c0lHUmxiR1YwWlV4cGMzUmxibVZ5SUdsbUlIUm9aWEpsSUhkaGN5QmhJR3hwYzNSbGJtVnlJSEJ5WlhacGIzVnpiSGtnYjNKY2JpQWdJQ0FnSUNBZ0lDQXZMeUJsYkhObElIZHBiR3hFWld4bGRHVk1hWE4wWlc1bGNpQm5aWFJ6SUdOaGJHeGxaQ0IzYUdWdUlIUm9aWEpsSUhkaGMyNG5kQ0JoWTNSMVlXeHNlU0JoWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdiR2x6ZEdWdVpYSWdLR1V1Wnk0c0lHOXVRMnhwWTJzOWUyNTFiR3g5S1Z4dUlDQWdJQ0FnSUNBZ0lHUmxiR1YwWlV4cGMzUmxibVZ5S0hSb2FYTXVYM0p2YjNST2IyUmxTVVFzSUhCeWIzQkxaWGtwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tFUlBUVkJ5YjNCbGNuUjVMbkJ5YjNCbGNuUnBaWE5iY0hKdmNFdGxlVjBnZkh3Z1JFOU5VSEp2Y0dWeWRIa3VhWE5EZFhOMGIyMUJkSFJ5YVdKMWRHVW9jSEp2Y0V0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnViMlJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdibTlrWlNBOUlGSmxZV04wVFc5MWJuUXVaMlYwVG05a1pTaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JFVDAxUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdVpHVnNaWFJsVm1Gc2RXVkdiM0pRY205d1pYSjBlU2h1YjJSbExDQndjbTl3UzJWNUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnWm05eUlDaHdjbTl3UzJWNUlHbHVJRzVsZUhSUWNtOXdjeWtnZTF4dUlDQWdJQ0FnZG1GeUlHNWxlSFJRY205d0lEMGdibVY0ZEZCeWIzQnpXM0J5YjNCTFpYbGRPMXh1SUNBZ0lDQWdkbUZ5SUd4aGMzUlFjbTl3SUQwZ2NISnZjRXRsZVNBOVBUMGdVMVJaVEVVZ1B5QjBhR2x6TGw5d2NtVjJhVzkxYzFOMGVXeGxRMjl3ZVNBNklHeGhjM1JRY205d2MxdHdjbTl3UzJWNVhUdGNiaUFnSUNBZ0lHbG1JQ2doYm1WNGRGQnliM0J6TG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCTFpYa3BJSHg4SUc1bGVIUlFjbTl3SUQwOVBTQnNZWE4wVUhKdmNDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNod2NtOXdTMlY1SUQwOVBTQlRWRmxNUlNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYm1WNGRGQnliM0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJobFkydEJibVJYWVhKdVJtOXlUWFYwWVhSbFpGTjBlV3hsS0hSb2FYTXVYM0J5WlhacGIzVnpVM1I1YkdWRGIzQjVMQ0IwYUdsekxsOXdjbVYyYVc5MWMxTjBlV3hsTENCMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WDNCeVpYWnBiM1Z6VTNSNWJHVWdQU0J1WlhoMFVISnZjRHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdibVY0ZEZCeWIzQWdQU0IwYUdsekxsOXdjbVYyYVc5MWMxTjBlV3hsUTI5d2VTQTlJR0Z6YzJsbmJpaDdmU3dnYm1WNGRGQnliM0FwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WDNCeVpYWnBiM1Z6VTNSNWJHVkRiM0I1SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9iR0Z6ZEZCeWIzQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlZibk5sZENCemRIbHNaWE1nYjI0Z1lHeGhjM1JRY205d1lDQmlkWFFnYm05MElHOXVJR0J1WlhoMFVISnZjR0F1WEc0Z0lDQWdJQ0FnSUNBZ1ptOXlJQ2h6ZEhsc1pVNWhiV1VnYVc0Z2JHRnpkRkJ5YjNBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHNZWE4wVUhKdmNDNW9ZWE5QZDI1UWNtOXdaWEowZVNoemRIbHNaVTVoYldVcElDWW1JQ2doYm1WNGRGQnliM0FnZkh3Z0lXNWxlSFJRY205d0xtaGhjMDkzYmxCeWIzQmxjblI1S0hOMGVXeGxUbUZ0WlNrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsVlhCa1lYUmxjeUE5SUhOMGVXeGxWWEJrWVhSbGN5QjhmQ0I3ZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVlZjR1JoZEdWelczTjBlV3hsVG1GdFpWMGdQU0FuSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdMeThnVlhCa1lYUmxJSE4wZVd4bGN5QjBhR0YwSUdOb1lXNW5aV1FnYzJsdVkyVWdZR3hoYzNSUWNtOXdZQzVjYmlBZ0lDQWdJQ0FnSUNCbWIzSWdLSE4wZVd4bFRtRnRaU0JwYmlCdVpYaDBVSEp2Y0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHNWxlSFJRY205d0xtaGhjMDkzYmxCeWIzQmxjblI1S0hOMGVXeGxUbUZ0WlNrZ0ppWWdiR0Z6ZEZCeWIzQmJjM1I1YkdWT1lXMWxYU0FoUFQwZ2JtVjRkRkJ5YjNCYmMzUjViR1ZPWVcxbFhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSGxzWlZWd1pHRjBaWE1nUFNCemRIbHNaVlZ3WkdGMFpYTWdmSHdnZTMwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxWWEJrWVhSbGMxdHpkSGxzWlU1aGJXVmRJRDBnYm1WNGRGQnliM0JiYzNSNWJHVk9ZVzFsWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVW1Wc2FXVnpJRzl1SUdCMWNHUmhkR1ZUZEhsc1pYTkNlVWxFWUNCdWIzUWdiWFYwWVhScGJtY2dZSE4wZVd4bFZYQmtZWFJsYzJBdVhHNGdJQ0FnSUNBZ0lDQWdjM1I1YkdWVmNHUmhkR1Z6SUQwZ2JtVjRkRkJ5YjNBN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9jbVZuYVhOMGNtRjBhVzl1VG1GdFpVMXZaSFZzWlhNdWFHRnpUM2R1VUhKdmNHVnlkSGtvY0hKdmNFdGxlU2twSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzVsZUhSUWNtOXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pXNXhkV1YxWlZCMWRFeHBjM1JsYm1WeUtIUm9hWE11WDNKdmIzUk9iMlJsU1VRc0lIQnliM0JMWlhrc0lHNWxlSFJRY205d0xDQjBjbUZ1YzJGamRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JHRnpkRkJ5YjNBcElIdGNiaUFnSUNBZ0lDQWdJQ0JrWld4bGRHVk1hWE4wWlc1bGNpaDBhR2x6TGw5eWIyOTBUbTlrWlVsRUxDQndjbTl3UzJWNUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hwYzBOMWMzUnZiVU52YlhCdmJtVnVkQ2gwYUdsekxsOTBZV2NzSUc1bGVIUlFjbTl3Y3lrcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGdWIyUmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JtOWtaU0E5SUZKbFlXTjBUVzkxYm5RdVoyVjBUbTlrWlNoMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11YzJWMFZtRnNkV1ZHYjNKQmRIUnlhV0oxZEdVb2JtOWtaU3dnY0hKdmNFdGxlU3dnYm1WNGRGQnliM0FwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoRVQwMVFjbTl3WlhKMGVTNXdjbTl3WlhKMGFXVnpXM0J5YjNCTFpYbGRJSHg4SUVSUFRWQnliM0JsY25SNUxtbHpRM1Z6ZEc5dFFYUjBjbWxpZFhSbEtIQnliM0JMWlhrcEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaGJtOWtaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdMeThnU1dZZ2QyVW5jbVVnZFhCa1lYUnBibWNnZEc4Z2JuVnNiQ0J2Y2lCMWJtUmxabWx1WldRc0lIZGxJSE5vYjNWc1pDQnlaVzF2ZG1VZ2RHaGxJSEJ5YjNCbGNuUjVYRzRnSUNBZ0lDQWdJQzh2SUdaeWIyMGdkR2hsSUVSUFRTQnViMlJsSUdsdWMzUmxZV1FnYjJZZ2FXNWhaSFpsY25SaGJuUnNlU0J6WlhSMGFXNW5JSFJ2SUdFZ2MzUnlhVzVuTGlCVWFHbHpYRzRnSUNBZ0lDQWdJQzh2SUdKeWFXNW5jeUIxY3lCcGJpQnNhVzVsSUhkcGRHZ2dkR2hsSUhOaGJXVWdZbVZvWVhacGIzSWdkMlVnYUdGMlpTQnZiaUJwYm1sMGFXRnNJSEpsYm1SbGNpNWNiaUFnSUNBZ0lDQWdhV1lnS0c1bGVIUlFjbTl3SUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQkVUMDFRY205d1pYSjBlVTl3WlhKaGRHbHZibk11YzJWMFZtRnNkV1ZHYjNKUWNtOXdaWEowZVNodWIyUmxMQ0J3Y205d1MyVjVMQ0J1WlhoMFVISnZjQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1JFOU5VSEp2Y0dWeWRIbFBjR1Z5WVhScGIyNXpMbVJsYkdWMFpWWmhiSFZsUm05eVVISnZjR1Z5ZEhrb2JtOWtaU3dnY0hKdmNFdGxlU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hOMGVXeGxWWEJrWVhSbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0NGdWIyUmxLU0I3WEc0Z0lDQWdJQ0FnSUc1dlpHVWdQU0JTWldGamRFMXZkVzUwTG1kbGRFNXZaR1VvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JEVTFOUWNtOXdaWEowZVU5d1pYSmhkR2x2Ym5NdWMyVjBWbUZzZFdWR2IzSlRkSGxzWlhNb2JtOWtaU3dnYzNSNWJHVlZjR1JoZEdWektUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWTI5dVkybHNaWE1nZEdobElHTm9hV3hrY21WdUlIZHBkR2dnZEdobElIWmhjbWx2ZFhNZ2NISnZjR1Z5ZEdsbGN5QjBhR0YwSUdGbVptVmpkQ0IwYUdWY2JpQWdJQ29nWTJocGJHUnlaVzRnWTI5dWRHVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUd4aGMzUlFjbTl3YzF4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdibVY0ZEZCeWIzQnpYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JTWldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ym4wZ2RISmhibk5oWTNScGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdOdmJuUmxlSFJjYmlBZ0lDb3ZYRzRnSUY5MWNHUmhkR1ZFVDAxRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tHeGhjM1JRY205d2N5d2dibVY0ZEZCeWIzQnpMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhaaGNpQnNZWE4wUTI5dWRHVnVkQ0E5SUVOUFRsUkZUbFJmVkZsUVJWTmJkSGx3Wlc5bUlHeGhjM1JRY205d2N5NWphR2xzWkhKbGJsMGdQeUJzWVhOMFVISnZjSE11WTJocGJHUnlaVzRnT2lCdWRXeHNPMXh1SUNBZ0lIWmhjaUJ1WlhoMFEyOXVkR1Z1ZENBOUlFTlBUbFJGVGxSZlZGbFFSVk5iZEhsd1pXOW1JRzVsZUhSUWNtOXdjeTVqYUdsc1pISmxibDBnUHlCdVpYaDBVSEp2Y0hNdVkyaHBiR1J5Wlc0Z09pQnVkV3hzTzF4dVhHNGdJQ0FnZG1GeUlHeGhjM1JJZEcxc0lEMGdiR0Z6ZEZCeWIzQnpMbVJoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTUlDWW1JR3hoYzNSUWNtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRDNWZYMmgwYld3N1hHNGdJQ0FnZG1GeUlHNWxlSFJJZEcxc0lEMGdibVY0ZEZCeWIzQnpMbVJoYm1kbGNtOTFjMng1VTJWMFNXNXVaWEpJVkUxTUlDWW1JRzVsZUhSUWNtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRDNWZYMmgwYld3N1hHNWNiaUFnSUNBdkx5Qk9iM1JsSUhSb1pTQjFjMlVnYjJZZ1lDRTlZQ0IzYUdsamFDQmphR1ZqYTNNZ1ptOXlJRzUxYkd3Z2IzSWdkVzVrWldacGJtVmtMbHh1SUNBZ0lIWmhjaUJzWVhOMFEyaHBiR1J5Wlc0Z1BTQnNZWE4wUTI5dWRHVnVkQ0FoUFNCdWRXeHNJRDhnYm5Wc2JDQTZJR3hoYzNSUWNtOXdjeTVqYUdsc1pISmxianRjYmlBZ0lDQjJZWElnYm1WNGRFTm9hV3hrY21WdUlEMGdibVY0ZEVOdmJuUmxiblFnSVQwZ2JuVnNiQ0EvSUc1MWJHd2dPaUJ1WlhoMFVISnZjSE11WTJocGJHUnlaVzQ3WEc1Y2JpQWdJQ0F2THlCSlppQjNaU2R5WlNCemQybDBZMmhwYm1jZ1puSnZiU0JqYUdsc1pISmxiaUIwYnlCamIyNTBaVzUwTDJoMGJXd2diM0lnZG1salpTQjJaWEp6WVN3Z2NtVnRiM1psWEc0Z0lDQWdMeThnZEdobElHOXNaQ0JqYjI1MFpXNTBYRzRnSUNBZ2RtRnlJR3hoYzNSSVlYTkRiMjUwWlc1MFQzSklkRzFzSUQwZ2JHRnpkRU52Ym5SbGJuUWdJVDBnYm5Wc2JDQjhmQ0JzWVhOMFNIUnRiQ0FoUFNCdWRXeHNPMXh1SUNBZ0lIWmhjaUJ1WlhoMFNHRnpRMjl1ZEdWdWRFOXlTSFJ0YkNBOUlHNWxlSFJEYjI1MFpXNTBJQ0U5SUc1MWJHd2dmSHdnYm1WNGRFaDBiV3dnSVQwZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvYkdGemRFTm9hV3hrY21WdUlDRTlJRzUxYkd3Z0ppWWdibVY0ZEVOb2FXeGtjbVZ1SUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFEyaHBiR1J5Wlc0b2JuVnNiQ3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JHRnpkRWhoYzBOdmJuUmxiblJQY2toMGJXd2dKaVlnSVc1bGVIUklZWE5EYjI1MFpXNTBUM0pJZEcxc0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaVlJsZUhSRGIyNTBaVzUwS0NjbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9ibVY0ZEVOdmJuUmxiblFnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHeGhjM1JEYjI1MFpXNTBJQ0U5UFNCdVpYaDBRMjl1ZEdWdWRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuVndaR0YwWlZSbGVIUkRiMjUwWlc1MEtDY25JQ3NnYm1WNGRFTnZiblJsYm5RcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JtVjRkRWgwYld3Z0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR3hoYzNSSWRHMXNJQ0U5UFNCdVpYaDBTSFJ0YkNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaVTFoY210MWNDZ25KeUFySUc1bGVIUklkRzFzS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0c1bGVIUkRhR2xzWkhKbGJpQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaVU5vYVd4a2NtVnVLRzVsZUhSRGFHbHNaSEpsYml3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWemRISnZlWE1nWVd4c0lHVjJaVzUwSUhKbFoybHpkSEpoZEdsdmJuTWdabTl5SUhSb2FYTWdhVzV6ZEdGdVkyVXVJRVJ2WlhNZ2JtOTBJSEpsYlc5MlpTQm1jbTl0WEc0Z0lDQXFJSFJvWlNCRVQwMHVJRlJvWVhRZ2JYVnpkQ0JpWlNCa2IyNWxJR0o1SUhSb1pTQndZWEpsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnZFc1dGIzVnVkRU52YlhCdmJtVnVkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhOM2FYUmphQ0FvZEdocGN5NWZkR0ZuS1NCN1hHNGdJQ0FnSUNCallYTmxJQ2RwWm5KaGJXVW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmFXMW5KenBjYmlBZ0lDQWdJR05oYzJVZ0oyWnZjbTBuT2x4dUlDQWdJQ0FnWTJGelpTQW5kbWxrWlc4bk9seHVJQ0FnSUNBZ1kyRnpaU0FuWVhWa2FXOG5PbHh1SUNBZ0lDQWdJQ0IyWVhJZ2JHbHpkR1Z1WlhKeklEMGdkR2hwY3k1ZmQzSmhjSEJsY2xOMFlYUmxMbXhwYzNSbGJtVnljenRjYmlBZ0lDQWdJQ0FnYVdZZ0tHeHBjM1JsYm1WeWN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2JHbHpkR1Z1WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNhWE4wWlc1bGNuTmJhVjB1Y21WdGIzWmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0FuYVc1d2RYUW5PbHh1SUNBZ0lDQWdJQ0JTWldGamRFUlBUVWx1Y0hWMExuVnViVzkxYm5SWGNtRndjR1Z5S0hSb2FYTXBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjJoMGJXd25PbHh1SUNBZ0lDQWdZMkZ6WlNBbmFHVmhaQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZGliMlI1SnpwY2JpQWdJQ0FnSUNBZ0x5b3FYRzRnSUNBZ0lDQWdJQ0FxSUVOdmJYQnZibVZ1ZEhNZ2JHbHJaU0E4YUhSdGJENGdQR2hsWVdRK0lHRnVaQ0E4WW05a2VUNGdZMkZ1SjNRZ1ltVWdjbVZ0YjNabFpDQnZjaUJoWkdSbFpGeHVJQ0FnSUNBZ0lDQWdLaUJsWVhOcGJIa2dhVzRnWVNCamNtOXpjeTFpY205M2MyVnlJSGRoZVN3Z2FHOTNaWFpsY2lCcGRDZHpJSFpoYkhWaFlteGxJSFJ2SUdKbElHRmliR1VnZEc5Y2JpQWdJQ0FnSUNBZ0lDb2dkR0ZyWlNCaFpIWmhiblJoWjJVZ2IyWWdVbVZoWTNRbmN5QnlaV052Ym1OcGJHbGhkR2x2YmlCbWIzSWdjM1I1YkdsdVp5QmhibVFnUEhScGRHeGxQbHh1SUNBZ0lDQWdJQ0FnS2lCdFlXNWhaMlZ0Wlc1MExpQlRieUIzWlNCcWRYTjBJR1J2WTNWdFpXNTBJR2wwSUdGdVpDQjBhSEp2ZHlCcGJpQmtZVzVuWlhKdmRYTWdZMkZ6WlhNdVhHNGdJQ0FnSUNBZ0lDQXFMMXh1SUNBZ0lDQWdJQ0FoWm1Gc2MyVWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblBDVnpQaUIwY21sbFpDQjBieUIxYm0xdmRXNTBMaUJDWldOaGRYTmxJRzltSUdOeWIzTnpMV0p5YjNkelpYSWdjWFZwY210eklHbDBJR2x6SUNjZ0t5QW5hVzF3YjNOemFXSnNaU0IwYnlCMWJtMXZkVzUwSUhOdmJXVWdkRzl3TFd4bGRtVnNJR052YlhCdmJtVnVkSE1nS0dWbklEeG9kRzFzUGl3Z0p5QXJJQ2M4YUdWaFpENHNJR0Z1WkNBOFltOWtlVDRwSUhKbGJHbGhZbXg1SUdGdVpDQmxabVpwWTJsbGJuUnNlUzRnVkc4Z1ptbDRJSFJvYVhNc0lHaGhkbVVnWVNBbklDc2dKM05wYm1kc1pTQjBiM0F0YkdWMlpXd2dZMjl0Y0c5dVpXNTBJSFJvWVhRZ2JtVjJaWElnZFc1dGIzVnVkSE1nY21WdVpHVnlJSFJvWlhObElDY2dLeUFuWld4bGJXVnVkSE11Snl3Z2RHaHBjeTVmZEdGbktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11ZFc1dGIzVnVkRU5vYVd4a2NtVnVLQ2s3WEc0Z0lDQWdVbVZoWTNSQ2NtOTNjMlZ5UlhabGJuUkZiV2wwZEdWeUxtUmxiR1YwWlVGc2JFeHBjM1JsYm1WeWN5aDBhR2x6TGw5eWIyOTBUbTlrWlVsRUtUdGNiaUFnSUNCU1pXRmpkRU52YlhCdmJtVnVkRUp5YjNkelpYSkZiblpwY205dWJXVnVkQzUxYm0xdmRXNTBTVVJHY205dFJXNTJhWEp2Ym0xbGJuUW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzRnSUNBZ2RHaHBjeTVmY205dmRFNXZaR1ZKUkNBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZmQzSmhjSEJsY2xOMFlYUmxJRDBnYm5Wc2JEdGNiaUFnSUNCcFppQW9kR2hwY3k1ZmJtOWtaVmRwZEdoTVpXZGhZM2xRY205d1pYSjBhV1Z6S1NCN1hHNGdJQ0FnSUNCMllYSWdibTlrWlNBOUlIUm9hWE11WDI1dlpHVlhhWFJvVEdWbllXTjVVSEp2Y0dWeWRHbGxjenRjYmlBZ0lDQWdJRzV2WkdVdVgzSmxZV04wU1c1MFpYSnVZV3hEYjIxd2IyNWxiblFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdkR2hwY3k1ZmJtOWtaVmRwZEdoTVpXZGhZM2xRY205d1pYSjBhV1Z6SUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnWjJWMFVIVmliR2xqU1c1emRHRnVZMlU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdVgyNXZaR1ZYYVhSb1RHVm5ZV041VUhKdmNHVnlkR2xsY3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzV2WkdVZ1BTQlNaV0ZqZEUxdmRXNTBMbWRsZEU1dlpHVW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDazdYRzVjYmlBZ0lDQWdJRzV2WkdVdVgzSmxZV04wU1c1MFpYSnVZV3hEYjIxd2IyNWxiblFnUFNCMGFHbHpPMXh1SUNBZ0lDQWdibTlrWlM1blpYUkVUMDFPYjJSbElEMGdiR1ZuWVdONVIyVjBSRTlOVG05a1pUdGNiaUFnSUNBZ0lHNXZaR1V1YVhOTmIzVnVkR1ZrSUQwZ2JHVm5ZV041U1hOTmIzVnVkR1ZrTzF4dUlDQWdJQ0FnYm05a1pTNXpaWFJUZEdGMFpTQTlJR3hsWjJGamVWTmxkRk4wWVhSbFJYUmpPMXh1SUNBZ0lDQWdibTlrWlM1eVpYQnNZV05sVTNSaGRHVWdQU0JzWldkaFkzbFRaWFJUZEdGMFpVVjBZenRjYmlBZ0lDQWdJRzV2WkdVdVptOXlZMlZWY0dSaGRHVWdQU0JzWldkaFkzbFRaWFJUZEdGMFpVVjBZenRjYmlBZ0lDQWdJRzV2WkdVdWMyVjBVSEp2Y0hNZ1BTQnNaV2RoWTNsVFpYUlFjbTl3Y3p0Y2JpQWdJQ0FnSUc1dlpHVXVjbVZ3YkdGalpWQnliM0J6SUQwZ2JHVm5ZV041VW1Wd2JHRmpaVkJ5YjNCek8xeHVYRzRnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWTJGdVJHVm1hVzVsVUhKdmNHVnlkSGtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkR2xsY3lodWIyUmxMQ0JzWldkaFkzbFFjbTl3YzBSbGMyTnlhWEIwYjNJcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUhWd1pHRjBaVU52YlhCdmJtVnVkQ0IzYVd4c0lIVndaR0YwWlNCMGFHbHpJSEJ5YjNCbGNuUjVJRzl1SUhOMVluTmxjWFZsYm5RZ2NtVnVaR1Z5YzF4dUlDQWdJQ0FnSUNBZ0lHNXZaR1V1Y0hKdmNITWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnTHk4Z2RYQmtZWFJsUTI5dGNHOXVaVzUwSUhkcGJHd2dkWEJrWVhSbElIUm9hWE1nY0hKdmNHVnlkSGtnYjI0Z2MzVmljMlZ4ZFdWdWRDQnlaVzVrWlhKelhHNGdJQ0FnSUNBZ0lHNXZaR1V1Y0hKdmNITWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjenRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZEdocGN5NWZibTlrWlZkcGRHaE1aV2RoWTNsUWNtOXdaWEowYVdWeklEMGdibTlrWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDI1dlpHVlhhWFJvVEdWbllXTjVVSEp2Y0dWeWRHbGxjenRjYmlBZ2ZWeHVYRzU5TzF4dVhHNVNaV0ZqZEZCbGNtWXViV1ZoYzNWeVpVMWxkR2h2WkhNb1VtVmhZM1JFVDAxRGIyMXdiMjVsYm5Rc0lDZFNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRDY3NJSHRjYmlBZ2JXOTFiblJEYjIxd2IyNWxiblE2SUNkdGIzVnVkRU52YlhCdmJtVnVkQ2NzWEc0Z0lIVndaR0YwWlVOdmJYQnZibVZ1ZERvZ0ozVndaR0YwWlVOdmJYQnZibVZ1ZENkY2JuMHBPMXh1WEc1aGMzTnBaMjRvVW1WaFkzUkVUMDFEYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTENCU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZEM1TmFYaHBiaXdnVW1WaFkzUk5kV3gwYVVOb2FXeGtMazFwZUdsdUtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFUlBUVU52YlhCdmJtVnVkRHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01GYWN0b3JpZXNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicpO1xuXG52YXIgbWFwT2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvbWFwT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUYWcgbmFtZSAoZS5nLiBgZGl2YCkuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjcmVhdGVET01GYWN0b3J5KHRhZykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeSh0YWcpO1xuICB9XG4gIHJldHVybiBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSh0YWcpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXBwaW5nIGZyb20gc3VwcG9ydGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMuXG4gKiBUaGlzIGlzIGFsc28gYWNjZXNzaWJsZSB2aWEgYFJlYWN0LkRPTWAuXG4gKlxuICogQHB1YmxpY1xuICovXG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSBtYXBPYmplY3Qoe1xuICBhOiAnYScsXG4gIGFiYnI6ICdhYmJyJyxcbiAgYWRkcmVzczogJ2FkZHJlc3MnLFxuICBhcmVhOiAnYXJlYScsXG4gIGFydGljbGU6ICdhcnRpY2xlJyxcbiAgYXNpZGU6ICdhc2lkZScsXG4gIGF1ZGlvOiAnYXVkaW8nLFxuICBiOiAnYicsXG4gIGJhc2U6ICdiYXNlJyxcbiAgYmRpOiAnYmRpJyxcbiAgYmRvOiAnYmRvJyxcbiAgYmlnOiAnYmlnJyxcbiAgYmxvY2txdW90ZTogJ2Jsb2NrcXVvdGUnLFxuICBib2R5OiAnYm9keScsXG4gIGJyOiAnYnInLFxuICBidXR0b246ICdidXR0b24nLFxuICBjYW52YXM6ICdjYW52YXMnLFxuICBjYXB0aW9uOiAnY2FwdGlvbicsXG4gIGNpdGU6ICdjaXRlJyxcbiAgY29kZTogJ2NvZGUnLFxuICBjb2w6ICdjb2wnLFxuICBjb2xncm91cDogJ2NvbGdyb3VwJyxcbiAgZGF0YTogJ2RhdGEnLFxuICBkYXRhbGlzdDogJ2RhdGFsaXN0JyxcbiAgZGQ6ICdkZCcsXG4gIGRlbDogJ2RlbCcsXG4gIGRldGFpbHM6ICdkZXRhaWxzJyxcbiAgZGZuOiAnZGZuJyxcbiAgZGlhbG9nOiAnZGlhbG9nJyxcbiAgZGl2OiAnZGl2JyxcbiAgZGw6ICdkbCcsXG4gIGR0OiAnZHQnLFxuICBlbTogJ2VtJyxcbiAgZW1iZWQ6ICdlbWJlZCcsXG4gIGZpZWxkc2V0OiAnZmllbGRzZXQnLFxuICBmaWdjYXB0aW9uOiAnZmlnY2FwdGlvbicsXG4gIGZpZ3VyZTogJ2ZpZ3VyZScsXG4gIGZvb3RlcjogJ2Zvb3RlcicsXG4gIGZvcm06ICdmb3JtJyxcbiAgaDE6ICdoMScsXG4gIGgyOiAnaDInLFxuICBoMzogJ2gzJyxcbiAgaDQ6ICdoNCcsXG4gIGg1OiAnaDUnLFxuICBoNjogJ2g2JyxcbiAgaGVhZDogJ2hlYWQnLFxuICBoZWFkZXI6ICdoZWFkZXInLFxuICBoZ3JvdXA6ICdoZ3JvdXAnLFxuICBocjogJ2hyJyxcbiAgaHRtbDogJ2h0bWwnLFxuICBpOiAnaScsXG4gIGlmcmFtZTogJ2lmcmFtZScsXG4gIGltZzogJ2ltZycsXG4gIGlucHV0OiAnaW5wdXQnLFxuICBpbnM6ICdpbnMnLFxuICBrYmQ6ICdrYmQnLFxuICBrZXlnZW46ICdrZXlnZW4nLFxuICBsYWJlbDogJ2xhYmVsJyxcbiAgbGVnZW5kOiAnbGVnZW5kJyxcbiAgbGk6ICdsaScsXG4gIGxpbms6ICdsaW5rJyxcbiAgbWFpbjogJ21haW4nLFxuICBtYXA6ICdtYXAnLFxuICBtYXJrOiAnbWFyaycsXG4gIG1lbnU6ICdtZW51JyxcbiAgbWVudWl0ZW06ICdtZW51aXRlbScsXG4gIG1ldGE6ICdtZXRhJyxcbiAgbWV0ZXI6ICdtZXRlcicsXG4gIG5hdjogJ25hdicsXG4gIG5vc2NyaXB0OiAnbm9zY3JpcHQnLFxuICBvYmplY3Q6ICdvYmplY3QnLFxuICBvbDogJ29sJyxcbiAgb3B0Z3JvdXA6ICdvcHRncm91cCcsXG4gIG9wdGlvbjogJ29wdGlvbicsXG4gIG91dHB1dDogJ291dHB1dCcsXG4gIHA6ICdwJyxcbiAgcGFyYW06ICdwYXJhbScsXG4gIHBpY3R1cmU6ICdwaWN0dXJlJyxcbiAgcHJlOiAncHJlJyxcbiAgcHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG4gIHE6ICdxJyxcbiAgcnA6ICdycCcsXG4gIHJ0OiAncnQnLFxuICBydWJ5OiAncnVieScsXG4gIHM6ICdzJyxcbiAgc2FtcDogJ3NhbXAnLFxuICBzY3JpcHQ6ICdzY3JpcHQnLFxuICBzZWN0aW9uOiAnc2VjdGlvbicsXG4gIHNlbGVjdDogJ3NlbGVjdCcsXG4gIHNtYWxsOiAnc21hbGwnLFxuICBzb3VyY2U6ICdzb3VyY2UnLFxuICBzcGFuOiAnc3BhbicsXG4gIHN0cm9uZzogJ3N0cm9uZycsXG4gIHN0eWxlOiAnc3R5bGUnLFxuICBzdWI6ICdzdWInLFxuICBzdW1tYXJ5OiAnc3VtbWFyeScsXG4gIHN1cDogJ3N1cCcsXG4gIHRhYmxlOiAndGFibGUnLFxuICB0Ym9keTogJ3Rib2R5JyxcbiAgdGQ6ICd0ZCcsXG4gIHRleHRhcmVhOiAndGV4dGFyZWEnLFxuICB0Zm9vdDogJ3Rmb290JyxcbiAgdGg6ICd0aCcsXG4gIHRoZWFkOiAndGhlYWQnLFxuICB0aW1lOiAndGltZScsXG4gIHRpdGxlOiAndGl0bGUnLFxuICB0cjogJ3RyJyxcbiAgdHJhY2s6ICd0cmFjaycsXG4gIHU6ICd1JyxcbiAgdWw6ICd1bCcsXG4gICd2YXInOiAndmFyJyxcbiAgdmlkZW86ICd2aWRlbycsXG4gIHdicjogJ3dicicsXG5cbiAgLy8gU1ZHXG4gIGNpcmNsZTogJ2NpcmNsZScsXG4gIGNsaXBQYXRoOiAnY2xpcFBhdGgnLFxuICBkZWZzOiAnZGVmcycsXG4gIGVsbGlwc2U6ICdlbGxpcHNlJyxcbiAgZzogJ2cnLFxuICBpbWFnZTogJ2ltYWdlJyxcbiAgbGluZTogJ2xpbmUnLFxuICBsaW5lYXJHcmFkaWVudDogJ2xpbmVhckdyYWRpZW50JyxcbiAgbWFzazogJ21hc2snLFxuICBwYXRoOiAncGF0aCcsXG4gIHBhdHRlcm46ICdwYXR0ZXJuJyxcbiAgcG9seWdvbjogJ3BvbHlnb24nLFxuICBwb2x5bGluZTogJ3BvbHlsaW5lJyxcbiAgcmFkaWFsR3JhZGllbnQ6ICdyYWRpYWxHcmFkaWVudCcsXG4gIHJlY3Q6ICdyZWN0JyxcbiAgc3RvcDogJ3N0b3AnLFxuICBzdmc6ICdzdmcnLFxuICB0ZXh0OiAndGV4dCcsXG4gIHRzcGFuOiAndHNwYW4nXG5cbn0sIGNyZWF0ZURPTUZhY3RvcnkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JFVDAxR1lXTjBiM0pwWlhNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFJFOU5SbUZqZEc5eWFXVnpYRzRnS2lCQWRIbHdaV05vWldOcmN5QnpkR0YwYVdNdGIyNXNlVnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSW5LVHRjYmx4dWRtRnlJRzFoY0U5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDIxaGNFOWlhbVZqZENjcE8xeHVYRzR2S2lwY2JpQXFJRU55WldGMFpTQmhJR1poWTNSdmNua2dkR2hoZENCamNtVmhkR1Z6SUVoVVRVd2dkR0ZuSUdWc1pXMWxiblJ6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IwWVdjZ1ZHRm5JRzVoYldVZ0tHVXVaeTRnWUdScGRtQXBMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxSRTlOUm1GamRHOXllU2gwWVdjcElIdGNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQnlaWFIxY200Z1VtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlMbU55WldGMFpVWmhZM1J2Y25rb2RHRm5LVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdVbVZoWTNSRmJHVnRaVzUwTG1OeVpXRjBaVVpoWTNSdmNua29kR0ZuS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnYldGd2NHbHVaeUJtY205dElITjFjSEJ2Y25SbFpDQklWRTFNSUhSaFozTWdkRzhnWUZKbFlXTjBSRTlOUTI5dGNHOXVaVzUwWUNCamJHRnpjMlZ6TGx4dUlDb2dWR2hwY3lCcGN5QmhiSE52SUdGalkyVnpjMmxpYkdVZ2RtbGhJR0JTWldGamRDNUVUMDFnTGx4dUlDcGNiaUFxSUVCd2RXSnNhV05jYmlBcUwxeHVkbUZ5SUZKbFlXTjBSRTlOUm1GamRHOXlhV1Z6SUQwZ2JXRndUMkpxWldOMEtIdGNiaUFnWVRvZ0oyRW5MRnh1SUNCaFltSnlPaUFuWVdKaWNpY3NYRzRnSUdGa1pISmxjM002SUNkaFpHUnlaWE56Snl4Y2JpQWdZWEpsWVRvZ0oyRnlaV0VuTEZ4dUlDQmhjblJwWTJ4bE9pQW5ZWEowYVdOc1pTY3NYRzRnSUdGemFXUmxPaUFuWVhOcFpHVW5MRnh1SUNCaGRXUnBiem9nSjJGMVpHbHZKeXhjYmlBZ1lqb2dKMkluTEZ4dUlDQmlZWE5sT2lBblltRnpaU2NzWEc0Z0lHSmthVG9nSjJKa2FTY3NYRzRnSUdKa2J6b2dKMkprYnljc1hHNGdJR0pwWnpvZ0oySnBaeWNzWEc0Z0lHSnNiMk5yY1hWdmRHVTZJQ2RpYkc5amEzRjFiM1JsSnl4Y2JpQWdZbTlrZVRvZ0oySnZaSGtuTEZ4dUlDQmljam9nSjJKeUp5eGNiaUFnWW5WMGRHOXVPaUFuWW5WMGRHOXVKeXhjYmlBZ1kyRnVkbUZ6T2lBblkyRnVkbUZ6Snl4Y2JpQWdZMkZ3ZEdsdmJqb2dKMk5oY0hScGIyNG5MRnh1SUNCamFYUmxPaUFuWTJsMFpTY3NYRzRnSUdOdlpHVTZJQ2RqYjJSbEp5eGNiaUFnWTI5c09pQW5ZMjlzSnl4Y2JpQWdZMjlzWjNKdmRYQTZJQ2RqYjJ4bmNtOTFjQ2NzWEc0Z0lHUmhkR0U2SUNka1lYUmhKeXhjYmlBZ1pHRjBZV3hwYzNRNklDZGtZWFJoYkdsemRDY3NYRzRnSUdSa09pQW5aR1FuTEZ4dUlDQmtaV3c2SUNka1pXd25MRnh1SUNCa1pYUmhhV3h6T2lBblpHVjBZV2xzY3ljc1hHNGdJR1JtYmpvZ0oyUm1iaWNzWEc0Z0lHUnBZV3h2WnpvZ0oyUnBZV3h2Wnljc1hHNGdJR1JwZGpvZ0oyUnBkaWNzWEc0Z0lHUnNPaUFuWkd3bkxGeHVJQ0JrZERvZ0oyUjBKeXhjYmlBZ1pXMDZJQ2RsYlNjc1hHNGdJR1Z0WW1Wa09pQW5aVzFpWldRbkxGeHVJQ0JtYVdWc1pITmxkRG9nSjJacFpXeGtjMlYwSnl4Y2JpQWdabWxuWTJGd2RHbHZiam9nSjJacFoyTmhjSFJwYjI0bkxGeHVJQ0JtYVdkMWNtVTZJQ2RtYVdkMWNtVW5MRnh1SUNCbWIyOTBaWEk2SUNkbWIyOTBaWEluTEZ4dUlDQm1iM0p0T2lBblptOXliU2NzWEc0Z0lHZ3hPaUFuYURFbkxGeHVJQ0JvTWpvZ0oyZ3lKeXhjYmlBZ2FETTZJQ2RvTXljc1hHNGdJR2cwT2lBbmFEUW5MRnh1SUNCb05Ub2dKMmcxSnl4Y2JpQWdhRFk2SUNkb05pY3NYRzRnSUdobFlXUTZJQ2RvWldGa0p5eGNiaUFnYUdWaFpHVnlPaUFuYUdWaFpHVnlKeXhjYmlBZ2FHZHliM1Z3T2lBbmFHZHliM1Z3Snl4Y2JpQWdhSEk2SUNkb2NpY3NYRzRnSUdoMGJXdzZJQ2RvZEcxc0p5eGNiaUFnYVRvZ0oya25MRnh1SUNCcFpuSmhiV1U2SUNkcFpuSmhiV1VuTEZ4dUlDQnBiV2M2SUNkcGJXY25MRnh1SUNCcGJuQjFkRG9nSjJsdWNIVjBKeXhjYmlBZ2FXNXpPaUFuYVc1ekp5eGNiaUFnYTJKa09pQW5hMkprSnl4Y2JpQWdhMlY1WjJWdU9pQW5hMlY1WjJWdUp5eGNiaUFnYkdGaVpXdzZJQ2RzWVdKbGJDY3NYRzRnSUd4bFoyVnVaRG9nSjJ4bFoyVnVaQ2NzWEc0Z0lHeHBPaUFuYkdrbkxGeHVJQ0JzYVc1ck9pQW5iR2x1YXljc1hHNGdJRzFoYVc0NklDZHRZV2x1Snl4Y2JpQWdiV0Z3T2lBbmJXRndKeXhjYmlBZ2JXRnlhem9nSjIxaGNtc25MRnh1SUNCdFpXNTFPaUFuYldWdWRTY3NYRzRnSUcxbGJuVnBkR1Z0T2lBbmJXVnVkV2wwWlcwbkxGeHVJQ0J0WlhSaE9pQW5iV1YwWVNjc1hHNGdJRzFsZEdWeU9pQW5iV1YwWlhJbkxGeHVJQ0J1WVhZNklDZHVZWFluTEZ4dUlDQnViM05qY21sd2REb2dKMjV2YzJOeWFYQjBKeXhjYmlBZ2IySnFaV04wT2lBbmIySnFaV04wSnl4Y2JpQWdiMnc2SUNkdmJDY3NYRzRnSUc5d2RHZHliM1Z3T2lBbmIzQjBaM0p2ZFhBbkxGeHVJQ0J2Y0hScGIyNDZJQ2R2Y0hScGIyNG5MRnh1SUNCdmRYUndkWFE2SUNkdmRYUndkWFFuTEZ4dUlDQndPaUFuY0Njc1hHNGdJSEJoY21GdE9pQW5jR0Z5WVcwbkxGeHVJQ0J3YVdOMGRYSmxPaUFuY0dsamRIVnlaU2NzWEc0Z0lIQnlaVG9nSjNCeVpTY3NYRzRnSUhCeWIyZHlaWE56T2lBbmNISnZaM0psYzNNbkxGeHVJQ0J4T2lBbmNTY3NYRzRnSUhKd09pQW5jbkFuTEZ4dUlDQnlkRG9nSjNKMEp5eGNiaUFnY25WaWVUb2dKM0oxWW5rbkxGeHVJQ0J6T2lBbmN5Y3NYRzRnSUhOaGJYQTZJQ2R6WVcxd0p5eGNiaUFnYzJOeWFYQjBPaUFuYzJOeWFYQjBKeXhjYmlBZ2MyVmpkR2x2YmpvZ0ozTmxZM1JwYjI0bkxGeHVJQ0J6Wld4bFkzUTZJQ2R6Wld4bFkzUW5MRnh1SUNCemJXRnNiRG9nSjNOdFlXeHNKeXhjYmlBZ2MyOTFjbU5sT2lBbmMyOTFjbU5sSnl4Y2JpQWdjM0JoYmpvZ0ozTndZVzRuTEZ4dUlDQnpkSEp2Ym1jNklDZHpkSEp2Ym1jbkxGeHVJQ0J6ZEhsc1pUb2dKM04wZVd4bEp5eGNiaUFnYzNWaU9pQW5jM1ZpSnl4Y2JpQWdjM1Z0YldGeWVUb2dKM04xYlcxaGNua25MRnh1SUNCemRYQTZJQ2R6ZFhBbkxGeHVJQ0IwWVdKc1pUb2dKM1JoWW14bEp5eGNiaUFnZEdKdlpIazZJQ2QwWW05a2VTY3NYRzRnSUhSa09pQW5kR1FuTEZ4dUlDQjBaWGgwWVhKbFlUb2dKM1JsZUhSaGNtVmhKeXhjYmlBZ2RHWnZiM1E2SUNkMFptOXZkQ2NzWEc0Z0lIUm9PaUFuZEdnbkxGeHVJQ0IwYUdWaFpEb2dKM1JvWldGa0p5eGNiaUFnZEdsdFpUb2dKM1JwYldVbkxGeHVJQ0IwYVhSc1pUb2dKM1JwZEd4bEp5eGNiaUFnZEhJNklDZDBjaWNzWEc0Z0lIUnlZV05yT2lBbmRISmhZMnNuTEZ4dUlDQjFPaUFuZFNjc1hHNGdJSFZzT2lBbmRXd25MRnh1SUNBbmRtRnlKem9nSjNaaGNpY3NYRzRnSUhacFpHVnZPaUFuZG1sa1pXOG5MRnh1SUNCM1luSTZJQ2QzWW5JbkxGeHVYRzRnSUM4dklGTldSMXh1SUNCamFYSmpiR1U2SUNkamFYSmpiR1VuTEZ4dUlDQmpiR2x3VUdGMGFEb2dKMk5zYVhCUVlYUm9KeXhjYmlBZ1pHVm1jem9nSjJSbFpuTW5MRnh1SUNCbGJHeHBjSE5sT2lBblpXeHNhWEJ6WlNjc1hHNGdJR2M2SUNkbkp5eGNiaUFnYVcxaFoyVTZJQ2RwYldGblpTY3NYRzRnSUd4cGJtVTZJQ2RzYVc1bEp5eGNiaUFnYkdsdVpXRnlSM0poWkdsbGJuUTZJQ2RzYVc1bFlYSkhjbUZrYVdWdWRDY3NYRzRnSUcxaGMyczZJQ2R0WVhOckp5eGNiaUFnY0dGMGFEb2dKM0JoZEdnbkxGeHVJQ0J3WVhSMFpYSnVPaUFuY0dGMGRHVnliaWNzWEc0Z0lIQnZiSGxuYjI0NklDZHdiMng1WjI5dUp5eGNiaUFnY0c5c2VXeHBibVU2SUNkd2IyeDViR2x1WlNjc1hHNGdJSEpoWkdsaGJFZHlZV1JwWlc1ME9pQW5jbUZrYVdGc1IzSmhaR2xsYm5RbkxGeHVJQ0J5WldOME9pQW5jbVZqZENjc1hHNGdJSE4wYjNBNklDZHpkRzl3Snl4Y2JpQWdjM1puT2lBbmMzWm5KeXhjYmlBZ2RHVjRkRG9nSjNSbGVIUW5MRnh1SUNCMGMzQmhiam9nSjNSemNHRnVKMXh1WEc1OUxDQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFUlBUVVpoWTNSdmNtbGxjenNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01JRE9wZXJhdGlvbnNcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFBlcmYgPSByZXF1aXJlKCcuL1JlYWN0UGVyZicpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogRXJyb3JzIGZvciBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIG5vdCBiZSB1cGRhdGVkIHdpdGggYHVwZGF0ZVByb3BlcnR5QnlJRCgpYC5cbiAqXG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHByaXZhdGVcbiAqL1xudmFyIElOVkFMSURfUFJPUEVSVFlfRVJST1JTID0ge1xuICBkYW5nZXJvdXNseVNldElubmVySFRNTDogJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBzZXQgdXNpbmcgYHVwZGF0ZUlubmVySFRNTEJ5SUQoKWAuJyxcbiAgc3R5bGU6ICdgc3R5bGVgIG11c3QgYmUgc2V0IHVzaW5nIGB1cGRhdGVTdHlsZXNCeUlEKClgLidcbn07XG5cbi8qKlxuICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRlcyB0byBET00gbm9kZXMuXG4gKi9cbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHtcblxuICAvKipcbiAgICogVXBkYXRlcyBhIERPTSBub2RlIHdpdGggbmV3IHByb3BlcnR5IHZhbHVlcy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvXG4gICAqIHVwZGF0ZSBET00gcHJvcGVydGllcyBpbiBgRE9NUHJvcGVydHlgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSUQgb2YgdGhlIG5vZGUgdG8gdXBkYXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBBIHZhbGlkIHByb3BlcnR5IG5hbWUsIHNlZSBgRE9NUHJvcGVydHlgLlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIE5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdXBkYXRlUHJvcGVydHlCeUlEOiBmdW5jdGlvbiAoaWQsIG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIG5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUoaWQpO1xuICAgICEhSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlUHJvcGVydHlCeUlEKC4uLik6ICVzJywgSU5WQUxJRF9QUk9QRVJUWV9FUlJPUlNbbmFtZV0pIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGluc3RlYWQgb2YgaW5hZHZlcnRhbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gYnJpbmdzIHVzIGluIGxpbmUgd2l0aCB0aGUgc2FtZSBiZWhhdmlvciB3ZSBoYXZlIG9uIGluaXRpYWwgcmVuZGVyLlxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYSBET00gbm9kZSB0aGF0IGV4aXN0cyBpbiB0aGUgZG9jdW1lbnQgd2l0aCBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiBjaGlsZCB0byBiZSByZXBsYWNlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBEYW5nZXJvdXMgbWFya3VwIHRvIGluamVjdCBpbiBwbGFjZSBvZiBjaGlsZC5cbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0Rhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH1cbiAgICovXG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwQnlJRDogZnVuY3Rpb24gKGlkLCBtYXJrdXApIHtcbiAgICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpZCk7XG4gICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG5vZGUsIG1hcmt1cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cbiAgICogQHBhcmFtIHthcnJheTxzdHJpbmc+fSBtYXJrdXAgTGlzdCBvZiBtYXJrdXAgc3RyaW5ncy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0aW9uICh1cGRhdGVzLCBtYXJrdXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVwZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHVwZGF0ZXNbaV0ucGFyZW50Tm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZSh1cGRhdGVzW2ldLnBhcmVudElEKTtcbiAgICB9XG4gICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKHVwZGF0ZXMsIG1hcmt1cCk7XG4gIH1cbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhSZWFjdERPTUlET3BlcmF0aW9ucywgJ1JlYWN0RE9NSURPcGVyYXRpb25zJywge1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQ6ICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cEJ5SUQnLFxuICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ICdkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMnXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlET3BlcmF0aW9ucztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMUpSRTl3WlhKaGRHbHZibk11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JFVDAxSlJFOXdaWEpoZEdsdmJuTmNiaUFxSUVCMGVYQmxZMmhsWTJ0eklITjBZWFJwWXkxdmJteDVYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnUkU5TlEyaHBiR1J5Wlc1UGNHVnlZWFJwYjI1eklEMGdjbVZ4ZFdseVpTZ25MaTlFVDAxRGFHbHNaSEpsYms5d1pYSmhkR2x2Ym5NbktUdGNiblpoY2lCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTWdQU0J5WlhGMWFYSmxLQ2N1TDBSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5Y3BPMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUVzkxYm5RbktUdGNiblpoY2lCU1pXRmpkRkJsY21ZZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVHVnlaaWNwTzF4dVhHNTJZWElnYVc1MllYSnBZVzUwSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MEp5azdYRzVjYmk4cUtseHVJQ29nUlhKeWIzSnpJR1p2Y2lCd2NtOXdaWEowYVdWeklIUm9ZWFFnYzJodmRXeGtJRzV2ZENCaVpTQjFjR1JoZEdWa0lIZHBkR2dnWUhWd1pHRjBaVkJ5YjNCbGNuUjVRbmxKUkNncFlDNWNiaUFxWEc0Z0tpQkFkSGx3WlNCN2IySnFaV04wZlZ4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dWRtRnlJRWxPVmtGTVNVUmZVRkpQVUVWU1ZGbGZSVkpTVDFKVElEMGdlMXh1SUNCa1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5URG9nSjJCa1lXNW5aWEp2ZFhOc2VWTmxkRWx1Ym1WeVNGUk5UR0FnYlhWemRDQmlaU0J6WlhRZ2RYTnBibWNnWUhWd1pHRjBaVWx1Ym1WeVNGUk5URUo1U1VRb0tXQXVKeXhjYmlBZ2MzUjViR1U2SUNkZ2MzUjViR1ZnSUcxMWMzUWdZbVVnYzJWMElIVnphVzVuSUdCMWNHUmhkR1ZUZEhsc1pYTkNlVWxFS0NsZ0xpZGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1QzQmxjbUYwYVc5dWN5QjFjMlZrSUhSdklIQnliMk5sYzNNZ2RYQmtZWFJsY3lCMGJ5QkVUMDBnYm05a1pYTXVYRzRnS2k5Y2JuWmhjaUJTWldGamRFUlBUVWxFVDNCbGNtRjBhVzl1Y3lBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1ZYQmtZWFJsY3lCaElFUlBUU0J1YjJSbElIZHBkR2dnYm1WM0lIQnliM0JsY25SNUlIWmhiSFZsY3k0Z1ZHaHBjeUJ6YUc5MWJHUWdiMjVzZVNCaVpTQjFjMlZrSUhSdlhHNGdJQ0FxSUhWd1pHRjBaU0JFVDAwZ2NISnZjR1Z5ZEdsbGN5QnBiaUJnUkU5TlVISnZjR1Z5ZEhsZ0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnU1VRZ2IyWWdkR2hsSUc1dlpHVWdkRzhnZFhCa1lYUmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaU0JCSUhaaGJHbGtJSEJ5YjNCbGNuUjVJRzVoYldVc0lITmxaU0JnUkU5TlVISnZjR1Z5ZEhsZ0xseHVJQ0FnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsSUU1bGR5QjJZV3gxWlNCdlppQjBhR1VnY0hKdmNHVnlkSGt1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnZFhCa1lYUmxVSEp2Y0dWeWRIbENlVWxFT2lCbWRXNWpkR2x2YmlBb2FXUXNJRzVoYldVc0lIWmhiSFZsS1NCN1hHNGdJQ0FnZG1GeUlHNXZaR1VnUFNCU1pXRmpkRTF2ZFc1MExtZGxkRTV2WkdVb2FXUXBPMXh1SUNBZ0lDRWhTVTVXUVV4SlJGOVFVazlRUlZKVVdWOUZVbEpQVWxNdWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRYQmtZWFJsVUhKdmNHVnlkSGxDZVVsRUtDNHVMaWs2SUNWekp5d2dTVTVXUVV4SlJGOVFVazlRUlZKVVdWOUZVbEpQVWxOYmJtRnRaVjBwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lDOHZJRWxtSUhkbEozSmxJSFZ3WkdGMGFXNW5JSFJ2SUc1MWJHd2diM0lnZFc1a1pXWnBibVZrTENCM1pTQnphRzkxYkdRZ2NtVnRiM1psSUhSb1pTQndjbTl3WlhKMGVWeHVJQ0FnSUM4dklHWnliMjBnZEdobElFUlBUU0J1YjJSbElHbHVjM1JsWVdRZ2IyWWdhVzVoWkhabGNuUmhiblJzZVNCelpYUjBhVzVuSUhSdklHRWdjM1J5YVc1bkxpQlVhR2x6WEc0Z0lDQWdMeThnWW5KcGJtZHpJSFZ6SUdsdUlHeHBibVVnZDJsMGFDQjBhR1VnYzJGdFpTQmlaV2hoZG1sdmNpQjNaU0JvWVhabElHOXVJR2x1YVhScFlXd2djbVZ1WkdWeUxseHVJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCRVQwMVFjbTl3WlhKMGVVOXdaWEpoZEdsdmJuTXVjMlYwVm1Gc2RXVkdiM0pRY205d1pYSjBlU2h1YjJSbExDQnVZVzFsTENCMllXeDFaU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lFUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeTVrWld4bGRHVldZV3gxWlVadmNsQnliM0JsY25SNUtHNXZaR1VzSUc1aGJXVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1Wd2JHRmpaWE1nWVNCRVQwMGdibTlrWlNCMGFHRjBJR1Y0YVhOMGN5QnBiaUIwYUdVZ1pHOWpkVzFsYm5RZ2QybDBhQ0J0WVhKcmRYQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JwWkNCSlJDQnZaaUJqYUdsc1pDQjBieUJpWlNCeVpYQnNZV05sWkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzFoY210MWNDQkVZVzVuWlhKdmRYTWdiV0Z5YTNWd0lIUnZJR2x1YW1WamRDQnBiaUJ3YkdGalpTQnZaaUJqYUdsc1pDNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxSUVCelpXVWdlMFJoYm1kbGNpNWtZVzVuWlhKdmRYTnNlVkpsY0d4aFkyVk9iMlJsVjJsMGFFMWhjbXQxY0gxY2JpQWdJQ292WEc0Z0lHUmhibWRsY205MWMyeDVVbVZ3YkdGalpVNXZaR1ZYYVhSb1RXRnlhM1Z3UW5sSlJEb2dablZ1WTNScGIyNGdLR2xrTENCdFlYSnJkWEFwSUh0Y2JpQWdJQ0IyWVhJZ2JtOWtaU0E5SUZKbFlXTjBUVzkxYm5RdVoyVjBUbTlrWlNocFpDazdYRzRnSUNBZ1JFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpMbVJoYm1kbGNtOTFjMng1VW1Wd2JHRmpaVTV2WkdWWGFYUm9UV0Z5YTNWd0tHNXZaR1VzSUcxaGNtdDFjQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVndaR0YwWlhNZ1lTQmpiMjF3YjI1bGJuUW5jeUJqYUdsc1pISmxiaUJpZVNCd2NtOWpaWE56YVc1bklHRWdjMlZ5YVdWeklHOW1JSFZ3WkdGMFpYTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3WVhKeVlYazhiMkpxWldOMFBuMGdkWEJrWVhSbGN5Qk1hWE4wSUc5bUlIVndaR0YwWlNCamIyNW1hV2QxY21GMGFXOXVjeTVjYmlBZ0lDb2dRSEJoY21GdElIdGhjbkpoZVR4emRISnBibWMrZlNCdFlYSnJkWEFnVEdsemRDQnZaaUJ0WVhKcmRYQWdjM1J5YVc1bmN5NWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmtZVzVuWlhKdmRYTnNlVkJ5YjJObGMzTkRhR2xzWkhKbGJsVndaR0YwWlhNNklHWjFibU4wYVc5dUlDaDFjR1JoZEdWekxDQnRZWEpyZFhBcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElIVndaR0YwWlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJSFZ3WkdGMFpYTmJhVjB1Y0dGeVpXNTBUbTlrWlNBOUlGSmxZV04wVFc5MWJuUXVaMlYwVG05a1pTaDFjR1JoZEdWelcybGRMbkJoY21WdWRFbEVLVHRjYmlBZ0lDQjlYRzRnSUNBZ1JFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpMbkJ5YjJObGMzTlZjR1JoZEdWektIVndaR0YwWlhNc0lHMWhjbXQxY0NrN1hHNGdJSDFjYm4wN1hHNWNibEpsWVdOMFVHVnlaaTV0WldGemRYSmxUV1YwYUc5a2N5aFNaV0ZqZEVSUFRVbEVUM0JsY21GMGFXOXVjeXdnSjFKbFlXTjBSRTlOU1VSUGNHVnlZWFJwYjI1ekp5d2dlMXh1SUNCa1lXNW5aWEp2ZFhOc2VWSmxjR3hoWTJWT2IyUmxWMmwwYUUxaGNtdDFjRUo1U1VRNklDZGtZVzVuWlhKdmRYTnNlVkpsY0d4aFkyVk9iMlJsVjJsMGFFMWhjbXQxY0VKNVNVUW5MRnh1SUNCa1lXNW5aWEp2ZFhOc2VWQnliMk5sYzNORGFHbHNaSEpsYmxWd1pHRjBaWE02SUNka1lXNW5aWEp2ZFhOc2VWQnliMk5sYzNORGFHbHNaSEpsYmxWd1pHRjBaWE1uWEc1OUtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFUlBUVWxFVDNCbGNtRjBhVzl1Y3pzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NSW5wdXRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTtcbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVxdWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGluc3RhbmNlc0J5UmVhY3RJRCA9IHt9O1xuXG5mdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtcbiAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcbiAgICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZVxuICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBuYXRpdmUgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0aW9uYWxcbiAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9uc1xuICogdGhhdCBhZmZlY3QgdGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxuICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9yXG4gKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRgKVxuICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWApLlxuICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG4gKi9cbnZhciBSZWFjdERPTUlucHV0ID0ge1xuICBnZXROYXRpdmVQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgdmFyIGNoZWNrZWQgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldENoZWNrZWQocHJvcHMpO1xuXG4gICAgdmFyIG5hdGl2ZVByb3BzID0gYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgZGVmYXVsdENoZWNrZWQ6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgdmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG4gICAgICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVja2VkIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLFxuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5hdGl2ZVByb3BzO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ2lucHV0JywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICBpbml0aWFsQ2hlY2tlZDogcHJvcHMuZGVmYXVsdENoZWNrZWQgfHwgZmFsc2UsXG4gICAgICBpbml0aWFsVmFsdWU6IGRlZmF1bHRWYWx1ZSAhPSBudWxsID8gZGVmYXVsdFZhbHVlIDogbnVsbCxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdClcbiAgICB9O1xuICB9LFxuXG4gIG1vdW50UmVhZHlXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIC8vIENhbid0IGJlIGluIG1vdW50V3JhcHBlciBvciBlbHNlIHNlcnZlciByZW5kZXJpbmcgbGVha3MuXG4gICAgaW5zdGFuY2VzQnlSZWFjdElEW2luc3QuX3Jvb3ROb2RlSURdID0gaW5zdDtcbiAgfSxcblxuICB1bm1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICBkZWxldGUgaW5zdGFuY2VzQnlSZWFjdElEW2luc3QuX3Jvb3ROb2RlSURdO1xuICB9LFxuXG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBUT0RPOiBTaG91bGRuJ3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cbiAgICB2YXIgY2hlY2tlZCA9IHByb3BzLmNoZWNrZWQ7XG4gICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkge1xuICAgICAgUmVhY3RET01JRE9wZXJhdGlvbnMudXBkYXRlUHJvcGVydHlCeUlEKGluc3QuX3Jvb3ROb2RlSUQsICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG4gICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG4gICAgICBSZWFjdERPTUlET3BlcmF0aW9ucy51cGRhdGVQcm9wZXJ0eUJ5SUQoaW5zdC5fcm9vdE5vZGVJRCwgJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hpY2hcbiAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTY5OFxuICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG5cbiAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lO1xuICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51bGwpIHtcbiAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdE1vdW50LmdldE5vZGUodGhpcy5fcm9vdE5vZGVJRCk7XG4gICAgdmFyIHF1ZXJ5Um9vdCA9IHJvb3ROb2RlO1xuXG4gICAgd2hpbGUgKHF1ZXJ5Um9vdC5wYXJlbnROb2RlKSB7XG4gICAgICBxdWVyeVJvb3QgPSBxdWVyeVJvb3QucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICAvLyBJZiBgcm9vdE5vZGUuZm9ybWAgd2FzIG5vbi1udWxsLCB0aGVuIHdlIGNvdWxkIHRyeSBgZm9ybS5lbGVtZW50c2AsXG4gICAgLy8gYnV0IHRoYXQgc29tZXRpbWVzIGJlaGF2ZXMgc3RyYW5nZWx5IGluIElFOC4gV2UgY291bGQgYWxzbyB0cnkgdXNpbmdcbiAgICAvLyBgZm9ybS5nZXRFbGVtZW50c0J5TmFtZWAsIGJ1dCB0aGF0IHdpbGwgb25seSByZXR1cm4gZGlyZWN0IGNoaWxkcmVuXG4gICAgLy8gYW5kIHdvbid0IGluY2x1ZGUgaW5wdXRzIHRoYXQgdXNlIHRoZSBIVE1MNSBgZm9ybT1gIGF0dHJpYnV0ZS4gU2luY2VcbiAgICAvLyB0aGUgaW5wdXQgbWlnaHQgbm90IGV2ZW4gYmUgaW4gYSBmb3JtLCBsZXQncyBqdXN0IHVzZSB0aGUgZ2xvYmFsXG4gICAgLy8gYHF1ZXJ5U2VsZWN0b3JBbGxgIHRvIGVuc3VyZSB3ZSBkb24ndCBtaXNzIGFueXRoaW5nLlxuICAgIHZhciBncm91cCA9IHF1ZXJ5Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPScgKyBKU09OLnN0cmluZ2lmeSgnJyArIG5hbWUpICsgJ11bdHlwZT1cInJhZGlvXCJdJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgb3RoZXJOb2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAob3RoZXJOb2RlID09PSByb290Tm9kZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBidXR0b25zIHJlbmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3RcbiAgICAgIC8vIGFuZCB0aGUgc2FtZSBuYW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNhbWUgYXMgIzE5MzkpLlxuICAgICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1cHBvcnQgaXQganVzdCBhcyB3ZSBkb24ndCBzdXBwb3J0XG4gICAgICAvLyBtaXhpbmcgUmVhY3Qgd2l0aCBub24tUmVhY3QuXG4gICAgICB2YXIgb3RoZXJJRCA9IFJlYWN0TW91bnQuZ2V0SUQob3RoZXJOb2RlKTtcbiAgICAgICFvdGhlcklEID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3aXRoIHRoZSAnICsgJ3NhbWUgYG5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIG90aGVySW5zdGFuY2UgPSBpbnN0YW5jZXNCeVJlYWN0SURbb3RoZXJJRF07XG4gICAgICAhb3RoZXJJbnN0YW5jZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTUlucHV0OiBVbmtub3duIHJhZGlvIGJ1dHRvbiBJRCAlcy4nLCBvdGhlcklEKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3JvdXAsIGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNrZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkXG4gICAgICAvLyBhcyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMUpibkIxZEM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JFVDAxSmJuQjFkRnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBSRTlOU1VSUGNHVnlZWFJwYjI1eklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVWxFVDNCbGNtRjBhVzl1Y3ljcE8xeHVkbUZ5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwweHBibXRsWkZaaGJIVmxWWFJwYkhNbktUdGNiblpoY2lCU1pXRmpkRTF2ZFc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFMXZkVzUwSnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc1MllYSWdhVzV6ZEdGdVkyVnpRbmxTWldGamRFbEVJRDBnZTMwN1hHNWNibVoxYm1OMGFXOXVJR1p2Y21ObFZYQmtZWFJsU1daTmIzVnVkR1ZrS0NrZ2UxeHVJQ0JwWmlBb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNrZ2UxeHVJQ0FnSUM4dklFUlBUU0JqYjIxd2IyNWxiblFnYVhNZ2MzUnBiR3dnYlc5MWJuUmxaRHNnZFhCa1lYUmxYRzRnSUNBZ1VtVmhZM1JFVDAxSmJuQjFkQzUxY0dSaGRHVlhjbUZ3Y0dWeUtIUm9hWE1wTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QmhiaUE4YVc1d2RYUStJRzVoZEdsMlpTQmpiMjF3YjI1bGJuUWdkR2hoZENCaGJHeHZkM01nYzJWMGRHbHVaeUIwYUdWelpTQnZjSFJwYjI1aGJGeHVJQ29nY0hKdmNITTZJR0JqYUdWamEyVmtZQ3dnWUhaaGJIVmxZQ3dnWUdSbFptRjFiSFJEYUdWamEyVmtZQ3dnWVc1a0lHQmtaV1poZFd4MFZtRnNkV1ZnTGx4dUlDcGNiaUFxSUVsbUlHQmphR1ZqYTJWa1lDQnZjaUJnZG1Gc2RXVmdJR0Z5WlNCdWIzUWdjM1Z3Y0d4cFpXUWdLRzl5SUc1MWJHd3ZkVzVrWldacGJtVmtLU3dnZFhObGNpQmhZM1JwYjI1elhHNGdLaUIwYUdGMElHRm1abVZqZENCMGFHVWdZMmhsWTJ0bFpDQnpkR0YwWlNCdmNpQjJZV3gxWlNCM2FXeHNJSFJ5YVdkblpYSWdkWEJrWVhSbGN5QjBieUIwYUdVZ1pXeGxiV1Z1ZEM1Y2JpQXFYRzRnS2lCSlppQjBhR1Y1SUdGeVpTQnpkWEJ3YkdsbFpDQW9ZVzVrSUc1dmRDQnVkV3hzTDNWdVpHVm1hVzVsWkNrc0lIUm9aU0J5Wlc1a1pYSmxaQ0JsYkdWdFpXNTBJSGRwYkd3Z2JtOTBYRzRnS2lCMGNtbG5aMlZ5SUhWd1pHRjBaWE1nZEc4Z2RHaGxJR1ZzWlcxbGJuUXVJRWx1YzNSbFlXUXNJSFJvWlNCd2NtOXdjeUJ0ZFhOMElHTm9ZVzVuWlNCcGJpQnZjbVJsY2lCbWIzSmNiaUFxSUhSb1pTQnlaVzVrWlhKbFpDQmxiR1Z0Wlc1MElIUnZJR0psSUhWd1pHRjBaV1F1WEc0Z0tseHVJQ29nVkdobElISmxibVJsY21Wa0lHVnNaVzFsYm5RZ2QybHNiQ0JpWlNCcGJtbDBhV0ZzYVhwbFpDQmhjeUIxYm1Ob1pXTnJaV1FnS0c5eUlHQmtaV1poZFd4MFEyaGxZMnRsWkdBcFhHNGdLaUIzYVhSb0lHRnVJR1Z0Y0hSNUlIWmhiSFZsSUNodmNpQmdaR1ZtWVhWc2RGWmhiSFZsWUNrdVhHNGdLbHh1SUNvZ1FITmxaU0JvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk4eU1ERXlMMWRFTFdoMGJXdzFMVEl3TVRJeE1ESTFMM1JvWlMxcGJuQjFkQzFsYkdWdFpXNTBMbWgwYld4Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUkU5TlNXNXdkWFFnUFNCN1hHNGdJR2RsZEU1aGRHbDJaVkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9hVzV6ZEN3Z2NISnZjSE1zSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2RtRnNkV1VnUFNCTWFXNXJaV1JXWVd4MVpWVjBhV3h6TG1kbGRGWmhiSFZsS0hCeWIzQnpLVHRjYmlBZ0lDQjJZWElnWTJobFkydGxaQ0E5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE11WjJWMFEyaGxZMnRsWkNod2NtOXdjeWs3WEc1Y2JpQWdJQ0IyWVhJZ2JtRjBhWFpsVUhKdmNITWdQU0JoYzNOcFoyNG9lMzBzSUhCeWIzQnpMQ0I3WEc0Z0lDQWdJQ0JrWldaaGRXeDBRMmhsWTJ0bFpEb2dkVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdaR1ZtWVhWc2RGWmhiSFZsT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCMllXeDFaVG9nZG1Gc2RXVWdJVDBnYm5Wc2JDQS9JSFpoYkhWbElEb2dhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbWx1YVhScFlXeFdZV3gxWlN4Y2JpQWdJQ0FnSUdOb1pXTnJaV1E2SUdOb1pXTnJaV1FnSVQwZ2JuVnNiQ0EvSUdOb1pXTnJaV1FnT2lCcGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVdWFXNXBkR2xoYkVOb1pXTnJaV1FzWEc0Z0lDQWdJQ0J2YmtOb1lXNW5aVG9nYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG05dVEyaGhibWRsWEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdibUYwYVhabFVISnZjSE03WEc0Z0lIMHNYRzVjYmlBZ2JXOTFiblJYY21Gd2NHVnlPaUJtZFc1amRHbHZiaUFvYVc1emRDd2djSEp2Y0hNcElIdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnVEdsdWEyVmtWbUZzZFdWVmRHbHNjeTVqYUdWamExQnliM0JVZVhCbGN5Z25hVzV3ZFhRbkxDQndjbTl3Y3l3Z2FXNXpkQzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdaR1ZtWVhWc2RGWmhiSFZsSUQwZ2NISnZjSE11WkdWbVlYVnNkRlpoYkhWbE8xeHVJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlNBOUlIdGNiaUFnSUNBZ0lHbHVhWFJwWVd4RGFHVmphMlZrT2lCd2NtOXdjeTVrWldaaGRXeDBRMmhsWTJ0bFpDQjhmQ0JtWVd4elpTeGNiaUFnSUNBZ0lHbHVhWFJwWVd4V1lXeDFaVG9nWkdWbVlYVnNkRlpoYkhWbElDRTlJRzUxYkd3Z1B5QmtaV1poZFd4MFZtRnNkV1VnT2lCdWRXeHNMRnh1SUNBZ0lDQWdiMjVEYUdGdVoyVTZJRjlvWVc1a2JHVkRhR0Z1WjJVdVltbHVaQ2hwYm5OMEtWeHVJQ0FnSUgwN1hHNGdJSDBzWEc1Y2JpQWdiVzkxYm5SU1pXRmtlVmR5WVhCd1pYSTZJR1oxYm1OMGFXOXVJQ2hwYm5OMEtTQjdYRzRnSUNBZ0x5OGdRMkZ1SjNRZ1ltVWdhVzRnYlc5MWJuUlhjbUZ3Y0dWeUlHOXlJR1ZzYzJVZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1WnlCc1pXRnJjeTVjYmlBZ0lDQnBibk4wWVc1alpYTkNlVkpsWVdOMFNVUmJhVzV6ZEM1ZmNtOXZkRTV2WkdWSlJGMGdQU0JwYm5OME8xeHVJQ0I5TEZ4dVhHNGdJSFZ1Ylc5MWJuUlhjbUZ3Y0dWeU9pQm1kVzVqZEdsdmJpQW9hVzV6ZENrZ2UxeHVJQ0FnSUdSbGJHVjBaU0JwYm5OMFlXNWpaWE5DZVZKbFlXTjBTVVJiYVc1emRDNWZjbTl2ZEU1dlpHVkpSRjA3WEc0Z0lIMHNYRzVjYmlBZ2RYQmtZWFJsVjNKaGNIQmxjam9nWm5WdVkzUnBiMjRnS0dsdWMzUXBJSHRjYmlBZ0lDQjJZWElnY0hKdmNITWdQU0JwYm5OMExsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjenRjYmx4dUlDQWdJQzh2SUZSUFJFODZJRk5vYjNWc1pHNG5kQ0IwYUdseklHSmxJR2RsZEVOb1pXTnJaV1FvY0hKdmNITXBQMXh1SUNBZ0lIWmhjaUJqYUdWamEyVmtJRDBnY0hKdmNITXVZMmhsWTJ0bFpEdGNiaUFnSUNCcFppQW9ZMmhsWTJ0bFpDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQlNaV0ZqZEVSUFRVbEVUM0JsY21GMGFXOXVjeTUxY0dSaGRHVlFjbTl3WlhKMGVVSjVTVVFvYVc1emRDNWZjbTl2ZEU1dlpHVkpSQ3dnSjJOb1pXTnJaV1FuTENCamFHVmphMlZrSUh4OElHWmhiSE5sS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2RtRnNkV1VnUFNCTWFXNXJaV1JXWVd4MVpWVjBhV3h6TG1kbGRGWmhiSFZsS0hCeWIzQnpLVHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdMeThnUTJGemRDQmdkbUZzZFdWZ0lIUnZJR0VnYzNSeWFXNW5JSFJ2SUdWdWMzVnlaU0IwYUdVZ2RtRnNkV1VnYVhNZ2MyVjBJR052Y25KbFkzUnNlUzRnVjJocGJHVmNiaUFnSUNBZ0lDOHZJR0p5YjNkelpYSnpJSFI1Y0dsallXeHNlU0JrYnlCMGFHbHpJR0Z6SUc1bFkyVnpjMkZ5ZVN3Z2FuTmtiMjBnWkc5bGMyNG5kQzVjYmlBZ0lDQWdJRkpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6TG5Wd1pHRjBaVkJ5YjNCbGNuUjVRbmxKUkNocGJuTjBMbDl5YjI5MFRtOWtaVWxFTENBbmRtRnNkV1VuTENBbkp5QXJJSFpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibVoxYm1OMGFXOXVJRjlvWVc1a2JHVkRhR0Z1WjJVb1pYWmxiblFwSUh0Y2JpQWdkbUZ5SUhCeWIzQnpJRDBnZEdocGN5NWZZM1Z5Y21WdWRFVnNaVzFsYm5RdWNISnZjSE03WEc1Y2JpQWdkbUZ5SUhKbGRIVnlibFpoYkhWbElEMGdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5NWxlR1ZqZFhSbFQyNURhR0Z1WjJVb2NISnZjSE1zSUdWMlpXNTBLVHRjYmx4dUlDQXZMeUJJWlhKbElIZGxJSFZ6WlNCaGMyRndJSFJ2SUhkaGFYUWdkVzUwYVd3Z1lXeHNJSFZ3WkdGMFpYTWdhR0YyWlNCd2NtOXdZV2RoZEdWa0xDQjNhR2xqYUZ4dUlDQXZMeUJwY3lCcGJYQnZjblJoYm5RZ2QyaGxiaUIxYzJsdVp5QmpiMjUwY205c2JHVmtJR052YlhCdmJtVnVkSE1nZDJsMGFHbHVJR3hoZVdWeWN6cGNiaUFnTHk4Z2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwyWmhZMlZpYjI5ckwzSmxZV04wTDJsemMzVmxjeTh4TmprNFhHNGdJRkpsWVdOMFZYQmtZWFJsY3k1aGMyRndLR1p2Y21ObFZYQmtZWFJsU1daTmIzVnVkR1ZrTENCMGFHbHpLVHRjYmx4dUlDQjJZWElnYm1GdFpTQTlJSEJ5YjNCekxtNWhiV1U3WEc0Z0lHbG1JQ2h3Y205d2N5NTBlWEJsSUQwOVBTQW5jbUZrYVc4bklDWW1JRzVoYldVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUhaaGNpQnliMjkwVG05a1pTQTlJRkpsWVdOMFRXOTFiblF1WjJWMFRtOWtaU2gwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ0lDQjJZWElnY1hWbGNubFNiMjkwSUQwZ2NtOXZkRTV2WkdVN1hHNWNiaUFnSUNCM2FHbHNaU0FvY1hWbGNubFNiMjkwTG5CaGNtVnVkRTV2WkdVcElIdGNiaUFnSUNBZ0lIRjFaWEo1VW05dmRDQTlJSEYxWlhKNVVtOXZkQzV3WVhKbGJuUk9iMlJsTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUVsbUlHQnliMjkwVG05a1pTNW1iM0p0WUNCM1lYTWdibTl1TFc1MWJHd3NJSFJvWlc0Z2QyVWdZMjkxYkdRZ2RISjVJR0JtYjNKdExtVnNaVzFsYm5SellDeGNiaUFnSUNBdkx5QmlkWFFnZEdoaGRDQnpiMjFsZEdsdFpYTWdZbVZvWVhabGN5QnpkSEpoYm1kbGJIa2dhVzRnU1VVNExpQlhaU0JqYjNWc1pDQmhiSE52SUhSeWVTQjFjMmx1WjF4dUlDQWdJQzh2SUdCbWIzSnRMbWRsZEVWc1pXMWxiblJ6UW5sT1lXMWxZQ3dnWW5WMElIUm9ZWFFnZDJsc2JDQnZibXg1SUhKbGRIVnliaUJrYVhKbFkzUWdZMmhwYkdSeVpXNWNiaUFnSUNBdkx5QmhibVFnZDI5dUozUWdhVzVqYkhWa1pTQnBibkIxZEhNZ2RHaGhkQ0IxYzJVZ2RHaGxJRWhVVFV3MUlHQm1iM0p0UFdBZ1lYUjBjbWxpZFhSbExpQlRhVzVqWlZ4dUlDQWdJQzh2SUhSb1pTQnBibkIxZENCdGFXZG9kQ0J1YjNRZ1pYWmxiaUJpWlNCcGJpQmhJR1p2Y20wc0lHeGxkQ2R6SUdwMWMzUWdkWE5sSUhSb1pTQm5iRzlpWVd4Y2JpQWdJQ0F2THlCZ2NYVmxjbmxUWld4bFkzUnZja0ZzYkdBZ2RHOGdaVzV6ZFhKbElIZGxJR1J2YmlkMElHMXBjM01nWVc1NWRHaHBibWN1WEc0Z0lDQWdkbUZ5SUdkeWIzVndJRDBnY1hWbGNubFNiMjkwTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dvSjJsdWNIVjBXMjVoYldVOUp5QXJJRXBUVDA0dWMzUnlhVzVuYVdaNUtDY25JQ3NnYm1GdFpTa2dLeUFuWFZ0MGVYQmxQVndpY21Ga2FXOWNJbDBuS1R0Y2JseHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1ozSnZkWEF1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lIWmhjaUJ2ZEdobGNrNXZaR1VnUFNCbmNtOTFjRnRwWFR0Y2JpQWdJQ0FnSUdsbUlDaHZkR2hsY2s1dlpHVWdQVDA5SUhKdmIzUk9iMlJsSUh4OElHOTBhR1Z5VG05a1pTNW1iM0p0SUNFOVBTQnliMjkwVG05a1pTNW1iM0p0S1NCN1hHNGdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdWR2hwY3lCM2FXeHNJSFJvY205M0lHbG1JSEpoWkdsdklHSjFkSFJ2Ym5NZ2NtVnVaR1Z5WldRZ1lua2daR2xtWm1WeVpXNTBJR052Y0dsbGN5QnZaaUJTWldGamRGeHVJQ0FnSUNBZ0x5OGdZVzVrSUhSb1pTQnpZVzFsSUc1aGJXVWdZWEpsSUhKbGJtUmxjbVZrSUdsdWRHOGdkR2hsSUhOaGJXVWdabTl5YlNBb2MyRnRaU0JoY3lBak1Ua3pPU2t1WEc0Z0lDQWdJQ0F2THlCVWFHRjBKM01nY0hKdlltRmliSGtnYjJ0aGVUc2dkMlVnWkc5dUozUWdjM1Z3Y0c5eWRDQnBkQ0JxZFhOMElHRnpJSGRsSUdSdmJpZDBJSE4xY0hCdmNuUmNiaUFnSUNBZ0lDOHZJRzFwZUdsdVp5QlNaV0ZqZENCM2FYUm9JRzV2YmkxU1pXRmpkQzVjYmlBZ0lDQWdJSFpoY2lCdmRHaGxja2xFSUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJKUkNodmRHaGxjazV2WkdVcE8xeHVJQ0FnSUNBZ0lXOTBhR1Z5U1VRZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVW1WaFkzUkVUMDFKYm5CMWREb2dUV2w0YVc1bklGSmxZV04wSUdGdVpDQnViMjR0VW1WaFkzUWdjbUZrYVc4Z2FXNXdkWFJ6SUhkcGRHZ2dkR2hsSUNjZ0t5QW5jMkZ0WlNCZ2JtRnRaV0FnYVhNZ2JtOTBJSE4xY0hCdmNuUmxaQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjJZWElnYjNSb1pYSkpibk4wWVc1alpTQTlJR2x1YzNSaGJtTmxjMEo1VW1WaFkzUkpSRnR2ZEdobGNrbEVYVHRjYmlBZ0lDQWdJQ0Z2ZEdobGNrbHVjM1JoYm1ObElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBSRTlOU1c1d2RYUTZJRlZ1YTI1dmQyNGdjbUZrYVc4Z1luVjBkRzl1SUVsRUlDVnpMaWNzSUc5MGFHVnlTVVFwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDOHZJRWxtSUhSb2FYTWdhWE1nWVNCamIyNTBjbTlzYkdWa0lISmhaR2x2SUdKMWRIUnZiaUJuY205MWNDd2dabTl5WTJsdVp5QjBhR1VnYVc1d2RYUWdkR2hoZEZ4dUlDQWdJQ0FnTHk4Z2QyRnpJSEJ5WlhacGIzVnpiSGtnWTJobFkydGxaQ0IwYnlCMWNHUmhkR1VnZDJsc2JDQmpZWFZ6WlNCcGRDQjBieUJpWlNCamIyMWxJSEpsTFdOb1pXTnJaV1JjYmlBZ0lDQWdJQzh2SUdGeklHRndjSEp2Y0hKcFlYUmxMbHh1SUNBZ0lDQWdVbVZoWTNSVmNHUmhkR1Z6TG1GellYQW9abTl5WTJWVmNHUmhkR1ZKWmsxdmRXNTBaV1FzSUc5MGFHVnlTVzV6ZEdGdVkyVXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnlaWFIxY201V1lXeDFaVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRVbHVjSFYwT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RE9NT3B0aW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZHJlbicpO1xudmFyIFJlYWN0RE9NU2VsZWN0ID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHZhbHVlQ29udGV4dEtleSA9IFJlYWN0RE9NU2VsZWN0LnZhbHVlQ29udGV4dEtleTtcblxuLyoqXG4gKiBJbXBsZW1lbnRzIGFuIDxvcHRpb24+IG5hdGl2ZSBjb21wb25lbnQgdGhhdCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LlxuICovXG52YXIgUmVhY3RET01PcHRpb24gPSB7XG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBjb250ZXh0KSB7XG4gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVjdGVkID09IG51bGwsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBMb29rIHVwIHdoZXRoZXIgdGhpcyBvcHRpb24gaXMgJ3NlbGVjdGVkJyB2aWEgY29udGV4dFxuICAgIHZhciBzZWxlY3RWYWx1ZSA9IGNvbnRleHRbdmFsdWVDb250ZXh0S2V5XTtcblxuICAgIC8vIElmIGNvbnRleHQga2V5IGlzIG51bGwgKGUuZy4sIG5vIHNwZWNpZmllZCB2YWx1ZSBvciBhZnRlciBpbml0aWFsIG1vdW50KVxuICAgIC8vIG9yIG1pc3NpbmcgKGUuZy4sIGZvciA8ZGF0YWxpc3Q+KSwgd2UgZG9uJ3QgY2hhbmdlIHByb3BzLnNlbGVjdGVkXG4gICAgdmFyIHNlbGVjdGVkID0gbnVsbDtcbiAgICBpZiAoc2VsZWN0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdFZhbHVlKSkge1xuICAgICAgICAvLyBtdWx0aXBsZVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCcnICsgc2VsZWN0VmFsdWVbaV0gPT09ICcnICsgcHJvcHMudmFsdWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWQgPSAnJyArIHNlbGVjdFZhbHVlID09PSAnJyArIHByb3BzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkIH07XG4gIH0sXG5cbiAgZ2V0TmF0aXZlUHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgIHZhciBuYXRpdmVQcm9wcyA9IGFzc2lnbih7IHNlbGVjdGVkOiB1bmRlZmluZWQsIGNoaWxkcmVuOiB1bmRlZmluZWQgfSwgcHJvcHMpO1xuXG4gICAgLy8gUmVhZCBzdGF0ZSBvbmx5IGZyb20gaW5pdGlhbCBtb3VudCBiZWNhdXNlIDxzZWxlY3Q+IHVwZGF0ZXMgdmFsdWVcbiAgICAvLyBtYW51YWxseTsgd2UgbmVlZCB0aGUgaW5pdGlhbCBzdGF0ZSBvbmx5IGZvciBzZXJ2ZXIgcmVuZGVyaW5nXG4gICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCAhPSBudWxsKSB7XG4gICAgICBuYXRpdmVQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICB2YXIgY29udGVudCA9ICcnO1xuXG4gICAgLy8gRmxhdHRlbiBjaGlsZHJlbiBhbmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51bWJlcnM7XG4gICAgLy8gaW52YWxpZCB0eXBlcyBhcmUgaWdub3JlZC5cbiAgICBSZWFjdENoaWxkcmVuLmZvckVhY2gocHJvcHMuY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNoaWxkID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb250ZW50ICs9IGNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBhcyA8b3B0aW9uPiBjaGlsZHJlbi4nKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG5hdGl2ZVByb3BzLmNoaWxkcmVuID0gY29udGVudDtcbiAgICByZXR1cm4gbmF0aXZlUHJvcHM7XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTU9wdGlvbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMVBjSFJwYjI0dWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRVJQVFU5d2RHbHZibHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBRMmhwYkdSeVpXNGdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMmhwYkdSeVpXNG5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRWTmxiR1ZqZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVQwMVRaV3hsWTNRbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiblpoY2lCMllXeDFaVU52Ym5SbGVIUkxaWGtnUFNCU1pXRmpkRVJQVFZObGJHVmpkQzUyWVd4MVpVTnZiblJsZUhSTFpYazdYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCaGJpQThiM0IwYVc5dVBpQnVZWFJwZG1VZ1kyOXRjRzl1Wlc1MElIUm9ZWFFnZDJGeWJuTWdkMmhsYmlCZ2MyVnNaV04wWldSZ0lHbHpJSE5sZEM1Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUkU5TlQzQjBhVzl1SUQwZ2UxeHVJQ0J0YjNWdWRGZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQzh2SUZSUFJFOGdLSGwxYm1kemRHVnljeWs2SUZKbGJXOTJaU0J6ZFhCd2IzSjBJR1p2Y2lCZ2MyVnNaV04wWldSZ0lHbHVJRHh2Y0hScGIyNCtMbHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aHdjbTl3Y3k1elpXeGxZM1JsWkNBOVBTQnVkV3hzTENBblZYTmxJSFJvWlNCZ1pHVm1ZWFZzZEZaaGJIVmxZQ0J2Y2lCZ2RtRnNkV1ZnSUhCeWIzQnpJRzl1SUR4elpXeGxZM1ErSUdsdWMzUmxZV1FnYjJZZ0p5QXJJQ2R6WlhSMGFXNW5JR0J6Wld4bFkzUmxaR0FnYjI0Z1BHOXdkR2x2Ymo0dUp5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVEc5dmF5QjFjQ0IzYUdWMGFHVnlJSFJvYVhNZ2IzQjBhVzl1SUdseklDZHpaV3hsWTNSbFpDY2dkbWxoSUdOdmJuUmxlSFJjYmlBZ0lDQjJZWElnYzJWc1pXTjBWbUZzZFdVZ1BTQmpiMjUwWlhoMFczWmhiSFZsUTI5dWRHVjRkRXRsZVYwN1hHNWNiaUFnSUNBdkx5QkpaaUJqYjI1MFpYaDBJR3RsZVNCcGN5QnVkV3hzSUNobExtY3VMQ0J1YnlCemNHVmphV1pwWldRZ2RtRnNkV1VnYjNJZ1lXWjBaWElnYVc1cGRHbGhiQ0J0YjNWdWRDbGNiaUFnSUNBdkx5QnZjaUJ0YVhOemFXNW5JQ2hsTG1jdUxDQm1iM0lnUEdSaGRHRnNhWE4wUGlrc0lIZGxJR1J2YmlkMElHTm9ZVzVuWlNCd2NtOXdjeTV6Wld4bFkzUmxaRnh1SUNBZ0lIWmhjaUJ6Wld4bFkzUmxaQ0E5SUc1MWJHdzdYRzRnSUNBZ2FXWWdLSE5sYkdWamRGWmhiSFZsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhObGJHVmpkR1ZrSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2h6Wld4bFkzUldZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdMeThnYlhWc2RHbHdiR1ZjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCelpXeGxZM1JXWVd4MVpTNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2duSnlBcklITmxiR1ZqZEZaaGJIVmxXMmxkSUQwOVBTQW5KeUFySUhCeWIzQnpMblpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCelpXeGxZM1JsWkNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSE5sYkdWamRHVmtJRDBnSnljZ0t5QnpaV3hsWTNSV1lXeDFaU0E5UFQwZ0p5Y2dLeUJ3Y205d2N5NTJZV3gxWlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1VnUFNCN0lITmxiR1ZqZEdWa09pQnpaV3hsWTNSbFpDQjlPMXh1SUNCOUxGeHVYRzRnSUdkbGRFNWhkR2wyWlZCeWIzQnpPaUJtZFc1amRHbHZiaUFvYVc1emRDd2djSEp2Y0hNc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCMllYSWdibUYwYVhabFVISnZjSE1nUFNCaGMzTnBaMjRvZXlCelpXeGxZM1JsWkRvZ2RXNWtaV1pwYm1Wa0xDQmphR2xzWkhKbGJqb2dkVzVrWldacGJtVmtJSDBzSUhCeWIzQnpLVHRjYmx4dUlDQWdJQzh2SUZKbFlXUWdjM1JoZEdVZ2IyNXNlU0JtY205dElHbHVhWFJwWVd3Z2JXOTFiblFnWW1WallYVnpaU0E4YzJWc1pXTjBQaUIxY0dSaGRHVnpJSFpoYkhWbFhHNGdJQ0FnTHk4Z2JXRnVkV0ZzYkhrN0lIZGxJRzVsWldRZ2RHaGxJR2x1YVhScFlXd2djM1JoZEdVZ2IyNXNlU0JtYjNJZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1WjF4dUlDQWdJR2xtSUNocGJuTjBMbDkzY21Gd2NHVnlVM1JoZEdVdWMyVnNaV04wWldRZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2JtRjBhWFpsVUhKdmNITXVjMlZzWldOMFpXUWdQU0JwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1V1YzJWc1pXTjBaV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdOdmJuUmxiblFnUFNBbkp6dGNibHh1SUNBZ0lDOHZJRVpzWVhSMFpXNGdZMmhwYkdSeVpXNGdZVzVrSUhkaGNtNGdhV1lnZEdobGVTQmhjbVZ1SjNRZ2MzUnlhVzVuY3lCdmNpQnVkVzFpWlhKek8xeHVJQ0FnSUM4dklHbHVkbUZzYVdRZ2RIbHdaWE1nWVhKbElHbG5ibTl5WldRdVhHNGdJQ0FnVW1WaFkzUkRhR2xzWkhKbGJpNW1iM0pGWVdOb0tIQnliM0J6TG1Ob2FXeGtjbVZ1TENCbWRXNWpkR2x2YmlBb1kyaHBiR1FwSUh0Y2JpQWdJQ0FnSUdsbUlDaGphR2xzWkNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyaHBiR1FnUFQwOUlDZHpkSEpwYm1jbklIeDhJSFI1Y0dWdlppQmphR2xzWkNBOVBUMGdKMjUxYldKbGNpY3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHVnVkQ0FyUFNCamFHbHNaRHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuVDI1c2VTQnpkSEpwYm1keklHRnVaQ0J1ZFcxaVpYSnpJR0Z5WlNCemRYQndiM0owWldRZ1lYTWdQRzl3ZEdsdmJqNGdZMmhwYkdSeVpXNHVKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCdVlYUnBkbVZRY205d2N5NWphR2xzWkhKbGJpQTlJR052Ym5SbGJuUTdYRzRnSUNBZ2NtVjBkWEp1SUc1aGRHbDJaVkJ5YjNCek8xeHVJQ0I5WEc1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkVUMDFQY0hScGIyNDdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdERPTVNlbGVjdFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciB2YWx1ZUNvbnRleHRLZXkgPSAnX19SZWFjdERPTVNlbGVjdF92YWx1ZSQnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCAmJiB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSkge1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICB1cGRhdGVPcHRpb25zKHRoaXMsIHByb3BzLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgdmFsdWVQcm9wTmFtZXMgPSBbJ3ZhbHVlJywgJ2RlZmF1bHRWYWx1ZSddO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gZnVuY3Rpb24gZm9yIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpIHtcbiAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCdzZWxlY3QnLCBwcm9wcywgb3duZXIpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVQcm9wTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tpXTtcbiAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocHJvcHMubXVsdGlwbGUpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhbiBhcnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAnICsgJ3ZhbHVlIGlmIGBtdWx0aXBsZWAgaXMgZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gaW5zdFxuICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBsZVxuICogQHBhcmFtIHsqfSBwcm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBsZWAsIGEgbGlzdCBvZiBzdHJpbmdhYmxlcykuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiB1cGRhdGVPcHRpb25zKGluc3QsIG11bHRpcGxlLCBwcm9wVmFsdWUpIHtcbiAgdmFyIHNlbGVjdGVkVmFsdWUsIGk7XG4gIHZhciBvcHRpb25zID0gUmVhY3RNb3VudC5nZXROb2RlKGluc3QuX3Jvb3ROb2RlSUQpLm9wdGlvbnM7XG5cbiAgaWYgKG11bHRpcGxlKSB7XG4gICAgc2VsZWN0ZWRWYWx1ZSA9IHt9O1xuICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNlbGVjdGVkVmFsdWVbJycgKyBwcm9wVmFsdWVbaV1dID0gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWUuaGFzT3duUHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7XG4gICAgICBpZiAob3B0aW9uc1tpXS5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qgc2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0IGJlaGF2aW9yIGlzbid0IGNvbnNpc3RlbnQgYWNyb3NzIGFsbFxuICAgIC8vIGJyb3dzZXJzIGZvciBhbGwgY2FzZXMuXG4gICAgc2VsZWN0ZWRWYWx1ZSA9ICcnICsgcHJvcFZhbHVlO1xuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIG9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYSA8c2VsZWN0PiBuYXRpdmUgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGVcbiAqIHByb3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVgIGlzIGZhbHNlLCB0aGUgcHJvcCBtdXN0IGJlIGFcbiAqIHN0cmluZ2FibGUuIElmIGBtdWx0aXBsZWAgaXMgdHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdhYmxlcy5cbiAqXG4gKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBjaGFuZ2UgdGhlXG4gKiBzZWxlY3RlZCBvcHRpb24gd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gKlxuICogSWYgaXQgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0aW9ucyB3aWxsIG5vdFxuICogdXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpblxuICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRpb25zIHRvIHVwZGF0ZS5cbiAqXG4gKiBJZiBgZGVmYXVsdFZhbHVlYCBpcyBwcm92aWRlZCwgYW55IG9wdGlvbnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmVcbiAqIHNlbGVjdGVkLlxuICovXG52YXIgUmVhY3RET01TZWxlY3QgPSB7XG4gIHZhbHVlQ29udGV4dEtleTogdmFsdWVDb250ZXh0S2V5LFxuXG4gIGdldE5hdGl2ZVByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgcGVuZGluZ1VwZGF0ZTogZmFsc2UsXG4gICAgICBpbml0aWFsVmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCksXG4gICAgICB3YXNNdWx0aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0aXBsZSlcbiAgICB9O1xuICB9LFxuXG4gIHByb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcywgY29udGV4dCkge1xuICAgIC8vIFBhc3MgZG93biBpbml0aWFsIHZhbHVlIHNvIGluaXRpYWwgZ2VuZXJhdGVkIG1hcmt1cCBoYXMgY29ycmVjdFxuICAgIC8vIGBzZWxlY3RlZGAgYXR0cmlidXRlc1xuICAgIHZhciBjaGlsZENvbnRleHQgPSBhc3NpZ24oe30sIGNvbnRleHQpO1xuICAgIGNoaWxkQ29udGV4dFt2YWx1ZUNvbnRleHRLZXldID0gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtcbiAgICByZXR1cm4gY2hpbGRDb250ZXh0O1xuICB9LFxuXG4gIHBvc3RVcGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgLy8gQWZ0ZXIgdGhlIGluaXRpYWwgbW91bnQsIHdlIGNvbnRyb2wgc2VsZWN0ZWQtbmVzcyBtYW51YWxseSBzbyBkb24ndCBwYXNzXG4gICAgLy8gdGhlIGNvbnRleHQgdmFsdWUgZG93blxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgICB2YXIgd2FzTXVsdGlwbGUgPSBpbnN0Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlID0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSk7XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHdhc011bHRpcGxlICE9PSBCb29sZWFuKHByb3BzLm11bHRpcGxlKSkge1xuICAgICAgLy8gRm9yIHNpbXBsaWNpdHksIHJlYXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11bHRpcGxlYCBpcyB0b2dnbGVkLlxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXZlcnQgdGhlIHNlbGVjdCBiYWNrIHRvIGl0cyBkZWZhdWx0IHVuc2VsZWN0ZWQgc3RhdGUuXG4gICAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLm11bHRpcGxlID8gW10gOiAnJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpO1xuXG4gIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTtcbiAgUmVhY3RVcGRhdGVzLmFzYXAodXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQsIHRoaXMpO1xuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01TZWxlY3Q7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkVUMDFUWld4bFkzUXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanRCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRVJQVFZObGJHVmpkRnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUV4cGJtdGxaRlpoYkhWbFZYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwweHBibXRsWkZaaGJIVmxWWFJwYkhNbktUdGNiblpoY2lCU1pXRmpkRTF2ZFc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFMXZkVzUwSnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiblpoY2lCMllXeDFaVU52Ym5SbGVIUkxaWGtnUFNBblgxOVNaV0ZqZEVSUFRWTmxiR1ZqZEY5MllXeDFaU1FuSUNzZ1RXRjBhQzV5WVc1a2IyMG9LUzUwYjFOMGNtbHVaeWd6TmlrdWMyeHBZMlVvTWlrN1hHNWNibVoxYm1OMGFXOXVJSFZ3WkdGMFpVOXdkR2x2Ym5OSlpsQmxibVJwYm1kVmNHUmhkR1ZCYm1STmIzVnVkR1ZrS0NrZ2UxeHVJQ0JwWmlBb2RHaHBjeTVmY205dmRFNXZaR1ZKUkNBbUppQjBhR2x6TGw5M2NtRndjR1Z5VTNSaGRHVXVjR1Z1WkdsdVoxVndaR0YwWlNrZ2UxeHVJQ0FnSUhSb2FYTXVYM2R5WVhCd1pYSlRkR0YwWlM1d1pXNWthVzVuVlhCa1lYUmxJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQjJZWElnY0hKdmNITWdQU0IwYUdsekxsOWpkWEp5Wlc1MFJXeGxiV1Z1ZEM1d2NtOXdjenRjYmlBZ0lDQjJZWElnZG1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbWRsZEZaaGJIVmxLSEJ5YjNCektUdGNibHh1SUNBZ0lHbG1JQ2gyWVd4MVpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQjFjR1JoZEdWUGNIUnBiMjV6S0hSb2FYTXNJSEJ5YjNCekxDQjJZV3gxWlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaHZkMjVsY2lrZ2UxeHVJQ0JwWmlBb2IzZHVaWElwSUh0Y2JpQWdJQ0IyWVhJZ2JtRnRaU0E5SUc5M2JtVnlMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQnBaaUFvYm1GdFpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY2dRMmhsWTJzZ2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRZ2IyWWdZQ2NnS3lCdVlXMWxJQ3NnSjJBdUp6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUNjbk8xeHVmVnh1WEc1MllYSWdkbUZzZFdWUWNtOXdUbUZ0WlhNZ1BTQmJKM1poYkhWbEp5d2dKMlJsWm1GMWJIUldZV3gxWlNkZE8xeHVYRzR2S2lwY2JpQXFJRlpoYkdsa1lYUnBiMjRnWm5WdVkzUnBiMjRnWm05eUlHQjJZV3gxWldBZ1lXNWtJR0JrWldaaGRXeDBWbUZzZFdWZ0xseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdZMmhsWTJ0VFpXeGxZM1JRY205d1ZIbHdaWE1vYVc1emRDd2djSEp2Y0hNcElIdGNiaUFnZG1GeUlHOTNibVZ5SUQwZ2FXNXpkQzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeU8xeHVJQ0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbU5vWldOclVISnZjRlI1Y0dWektDZHpaV3hsWTNRbkxDQndjbTl3Y3l3Z2IzZHVaWElwTzF4dVhHNGdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnZG1Gc2RXVlFjbTl3VG1GdFpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0IyWVhJZ2NISnZjRTVoYldVZ1BTQjJZV3gxWlZCeWIzQk9ZVzFsYzF0cFhUdGNiaUFnSUNCcFppQW9jSEp2Y0hOYmNISnZjRTVoYldWZElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2NISnZjSE11YlhWc2RHbHdiR1VwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktFRnljbUY1TG1selFYSnlZWGtvY0hKdmNITmJjSEp2Y0U1aGJXVmRLU3dnSjFSb1pTQmdKWE5nSUhCeWIzQWdjM1Z3Y0d4cFpXUWdkRzhnUEhObGJHVmpkRDRnYlhWemRDQmlaU0JoYmlCaGNuSmhlU0JwWmlBbklDc2dKMkJ0ZFd4MGFYQnNaV0FnYVhNZ2RISjFaUzRsY3ljc0lIQnliM0JPWVcxbExDQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9iM2R1WlhJcEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29JVUZ5Y21GNUxtbHpRWEp5WVhrb2NISnZjSE5iY0hKdmNFNWhiV1ZkS1N3Z0oxUm9aU0JnSlhOZ0lIQnliM0FnYzNWd2NHeHBaV1FnZEc4Z1BITmxiR1ZqZEQ0Z2JYVnpkQ0JpWlNCaElITmpZV3hoY2lBbklDc2dKM1poYkhWbElHbG1JR0J0ZFd4MGFYQnNaV0FnYVhNZ1ptRnNjMlV1SlhNbkxDQndjbTl3VG1GdFpTd2daMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLRzkzYm1WeUtTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFUlBUVU52YlhCdmJtVnVkSDBnYVc1emRGeHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0J0ZFd4MGFYQnNaVnh1SUNvZ1FIQmhjbUZ0SUhzcWZTQndjbTl3Vm1Gc2RXVWdRU0J6ZEhKcGJtZGhZbXhsSUNoM2FYUm9JR0J0ZFd4MGFYQnNaV0FzSUdFZ2JHbHpkQ0J2WmlCemRISnBibWRoWW14bGN5a3VYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUIxY0dSaGRHVlBjSFJwYjI1ektHbHVjM1FzSUcxMWJIUnBjR3hsTENCd2NtOXdWbUZzZFdVcElIdGNiaUFnZG1GeUlITmxiR1ZqZEdWa1ZtRnNkV1VzSUdrN1hHNGdJSFpoY2lCdmNIUnBiMjV6SUQwZ1VtVmhZM1JOYjNWdWRDNW5aWFJPYjJSbEtHbHVjM1F1WDNKdmIzUk9iMlJsU1VRcExtOXdkR2x2Ym5NN1hHNWNiaUFnYVdZZ0tHMTFiSFJwY0d4bEtTQjdYRzRnSUNBZ2MyVnNaV04wWldSV1lXeDFaU0E5SUh0OU8xeHVJQ0FnSUdadmNpQW9hU0E5SURBN0lHa2dQQ0J3Y205d1ZtRnNkV1V1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lITmxiR1ZqZEdWa1ZtRnNkV1ZiSnljZ0t5QndjbTl3Vm1Gc2RXVmJhVjFkSUQwZ2RISjFaVHRjYmlBZ0lDQjlYRzRnSUNBZ1ptOXlJQ2hwSUQwZ01Ec2dhU0E4SUc5d2RHbHZibk11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lIWmhjaUJ6Wld4bFkzUmxaQ0E5SUhObGJHVmpkR1ZrVm1Gc2RXVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2IzQjBhVzl1YzF0cFhTNTJZV3gxWlNrN1hHNGdJQ0FnSUNCcFppQW9iM0IwYVc5dWMxdHBYUzV6Wld4bFkzUmxaQ0FoUFQwZ2MyVnNaV04wWldRcElIdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWMxdHBYUzV6Wld4bFkzUmxaQ0E5SUhObGJHVmpkR1ZrTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0F2THlCRWJ5QnViM1FnYzJWMElHQnpaV3hsWTNRdWRtRnNkV1ZnSUdGeklHVjRZV04wSUdKbGFHRjJhVzl5SUdsemJpZDBJR052Ym5OcGMzUmxiblFnWVdOeWIzTnpJR0ZzYkZ4dUlDQWdJQzh2SUdKeWIzZHpaWEp6SUdadmNpQmhiR3dnWTJGelpYTXVYRzRnSUNBZ2MyVnNaV04wWldSV1lXeDFaU0E5SUNjbklDc2djSEp2Y0ZaaGJIVmxPMXh1SUNBZ0lHWnZjaUFvYVNBOUlEQTdJR2tnUENCdmNIUnBiMjV6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvYjNCMGFXOXVjMXRwWFM1MllXeDFaU0E5UFQwZ2MyVnNaV04wWldSV1lXeDFaU2tnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6VzJsZExuTmxiR1ZqZEdWa0lEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTmJNRjB1YzJWc1pXTjBaV1FnUFNCMGNuVmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRWx0Y0d4bGJXVnVkSE1nWVNBOGMyVnNaV04wUGlCdVlYUnBkbVVnWTI5dGNHOXVaVzUwSUhSb1lYUWdZV3hzYjNkeklHOXdkR2x2Ym1Gc2JIa2djMlYwZEdsdVp5QjBhR1ZjYmlBcUlIQnliM0J6SUdCMllXeDFaV0FnWVc1a0lHQmtaV1poZFd4MFZtRnNkV1ZnTGlCSlppQmdiWFZzZEdsd2JHVmdJR2x6SUdaaGJITmxMQ0IwYUdVZ2NISnZjQ0J0ZFhOMElHSmxJR0ZjYmlBcUlITjBjbWx1WjJGaWJHVXVJRWxtSUdCdGRXeDBhWEJzWldBZ2FYTWdkSEoxWlN3Z2RHaGxJSEJ5YjNBZ2JYVnpkQ0JpWlNCaGJpQmhjbkpoZVNCdlppQnpkSEpwYm1kaFlteGxjeTVjYmlBcVhHNGdLaUJKWmlCZ2RtRnNkV1ZnSUdseklHNXZkQ0J6ZFhCd2JHbGxaQ0FvYjNJZ2JuVnNiQzkxYm1SbFptbHVaV1FwTENCMWMyVnlJR0ZqZEdsdmJuTWdkR2hoZENCamFHRnVaMlVnZEdobFhHNGdLaUJ6Wld4bFkzUmxaQ0J2Y0hScGIyNGdkMmxzYkNCMGNtbG5aMlZ5SUhWd1pHRjBaWE1nZEc4Z2RHaGxJSEpsYm1SbGNtVmtJRzl3ZEdsdmJuTXVYRzRnS2x4dUlDb2dTV1lnYVhRZ2FYTWdjM1Z3Y0d4cFpXUWdLR0Z1WkNCdWIzUWdiblZzYkM5MWJtUmxabWx1WldRcExDQjBhR1VnY21WdVpHVnlaV1FnYjNCMGFXOXVjeUIzYVd4c0lHNXZkRnh1SUNvZ2RYQmtZWFJsSUdsdUlISmxjM0J2Ym5ObElIUnZJSFZ6WlhJZ1lXTjBhVzl1Y3k0Z1NXNXpkR1ZoWkN3Z2RHaGxJR0IyWVd4MVpXQWdjSEp2Y0NCdGRYTjBJR05vWVc1blpTQnBibHh1SUNvZ2IzSmtaWElnWm05eUlIUm9aU0J5Wlc1a1pYSmxaQ0J2Y0hScGIyNXpJSFJ2SUhWd1pHRjBaUzVjYmlBcVhHNGdLaUJKWmlCZ1pHVm1ZWFZzZEZaaGJIVmxZQ0JwY3lCd2NtOTJhV1JsWkN3Z1lXNTVJRzl3ZEdsdmJuTWdkMmwwYUNCMGFHVWdjM1Z3Y0d4cFpXUWdkbUZzZFdWeklIZHBiR3dnWW1WY2JpQXFJSE5sYkdWamRHVmtMbHh1SUNvdlhHNTJZWElnVW1WaFkzUkVUMDFUWld4bFkzUWdQU0I3WEc0Z0lIWmhiSFZsUTI5dWRHVjRkRXRsZVRvZ2RtRnNkV1ZEYjI1MFpYaDBTMlY1TEZ4dVhHNGdJR2RsZEU1aGRHbDJaVkJ5YjNCek9pQm1kVzVqZEdsdmJpQW9hVzV6ZEN3Z2NISnZjSE1zSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZWE56YVdkdUtIdDlMQ0J3Y205d2N5d2dlMXh1SUNBZ0lDQWdiMjVEYUdGdVoyVTZJR2x1YzNRdVgzZHlZWEJ3WlhKVGRHRjBaUzV2YmtOb1lXNW5aU3hjYmlBZ0lDQWdJSFpoYkhWbE9pQjFibVJsWm1sdVpXUmNiaUFnSUNCOUtUdGNiaUFnZlN4Y2JseHVJQ0J0YjNWdWRGZHlZWEJ3WlhJNklHWjFibU4wYVc5dUlDaHBibk4wTENCd2NtOXdjeWtnZTF4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQmphR1ZqYTFObGJHVmpkRkJ5YjNCVWVYQmxjeWhwYm5OMExDQndjbTl3Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlIWmhiSFZsSUQwZ1RHbHVhMlZrVm1Gc2RXVlZkR2xzY3k1blpYUldZV3gxWlNod2NtOXdjeWs3WEc0Z0lDQWdhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxJRDBnZTF4dUlDQWdJQ0FnY0dWdVpHbHVaMVZ3WkdGMFpUb2dabUZzYzJVc1hHNGdJQ0FnSUNCcGJtbDBhV0ZzVm1Gc2RXVTZJSFpoYkhWbElDRTlJRzUxYkd3Z1B5QjJZV3gxWlNBNklIQnliM0J6TG1SbFptRjFiSFJXWVd4MVpTeGNiaUFnSUNBZ0lHOXVRMmhoYm1kbE9pQmZhR0Z1Wkd4bFEyaGhibWRsTG1KcGJtUW9hVzV6ZENrc1hHNGdJQ0FnSUNCM1lYTk5kV3gwYVhCc1pUb2dRbTl2YkdWaGJpaHdjbTl3Y3k1dGRXeDBhWEJzWlNsY2JpQWdJQ0I5TzF4dUlDQjlMRnh1WEc0Z0lIQnliMk5sYzNORGFHbHNaRU52Ym5SbGVIUTZJR1oxYm1OMGFXOXVJQ2hwYm5OMExDQndjbTl3Y3l3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUM4dklGQmhjM01nWkc5M2JpQnBibWwwYVdGc0lIWmhiSFZsSUhOdklHbHVhWFJwWVd3Z1oyVnVaWEpoZEdWa0lHMWhjbXQxY0NCb1lYTWdZMjl5Y21WamRGeHVJQ0FnSUM4dklHQnpaV3hsWTNSbFpHQWdZWFIwY21saWRYUmxjMXh1SUNBZ0lIWmhjaUJqYUdsc1pFTnZiblJsZUhRZ1BTQmhjM05wWjI0b2UzMHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lHTm9hV3hrUTI5dWRHVjRkRnQyWVd4MVpVTnZiblJsZUhSTFpYbGRJRDBnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG1sdWFYUnBZV3hXWVd4MVpUdGNiaUFnSUNCeVpYUjFjbTRnWTJocGJHUkRiMjUwWlhoME8xeHVJQ0I5TEZ4dVhHNGdJSEJ2YzNSVmNHUmhkR1ZYY21Gd2NHVnlPaUJtZFc1amRHbHZiaUFvYVc1emRDa2dlMXh1SUNBZ0lIWmhjaUJ3Y205d2N5QTlJR2x1YzNRdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpPMXh1WEc0Z0lDQWdMeThnUVdaMFpYSWdkR2hsSUdsdWFYUnBZV3dnYlc5MWJuUXNJSGRsSUdOdmJuUnliMndnYzJWc1pXTjBaV1F0Ym1WemN5QnRZVzUxWVd4c2VTQnpieUJrYjI0bmRDQndZWE56WEc0Z0lDQWdMeThnZEdobElHTnZiblJsZUhRZ2RtRnNkV1VnWkc5M2JseHVJQ0FnSUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1cGJtbDBhV0ZzVm1Gc2RXVWdQU0IxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ2QyRnpUWFZzZEdsd2JHVWdQU0JwYm5OMExsOTNjbUZ3Y0dWeVUzUmhkR1V1ZDJGelRYVnNkR2x3YkdVN1hHNGdJQ0FnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG5kaGMwMTFiSFJwY0d4bElEMGdRbTl2YkdWaGJpaHdjbTl3Y3k1dGRXeDBhWEJzWlNrN1hHNWNiaUFnSUNCMllYSWdkbUZzZFdVZ1BTQk1hVzVyWldSV1lXeDFaVlYwYVd4ekxtZGxkRlpoYkhWbEtIQnliM0J6S1R0Y2JpQWdJQ0JwWmlBb2RtRnNkV1VnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsTG5CbGJtUnBibWRWY0dSaGRHVWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lIVndaR0YwWlU5d2RHbHZibk1vYVc1emRDd2dRbTl2YkdWaGJpaHdjbTl3Y3k1dGRXeDBhWEJzWlNrc0lIWmhiSFZsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hkaGMwMTFiSFJwY0d4bElDRTlQU0JDYjI5c1pXRnVLSEJ5YjNCekxtMTFiSFJwY0d4bEtTa2dlMXh1SUNBZ0lDQWdMeThnUm05eUlITnBiWEJzYVdOcGRIa3NJSEpsWVhCd2JIa2dZR1JsWm1GMWJIUldZV3gxWldBZ2FXWWdZRzExYkhScGNHeGxZQ0JwY3lCMGIyZG5iR1ZrTGx4dUlDQWdJQ0FnYVdZZ0tIQnliM0J6TG1SbFptRjFiSFJXWVd4MVpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSFZ3WkdGMFpVOXdkR2x2Ym5Nb2FXNXpkQ3dnUW05dmJHVmhiaWh3Y205d2N5NXRkV3gwYVhCc1pTa3NJSEJ5YjNCekxtUmxabUYxYkhSV1lXeDFaU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0F2THlCU1pYWmxjblFnZEdobElITmxiR1ZqZENCaVlXTnJJSFJ2SUdsMGN5QmtaV1poZFd4MElIVnVjMlZzWldOMFpXUWdjM1JoZEdVdVhHNGdJQ0FnSUNBZ0lIVndaR0YwWlU5d2RHbHZibk1vYVc1emRDd2dRbTl2YkdWaGJpaHdjbTl3Y3k1dGRXeDBhWEJzWlNrc0lIQnliM0J6TG0xMWJIUnBjR3hsSUQ4Z1cxMGdPaUFuSnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNW1kVzVqZEdsdmJpQmZhR0Z1Wkd4bFEyaGhibWRsS0dWMlpXNTBLU0I3WEc0Z0lIWmhjaUJ3Y205d2N5QTlJSFJvYVhNdVgyTjFjbkpsYm5SRmJHVnRaVzUwTG5CeWIzQnpPMXh1SUNCMllYSWdjbVYwZFhKdVZtRnNkV1VnUFNCTWFXNXJaV1JXWVd4MVpWVjBhV3h6TG1WNFpXTjFkR1ZQYmtOb1lXNW5aU2h3Y205d2N5d2daWFpsYm5RcE8xeHVYRzRnSUhSb2FYTXVYM2R5WVhCd1pYSlRkR0YwWlM1d1pXNWthVzVuVlhCa1lYUmxJRDBnZEhKMVpUdGNiaUFnVW1WaFkzUlZjR1JoZEdWekxtRnpZWEFvZFhCa1lYUmxUM0IwYVc5dWMwbG1VR1Z1WkdsdVoxVndaR0YwWlVGdVpFMXZkVzUwWldRc0lIUm9hWE1wTzF4dUlDQnlaWFIxY200Z2NtVjBkWEp1Vm1Gc2RXVTdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1VtVmhZM1JFVDAxVFpXeGxZM1E3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7XG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIHNldFRleHRDb250ZW50ID0gcmVxdWlyZSgnLi9zZXRUZXh0Q29udGVudCcpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUoJy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG5cbi8qKlxuICogVGV4dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czpcbiAqXG4gKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuXG4gKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgaW4gZWxlbWVudHMgc28gdGhhdCB0aGV5IGNhbiB1bmRlcmdvXG4gKiB0aGUgc2FtZSByZWNvbmNpbGlhdGlvbiB0aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuXG4gKlxuICogVE9ETzogSW52ZXN0aWdhdGUgcmVwcmVzZW50aW5nIFJlYWN0IGNvbXBvbmVudHMgaW4gdGhlIERPTSB3aXRoIHRleHQgbm9kZXMuXG4gKlxuICogQGNsYXNzIFJlYWN0RE9NVGV4dENvbXBvbmVudFxuICogQGV4dGVuZHMgUmVhY3RDb21wb25lbnRcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gIC8vIFRoaXMgY29uc3RydWN0b3IgYW5kIGl0cyBhcmd1bWVudCBpcyBjdXJyZW50bHkgdXNlZCBieSBtb2Nrcy5cbn07XG5cbmFzc2lnbihSZWFjdERPTVRleHRDb21wb25lbnQucHJvdG90eXBlLCB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVhY3RUZXh0fSB0ZXh0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAodGV4dCkge1xuICAgIC8vIFRPRE86IFRoaXMgaXMgcmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1lbnRcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IHRleHQ7XG4gICAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDtcblxuICAgIC8vIFByb3BlcnRpZXNcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gbnVsbDtcbiAgICB0aGlzLl9tb3VudEluZGV4ID0gMDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBoYXZlXG4gICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIERPTSBJRCBvZiB0aGUgcm9vdCBub2RlLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAocm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0pIHtcbiAgICAgICAgdmFsaWRhdGVET01OZXN0aW5nKCdzcGFuJywgbnVsbCwgY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSByb290SUQ7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gY29udGV4dFtSZWFjdE1vdW50Lm93bmVyRG9jdW1lbnRDb250ZXh0S2V5XTtcbiAgICAgIHZhciBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvcklEKGVsLCByb290SUQpO1xuICAgICAgLy8gUG9wdWxhdGUgbm9kZSBjYWNoZVxuICAgICAgUmVhY3RNb3VudC5nZXRJRChlbCk7XG4gICAgICBzZXRUZXh0Q29udGVudChlbCwgdGhpcy5fc3RyaW5nVGV4dCk7XG4gICAgICByZXR1cm4gZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlc2NhcGVkVGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0aGlzLl9zdHJpbmdUZXh0KTtcblxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGluIGEgYHNwYW5gIGZvciB0aGUgcmVhc29ucyBzdGF0ZWQgYWJvdmUsIGJ1dFxuICAgICAgICAvLyBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0aW9uIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ugb3ZlciAoc3RhdGljIHBhZ2VzKSxcbiAgICAgICAgLy8gd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuXG4gICAgICAgIHJldHVybiBlc2NhcGVkVGV4dDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICc8c3BhbiAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHJvb3RJRCkgKyAnPicgKyBlc2NhcGVkVGV4dCArICc8L3NwYW4+JztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhpcyBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFRleHR9IG5leHRUZXh0IFRoZSBuZXh0IHRleHQgY29udGVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikge1xuICAgIGlmIChuZXh0VGV4dCAhPT0gdGhpcy5fY3VycmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFRleHQ7XG4gICAgICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5leHRUZXh0O1xuICAgICAgaWYgKG5leHRTdHJpbmdUZXh0ICE9PSB0aGlzLl9zdHJpbmdUZXh0KSB7XG4gICAgICAgIC8vIFRPRE86IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHByb3BzIGFuZCB1c2UgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5XG4gICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQgdG8gZG8gdGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGhcbiAgICAgICAgLy8gb3RoZXIgY29tcG9uZW50IHR5cGVzP1xuICAgICAgICB0aGlzLl9zdHJpbmdUZXh0ID0gbmV4dFN0cmluZ1RleHQ7XG4gICAgICAgIHZhciBub2RlID0gUmVhY3RNb3VudC5nZXROb2RlKHRoaXMuX3Jvb3ROb2RlSUQpO1xuICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMudXBkYXRlVGV4dENvbnRlbnQobm9kZSwgbmV4dFN0cmluZ1RleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQudW5tb3VudElERnJvbUVudmlyb25tZW50KHRoaXMuX3Jvb3ROb2RlSUQpO1xuICB9XG5cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dENvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVQwMVVaWGgwUTI5dGNHOXVaVzUwTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFJFOU5WR1Y0ZEVOdmJYQnZibVZ1ZEZ4dUlDb2dRSFI1Y0dWamFHVmphM01nYzNSaGRHbGpMVzl1YkhsY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQkVUMDFEYUdsc1pISmxiazl3WlhKaGRHbHZibk1nUFNCeVpYRjFhWEpsS0NjdUwwUlBUVU5vYVd4a2NtVnVUM0JsY21GMGFXOXVjeWNwTzF4dWRtRnlJRVJQVFZCeWIzQmxjblI1VDNCbGNtRjBhVzl1Y3lBOUlISmxjWFZwY21Vb0p5NHZSRTlOVUhKdmNHVnlkSGxQY0dWeVlYUnBiMjV6SnlrN1hHNTJZWElnVW1WaFkzUkRiMjF3YjI1bGJuUkNjbTkzYzJWeVJXNTJhWEp2Ym0xbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRMjl0Y0c5dVpXNTBRbkp2ZDNObGNrVnVkbWx5YjI1dFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSTmIzVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JOYjNWdWRDY3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzUyWVhJZ1pYTmpZWEJsVkdWNGRFTnZiblJsYm5SR2IzSkNjbTkzYzJWeUlEMGdjbVZ4ZFdseVpTZ25MaTlsYzJOaGNHVlVaWGgwUTI5dWRHVnVkRVp2Y2tKeWIzZHpaWEluS1R0Y2JuWmhjaUJ6WlhSVVpYaDBRMjl1ZEdWdWRDQTlJSEpsY1hWcGNtVW9KeTR2YzJWMFZHVjRkRU52Ym5SbGJuUW5LVHRjYm5aaGNpQjJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY2dQU0J5WlhGMWFYSmxLQ2N1TDNaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnljcE8xeHVYRzR2S2lwY2JpQXFJRlJsZUhRZ2JtOWtaWE1nZG1sdmJHRjBaU0JoSUdOdmRYQnNaU0JoYzNOMWJYQjBhVzl1Y3lCMGFHRjBJRkpsWVdOMElHMWhhMlZ6SUdGaWIzVjBJR052YlhCdmJtVnVkSE02WEc0Z0tseHVJQ29nSUMwZ1YyaGxiaUJ0YjNWdWRHbHVaeUIwWlhoMElHbHVkRzhnZEdobElFUlBUU3dnWVdScVlXTmxiblFnZEdWNGRDQnViMlJsY3lCaGNtVWdiV1Z5WjJWa0xseHVJQ29nSUMwZ1ZHVjRkQ0J1YjJSbGN5QmpZVzV1YjNRZ1ltVWdZWE56YVdkdVpXUWdZU0JTWldGamRDQnliMjkwSUVsRUxseHVJQ3BjYmlBcUlGUm9hWE1nWTI5dGNHOXVaVzUwSUdseklIVnpaV1FnZEc4Z2QzSmhjQ0J6ZEhKcGJtZHpJR2x1SUdWc1pXMWxiblJ6SUhOdklIUm9ZWFFnZEdobGVTQmpZVzRnZFc1a1pYSm5iMXh1SUNvZ2RHaGxJSE5oYldVZ2NtVmpiMjVqYVd4cFlYUnBiMjRnZEdoaGRDQnBjeUJoY0hCc2FXVmtJSFJ2SUdWc1pXMWxiblJ6TGx4dUlDcGNiaUFxSUZSUFJFODZJRWx1ZG1WemRHbG5ZWFJsSUhKbGNISmxjMlZ1ZEdsdVp5QlNaV0ZqZENCamIyMXdiMjVsYm5SeklHbHVJSFJvWlNCRVQwMGdkMmwwYUNCMFpYaDBJRzV2WkdWekxseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCU1pXRmpkRVJQVFZSbGVIUkRiMjF3YjI1bGJuUmNiaUFxSUVCbGVIUmxibVJ6SUZKbFlXTjBRMjl0Y0c5dVpXNTBYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1ZG1GeUlGSmxZV04wUkU5TlZHVjRkRU52YlhCdmJtVnVkQ0E5SUdaMWJtTjBhVzl1SUNod2NtOXdjeWtnZTF4dUlDQXZMeUJVYUdseklHTnZibk4wY25WamRHOXlJR0Z1WkNCcGRITWdZWEpuZFcxbGJuUWdhWE1nWTNWeWNtVnVkR3g1SUhWelpXUWdZbmtnYlc5amEzTXVYRzU5TzF4dVhHNWhjM05wWjI0b1VtVmhZM1JFVDAxVVpYaDBRMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaU3dnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFZHVjRkSDBnZEdWNGRGeHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHTnZibk4wY25WamREb2dablZ1WTNScGIyNGdLSFJsZUhRcElIdGNiaUFnSUNBdkx5QlVUMFJQT2lCVWFHbHpJR2x6SUhKbFlXeHNlU0JoSUZKbFlXTjBWR1Y0ZENBb1VtVmhZM1JPYjJSbEtTd2dibTkwSUdFZ1VtVmhZM1JGYkdWdFpXNTBYRzRnSUNBZ2RHaHBjeTVmWTNWeWNtVnVkRVZzWlcxbGJuUWdQU0IwWlhoME8xeHVJQ0FnSUhSb2FYTXVYM04wY21sdVoxUmxlSFFnUFNBbkp5QXJJSFJsZUhRN1hHNWNiaUFnSUNBdkx5QlFjbTl3WlhKMGFXVnpYRzRnSUNBZ2RHaHBjeTVmY205dmRFNXZaR1ZKUkNBOUlHNTFiR3c3WEc0Z0lDQWdkR2hwY3k1ZmJXOTFiblJKYm1SbGVDQTlJREE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ2RHaGxJRzFoY210MWNDQm1iM0lnZEdocGN5QjBaWGgwSUc1dlpHVXVJRlJvYVhNZ2JtOWtaU0JwY3lCdWIzUWdhVzUwWlc1a1pXUWdkRzhnYUdGMlpWeHVJQ0FnS2lCaGJua2dabVZoZEhWeVpYTWdZbVZ6YVdSbGN5QmpiMjUwWVdsdWFXNW5JSFJsZUhRZ1kyOXVkR1Z1ZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISnZiM1JKUkNCRVQwMGdTVVFnYjJZZ2RHaGxJSEp2YjNRZ2JtOWtaUzVjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZGSmxZV04wVTJWeWRtVnlVbVZ1WkdWeWFXNW5WSEpoYm5OaFkzUnBiMjU5SUhSeVlXNXpZV04wYVc5dVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnVFdGeWEzVndJR1p2Y2lCMGFHbHpJSFJsZUhRZ2JtOWtaUzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0J0YjNWdWRFTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLSEp2YjNSSlJDd2dkSEpoYm5OaFkzUnBiMjRzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdhV1lnS0dOdmJuUmxlSFJiZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG1GdVkyVnpkRzl5U1c1bWIwTnZiblJsZUhSTFpYbGRLU0I3WEc0Z0lDQWdJQ0FnSUhaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnlnbmMzQmhiaWNzSUc1MWJHd3NJR052Ym5SbGVIUmJkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhsZEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDl5YjI5MFRtOWtaVWxFSUQwZ2NtOXZkRWxFTzF4dUlDQWdJR2xtSUNoMGNtRnVjMkZqZEdsdmJpNTFjMlZEY21WaGRHVkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQjJZWElnYjNkdVpYSkViMk4xYldWdWRDQTlJR052Ym5SbGVIUmJVbVZoWTNSTmIzVnVkQzV2ZDI1bGNrUnZZM1Z0Wlc1MFEyOXVkR1Y0ZEV0bGVWMDdYRzRnSUNBZ0lDQjJZWElnWld3Z1BTQnZkMjVsY2tSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9KM053WVc0bktUdGNiaUFnSUNBZ0lFUlBUVkJ5YjNCbGNuUjVUM0JsY21GMGFXOXVjeTV6WlhSQmRIUnlhV0oxZEdWR2IzSkpSQ2hsYkN3Z2NtOXZkRWxFS1R0Y2JpQWdJQ0FnSUM4dklGQnZjSFZzWVhSbElHNXZaR1VnWTJGamFHVmNiaUFnSUNBZ0lGSmxZV04wVFc5MWJuUXVaMlYwU1VRb1pXd3BPMXh1SUNBZ0lDQWdjMlYwVkdWNGRFTnZiblJsYm5Rb1pXd3NJSFJvYVhNdVgzTjBjbWx1WjFSbGVIUXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHVnNPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMllYSWdaWE5qWVhCbFpGUmxlSFFnUFNCbGMyTmhjR1ZVWlhoMFEyOXVkR1Z1ZEVadmNrSnliM2R6WlhJb2RHaHBjeTVmYzNSeWFXNW5WR1Y0ZENrN1hHNWNiaUFnSUNBZ0lHbG1JQ2gwY21GdWMyRmpkR2x2Ymk1eVpXNWtaWEpVYjFOMFlYUnBZMDFoY210MWNDa2dlMXh1SUNBZ0lDQWdJQ0F2THlCT2IzSnRZV3hzZVNCM1pTZGtJSGR5WVhBZ2RHaHBjeUJwYmlCaElHQnpjR0Z1WUNCbWIzSWdkR2hsSUhKbFlYTnZibk1nYzNSaGRHVmtJR0ZpYjNabExDQmlkWFJjYmlBZ0lDQWdJQ0FnTHk4Z2MybHVZMlVnZEdocGN5QnBjeUJoSUhOcGRIVmhkR2x2YmlCM2FHVnlaU0JTWldGamRDQjNiMjRuZENCMFlXdGxJRzkyWlhJZ0tITjBZWFJwWXlCd1lXZGxjeWtzWEc0Z0lDQWdJQ0FnSUM4dklIZGxJR05oYmlCemFXMXdiSGtnY21WMGRYSnVJSFJvWlNCMFpYaDBJR0Z6SUdsMElHbHpMbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaWE5qWVhCbFpGUmxlSFE3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUFuUEhOd1lXNGdKeUFySUVSUFRWQnliM0JsY25SNVQzQmxjbUYwYVc5dWN5NWpjbVZoZEdWTllYSnJkWEJHYjNKSlJDaHliMjkwU1VRcElDc2dKejRuSUNzZ1pYTmpZWEJsWkZSbGVIUWdLeUFuUEM5emNHRnVQaWM3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVmNHUmhkR1Z6SUhSb2FYTWdZMjl0Y0c5dVpXNTBJR0o1SUhWd1pHRjBhVzVuSUhSb1pTQjBaWGgwSUdOdmJuUmxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JVWlhoMGZTQnVaWGgwVkdWNGRDQlVhR1VnYm1WNGRDQjBaWGgwSUdOdmJuUmxiblJjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJSEpsWTJWcGRtVkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFZHVjRkQ3dnZEhKaGJuTmhZM1JwYjI0cElIdGNiaUFnSUNCcFppQW9ibVY0ZEZSbGVIUWdJVDA5SUhSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ0E5SUc1bGVIUlVaWGgwTzF4dUlDQWdJQ0FnZG1GeUlHNWxlSFJUZEhKcGJtZFVaWGgwSUQwZ0p5Y2dLeUJ1WlhoMFZHVjRkRHRjYmlBZ0lDQWdJR2xtSUNodVpYaDBVM1J5YVc1blZHVjRkQ0FoUFQwZ2RHaHBjeTVmYzNSeWFXNW5WR1Y0ZENrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJVVDBSUE9pQlRZWFpsSUhSb2FYTWdZWE1nY0dWdVpHbHVaeUJ3Y205d2N5QmhibVFnZFhObElIQmxjbVp2Y20xVmNHUmhkR1ZKWms1bFkyVnpjMkZ5ZVZ4dUlDQWdJQ0FnSUNBdkx5QmhibVF2YjNJZ2RYQmtZWFJsUTI5dGNHOXVaVzUwSUhSdklHUnZJSFJvWlNCaFkzUjFZV3dnZFhCa1lYUmxJR1p2Y2lCamIyNXphWE4wWlc1amVTQjNhWFJvWEc0Z0lDQWdJQ0FnSUM4dklHOTBhR1Z5SUdOdmJYQnZibVZ1ZENCMGVYQmxjejljYmlBZ0lDQWdJQ0FnZEdocGN5NWZjM1J5YVc1blZHVjRkQ0E5SUc1bGVIUlRkSEpwYm1kVVpYaDBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JtOWtaU0E5SUZKbFlXTjBUVzkxYm5RdVoyVjBUbTlrWlNoMGFHbHpMbDl5YjI5MFRtOWtaVWxFS1R0Y2JpQWdJQ0FnSUNBZ1JFOU5RMmhwYkdSeVpXNVBjR1Z5WVhScGIyNXpMblZ3WkdGMFpWUmxlSFJEYjI1MFpXNTBLRzV2WkdVc0lHNWxlSFJUZEhKcGJtZFVaWGgwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ2RXNXRiM1Z1ZEVOdmJYQnZibVZ1ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lGSmxZV04wUTI5dGNHOXVaVzUwUW5KdmQzTmxja1Z1ZG1seWIyNXRaVzUwTG5WdWJXOTFiblJKUkVaeWIyMUZiblpwY205dWJXVnVkQ2gwYUdsekxsOXliMjkwVG05a1pVbEVLVHRjYmlBZ2ZWeHVYRzU5S1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblE3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RET01UZXh0YXJlYVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4gICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGVcbiAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgPHRleHRhcmVhPiBuYXRpdmUgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgYHZhbHVlYCwgYW5kXG4gKiBgZGVmYXVsdFZhbHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRyYWRpdGlvbmFsIERPTSBBUEkgYmVjYXVzZSB2YWx1ZSBpc1xuICogdXN1YWxseSBzZXQgYXMgUENEQVRBIGNoaWxkcmVuLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGFmZmVjdCB0aGVcbiAqIHZhbHVlIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsXG4gKiBub3QgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluXG4gKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQgdG8gYmUgdXBkYXRlZC5cbiAqXG4gKiBUaGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggYW4gZW1wdHkgdmFsdWUsIHRoZSBwcm9wXG4gKiBgZGVmYXVsdFZhbHVlYCBpZiBzcGVjaWZpZWQsIG9yIHRoZSBjaGlsZHJlbiBjb250ZW50IChkZXByZWNhdGVkKS5cbiAqL1xudmFyIFJlYWN0RE9NVGV4dGFyZWEgPSB7XG4gIGdldE5hdGl2ZVByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIEFsd2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhlIHNlbGVjdGlvbiByYW5nZSB3aWxsXG4gICAgLy8gZ2V0IHJlc2V0IGlmIGB0ZXh0Q29udGVudGAgaXMgbXV0YXRlZC5cbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBjaGlsZHJlbjogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBuYXRpdmVQcm9wcztcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCd0ZXh0YXJlYScsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgaW5zdGVhZCBvZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRleHRhcmVhPi4nKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgICEoZGVmYXVsdFZhbHVlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBzdXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPHRleHRhcmVhPiBjYW4gb25seSBoYXZlIGF0IG1vc3Qgb25lIGNoaWxkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlblswXTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdFZhbHVlID0gJycgKyBjaGlsZHJlbjtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSAnJztcbiAgICB9XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICAvLyBXZSBzYXZlIHRoZSBpbml0aWFsIHZhbHVlIHNvIHRoYXQgYFJlYWN0RE9NQ29tcG9uZW50YCBkb2Vzbid0IHVwZGF0ZVxuICAgICAgLy8gYHRleHRDb250ZW50YCAodW5uZWNlc3Nhcnkgc2luY2Ugd2UgdXBkYXRlIHZhbHVlKS5cbiAgICAgIC8vIFRoZSBpbml0aWFsIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0IHNvIHRoYXQncyB3aHkgaXQnc1xuICAgICAgLy8gZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuICAgICAgaW5pdGlhbFZhbHVlOiAnJyArICh2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBkZWZhdWx0VmFsdWUpLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIFJlYWN0RE9NSURPcGVyYXRpb25zLnVwZGF0ZVByb3BlcnR5QnlJRChpbnN0Ll9yb290Tm9kZUlELCAndmFsdWUnLCAnJyArIHZhbHVlKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dGFyZWE7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkVUMDFVWlhoMFlYSmxZUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFJFOU5WR1Y0ZEdGeVpXRmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJNYVc1clpXUldZV3gxWlZWMGFXeHpJRDBnY21WeGRXbHlaU2duTGk5TWFXNXJaV1JXWVd4MVpWVjBhV3h6SnlrN1hHNTJZWElnVW1WaFkzUkVUMDFKUkU5d1pYSmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJFOU5TVVJQY0dWeVlYUnBiMjV6SnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm1aMWJtTjBhVzl1SUdadmNtTmxWWEJrWVhSbFNXWk5iM1Z1ZEdWa0tDa2dlMXh1SUNCcFppQW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDa2dlMXh1SUNBZ0lDOHZJRVJQVFNCamIyMXdiMjVsYm5RZ2FYTWdjM1JwYkd3Z2JXOTFiblJsWkRzZ2RYQmtZWFJsWEc0Z0lDQWdVbVZoWTNSRVQwMVVaWGgwWVhKbFlTNTFjR1JoZEdWWGNtRndjR1Z5S0hSb2FYTXBPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCaElEeDBaWGgwWVhKbFlUNGdibUYwYVhabElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUdGc2JHOTNjeUJ6WlhSMGFXNW5JR0IyWVd4MVpXQXNJR0Z1WkZ4dUlDb2dZR1JsWm1GMWJIUldZV3gxWldBdUlGUm9hWE1nWkdsbVptVnljeUJtY205dElIUm9aU0IwY21Ga2FYUnBiMjVoYkNCRVQwMGdRVkJKSUdKbFkyRjFjMlVnZG1Gc2RXVWdhWE5jYmlBcUlIVnpkV0ZzYkhrZ2MyVjBJR0Z6SUZCRFJFRlVRU0JqYUdsc1pISmxiaTVjYmlBcVhHNGdLaUJKWmlCZ2RtRnNkV1ZnSUdseklHNXZkQ0J6ZFhCd2JHbGxaQ0FvYjNJZ2JuVnNiQzkxYm1SbFptbHVaV1FwTENCMWMyVnlJR0ZqZEdsdmJuTWdkR2hoZENCaFptWmxZM1FnZEdobFhHNGdLaUIyWVd4MVpTQjNhV3hzSUhSeWFXZG5aWElnZFhCa1lYUmxjeUIwYnlCMGFHVWdaV3hsYldWdWRDNWNiaUFxWEc0Z0tpQkpaaUJnZG1Gc2RXVmdJR2x6SUhOMWNIQnNhV1ZrSUNoaGJtUWdibTkwSUc1MWJHd3ZkVzVrWldacGJtVmtLU3dnZEdobElISmxibVJsY21Wa0lHVnNaVzFsYm5RZ2QybHNiRnh1SUNvZ2JtOTBJSFJ5YVdkblpYSWdkWEJrWVhSbGN5QjBieUIwYUdVZ1pXeGxiV1Z1ZEM0Z1NXNXpkR1ZoWkN3Z2RHaGxJR0IyWVd4MVpXQWdjSEp2Y0NCdGRYTjBJR05vWVc1blpTQnBibHh1SUNvZ2IzSmtaWElnWm05eUlIUm9aU0J5Wlc1a1pYSmxaQ0JsYkdWdFpXNTBJSFJ2SUdKbElIVndaR0YwWldRdVhHNGdLbHh1SUNvZ1ZHaGxJSEpsYm1SbGNtVmtJR1ZzWlcxbGJuUWdkMmxzYkNCaVpTQnBibWwwYVdGc2FYcGxaQ0IzYVhSb0lHRnVJR1Z0Y0hSNUlIWmhiSFZsTENCMGFHVWdjSEp2Y0Z4dUlDb2dZR1JsWm1GMWJIUldZV3gxWldBZ2FXWWdjM0JsWTJsbWFXVmtMQ0J2Y2lCMGFHVWdZMmhwYkdSeVpXNGdZMjl1ZEdWdWRDQW9aR1Z3Y21WallYUmxaQ2t1WEc0Z0tpOWNiblpoY2lCU1pXRmpkRVJQVFZSbGVIUmhjbVZoSUQwZ2UxeHVJQ0JuWlhST1lYUnBkbVZRY205d2N6b2dablZ1WTNScGIyNGdLR2x1YzNRc0lIQnliM0J6TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSVNod2NtOXdjeTVrWVc1blpYSnZkWE5zZVZObGRFbHVibVZ5U0ZSTlRDQTlQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkZ1pHRnVaMlZ5YjNWemJIbFRaWFJKYm01bGNraFVUVXhnSUdSdlpYTWdibTkwSUcxaGEyVWdjMlZ1YzJVZ2IyNGdQSFJsZUhSaGNtVmhQaTRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQXZMeUJCYkhkaGVYTWdjMlYwSUdOb2FXeGtjbVZ1SUhSdklIUm9aU0J6WVcxbElIUm9hVzVuTGlCSmJpQkpSVGtzSUhSb1pTQnpaV3hsWTNScGIyNGdjbUZ1WjJVZ2QybHNiRnh1SUNBZ0lDOHZJR2RsZENCeVpYTmxkQ0JwWmlCZ2RHVjRkRU52Ym5SbGJuUmdJR2x6SUcxMWRHRjBaV1F1WEc0Z0lDQWdkbUZ5SUc1aGRHbDJaVkJ5YjNCeklEMGdZWE56YVdkdUtIdDlMQ0J3Y205d2N5d2dlMXh1SUNBZ0lDQWdaR1ZtWVhWc2RGWmhiSFZsT2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNCMllXeDFaVG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnWTJocGJHUnlaVzQ2SUdsdWMzUXVYM2R5WVhCd1pYSlRkR0YwWlM1cGJtbDBhV0ZzVm1Gc2RXVXNYRzRnSUNBZ0lDQnZia05vWVc1blpUb2dhVzV6ZEM1ZmQzSmhjSEJsY2xOMFlYUmxMbTl1UTJoaGJtZGxYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2JtRjBhWFpsVUhKdmNITTdYRzRnSUgwc1hHNWNiaUFnYlc5MWJuUlhjbUZ3Y0dWeU9pQm1kVzVqZEdsdmJpQW9hVzV6ZEN3Z2NISnZjSE1wSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5NWphR1ZqYTFCeWIzQlVlWEJsY3lnbmRHVjRkR0Z5WldFbkxDQndjbTl3Y3l3Z2FXNXpkQzVmWTNWeWNtVnVkRVZzWlcxbGJuUXVYMjkzYm1WeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdaR1ZtWVhWc2RGWmhiSFZsSUQwZ2NISnZjSE11WkdWbVlYVnNkRlpoYkhWbE8xeHVJQ0FnSUM4dklGUlBSRThnS0hsMWJtZHpkR1Z5Y3lrNklGSmxiVzkyWlNCemRYQndiM0owSUdadmNpQmphR2xzWkhKbGJpQmpiMjUwWlc1MElHbHVJRHgwWlhoMFlYSmxZVDR1WEc0Z0lDQWdkbUZ5SUdOb2FXeGtjbVZ1SUQwZ2NISnZjSE11WTJocGJHUnlaVzQ3WEc0Z0lDQWdhV1lnS0dOb2FXeGtjbVZ1SUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktHWmhiSE5sTENBblZYTmxJSFJvWlNCZ1pHVm1ZWFZzZEZaaGJIVmxZQ0J2Y2lCZ2RtRnNkV1ZnSUhCeWIzQnpJR2x1YzNSbFlXUWdiMllnYzJWMGRHbHVaeUFuSUNzZ0oyTm9hV3hrY21WdUlHOXVJRHgwWlhoMFlYSmxZVDR1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQWhLR1JsWm1GMWJIUldZV3gxWlNBOVBTQnVkV3hzS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RKWmlCNWIzVWdjM1Z3Y0d4NUlHQmtaV1poZFd4MFZtRnNkV1ZnSUc5dUlHRWdQSFJsZUhSaGNtVmhQaXdnWkc4Z2JtOTBJSEJoYzNNZ1kyaHBiR1J5Wlc0dUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvWTJocGJHUnlaVzRwS1NCN1hHNGdJQ0FnSUNBZ0lDRW9ZMmhwYkdSeVpXNHViR1Z1WjNSb0lEdzlJREVwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKengwWlhoMFlYSmxZVDRnWTJGdUlHOXViSGtnYUdGMlpTQmhkQ0J0YjNOMElHOXVaU0JqYUdsc1pDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lHTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNWJNRjA3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdSbFptRjFiSFJXWVd4MVpTQTlJQ2NuSUNzZ1kyaHBiR1J5Wlc0N1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoa1pXWmhkV3gwVm1Gc2RXVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdaR1ZtWVhWc2RGWmhiSFZsSUQwZ0p5YzdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQjJZV3gxWlNBOUlFeHBibXRsWkZaaGJIVmxWWFJwYkhNdVoyVjBWbUZzZFdVb2NISnZjSE1wTzF4dVhHNGdJQ0FnYVc1emRDNWZkM0poY0hCbGNsTjBZWFJsSUQwZ2UxeHVJQ0FnSUNBZ0x5OGdWMlVnYzJGMlpTQjBhR1VnYVc1cGRHbGhiQ0IyWVd4MVpTQnpieUIwYUdGMElHQlNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRHQWdaRzlsYzI0bmRDQjFjR1JoZEdWY2JpQWdJQ0FnSUM4dklHQjBaWGgwUTI5dWRHVnVkR0FnS0hWdWJtVmpaWE56WVhKNUlITnBibU5sSUhkbElIVndaR0YwWlNCMllXeDFaU2t1WEc0Z0lDQWdJQ0F2THlCVWFHVWdhVzVwZEdsaGJDQjJZV3gxWlNCallXNGdZbVVnWVNCaWIyOXNaV0Z1SUc5eUlHOWlhbVZqZENCemJ5QjBhR0YwSjNNZ2QyaDVJR2wwSjNOY2JpQWdJQ0FnSUM4dklHWnZjbU5sWkNCMGJ5QmlaU0JoSUhOMGNtbHVaeTVjYmlBZ0lDQWdJR2x1YVhScFlXeFdZV3gxWlRvZ0p5Y2dLeUFvZG1Gc2RXVWdJVDBnYm5Wc2JDQS9JSFpoYkhWbElEb2daR1ZtWVhWc2RGWmhiSFZsS1N4Y2JpQWdJQ0FnSUc5dVEyaGhibWRsT2lCZmFHRnVaR3hsUTJoaGJtZGxMbUpwYm1Rb2FXNXpkQ2xjYmlBZ0lDQjlPMXh1SUNCOUxGeHVYRzRnSUhWd1pHRjBaVmR5WVhCd1pYSTZJR1oxYm1OMGFXOXVJQ2hwYm5OMEtTQjdYRzRnSUNBZ2RtRnlJSEJ5YjNCeklEMGdhVzV6ZEM1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1Y0hKdmNITTdYRzRnSUNBZ2RtRnlJSFpoYkhWbElEMGdUR2x1YTJWa1ZtRnNkV1ZWZEdsc2N5NW5aWFJXWVd4MVpTaHdjbTl3Y3lrN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUM4dklFTmhjM1FnWUhaaGJIVmxZQ0IwYnlCaElITjBjbWx1WnlCMGJ5Qmxibk4xY21VZ2RHaGxJSFpoYkhWbElHbHpJSE5sZENCamIzSnlaV04wYkhrdUlGZG9hV3hsWEc0Z0lDQWdJQ0F2THlCaWNtOTNjMlZ5Y3lCMGVYQnBZMkZzYkhrZ1pHOGdkR2hwY3lCaGN5QnVaV05sYzNOaGNua3NJR3B6Wkc5dElHUnZaWE51SjNRdVhHNGdJQ0FnSUNCU1pXRmpkRVJQVFVsRVQzQmxjbUYwYVc5dWN5NTFjR1JoZEdWUWNtOXdaWEowZVVKNVNVUW9hVzV6ZEM1ZmNtOXZkRTV2WkdWSlJDd2dKM1poYkhWbEp5d2dKeWNnS3lCMllXeDFaU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlPMXh1WEc1bWRXNWpkR2x2YmlCZmFHRnVaR3hsUTJoaGJtZGxLR1YyWlc1MEtTQjdYRzRnSUhaaGNpQndjbTl3Y3lBOUlIUm9hWE11WDJOMWNuSmxiblJGYkdWdFpXNTBMbkJ5YjNCek8xeHVJQ0IyWVhJZ2NtVjBkWEp1Vm1Gc2RXVWdQU0JNYVc1clpXUldZV3gxWlZWMGFXeHpMbVY0WldOMWRHVlBia05vWVc1blpTaHdjbTl3Y3l3Z1pYWmxiblFwTzF4dUlDQlNaV0ZqZEZWd1pHRjBaWE11WVhOaGNDaG1iM0pqWlZWd1pHRjBaVWxtVFc5MWJuUmxaQ3dnZEdocGN5azdYRzRnSUhKbGRIVnliaUJ5WlhSMWNtNVdZV3gxWlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRFUlBUVlJsZUhSaGNtVmhPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3REZWZhdWx0SW5qZWN0aW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vQmVmb3JlSW5wdXRFdmVudFBsdWdpbicpO1xudmFyIENoYW5nZUV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9DaGFuZ2VFdmVudFBsdWdpbicpO1xudmFyIENsaWVudFJlYWN0Um9vdEluZGV4ID0gcmVxdWlyZSgnLi9DbGllbnRSZWFjdFJvb3RJbmRleCcpO1xudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gcmVxdWlyZSgnLi9EZWZhdWx0RXZlbnRQbHVnaW5PcmRlcicpO1xudmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vSFRNTERPTVByb3BlcnR5Q29uZmlnJyk7XG52YXIgUmVhY3RCcm93c2VyQ29tcG9uZW50TWl4aW4gPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckNvbXBvbmVudE1peGluJyk7XG52YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50Jyk7XG52YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RFdmVudExpc3RlbmVyID0gcmVxdWlyZSgnLi9SZWFjdEV2ZW50TGlzdGVuZXInKTtcbnZhciBSZWFjdEluamVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbmplY3Rpb24nKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbicpO1xudmFyIFNlbGVjdEV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9TZWxlY3RFdmVudFBsdWdpbicpO1xudmFyIFNlcnZlclJlYWN0Um9vdEluZGV4ID0gcmVxdWlyZSgnLi9TZXJ2ZXJSZWFjdFJvb3RJbmRleCcpO1xudmFyIFNpbXBsZUV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9TaW1wbGVFdmVudFBsdWdpbicpO1xudmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0gcmVxdWlyZSgnLi9TVkdET01Qcm9wZXJ0eUNvbmZpZycpO1xuXG52YXIgYWxyZWFkeUluamVjdGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGluamVjdCgpIHtcbiAgaWYgKGFscmVhZHlJbmplY3RlZCkge1xuICAgIC8vIFRPRE86IFRoaXMgaXMgY3VycmVudGx5IHRydWUgYmVjYXVzZSB0aGVzZSBpbmplY3Rpb25zIGFyZSBzaGFyZWQgYmV0d2VlblxuICAgIC8vIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgcGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRseVxuICAgIC8vIGFuZCBub3Qgc2hhcmUgYW55IGluamVjdGlvbiBzdGF0ZS4gVGhlbiB0aGlzIHByb2JsZW0gd2lsbCBiZSBzb2x2ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGFscmVhZHlJbmplY3RlZCA9IHRydWU7XG5cbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcihSZWFjdEV2ZW50TGlzdGVuZXIpO1xuXG4gIC8qKlxuICAgKiBJbmplY3QgbW9kdWxlcyBmb3IgcmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy5cbiAgICovXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIpO1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RJbnN0YW5jZUhhbmRsZShSZWFjdEluc3RhbmNlSGFuZGxlcyk7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdE1vdW50KFJlYWN0TW91bnQpO1xuXG4gIC8qKlxuICAgKiBTb21lIGltcG9ydGFudCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJlcXVpcmVcbiAgICogdGhlbSkuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1xuICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1wbGVFdmVudFBsdWdpbixcbiAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVudFBsdWdpbixcbiAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sXG4gICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLFxuICAgIEJlZm9yZUlucHV0RXZlbnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW5cbiAgfSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uTmF0aXZlQ29tcG9uZW50LmluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uTmF0aXZlQ29tcG9uZW50LmluamVjdFRleHRDb21wb25lbnRDbGFzcyhSZWFjdERPTVRleHRDb21wb25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkNsYXNzLmluamVjdE1peGluKFJlYWN0QnJvd3NlckNvbXBvbmVudE1peGluKTtcblxuICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhIVE1MRE9NUHJvcGVydHlDb25maWcpO1xuICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhTVkdET01Qcm9wZXJ0eUNvbmZpZyk7XG5cbiAgUmVhY3RJbmplY3Rpb24uRW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnQoJ25vc2NyaXB0Jyk7XG5cbiAgUmVhY3RJbmplY3Rpb24uVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgUmVhY3RJbmplY3Rpb24uVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLlJvb3RJbmRleC5pbmplY3RDcmVhdGVSZWFjdFJvb3RJbmRleChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBDbGllbnRSZWFjdFJvb3RJbmRleC5jcmVhdGVSZWFjdFJvb3RJbmRleCA6IFNlcnZlclJlYWN0Um9vdEluZGV4LmNyZWF0ZVJlYWN0Um9vdEluZGV4KTtcblxuICBSZWFjdEluamVjdGlvbi5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIHVybCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiB3aW5kb3cubG9jYXRpb24uaHJlZiB8fCAnJztcbiAgICBpZiAoL1s/Jl1yZWFjdF9wZXJmXFxiLy50ZXN0KHVybCkpIHtcbiAgICAgIHZhciBSZWFjdERlZmF1bHRQZXJmID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRQZXJmJyk7XG4gICAgICBSZWFjdERlZmF1bHRQZXJmLnN0YXJ0KCk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpbmplY3Q6IGluamVjdFxufTtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRVpXWmhkV3gwU1c1cVpXTjBhVzl1TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0ltWnBiR1VpT2lKblpXNWxjbUYwWldRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF4TXkweU1ERTFMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ29nUVd4c0lISnBaMmgwY3lCeVpYTmxjblpsWkM1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkNVMFF0YzNSNWJHVWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNGdRVzRnWVdSa2FYUnBiMjVoYkNCbmNtRnVkRnh1SUNvZ2IyWWdjR0YwWlc1MElISnBaMmgwY3lCallXNGdZbVVnWm05MWJtUWdhVzRnZEdobElGQkJWRVZPVkZNZ1ptbHNaU0JwYmlCMGFHVWdjMkZ0WlNCa2FYSmxZM1J2Y25rdVhHNGdLbHh1SUNvZ1FIQnliM1pwWkdWelRXOWtkV3hsSUZKbFlXTjBSR1ZtWVhWc2RFbHVhbVZqZEdsdmJseHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRUpsWm05eVpVbHVjSFYwUlhabGJuUlFiSFZuYVc0Z1BTQnlaWEYxYVhKbEtDY3VMMEpsWm05eVpVbHVjSFYwUlhabGJuUlFiSFZuYVc0bktUdGNiblpoY2lCRGFHRnVaMlZGZG1WdWRGQnNkV2RwYmlBOUlISmxjWFZwY21Vb0p5NHZRMmhoYm1kbFJYWmxiblJRYkhWbmFXNG5LVHRjYm5aaGNpQkRiR2xsYm5SU1pXRmpkRkp2YjNSSmJtUmxlQ0E5SUhKbGNYVnBjbVVvSnk0dlEyeHBaVzUwVW1WaFkzUlNiMjkwU1c1a1pYZ25LVHRjYm5aaGNpQkVaV1poZFd4MFJYWmxiblJRYkhWbmFXNVBjbVJsY2lBOUlISmxjWFZwY21Vb0p5NHZSR1ZtWVhWc2RFVjJaVzUwVUd4MVoybHVUM0prWlhJbktUdGNiblpoY2lCRmJuUmxja3hsWVhabFJYWmxiblJRYkhWbmFXNGdQU0J5WlhGMWFYSmxLQ2N1TDBWdWRHVnlUR1ZoZG1WRmRtVnVkRkJzZFdkcGJpY3BPMXh1ZG1GeUlFVjRaV04xZEdsdmJrVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2UlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RbktUdGNiblpoY2lCSVZFMU1SRTlOVUhKdmNHVnlkSGxEYjI1bWFXY2dQU0J5WlhGMWFYSmxLQ2N1TDBoVVRVeEVUMDFRY205d1pYSjBlVU52Ym1acFp5Y3BPMXh1ZG1GeUlGSmxZV04wUW5KdmQzTmxja052YlhCdmJtVnVkRTFwZUdsdUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFSnliM2R6WlhKRGIyMXdiMjVsYm5STmFYaHBiaWNwTzF4dWRtRnlJRkpsWVdOMFEyOXRjRzl1Wlc1MFFuSnZkM05sY2tWdWRtbHliMjV0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTnZiWEJ2Ym1WdWRFSnliM2R6WlhKRmJuWnBjbTl1YldWdWRDY3BPMXh1ZG1GeUlGSmxZV04wUkdWbVlYVnNkRUpoZEdOb2FXNW5VM1J5WVhSbFoza2dQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSR1ZtWVhWc2RFSmhkR05vYVc1blUzUnlZWFJsWjNrbktUdGNiblpoY2lCU1pXRmpkRVJQVFVOdmJYQnZibVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVQwMURiMjF3YjI1bGJuUW5LVHRjYm5aaGNpQlNaV0ZqZEVSUFRWUmxlSFJEYjIxd2IyNWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUkU5TlZHVjRkRU52YlhCdmJtVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFJYWmxiblJNYVhOMFpXNWxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JGZG1WdWRFeHBjM1JsYm1WeUp5azdYRzUyWVhJZ1VtVmhZM1JKYm1wbFkzUnBiMjRnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wU1c1cVpXTjBhVzl1SnlrN1hHNTJZWElnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6SnlrN1hHNTJZWElnVW1WaFkzUk5iM1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTmIzVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjRuS1R0Y2JuWmhjaUJUWld4bFkzUkZkbVZ1ZEZCc2RXZHBiaUE5SUhKbGNYVnBjbVVvSnk0dlUyVnNaV04wUlhabGJuUlFiSFZuYVc0bktUdGNiblpoY2lCVFpYSjJaWEpTWldGamRGSnZiM1JKYm1SbGVDQTlJSEpsY1hWcGNtVW9KeTR2VTJWeWRtVnlVbVZoWTNSU2IyOTBTVzVrWlhnbktUdGNiblpoY2lCVGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmlBOUlISmxjWFZwY21Vb0p5NHZVMmx0Y0d4bFJYWmxiblJRYkhWbmFXNG5LVHRjYm5aaGNpQlRWa2RFVDAxUWNtOXdaWEowZVVOdmJtWnBaeUE5SUhKbGNYVnBjbVVvSnk0dlUxWkhSRTlOVUhKdmNHVnlkSGxEYjI1bWFXY25LVHRjYmx4dWRtRnlJR0ZzY21WaFpIbEpibXBsWTNSbFpDQTlJR1poYkhObE8xeHVYRzVtZFc1amRHbHZiaUJwYm1wbFkzUW9LU0I3WEc0Z0lHbG1JQ2hoYkhKbFlXUjVTVzVxWldOMFpXUXBJSHRjYmlBZ0lDQXZMeUJVVDBSUE9pQlVhR2x6SUdseklHTjFjbkpsYm5Sc2VTQjBjblZsSUdKbFkyRjFjMlVnZEdobGMyVWdhVzVxWldOMGFXOXVjeUJoY21VZ2MyaGhjbVZrSUdKbGRIZGxaVzVjYmlBZ0lDQXZMeUIwYUdVZ1kyeHBaVzUwSUdGdVpDQjBhR1VnYzJWeWRtVnlJSEJoWTJ0aFoyVXVJRlJvWlhrZ2MyaHZkV3hrSUdKbElHSjFhV3gwSUdsdVpHVndaVzVrWlc1MGJIbGNiaUFnSUNBdkx5QmhibVFnYm05MElITm9ZWEpsSUdGdWVTQnBibXBsWTNScGIyNGdjM1JoZEdVdUlGUm9aVzRnZEdocGN5QndjbTlpYkdWdElIZHBiR3dnWW1VZ2MyOXNkbVZrTGx4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQmhiSEpsWVdSNVNXNXFaV04wWldRZ1BTQjBjblZsTzF4dVhHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxrVjJaVzUwUlcxcGRIUmxjaTVwYm1wbFkzUlNaV0ZqZEVWMlpXNTBUR2x6ZEdWdVpYSW9VbVZoWTNSRmRtVnVkRXhwYzNSbGJtVnlLVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzVxWldOMElHMXZaSFZzWlhNZ1ptOXlJSEpsYzI5c2RtbHVaeUJFVDAwZ2FHbGxjbUZ5WTJoNUlHRnVaQ0J3YkhWbmFXNGdiM0prWlhKcGJtY3VYRzRnSUNBcUwxeHVJQ0JTWldGamRFbHVhbVZqZEdsdmJpNUZkbVZ1ZEZCc2RXZHBia2gxWWk1cGJtcGxZM1JGZG1WdWRGQnNkV2RwYms5eVpHVnlLRVJsWm1GMWJIUkZkbVZ1ZEZCc2RXZHBiazl5WkdWeUtUdGNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVSWFpsYm5SUWJIVm5hVzVJZFdJdWFXNXFaV04wU1c1emRHRnVZMlZJWVc1a2JHVW9VbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1wTzF4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RmRtVnVkRkJzZFdkcGJraDFZaTVwYm1wbFkzUk5iM1Z1ZENoU1pXRmpkRTF2ZFc1MEtUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1UyOXRaU0JwYlhCdmNuUmhiblFnWlhabGJuUWdjR3gxWjJsdWN5QnBibU5zZFdSbFpDQmllU0JrWldaaGRXeDBJQ2gzYVhSb2IzVjBJR2hoZG1sdVp5QjBieUJ5WlhGMWFYSmxYRzRnSUNBcUlIUm9aVzBwTGx4dUlDQWdLaTljYmlBZ1VtVmhZM1JKYm1wbFkzUnBiMjR1UlhabGJuUlFiSFZuYVc1SWRXSXVhVzVxWldOMFJYWmxiblJRYkhWbmFXNXpRbmxPWVcxbEtIdGNiaUFnSUNCVGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmpvZ1UybHRjR3hsUlhabGJuUlFiSFZuYVc0c1hHNGdJQ0FnUlc1MFpYSk1aV0YyWlVWMlpXNTBVR3gxWjJsdU9pQkZiblJsY2t4bFlYWmxSWFpsYm5SUWJIVm5hVzRzWEc0Z0lDQWdRMmhoYm1kbFJYWmxiblJRYkhWbmFXNDZJRU5vWVc1blpVVjJaVzUwVUd4MVoybHVMRnh1SUNBZ0lGTmxiR1ZqZEVWMlpXNTBVR3gxWjJsdU9pQlRaV3hsWTNSRmRtVnVkRkJzZFdkcGJpeGNiaUFnSUNCQ1pXWnZjbVZKYm5CMWRFVjJaVzUwVUd4MVoybHVPaUJDWldadmNtVkpibkIxZEVWMlpXNTBVR3gxWjJsdVhHNGdJSDBwTzF4dVhHNGdJRkpsWVdOMFNXNXFaV04wYVc5dUxrNWhkR2wyWlVOdmJYQnZibVZ1ZEM1cGJtcGxZM1JIWlc1bGNtbGpRMjl0Y0c5dVpXNTBRMnhoYzNNb1VtVmhZM1JFVDAxRGIyMXdiMjVsYm5RcE8xeHVYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMazVoZEdsMlpVTnZiWEJ2Ym1WdWRDNXBibXBsWTNSVVpYaDBRMjl0Y0c5dVpXNTBRMnhoYzNNb1VtVmhZM1JFVDAxVVpYaDBRMjl0Y0c5dVpXNTBLVHRjYmx4dUlDQlNaV0ZqZEVsdWFtVmpkR2x2Ymk1RGJHRnpjeTVwYm1wbFkzUk5hWGhwYmloU1pXRmpkRUp5YjNkelpYSkRiMjF3YjI1bGJuUk5hWGhwYmlrN1hHNWNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVSRTlOVUhKdmNHVnlkSGt1YVc1cVpXTjBSRTlOVUhKdmNHVnlkSGxEYjI1bWFXY29TRlJOVEVSUFRWQnliM0JsY25SNVEyOXVabWxuS1R0Y2JpQWdVbVZoWTNSSmJtcGxZM1JwYjI0dVJFOU5VSEp2Y0dWeWRIa3VhVzVxWldOMFJFOU5VSEp2Y0dWeWRIbERiMjVtYVdjb1UxWkhSRTlOVUhKdmNHVnlkSGxEYjI1bWFXY3BPMXh1WEc0Z0lGSmxZV04wU1c1cVpXTjBhVzl1TGtWdGNIUjVRMjl0Y0c5dVpXNTBMbWx1YW1WamRFVnRjSFI1UTI5dGNHOXVaVzUwS0NkdWIzTmpjbWx3ZENjcE8xeHVYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMbFZ3WkdGMFpYTXVhVzVxWldOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNG9VbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJpazdYRzRnSUZKbFlXTjBTVzVxWldOMGFXOXVMbFZ3WkdGMFpYTXVhVzVxWldOMFFtRjBZMmhwYm1kVGRISmhkR1ZuZVNoU1pXRmpkRVJsWm1GMWJIUkNZWFJqYUdsdVoxTjBjbUYwWldkNUtUdGNibHh1SUNCU1pXRmpkRWx1YW1WamRHbHZiaTVTYjI5MFNXNWtaWGd1YVc1cVpXTjBRM0psWVhSbFVtVmhZM1JTYjI5MFNXNWtaWGdvUlhobFkzVjBhVzl1Ulc1MmFYSnZibTFsYm5RdVkyRnVWWE5sUkU5TklEOGdRMnhwWlc1MFVtVmhZM1JTYjI5MFNXNWtaWGd1WTNKbFlYUmxVbVZoWTNSU2IyOTBTVzVrWlhnZ09pQlRaWEoyWlhKU1pXRmpkRkp2YjNSSmJtUmxlQzVqY21WaGRHVlNaV0ZqZEZKdmIzUkpibVJsZUNrN1hHNWNiaUFnVW1WaFkzUkpibXBsWTNScGIyNHVRMjl0Y0c5dVpXNTBMbWx1YW1WamRFVnVkbWx5YjI1dFpXNTBLRkpsWVdOMFEyOXRjRzl1Wlc1MFFuSnZkM05sY2tWdWRtbHliMjV0Wlc1MEtUdGNibHh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSFpoY2lCMWNtd2dQU0JGZUdWamRYUnBiMjVGYm5acGNtOXViV1Z1ZEM1allXNVZjMlZFVDAwZ0ppWWdkMmx1Wkc5M0xteHZZMkYwYVc5dUxtaHlaV1lnZkh3Z0p5YzdYRzRnSUNBZ2FXWWdLQzliUHlaZGNtVmhZM1JmY0dWeVpseGNZaTh1ZEdWemRDaDFjbXdwS1NCN1hHNGdJQ0FnSUNCMllYSWdVbVZoWTNSRVpXWmhkV3gwVUdWeVppQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkVaV1poZFd4MFVHVnlaaWNwTzF4dUlDQWdJQ0FnVW1WaFkzUkVaV1poZFd4MFVHVnlaaTV6ZEdGeWRDZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSHRjYmlBZ2FXNXFaV04wT2lCcGJtcGxZM1JjYm4wN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RWxlbWVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG5cbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudCB0eXBlLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAga2V5OiB0cnVlLFxuICByZWY6IHRydWUsXG4gIF9fc2VsZjogdHJ1ZSxcbiAgX19zb3VyY2U6IHRydWVcbn07XG5cbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4Jywge30pO1xuICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTtcbiAgfSBjYXRjaCAoeCkge1xuICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eVxuICB9XG59XG5cbi8qKlxuICogQmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIFJlYWN0IGVsZW1lbnRzLiBUaGlzIGlzIG9ubHkgdXNlZCB0byBtYWtlIHRoaXNcbiAqIHdvcmsgd2l0aCBhIGR5bmFtaWMgaW5zdGFuY2VvZiBjaGVjay4gTm90aGluZyBzaG91bGQgbGl2ZSBvbiB0aGlzIHByb3RvdHlwZS5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcblxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4gICAgICB9KTtcbiAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XG4gICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIgcHJvcHMgPSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgcmVmID0gY29uZmlnLnJlZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5yZWY7XG4gICAga2V5ID0gY29uZmlnLmtleSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6ICcnICsgY29uZmlnLmtleTtcbiAgICBzZWxmID0gY29uZmlnLl9fc2VsZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XG4gICAgc291cmNlID0gY29uZmlnLl9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc291cmNlO1xuICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRlZmF1bHRQcm9wcztcbiAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG59O1xuXG5SZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHZhciBmYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcbiAgLy8gRXhwb3NlIHRoZSB0eXBlIG9uIHRoZSBmYWN0b3J5IGFuZCB0aGUgcHJvdG90eXBlIHNvIHRoYXQgaXQgY2FuIGJlXG4gIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50cy4gRS5nLiBgPEZvbyAvPi50eXBlID09PSBGb29gLlxuICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVjdG9yYCBzaW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uXG4gIC8vIHRoYXQgY3JlYXRlZCB0aGUgZWxlbWVudCwgYW5kIGl0IG1heSBub3QgZXZlbiBiZSBhIGNvbnN0cnVjdG9yLlxuICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWRcbiAgZmFjdG9yeS50eXBlID0gdHlwZTtcbiAgcmV0dXJuIGZhY3Rvcnk7XG59O1xuXG5SZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5ID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0tleSkge1xuICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudChvbGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG9sZEVsZW1lbnQucHJvcHMpO1xuXG4gIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld1Byb3BzKSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgb2xkRWxlbWVudC5rZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBuZXdQcm9wcyk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBJZiB0aGUga2V5IG9uIHRoZSBvcmlnaW5hbCBpcyB2YWxpZCwgdGhlbiB0aGUgY2xvbmUgaXMgdmFsaWRcbiAgICBuZXdFbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSBvbGRFbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQ7XG4gIH1cblxuICByZXR1cm4gbmV3RWxlbWVudDtcbn07XG5cblJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuICB2YXIgcHJvcHMgPSBhc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpO1xuXG4gIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcbiAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXG4gIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjtcbiAgLy8gU291cmNlIGlzIHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFyZ2V0ZWQgYnkgYVxuICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlXG4gIC8vIHRydWUgb3duZXIuXG4gIHZhciBzb3VyY2UgPSBlbGVtZW50Ll9zb3VyY2U7XG5cbiAgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlblxuICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcblxuICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICBpZiAoY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTaWxlbnRseSBzdGVhbCB0aGUgcmVmIGZyb20gdGhlIHBhcmVudC5cbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgfVxuICAgIGlmIChjb25maWcua2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIGNvbXBvbmVudC5cbiAqIEBmaW5hbFxuICovXG5SZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRmJHVnRaVzUwTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE5DMHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wUld4bGJXVnVkRnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpY3BPMXh1WEc1MllYSWdZWE56YVdkdUlEMGdjbVZ4ZFdseVpTZ25MaTlQWW1wbFkzUXVZWE56YVdkdUp5azdYRzVjYmk4dklGUm9aU0JUZVcxaWIyd2dkWE5sWkNCMGJ5QjBZV2NnZEdobElGSmxZV04wUld4bGJXVnVkQ0IwZVhCbExpQkpaaUIwYUdWeVpTQnBjeUJ1YnlCdVlYUnBkbVVnVTNsdFltOXNYRzR2THlCdWIzSWdjRzlzZVdacGJHd3NJSFJvWlc0Z1lTQndiR0ZwYmlCdWRXMWlaWElnYVhNZ2RYTmxaQ0JtYjNJZ2NHVnlabTl5YldGdVkyVXVYRzUyWVhJZ1VrVkJRMVJmUlV4RlRVVk9WRjlVV1ZCRklEMGdkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCVGVXMWliMnhiSjJadmNpZGRJQ1ltSUZONWJXSnZiRnNuWm05eUoxMG9KM0psWVdOMExtVnNaVzFsYm5RbktTQjhmQ0F3ZUdWaFl6YzdYRzVjYm5aaGNpQlNSVk5GVWxaRlJGOVFVazlRVXlBOUlIdGNiaUFnYTJWNU9pQjBjblZsTEZ4dUlDQnlaV1k2SUhSeWRXVXNYRzRnSUY5ZmMyVnNaam9nZEhKMVpTeGNiaUFnWDE5emIzVnlZMlU2SUhSeWRXVmNibjA3WEc1Y2JuWmhjaUJqWVc1RVpXWnBibVZRY205d1pYSjBlU0E5SUdaaGJITmxPMXh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ2RISjVJSHRjYmlBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZTMwc0lDZDRKeXdnZTMwcE8xeHVJQ0FnSUdOaGJrUmxabWx1WlZCeWIzQmxjblI1SUQwZ2RISjFaVHRjYmlBZ2ZTQmpZWFJqYUNBb2VDa2dlMXh1SUNBZ0lDOHZJRWxGSUhkcGJHd2dabUZwYkNCdmJpQmtaV1pwYm1WUWNtOXdaWEowZVZ4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FtRnpaU0JqYjI1emRISjFZM1J2Y2lCbWIzSWdZV3hzSUZKbFlXTjBJR1ZzWlcxbGJuUnpMaUJVYUdseklHbHpJRzl1YkhrZ2RYTmxaQ0IwYnlCdFlXdGxJSFJvYVhOY2JpQXFJSGR2Y21zZ2QybDBhQ0JoSUdSNWJtRnRhV01nYVc1emRHRnVZMlZ2WmlCamFHVmpheTRnVG05MGFHbHVaeUJ6YUc5MWJHUWdiR2wyWlNCdmJpQjBhR2x6SUhCeWIzUnZkSGx3WlM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZXlwOUlIUjVjR1ZjYmlBcUlFQndZWEpoYlNCN0tuMGdhMlY1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjN4dlltcGxZM1I5SUhKbFpseHVJQ29nUUhCaGNtRnRJSHNxZlNCelpXeG1JRUVnS25SbGJYQnZjbUZ5ZVNvZ2FHVnNjR1Z5SUhSdklHUmxkR1ZqZENCd2JHRmpaWE1nZDJobGNtVWdZSFJvYVhOZ0lHbHpYRzRnS2lCa2FXWm1aWEpsYm5RZ1puSnZiU0IwYUdVZ1lHOTNibVZ5WUNCM2FHVnVJRkpsWVdOMExtTnlaV0YwWlVWc1pXMWxiblFnYVhNZ1kyRnNiR1ZrTENCemJ5QjBhR0YwSUhkbFhHNGdLaUJqWVc0Z2QyRnliaTRnVjJVZ2QyRnVkQ0IwYnlCblpYUWdjbWxrSUc5bUlHOTNibVZ5SUdGdVpDQnlaWEJzWVdObElITjBjbWx1WnlCZ2NtVm1ZSE1nZDJsMGFDQmhjbkp2ZDF4dUlDb2dablZ1WTNScGIyNXpMQ0JoYm1RZ1lYTWdiRzl1WnlCaGN5QmdkR2hwYzJBZ1lXNWtJRzkzYm1WeUlHRnlaU0IwYUdVZ2MyRnRaU3dnZEdobGNtVWdkMmxzYkNCaVpTQnViMXh1SUNvZ1kyaGhibWRsSUdsdUlHSmxhR0YyYVc5eUxseHVJQ29nUUhCaGNtRnRJSHNxZlNCemIzVnlZMlVnUVc0Z1lXNXViM1JoZEdsdmJpQnZZbXBsWTNRZ0tHRmtaR1ZrSUdKNUlHRWdkSEpoYm5Od2FXeGxjaUJ2Y2lCdmRHaGxjbmRwYzJVcFhHNGdLaUJwYm1ScFkyRjBhVzVuSUdacGJHVnVZVzFsTENCc2FXNWxJRzUxYldKbGNpd2dZVzVrTDI5eUlHOTBhR1Z5SUdsdVptOXliV0YwYVc5dUxseHVJQ29nUUhCaGNtRnRJSHNxZlNCdmQyNWxjbHh1SUNvZ1FIQmhjbUZ0SUhzcWZTQndjbTl3YzF4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JuWmhjaUJTWldGamRFVnNaVzFsYm5RZ1BTQm1kVzVqZEdsdmJpQW9kSGx3WlN3Z2EyVjVMQ0J5WldZc0lITmxiR1lzSUhOdmRYSmpaU3dnYjNkdVpYSXNJSEJ5YjNCektTQjdYRzRnSUhaaGNpQmxiR1Z0Wlc1MElEMGdlMXh1SUNBZ0lDOHZJRlJvYVhNZ2RHRm5JR0ZzYkc5M0lIVnpJSFJ2SUhWdWFYRjFaV3g1SUdsa1pXNTBhV1o1SUhSb2FYTWdZWE1nWVNCU1pXRmpkQ0JGYkdWdFpXNTBYRzRnSUNBZ0pDUjBlWEJsYjJZNklGSkZRVU5VWDBWTVJVMUZUbFJmVkZsUVJTeGNibHh1SUNBZ0lDOHZJRUoxYVd4MExXbHVJSEJ5YjNCbGNuUnBaWE1nZEdoaGRDQmlaV3h2Ym1jZ2IyNGdkR2hsSUdWc1pXMWxiblJjYmlBZ0lDQjBlWEJsT2lCMGVYQmxMRnh1SUNBZ0lHdGxlVG9nYTJWNUxGeHVJQ0FnSUhKbFpqb2djbVZtTEZ4dUlDQWdJSEJ5YjNCek9pQndjbTl3Y3l4Y2JseHVJQ0FnSUM4dklGSmxZMjl5WkNCMGFHVWdZMjl0Y0c5dVpXNTBJSEpsYzNCdmJuTnBZbXhsSUdadmNpQmpjbVZoZEdsdVp5QjBhR2x6SUdWc1pXMWxiblF1WEc0Z0lDQWdYMjkzYm1WeU9pQnZkMjVsY2x4dUlDQjlPMXh1WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnTHk4Z1ZHaGxJSFpoYkdsa1lYUnBiMjRnWm14aFp5QnBjeUJqZFhKeVpXNTBiSGtnYlhWMFlYUnBkbVV1SUZkbElIQjFkQ0JwZENCdmJseHVJQ0FnSUM4dklHRnVJR1Y0ZEdWeWJtRnNJR0poWTJ0cGJtY2djM1J2Y21VZ2MyOGdkR2hoZENCM1pTQmpZVzRnWm5KbFpYcGxJSFJvWlNCM2FHOXNaU0J2WW1wbFkzUXVYRzRnSUNBZ0x5OGdWR2hwY3lCallXNGdZbVVnY21Wd2JHRmpaV1FnZDJsMGFDQmhJRmRsWVd0TllYQWdiMjVqWlNCMGFHVjVJR0Z5WlNCcGJYQnNaVzFsYm5SbFpDQnBibHh1SUNBZ0lDOHZJR052YlcxdmJteDVJSFZ6WldRZ1pHVjJaV3h2Y0cxbGJuUWdaVzUyYVhKdmJtMWxiblJ6TGx4dUlDQWdJR1ZzWlcxbGJuUXVYM04wYjNKbElEMGdlMzA3WEc1Y2JpQWdJQ0F2THlCVWJ5QnRZV3RsSUdOdmJYQmhjbWx1WnlCU1pXRmpkRVZzWlcxbGJuUnpJR1ZoYzJsbGNpQm1iM0lnZEdWemRHbHVaeUJ3ZFhKd2IzTmxjeXdnZDJVZ2JXRnJaVnh1SUNBZ0lDOHZJSFJvWlNCMllXeHBaR0YwYVc5dUlHWnNZV2NnYm05dUxXVnVkVzFsY21GaWJHVWdLSGRvWlhKbElIQnZjM05wWW14bExDQjNhR2xqYUNCemFHOTFiR1JjYmlBZ0lDQXZMeUJwYm1Oc2RXUmxJR1YyWlhKNUlHVnVkbWx5YjI1dFpXNTBJSGRsSUhKMWJpQjBaWE4wY3lCcGJpa3NJSE52SUhSb1pTQjBaWE4wSUdaeVlXMWxkMjl5YTF4dUlDQWdJQzh2SUdsbmJtOXlaWE1nYVhRdVhHNGdJQ0FnYVdZZ0tHTmhia1JsWm1sdVpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWld4bGJXVnVkQzVmYzNSdmNtVXNJQ2QyWVd4cFpHRjBaV1FuTENCN1hHNGdJQ0FnSUNBZ0lHTnZibVpwWjNWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJR1Z1ZFcxbGNtRmliR1U2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0IzY21sMFlXSnNaVG9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdkbUZzZFdVNklHWmhiSE5sWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUM4dklITmxiR1lnWVc1a0lITnZkWEpqWlNCaGNtVWdSRVZXSUc5dWJIa2djSEp2Y0dWeWRHbGxjeTVjYmlBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNobGJHVnRaVzUwTENBblgzTmxiR1luTENCN1hHNGdJQ0FnSUNBZ0lHTnZibVpwWjNWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJR1Z1ZFcxbGNtRmliR1U2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0IzY21sMFlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJSFpoYkhWbE9pQnpaV3htWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUM4dklGUjNieUJsYkdWdFpXNTBjeUJqY21WaGRHVmtJR2x1SUhSM2J5QmthV1ptWlhKbGJuUWdjR3hoWTJWeklITm9iM1ZzWkNCaVpTQmpiMjV6YVdSbGNtVmtYRzRnSUNBZ0lDQXZMeUJsY1hWaGJDQm1iM0lnZEdWemRHbHVaeUJ3ZFhKd2IzTmxjeUJoYm1RZ2RHaGxjbVZtYjNKbElIZGxJR2hwWkdVZ2FYUWdabkp2YlNCbGJuVnRaWEpoZEdsdmJpNWNiaUFnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hsYkdWdFpXNTBMQ0FuWDNOdmRYSmpaU2NzSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVabWxuZFhKaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJSGR5YVhSaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdkbUZzZFdVNklITnZkWEpqWlZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR1ZzWlcxbGJuUXVYM04wYjNKbExuWmhiR2xrWVhSbFpDQTlJR1poYkhObE8xeHVJQ0FnSUNBZ1pXeGxiV1Z1ZEM1ZmMyVnNaaUE5SUhObGJHWTdYRzRnSUNBZ0lDQmxiR1Z0Wlc1MExsOXpiM1Z5WTJVZ1BTQnpiM1Z5WTJVN1hHNGdJQ0FnZlZ4dUlDQWdJRTlpYW1WamRDNW1jbVZsZW1Vb1pXeGxiV1Z1ZEM1d2NtOXdjeWs3WEc0Z0lDQWdUMkpxWldOMExtWnlaV1Y2WlNobGJHVnRaVzUwS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCbGJHVnRaVzUwTzF4dWZUdGNibHh1VW1WaFkzUkZiR1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFnUFNCbWRXNWpkR2x2YmlBb2RIbHdaU3dnWTI5dVptbG5MQ0JqYUdsc1pISmxiaWtnZTF4dUlDQjJZWElnY0hKdmNFNWhiV1U3WEc1Y2JpQWdMeThnVW1WelpYSjJaV1FnYm1GdFpYTWdZWEpsSUdWNGRISmhZM1JsWkZ4dUlDQjJZWElnY0hKdmNITWdQU0I3ZlR0Y2JseHVJQ0IyWVhJZ2EyVjVJRDBnYm5Wc2JEdGNiaUFnZG1GeUlISmxaaUE5SUc1MWJHdzdYRzRnSUhaaGNpQnpaV3htSUQwZ2JuVnNiRHRjYmlBZ2RtRnlJSE52ZFhKalpTQTlJRzUxYkd3N1hHNWNiaUFnYVdZZ0tHTnZibVpwWnlBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WbUlEMGdZMjl1Wm1sbkxuSmxaaUE5UFQwZ2RXNWtaV1pwYm1Wa0lEOGdiblZzYkNBNklHTnZibVpwWnk1eVpXWTdYRzRnSUNBZ2EyVjVJRDBnWTI5dVptbG5MbXRsZVNBOVBUMGdkVzVrWldacGJtVmtJRDhnYm5Wc2JDQTZJQ2NuSUNzZ1kyOXVabWxuTG10bGVUdGNiaUFnSUNCelpXeG1JRDBnWTI5dVptbG5MbDlmYzJWc1ppQTlQVDBnZFc1a1pXWnBibVZrSUQ4Z2JuVnNiQ0E2SUdOdmJtWnBaeTVmWDNObGJHWTdYRzRnSUNBZ2MyOTFjbU5sSUQwZ1kyOXVabWxuTGw5ZmMyOTFjbU5sSUQwOVBTQjFibVJsWm1sdVpXUWdQeUJ1ZFd4c0lEb2dZMjl1Wm1sbkxsOWZjMjkxY21ObE8xeHVJQ0FnSUM4dklGSmxiV0ZwYm1sdVp5QndjbTl3WlhKMGFXVnpJR0Z5WlNCaFpHUmxaQ0IwYnlCaElHNWxkeUJ3Y205d2N5QnZZbXBsWTNSY2JpQWdJQ0JtYjNJZ0tIQnliM0JPWVcxbElHbHVJR052Ym1acFp5a2dlMXh1SUNBZ0lDQWdhV1lnS0dOdmJtWnBaeTVvWVhOUGQyNVFjbTl3WlhKMGVTaHdjbTl3VG1GdFpTa2dKaVlnSVZKRlUwVlNWa1ZFWDFCU1QxQlRMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0J3Y205d2MxdHdjbTl3VG1GdFpWMGdQU0JqYjI1bWFXZGJjSEp2Y0U1aGJXVmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzh2SUVOb2FXeGtjbVZ1SUdOaGJpQmlaU0J0YjNKbElIUm9ZVzRnYjI1bElHRnlaM1Z0Wlc1MExDQmhibVFnZEdodmMyVWdZWEpsSUhSeVlXNXpabVZ5Y21Wa0lHOXVkRzljYmlBZ0x5OGdkR2hsSUc1bGQyeDVJR0ZzYkc5allYUmxaQ0J3Y205d2N5QnZZbXBsWTNRdVhHNGdJSFpoY2lCamFHbHNaSEpsYmt4bGJtZDBhQ0E5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnTFNBeU8xeHVJQ0JwWmlBb1kyaHBiR1J5Wlc1TVpXNW5kR2dnUFQwOUlERXBJSHRjYmlBZ0lDQndjbTl3Y3k1amFHbHNaSEpsYmlBOUlHTm9hV3hrY21WdU8xeHVJQ0I5SUdWc2MyVWdhV1lnS0dOb2FXeGtjbVZ1VEdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUhaaGNpQmphR2xzWkVGeWNtRjVJRDBnUVhKeVlYa29ZMmhwYkdSeVpXNU1aVzVuZEdncE8xeHVJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1kyaHBiR1J5Wlc1TVpXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMmhwYkdSQmNuSmhlVnRwWFNBOUlHRnlaM1Z0Wlc1MGMxdHBJQ3NnTWwwN1hHNGdJQ0FnZlZ4dUlDQWdJSEJ5YjNCekxtTm9hV3hrY21WdUlEMGdZMmhwYkdSQmNuSmhlVHRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxjMjlzZG1VZ1pHVm1ZWFZzZENCd2NtOXdjMXh1SUNCcFppQW9kSGx3WlNBbUppQjBlWEJsTG1SbFptRjFiSFJRY205d2N5a2dlMXh1SUNBZ0lIWmhjaUJrWldaaGRXeDBVSEp2Y0hNZ1BTQjBlWEJsTG1SbFptRjFiSFJRY205d2N6dGNiaUFnSUNCbWIzSWdLSEJ5YjNCT1lXMWxJR2x1SUdSbFptRjFiSFJRY205d2N5a2dlMXh1SUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ3Y205d2MxdHdjbTl3VG1GdFpWMGdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJSEJ5YjNCelczQnliM0JPWVcxbFhTQTlJR1JsWm1GMWJIUlFjbTl3YzF0d2NtOXdUbUZ0WlYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUZKbFlXTjBSV3hsYldWdWRDaDBlWEJsTENCclpYa3NJSEpsWml3Z2MyVnNaaXdnYzI5MWNtTmxMQ0JTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBMQ0J3Y205d2N5azdYRzU5TzF4dVhHNVNaV0ZqZEVWc1pXMWxiblF1WTNKbFlYUmxSbUZqZEc5eWVTQTlJR1oxYm1OMGFXOXVJQ2gwZVhCbEtTQjdYRzRnSUhaaGNpQm1ZV04wYjNKNUlEMGdVbVZoWTNSRmJHVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUXVZbWx1WkNodWRXeHNMQ0IwZVhCbEtUdGNiaUFnTHk4Z1JYaHdiM05sSUhSb1pTQjBlWEJsSUc5dUlIUm9aU0JtWVdOMGIzSjVJR0Z1WkNCMGFHVWdjSEp2ZEc5MGVYQmxJSE52SUhSb1lYUWdhWFFnWTJGdUlHSmxYRzRnSUM4dklHVmhjMmxzZVNCaFkyTmxjM05sWkNCdmJpQmxiR1Z0Wlc1MGN5NGdSUzVuTGlCZ1BFWnZieUF2UGk1MGVYQmxJRDA5UFNCR2IyOWdMbHh1SUNBdkx5QlVhR2x6SUhOb2IzVnNaQ0J1YjNRZ1ltVWdibUZ0WldRZ1lHTnZibk4wY25WamRHOXlZQ0J6YVc1alpTQjBhR2x6SUcxaGVTQnViM1FnWW1VZ2RHaGxJR1oxYm1OMGFXOXVYRzRnSUM4dklIUm9ZWFFnWTNKbFlYUmxaQ0IwYUdVZ1pXeGxiV1Z1ZEN3Z1lXNWtJR2wwSUcxaGVTQnViM1FnWlhabGJpQmlaU0JoSUdOdmJuTjBjblZqZEc5eUxseHVJQ0F2THlCTVpXZGhZM2tnYUc5dmF5QlVUMFJQT2lCWFlYSnVJR2xtSUhSb2FYTWdhWE1nWVdOalpYTnpaV1JjYmlBZ1ptRmpkRzl5ZVM1MGVYQmxJRDBnZEhsd1pUdGNiaUFnY21WMGRYSnVJR1poWTNSdmNuazdYRzU5TzF4dVhHNVNaV0ZqZEVWc1pXMWxiblF1WTJ4dmJtVkJibVJTWlhCc1lXTmxTMlY1SUQwZ1puVnVZM1JwYjI0Z0tHOXNaRVZzWlcxbGJuUXNJRzVsZDB0bGVTa2dlMXh1SUNCMllYSWdibVYzUld4bGJXVnVkQ0E5SUZKbFlXTjBSV3hsYldWdWRDaHZiR1JGYkdWdFpXNTBMblI1Y0dVc0lHNWxkMHRsZVN3Z2IyeGtSV3hsYldWdWRDNXlaV1lzSUc5c1pFVnNaVzFsYm5RdVgzTmxiR1lzSUc5c1pFVnNaVzFsYm5RdVgzTnZkWEpqWlN3Z2IyeGtSV3hsYldWdWRDNWZiM2R1WlhJc0lHOXNaRVZzWlcxbGJuUXVjSEp2Y0hNcE8xeHVYRzRnSUhKbGRIVnliaUJ1WlhkRmJHVnRaVzUwTzF4dWZUdGNibHh1VW1WaFkzUkZiR1Z0Wlc1MExtTnNiMjVsUVc1a1VtVndiR0ZqWlZCeWIzQnpJRDBnWm5WdVkzUnBiMjRnS0c5c1pFVnNaVzFsYm5Rc0lHNWxkMUJ5YjNCektTQjdYRzRnSUhaaGNpQnVaWGRGYkdWdFpXNTBJRDBnVW1WaFkzUkZiR1Z0Wlc1MEtHOXNaRVZzWlcxbGJuUXVkSGx3WlN3Z2IyeGtSV3hsYldWdWRDNXJaWGtzSUc5c1pFVnNaVzFsYm5RdWNtVm1MQ0J2YkdSRmJHVnRaVzUwTGw5elpXeG1MQ0J2YkdSRmJHVnRaVzUwTGw5emIzVnlZMlVzSUc5c1pFVnNaVzFsYm5RdVgyOTNibVZ5TENCdVpYZFFjbTl3Y3lrN1hHNWNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQXZMeUJKWmlCMGFHVWdhMlY1SUc5dUlIUm9aU0J2Y21sbmFXNWhiQ0JwY3lCMllXeHBaQ3dnZEdobGJpQjBhR1VnWTJ4dmJtVWdhWE1nZG1Gc2FXUmNiaUFnSUNCdVpYZEZiR1Z0Wlc1MExsOXpkRzl5WlM1MllXeHBaR0YwWldRZ1BTQnZiR1JGYkdWdFpXNTBMbDl6ZEc5eVpTNTJZV3hwWkdGMFpXUTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdibVYzUld4bGJXVnVkRHRjYm4wN1hHNWNibEpsWVdOMFJXeGxiV1Z1ZEM1amJHOXVaVVZzWlcxbGJuUWdQU0JtZFc1amRHbHZiaUFvWld4bGJXVnVkQ3dnWTI5dVptbG5MQ0JqYUdsc1pISmxiaWtnZTF4dUlDQjJZWElnY0hKdmNFNWhiV1U3WEc1Y2JpQWdMeThnVDNKcFoybHVZV3dnY0hKdmNITWdZWEpsSUdOdmNHbGxaRnh1SUNCMllYSWdjSEp2Y0hNZ1BTQmhjM05wWjI0b2UzMHNJR1ZzWlcxbGJuUXVjSEp2Y0hNcE8xeHVYRzRnSUM4dklGSmxjMlZ5ZG1Wa0lHNWhiV1Z6SUdGeVpTQmxlSFJ5WVdOMFpXUmNiaUFnZG1GeUlHdGxlU0E5SUdWc1pXMWxiblF1YTJWNU8xeHVJQ0IyWVhJZ2NtVm1JRDBnWld4bGJXVnVkQzV5WldZN1hHNGdJQzh2SUZObGJHWWdhWE1nY0hKbGMyVnlkbVZrSUhOcGJtTmxJSFJvWlNCdmQyNWxjaUJwY3lCd2NtVnpaWEoyWldRdVhHNGdJSFpoY2lCelpXeG1JRDBnWld4bGJXVnVkQzVmYzJWc1pqdGNiaUFnTHk4Z1UyOTFjbU5sSUdseklIQnlaWE5sY25abFpDQnphVzVqWlNCamJHOXVaVVZzWlcxbGJuUWdhWE1nZFc1c2FXdGxiSGtnZEc4Z1ltVWdkR0Z5WjJWMFpXUWdZbmtnWVZ4dUlDQXZMeUIwY21GdWMzQnBiR1Z5TENCaGJtUWdkR2hsSUc5eWFXZHBibUZzSUhOdmRYSmpaU0JwY3lCd2NtOWlZV0pzZVNCaElHSmxkSFJsY2lCcGJtUnBZMkYwYjNJZ2IyWWdkR2hsWEc0Z0lDOHZJSFJ5ZFdVZ2IzZHVaWEl1WEc0Z0lIWmhjaUJ6YjNWeVkyVWdQU0JsYkdWdFpXNTBMbDl6YjNWeVkyVTdYRzVjYmlBZ0x5OGdUM2R1WlhJZ2QybHNiQ0JpWlNCd2NtVnpaWEoyWldRc0lIVnViR1Z6Y3lCeVpXWWdhWE1nYjNabGNuSnBaR1JsYmx4dUlDQjJZWElnYjNkdVpYSWdQU0JsYkdWdFpXNTBMbDl2ZDI1bGNqdGNibHh1SUNCcFppQW9ZMjl1Wm1sbklDRTlJRzUxYkd3cElIdGNiaUFnSUNCcFppQW9ZMjl1Wm1sbkxuSmxaaUFoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQXZMeUJUYVd4bGJuUnNlU0J6ZEdWaGJDQjBhR1VnY21WbUlHWnliMjBnZEdobElIQmhjbVZ1ZEM1Y2JpQWdJQ0FnSUhKbFppQTlJR052Ym1acFp5NXlaV1k3WEc0Z0lDQWdJQ0J2ZDI1bGNpQTlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGpiMjVtYVdjdWEyVjVJQ0U5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lHdGxlU0E5SUNjbklDc2dZMjl1Wm1sbkxtdGxlVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5OGdVbVZ0WVdsdWFXNW5JSEJ5YjNCbGNuUnBaWE1nYjNabGNuSnBaR1VnWlhocGMzUnBibWNnY0hKdmNITmNiaUFnSUNCbWIzSWdLSEJ5YjNCT1lXMWxJR2x1SUdOdmJtWnBaeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1RtRnRaU2tnSmlZZ0lWSkZVMFZTVmtWRVgxQlNUMUJUTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCd2NtOXdjMXR3Y205d1RtRnRaVjBnUFNCamIyNW1hV2RiY0hKdmNFNWhiV1ZkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4dklFTm9hV3hrY21WdUlHTmhiaUJpWlNCdGIzSmxJSFJvWVc0Z2IyNWxJR0Z5WjNWdFpXNTBMQ0JoYm1RZ2RHaHZjMlVnWVhKbElIUnlZVzV6Wm1WeWNtVmtJRzl1ZEc5Y2JpQWdMeThnZEdobElHNWxkMng1SUdGc2JHOWpZWFJsWkNCd2NtOXdjeUJ2WW1wbFkzUXVYRzRnSUhaaGNpQmphR2xzWkhKbGJreGxibWQwYUNBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXlPMXh1SUNCcFppQW9ZMmhwYkdSeVpXNU1aVzVuZEdnZ1BUMDlJREVwSUh0Y2JpQWdJQ0J3Y205d2N5NWphR2xzWkhKbGJpQTlJR05vYVd4a2NtVnVPMXh1SUNCOUlHVnNjMlVnYVdZZ0tHTm9hV3hrY21WdVRHVnVaM1JvSUQ0Z01Ta2dlMXh1SUNBZ0lIWmhjaUJqYUdsc1pFRnljbUY1SUQwZ1FYSnlZWGtvWTJocGJHUnlaVzVNWlc1bmRHZ3BPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dZMmhwYkdSeVpXNU1aVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTJocGJHUkJjbkpoZVZ0cFhTQTlJR0Z5WjNWdFpXNTBjMXRwSUNzZ01sMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhCeWIzQnpMbU5vYVd4a2NtVnVJRDBnWTJocGJHUkJjbkpoZVR0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCU1pXRmpkRVZzWlcxbGJuUW9aV3hsYldWdWRDNTBlWEJsTENCclpYa3NJSEpsWml3Z2MyVnNaaXdnYzI5MWNtTmxMQ0J2ZDI1bGNpd2djSEp2Y0hNcE8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUc5aWFtVmpkRnh1SUNvZ1FISmxkSFZ5YmlCN1ltOXZiR1ZoYm4wZ1ZISjFaU0JwWmlCZ2IySnFaV04wWUNCcGN5QmhJSFpoYkdsa0lHTnZiWEJ2Ym1WdWRDNWNiaUFxSUVCbWFXNWhiRnh1SUNvdlhHNVNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUWdQU0JtZFc1amRHbHZiaUFvYjJKcVpXTjBLU0I3WEc0Z0lISmxkSFZ5YmlCMGVYQmxiMllnYjJKcVpXTjBJRDA5UFNBbmIySnFaV04wSnlBbUppQnZZbXBsWTNRZ0lUMDlJRzUxYkd3Z0ppWWdiMkpxWldOMExpUWtkSGx3Wlc5bUlEMDlQU0JTUlVGRFZGOUZURVZOUlU1VVgxUlpVRVU3WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFJXeGxiV1Z1ZERzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0RWxlbWVudFZhbGlkYXRvclxuICovXG5cbi8qKlxuICogUmVhY3RFbGVtZW50VmFsaWRhdG9yIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgYSBlbGVtZW50IGZhY3RvcnlcbiAqIHdoaWNoIHZhbGlkYXRlcyB0aGUgcHJvcHMgcGFzc2VkIHRvIHRoZSBlbGVtZW50LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlXG4gKiB1c2VkIG9ubHkgaW4gREVWIGFuZCBjb3VsZCBiZSByZXBsYWNlZCBieSBhIHN0YXRpYyB0eXBlIGNoZWNrZXIgZm9yIGxhbmd1YWdlc1xuICogdGhhdCBzdXBwb3J0IGl0LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9ucycpO1xudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcycpO1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpIHtcbiAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogV2FybiBpZiB0aGVyZSdzIG5vIGtleSBleHBsaWNpdGx5IHNldCBvbiBkeW5hbWljIGFycmF5cyBvZiBjaGlsZHJlbiBvclxuICogb2JqZWN0IGtleXMgYXJlIG5vdCB2YWxpZC4gVGhpcyBhbGxvd3MgdXMgdG8ga2VlcCB0cmFjayBvZiBjaGlsZHJlbiBiZXR3ZWVuXG4gKiB1cGRhdGVzLlxuICovXG52YXIgb3duZXJIYXNLZXlVc2VXYXJuaW5nID0ge307XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBFbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG5cbiAgdmFyIGFkZGVuZGEgPSBnZXRBZGRlbmRhRm9yS2V5VXNlKCd1bmlxdWVLZXknLCBlbGVtZW50LCBwYXJlbnRUeXBlKTtcbiAgaWYgKGFkZGVuZGEgPT09IG51bGwpIHtcbiAgICAvLyB3ZSBhbHJlYWR5IHNob3dlZCB0aGUgd2FybmluZ1xuICAgIHJldHVybjtcbiAgfVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0VhY2ggY2hpbGQgaW4gYW4gYXJyYXkgb3IgaXRlcmF0b3Igc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyVzJywgYWRkZW5kYS5wYXJlbnRPck93bmVyIHx8ICcnLCBhZGRlbmRhLmNoaWxkT3duZXIgfHwgJycsIGFkZGVuZGEudXJsIHx8ICcnKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTaGFyZWQgd2FybmluZyBhbmQgbW9uaXRvcmluZyBjb2RlIGZvciB0aGUga2V5IHdhcm5pbmdzLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VUeXBlIEEga2V5IHVzZWQgZm9yIGRlLWR1cGluZyB3YXJuaW5ncy5cbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IENvbXBvbmVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICogQHJldHVybnMgez9vYmplY3R9IEEgc2V0IG9mIGFkZGVuZGEgdG8gdXNlIGluIHRoZSB3YXJuaW5nIG1lc3NhZ2UsIG9yIG51bGxcbiAqIGlmIHRoZSB3YXJuaW5nIGhhcyBhbHJlYWR5IGJlZW4gc2hvd24gYmVmb3JlIChhbmQgc2hvdWxkbid0IGJlIHNob3duIGFnYWluKS5cbiAqL1xuZnVuY3Rpb24gZ2V0QWRkZW5kYUZvcktleVVzZShtZXNzYWdlVHlwZSwgZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcbiAgaWYgKCFhZGRlbmR1bSkge1xuICAgIHZhciBwYXJlbnROYW1lID0gdHlwZW9mIHBhcmVudFR5cGUgPT09ICdzdHJpbmcnID8gcGFyZW50VHlwZSA6IHBhcmVudFR5cGUuZGlzcGxheU5hbWUgfHwgcGFyZW50VHlwZS5uYW1lO1xuICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICBhZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8JyArIHBhcmVudE5hbWUgKyAnPi4nO1xuICAgIH1cbiAgfVxuXG4gIHZhciBtZW1vaXplciA9IG93bmVySGFzS2V5VXNlV2FybmluZ1ttZXNzYWdlVHlwZV0gfHwgKG93bmVySGFzS2V5VXNlV2FybmluZ1ttZXNzYWdlVHlwZV0gPSB7fSk7XG4gIGlmIChtZW1vaXplclthZGRlbmR1bV0pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBtZW1vaXplclthZGRlbmR1bV0gPSB0cnVlO1xuXG4gIHZhciBhZGRlbmRhID0ge1xuICAgIHBhcmVudE9yT3duZXI6IGFkZGVuZHVtLFxuICAgIHVybDogJyBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyxcbiAgICBjaGlsZE93bmVyOiBudWxsXG4gIH07XG5cbiAgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGFcbiAgLy8gcHJvcGVydHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvclxuICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuXG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgYWRkZW5kYS5jaGlsZE93bmVyID0gJyBJdCB3YXMgcGFzc2VkIGEgY2hpbGQgZnJvbSAnICsgZWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nO1xuICB9XG5cbiAgcmV0dXJuIGFkZGVuZGE7XG59XG5cbi8qKlxuICogRW5zdXJlIHRoYXQgZXZlcnkgZWxlbWVudCBlaXRoZXIgaXMgcGFzc2VkIGluIGEgc3RhdGljIGxvY2F0aW9uLCBpbiBhblxuICogYXJyYXkgd2l0aCBhbiBleHBsaWNpdCBrZXlzIHByb3BlcnR5IGRlZmluZWQsIG9yIGluIGFuIG9iamVjdCBsaXRlcmFsXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIG5vZGUncyBwYXJlbnQncyB0eXBlLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XG4gICAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgLy8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi5cbiAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUpIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XG4gICAgLy8gRW50cnkgaXRlcmF0b3JzIHByb3ZpZGUgaW1wbGljaXQga2V5cy5cbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IG5vZGUuZW50cmllcykge1xuICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7XG4gICAgICAgIHZhciBzdGVwO1xuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgcHJvcHMgYXJlIHZhbGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wVHlwZXMgTWFwIG9mIHByb3AgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXMoY29tcG9uZW50TmFtZSwgcHJvcFR5cGVzLCBwcm9wcywgbG9jYXRpb24pIHtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7XG4gICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgIHZhciBlcnJvcjtcbiAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAhKHR5cGVvZiBwcm9wVHlwZXNbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCBwcm9wTmFtZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICAgICBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbik7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgcHJvcE5hbWUsIHR5cGVvZiBlcnJvcikgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpIHtcbiAgdmFyIGNvbXBvbmVudENsYXNzID0gZWxlbWVudC50eXBlO1xuICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuYW1lID0gY29tcG9uZW50Q2xhc3MuZGlzcGxheU5hbWUgfHwgY29tcG9uZW50Q2xhc3MubmFtZTtcbiAgaWYgKGNvbXBvbmVudENsYXNzLnByb3BUeXBlcykge1xuICAgIGNoZWNrUHJvcFR5cGVzKG5hbWUsIGNvbXBvbmVudENsYXNzLnByb3BUeXBlcywgZWxlbWVudC5wcm9wcywgUmVhY3RQcm9wVHlwZUxvY2F0aW9ucy5wcm9wKTtcbiAgfVxuICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFjdC5jcmVhdGVDbGFzcyAnICsgJ2RlZmluaXRpb25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgYGRlZmF1bHRQcm9wc2AgaW5zdGVhZC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG52YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0ge1xuXG4gIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uICh0eXBlLCBwcm9wcywgY2hpbGRyZW4pIHtcbiAgICB2YXIgdmFsaWRUeXBlID0gdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gICAgLy8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh2YWxpZFR5cGUsICdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIHNob3VsZCBub3QgYmUgbnVsbCwgdW5kZWZpbmVkLCBib29sZWFuLCBvciAnICsgJ251bWJlci4gSXQgc2hvdWxkIGJlIGEgc3RyaW5nIChmb3IgRE9NIGVsZW1lbnRzKSBvciBhIFJlYWN0Q2xhc3MgJyArICcoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKS4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBlbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIC8vIFNraXAga2V5IHdhcm5pbmcgaWYgdGhlIHR5cGUgaXNuJ3QgdmFsaWQgc2luY2Ugb3VyIGtleSB2YWxpZGF0aW9uIGxvZ2ljXG4gICAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxuICAgIC8vIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9uIGJlaGF2aW9yIHRvIGRpZmZlciBiZXR3ZWVuIGRldiBhbmQgcHJvZC5cbiAgICAvLyAoUmVuZGVyaW5nIHdpbGwgdGhyb3cgd2l0aCBhIGhlbHBmdWwgbWVzc2FnZSBhbmQgYXMgc29vbiBhcyB0aGUgdHlwZSBpc1xuICAgIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcbiAgICBpZiAodmFsaWRUeXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0sXG5cbiAgY3JlYXRlRmFjdG9yeTogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgdmFsaWRhdGVkRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG4gICAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gICAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsaWRhdGVkRmFjdG9yeSwgJ3R5cGUnLCB7XG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhY3RvcnkudHlwZSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdGhlIGNsYXNzIGRpcmVjdGx5ICcgKyAnYmVmb3JlIHBhc3NpbmcgaXQgdG8gY3JlYXRlRmFjdG9yeS4nKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAndHlwZScsIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgLy8gSUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3BlcnR5IChlczUtc2hpbS9zaGFtIHRvbylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVkRmFjdG9yeTtcbiAgfSxcblxuICBjbG9uZUVsZW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50LCBwcm9wcywgY2hpbGRyZW4pIHtcbiAgICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCBuZXdFbGVtZW50LnR5cGUpO1xuICAgIH1cbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhuZXdFbGVtZW50KTtcbiAgICByZXR1cm4gbmV3RWxlbWVudDtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudFZhbGlkYXRvcjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSRmJHVnRaVzUwVm1Gc2FXUmhkRzl5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNKY2JpQXFMMXh1WEc0dktpcGNiaUFxSUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpQndjbTkyYVdSbGN5QmhJSGR5WVhCd1pYSWdZWEp2ZFc1a0lHRWdaV3hsYldWdWRDQm1ZV04wYjNKNVhHNGdLaUIzYUdsamFDQjJZV3hwWkdGMFpYTWdkR2hsSUhCeWIzQnpJSEJoYzNObFpDQjBieUIwYUdVZ1pXeGxiV1Z1ZEM0Z1ZHaHBjeUJwY3lCcGJuUmxibVJsWkNCMGJ5QmlaVnh1SUNvZ2RYTmxaQ0J2Ym14NUlHbHVJRVJGVmlCaGJtUWdZMjkxYkdRZ1ltVWdjbVZ3YkdGalpXUWdZbmtnWVNCemRHRjBhV01nZEhsd1pTQmphR1ZqYTJWeUlHWnZjaUJzWVc1bmRXRm5aWE5jYmlBcUlIUm9ZWFFnYzNWd2NHOXlkQ0JwZEM1Y2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wUld4bGJXVnVkQ2NwTzF4dWRtRnlJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Ym5NbktUdGNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTW5LVHRjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JseHVkbUZ5SUdkbGRFbDBaWEpoZEc5eVJtNGdQU0J5WlhGMWFYSmxLQ2N1TDJkbGRFbDBaWEpoZEc5eVJtNG5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNW1kVzVqZEdsdmJpQm5aWFJFWldOc1lYSmhkR2x2YmtWeWNtOXlRV1JrWlc1a2RXMG9LU0I3WEc0Z0lHbG1JQ2hTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBLU0I3WEc0Z0lDQWdkbUZ5SUc1aGJXVWdQU0JTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQnBaaUFvYm1GdFpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY2dRMmhsWTJzZ2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRZ2IyWWdZQ2NnS3lCdVlXMWxJQ3NnSjJBdUp6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUNjbk8xeHVmVnh1WEc0dktpcGNiaUFxSUZkaGNtNGdhV1lnZEdobGNtVW5jeUJ1YnlCclpYa2daWGh3YkdsamFYUnNlU0J6WlhRZ2IyNGdaSGx1WVcxcFl5QmhjbkpoZVhNZ2IyWWdZMmhwYkdSeVpXNGdiM0pjYmlBcUlHOWlhbVZqZENCclpYbHpJR0Z5WlNCdWIzUWdkbUZzYVdRdUlGUm9hWE1nWVd4c2IzZHpJSFZ6SUhSdklHdGxaWEFnZEhKaFkyc2diMllnWTJocGJHUnlaVzRnWW1WMGQyVmxibHh1SUNvZ2RYQmtZWFJsY3k1Y2JpQXFMMXh1ZG1GeUlHOTNibVZ5U0dGelMyVjVWWE5sVjJGeWJtbHVaeUE5SUh0OU8xeHVYRzUyWVhJZ2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WeklEMGdlMzA3WEc1Y2JpOHFLbHh1SUNvZ1YyRnliaUJwWmlCMGFHVWdaV3hsYldWdWRDQmtiMlZ6YmlkMElHaGhkbVVnWVc0Z1pYaHdiR2xqYVhRZ2EyVjVJR0Z6YzJsbmJtVmtJSFJ2SUdsMExseHVJQ29nVkdocGN5QmxiR1Z0Wlc1MElHbHpJR2x1SUdGdUlHRnljbUY1TGlCVWFHVWdZWEp5WVhrZ1kyOTFiR1FnWjNKdmR5QmhibVFnYzJoeWFXNXJJRzl5SUdKbFhHNGdLaUJ5Wlc5eVpHVnlaV1F1SUVGc2JDQmphR2xzWkhKbGJpQjBhR0YwSUdoaGRtVnVKM1FnWVd4eVpXRmtlU0JpWldWdUlIWmhiR2xrWVhSbFpDQmhjbVVnY21WeGRXbHlaV1FnZEc5Y2JpQXFJR2hoZG1VZ1lTQmNJbXRsZVZ3aUlIQnliM0JsY25SNUlHRnpjMmxuYm1Wa0lIUnZJR2wwTGx4dUlDcGNiaUFxSUVCcGJuUmxjbTVoYkZ4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVWc1pXMWxiblI5SUdWc1pXMWxiblFnUld4bGJXVnVkQ0IwYUdGMElISmxjWFZwY21WeklHRWdhMlY1TGx4dUlDb2dRSEJoY21GdElIc3FmU0J3WVhKbGJuUlVlWEJsSUdWc1pXMWxiblFuY3lCd1lYSmxiblFuY3lCMGVYQmxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJZV3hwWkdGMFpVVjRjR3hwWTJsMFMyVjVLR1ZzWlcxbGJuUXNJSEJoY21WdWRGUjVjR1VwSUh0Y2JpQWdhV1lnS0NGbGJHVnRaVzUwTGw5emRHOXlaU0I4ZkNCbGJHVnRaVzUwTGw5emRHOXlaUzUyWVd4cFpHRjBaV1FnZkh3Z1pXeGxiV1Z1ZEM1clpYa2dJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCbGJHVnRaVzUwTGw5emRHOXlaUzUyWVd4cFpHRjBaV1FnUFNCMGNuVmxPMXh1WEc0Z0lIWmhjaUJoWkdSbGJtUmhJRDBnWjJWMFFXUmtaVzVrWVVadmNrdGxlVlZ6WlNnbmRXNXBjWFZsUzJWNUp5d2daV3hsYldWdWRDd2djR0Z5Wlc1MFZIbHdaU2s3WEc0Z0lHbG1JQ2hoWkdSbGJtUmhJRDA5UFNCdWRXeHNLU0I3WEc0Z0lDQWdMeThnZDJVZ1lXeHlaV0ZrZVNCemFHOTNaV1FnZEdobElIZGhjbTVwYm1kY2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JpQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2RGWVdOb0lHTm9hV3hrSUdsdUlHRnVJR0Z5Y21GNUlHOXlJR2wwWlhKaGRHOXlJSE5vYjNWc1pDQm9ZWFpsSUdFZ2RXNXBjWFZsSUZ3aWEyVjVYQ0lnY0hKdmNDNG5JQ3NnSnlWekpYTWxjeWNzSUdGa1pHVnVaR0V1Y0dGeVpXNTBUM0pQZDI1bGNpQjhmQ0FuSnl3Z1lXUmtaVzVrWVM1amFHbHNaRTkzYm1WeUlIeDhJQ2NuTENCaFpHUmxibVJoTG5WeWJDQjhmQ0FuSnlrZ09pQjFibVJsWm1sdVpXUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UyaGhjbVZrSUhkaGNtNXBibWNnWVc1a0lHMXZibWwwYjNKcGJtY2dZMjlrWlNCbWIzSWdkR2hsSUd0bGVTQjNZWEp1YVc1bmN5NWNiaUFxWEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhOellXZGxWSGx3WlNCQklHdGxlU0IxYzJWa0lHWnZjaUJrWlMxa2RYQnBibWNnZDJGeWJtbHVaM011WEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wUld4bGJXVnVkSDBnWld4bGJXVnVkQ0JEYjIxd2IyNWxiblFnZEdoaGRDQnlaWEYxYVhKbGN5QmhJR3RsZVM1Y2JpQXFJRUJ3WVhKaGJTQjdLbjBnY0dGeVpXNTBWSGx3WlNCbGJHVnRaVzUwSjNNZ2NHRnlaVzUwSjNNZ2RIbHdaUzVjYmlBcUlFQnlaWFIxY201eklIcy9iMkpxWldOMGZTQkJJSE5sZENCdlppQmhaR1JsYm1SaElIUnZJSFZ6WlNCcGJpQjBhR1VnZDJGeWJtbHVaeUJ0WlhOellXZGxMQ0J2Y2lCdWRXeHNYRzRnS2lCcFppQjBhR1VnZDJGeWJtbHVaeUJvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJSE5vYjNkdUlHSmxabTl5WlNBb1lXNWtJSE5vYjNWc1pHNG5kQ0JpWlNCemFHOTNiaUJoWjJGcGJpa3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRUZrWkdWdVpHRkdiM0pMWlhsVmMyVW9iV1Z6YzJGblpWUjVjR1VzSUdWc1pXMWxiblFzSUhCaGNtVnVkRlI1Y0dVcElIdGNiaUFnZG1GeUlHRmtaR1Z1WkhWdElEMGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLQ2s3WEc0Z0lHbG1JQ2doWVdSa1pXNWtkVzBwSUh0Y2JpQWdJQ0IyWVhJZ2NHRnlaVzUwVG1GdFpTQTlJSFI1Y0dWdlppQndZWEpsYm5SVWVYQmxJRDA5UFNBbmMzUnlhVzVuSnlBL0lIQmhjbVZ1ZEZSNWNHVWdPaUJ3WVhKbGJuUlVlWEJsTG1ScGMzQnNZWGxPWVcxbElIeDhJSEJoY21WdWRGUjVjR1V1Ym1GdFpUdGNiaUFnSUNCcFppQW9jR0Z5Wlc1MFRtRnRaU2tnZTF4dUlDQWdJQ0FnWVdSa1pXNWtkVzBnUFNBbklFTm9aV05ySUhSb1pTQjBiM0F0YkdWMlpXd2djbVZ1WkdWeUlHTmhiR3dnZFhOcGJtY2dQQ2NnS3lCd1lYSmxiblJPWVcxbElDc2dKejR1Snp0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCMllYSWdiV1Z0YjJsNlpYSWdQU0J2ZDI1bGNraGhjMHRsZVZWelpWZGhjbTVwYm1kYmJXVnpjMkZuWlZSNWNHVmRJSHg4SUNodmQyNWxja2hoYzB0bGVWVnpaVmRoY201cGJtZGJiV1Z6YzJGblpWUjVjR1ZkSUQwZ2UzMHBPMXh1SUNCcFppQW9iV1Z0YjJsNlpYSmJZV1JrWlc1a2RXMWRLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNiaUFnYldWdGIybDZaWEpiWVdSa1pXNWtkVzFkSUQwZ2RISjFaVHRjYmx4dUlDQjJZWElnWVdSa1pXNWtZU0E5SUh0Y2JpQWdJQ0J3WVhKbGJuUlBjazkzYm1WeU9pQmhaR1JsYm1SMWJTeGNiaUFnSUNCMWNtdzZJQ2NnVTJWbElHaDBkSEJ6T2k4dlptSXViV1V2Y21WaFkzUXRkMkZ5Ym1sdVp5MXJaWGx6SUdadmNpQnRiM0psSUdsdVptOXliV0YwYVc5dUxpY3NYRzRnSUNBZ1kyaHBiR1JQZDI1bGNqb2diblZzYkZ4dUlDQjlPMXh1WEc0Z0lDOHZJRlZ6ZFdGc2JIa2dkR2hsSUdOMWNuSmxiblFnYjNkdVpYSWdhWE1nZEdobElHOW1abVZ1WkdWeUxDQmlkWFFnYVdZZ2FYUWdZV05qWlhCMGN5QmphR2xzWkhKbGJpQmhjeUJoWEc0Z0lDOHZJSEJ5YjNCbGNuUjVMQ0JwZENCdFlYa2dZbVVnZEdobElHTnlaV0YwYjNJZ2IyWWdkR2hsSUdOb2FXeGtJSFJvWVhRbmN5QnlaWE53YjI1emFXSnNaU0JtYjNKY2JpQWdMeThnWVhOemFXZHVhVzVuSUdsMElHRWdhMlY1TGx4dUlDQnBaaUFvWld4bGJXVnVkQ0FtSmlCbGJHVnRaVzUwTGw5dmQyNWxjaUFtSmlCbGJHVnRaVzUwTGw5dmQyNWxjaUFoUFQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZENrZ2UxeHVJQ0FnSUM4dklFZHBkbVVnZEdobElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUc5eWFXZHBibUZzYkhrZ1kzSmxZWFJsWkNCMGFHbHpJR05vYVd4a0xseHVJQ0FnSUdGa1pHVnVaR0V1WTJocGJHUlBkMjVsY2lBOUlDY2dTWFFnZDJGeklIQmhjM05sWkNCaElHTm9hV3hrSUdaeWIyMGdKeUFySUdWc1pXMWxiblF1WDI5M2JtVnlMbWRsZEU1aGJXVW9LU0FySUNjdUp6dGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQmhaR1JsYm1SaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWMzVnlaU0IwYUdGMElHVjJaWEo1SUdWc1pXMWxiblFnWldsMGFHVnlJR2x6SUhCaGMzTmxaQ0JwYmlCaElITjBZWFJwWXlCc2IyTmhkR2x2Yml3Z2FXNGdZVzVjYmlBcUlHRnljbUY1SUhkcGRHZ2dZVzRnWlhod2JHbGphWFFnYTJWNWN5QndjbTl3WlhKMGVTQmtaV1pwYm1Wa0xDQnZjaUJwYmlCaGJpQnZZbXBsWTNRZ2JHbDBaWEpoYkZ4dUlDb2dkMmwwYUNCMllXeHBaQ0JyWlhrZ2NISnZjR1Z5ZEhrdVhHNGdLbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFRtOWtaWDBnYm05a1pTQlRkR0YwYVdOaGJHeDVJSEJoYzNObFpDQmphR2xzWkNCdlppQmhibmtnZEhsd1pTNWNiaUFxSUVCd1lYSmhiU0I3S24wZ2NHRnlaVzUwVkhsd1pTQnViMlJsSjNNZ2NHRnlaVzUwSjNNZ2RIbHdaUzVjYmlBcUwxeHVablZ1WTNScGIyNGdkbUZzYVdSaGRHVkRhR2xzWkV0bGVYTW9ibTlrWlN3Z2NHRnlaVzUwVkhsd1pTa2dlMXh1SUNCcFppQW9kSGx3Wlc5bUlHNXZaR1VnSVQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzRnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0c1dlpHVXBLU0I3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J1YjJSbExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyaHBiR1FnUFNCdWIyUmxXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaGphR2xzWkNrcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkZlSEJzYVdOcGRFdGxlU2hqYUdsc1pDd2djR0Z5Wlc1MFZIbHdaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaHViMlJsS1NrZ2UxeHVJQ0FnSUM4dklGUm9hWE1nWld4bGJXVnVkQ0IzWVhNZ2NHRnpjMlZrSUdsdUlHRWdkbUZzYVdRZ2JHOWpZWFJwYjI0dVhHNGdJQ0FnYVdZZ0tHNXZaR1V1WDNOMGIzSmxLU0I3WEc0Z0lDQWdJQ0J1YjJSbExsOXpkRzl5WlM1MllXeHBaR0YwWldRZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUdsbUlDaHViMlJsS1NCN1hHNGdJQ0FnZG1GeUlHbDBaWEpoZEc5eVJtNGdQU0JuWlhSSmRHVnlZWFJ2Y2tadUtHNXZaR1VwTzF4dUlDQWdJQzh2SUVWdWRISjVJR2wwWlhKaGRHOXljeUJ3Y205MmFXUmxJR2x0Y0d4cFkybDBJR3RsZVhNdVhHNGdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBZ0lDQWdJR2xtSUNocGRHVnlZWFJ2Y2tadUlDRTlQU0J1YjJSbExtVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdsMFpYSmhkRzl5SUQwZ2FYUmxjbUYwYjNKR2JpNWpZV3hzS0c1dlpHVXBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2MzUmxjRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ0VvYzNSbGNDQTlJR2wwWlhKaGRHOXlMbTVsZUhRb0tTa3VaRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoU1pXRmpkRVZzWlcxbGJuUXVhWE5XWVd4cFpFVnNaVzFsYm5Rb2MzUmxjQzUyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhiR2xrWVhSbFJYaHdiR2xqYVhSTFpYa29jM1JsY0M1MllXeDFaU3dnY0dGeVpXNTBWSGx3WlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUVhOelpYSjBJSFJvWVhRZ2RHaGxJSEJ5YjNCeklHRnlaU0IyWVd4cFpGeHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCamIyMXdiMjVsYm5ST1lXMWxJRTVoYldVZ2IyWWdkR2hsSUdOdmJYQnZibVZ1ZENCbWIzSWdaWEp5YjNJZ2JXVnpjMkZuWlhNdVhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjSEp2Y0ZSNWNHVnpJRTFoY0NCdlppQndjbTl3SUc1aGJXVWdkRzhnWVNCU1pXRmpkRkJ5YjNCVWVYQmxYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnY0hKdmNITmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JzYjJOaGRHbHZiaUJsTG1jdUlGd2ljSEp2Y0Z3aUxDQmNJbU52Ym5SbGVIUmNJaXdnWENKamFHbHNaQ0JqYjI1MFpYaDBYQ0pjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOb1pXTnJVSEp2Y0ZSNWNHVnpLR052YlhCdmJtVnVkRTVoYldVc0lIQnliM0JVZVhCbGN5d2djSEp2Y0hNc0lHeHZZMkYwYVc5dUtTQjdYRzRnSUdadmNpQW9kbUZ5SUhCeWIzQk9ZVzFsSUdsdUlIQnliM0JVZVhCbGN5a2dlMXh1SUNBZ0lHbG1JQ2h3Y205d1ZIbHdaWE11YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1pYSnliM0k3WEc0Z0lDQWdJQ0F2THlCUWNtOXdJSFI1Y0dVZ2RtRnNhV1JoZEdsdmJpQnRZWGtnZEdoeWIzY3VJRWx1SUdOaGMyVWdkR2hsZVNCa2J5d2dkMlVnWkc5dUozUWdkMkZ1ZENCMGIxeHVJQ0FnSUNBZ0x5OGdabUZwYkNCMGFHVWdjbVZ1WkdWeUlIQm9ZWE5sSUhkb1pYSmxJR2wwSUdScFpHNG5kQ0JtWVdsc0lHSmxabTl5WlM0Z1UyOGdkMlVnYkc5bklHbDBMbHh1SUNBZ0lDQWdMeThnUVdaMFpYSWdkR2hsYzJVZ2FHRjJaU0JpWldWdUlHTnNaV0Z1WldRZ2RYQXNJSGRsSjJ4c0lHeGxkQ0IwYUdWdElIUm9jbTkzTGx4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdMeThnVkdocGN5QnBjeUJwYm5SbGJuUnBiMjVoYkd4NUlHRnVJR2x1ZG1GeWFXRnVkQ0IwYUdGMElHZGxkSE1nWTJGMVoyaDBMaUJKZENkeklIUm9aU0J6WVcxbFhHNGdJQ0FnSUNBZ0lDOHZJR0psYUdGMmFXOXlJR0Z6SUhkcGRHaHZkWFFnZEdocGN5QnpkR0YwWlcxbGJuUWdaWGhqWlhCMElIZHBkR2dnWVNCaVpYUjBaWElnYldWemMyRm5aUzVjYmlBZ0lDQWdJQ0FnSVNoMGVYQmxiMllnY0hKdmNGUjVjR1Z6VzNCeWIzQk9ZVzFsWFNBOVBUMGdKMloxYm1OMGFXOXVKeWtnUHlCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdhVzUyWVhKcFlXNTBLR1poYkhObExDQW5KWE02SUNWeklIUjVjR1VnWUNWellDQnBjeUJwYm5aaGJHbGtPeUJwZENCdGRYTjBJR0psSUdFZ1puVnVZM1JwYjI0c0lIVnpkV0ZzYkhrZ1puSnZiU0FuSUNzZ0oxSmxZV04wTGxCeWIzQlVlWEJsY3k0bkxDQmpiMjF3YjI1bGJuUk9ZVzFsSUh4OElDZFNaV0ZqZENCamJHRnpjeWNzSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6VzJ4dlkyRjBhVzl1WFN3Z2NISnZjRTVoYldVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnWlhKeWIzSWdQU0J3Y205d1ZIbHdaWE5iY0hKdmNFNWhiV1ZkS0hCeWIzQnpMQ0J3Y205d1RtRnRaU3dnWTI5dGNHOXVaVzUwVG1GdFpTd2diRzlqWVhScGIyNHBPMXh1SUNBZ0lDQWdmU0JqWVhSamFDQW9aWGdwSUh0Y2JpQWdJQ0FnSUNBZ1pYSnliM0lnUFNCbGVEdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LQ0ZsY25KdmNpQjhmQ0JsY25KdmNpQnBibk4wWVc1alpXOW1JRVZ5Y205eUxDQW5KWE02SUhSNWNHVWdjM0JsWTJsbWFXTmhkR2x2YmlCdlppQWxjeUJnSlhOZ0lHbHpJR2x1ZG1Gc2FXUTdJSFJvWlNCMGVYQmxJR05vWldOclpYSWdKeUFySUNkbWRXNWpkR2x2YmlCdGRYTjBJSEpsZEhWeWJpQmdiblZzYkdBZ2IzSWdZVzRnWUVWeWNtOXlZQ0JpZFhRZ2NtVjBkWEp1WldRZ1lTQWxjeTRnSnlBcklDZFpiM1VnYldGNUlHaGhkbVVnWm05eVoyOTBkR1Z1SUhSdklIQmhjM01nWVc0Z1lYSm5kVzFsYm5RZ2RHOGdkR2hsSUhSNWNHVWdZMmhsWTJ0bGNpQW5JQ3NnSjJOeVpXRjBiM0lnS0dGeWNtRjVUMllzSUdsdWMzUmhibU5sVDJZc0lHOWlhbVZqZEU5bUxDQnZibVZQWml3Z2IyNWxUMlpVZVhCbExDQmhibVFnSnlBcklDZHphR0Z3WlNCaGJHd2djbVZ4ZFdseVpTQmhiaUJoY21kMWJXVnVkQ2t1Snl3Z1kyOXRjRzl1Wlc1MFRtRnRaU0I4ZkNBblVtVmhZM1FnWTJ4aGMzTW5MQ0JTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjMXRzYjJOaGRHbHZibDBzSUhCeWIzQk9ZVzFsTENCMGVYQmxiMllnWlhKeWIzSXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnYVdZZ0tHVnljbTl5SUdsdWMzUmhibU5sYjJZZ1JYSnliM0lnSmlZZ0lTaGxjbkp2Y2k1dFpYTnpZV2RsSUdsdUlHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGN5a3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1QyNXNlU0J0YjI1cGRHOXlJSFJvYVhNZ1ptRnBiSFZ5WlNCdmJtTmxJR0psWTJGMWMyVWdkR2hsY21VZ2RHVnVaSE1nZEc4Z1ltVWdZU0JzYjNRZ2IyWWdkR2hsWEc0Z0lDQWdJQ0FnSUM4dklITmhiV1VnWlhKeWIzSXVYRzRnSUNBZ0lDQWdJR3h2WjJkbFpGUjVjR1ZHWVdsc2RYSmxjMXRsY25KdmNpNXRaWE56WVdkbFhTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUdGa1pHVnVaSFZ0SUQwZ1oyVjBSR1ZqYkdGeVlYUnBiMjVGY25KdmNrRmtaR1Z1WkhWdEtDazdYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuUm1GcGJHVmtJSEJ5YjNCVWVYQmxPaUFsY3lWekp5d2daWEp5YjNJdWJXVnpjMkZuWlN3Z1lXUmtaVzVrZFcwcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRWRwZG1WdUlHRnVJR1ZzWlcxbGJuUXNJSFpoYkdsa1lYUmxJSFJvWVhRZ2FYUnpJSEJ5YjNCeklHWnZiR3h2ZHlCMGFHVWdjSEp2Y0ZSNWNHVnpJR1JsWm1sdWFYUnBiMjRzWEc0Z0tpQndjbTkyYVdSbFpDQmllU0IwYUdVZ2RIbHdaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFJXeGxiV1Z1ZEgwZ1pXeGxiV1Z1ZEZ4dUlDb3ZYRzVtZFc1amRHbHZiaUIyWVd4cFpHRjBaVkJ5YjNCVWVYQmxjeWhsYkdWdFpXNTBLU0I3WEc0Z0lIWmhjaUJqYjIxd2IyNWxiblJEYkdGemN5QTlJR1ZzWlcxbGJuUXVkSGx3WlR0Y2JpQWdhV1lnS0hSNWNHVnZaaUJqYjIxd2IyNWxiblJEYkdGemN5QWhQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVJQ0IyWVhJZ2JtRnRaU0E5SUdOdmJYQnZibVZ1ZEVOc1lYTnpMbVJwYzNCc1lYbE9ZVzFsSUh4OElHTnZiWEJ2Ym1WdWRFTnNZWE56TG01aGJXVTdYRzRnSUdsbUlDaGpiMjF3YjI1bGJuUkRiR0Z6Y3k1d2NtOXdWSGx3WlhNcElIdGNiaUFnSUNCamFHVmphMUJ5YjNCVWVYQmxjeWh1WVcxbExDQmpiMjF3YjI1bGJuUkRiR0Z6Y3k1d2NtOXdWSGx3WlhNc0lHVnNaVzFsYm5RdWNISnZjSE1zSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJuTXVjSEp2Y0NrN1hHNGdJSDFjYmlBZ2FXWWdLSFI1Y0dWdlppQmpiMjF3YjI1bGJuUkRiR0Z6Y3k1blpYUkVaV1poZFd4MFVISnZjSE1nUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhqYjIxd2IyNWxiblJEYkdGemN5NW5aWFJFWldaaGRXeDBVSEp2Y0hNdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUXNJQ2RuWlhSRVpXWmhkV3gwVUhKdmNITWdhWE1nYjI1c2VTQjFjMlZrSUc5dUlHTnNZWE56YVdNZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNZ0p5QXJJQ2RrWldacGJtbDBhVzl1Y3k0Z1ZYTmxJR0VnYzNSaGRHbGpJSEJ5YjNCbGNuUjVJRzVoYldWa0lHQmtaV1poZFd4MFVISnZjSE5nSUdsdWMzUmxZV1F1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JuMWNibHh1ZG1GeUlGSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaUE5SUh0Y2JseHVJQ0JqY21WaGRHVkZiR1Z0Wlc1ME9pQm1kVzVqZEdsdmJpQW9kSGx3WlN3Z2NISnZjSE1zSUdOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnZG1GeUlIWmhiR2xrVkhsd1pTQTlJSFI1Y0dWdlppQjBlWEJsSUQwOVBTQW5jM1J5YVc1bkp5QjhmQ0IwZVhCbGIyWWdkSGx3WlNBOVBUMGdKMloxYm1OMGFXOXVKenRjYmlBZ0lDQXZMeUJYWlNCM1lYSnVJR2x1SUhSb2FYTWdZMkZ6WlNCaWRYUWdaRzl1SjNRZ2RHaHliM2N1SUZkbElHVjRjR1ZqZENCMGFHVWdaV3hsYldWdWRDQmpjbVZoZEdsdmJpQjBiMXh1SUNBZ0lDOHZJSE4xWTJObFpXUWdZVzVrSUhSb1pYSmxJSGRwYkd3Z2JHbHJaV3g1SUdKbElHVnljbTl5Y3lCcGJpQnlaVzVrWlhJdVhHNGdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb2RtRnNhV1JVZVhCbExDQW5VbVZoWTNRdVkzSmxZWFJsUld4bGJXVnVkRG9nZEhsd1pTQnphRzkxYkdRZ2JtOTBJR0psSUc1MWJHd3NJSFZ1WkdWbWFXNWxaQ3dnWW05dmJHVmhiaXdnYjNJZ0p5QXJJQ2R1ZFcxaVpYSXVJRWwwSUhOb2IzVnNaQ0JpWlNCaElITjBjbWx1WnlBb1ptOXlJRVJQVFNCbGJHVnRaVzUwY3lrZ2IzSWdZU0JTWldGamRFTnNZWE56SUNjZ0t5QW5LR1p2Y2lCamIyMXdiM05wZEdVZ1kyOXRjRzl1Wlc1MGN5a3VKWE1uTENCblpYUkVaV05zWVhKaGRHbHZia1Z5Y205eVFXUmtaVzVrZFcwb0tTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0IyWVhJZ1pXeGxiV1Z1ZENBOUlGSmxZV04wUld4bGJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MExtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEc1Y2JpQWdJQ0F2THlCVWFHVWdjbVZ6ZFd4MElHTmhiaUJpWlNCdWRXeHNhWE5vSUdsbUlHRWdiVzlqYXlCdmNpQmhJR04xYzNSdmJTQm1kVzVqZEdsdmJpQnBjeUIxYzJWa0xseHVJQ0FnSUM4dklGUlBSRTg2SUVSeWIzQWdkR2hwY3lCM2FHVnVJSFJvWlhObElHRnlaU0J1YnlCc2IyNW5aWElnWVd4c2IzZGxaQ0JoY3lCMGFHVWdkSGx3WlNCaGNtZDFiV1Z1ZEM1Y2JpQWdJQ0JwWmlBb1pXeGxiV1Z1ZENBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWld4bGJXVnVkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJUYTJsd0lHdGxlU0IzWVhKdWFXNW5JR2xtSUhSb1pTQjBlWEJsSUdsemJpZDBJSFpoYkdsa0lITnBibU5sSUc5MWNpQnJaWGtnZG1Gc2FXUmhkR2x2YmlCc2IyZHBZMXh1SUNBZ0lDOHZJR1J2WlhOdUozUWdaWGh3WldOMElHRWdibTl1TFhOMGNtbHVaeTltZFc1amRHbHZiaUIwZVhCbElHRnVaQ0JqWVc0Z2RHaHliM2NnWTI5dVpuVnphVzVuSUdWeWNtOXljeTVjYmlBZ0lDQXZMeUJYWlNCa2IyNG5kQ0IzWVc1MElHVjRZMlZ3ZEdsdmJpQmlaV2hoZG1sdmNpQjBieUJrYVdabVpYSWdZbVYwZDJWbGJpQmtaWFlnWVc1a0lIQnliMlF1WEc0Z0lDQWdMeThnS0ZKbGJtUmxjbWx1WnlCM2FXeHNJSFJvY205M0lIZHBkR2dnWVNCb1pXeHdablZzSUcxbGMzTmhaMlVnWVc1a0lHRnpJSE52YjI0Z1lYTWdkR2hsSUhSNWNHVWdhWE5jYmlBZ0lDQXZMeUJtYVhobFpDd2dkR2hsSUd0bGVTQjNZWEp1YVc1bmN5QjNhV3hzSUdGd2NHVmhjaTRwWEc0Z0lDQWdhV1lnS0haaGJHbGtWSGx3WlNrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREk3SUdrZ1BDQmhjbWQxYldWdWRITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdWRGFHbHNaRXRsZVhNb1lYSm5kVzFsYm5SelcybGRMQ0IwZVhCbEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCMllXeHBaR0YwWlZCeWIzQlVlWEJsY3lobGJHVnRaVzUwS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJsYkdWdFpXNTBPMXh1SUNCOUxGeHVYRzRnSUdOeVpXRjBaVVpoWTNSdmNuazZJR1oxYm1OMGFXOXVJQ2gwZVhCbEtTQjdYRzRnSUNBZ2RtRnlJSFpoYkdsa1lYUmxaRVpoWTNSdmNua2dQU0JTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJdVkzSmxZWFJsUld4bGJXVnVkQzVpYVc1a0tHNTFiR3dzSUhSNWNHVXBPMXh1SUNBZ0lDOHZJRXhsWjJGamVTQm9iMjlySUZSUFJFODZJRmRoY200Z2FXWWdkR2hwY3lCcGN5QmhZMk5sYzNObFpGeHVJQ0FnSUhaaGJHbGtZWFJsWkVaaFkzUnZjbmt1ZEhsd1pTQTlJSFI1Y0dVN1hHNWNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0haaGJHbGtZWFJsWkVaaFkzUnZjbmtzSUNkMGVYQmxKeXdnZTF4dUlDQWdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQWdJR2RsZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZEdZV04wYjNKNUxuUjVjR1VnYVhNZ1pHVndjbVZqWVhSbFpDNGdRV05qWlhOeklIUm9aU0JqYkdGemN5QmthWEpsWTNSc2VTQW5JQ3NnSjJKbFptOXlaU0J3WVhOemFXNW5JR2wwSUhSdklHTnlaV0YwWlVaaFkzUnZjbmt1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29kR2hwY3l3Z0ozUjVjR1VuTENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGJIVmxPaUIwZVhCbFhHNGdJQ0FnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBlWEJsTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5SUdOaGRHTm9JQ2g0S1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRWxGSUhkcGJHd2dabUZwYkNCdmJpQmtaV1pwYm1WUWNtOXdaWEowZVNBb1pYTTFMWE5vYVcwdmMyaGhiU0IwYjI4cFhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFpoYkdsa1lYUmxaRVpoWTNSdmNuazdYRzRnSUgwc1hHNWNiaUFnWTJ4dmJtVkZiR1Z0Wlc1ME9pQm1kVzVqZEdsdmJpQW9aV3hsYldWdWRDd2djSEp2Y0hNc0lHTm9hV3hrY21WdUtTQjdYRzRnSUNBZ2RtRnlJRzVsZDBWc1pXMWxiblFnUFNCU1pXRmpkRVZzWlcxbGJuUXVZMnh2Ym1WRmJHVnRaVzUwTG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREk3SUdrZ1BDQmhjbWQxYldWdWRITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGJHbGtZWFJsUTJocGJHUkxaWGx6S0dGeVozVnRaVzUwYzF0cFhTd2dibVYzUld4bGJXVnVkQzUwZVhCbEtUdGNiaUFnSUNCOVhHNGdJQ0FnZG1Gc2FXUmhkR1ZRY205d1ZIbHdaWE1vYm1WM1JXeGxiV1Z1ZENrN1hHNGdJQ0FnY21WMGRYSnVJRzVsZDBWc1pXMWxiblE3WEc0Z0lIMWNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0k3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RFcnJvclV0aWxzXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhdWdodEVycm9yID0gbnVsbDtcblxuLyoqXG4gKiBDYWxsIGEgZnVuY3Rpb24gd2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC5cbiAqXG4gKiBAcGFyYW0gez9TdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9nZ2luZyBvciBkZWJ1Z2dpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZVxuICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50XG4gKiBAcGFyYW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50XG4gKi9cbmZ1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBmdW5jLCBhLCBiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZ1bmMoYSwgYik7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICBpZiAoY2F1Z2h0RXJyb3IgPT09IG51bGwpIHtcbiAgICAgIGNhdWdodEVycm9yID0geDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG52YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuICBpbnZva2VHdWFyZGVkQ2FsbGJhY2s6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAgICogSW52b2tlZCBieSBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRoZSBldmVudFxuICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJldGhyb3dDYXVnaHRFcnJvci5cbiAgICovXG4gIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1YXJkZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2hcbiAgICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBlcnJvciBoYW5kbGVyLlxuICAgKi9cbiAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhdWdodEVycm9yKSB7XG4gICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtcbiAgICAgIGNhdWdodEVycm9yID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLyoqXG4gICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhXG4gICAqIHJlYWwgYnJvd3NlciBldmVudC5cbiAgICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGZha2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncmVhY3QnKTtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrID0gZnVuY3Rpb24gKG5hbWUsIGZ1bmMsIGEsIGIpIHtcbiAgICAgIHZhciBib3VuZEZ1bmMgPSBmdW5jLmJpbmQobnVsbCwgYSwgYik7XG4gICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGJvdW5kRnVuYywgZmFsc2UpO1xuICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQobmFtZSkpO1xuICAgICAgZmFrZU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JGY25KdmNsVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFekxUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JGY25KdmNsVjBhV3h6WEc0Z0tpQkFkSGx3WldOb1pXTnJjMXh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdOaGRXZG9kRVZ5Y205eUlEMGdiblZzYkR0Y2JseHVMeW9xWEc0Z0tpQkRZV3hzSUdFZ1puVnVZM1JwYjI0Z2QyaHBiR1VnWjNWaGNtUnBibWNnWVdkaGFXNXpkQ0JsY25KdmNuTWdkR2hoZENCb1lYQndaVzV6SUhkcGRHaHBiaUJwZEM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZXo5VGRISnBibWQ5SUc1aGJXVWdiMllnZEdobElHZDFZWEprSUhSdklIVnpaU0JtYjNJZ2JHOW5aMmx1WnlCdmNpQmtaV0oxWjJkcGJtZGNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUdaMWJtTWdWR2hsSUdaMWJtTjBhVzl1SUhSdklHbHVkbTlyWlZ4dUlDb2dRSEJoY21GdElIc3FmU0JoSUVacGNuTjBJR0Z5WjNWdFpXNTBYRzRnS2lCQWNHRnlZVzBnZXlwOUlHSWdVMlZqYjI1a0lHRnlaM1Z0Wlc1MFhHNGdLaTljYm1aMWJtTjBhVzl1SUdsdWRtOXJaVWQxWVhKa1pXUkRZV3hzWW1GamF5aHVZVzFsTENCbWRXNWpMQ0JoTENCaUtTQjdYRzRnSUhSeWVTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTW9ZU3dnWWlrN1hHNGdJSDBnWTJGMFkyZ2dLSGdwSUh0Y2JpQWdJQ0JwWmlBb1kyRjFaMmgwUlhKeWIzSWdQVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR05oZFdkb2RFVnljbTl5SUQwZ2VEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVmVnh1WEc1MllYSWdVbVZoWTNSRmNuSnZjbFYwYVd4eklEMGdlMXh1SUNCcGJuWnZhMlZIZFdGeVpHVmtRMkZzYkdKaFkyczZJR2x1ZG05clpVZDFZWEprWldSRFlXeHNZbUZqYXl4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nU1c1MmIydGxaQ0JpZVNCU1pXRmpkRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaU0J6YnlCMGFHRjBJR0Z1ZVNCbGNuSnZjbk1nZEdoeWIzZHVJR0o1SUhSb1pTQmxkbVZ1ZEZ4dUlDQWdLaUJvWVc1a2JHVnlJR0Z5WlNCemRYSmxJSFJ2SUdKbElISmxkR2h5YjNkdUlHSjVJSEpsZEdoeWIzZERZWFZuYUhSRmNuSnZjaTVjYmlBZ0lDb3ZYRzRnSUdsdWRtOXJaVWQxWVhKa1pXUkRZV3hzWW1GamExZHBkR2hEWVhSamFEb2dhVzUyYjJ0bFIzVmhjbVJsWkVOaGJHeGlZV05yTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJFZFhKcGJtY2daWGhsWTNWMGFXOXVJRzltSUdkMVlYSmtaV1FnWm5WdVkzUnBiMjV6SUhkbElIZHBiR3dnWTJGd2RIVnlaU0IwYUdVZ1ptbHljM1FnWlhKeWIzSWdkMmhwWTJoY2JpQWdJQ29nZDJVZ2QybHNiQ0J5WlhSb2NtOTNJSFJ2SUdKbElHaGhibVJzWldRZ1lua2dkR2hsSUhSdmNDQnNaWFpsYkNCbGNuSnZjaUJvWVc1a2JHVnlMbHh1SUNBZ0tpOWNiaUFnY21WMGFISnZkME5oZFdkb2RFVnljbTl5T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2FXWWdLR05oZFdkb2RFVnljbTl5S1NCN1hHNGdJQ0FnSUNCMllYSWdaWEp5YjNJZ1BTQmpZWFZuYUhSRmNuSnZjanRjYmlBZ0lDQWdJR05oZFdkb2RFVnljbTl5SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJSFJvY205M0lHVnljbTl5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVHRjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJ2SUdobGJIQWdaR1YyWld4dmNHMWxiblFnZDJVZ1kyRnVJR2RsZENCaVpYUjBaWElnWkdWMmRHOXZiSE1nYVc1MFpXZHlZWFJwYjI0Z1lua2djMmx0ZFd4aGRHbHVaeUJoWEc0Z0lDQXFJSEpsWVd3Z1luSnZkM05sY2lCbGRtVnVkQzVjYmlBZ0lDb3ZYRzRnSUdsbUlDaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmlCMGVYQmxiMllnZDJsdVpHOTNMbVJwYzNCaGRHTm9SWFpsYm5RZ1BUMDlJQ2RtZFc1amRHbHZiaWNnSmlZZ2RIbHdaVzltSUVWMlpXNTBJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ2RtRnlJR1poYTJWT2IyUmxJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ25jbVZoWTNRbktUdGNiaUFnSUNCU1pXRmpkRVZ5Y205eVZYUnBiSE11YVc1MmIydGxSM1ZoY21SbFpFTmhiR3hpWVdOcklEMGdablZ1WTNScGIyNGdLRzVoYldVc0lHWjFibU1zSUdFc0lHSXBJSHRjYmlBZ0lDQWdJSFpoY2lCaWIzVnVaRVoxYm1NZ1BTQm1kVzVqTG1KcGJtUW9iblZzYkN3Z1lTd2dZaWs3WEc0Z0lDQWdJQ0JtWVd0bFRtOWtaUzVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLRzVoYldVc0lHSnZkVzVrUm5WdVl5d2dabUZzYzJVcE8xeHVJQ0FnSUNBZ1ptRnJaVTV2WkdVdVpHbHpjR0YwWTJoRmRtVnVkQ2h1WlhjZ1JYWmxiblFvYm1GdFpTa3BPMXh1SUNBZ0lDQWdabUZyWlU1dlpHVXVjbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaWh1WVcxbExDQmliM1Z1WkVaMWJtTXNJR1poYkhObEtUdGNiaUFnSUNCOU8xeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSRmNuSnZjbFYwYVd4ek95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdEluc3RhbmNlSGFuZGxlc1xuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJvb3RJbmRleCA9IHJlcXVpcmUoJy4vUmVhY3RSb290SW5kZXgnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNFUEFSQVRPUl9MRU5HVEggPSBTRVBBUkFUT1IubGVuZ3RoO1xuXG4vKipcbiAqIE1heGltdW0gZGVwdGggb2YgdHJhdmVyc2FscyBiZWZvcmUgd2UgY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGEgYmFkIElELlxuICovXG52YXIgTUFYX1RSRUVfREVQVEggPSAxMDAwMDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgRE9NIElEIHByZWZpeCB0byB1c2Ugd2hlbiBtb3VudGluZyBSZWFjdCBjb21wb25lbnRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBBIHVuaXF1ZSBpbnRlZ2VyXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFJlYWN0IHJvb3QgSUQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290SURTdHJpbmcoaW5kZXgpIHtcbiAgcmV0dXJuIFNFUEFSQVRPUiArIGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjaGFyYWN0ZXIgaW4gdGhlIHN1cHBsaWVkIElEIGlzIGEgc2VwYXJhdG9yIG9yIHRoZSBlbmQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIEEgUmVhY3QgRE9NIElELlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBzZXBhcmF0b3Igb3IgZW5kIG9mIHRoZSBJRC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGlzQm91bmRhcnkoaWQsIGluZGV4KSB7XG4gIHJldHVybiBpZC5jaGFyQXQoaW5kZXgpID09PSBTRVBBUkFUT1IgfHwgaW5kZXggPT09IGlkLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHN1cHBsaWVkIHN0cmluZyBpcyBhIHZhbGlkIFJlYWN0IERPTSBJRC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgQSBSZWFjdCBET00gSUQsIG1heWJlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgUmVhY3QgRE9NIElELlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZElEKGlkKSB7XG4gIHJldHVybiBpZCA9PT0gJycgfHwgaWQuY2hhckF0KDApID09PSBTRVBBUkFUT1IgJiYgaWQuY2hhckF0KGlkLmxlbmd0aCAtIDEpICE9PSBTRVBBUkFUT1I7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBmaXJzdCBJRCBpcyBhbiBhbmNlc3RvciBvZiBvciBlcXVhbCB0byB0aGUgc2Vjb25kIElELlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbmNlc3RvcklEXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzY2VuZGFudElEXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBhbmNlc3RvcklEYCBpcyBhbiBhbmNlc3RvciBvZiBgZGVzY2VuZGFudElEYC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBpc0FuY2VzdG9ySURPZihhbmNlc3RvcklELCBkZXNjZW5kYW50SUQpIHtcbiAgcmV0dXJuIGRlc2NlbmRhbnRJRC5pbmRleE9mKGFuY2VzdG9ySUQpID09PSAwICYmIGlzQm91bmRhcnkoZGVzY2VuZGFudElELCBhbmNlc3RvcklELmxlbmd0aCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IElEIG9mIHRoZSBzdXBwbGllZCBSZWFjdCBET00gSUQsIGBpZGAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIElEIG9mIGEgY29tcG9uZW50LlxuICogQHJldHVybiB7c3RyaW5nfSBJRCBvZiB0aGUgcGFyZW50LCBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBnZXRQYXJlbnRJRChpZCkge1xuICByZXR1cm4gaWQgPyBpZC5zdWJzdHIoMCwgaWQubGFzdEluZGV4T2YoU0VQQVJBVE9SKSkgOiAnJztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuZXh0IERPTSBJRCBvbiB0aGUgdHJlZSBwYXRoIGZyb20gdGhlIHN1cHBsaWVkIGBhbmNlc3RvcklEYCB0byB0aGVcbiAqIHN1cHBsaWVkIGBkZXN0aW5hdGlvbklEYC4gSWYgdGhleSBhcmUgZXF1YWwsIHRoZSBJRCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW5jZXN0b3JJRCBJRCBvZiBhbiBhbmNlc3RvciBub2RlIG9mIGBkZXN0aW5hdGlvbklEYC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbklEIElEIG9mIHRoZSBkZXN0aW5hdGlvbiBub2RlLlxuICogQHJldHVybiB7c3RyaW5nfSBOZXh0IElEIG9uIHRoZSBwYXRoIGZyb20gYGFuY2VzdG9ySURgIHRvIGBkZXN0aW5hdGlvbklEYC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGdldE5leHREZXNjZW5kYW50SUQoYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkge1xuICAhKGlzVmFsaWRJRChhbmNlc3RvcklEKSAmJiBpc1ZhbGlkSUQoZGVzdGluYXRpb25JRCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5leHREZXNjZW5kYW50SUQoJXMsICVzKTogUmVjZWl2ZWQgYW4gaW52YWxpZCBSZWFjdCBET00gSUQuJywgYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAhaXNBbmNlc3RvcklET2YoYW5jZXN0b3JJRCwgZGVzdGluYXRpb25JRCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0TmV4dERlc2NlbmRhbnRJRCguLi4pOiBSZWFjdCBoYXMgbWFkZSBhbiBpbnZhbGlkIGFzc3VtcHRpb24gYWJvdXQgJyArICd0aGUgRE9NIGhpZXJhcmNoeS4gRXhwZWN0ZWQgYCVzYCB0byBiZSBhbiBhbmNlc3RvciBvZiBgJXNgLicsIGFuY2VzdG9ySUQsIGRlc3RpbmF0aW9uSUQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgaWYgKGFuY2VzdG9ySUQgPT09IGRlc3RpbmF0aW9uSUQpIHtcbiAgICByZXR1cm4gYW5jZXN0b3JJRDtcbiAgfVxuICAvLyBTa2lwIG92ZXIgdGhlIGFuY2VzdG9yIGFuZCB0aGUgaW1tZWRpYXRlIHNlcGFyYXRvci4gVHJhdmVyc2UgdW50aWwgd2UgaGl0XG4gIC8vIGFub3RoZXIgc2VwYXJhdG9yIG9yIHdlIHJlYWNoIHRoZSBlbmQgb2YgYGRlc3RpbmF0aW9uSURgLlxuICB2YXIgc3RhcnQgPSBhbmNlc3RvcklELmxlbmd0aCArIFNFUEFSQVRPUl9MRU5HVEg7XG4gIHZhciBpO1xuICBmb3IgKGkgPSBzdGFydDsgaSA8IGRlc3RpbmF0aW9uSUQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaXNCb3VuZGFyeShkZXN0aW5hdGlvbklELCBpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXN0aW5hdGlvbklELnN1YnN0cigwLCBpKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBJRCBvZiB0d28gSURzLlxuICpcbiAqIFVzaW5nIHRoaXMgSUQgc2NoZW1lLCB0aGUgbmVhcmVzdCBjb21tb24gYW5jZXN0b3IgSUQgaXMgdGhlIGxvbmdlc3QgY29tbW9uXG4gKiBwcmVmaXggb2YgdGhlIHR3byBJRHMgdGhhdCBpbW1lZGlhdGVseSBwcmVjZWRlZCBhIFwibWFya2VyXCIgaW4gYm90aCBzdHJpbmdzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBvbmVJRFxuICogQHBhcmFtIHtzdHJpbmd9IHR3b0lEXG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIElELCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vbmUuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBnZXRGaXJzdENvbW1vbkFuY2VzdG9ySUQob25lSUQsIHR3b0lEKSB7XG4gIHZhciBtaW5MZW5ndGggPSBNYXRoLm1pbihvbmVJRC5sZW5ndGgsIHR3b0lELmxlbmd0aCk7XG4gIGlmIChtaW5MZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgdmFyIGxhc3RDb21tb25NYXJrZXJJbmRleCA9IDA7XG4gIC8vIFVzZSBgPD1gIHRvIHRyYXZlcnNlIHVudGlsIHRoZSBcIkVPTFwiIG9mIHRoZSBzaG9ydGVyIHN0cmluZy5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbWluTGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaXNCb3VuZGFyeShvbmVJRCwgaSkgJiYgaXNCb3VuZGFyeSh0d29JRCwgaSkpIHtcbiAgICAgIGxhc3RDb21tb25NYXJrZXJJbmRleCA9IGk7XG4gICAgfSBlbHNlIGlmIChvbmVJRC5jaGFyQXQoaSkgIT09IHR3b0lELmNoYXJBdChpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHZhciBsb25nZXN0Q29tbW9uSUQgPSBvbmVJRC5zdWJzdHIoMCwgbGFzdENvbW1vbk1hcmtlckluZGV4KTtcbiAgIWlzVmFsaWRJRChsb25nZXN0Q29tbW9uSUQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldEZpcnN0Q29tbW9uQW5jZXN0b3JJRCglcywgJXMpOiBFeHBlY3RlZCBhIHZhbGlkIFJlYWN0IERPTSBJRDogJXMnLCBvbmVJRCwgdHdvSUQsIGxvbmdlc3RDb21tb25JRCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbG9uZ2VzdENvbW1vbklEO1xufVxuXG4vKipcbiAqIFRyYXZlcnNlcyB0aGUgcGFyZW50IHBhdGggYmV0d2VlbiB0d28gSURzIChlaXRoZXIgdXAgb3IgZG93bikuIFRoZSBJRHMgbXVzdFxuICogbm90IGJlIHRoZSBzYW1lLCBhbmQgdGhlcmUgbXVzdCBleGlzdCBhIHBhcmVudCBwYXRoIGJldHdlZW4gdGhlbS4gSWYgdGhlXG4gKiBjYWxsYmFjayByZXR1cm5zIGBmYWxzZWAsIHRyYXZlcnNhbCBpcyBzdG9wcGVkLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gc3RhcnQgSUQgYXQgd2hpY2ggdG8gc3RhcnQgdHJhdmVyc2FsLlxuICogQHBhcmFtIHs/c3RyaW5nfSBzdG9wIElEIGF0IHdoaWNoIHRvIGVuZCB0cmF2ZXJzYWwuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2UgZWFjaCBJRCB3aXRoLlxuICogQHBhcmFtIHsqfSBhcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoLlxuICogQHBhcmFtIHs/Ym9vbGVhbn0gc2tpcEZpcnN0IFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdGhlIGZpcnN0IG5vZGUuXG4gKiBAcGFyYW0gez9ib29sZWFufSBza2lwTGFzdCBXaGV0aGVyIG9yIG5vdCB0byBza2lwIHRoZSBsYXN0IG5vZGUuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZVBhcmVudFBhdGgoc3RhcnQsIHN0b3AsIGNiLCBhcmcsIHNraXBGaXJzdCwgc2tpcExhc3QpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAnJztcbiAgc3RvcCA9IHN0b3AgfHwgJyc7XG4gICEoc3RhcnQgIT09IHN0b3ApID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXZlcnNlUGFyZW50UGF0aCguLi4pOiBDYW5ub3QgdHJhdmVyc2UgZnJvbSBhbmQgdG8gdGhlIHNhbWUgSUQsIGAlc2AuJywgc3RhcnQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgdmFyIHRyYXZlcnNlVXAgPSBpc0FuY2VzdG9ySURPZihzdG9wLCBzdGFydCk7XG4gICEodHJhdmVyc2VVcCB8fCBpc0FuY2VzdG9ySURPZihzdGFydCwgc3RvcCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXZlcnNlUGFyZW50UGF0aCglcywgJXMsIC4uLik6IENhbm5vdCB0cmF2ZXJzZSBmcm9tIHR3byBJRHMgdGhhdCBkbyAnICsgJ25vdCBoYXZlIGEgcGFyZW50IHBhdGguJywgc3RhcnQsIHN0b3ApIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgLy8gVHJhdmVyc2UgZnJvbSBgc3RhcnRgIHRvIGBzdG9wYCBvbmUgZGVwdGggYXQgYSB0aW1lLlxuICB2YXIgZGVwdGggPSAwO1xuICB2YXIgdHJhdmVyc2UgPSB0cmF2ZXJzZVVwID8gZ2V0UGFyZW50SUQgOiBnZXROZXh0RGVzY2VuZGFudElEO1xuICBmb3IgKHZhciBpZCA9IHN0YXJ0OzsgLyogdW50aWwgYnJlYWsgKi9pZCA9IHRyYXZlcnNlKGlkLCBzdG9wKSkge1xuICAgIHZhciByZXQ7XG4gICAgaWYgKCghc2tpcEZpcnN0IHx8IGlkICE9PSBzdGFydCkgJiYgKCFza2lwTGFzdCB8fCBpZCAhPT0gc3RvcCkpIHtcbiAgICAgIHJldCA9IGNiKGlkLCB0cmF2ZXJzZVVwLCBhcmcpO1xuICAgIH1cbiAgICBpZiAocmV0ID09PSBmYWxzZSB8fCBpZCA9PT0gc3RvcCkge1xuICAgICAgLy8gT25seSBicmVhayAvL2FmdGVyLy8gdmlzaXRpbmcgYHN0b3BgLlxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICEoZGVwdGgrKyA8IE1BWF9UUkVFX0RFUFRIKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmF2ZXJzZVBhcmVudFBhdGgoJXMsICVzLCAuLi4pOiBEZXRlY3RlZCBhbiBpbmZpbml0ZSBsb29wIHdoaWxlICcgKyAndHJhdmVyc2luZyB0aGUgUmVhY3QgRE9NIElEIHRyZWUuIFRoaXMgbWF5IGJlIGR1ZSB0byBtYWxmb3JtZWQgSURzOiAlcycsIHN0YXJ0LCBzdG9wLCBpZCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogTWFuYWdlcyB0aGUgSURzIGFzc2lnbmVkIHRvIERPTSByZXByZXNlbnRhdGlvbnMgb2YgUmVhY3QgY29tcG9uZW50cy4gVGhpc1xuICogdXNlcyBhIHNwZWNpZmljIHNjaGVtZSBpbiBvcmRlciB0byB0cmF2ZXJzZSB0aGUgRE9NIGVmZmljaWVudGx5IChlLmcuIGluXG4gKiBvcmRlciB0byBzaW11bGF0ZSBldmVudHMpLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSB7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSZWFjdCByb290IElEXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQSBSZWFjdCByb290IElELlxuICAgKi9cbiAgY3JlYXRlUmVhY3RSb290SUQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0UmVhY3RSb290SURTdHJpbmcoUmVhY3RSb290SW5kZXguY3JlYXRlUmVhY3RSb290SW5kZXgoKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSZWFjdCBJRCBieSBqb2luaW5nIGEgcm9vdCBJRCB3aXRoIGEgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJvb3RJRCBSb290IElEIG9mIGEgcGFyZW50IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQSBjb21wb25lbnQncyBuYW1lIChhcyBmbGF0dGVuZWQgY2hpbGRyZW4pLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IEEgUmVhY3QgSUQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY3JlYXRlUmVhY3RJRDogZnVuY3Rpb24gKHJvb3RJRCwgbmFtZSkge1xuICAgIHJldHVybiByb290SUQgKyBuYW1lO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBET00gSUQgb2YgdGhlIFJlYWN0IGNvbXBvbmVudCB0aGF0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlIHRoYXRcbiAgICogY29udGFpbnMgdGhlIFJlYWN0IGNvbXBvbmVudCB3aXRoIHRoZSBzdXBwbGllZCBET00gSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBET00gSUQgb2YgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IERPTSBJRCBvZiB0aGUgUmVhY3QgY29tcG9uZW50IHRoYXQgaXMgdGhlIHJvb3QuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICBpZiAoaWQgJiYgaWQuY2hhckF0KDApID09PSBTRVBBUkFUT1IgJiYgaWQubGVuZ3RoID4gMSkge1xuICAgICAgdmFyIGluZGV4ID0gaWQuaW5kZXhPZihTRVBBUkFUT1IsIDEpO1xuICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpZC5zdWJzdHIoMCwgaW5kZXgpIDogaWQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRoYXRcbiAgICogc2hvdWxkIHdvdWxkIHJlY2VpdmUgYSBgbW91c2VFbnRlcmAgb3IgYG1vdXNlTGVhdmVgIGV2ZW50LlxuICAgKlxuICAgKiBOT1RFOiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlXG4gICAqIG5vdGhpbmcgXCJlbnRlcmVkXCIgb3IgXCJsZWZ0XCIgdGhhdCBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGVhdmVJRCBJRCBiZWluZyBsZWZ0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW50ZXJJRCBJRCBiZWluZyBlbnRlcmVkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2Ugb24gZWFjaCBlbnRlcmVkL2xlZnQgSUQuXG4gICAqIEBwYXJhbSB7Kn0gdXBBcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIG9uIGxlZnQgSURzLlxuICAgKiBAcGFyYW0geyp9IGRvd25BcmcgQXJndW1lbnQgdG8gaW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIG9uIGVudGVyZWQgSURzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rpb24gKGxlYXZlSUQsIGVudGVySUQsIGNiLCB1cEFyZywgZG93bkFyZykge1xuICAgIHZhciBhbmNlc3RvcklEID0gZ2V0Rmlyc3RDb21tb25BbmNlc3RvcklEKGxlYXZlSUQsIGVudGVySUQpO1xuICAgIGlmIChhbmNlc3RvcklEICE9PSBsZWF2ZUlEKSB7XG4gICAgICB0cmF2ZXJzZVBhcmVudFBhdGgobGVhdmVJRCwgYW5jZXN0b3JJRCwgY2IsIHVwQXJnLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChhbmNlc3RvcklEICE9PSBlbnRlcklEKSB7XG4gICAgICB0cmF2ZXJzZVBhcmVudFBhdGgoYW5jZXN0b3JJRCwgZW50ZXJJRCwgY2IsIGRvd25BcmcsIHRydWUsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNpbXVsYXRlcyB0aGUgdHJhdmVyc2FsIG9mIGEgdHdvLXBoYXNlLCBjYXB0dXJlL2J1YmJsZSBldmVudCBkaXNwYXRjaC5cbiAgICpcbiAgICogTk9URTogVGhpcyB0cmF2ZXJzYWwgaGFwcGVucyBvbiBJRHMgd2l0aG91dCB0b3VjaGluZyB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0SUQgSUQgb2YgdGhlIHRhcmdldCBub2RlLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiBDYWxsYmFjayB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gYXJnIEFyZ3VtZW50IHRvIGludm9rZSB0aGUgY2FsbGJhY2sgd2l0aC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmF2ZXJzZVR3b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0SUQsIGNiLCBhcmcpIHtcbiAgICBpZiAodGFyZ2V0SUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNiLCBhcmcsIHRydWUsIGZhbHNlKTtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCh0YXJnZXRJRCwgJycsIGNiLCBhcmcsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhbWUgYXMgYHRyYXZlcnNlVHdvUGhhc2VgIGJ1dCBza2lwcyB0aGUgYHRhcmdldElEYC5cbiAgICovXG4gIHRyYXZlcnNlVHdvUGhhc2VTa2lwVGFyZ2V0OiBmdW5jdGlvbiAodGFyZ2V0SUQsIGNiLCBhcmcpIHtcbiAgICBpZiAodGFyZ2V0SUQpIHtcbiAgICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNiLCBhcmcsIHRydWUsIHRydWUpO1xuICAgICAgdHJhdmVyc2VQYXJlbnRQYXRoKHRhcmdldElELCAnJywgY2IsIGFyZywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZSBhIG5vZGUgSUQsIGNhbGxpbmcgdGhlIHN1cHBsaWVkIGBjYmAgZm9yIGVhY2ggYW5jZXN0b3IgSUQuIEZvclxuICAgKiBleGFtcGxlLCBwYXNzaW5nIGAuMC4kcm93LTAuMWAgd291bGQgcmVzdWx0IGluIGBjYmAgZ2V0dGluZyBjYWxsZWRcbiAgICogd2l0aCBgLjBgLCBgLjAuJHJvdy0wYCwgYW5kIGAuMC4kcm93LTAuMWAuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgdHJhdmVyc2FsIGhhcHBlbnMgb24gSURzIHdpdGhvdXQgdG91Y2hpbmcgdGhlIERPTS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldElEIElEIG9mIHRoZSB0YXJnZXQgbm9kZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgQ2FsbGJhY2sgdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IGFyZyBBcmd1bWVudCB0byBpbnZva2UgdGhlIGNhbGxiYWNrIHdpdGguXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdHJhdmVyc2VBbmNlc3RvcnM6IGZ1bmN0aW9uICh0YXJnZXRJRCwgY2IsIGFyZykge1xuICAgIHRyYXZlcnNlUGFyZW50UGF0aCgnJywgdGFyZ2V0SUQsIGNiLCBhcmcsIHRydWUsIGZhbHNlKTtcbiAgfSxcblxuICBnZXRGaXJzdENvbW1vbkFuY2VzdG9ySUQ6IGdldEZpcnN0Q29tbW9uQW5jZXN0b3JJRCxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2dldE5leHREZXNjZW5kYW50SUQ6IGdldE5leHREZXNjZW5kYW50SUQsXG5cbiAgaXNBbmNlc3RvcklET2Y6IGlzQW5jZXN0b3JJRE9mLFxuXG4gIFNFUEFSQVRPUjogU0VQQVJBVE9SXG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZUhhbmRsZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGMxeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRGSnZiM1JKYm1SbGVDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUlNiMjkwU1c1a1pYZ25LVHRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ1UwVlFRVkpCVkU5U0lEMGdKeTRuTzF4dWRtRnlJRk5GVUVGU1FWUlBVbDlNUlU1SFZFZ2dQU0JUUlZCQlVrRlVUMUl1YkdWdVozUm9PMXh1WEc0dktpcGNiaUFxSUUxaGVHbHRkVzBnWkdWd2RHZ2diMllnZEhKaGRtVnljMkZzY3lCaVpXWnZjbVVnZDJVZ1kyOXVjMmxrWlhJZ2RHaGxJSEJ2YzNOcFltbHNhWFI1SUc5bUlHRWdZbUZrSUVsRUxseHVJQ292WEc1MllYSWdUVUZZWDFSU1JVVmZSRVZRVkVnZ1BTQXhNREF3TUR0Y2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdSRTlOSUVsRUlIQnlaV1pwZUNCMGJ5QjFjMlVnZDJobGJpQnRiM1Z1ZEdsdVp5QlNaV0ZqZENCamIyMXdiMjVsYm5SekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCcGJtUmxlQ0JCSUhWdWFYRjFaU0JwYm5SbFoyVnlYRzRnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZKbFlXTjBJSEp2YjNRZ1NVUXVYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWjJWMFVtVmhZM1JTYjI5MFNVUlRkSEpwYm1jb2FXNWtaWGdwSUh0Y2JpQWdjbVYwZFhKdUlGTkZVRUZTUVZSUFVpQXJJR2x1WkdWNExuUnZVM1J5YVc1bktETTJLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdZU0JqYUdGeVlXTjBaWElnYVc0Z2RHaGxJSE4xY0hCc2FXVmtJRWxFSUdseklHRWdjMlZ3WVhKaGRHOXlJRzl5SUhSb1pTQmxibVF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR2xrSUVFZ1VtVmhZM1FnUkU5TklFbEVMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRJRWx1WkdWNElHOW1JSFJvWlNCamFHRnlZV04wWlhJZ2RHOGdZMmhsWTJzdVhHNGdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JVY25WbElHbG1JSFJvWlNCamFHRnlZV04wWlhJZ2FYTWdZU0J6WlhCaGNtRjBiM0lnYjNJZ1pXNWtJRzltSUhSb1pTQkpSQzVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdselFtOTFibVJoY25rb2FXUXNJR2x1WkdWNEtTQjdYRzRnSUhKbGRIVnliaUJwWkM1amFHRnlRWFFvYVc1a1pYZ3BJRDA5UFNCVFJWQkJVa0ZVVDFJZ2ZId2dhVzVrWlhnZ1BUMDlJR2xrTG14bGJtZDBhRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdkR2hsSUhOMWNIQnNhV1ZrSUhOMGNtbHVaeUJwY3lCaElIWmhiR2xrSUZKbFlXTjBJRVJQVFNCSlJDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdRU0JTWldGamRDQkVUMDBnU1VRc0lHMWhlV0psTGx4dUlDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMGdWSEoxWlNCcFppQjBhR1VnYzNSeWFXNW5JR2x6SUdFZ2RtRnNhV1FnVW1WaFkzUWdSRTlOSUVsRUxseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdhWE5XWVd4cFpFbEVLR2xrS1NCN1hHNGdJSEpsZEhWeWJpQnBaQ0E5UFQwZ0p5Y2dmSHdnYVdRdVkyaGhja0YwS0RBcElEMDlQU0JUUlZCQlVrRlVUMUlnSmlZZ2FXUXVZMmhoY2tGMEtHbGtMbXhsYm1kMGFDQXRJREVwSUNFOVBTQlRSVkJCVWtGVVQxSTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyaGxZMnR6SUdsbUlIUm9aU0JtYVhKemRDQkpSQ0JwY3lCaGJpQmhibU5sYzNSdmNpQnZaaUJ2Y2lCbGNYVmhiQ0IwYnlCMGFHVWdjMlZqYjI1a0lFbEVMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmhibU5sYzNSdmNrbEVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWkdWelkyVnVaR0Z1ZEVsRVhHNGdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JVY25WbElHbG1JR0JoYm1ObGMzUnZja2xFWUNCcGN5QmhiaUJoYm1ObGMzUnZjaUJ2WmlCZ1pHVnpZMlZ1WkdGdWRFbEVZQzVjYmlBcUlFQnBiblJsY201aGJGeHVJQ292WEc1bWRXNWpkR2x2YmlCcGMwRnVZMlZ6ZEc5eVNVUlBaaWhoYm1ObGMzUnZja2xFTENCa1pYTmpaVzVrWVc1MFNVUXBJSHRjYmlBZ2NtVjBkWEp1SUdSbGMyTmxibVJoYm5SSlJDNXBibVJsZUU5bUtHRnVZMlZ6ZEc5eVNVUXBJRDA5UFNBd0lDWW1JR2x6UW05MWJtUmhjbmtvWkdWelkyVnVaR0Z1ZEVsRUxDQmhibU5sYzNSdmNrbEVMbXhsYm1kMGFDazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVjBjeUIwYUdVZ2NHRnlaVzUwSUVsRUlHOW1JSFJvWlNCemRYQndiR2xsWkNCU1pXRmpkQ0JFVDAwZ1NVUXNJR0JwWkdBdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdsa0lFbEVJRzltSUdFZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JKUkNCdlppQjBhR1VnY0dGeVpXNTBMQ0J2Y2lCaGJpQmxiWEIwZVNCemRISnBibWN1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCblpYUlFZWEpsYm5SSlJDaHBaQ2tnZTF4dUlDQnlaWFIxY200Z2FXUWdQeUJwWkM1emRXSnpkSElvTUN3Z2FXUXViR0Z6ZEVsdVpHVjRUMllvVTBWUVFWSkJWRTlTS1NrZ09pQW5KenRjYm4xY2JseHVMeW9xWEc0Z0tpQkhaWFJ6SUhSb1pTQnVaWGgwSUVSUFRTQkpSQ0J2YmlCMGFHVWdkSEpsWlNCd1lYUm9JR1p5YjIwZ2RHaGxJSE4xY0hCc2FXVmtJR0JoYm1ObGMzUnZja2xFWUNCMGJ5QjBhR1ZjYmlBcUlITjFjSEJzYVdWa0lHQmtaWE4wYVc1aGRHbHZia2xFWUM0Z1NXWWdkR2hsZVNCaGNtVWdaWEYxWVd3c0lIUm9aU0JKUkNCcGN5QnlaWFIxY201bFpDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1lXNWpaWE4wYjNKSlJDQkpSQ0J2WmlCaGJpQmhibU5sYzNSdmNpQnViMlJsSUc5bUlHQmtaWE4wYVc1aGRHbHZia2xFWUM1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmtaWE4wYVc1aGRHbHZia2xFSUVsRUlHOW1JSFJvWlNCa1pYTjBhVzVoZEdsdmJpQnViMlJsTGx4dUlDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQk9aWGgwSUVsRUlHOXVJSFJvWlNCd1lYUm9JR1p5YjIwZ1lHRnVZMlZ6ZEc5eVNVUmdJSFJ2SUdCa1pYTjBhVzVoZEdsdmJrbEVZQzVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdkbGRFNWxlSFJFWlhOalpXNWtZVzUwU1VRb1lXNWpaWE4wYjNKSlJDd2daR1Z6ZEdsdVlYUnBiMjVKUkNrZ2UxeHVJQ0FoS0dselZtRnNhV1JKUkNoaGJtTmxjM1J2Y2tsRUtTQW1KaUJwYzFaaGJHbGtTVVFvWkdWemRHbHVZWFJwYjI1SlJDa3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyZGxkRTVsZUhSRVpYTmpaVzVrWVc1MFNVUW9KWE1zSUNWektUb2dVbVZqWldsMlpXUWdZVzRnYVc1MllXeHBaQ0JTWldGamRDQkVUMDBnU1VRdUp5d2dZVzVqWlhOMGIzSkpSQ3dnWkdWemRHbHVZWFJwYjI1SlJDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWhhWE5CYm1ObGMzUnZja2xFVDJZb1lXNWpaWE4wYjNKSlJDd2daR1Z6ZEdsdVlYUnBiMjVKUkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuWjJWMFRtVjRkRVJsYzJObGJtUmhiblJKUkNndUxpNHBPaUJTWldGamRDQm9ZWE1nYldGa1pTQmhiaUJwYm5aaGJHbGtJR0Z6YzNWdGNIUnBiMjRnWVdKdmRYUWdKeUFySUNkMGFHVWdSRTlOSUdocFpYSmhjbU5vZVM0Z1JYaHdaV04wWldRZ1lDVnpZQ0IwYnlCaVpTQmhiaUJoYm1ObGMzUnZjaUJ2WmlCZ0pYTmdMaWNzSUdGdVkyVnpkRzl5U1VRc0lHUmxjM1JwYm1GMGFXOXVTVVFwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnYVdZZ0tHRnVZMlZ6ZEc5eVNVUWdQVDA5SUdSbGMzUnBibUYwYVc5dVNVUXBJSHRjYmlBZ0lDQnlaWFIxY200Z1lXNWpaWE4wYjNKSlJEdGNiaUFnZlZ4dUlDQXZMeUJUYTJsd0lHOTJaWElnZEdobElHRnVZMlZ6ZEc5eUlHRnVaQ0IwYUdVZ2FXMXRaV1JwWVhSbElITmxjR0Z5WVhSdmNpNGdWSEpoZG1WeWMyVWdkVzUwYVd3Z2QyVWdhR2wwWEc0Z0lDOHZJR0Z1YjNSb1pYSWdjMlZ3WVhKaGRHOXlJRzl5SUhkbElISmxZV05vSUhSb1pTQmxibVFnYjJZZ1lHUmxjM1JwYm1GMGFXOXVTVVJnTGx4dUlDQjJZWElnYzNSaGNuUWdQU0JoYm1ObGMzUnZja2xFTG14bGJtZDBhQ0FySUZORlVFRlNRVlJQVWw5TVJVNUhWRWc3WEc0Z0lIWmhjaUJwTzF4dUlDQm1iM0lnS0drZ1BTQnpkR0Z5ZERzZ2FTQThJR1JsYzNScGJtRjBhVzl1U1VRdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnBaaUFvYVhOQ2IzVnVaR0Z5ZVNoa1pYTjBhVzVoZEdsdmJrbEVMQ0JwS1NrZ2UxeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQmtaWE4wYVc1aGRHbHZia2xFTG5OMVluTjBjaWd3TENCcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCdVpXRnlaWE4wSUdOdmJXMXZiaUJoYm1ObGMzUnZjaUJKUkNCdlppQjBkMjhnU1VSekxseHVJQ3BjYmlBcUlGVnphVzVuSUhSb2FYTWdTVVFnYzJOb1pXMWxMQ0IwYUdVZ2JtVmhjbVZ6ZENCamIyMXRiMjRnWVc1alpYTjBiM0lnU1VRZ2FYTWdkR2hsSUd4dmJtZGxjM1FnWTI5dGJXOXVYRzRnS2lCd2NtVm1hWGdnYjJZZ2RHaGxJSFIzYnlCSlJITWdkR2hoZENCcGJXMWxaR2xoZEdWc2VTQndjbVZqWldSbFpDQmhJRndpYldGeWEyVnlYQ0lnYVc0Z1ltOTBhQ0J6ZEhKcGJtZHpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZibVZKUkZ4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUjNiMGxFWEc0Z0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFNWxZWEpsYzNRZ1kyOXRiVzl1SUdGdVkyVnpkRzl5SUVsRUxDQnZjaUIwYUdVZ1pXMXdkSGtnYzNSeWFXNW5JR2xtSUc1dmJtVXVYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSR2FYSnpkRU52YlcxdmJrRnVZMlZ6ZEc5eVNVUW9iMjVsU1VRc0lIUjNiMGxFS1NCN1hHNGdJSFpoY2lCdGFXNU1aVzVuZEdnZ1BTQk5ZWFJvTG0xcGJpaHZibVZKUkM1c1pXNW5kR2dzSUhSM2IwbEVMbXhsYm1kMGFDazdYRzRnSUdsbUlDaHRhVzVNWlc1bmRHZ2dQVDA5SURBcElIdGNiaUFnSUNCeVpYUjFjbTRnSnljN1hHNGdJSDFjYmlBZ2RtRnlJR3hoYzNSRGIyMXRiMjVOWVhKclpYSkpibVJsZUNBOUlEQTdYRzRnSUM4dklGVnpaU0JnUEQxZ0lIUnZJSFJ5WVhabGNuTmxJSFZ1ZEdsc0lIUm9aU0JjSWtWUFRGd2lJRzltSUhSb1pTQnphRzl5ZEdWeUlITjBjbWx1Wnk1Y2JpQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQRDBnYldsdVRHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnBaaUFvYVhOQ2IzVnVaR0Z5ZVNodmJtVkpSQ3dnYVNrZ0ppWWdhWE5DYjNWdVpHRnllU2gwZDI5SlJDd2dhU2twSUh0Y2JpQWdJQ0FnSUd4aGMzUkRiMjF0YjI1TllYSnJaWEpKYm1SbGVDQTlJR2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h2Ym1WSlJDNWphR0Z5UVhRb2FTa2dJVDA5SUhSM2IwbEVMbU5vWVhKQmRDaHBLU2tnZTF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lIWmhjaUJzYjI1blpYTjBRMjl0Ylc5dVNVUWdQU0J2Ym1WSlJDNXpkV0p6ZEhJb01Dd2diR0Z6ZEVOdmJXMXZiazFoY210bGNrbHVaR1Y0S1R0Y2JpQWdJV2x6Vm1Gc2FXUkpSQ2hzYjI1blpYTjBRMjl0Ylc5dVNVUXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oyZGxkRVpwY25OMFEyOXRiVzl1UVc1alpYTjBiM0pKUkNnbGN5d2dKWE1wT2lCRmVIQmxZM1JsWkNCaElIWmhiR2xrSUZKbFlXTjBJRVJQVFNCSlJEb2dKWE1uTENCdmJtVkpSQ3dnZEhkdlNVUXNJR3h2Ym1kbGMzUkRiMjF0YjI1SlJDa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQnlaWFIxY200Z2JHOXVaMlZ6ZEVOdmJXMXZia2xFTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJ5WVhabGNuTmxjeUIwYUdVZ2NHRnlaVzUwSUhCaGRHZ2dZbVYwZDJWbGJpQjBkMjhnU1VSeklDaGxhWFJvWlhJZ2RYQWdiM0lnWkc5M2Jpa3VJRlJvWlNCSlJITWdiWFZ6ZEZ4dUlDb2dibTkwSUdKbElIUm9aU0J6WVcxbExDQmhibVFnZEdobGNtVWdiWFZ6ZENCbGVHbHpkQ0JoSUhCaGNtVnVkQ0J3WVhSb0lHSmxkSGRsWlc0Z2RHaGxiUzRnU1dZZ2RHaGxYRzRnS2lCallXeHNZbUZqYXlCeVpYUjFjbTV6SUdCbVlXeHpaV0FzSUhSeVlYWmxjbk5oYkNCcGN5QnpkRzl3Y0dWa0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1AzTjBjbWx1WjMwZ2MzUmhjblFnU1VRZ1lYUWdkMmhwWTJnZ2RHOGdjM1JoY25RZ2RISmhkbVZ5YzJGc0xseHVJQ29nUUhCaGNtRnRJSHMvYzNSeWFXNW5mU0J6ZEc5d0lFbEVJR0YwSUhkb2FXTm9JSFJ2SUdWdVpDQjBjbUYyWlhKellXd3VYRzRnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCallpQkRZV3hzWW1GamF5QjBieUJwYm5admEyVWdaV0ZqYUNCSlJDQjNhWFJvTGx4dUlDb2dRSEJoY21GdElIc3FmU0JoY21jZ1FYSm5kVzFsYm5RZ2RHOGdhVzUyYjJ0bElIUm9aU0JqWVd4c1ltRmpheUIzYVhSb0xseHVJQ29nUUhCaGNtRnRJSHMvWW05dmJHVmhibjBnYzJ0cGNFWnBjbk4wSUZkb1pYUm9aWElnYjNJZ2JtOTBJSFJ2SUhOcmFYQWdkR2hsSUdacGNuTjBJRzV2WkdVdVhHNGdLaUJBY0dGeVlXMGdlejlpYjI5c1pXRnVmU0J6YTJsd1RHRnpkQ0JYYUdWMGFHVnlJRzl5SUc1dmRDQjBieUJ6YTJsd0lIUm9aU0JzWVhOMElHNXZaR1V1WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCMGNtRjJaWEp6WlZCaGNtVnVkRkJoZEdnb2MzUmhjblFzSUhOMGIzQXNJR05pTENCaGNtY3NJSE5yYVhCR2FYSnpkQ3dnYzJ0cGNFeGhjM1FwSUh0Y2JpQWdjM1JoY25RZ1BTQnpkR0Z5ZENCOGZDQW5KenRjYmlBZ2MzUnZjQ0E5SUhOMGIzQWdmSHdnSnljN1hHNGdJQ0VvYzNSaGNuUWdJVDA5SUhOMGIzQXBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDZ3VMaTRwT2lCRFlXNXViM1FnZEhKaGRtVnljMlVnWm5KdmJTQmhibVFnZEc4Z2RHaGxJSE5oYldVZ1NVUXNJR0FsYzJBdUp5d2djM1JoY25RcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2RtRnlJSFJ5WVhabGNuTmxWWEFnUFNCcGMwRnVZMlZ6ZEc5eVNVUlBaaWh6ZEc5d0xDQnpkR0Z5ZENrN1hHNGdJQ0VvZEhKaGRtVnljMlZWY0NCOGZDQnBjMEZ1WTJWemRHOXlTVVJQWmloemRHRnlkQ3dnYzNSdmNDa3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0ozUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDZ2xjeXdnSlhNc0lDNHVMaWs2SUVOaGJtNXZkQ0IwY21GMlpYSnpaU0JtY205dElIUjNieUJKUkhNZ2RHaGhkQ0JrYnlBbklDc2dKMjV2ZENCb1lYWmxJR0VnY0dGeVpXNTBJSEJoZEdndUp5d2djM1JoY25Rc0lITjBiM0FwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnTHk4Z1ZISmhkbVZ5YzJVZ1puSnZiU0JnYzNSaGNuUmdJSFJ2SUdCemRHOXdZQ0J2Ym1VZ1pHVndkR2dnWVhRZ1lTQjBhVzFsTGx4dUlDQjJZWElnWkdWd2RHZ2dQU0F3TzF4dUlDQjJZWElnZEhKaGRtVnljMlVnUFNCMGNtRjJaWEp6WlZWd0lEOGdaMlYwVUdGeVpXNTBTVVFnT2lCblpYUk9aWGgwUkdWelkyVnVaR0Z1ZEVsRU8xeHVJQ0JtYjNJZ0tIWmhjaUJwWkNBOUlITjBZWEowT3pzZ0x5b2dkVzUwYVd3Z1luSmxZV3NnS2k5cFpDQTlJSFJ5WVhabGNuTmxLR2xrTENCemRHOXdLU2tnZTF4dUlDQWdJSFpoY2lCeVpYUTdYRzRnSUNBZ2FXWWdLQ2doYzJ0cGNFWnBjbk4wSUh4OElHbGtJQ0U5UFNCemRHRnlkQ2tnSmlZZ0tDRnphMmx3VEdGemRDQjhmQ0JwWkNBaFBUMGdjM1J2Y0NrcElIdGNiaUFnSUNBZ0lISmxkQ0E5SUdOaUtHbGtMQ0IwY21GMlpYSnpaVlZ3TENCaGNtY3BPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9jbVYwSUQwOVBTQm1ZV3h6WlNCOGZDQnBaQ0E5UFQwZ2MzUnZjQ2tnZTF4dUlDQWdJQ0FnTHk4Z1QyNXNlU0JpY21WaGF5QXZMMkZtZEdWeUx5OGdkbWx6YVhScGJtY2dZSE4wYjNCZ0xseHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdmVnh1SUNBZ0lDRW9aR1Z3ZEdnckt5QThJRTFCV0Y5VVVrVkZYMFJGVUZSSUtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkMGNtRjJaWEp6WlZCaGNtVnVkRkJoZEdnb0pYTXNJQ1Z6TENBdUxpNHBPaUJFWlhSbFkzUmxaQ0JoYmlCcGJtWnBibWwwWlNCc2IyOXdJSGRvYVd4bElDY2dLeUFuZEhKaGRtVnljMmx1WnlCMGFHVWdVbVZoWTNRZ1JFOU5JRWxFSUhSeVpXVXVJRlJvYVhNZ2JXRjVJR0psSUdSMVpTQjBieUJ0WVd4bWIzSnRaV1FnU1VSek9pQWxjeWNzSUhOMFlYSjBMQ0J6ZEc5d0xDQnBaQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dUV0Z1WVdkbGN5QjBhR1VnU1VSeklHRnpjMmxuYm1Wa0lIUnZJRVJQVFNCeVpYQnlaWE5sYm5SaGRHbHZibk1nYjJZZ1VtVmhZM1FnWTI5dGNHOXVaVzUwY3k0Z1ZHaHBjMXh1SUNvZ2RYTmxjeUJoSUhOd1pXTnBabWxqSUhOamFHVnRaU0JwYmlCdmNtUmxjaUIwYnlCMGNtRjJaWEp6WlNCMGFHVWdSRTlOSUdWbVptbGphV1Z1ZEd4NUlDaGxMbWN1SUdsdVhHNGdLaUJ2Y21SbGNpQjBieUJ6YVcxMWJHRjBaU0JsZG1WdWRITXBMbHh1SUNwY2JpQXFJRUJwYm5SbGNtNWhiRnh1SUNvdlhHNTJZWElnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNZ1BTQjdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZibk4wY25WamRITWdZU0JTWldGamRDQnliMjkwSUVsRVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnUVNCU1pXRmpkQ0J5YjI5MElFbEVMbHh1SUNBZ0tpOWNiaUFnWTNKbFlYUmxVbVZoWTNSU2IyOTBTVVE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnWjJWMFVtVmhZM1JTYjI5MFNVUlRkSEpwYm1jb1VtVmhZM1JTYjI5MFNXNWtaWGd1WTNKbFlYUmxVbVZoWTNSU2IyOTBTVzVrWlhnb0tTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuTjBjblZqZEhNZ1lTQlNaV0ZqZENCSlJDQmllU0JxYjJsdWFXNW5JR0VnY205dmRDQkpSQ0IzYVhSb0lHRWdibUZ0WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISnZiM1JKUkNCU2IyOTBJRWxFSUc5bUlHRWdjR0Z5Wlc1MElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1aGJXVWdRU0JqYjIxd2IyNWxiblFuY3lCdVlXMWxJQ2hoY3lCbWJHRjBkR1Z1WldRZ1kyaHBiR1J5Wlc0cExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUVFZ1VtVmhZM1FnU1VRdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1kzSmxZWFJsVW1WaFkzUkpSRG9nWm5WdVkzUnBiMjRnS0hKdmIzUkpSQ3dnYm1GdFpTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCeWIyOTBTVVFnS3lCdVlXMWxPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUnpJSFJvWlNCRVQwMGdTVVFnYjJZZ2RHaGxJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQjBhR0YwSUdseklIUm9aU0J5YjI5MElHOW1JSFJvWlNCMGNtVmxJSFJvWVhSY2JpQWdJQ29nWTI5dWRHRnBibk1nZEdobElGSmxZV04wSUdOdmJYQnZibVZ1ZENCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCRVQwMGdTVVF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQkVUMDBnU1VRZ2IyWWdZU0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQnlaWFIxY200Z2V6OXpkSEpwYm1kOUlFUlBUU0JKUkNCdlppQjBhR1VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJSFJvWVhRZ2FYTWdkR2hsSUhKdmIzUXVYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdaMlYwVW1WaFkzUlNiMjkwU1VSR2NtOXRUbTlrWlVsRU9pQm1kVzVqZEdsdmJpQW9hV1FwSUh0Y2JpQWdJQ0JwWmlBb2FXUWdKaVlnYVdRdVkyaGhja0YwS0RBcElEMDlQU0JUUlZCQlVrRlVUMUlnSmlZZ2FXUXViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnZG1GeUlHbHVaR1Y0SUQwZ2FXUXVhVzVrWlhoUFppaFRSVkJCVWtGVVQxSXNJREVwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1WkdWNElENGdMVEVnUHlCcFpDNXpkV0p6ZEhJb01Dd2dhVzVrWlhncElEb2dhV1E3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWNtRjJaWEp6WlhNZ2RHaGxJRWxFSUdocFpYSmhjbU5vZVNCaGJtUWdhVzUyYjJ0bGN5QjBhR1VnYzNWd2NHeHBaV1FnWUdOaVlDQnZiaUJoYm5rZ1NVUnpJSFJvWVhSY2JpQWdJQ29nYzJodmRXeGtJSGR2ZFd4a0lISmxZMlZwZG1VZ1lTQmdiVzkxYzJWRmJuUmxjbUFnYjNJZ1lHMXZkWE5sVEdWaGRtVmdJR1YyWlc1MExseHVJQ0FnS2x4dUlDQWdLaUJPVDFSRk9pQkViMlZ6SUc1dmRDQnBiblp2YTJVZ2RHaGxJR05oYkd4aVlXTnJJRzl1SUhSb1pTQnVaV0Z5WlhOMElHTnZiVzF2YmlCaGJtTmxjM1J2Y2lCaVpXTmhkWE5sWEc0Z0lDQXFJRzV2ZEdocGJtY2dYQ0psYm5SbGNtVmtYQ0lnYjNJZ1hDSnNaV1owWENJZ2RHaGhkQ0JsYkdWdFpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYkdWaGRtVkpSQ0JKUkNCaVpXbHVaeUJzWldaMExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWlc1MFpYSkpSQ0JKUkNCaVpXbHVaeUJsYm5SbGNtVmtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQmpZaUJEWVd4c1ltRmpheUIwYnlCcGJuWnZhMlVnYjI0Z1pXRmphQ0JsYm5SbGNtVmtMMnhsWm5RZ1NVUXVYRzRnSUNBcUlFQndZWEpoYlNCN0tuMGdkWEJCY21jZ1FYSm5kVzFsYm5RZ2RHOGdhVzUyYjJ0bElIUm9aU0JqWVd4c1ltRmpheUIzYVhSb0lHOXVJR3hsWm5RZ1NVUnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5cDlJR1J2ZDI1QmNtY2dRWEpuZFcxbGJuUWdkRzhnYVc1MmIydGxJSFJvWlNCallXeHNZbUZqYXlCM2FYUm9JRzl1SUdWdWRHVnlaV1FnU1VSekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lIUnlZWFpsY25ObFJXNTBaWEpNWldGMlpUb2dablZ1WTNScGIyNGdLR3hsWVhabFNVUXNJR1Z1ZEdWeVNVUXNJR05pTENCMWNFRnlaeXdnWkc5M2JrRnlaeWtnZTF4dUlDQWdJSFpoY2lCaGJtTmxjM1J2Y2tsRUlEMGdaMlYwUm1seWMzUkRiMjF0YjI1QmJtTmxjM1J2Y2tsRUtHeGxZWFpsU1VRc0lHVnVkR1Z5U1VRcE8xeHVJQ0FnSUdsbUlDaGhibU5sYzNSdmNrbEVJQ0U5UFNCc1pXRjJaVWxFS1NCN1hHNGdJQ0FnSUNCMGNtRjJaWEp6WlZCaGNtVnVkRkJoZEdnb2JHVmhkbVZKUkN3Z1lXNWpaWE4wYjNKSlJDd2dZMklzSUhWd1FYSm5MQ0JtWVd4elpTd2dkSEoxWlNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoaGJtTmxjM1J2Y2tsRUlDRTlQU0JsYm5SbGNrbEVLU0I3WEc0Z0lDQWdJQ0IwY21GMlpYSnpaVkJoY21WdWRGQmhkR2dvWVc1alpYTjBiM0pKUkN3Z1pXNTBaWEpKUkN3Z1kySXNJR1J2ZDI1QmNtY3NJSFJ5ZFdVc0lHWmhiSE5sS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTnBiWFZzWVhSbGN5QjBhR1VnZEhKaGRtVnljMkZzSUc5bUlHRWdkSGR2TFhCb1lYTmxMQ0JqWVhCMGRYSmxMMkoxWW1Kc1pTQmxkbVZ1ZENCa2FYTndZWFJqYUM1Y2JpQWdJQ3BjYmlBZ0lDb2dUazlVUlRvZ1ZHaHBjeUIwY21GMlpYSnpZV3dnYUdGd2NHVnVjeUJ2YmlCSlJITWdkMmwwYUc5MWRDQjBiM1ZqYUdsdVp5QjBhR1VnUkU5TkxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR0Z5WjJWMFNVUWdTVVFnYjJZZ2RHaGxJSFJoY21kbGRDQnViMlJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVmU0JqWWlCRFlXeHNZbUZqYXlCMGJ5QnBiblp2YTJVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3S24wZ1lYSm5JRUZ5WjNWdFpXNTBJSFJ2SUdsdWRtOXJaU0IwYUdVZ1kyRnNiR0poWTJzZ2QybDBhQzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0IwY21GMlpYSnpaVlIzYjFCb1lYTmxPaUJtZFc1amRHbHZiaUFvZEdGeVoyVjBTVVFzSUdOaUxDQmhjbWNwSUh0Y2JpQWdJQ0JwWmlBb2RHRnlaMlYwU1VRcElIdGNiaUFnSUNBZ0lIUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDZ25KeXdnZEdGeVoyVjBTVVFzSUdOaUxDQmhjbWNzSUhSeWRXVXNJR1poYkhObEtUdGNiaUFnSUNBZ0lIUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDaDBZWEpuWlhSSlJDd2dKeWNzSUdOaUxDQmhjbWNzSUdaaGJITmxMQ0IwY25WbEtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRk5oYldVZ1lYTWdZSFJ5WVhabGNuTmxWSGR2VUdoaGMyVmdJR0oxZENCemEybHdjeUIwYUdVZ1lIUmhjbWRsZEVsRVlDNWNiaUFnSUNvdlhHNGdJSFJ5WVhabGNuTmxWSGR2VUdoaGMyVlRhMmx3VkdGeVoyVjBPaUJtZFc1amRHbHZiaUFvZEdGeVoyVjBTVVFzSUdOaUxDQmhjbWNwSUh0Y2JpQWdJQ0JwWmlBb2RHRnlaMlYwU1VRcElIdGNiaUFnSUNBZ0lIUnlZWFpsY25ObFVHRnlaVzUwVUdGMGFDZ25KeXdnZEdGeVoyVjBTVVFzSUdOaUxDQmhjbWNzSUhSeWRXVXNJSFJ5ZFdVcE8xeHVJQ0FnSUNBZ2RISmhkbVZ5YzJWUVlYSmxiblJRWVhSb0tIUmhjbWRsZEVsRUxDQW5KeXdnWTJJc0lHRnlaeXdnZEhKMVpTd2dkSEoxWlNrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVjbUYyWlhKelpTQmhJRzV2WkdVZ1NVUXNJR05oYkd4cGJtY2dkR2hsSUhOMWNIQnNhV1ZrSUdCalltQWdabTl5SUdWaFkyZ2dZVzVqWlhOMGIzSWdTVVF1SUVadmNseHVJQ0FnS2lCbGVHRnRjR3hsTENCd1lYTnphVzVuSUdBdU1DNGtjbTkzTFRBdU1XQWdkMjkxYkdRZ2NtVnpkV3gwSUdsdUlHQmpZbUFnWjJWMGRHbHVaeUJqWVd4c1pXUmNiaUFnSUNvZ2QybDBhQ0JnTGpCZ0xDQmdMakF1SkhKdmR5MHdZQ3dnWVc1a0lHQXVNQzRrY205M0xUQXVNV0F1WEc0Z0lDQXFYRzRnSUNBcUlFNVBWRVU2SUZSb2FYTWdkSEpoZG1WeWMyRnNJR2hoY0hCbGJuTWdiMjRnU1VSeklIZHBkR2h2ZFhRZ2RHOTFZMmhwYm1jZ2RHaGxJRVJQVFM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUmhjbWRsZEVsRUlFbEVJRzltSUhSb1pTQjBZWEpuWlhRZ2JtOWtaUzVjYmlBZ0lDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdZMklnUTJGc2JHSmhZMnNnZEc4Z2FXNTJiMnRsTGx4dUlDQWdLaUJBY0dGeVlXMGdleXA5SUdGeVp5QkJjbWQxYldWdWRDQjBieUJwYm5admEyVWdkR2hsSUdOaGJHeGlZV05ySUhkcGRHZ3VYRzRnSUNBcUlFQnBiblJsY201aGJGeHVJQ0FnS2k5Y2JpQWdkSEpoZG1WeWMyVkJibU5sYzNSdmNuTTZJR1oxYm1OMGFXOXVJQ2gwWVhKblpYUkpSQ3dnWTJJc0lHRnlaeWtnZTF4dUlDQWdJSFJ5WVhabGNuTmxVR0Z5Wlc1MFVHRjBhQ2duSnl3Z2RHRnlaMlYwU1VRc0lHTmlMQ0JoY21jc0lIUnlkV1VzSUdaaGJITmxLVHRjYmlBZ2ZTeGNibHh1SUNCblpYUkdhWEp6ZEVOdmJXMXZia0Z1WTJWemRHOXlTVVE2SUdkbGRFWnBjbk4wUTI5dGJXOXVRVzVqWlhOMGIzSkpSQ3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSWGh3YjNObFpDQm1iM0lnZFc1cGRDQjBaWE4wYVc1bkxseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ1gyZGxkRTVsZUhSRVpYTmpaVzVrWVc1MFNVUTZJR2RsZEU1bGVIUkVaWE5qWlc1a1lXNTBTVVFzWEc1Y2JpQWdhWE5CYm1ObGMzUnZja2xFVDJZNklHbHpRVzVqWlhOMGIzSkpSRTltTEZ4dVhHNGdJRk5GVUVGU1FWUlBVam9nVTBWUVFWSkJWRTlTWEc1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0SXNvbW9ycGhpY1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q2hpbGRyZW4gPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRyZW4nKTtcbnZhciBSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnQnKTtcbnZhciBSZWFjdENsYXNzID0gcmVxdWlyZSgnLi9SZWFjdENsYXNzJyk7XG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSByZXF1aXJlKCcuL1JlYWN0RE9NRmFjdG9yaWVzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicpO1xudmFyIFJlYWN0UHJvcFR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RWZXJzaW9uJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBvbmx5Q2hpbGQgPSByZXF1aXJlKCcuL29ubHlDaGlsZCcpO1xuXG52YXIgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50O1xudmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcbnZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7XG4gIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbiAgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcbn1cblxudmFyIFJlYWN0ID0ge1xuXG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7XG4gICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsXG4gICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsXG5cbiAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCxcbiAgY2xvbmVFbGVtZW50OiBjbG9uZUVsZW1lbnQsXG4gIGlzVmFsaWRFbGVtZW50OiBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQsXG5cbiAgLy8gQ2xhc3NpY1xuXG4gIFByb3BUeXBlczogUmVhY3RQcm9wVHlwZXMsXG4gIGNyZWF0ZUNsYXNzOiBSZWFjdENsYXNzLmNyZWF0ZUNsYXNzLFxuICBjcmVhdGVGYWN0b3J5OiBjcmVhdGVGYWN0b3J5LFxuICBjcmVhdGVNaXhpbjogZnVuY3Rpb24gKG1peGluKSB7XG4gICAgLy8gQ3VycmVudGx5IGEgbm9vcC4gV2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIGFuZCB0cmFjZSBtaXhpbnMuXG4gICAgcmV0dXJuIG1peGluO1xuICB9LFxuXG4gIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzXG4gIC8vIHNpbmNlIHRoZXkgYXJlIGp1c3QgZ2VuZXJhdGluZyBET00gc3RyaW5ncy5cbiAgRE9NOiBSZWFjdERPTUZhY3RvcmllcyxcblxuICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24sXG5cbiAgLy8gSG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nIGVsc2UuXG4gIF9fc3ByZWFkOiBhc3NpZ25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUkpjMjl0YjNKd2FHbGpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnVW1WaFkzUkpjMjl0YjNKd2FHbGpYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkRhR2xzWkhKbGJpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRhR2xzWkhKbGJpY3BPMXh1ZG1GeUlGSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUZKbFlXTjBRMnhoYzNNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEyeGhjM01uS1R0Y2JuWmhjaUJTWldGamRFUlBUVVpoWTNSdmNtbGxjeUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JFVDAxR1lXTjBiM0pwWlhNbktUdGNiblpoY2lCU1pXRmpkRVZzWlcxbGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBSV3hsYldWdWRDY3BPMXh1ZG1GeUlGSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlKeWs3WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFVISnZjRlI1Y0dWekp5azdYRzUyWVhJZ1VtVmhZM1JXWlhKemFXOXVJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlpsY25OcGIyNG5LVHRjYmx4dWRtRnlJR0Z6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2VDJKcVpXTjBMbUZ6YzJsbmJpY3BPMXh1ZG1GeUlHOXViSGxEYUdsc1pDQTlJSEpsY1hWcGNtVW9KeTR2YjI1c2VVTm9hV3hrSnlrN1hHNWNiblpoY2lCamNtVmhkR1ZGYkdWdFpXNTBJRDBnVW1WaFkzUkZiR1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblE3WEc1MllYSWdZM0psWVhSbFJtRmpkRzl5ZVNBOUlGSmxZV04wUld4bGJXVnVkQzVqY21WaGRHVkdZV04wYjNKNU8xeHVkbUZ5SUdOc2IyNWxSV3hsYldWdWRDQTlJRkpsWVdOMFJXeGxiV1Z1ZEM1amJHOXVaVVZzWlcxbGJuUTdYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lHTnlaV0YwWlVWc1pXMWxiblFnUFNCU1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSXVZM0psWVhSbFJXeGxiV1Z1ZER0Y2JpQWdZM0psWVhSbFJtRmpkRzl5ZVNBOUlGSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaTVqY21WaGRHVkdZV04wYjNKNU8xeHVJQ0JqYkc5dVpVVnNaVzFsYm5RZ1BTQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0l1WTJ4dmJtVkZiR1Z0Wlc1ME8xeHVmVnh1WEc1MllYSWdVbVZoWTNRZ1BTQjdYRzVjYmlBZ0x5OGdUVzlrWlhKdVhHNWNiaUFnUTJocGJHUnlaVzQ2SUh0Y2JpQWdJQ0J0WVhBNklGSmxZV04wUTJocGJHUnlaVzR1YldGd0xGeHVJQ0FnSUdadmNrVmhZMmc2SUZKbFlXTjBRMmhwYkdSeVpXNHVabTl5UldGamFDeGNiaUFnSUNCamIzVnVkRG9nVW1WaFkzUkRhR2xzWkhKbGJpNWpiM1Z1ZEN4Y2JpQWdJQ0IwYjBGeWNtRjVPaUJTWldGamRFTm9hV3hrY21WdUxuUnZRWEp5WVhrc1hHNGdJQ0FnYjI1c2VUb2diMjVzZVVOb2FXeGtYRzRnSUgwc1hHNWNiaUFnUTI5dGNHOXVaVzUwT2lCU1pXRmpkRU52YlhCdmJtVnVkQ3hjYmx4dUlDQmpjbVZoZEdWRmJHVnRaVzUwT2lCamNtVmhkR1ZGYkdWdFpXNTBMRnh1SUNCamJHOXVaVVZzWlcxbGJuUTZJR05zYjI1bFJXeGxiV1Z1ZEN4Y2JpQWdhWE5XWVd4cFpFVnNaVzFsYm5RNklGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDeGNibHh1SUNBdkx5QkRiR0Z6YzJsalhHNWNiaUFnVUhKdmNGUjVjR1Z6T2lCU1pXRmpkRkJ5YjNCVWVYQmxjeXhjYmlBZ1kzSmxZWFJsUTJ4aGMzTTZJRkpsWVdOMFEyeGhjM011WTNKbFlYUmxRMnhoYzNNc1hHNGdJR055WldGMFpVWmhZM1J2Y25rNklHTnlaV0YwWlVaaFkzUnZjbmtzWEc0Z0lHTnlaV0YwWlUxcGVHbHVPaUJtZFc1amRHbHZiaUFvYldsNGFXNHBJSHRjYmlBZ0lDQXZMeUJEZFhKeVpXNTBiSGtnWVNCdWIyOXdMaUJYYVd4c0lHSmxJSFZ6WldRZ2RHOGdkbUZzYVdSaGRHVWdZVzVrSUhSeVlXTmxJRzFwZUdsdWN5NWNiaUFnSUNCeVpYUjFjbTRnYldsNGFXNDdYRzRnSUgwc1hHNWNiaUFnTHk4Z1ZHaHBjeUJzYjI5cmN5QkVUMDBnYzNCbFkybG1hV01nWW5WMElIUm9aWE5sSUdGeVpTQmhZM1IxWVd4c2VTQnBjMjl0YjNKd2FHbGpJR2hsYkhCbGNuTmNiaUFnTHk4Z2MybHVZMlVnZEdobGVTQmhjbVVnYW5WemRDQm5aVzVsY21GMGFXNW5JRVJQVFNCemRISnBibWR6TGx4dUlDQkVUMDA2SUZKbFlXTjBSRTlOUm1GamRHOXlhV1Z6TEZ4dVhHNGdJSFpsY25OcGIyNDZJRkpsWVdOMFZtVnljMmx2Yml4Y2JseHVJQ0F2THlCSWIyOXJJR1p2Y2lCS1UxZ2djM0J5WldGa0xDQmtiMjRuZENCMWMyVWdkR2hwY3lCbWIzSWdZVzU1ZEdocGJtY2daV3h6WlM1Y2JpQWdYMTl6Y0hKbFlXUTZJR0Z6YzJsbmJseHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRHNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RNb3VudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RE9NRmVhdHVyZUZsYWdzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50UmVnaXN0cnkgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeScpO1xudmFyIFJlYWN0SW5zdGFuY2VIYW5kbGVzID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlSGFuZGxlcycpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gcmVxdWlyZSgnLi9SZWFjdE1hcmt1cENoZWNrc3VtJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlUXVldWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGNvbnRhaW5zTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NvbnRhaW5zTm9kZScpO1xudmFyIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUoJy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FO1xudmFyIG5vZGVDYWNoZSA9IHt9O1xuXG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xudmFyIERPQ19OT0RFX1RZUEUgPSA5O1xudmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXG52YXIgb3duZXJEb2N1bWVudENvbnRleHRLZXkgPSAnX19SZWFjdE1vdW50X293bmVyRG9jdW1lbnQkJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG4vKiogTWFwcGluZyBmcm9tIHJlYWN0Um9vdElEIHRvIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZS4gKi9cbnZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0ge307XG5cbi8qKiBNYXBwaW5nIGZyb20gcmVhY3RSb290SUQgdG8gYGNvbnRhaW5lcmAgbm9kZXMuICovXG52YXIgY29udGFpbmVyc0J5UmVhY3RSb290SUQgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLyoqIF9fREVWX18tb25seSBtYXBwaW5nIGZyb20gcmVhY3RSb290SUQgdG8gcm9vdCBlbGVtZW50cy4gKi9cbiAgdmFyIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SUQgPSB7fTtcbn1cblxuLy8gVXNlZCB0byBzdG9yZSBicmVhZHRoLWZpcnN0IHNlYXJjaCBzdGF0ZSBpbiBmaW5kQ29tcG9uZW50Um9vdC5cbnZhciBmaW5kQ29tcG9uZW50Um9vdFJldXNhYmxlQXJyYXkgPSBbXTtcblxuLyoqXG4gKiBGaW5kcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlclxuICogdGhhdCdzIG5vdCBjb21tb24gYmV0d2VlbiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MuXG4gKlxuICogQHJldHVybiB7bnVtYmVyfSB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciB3aGVyZSB0aGUgc3RyaW5ncyBkaXZlcmdlXG4gKi9cbmZ1bmN0aW9uIGZpcnN0RGlmZmVyZW5jZUluZGV4KHN0cmluZzEsIHN0cmluZzIpIHtcbiAgdmFyIG1pbkxlbiA9IE1hdGgubWluKHN0cmluZzEubGVuZ3RoLCBzdHJpbmcyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluTGVuOyBpKyspIHtcbiAgICBpZiAoc3RyaW5nMS5jaGFyQXQoaSkgIT09IHN0cmluZzIuY2hhckF0KGkpKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmluZzEubGVuZ3RoID09PSBzdHJpbmcyLmxlbmd0aCA/IC0xIDogbWluTGVuO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01Eb2N1bWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgbWF5IGNvbnRhaW5cbiAqIGEgUmVhY3QgY29tcG9uZW50XG4gKiBAcmV0dXJuIHs/Kn0gRE9NIGVsZW1lbnQgdGhhdCBtYXkgaGF2ZSB0aGUgcmVhY3RSb290IElELCBvciBudWxsLlxuICovXG5mdW5jdGlvbiBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIGlmICghY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5maXJzdENoaWxkO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFpbiBhIFJlYWN0IGNvbXBvbmVudC5cbiAqIEByZXR1cm4gez9zdHJpbmd9IEEgXCJyZWFjdFJvb3RcIiBJRCwgaWYgYSBSZWFjdCBjb21wb25lbnQgaXMgcmVuZGVyZWQuXG4gKi9cbmZ1bmN0aW9uIGdldFJlYWN0Um9vdElEKGNvbnRhaW5lcikge1xuICB2YXIgcm9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgcmV0dXJuIHJvb3RFbGVtZW50ICYmIFJlYWN0TW91bnQuZ2V0SUQocm9vdEVsZW1lbnQpO1xufVxuXG4vKipcbiAqIEFjY2Vzc2luZyBub2RlW0FUVFJfTkFNRV0gb3IgY2FsbGluZyBnZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSBvbiBhIGZvcm1cbiAqIGVsZW1lbnQgY2FuIHJldHVybiBpdHMgY29udHJvbCB3aG9zZSBuYW1lIG9yIElEIGVxdWFscyBBVFRSX05BTUUuIEFsbFxuICogRE9NIG5vZGVzIHN1cHBvcnQgYGdldEF0dHJpYnV0ZU5vZGVgIGJ1dCB0aGlzIGNhbiBhbHNvIGdldCBjYWxsZWQgb25cbiAqIG90aGVyIG9iamVjdHMgc28ganVzdCByZXR1cm4gJycgaWYgd2UncmUgZ2l2ZW4gc29tZXRoaW5nIG90aGVyIHRoYW4gYVxuICogRE9NIG5vZGUgKHN1Y2ggYXMgd2luZG93KS5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fERPTVdpbmRvd3xET01Eb2N1bWVudHxET01UZXh0Tm9kZX0gbm9kZSBET00gbm9kZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gSUQgb2YgdGhlIHN1cHBsaWVkIGBkb21Ob2RlYC5cbiAqL1xuZnVuY3Rpb24gZ2V0SUQobm9kZSkge1xuICB2YXIgaWQgPSBpbnRlcm5hbEdldElEKG5vZGUpO1xuICBpZiAoaWQpIHtcbiAgICBpZiAobm9kZUNhY2hlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgdmFyIGNhY2hlZCA9IG5vZGVDYWNoZVtpZF07XG4gICAgICBpZiAoY2FjaGVkICE9PSBub2RlKSB7XG4gICAgICAgICEhaXNWYWxpZChjYWNoZWQsIGlkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdE1vdW50OiBUd28gdmFsaWQgYnV0IHVuZXF1YWwgbm9kZXMgd2l0aCB0aGUgc2FtZSBgJXNgOiAlcycsIEFUVFJfTkFNRSwgaWQpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBub2RlQ2FjaGVbaWRdID0gbm9kZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZUNhY2hlW2lkXSA9IG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlkO1xufVxuXG5mdW5jdGlvbiBpbnRlcm5hbEdldElEKG5vZGUpIHtcbiAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywgZG9jdW1lbnQsIG9yIHRleHQgbm9kZSwgbm9uZSBvZlxuICAvLyB3aGljaCBzdXBwb3J0IGF0dHJpYnV0ZXMgb3IgYSAuZ2V0QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSByZXR1cm5cbiAgLy8gdGhlIGVtcHR5IHN0cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3NpbmcuXG4gIHJldHVybiBub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlICYmIG5vZGUuZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgfHwgJyc7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgUmVhY3Qtc3BlY2lmaWMgSUQgb2YgdGhlIGdpdmVuIG5vZGUuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlIFRoZSBET00gbm9kZSB3aG9zZSBJRCB3aWxsIGJlIHNldC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgdmFsdWUgb2YgdGhlIElEIGF0dHJpYnV0ZS5cbiAqL1xuZnVuY3Rpb24gc2V0SUQobm9kZSwgaWQpIHtcbiAgdmFyIG9sZElEID0gaW50ZXJuYWxHZXRJRChub2RlKTtcbiAgaWYgKG9sZElEICE9PSBpZCkge1xuICAgIGRlbGV0ZSBub2RlQ2FjaGVbb2xkSURdO1xuICB9XG4gIG5vZGUuc2V0QXR0cmlidXRlKEFUVFJfTkFNRSwgaWQpO1xuICBub2RlQ2FjaGVbaWRdID0gbm9kZTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB3aXRoIHRoZSBzdXBwbGllZCBSZWFjdC1nZW5lcmF0ZWQgRE9NIElELlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBBIFJlYWN0LWdlbmVyYXRlZCBET00gSUQuXG4gKiBAcmV0dXJuIHtET01FbGVtZW50fSBET00gbm9kZSB3aXRoIHRoZSBzdXBwbGVkIGBpZGAuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZShpZCkge1xuICBpZiAoIW5vZGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkgfHwgIWlzVmFsaWQobm9kZUNhY2hlW2lkXSwgaWQpKSB7XG4gICAgbm9kZUNhY2hlW2lkXSA9IFJlYWN0TW91bnQuZmluZFJlYWN0Tm9kZUJ5SUQoaWQpO1xuICB9XG4gIHJldHVybiBub2RlQ2FjaGVbaWRdO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIHB1YmxpYyBSZWFjdCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0geyp9IGluc3RhbmNlIEEgcHVibGljIFJlYWN0IGluc3RhbmNlLlxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IERPTSBub2RlIHdpdGggdGhlIHN1cHBsZWQgYGlkYC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXROb2RlRnJvbUluc3RhbmNlKGluc3RhbmNlKSB7XG4gIHZhciBpZCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3RhbmNlKS5fcm9vdE5vZGVJRDtcbiAgaWYgKFJlYWN0RW1wdHlDb21wb25lbnRSZWdpc3RyeS5pc051bGxDb21wb25lbnRJRChpZCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIW5vZGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkgfHwgIWlzVmFsaWQobm9kZUNhY2hlW2lkXSwgaWQpKSB7XG4gICAgbm9kZUNhY2hlW2lkXSA9IFJlYWN0TW91bnQuZmluZFJlYWN0Tm9kZUJ5SUQoaWQpO1xuICB9XG4gIHJldHVybiBub2RlQ2FjaGVbaWRdO1xufVxuXG4vKipcbiAqIEEgbm9kZSBpcyBcInZhbGlkXCIgaWYgaXQgaXMgY29udGFpbmVkIGJ5IGEgY3VycmVudGx5IG1vdW50ZWQgY29udGFpbmVyLlxuICpcbiAqIFRoaXMgbWVhbnMgdGhhdCB0aGUgbm9kZSBkb2VzIG5vdCBoYXZlIHRvIGJlIGNvbnRhaW5lZCBieSBhIGRvY3VtZW50IGluXG4gKiBvcmRlciB0byBiZSBjb25zaWRlcmVkIHZhbGlkLlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgZXhwZWN0ZWQgSUQgb2YgdGhlIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBub2RlIGlzIGNvbnRhaW5lZCBieSBhIG1vdW50ZWQgY29udGFpbmVyLlxuICovXG5mdW5jdGlvbiBpc1ZhbGlkKG5vZGUsIGlkKSB7XG4gIGlmIChub2RlKSB7XG4gICAgIShpbnRlcm5hbEdldElEKG5vZGUpID09PSBpZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RNb3VudDogVW5leHBlY3RlZCBtb2RpZmljYXRpb24gb2YgYCVzYCcsIEFUVFJfTkFNRSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGNvbnRhaW5lciA9IFJlYWN0TW91bnQuZmluZFJlYWN0Q29udGFpbmVyRm9ySUQoaWQpO1xuICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbnNOb2RlKGNvbnRhaW5lciwgbm9kZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDYXVzZXMgdGhlIGNhY2hlIHRvIGZvcmdldCBhYm91dCBvbmUgUmVhY3Qtc3BlY2lmaWMgSUQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBJRCB0byBmb3JnZXQuXG4gKi9cbmZ1bmN0aW9uIHB1cmdlSUQoaWQpIHtcbiAgZGVsZXRlIG5vZGVDYWNoZVtpZF07XG59XG5cbnZhciBkZWVwZXN0Tm9kZVNvRmFyID0gbnVsbDtcbmZ1bmN0aW9uIGZpbmREZWVwZXN0Q2FjaGVkQW5jZXN0b3JJbXBsKGFuY2VzdG9ySUQpIHtcbiAgdmFyIGFuY2VzdG9yID0gbm9kZUNhY2hlW2FuY2VzdG9ySURdO1xuICBpZiAoYW5jZXN0b3IgJiYgaXNWYWxpZChhbmNlc3RvciwgYW5jZXN0b3JJRCkpIHtcbiAgICBkZWVwZXN0Tm9kZVNvRmFyID0gYW5jZXN0b3I7XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhpcyBub2RlIGlzbid0IHBvcHVsYXRlZCBpbiB0aGUgY2FjaGUsIHNvIHByZXN1bWFibHkgbm9uZSBvZiBpdHNcbiAgICAvLyBkZXNjZW5kYW50cyBhcmUuIEJyZWFrIG91dCBvZiB0aGUgbG9vcC5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGRlZXBlc3QgY2FjaGVkIG5vZGUgd2hvc2UgSUQgaXMgYSBwcmVmaXggb2YgYHRhcmdldElEYC5cbiAqL1xuZnVuY3Rpb24gZmluZERlZXBlc3RDYWNoZWRBbmNlc3Rvcih0YXJnZXRJRCkge1xuICBkZWVwZXN0Tm9kZVNvRmFyID0gbnVsbDtcbiAgUmVhY3RJbnN0YW5jZUhhbmRsZXMudHJhdmVyc2VBbmNlc3RvcnModGFyZ2V0SUQsIGZpbmREZWVwZXN0Q2FjaGVkQW5jZXN0b3JJbXBsKTtcblxuICB2YXIgZm91bmROb2RlID0gZGVlcGVzdE5vZGVTb0ZhcjtcbiAgZGVlcGVzdE5vZGVTb0ZhciA9IG51bGw7XG4gIHJldHVybiBmb3VuZE5vZGU7XG59XG5cbi8qKlxuICogTW91bnRzIHRoaXMgY29tcG9uZW50IGFuZCBpbnNlcnRzIGl0IGludG8gdGhlIERPTS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIERPTSBJRCBvZiB0aGUgcm9vdCBub2RlLlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gbW91bnRDb21wb25lbnRJbnRvTm9kZShjb21wb25lbnRJbnN0YW5jZSwgcm9vdElELCBjb250YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuICBpZiAoUmVhY3RET01GZWF0dXJlRmxhZ3MudXNlQ3JlYXRlRWxlbWVudCkge1xuICAgIGNvbnRleHQgPSBhc3NpZ24oe30sIGNvbnRleHQpO1xuICAgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcbiAgICAgIGNvbnRleHRbb3duZXJEb2N1bWVudENvbnRleHRLZXldID0gY29udGFpbmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0W293bmVyRG9jdW1lbnRDb250ZXh0S2V5XSA9IGNvbnRhaW5lci5vd25lckRvY3VtZW50O1xuICAgIH1cbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChjb250ZXh0ID09PSBlbXB0eU9iamVjdCkge1xuICAgICAgY29udGV4dCA9IHt9O1xuICAgIH1cbiAgICB2YXIgdGFnID0gY29udGFpbmVyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29udGV4dFt2YWxpZGF0ZURPTU5lc3RpbmcuYW5jZXN0b3JJbmZvQ29udGV4dEtleV0gPSB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhudWxsLCB0YWcsIG51bGwpO1xuICB9XG4gIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICBjb21wb25lbnRJbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQuX3RvcExldmVsV3JhcHBlciA9IGNvbXBvbmVudEluc3RhbmNlO1xuICBSZWFjdE1vdW50Ll9tb3VudEltYWdlSW50b05vZGUobWFya3VwLCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbik7XG59XG5cbi8qKlxuICogQmF0Y2hlZCBtb3VudC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9vdElEIERPTSBJRCBvZiB0aGUgcm9vdCBub2RlLlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIHJvb3RJRCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoXG4gIC8qIGZvcmNlSFRNTCAqL3Nob3VsZFJldXNlTWFya3VwKTtcbiAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBudWxsLCBjb21wb25lbnRJbnN0YW5jZSwgcm9vdElELCBjb250YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7XG4gIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIFVubW91bnRzIGEgY29tcG9uZW50IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIERPTS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnN0YW5jZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byB1bm1vdW50IGZyb20uXG4gKiBAZmluYWxcbiAqIEBpbnRlcm5hbFxuICogQHNlZSB7UmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlfVxuICovXG5mdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUoaW5zdGFuY2UsIGNvbnRhaW5lcikge1xuICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChpbnN0YW5jZSk7XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyBodHRwOi8vanNwZXJmLmNvbS9lbXB0eWluZy1hLW5vZGVcbiAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBkaXJlY3QgUmVhY3QtcmVuZGVyZWQgY2hpbGQgdGhhdCBpc1xuICogbm90IGEgUmVhY3Qgcm9vdCBlbGVtZW50LiBVc2VmdWwgZm9yIHdhcm5pbmcgaW4gYHJlbmRlcmAsXG4gKiBgdW5tb3VudENvbXBvbmVudEF0Tm9kZWAsIGV0Yy5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gZWxlbWVudCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xuICogcmVuZGVyZWQgYnkgUmVhY3QgYnV0IGlzIG5vdCBhIHJvb3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBoYXNOb25Sb290UmVhY3RDaGlsZChub2RlKSB7XG4gIHZhciByZWFjdFJvb3RJRCA9IGdldFJlYWN0Um9vdElEKG5vZGUpO1xuICByZXR1cm4gcmVhY3RSb290SUQgPyByZWFjdFJvb3RJRCAhPT0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuZ2V0UmVhY3RSb290SURGcm9tTm9kZUlEKHJlYWN0Um9vdElEKSA6IGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IChkZWVwZXN0KSBhbmNlc3RvciBvZiBhIG5vZGUgd2hpY2ggaXMgcmVuZGVyZWQgYnkgdGhpcyBjb3B5XG4gKiBvZiBSZWFjdC5cbiAqL1xuZnVuY3Rpb24gZmluZEZpcnN0UmVhY3RET01JbXBsKG5vZGUpIHtcbiAgLy8gVGhpcyBub2RlIG1pZ2h0IGJlIGZyb20gYW5vdGhlciBSZWFjdCBpbnN0YW5jZSwgc28gd2UgbWFrZSBzdXJlIG5vdCB0b1xuICAvLyBleGFtaW5lIHRoZSBub2RlIGNhY2hlIGhlcmVcbiAgZm9yICg7IG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9PSBub2RlOyBub2RlID0gbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IDEpIHtcbiAgICAgIC8vIE5vdCBhIERPTUVsZW1lbnQsIHRoZXJlZm9yZSBub3QgYSBSZWFjdCBjb21wb25lbnRcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YXIgbm9kZUlEID0gaW50ZXJuYWxHZXRJRChub2RlKTtcbiAgICBpZiAoIW5vZGVJRCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChub2RlSUQpO1xuXG4gICAgLy8gSWYgY29udGFpbmVyc0J5UmVhY3RSb290SUQgY29udGFpbnMgdGhlIGNvbnRhaW5lciB3ZSBmaW5kIGJ5IGNyYXdsaW5nIHVwXG4gICAgLy8gdGhlIHRyZWUsIHdlIGtub3cgdGhhdCB0aGlzIGluc3RhbmNlIG9mIFJlYWN0IHJlbmRlcmVkIHRoZSBub2RlLlxuICAgIC8vIG5iLiBpc1ZhbGlkJ3Mgc3RyYXRlZ3kgKHdpdGggY29udGFpbnNOb2RlKSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgcmVuZGVyXG4gICAgLy8gdHJlZXMgbWF5IGJlIG5lc3RlZCBhbmQgd2UgZG9uJ3Qgd2FudCBhIGZhbHNlIHBvc2l0aXZlIGluIHRoYXQgY2FzZS5cbiAgICB2YXIgY3VycmVudCA9IG5vZGU7XG4gICAgdmFyIGxhc3RJRDtcbiAgICBkbyB7XG4gICAgICBsYXN0SUQgPSBpbnRlcm5hbEdldElEKGN1cnJlbnQpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Tm9kZTtcbiAgICAgIGlmIChjdXJyZW50ID09IG51bGwpIHtcbiAgICAgICAgLy8gVGhlIHBhc3NlZC1pbiBub2RlIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIGNvbnRhaW5lciBpdCB3YXNcbiAgICAgICAgLy8gb3JpZ2luYWxseSByZW5kZXJlZCBpbnRvLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChsYXN0SUQgIT09IHJlYWN0Um9vdElEKTtcblxuICAgIGlmIChjdXJyZW50ID09PSBjb250YWluZXJzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF0pIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBUZW1wb3JhcnkgKD8pIGhhY2sgc28gdGhhdCB3ZSBjYW4gc3RvcmUgYWxsIHRvcC1sZXZlbCBwZW5kaW5nIHVwZGF0ZXMgb25cbiAqIGNvbXBvc2l0ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd29ycnkgYWJvdXQgZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBvbmVudHNcbiAqIGhlcmUuXG4gKi9cbnZhciBUb3BMZXZlbFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7fTtcblRvcExldmVsV3JhcHBlci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgVG9wTGV2ZWxXcmFwcGVyLmRpc3BsYXlOYW1lID0gJ1RvcExldmVsV3JhcHBlcic7XG59XG5Ub3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhpcy5wcm9wcyBpcyBhY3R1YWxseSBhIFJlYWN0RWxlbWVudFxuICByZXR1cm4gdGhpcy5wcm9wcztcbn07XG5cbi8qKlxuICogTW91bnRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgaW5pdGlhbGl6aW5nIGEgUmVhY3QgY29tcG9uZW50IGJ5IGNyZWF0aW5nIGl0c1xuICogcmVwcmVzZW50YXRpdmUgRE9NIGVsZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gKiBBbnkgcHJpb3IgY29udGVudCBpbnNpZGUgYGNvbnRhaW5lcmAgaXMgZGVzdHJveWVkIGluIHRoZSBwcm9jZXNzLlxuICpcbiAqICAgUmVhY3RNb3VudC5yZW5kZXIoXG4gKiAgICAgY29tcG9uZW50LFxuICogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKVxuICogICApO1xuICpcbiAqICAgPGRpdiBpZD1cImNvbnRhaW5lclwiPiAgICAgICAgICAgICAgICAgICA8LS0gU3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9XCIuM1wiPiAgICAgICAgICAgICAgPC0tIFJlbmRlcmVkIHJlYWN0Um9vdCBvZiBSZWFjdFxuICogICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LlxuICogICAgIDwvZGl2PlxuICogICA8L2Rpdj5cbiAqXG4gKiBJbnNpZGUgb2YgYGNvbnRhaW5lcmAsIHRoZSBmaXJzdCBlbGVtZW50IHJlbmRlcmVkIGlzIHRoZSBcInJlYWN0Um9vdFwiLlxuICovXG52YXIgUmVhY3RNb3VudCA9IHtcblxuICBUb3BMZXZlbFdyYXBwZXI6IFRvcExldmVsV3JhcHBlcixcblxuICAvKiogRXhwb3NlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICoqL1xuICBfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDogaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGhvb2sgcHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29tcG9uZW50cyB3aGlsZVxuICAgKiBlbnN1cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwgcG9zaXRpb24gb2YgaXRzIGBjb250YWluZXJgIGRvZXMgbm90XG4gICAqIGNoYW5nZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgVGhlIGBjb250YWluZXJgIGJlaW5nIHJlbmRlcmVkIGludG8uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25jZSB0byBkbyB0aGUgcmVuZGVyLlxuICAgKi9cbiAgc2Nyb2xsTW9uaXRvcjogZnVuY3Rpb24gKGNvbnRhaW5lciwgcmVuZGVyQ2FsbGJhY2spIHtcbiAgICByZW5kZXJDYWxsYmFjaygpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJlYWR5IG1vdW50ZWQgaW50byB0aGUgRE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwcmV2Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSBhbHJlYWR5IGluIHRoZSBET01cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGNvbXBvbmVudCBpbnN0YW5jZSB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKi9cbiAgX3VwZGF0ZVJvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgIFJlYWN0TW91bnQuc2Nyb2xsTW9uaXRvcihjb250YWluZXIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCk7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gUmVjb3JkIHRoZSByb290IGVsZW1lbnQgaW4gY2FzZSBpdCBsYXRlciBnZXRzIHRyYW5zcGxhbnRlZC5cbiAgICAgIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKV0gPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJldkNvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBjb21wb25lbnQgaW50byB0aGUgaW5zdGFuY2UgbWFwIGFuZCBzdGFydHMgc2Nyb2xsIHZhbHVlXG4gICAqIG1vbml0b3JpbmdcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gbmV4dENvbXBvbmVudCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IHJlYWN0Um9vdCBJRCBwcmVmaXhcbiAgICovXG4gIF9yZWdpc3RlckNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRDb21wb25lbnQsIGNvbnRhaW5lcikge1xuICAgICEoY29udGFpbmVyICYmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ19yZWdpc3RlckNvbXBvbmVudCguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCBhIERPTSBlbGVtZW50LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTtcblxuICAgIHZhciByZWFjdFJvb3RJRCA9IFJlYWN0TW91bnQucmVnaXN0ZXJDb250YWluZXIoY29udGFpbmVyKTtcbiAgICBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSA9IG5leHRDb21wb25lbnQ7XG4gICAgcmV0dXJuIHJlYWN0Um9vdElEO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBuZXcgY29tcG9uZW50IGludG8gdGhlIERPTS5cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGVsZW1lbnQgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIGlmIHdlIHNob3VsZCBza2lwIHRoZSBtYXJrdXAgaW5zZXJ0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50XG4gICAqL1xuICBfcmVuZGVyTmV3Um9vdENvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ19yZW5kZXJOZXdSb290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1cGRhdGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIG51bGwpO1xuICAgIHZhciByZWFjdFJvb3RJRCA9IFJlYWN0TW91bnQuX3JlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIpO1xuXG4gICAgLy8gVGhlIGluaXRpYWwgcmVuZGVyIGlzIHN5bmNocm9ub3VzIGJ1dCBhbnkgdXBkYXRlcyB0aGF0IGhhcHBlbiBkdXJpbmdcbiAgICAvLyByZW5kZXJpbmcsIGluIGNvbXBvbmVudFdpbGxNb3VudCBvciBjb21wb25lbnREaWRNb3VudCwgd2lsbCBiZSBiYXRjaGVkXG4gICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGJhdGNoaW5nIHN0cmF0ZWd5LlxuXG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlLCBjb21wb25lbnRJbnN0YW5jZSwgcmVhY3RSb290SUQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFJlY29yZCB0aGUgcm9vdCBlbGVtZW50IGluIGNhc2UgaXQgbGF0ZXIgZ2V0cyB0cmFuc3BsYW50ZWQuXG4gICAgICByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICAgKlxuICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbFxuICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGVcbiAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gcGFyZW50Q29tcG9uZW50IFRoZSBjb25jZXB0dWFsIHBhcmVudCBvZiB0aGlzIHJlbmRlciB0cmVlLlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byByZW5kZXIgaW50by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4gICAqL1xuICByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICAhKHBhcmVudENvbXBvbmVudCAhPSBudWxsICYmIHBhcmVudENvbXBvbmVudC5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3BhcmVudENvbXBvbmVudCBtdXN0IGJlIGEgdmFsaWQgUmVhY3QgQ29tcG9uZW50JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxuICBfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChuZXh0RWxlbWVudCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RET00ucmVuZGVyKCk6IEludmFsaWQgY29tcG9uZW50IGVsZW1lbnQuJXMnLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYW4gZWxlbWVudCBzdHJpbmcsIG1ha2Ugc3VyZSB0byBpbnN0YW50aWF0ZSAnICsgJ2l0IGJ5IHBhc3NpbmcgaXQgdG8gUmVhY3QuY3JlYXRlRWxlbWVudC4nIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjb21wb25lbnQgY2xhc3MsIG1ha2Ugc3VyZSB0byBpbnN0YW50aWF0ZSAnICsgJ2l0IGJ5IHBhc3NpbmcgaXQgdG8gUmVhY3QuY3JlYXRlRWxlbWVudC4nIDpcbiAgICAvLyBDaGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBlbGVtZW50XG4gICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lciB8fCAhY29udGFpbmVyLnRhZ05hbWUgfHwgY29udGFpbmVyLnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gJ0JPRFknLCAncmVuZGVyKCk6IFJlbmRlcmluZyBjb21wb25lbnRzIGRpcmVjdGx5IGludG8gZG9jdW1lbnQuYm9keSBpcyAnICsgJ2Rpc2NvdXJhZ2VkLCBzaW5jZSBpdHMgY2hpbGRyZW4gYXJlIG9mdGVuIG1hbmlwdWxhdGVkIGJ5IHRoaXJkLXBhcnR5ICcgKyAnc2NyaXB0cyBhbmQgYnJvd3NlciBleHRlbnNpb25zLiBUaGlzIG1heSBsZWFkIHRvIHN1YnRsZSAnICsgJ3JlY29uY2lsaWF0aW9uIGlzc3Vlcy4gVHJ5IHJlbmRlcmluZyBpbnRvIGEgY29udGFpbmVyIGVsZW1lbnQgY3JlYXRlZCAnICsgJ2ZvciB5b3VyIGFwcC4nKSA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBuZXh0V3JhcHBlZEVsZW1lbnQgPSBuZXcgUmVhY3RFbGVtZW50KFRvcExldmVsV3JhcHBlciwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbmV4dEVsZW1lbnQpO1xuXG4gICAgdmFyIHByZXZDb21wb25lbnQgPSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW2dldFJlYWN0Um9vdElEKGNvbnRhaW5lcildO1xuXG4gICAgaWYgKHByZXZDb21wb25lbnQpIHtcbiAgICAgIHZhciBwcmV2V3JhcHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50Ll9jdXJyZW50RWxlbWVudDtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9wcztcbiAgICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBSZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1lbnQgJiYgISFpbnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpO1xuICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkLCAncmVuZGVyKC4uLik6IFJlcGxhY2luZyBSZWFjdC1yZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbmV3IHJvb3QgJyArICdjb21wb25lbnQuIElmIHlvdSBpbnRlbmRlZCB0byB1cGRhdGUgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgJyArICd5b3Ugc2hvdWxkIGluc3RlYWQgaGF2ZSB0aGUgZXhpc3RpbmcgY2hpbGRyZW4gdXBkYXRlIHRoZWlyIHN0YXRlICcgKyAnYW5kIHJlbmRlciB0aGUgbmV3IGNvbXBvbmVudHMgaW5zdGVhZCBvZiBjYWxsaW5nIFJlYWN0RE9NLnJlbmRlci4nKSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCFjb250YWluZXJIYXNSZWFjdE1hcmt1cCB8fCByZWFjdFJvb3RFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgIHZhciByb290RWxlbWVudFNpYmxpbmcgPSByZWFjdFJvb3RFbGVtZW50O1xuICAgICAgICB3aGlsZSAocm9vdEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgaWYgKGludGVybmFsR2V0SUQocm9vdEVsZW1lbnRTaWJsaW5nKSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5vZGUgaGFzIG1hcmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVsYXRlZCBub2RlcyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAnd2hpdGUtc3BhY2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcm9vdEVsZW1lbnRTaWJsaW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZFJldXNlTWFya3VwID0gY29udGFpbmVySGFzUmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkO1xuICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29tcG9uZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgcGFyZW50Q29tcG9uZW50ICE9IG51bGwgPyBwYXJlbnRDb21wb25lbnQuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZS5fcHJvY2Vzc0NoaWxkQ29udGV4dChwYXJlbnRDb21wb25lbnQuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZS5fY29udGV4dCkgOiBlbXB0eU9iamVjdCkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAgICpcbiAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG4gICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY29udGFpbmVyIG5vZGUgaW50byB3aGljaCBSZWFjdCBjb21wb25lbnRzIHdpbGwgYmUgcmVuZGVyZWQuXG4gICAqIFRoaXMgYWxzbyBjcmVhdGVzIHRoZSBcInJlYWN0Um9vdFwiIElEIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgZWxlbWVudFxuICAgKiByZW5kZXJlZCB3aXRoaW4uXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGFzIGEgY29udGFpbmVyLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBcInJlYWN0Um9vdFwiIElEIG9mIGVsZW1lbnRzIHJlbmRlcmVkIHdpdGhpbi5cbiAgICovXG4gIHJlZ2lzdGVyQ29udGFpbmVyOiBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKTtcbiAgICBpZiAocmVhY3RSb290SUQpIHtcbiAgICAgIC8vIElmIG9uZSBleGlzdHMsIG1ha2Ugc3VyZSBpdCBpcyBhIHZhbGlkIFwicmVhY3RSb290XCIgSUQuXG4gICAgICByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChyZWFjdFJvb3RJRCk7XG4gICAgfVxuICAgIGlmICghcmVhY3RSb290SUQpIHtcbiAgICAgIC8vIE5vIHZhbGlkIFwicmVhY3RSb290XCIgSUQgZm91bmQsIGNyZWF0ZSBvbmUuXG4gICAgICByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0Um9vdElEKCk7XG4gICAgfVxuICAgIGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSA9IGNvbnRhaW5lcjtcbiAgICByZXR1cm4gcmVhY3RSb290SUQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVubW91bnRzIGFuZCBkZXN0cm95cyB0aGUgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGluIHRoZSBgY29udGFpbmVyYC5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgY29udGFpbmluZyBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhIGNvbXBvbmVudCB3YXMgZm91bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG4gICAqICAgICAgICAgICAgICAgICAgIGBjb250YWluZXJgXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3BlYWtpbmcsIHVubW91bnRpbmcgd29uJ3QgY2F1c2UgYVxuICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3QgZXhwZWN0IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQgdXBkYXRlcyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRyaWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG5cbiAgICAhKGNvbnRhaW5lciAmJiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSB8fCBjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIHJlYWN0Um9vdElEID0gZ2V0UmVhY3RSb290SUQoY29udGFpbmVyKTtcbiAgICB2YXIgY29tcG9uZW50ID0gaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhXG4gICAgICAvLyByb290IG5vZGUuXG4gICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY29udGFpbmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS5cbiAgICAgIHZhciBjb250YWluZXJJRCA9IGludGVybmFsR2V0SUQoY29udGFpbmVyKTtcbiAgICAgIHZhciBpc0NvbnRhaW5lclJlYWN0Um9vdCA9IGNvbnRhaW5lcklEICYmIGNvbnRhaW5lcklEID09PSBSZWFjdEluc3RhbmNlSGFuZGxlcy5nZXRSZWFjdFJvb3RJREZyb21Ob2RlSUQoY29udGFpbmVySUQpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFRoZSBub2RlIHlvdVxcJ3JlIGF0dGVtcHRpbmcgdG8gdW5tb3VudCAnICsgJ3dhcyByZW5kZXJlZCBieSBSZWFjdCBhbmQgaXMgbm90IGEgdG9wLWxldmVsIGNvbnRhaW5lci4gJXMnLCBpc0NvbnRhaW5lclJlYWN0Um9vdCA/ICdZb3UgbWF5IGhhdmUgYWNjaWRlbnRhbGx5IHBhc3NlZCBpbiBhIFJlYWN0IHJvb3Qgbm9kZSBpbnN0ZWFkICcgKyAnb2YgaXRzIGNvbnRhaW5lci4nIDogJ0luc3RlYWQsIGhhdmUgdGhlIHBhcmVudCBjb21wb25lbnQgdXBkYXRlIGl0cyBzdGF0ZSBhbmQgJyArICdyZXJlbmRlciBpbiBvcmRlciB0byByZW1vdmUgdGhpcyBjb21wb25lbnQuJykgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwgY29tcG9uZW50LCBjb250YWluZXIpO1xuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICBkZWxldGUgY29udGFpbmVyc0J5UmVhY3RSb290SURbcmVhY3RSb290SURdO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBkZWxldGUgcm9vdEVsZW1lbnRzQnlSZWFjdFJvb3RJRFtyZWFjdFJvb3RJRF07XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgY29udGFpbnMgUmVhY3QgY29tcG9uZW50IHRvIHdoaWNoIHRoZVxuICAgKiBzdXBwbGllZCBET00gYGlkYCBiZWxvbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIElEIG9mIGFuIGVsZW1lbnQgcmVuZGVyZWQgYnkgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4gez9ET01FbGVtZW50fSBET00gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBgaWRgLlxuICAgKi9cbiAgZmluZFJlYWN0Q29udGFpbmVyRm9ySUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciByZWFjdFJvb3RJRCA9IFJlYWN0SW5zdGFuY2VIYW5kbGVzLmdldFJlYWN0Um9vdElERnJvbU5vZGVJRChpZCk7XG4gICAgdmFyIGNvbnRhaW5lciA9IGNvbnRhaW5lcnNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcm9vdEVsZW1lbnQgPSByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXTtcbiAgICAgIGlmIChyb290RWxlbWVudCAmJiByb290RWxlbWVudC5wYXJlbnROb2RlICE9PSBjb250YWluZXIpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoXG4gICAgICAgIC8vIENhbGwgaW50ZXJuYWxHZXRJRCBoZXJlIGJlY2F1c2UgZ2V0SUQgY2FsbHMgaXNWYWxpZCB3aGljaCBjYWxsc1xuICAgICAgICAvLyBmaW5kUmVhY3RDb250YWluZXJGb3JJRCAodGhpcyBmdW5jdGlvbikuXG4gICAgICAgIGludGVybmFsR2V0SUQocm9vdEVsZW1lbnQpID09PSByZWFjdFJvb3RJRCwgJ1JlYWN0TW91bnQ6IFJvb3QgZWxlbWVudCBJRCBkaWZmZXJlZCBmcm9tIHJlYWN0Um9vdElELicpIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIgY29udGFpbmVyQ2hpbGQgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgICAgaWYgKGNvbnRhaW5lckNoaWxkICYmIHJlYWN0Um9vdElEID09PSBpbnRlcm5hbEdldElEKGNvbnRhaW5lckNoaWxkKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBjb250YWluZXIgaGFzIGEgbmV3IGNoaWxkIHdpdGggdGhlIHNhbWUgSUQgYXMgdGhlIG9sZFxuICAgICAgICAgIC8vIHJvb3QgZWxlbWVudCwgdGhlbiByb290RWxlbWVudHNCeVJlYWN0Um9vdElEW3JlYWN0Um9vdElEXSBpc1xuICAgICAgICAgIC8vIGp1c3Qgc3RhbGUgYW5kIG5lZWRzIHRvIGJlIHVwZGF0ZWQuIFRoZSBjYXNlIHRoYXQgZGVzZXJ2ZXMgYVxuICAgICAgICAgIC8vIHdhcm5pbmcgaXMgd2hlbiB0aGUgY29udGFpbmVyIGlzIGVtcHR5LlxuICAgICAgICAgIHJvb3RFbGVtZW50c0J5UmVhY3RSb290SURbcmVhY3RSb290SURdID0gY29udGFpbmVyQ2hpbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdE1vdW50OiBSb290IGVsZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGl0cyBvcmlnaW5hbCAnICsgJ2NvbnRhaW5lci4gTmV3IGNvbnRhaW5lcjogJXMnLCByb290RWxlbWVudC5wYXJlbnROb2RlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZXI7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGVsZW1lbnQgcmVuZGVyZWQgYnkgUmVhY3Qgd2l0aCB0aGUgc3VwcGxpZWQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBJRCBvZiBhIERPTSBub2RlIGluIHRoZSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge0RPTUVsZW1lbnR9IFJvb3QgRE9NIG5vZGUgb2YgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICovXG4gIGZpbmRSZWFjdE5vZGVCeUlEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgcmVhY3RSb290ID0gUmVhY3RNb3VudC5maW5kUmVhY3RDb250YWluZXJGb3JJRChpZCk7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuZmluZENvbXBvbmVudFJvb3QocmVhY3RSb290LCBpZCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB1cCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBzdXBwbGllZCBub2RlIHRvIGZpbmQgYSBub2RlIHRoYXQgaXMgYVxuICAgKiBET00gcmVwcmVzZW50YXRpb24gb2YgYSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgYnkgdGhpcyBjb3B5IG9mIFJlYWN0LlxuICAgKlxuICAgKiBAcGFyYW0geyp9IG5vZGVcbiAgICogQHJldHVybiB7P0RPTUV2ZW50VGFyZ2V0fVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldEZpcnN0UmVhY3RET006IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGZpbmRGaXJzdFJlYWN0RE9NSW1wbChub2RlKTtcbiAgfSxcblxuICAvKipcbiAgICogRmluZHMgYSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIGB0YXJnZXRJRGAgaW5zaWRlIG9mIHRoZSBzdXBwbGllZFxuICAgKiBgYW5jZXN0b3JOb2RlYC4gIEV4cGxvaXRzIHRoZSBJRCBuYW1pbmcgc2NoZW1lIHRvIHBlcmZvcm0gdGhlIHNlYXJjaFxuICAgKiBxdWlja2x5LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBhbmNlc3Rvck5vZGUgU2VhcmNoIGZyb20gdGhpcyByb290LlxuICAgKiBAcGFyYXJtIHtzdHJpbmd9IHRhcmdldElEIElEIG9mIHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7RE9NRXZlbnRUYXJnZXR9IERPTSBub2RlIHdpdGggdGhlIHN1cHBsaWVkIGB0YXJnZXRJRGAuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZmluZENvbXBvbmVudFJvb3Q6IGZ1bmN0aW9uIChhbmNlc3Rvck5vZGUsIHRhcmdldElEKSB7XG4gICAgdmFyIGZpcnN0Q2hpbGRyZW4gPSBmaW5kQ29tcG9uZW50Um9vdFJldXNhYmxlQXJyYXk7XG4gICAgdmFyIGNoaWxkSW5kZXggPSAwO1xuXG4gICAgdmFyIGRlZXBlc3RBbmNlc3RvciA9IGZpbmREZWVwZXN0Q2FjaGVkQW5jZXN0b3IodGFyZ2V0SUQpIHx8IGFuY2VzdG9yTm9kZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgb24gdGhlIG5leHQgbGluZTsgZ2l2ZSBhbiBlYXJseSB3YXJuaW5nXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkZWVwZXN0QW5jZXN0b3IgIT0gbnVsbCwgJ1JlYWN0IGNhblxcJ3QgZmluZCB0aGUgcm9vdCBjb21wb25lbnQgbm9kZSBmb3IgZGF0YS1yZWFjdGlkIHZhbHVlICcgKyAnYCVzYC4gSWYgeW91XFwncmUgc2VlaW5nIHRoaXMgbWVzc2FnZSwgaXQgcHJvYmFibHkgbWVhbnMgdGhhdCAnICsgJ3lvdVxcJ3ZlIGxvYWRlZCB0d28gY29waWVzIG9mIFJlYWN0IG9uIHRoZSBwYWdlLiBBdCB0aGlzIHRpbWUsIG9ubHkgJyArICdhIHNpbmdsZSBjb3B5IG9mIFJlYWN0IGNhbiBiZSBsb2FkZWQgYXQgYSB0aW1lLicsIHRhcmdldElEKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmaXJzdENoaWxkcmVuWzBdID0gZGVlcGVzdEFuY2VzdG9yLmZpcnN0Q2hpbGQ7XG4gICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSAxO1xuXG4gICAgd2hpbGUgKGNoaWxkSW5kZXggPCBmaXJzdENoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdmFyIGNoaWxkID0gZmlyc3RDaGlsZHJlbltjaGlsZEluZGV4KytdO1xuICAgICAgdmFyIHRhcmdldENoaWxkO1xuXG4gICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkSUQgPSBSZWFjdE1vdW50LmdldElEKGNoaWxkKTtcbiAgICAgICAgaWYgKGNoaWxkSUQpIHtcbiAgICAgICAgICAvLyBFdmVuIGlmIHdlIGZpbmQgdGhlIG5vZGUgd2UncmUgbG9va2luZyBmb3IsIHdlIGZpbmlzaCBsb29waW5nXG4gICAgICAgICAgLy8gdGhyb3VnaCBpdHMgc2libGluZ3MgdG8gZW5zdXJlIHRoZXkncmUgY2FjaGVkIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIC8vIHRvIHJldmlzaXQgdGhpcyBub2RlIGFnYWluLiBPdGhlcndpc2UsIHdlIG1ha2Ugbl4yIGNhbGxzIHRvIGdldElEXG4gICAgICAgICAgLy8gd2hlbiB2aXNpdGluZyB0aGUgbWFueSBjaGlsZHJlbiBvZiBhIHNpbmdsZSBub2RlIGluIG9yZGVyLlxuXG4gICAgICAgICAgaWYgKHRhcmdldElEID09PSBjaGlsZElEKSB7XG4gICAgICAgICAgICB0YXJnZXRDaGlsZCA9IGNoaWxkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoUmVhY3RJbnN0YW5jZUhhbmRsZXMuaXNBbmNlc3RvcklET2YoY2hpbGRJRCwgdGFyZ2V0SUQpKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgY2hpbGQgd2hvc2UgSUQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGdpdmVuIElELFxuICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4gYmUgc3VyZSB0aGF0IHdlIG9ubHkgd2FudCB0byBzZWFyY2ggdGhlIHN1YnRyZWVcbiAgICAgICAgICAgIC8vIHJvb3RlZCBhdCB0aGlzIGNoaWxkLCBzbyB3ZSBjYW4gdGhyb3cgb3V0IHRoZSByZXN0IG9mIHRoZVxuICAgICAgICAgICAgLy8gc2VhcmNoIHN0YXRlLlxuICAgICAgICAgICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSBjaGlsZEluZGV4ID0gMDtcbiAgICAgICAgICAgIGZpcnN0Q2hpbGRyZW4ucHVzaChjaGlsZC5maXJzdENoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBjaGlsZCBoYWQgbm8gSUQsIHRoZW4gdGhlcmUncyBhIGNoYW5jZSB0aGF0IGl0IHdhc1xuICAgICAgICAgIC8vIGluamVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGJyb3dzZXIsIGFzIHdoZW4gYSBgPHRhYmxlPmBcbiAgICAgICAgICAvLyBlbGVtZW50IHNwcm91dHMgYW4gZXh0cmEgYDx0Ym9keT5gIGNoaWxkIGFzIGEgc2lkZSBlZmZlY3Qgb2ZcbiAgICAgICAgICAvLyBgLmlubmVySFRNTGAgcGFyc2luZy4gT3B0aW1pc3RpY2FsbHkgY29udGludWUgZG93biB0aGlzXG4gICAgICAgICAgLy8gYnJhbmNoLCBidXQgbm90IGJlZm9yZSBleGFtaW5pbmcgdGhlIG90aGVyIHNpYmxpbmdzLlxuICAgICAgICAgIGZpcnN0Q2hpbGRyZW4ucHVzaChjaGlsZC5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXRDaGlsZCkge1xuICAgICAgICAvLyBFbXB0eWluZyBmaXJzdENoaWxkcmVuL2ZpbmRDb21wb25lbnRSb290UmV1c2FibGVBcnJheSBpc1xuICAgICAgICAvLyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgYnV0IGl0IGhlbHBzIHRoZSBHQyByZWNsYWltXG4gICAgICAgIC8vIGFueSBub2RlcyB0aGF0IHdlcmUgbGVmdCBhdCB0aGUgZW5kIG9mIHRoZSBzZWFyY2guXG4gICAgICAgIGZpcnN0Q2hpbGRyZW4ubGVuZ3RoID0gMDtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0Q2hpbGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZmlyc3RDaGlsZHJlbi5sZW5ndGggPSAwO1xuXG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRDb21wb25lbnRSb290KC4uLiwgJXMpOiBVbmFibGUgdG8gZmluZCBlbGVtZW50LiBUaGlzIHByb2JhYmx5ICcgKyAnbWVhbnMgdGhlIERPTSB3YXMgdW5leHBlY3RlZGx5IG11dGF0ZWQgKGUuZy4sIGJ5IHRoZSBicm93c2VyKSwgJyArICd1c3VhbGx5IGR1ZSB0byBmb3JnZXR0aW5nIGEgPHRib2R5PiB3aGVuIHVzaW5nIHRhYmxlcywgbmVzdGluZyB0YWdzICcgKyAnbGlrZSA8Zm9ybT4sIDxwPiwgb3IgPGE+LCBvciB1c2luZyBub24tU1ZHIGVsZW1lbnRzIGluIGFuIDxzdmc+ICcgKyAncGFyZW50LiAnICsgJ1RyeSBpbnNwZWN0aW5nIHRoZSBjaGlsZCBub2RlcyBvZiB0aGUgZWxlbWVudCB3aXRoIFJlYWN0IElEIGAlc2AuJywgdGFyZ2V0SUQsIFJlYWN0TW91bnQuZ2V0SUQoYW5jZXN0b3JOb2RlKSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9LFxuXG4gIF9tb3VudEltYWdlSW50b05vZGU6IGZ1bmN0aW9uIChtYXJrdXAsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKSB7XG4gICAgIShjb250YWluZXIgJiYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbW91bnRDb21wb25lbnRJbnRvTm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCB2YWxpZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHtcbiAgICAgIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VNYXJrdXAobWFya3VwLCByb290RWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNoZWNrc3VtID0gcm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTtcbiAgICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTtcblxuICAgICAgICB2YXIgcm9vdE1hcmt1cCA9IHJvb3RFbGVtZW50Lm91dGVySFRNTDtcbiAgICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FLCBjaGVja3N1bSk7XG5cbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRNYXJrdXAgPSBtYXJrdXA7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgLy8gYmVjYXVzZSByb290TWFya3VwIGlzIHJldHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlvbnNcbiAgICAgICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBgbWFya3VwYC4gSGVyZSxcbiAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8gYSA8ZGl2PiBvciA8aWZyYW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lclxuICAgICAgICAgIC8vIHR5cGUgdG8gcGVyZm9ybSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFyaW5nLlxuICAgICAgICAgIHZhciBub3JtYWxpemVyO1xuICAgICAgICAgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9IG1hcmt1cDtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmlubmVySFRNTDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuY29udGVudERvY3VtZW50LndyaXRlKG1hcmt1cCk7XG4gICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0RGlmZmVyZW5jZUluZGV4KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApO1xuICAgICAgICB2YXIgZGlmZmVyZW5jZSA9ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290TWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApO1xuXG4gICAgICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyAnICsgJ3NlcnZlciByZW5kZXJpbmcgYnV0IHRoZSBjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyB1c3VhbGx5ICcgKyAnbWVhbnMgeW91IHJlbmRlcmVkIGEgZGlmZmVyZW50IGNvbXBvbmVudCB0eXBlIG9yIHByb3BzIG9uICcgKyAndGhlIGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSAnICsgJ21ldGhvZHMgYXJlIGltcHVyZS4gUmVhY3QgY2Fubm90IGhhbmRsZSB0aGlzIGNhc2UgZHVlIHRvICcgKyAnY3Jvc3MtYnJvd3NlciBxdWlya3MgYnkgcmVuZGVyaW5nIGF0IHRoZSBkb2N1bWVudCByb290LiBZb3UgJyArICdzaG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzICcgKyAnYW5kIGVuc3VyZSB0aGUgcHJvcHMgYXJlIHRoZSBzYW1lIGNsaWVudCBhbmQgc2VydmVyIHNpZGU6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0IGF0dGVtcHRlZCB0byByZXVzZSBtYXJrdXAgaW4gYSBjb250YWluZXIgYnV0IHRoZSAnICsgJ2NoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIGdlbmVyYWxseSBtZWFucyB0aGF0IHlvdSBhcmUgJyArICd1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGFuZCB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgJyArICdzZXJ2ZXIgd2FzIG5vdCB3aGF0IHRoZSBjbGllbnQgd2FzIGV4cGVjdGluZy4gUmVhY3QgaW5qZWN0ZWQgJyArICduZXcgbWFya3VwIHRvIGNvbXBlbnNhdGUgd2hpY2ggd29ya3MgYnV0IHlvdSBoYXZlIGxvc3QgbWFueSAnICsgJ29mIHRoZSBiZW5lZml0cyBvZiBzZXJ2ZXIgcmVuZGVyaW5nLiBJbnN0ZWFkLCBmaWd1cmUgb3V0ICcgKyAnd2h5IHRoZSBtYXJrdXAgYmVpbmcgZ2VuZXJhdGVkIGlzIGRpZmZlcmVudCBvbiB0aGUgY2xpZW50ICcgKyAnb3Igc2VydmVyOlxcbiVzJywgZGlmZmVyZW5jZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgYnV0ICcgKyAneW91IGRpZG5cXCd0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBXZSBjYW5cXCd0IGRvIHRoaXMgJyArICd3aXRob3V0IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzLiAnICsgJ1NlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gICAgICB9XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobWFya3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW5uZXJIVE1MKGNvbnRhaW5lciwgbWFya3VwKTtcbiAgICB9XG4gIH0sXG5cbiAgb3duZXJEb2N1bWVudENvbnRleHRLZXk6IG93bmVyRG9jdW1lbnRDb250ZXh0S2V5LFxuXG4gIC8qKlxuICAgKiBSZWFjdCBJRCB1dGlsaXRpZXMuXG4gICAqL1xuXG4gIGdldFJlYWN0Um9vdElEOiBnZXRSZWFjdFJvb3RJRCxcblxuICBnZXRJRDogZ2V0SUQsXG5cbiAgc2V0SUQ6IHNldElELFxuXG4gIGdldE5vZGU6IGdldE5vZGUsXG5cbiAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0Tm9kZUZyb21JbnN0YW5jZSxcblxuICBpc1ZhbGlkOiBpc1ZhbGlkLFxuXG4gIHB1cmdlSUQ6IHB1cmdlSURcbn07XG5cblJlYWN0UGVyZi5tZWFzdXJlTWV0aG9kcyhSZWFjdE1vdW50LCAnUmVhY3RNb3VudCcsIHtcbiAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6ICdfcmVuZGVyTmV3Um9vdENvbXBvbmVudCcsXG4gIF9tb3VudEltYWdlSW50b05vZGU6ICdfbW91bnRJbWFnZUludG9Ob2RlJ1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNSTmIzVnVkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVFc5MWJuUmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJFVDAxUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHZSRTlOVUhKdmNHVnlkSGtuS1R0Y2JuWmhjaUJTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBRbkp2ZDNObGNrVjJaVzUwUlcxcGRIUmxjaWNwTzF4dWRtRnlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU4xY25KbGJuUlBkMjVsY2ljcE8xeHVkbUZ5SUZKbFlXTjBSRTlOUm1WaGRIVnlaVVpzWVdkeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFUlBUVVpsWVhSMWNtVkdiR0ZuY3ljcE8xeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JGYlhCMGVVTnZiWEJ2Ym1WdWRGSmxaMmx6ZEhKNUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnRjSFI1UTI5dGNHOXVaVzUwVW1WbmFYTjBjbmtuS1R0Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1uS1R0Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFRXRndJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRWx1YzNSaGJtTmxUV0Z3SnlrN1hHNTJZWElnVW1WaFkzUk5ZWEpyZFhCRGFHVmphM04xYlNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiU2NwTzF4dWRtRnlJRkpsWVdOMFVHVnlaaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRWlhKbUp5azdYRzUyWVhJZ1VtVmhZM1JTWldOdmJtTnBiR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZKbFkyOXVZMmxzWlhJbktUdGNiblpoY2lCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEZWd1pHRjBaVkYxWlhWbEp5azdYRzUyWVhJZ1VtVmhZM1JWY0dSaGRHVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRlZ3WkdGMFpYTW5LVHRjYmx4dWRtRnlJR0Z6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2VDJKcVpXTjBMbUZ6YzJsbmJpY3BPMXh1ZG1GeUlHVnRjSFI1VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbFBZbXBsWTNRbktUdGNiblpoY2lCamIyNTBZV2x1YzA1dlpHVWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlqYjI1MFlXbHVjMDV2WkdVbktUdGNiblpoY2lCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOXBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdjMlYwU1c1dVpYSklWRTFNSUQwZ2NtVnhkV2x5WlNnbkxpOXpaWFJKYm01bGNraFVUVXduS1R0Y2JuWmhjaUJ6YUc5MWJHUlZjR1JoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmMyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5RbktUdGNiblpoY2lCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQnlaWEYxYVhKbEtDY3VMM1poYkdsa1lYUmxSRTlOVG1WemRHbHVaeWNwTzF4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JuWmhjaUJCVkZSU1gwNUJUVVVnUFNCRVQwMVFjbTl3WlhKMGVTNUpSRjlCVkZSU1NVSlZWRVZmVGtGTlJUdGNiblpoY2lCdWIyUmxRMkZqYUdVZ1BTQjdmVHRjYmx4dWRtRnlJRVZNUlUxRlRsUmZUazlFUlY5VVdWQkZJRDBnTVR0Y2JuWmhjaUJFVDBOZlRrOUVSVjlVV1ZCRklEMGdPVHRjYm5aaGNpQkVUME5WVFVWT1ZGOUdVa0ZIVFVWT1ZGOU9UMFJGWDFSWlVFVWdQU0F4TVR0Y2JseHVkbUZ5SUc5M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVJRDBnSjE5ZlVtVmhZM1JOYjNWdWRGOXZkMjVsY2tSdlkzVnRaVzUwSkNjZ0t5Qk5ZWFJvTG5KaGJtUnZiU2dwTG5SdlUzUnlhVzVuS0RNMktTNXpiR2xqWlNneUtUdGNibHh1THlvcUlFMWhjSEJwYm1jZ1puSnZiU0J5WldGamRGSnZiM1JKUkNCMGJ5QlNaV0ZqZENCamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVdUlDb3ZYRzUyWVhJZ2FXNXpkR0Z1WTJWelFubFNaV0ZqZEZKdmIzUkpSQ0E5SUh0OU8xeHVYRzR2S2lvZ1RXRndjR2x1WnlCbWNtOXRJSEpsWVdOMFVtOXZkRWxFSUhSdklHQmpiMjUwWVdsdVpYSmdJRzV2WkdWekxpQXFMMXh1ZG1GeUlHTnZiblJoYVc1bGNuTkNlVkpsWVdOMFVtOXZkRWxFSUQwZ2UzMDdYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDOHFLaUJmWDBSRlZsOWZMVzl1YkhrZ2JXRndjR2x1WnlCbWNtOXRJSEpsWVdOMFVtOXZkRWxFSUhSdklISnZiM1FnWld4bGJXVnVkSE11SUNvdlhHNGdJSFpoY2lCeWIyOTBSV3hsYldWdWRITkNlVkpsWVdOMFVtOXZkRWxFSUQwZ2UzMDdYRzU5WEc1Y2JpOHZJRlZ6WldRZ2RHOGdjM1J2Y21VZ1luSmxZV1IwYUMxbWFYSnpkQ0J6WldGeVkyZ2djM1JoZEdVZ2FXNGdabWx1WkVOdmJYQnZibVZ1ZEZKdmIzUXVYRzUyWVhJZ1ptbHVaRU52YlhCdmJtVnVkRkp2YjNSU1pYVnpZV0pzWlVGeWNtRjVJRDBnVzEwN1hHNWNiaThxS2x4dUlDb2dSbWx1WkhNZ2RHaGxJR2x1WkdWNElHOW1JSFJvWlNCbWFYSnpkQ0JqYUdGeVlXTjBaWEpjYmlBcUlIUm9ZWFFuY3lCdWIzUWdZMjl0Ylc5dUlHSmxkSGRsWlc0Z2RHaGxJSFIzYnlCbmFYWmxiaUJ6ZEhKcGJtZHpMbHh1SUNwY2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdkR2hsSUdsdVpHVjRJRzltSUhSb1pTQmphR0Z5WVdOMFpYSWdkMmhsY21VZ2RHaGxJSE4wY21sdVozTWdaR2wyWlhKblpWeHVJQ292WEc1bWRXNWpkR2x2YmlCbWFYSnpkRVJwWm1abGNtVnVZMlZKYm1SbGVDaHpkSEpwYm1jeExDQnpkSEpwYm1jeUtTQjdYRzRnSUhaaGNpQnRhVzVNWlc0Z1BTQk5ZWFJvTG0xcGJpaHpkSEpwYm1jeExteGxibWQwYUN3Z2MzUnlhVzVuTWk1c1pXNW5kR2dwTzF4dUlDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJRzFwYmt4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnYVdZZ0tITjBjbWx1WnpFdVkyaGhja0YwS0drcElDRTlQU0J6ZEhKcGJtY3lMbU5vWVhKQmRDaHBLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkSEpwYm1jeExteGxibWQwYUNBOVBUMGdjM1J5YVc1bk1pNXNaVzVuZEdnZ1B5QXRNU0E2SUcxcGJreGxianRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjhSRTlOUkc5amRXMWxiblI5SUdOdmJuUmhhVzVsY2lCRVQwMGdaV3hsYldWdWRDQjBhR0YwSUcxaGVTQmpiMjUwWVdsdVhHNGdLaUJoSUZKbFlXTjBJR052YlhCdmJtVnVkRnh1SUNvZ1FISmxkSFZ5YmlCN1B5cDlJRVJQVFNCbGJHVnRaVzUwSUhSb1lYUWdiV0Y1SUdoaGRtVWdkR2hsSUhKbFlXTjBVbTl2ZENCSlJDd2diM0lnYm5Wc2JDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBVbVZoWTNSU2IyOTBSV3hsYldWdWRFbHVRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWtnZTF4dUlDQnBaaUFvSVdOdmJuUmhhVzVsY2lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBOVBUMGdSRTlEWDA1UFJFVmZWRmxRUlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJqYjI1MFlXbHVaWEl1Wkc5amRXMWxiblJGYkdWdFpXNTBPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQmpiMjUwWVdsdVpYSXVabWx5YzNSRGFHbHNaRHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJSFJvWVhRZ2JXRjVJR052Ym5SaGFXNGdZU0JTWldGamRDQmpiMjF3YjI1bGJuUXVYRzRnS2lCQWNtVjBkWEp1SUhzL2MzUnlhVzVuZlNCQklGd2ljbVZoWTNSU2IyOTBYQ0lnU1VRc0lHbG1JR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJR2x6SUhKbGJtUmxjbVZrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJuWlhSU1pXRmpkRkp2YjNSSlJDaGpiMjUwWVdsdVpYSXBJSHRjYmlBZ2RtRnlJSEp2YjNSRmJHVnRaVzUwSUQwZ1oyVjBVbVZoWTNSU2IyOTBSV3hsYldWdWRFbHVRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWs3WEc0Z0lISmxkSFZ5YmlCeWIyOTBSV3hsYldWdWRDQW1KaUJTWldGamRFMXZkVzUwTG1kbGRFbEVLSEp2YjNSRmJHVnRaVzUwS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJCWTJObGMzTnBibWNnYm05a1pWdEJWRlJTWDA1QlRVVmRJRzl5SUdOaGJHeHBibWNnWjJWMFFYUjBjbWxpZFhSbEtFRlVWRkpmVGtGTlJTa2diMjRnWVNCbWIzSnRYRzRnS2lCbGJHVnRaVzUwSUdOaGJpQnlaWFIxY200Z2FYUnpJR052Ym5SeWIyd2dkMmh2YzJVZ2JtRnRaU0J2Y2lCSlJDQmxjWFZoYkhNZ1FWUlVVbDlPUVUxRkxpQkJiR3hjYmlBcUlFUlBUU0J1YjJSbGN5QnpkWEJ3YjNKMElHQm5aWFJCZEhSeWFXSjFkR1ZPYjJSbFlDQmlkWFFnZEdocGN5QmpZVzRnWVd4emJ5Qm5aWFFnWTJGc2JHVmtJRzl1WEc0Z0tpQnZkR2hsY2lCdlltcGxZM1J6SUhOdklHcDFjM1FnY21WMGRYSnVJQ2NuSUdsbUlIZGxKM0psSUdkcGRtVnVJSE52YldWMGFHbHVaeUJ2ZEdobGNpQjBhR0Z1SUdGY2JpQXFJRVJQVFNCdWIyUmxJQ2h6ZFdOb0lHRnpJSGRwYm1SdmR5a3VYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9SRTlOUld4bGJXVnVkSHhFVDAxWGFXNWtiM2Q4UkU5TlJHOWpkVzFsYm5SOFJFOU5WR1Y0ZEU1dlpHVjlJRzV2WkdVZ1JFOU5JRzV2WkdVdVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRWxFSUc5bUlIUm9aU0J6ZFhCd2JHbGxaQ0JnWkc5dFRtOWtaV0F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2RsZEVsRUtHNXZaR1VwSUh0Y2JpQWdkbUZ5SUdsa0lEMGdhVzUwWlhKdVlXeEhaWFJKUkNodWIyUmxLVHRjYmlBZ2FXWWdLR2xrS1NCN1hHNGdJQ0FnYVdZZ0tHNXZaR1ZEWVdOb1pTNW9ZWE5QZDI1UWNtOXdaWEowZVNocFpDa3BJSHRjYmlBZ0lDQWdJSFpoY2lCallXTm9aV1FnUFNCdWIyUmxRMkZqYUdWYmFXUmRPMXh1SUNBZ0lDQWdhV1lnS0dOaFkyaGxaQ0FoUFQwZ2JtOWtaU2tnZTF4dUlDQWdJQ0FnSUNBaElXbHpWbUZzYVdRb1kyRmphR1ZrTENCcFpDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblVtVmhZM1JOYjNWdWREb2dWSGR2SUhaaGJHbGtJR0oxZENCMWJtVnhkV0ZzSUc1dlpHVnpJSGRwZEdnZ2RHaGxJSE5oYldVZ1lDVnpZRG9nSlhNbkxDQkJWRlJTWDA1QlRVVXNJR2xrS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQWdJQ0FnYm05a1pVTmhZMmhsVzJsa1hTQTlJRzV2WkdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJRzV2WkdWRFlXTm9aVnRwWkYwZ1BTQnViMlJsTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJwWkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYVc1MFpYSnVZV3hIWlhSSlJDaHViMlJsS1NCN1hHNGdJQzh2SUVsbUlHNXZaR1VnYVhNZ2MyOXRaWFJvYVc1bklHeHBhMlVnWVNCM2FXNWtiM2NzSUdSdlkzVnRaVzUwTENCdmNpQjBaWGgwSUc1dlpHVXNJRzV2Ym1VZ2IyWmNiaUFnTHk4Z2QyaHBZMmdnYzNWd2NHOXlkQ0JoZEhSeWFXSjFkR1Z6SUc5eUlHRWdMbWRsZEVGMGRISnBZblYwWlNCdFpYUm9iMlFzSUdkeVlXTmxablZzYkhrZ2NtVjBkWEp1WEc0Z0lDOHZJSFJvWlNCbGJYQjBlU0J6ZEhKcGJtY3NJR0Z6SUdsbUlIUm9aU0JoZEhSeWFXSjFkR1VnZDJWeVpTQnRhWE56YVc1bkxseHVJQ0J5WlhSMWNtNGdibTlrWlNBbUppQnViMlJsTG1kbGRFRjBkSEpwWW5WMFpTQW1KaUJ1YjJSbExtZGxkRUYwZEhKcFluVjBaU2hCVkZSU1gwNUJUVVVwSUh4OElDY25PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmxkSE1nZEdobElGSmxZV04wTFhOd1pXTnBabWxqSUVsRUlHOW1JSFJvWlNCbmFYWmxiaUJ1YjJSbExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdibTlrWlNCVWFHVWdSRTlOSUc1dlpHVWdkMmh2YzJVZ1NVUWdkMmxzYkNCaVpTQnpaWFF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2FXUWdWR2hsSUhaaGJIVmxJRzltSUhSb1pTQkpSQ0JoZEhSeWFXSjFkR1V1WEc0Z0tpOWNibVoxYm1OMGFXOXVJSE5sZEVsRUtHNXZaR1VzSUdsa0tTQjdYRzRnSUhaaGNpQnZiR1JKUkNBOUlHbHVkR1Z5Ym1Gc1IyVjBTVVFvYm05a1pTazdYRzRnSUdsbUlDaHZiR1JKUkNBaFBUMGdhV1FwSUh0Y2JpQWdJQ0JrWld4bGRHVWdibTlrWlVOaFkyaGxXMjlzWkVsRVhUdGNiaUFnZlZ4dUlDQnViMlJsTG5ObGRFRjBkSEpwWW5WMFpTaEJWRlJTWDA1QlRVVXNJR2xrS1R0Y2JpQWdibTlrWlVOaFkyaGxXMmxrWFNBOUlHNXZaR1U3WEc1OVhHNWNiaThxS2x4dUlDb2dSbWx1WkhNZ2RHaGxJRzV2WkdVZ2QybDBhQ0IwYUdVZ2MzVndjR3hwWldRZ1VtVmhZM1F0WjJWdVpYSmhkR1ZrSUVSUFRTQkpSQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdhV1FnUVNCU1pXRmpkQzFuWlc1bGNtRjBaV1FnUkU5TklFbEVMbHh1SUNvZ1FISmxkSFZ5YmlCN1JFOU5SV3hsYldWdWRIMGdSRTlOSUc1dlpHVWdkMmwwYUNCMGFHVWdjM1Z3Y0d4bFpDQmdhV1JnTGx4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2k5Y2JtWjFibU4wYVc5dUlHZGxkRTV2WkdVb2FXUXBJSHRjYmlBZ2FXWWdLQ0Z1YjJSbFEyRmphR1V1YUdGelQzZHVVSEp2Y0dWeWRIa29hV1FwSUh4OElDRnBjMVpoYkdsa0tHNXZaR1ZEWVdOb1pWdHBaRjBzSUdsa0tTa2dlMXh1SUNBZ0lHNXZaR1ZEWVdOb1pWdHBaRjBnUFNCU1pXRmpkRTF2ZFc1MExtWnBibVJTWldGamRFNXZaR1ZDZVVsRUtHbGtLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdibTlrWlVOaFkyaGxXMmxrWFR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QjBhR1VnYm05a1pTQjNhWFJvSUhSb1pTQnpkWEJ3YkdsbFpDQndkV0pzYVdNZ1VtVmhZM1FnYVc1emRHRnVZMlV1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHNxZlNCcGJuTjBZVzVqWlNCQklIQjFZbXhwWXlCU1pXRmpkQ0JwYm5OMFlXNWpaUzVjYmlBcUlFQnlaWFIxY200Z2V6OUVUMDFGYkdWdFpXNTBmU0JFVDAwZ2JtOWtaU0IzYVhSb0lIUm9aU0J6ZFhCd2JHVmtJR0JwWkdBdVhHNGdLaUJBYVc1MFpYSnVZV3hjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwVG05a1pVWnliMjFKYm5OMFlXNWpaU2hwYm5OMFlXNWpaU2tnZTF4dUlDQjJZWElnYVdRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sVFdGd0xtZGxkQ2hwYm5OMFlXNWpaU2t1WDNKdmIzUk9iMlJsU1VRN1hHNGdJR2xtSUNoU1pXRmpkRVZ0Y0hSNVEyOXRjRzl1Wlc1MFVtVm5hWE4wY25rdWFYTk9kV3hzUTI5dGNHOXVaVzUwU1VRb2FXUXBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNiaUFnYVdZZ0tDRnViMlJsUTJGamFHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2FXUXBJSHg4SUNGcGMxWmhiR2xrS0c1dlpHVkRZV05vWlZ0cFpGMHNJR2xrS1NrZ2UxeHVJQ0FnSUc1dlpHVkRZV05vWlZ0cFpGMGdQU0JTWldGamRFMXZkVzUwTG1acGJtUlNaV0ZqZEU1dlpHVkNlVWxFS0dsa0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JtOWtaVU5oWTJobFcybGtYVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkJJRzV2WkdVZ2FYTWdYQ0oyWVd4cFpGd2lJR2xtSUdsMElHbHpJR052Ym5SaGFXNWxaQ0JpZVNCaElHTjFjbkpsYm5Sc2VTQnRiM1Z1ZEdWa0lHTnZiblJoYVc1bGNpNWNiaUFxWEc0Z0tpQlVhR2x6SUcxbFlXNXpJSFJvWVhRZ2RHaGxJRzV2WkdVZ1pHOWxjeUJ1YjNRZ2FHRjJaU0IwYnlCaVpTQmpiMjUwWVdsdVpXUWdZbmtnWVNCa2IyTjFiV1Z1ZENCcGJseHVJQ29nYjNKa1pYSWdkRzhnWW1VZ1kyOXVjMmxrWlhKbFpDQjJZV3hwWkM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZXo5RVQwMUZiR1Z0Wlc1MGZTQnViMlJsSUZSb1pTQmpZVzVrYVdSaGRHVWdSRTlOSUc1dlpHVXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1ZHaGxJR1Y0Y0dWamRHVmtJRWxFSUc5bUlIUm9aU0J1YjJSbExseHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVjJobGRHaGxjaUIwYUdVZ2JtOWtaU0JwY3lCamIyNTBZV2x1WldRZ1lua2dZU0J0YjNWdWRHVmtJR052Ym5SaGFXNWxjaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhWE5XWVd4cFpDaHViMlJsTENCcFpDa2dlMXh1SUNCcFppQW9ibTlrWlNrZ2UxeHVJQ0FnSUNFb2FXNTBaWEp1WVd4SFpYUkpSQ2h1YjJSbEtTQTlQVDBnYVdRcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBUVzkxYm5RNklGVnVaWGh3WldOMFpXUWdiVzlrYVdacFkyRjBhVzl1SUc5bUlHQWxjMkFuTENCQlZGUlNYMDVCVFVVcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJSFpoY2lCamIyNTBZV2x1WlhJZ1BTQlNaV0ZqZEUxdmRXNTBMbVpwYm1SU1pXRmpkRU52Ym5SaGFXNWxja1p2Y2tsRUtHbGtLVHRjYmlBZ0lDQnBaaUFvWTI5dWRHRnBibVZ5SUNZbUlHTnZiblJoYVc1elRtOWtaU2hqYjI1MFlXbHVaWElzSUc1dlpHVXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyRjFjMlZ6SUhSb1pTQmpZV05vWlNCMGJ5Qm1iM0puWlhRZ1lXSnZkWFFnYjI1bElGSmxZV04wTFhOd1pXTnBabWxqSUVsRUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCcFpDQlVhR1VnU1VRZ2RHOGdabTl5WjJWMExseHVJQ292WEc1bWRXNWpkR2x2YmlCd2RYSm5aVWxFS0dsa0tTQjdYRzRnSUdSbGJHVjBaU0J1YjJSbFEyRmphR1ZiYVdSZE8xeHVmVnh1WEc1MllYSWdaR1ZsY0dWemRFNXZaR1ZUYjBaaGNpQTlJRzUxYkd3N1hHNW1kVzVqZEdsdmJpQm1hVzVrUkdWbGNHVnpkRU5oWTJobFpFRnVZMlZ6ZEc5eVNXMXdiQ2hoYm1ObGMzUnZja2xFS1NCN1hHNGdJSFpoY2lCaGJtTmxjM1J2Y2lBOUlHNXZaR1ZEWVdOb1pWdGhibU5sYzNSdmNrbEVYVHRjYmlBZ2FXWWdLR0Z1WTJWemRHOXlJQ1ltSUdselZtRnNhV1FvWVc1alpYTjBiM0lzSUdGdVkyVnpkRzl5U1VRcEtTQjdYRzRnSUNBZ1pHVmxjR1Z6ZEU1dlpHVlRiMFpoY2lBOUlHRnVZMlZ6ZEc5eU8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDOHZJRlJvYVhNZ2JtOWtaU0JwYzI0bmRDQndiM0IxYkdGMFpXUWdhVzRnZEdobElHTmhZMmhsTENCemJ5QndjbVZ6ZFcxaFlteDVJRzV2Ym1VZ2IyWWdhWFJ6WEc0Z0lDQWdMeThnWkdWelkyVnVaR0Z1ZEhNZ1lYSmxMaUJDY21WaGF5QnZkWFFnYjJZZ2RHaGxJR3h2YjNBdVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdUlIUm9aU0JrWldWd1pYTjBJR05oWTJobFpDQnViMlJsSUhkb2IzTmxJRWxFSUdseklHRWdjSEpsWm1sNElHOW1JR0IwWVhKblpYUkpSR0F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1pwYm1SRVpXVndaWE4wUTJGamFHVmtRVzVqWlhOMGIzSW9kR0Z5WjJWMFNVUXBJSHRjYmlBZ1pHVmxjR1Z6ZEU1dlpHVlRiMFpoY2lBOUlHNTFiR3c3WEc0Z0lGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMblJ5WVhabGNuTmxRVzVqWlhOMGIzSnpLSFJoY21kbGRFbEVMQ0JtYVc1a1JHVmxjR1Z6ZEVOaFkyaGxaRUZ1WTJWemRHOXlTVzF3YkNrN1hHNWNiaUFnZG1GeUlHWnZkVzVrVG05a1pTQTlJR1JsWlhCbGMzUk9iMlJsVTI5R1lYSTdYRzRnSUdSbFpYQmxjM1JPYjJSbFUyOUdZWElnUFNCdWRXeHNPMXh1SUNCeVpYUjFjbTRnWm05MWJtUk9iMlJsTzF4dWZWeHVYRzR2S2lwY2JpQXFJRTF2ZFc1MGN5QjBhR2x6SUdOdmJYQnZibVZ1ZENCaGJtUWdhVzV6WlhKMGN5QnBkQ0JwYm5SdklIUm9aU0JFVDAwdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUnZJRzF2ZFc1MExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEp2YjNSSlJDQkVUMDBnU1VRZ2IyWWdkR2hsSUhKdmIzUWdibTlrWlM1Y2JpQXFJRUJ3WVhKaGJTQjdSRTlOUld4bGJXVnVkSDBnWTI5dWRHRnBibVZ5SUVSUFRTQmxiR1Z0Wlc1MElIUnZJRzF2ZFc1MElHbHVkRzh1WEc0Z0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUhOb2IzVnNaRkpsZFhObFRXRnlhM1Z3SUVsbUlIUnlkV1VzSUdSdklHNXZkQ0JwYm5ObGNuUWdiV0Z5YTNWd1hHNGdLaTljYm1aMWJtTjBhVzl1SUcxdmRXNTBRMjl0Y0c5dVpXNTBTVzUwYjA1dlpHVW9ZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVXNJSEp2YjNSSlJDd2dZMjl1ZEdGcGJtVnlMQ0IwY21GdWMyRmpkR2x2Yml3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lHTnZiblJsZUhRcElIdGNiaUFnYVdZZ0tGSmxZV04wUkU5TlJtVmhkSFZ5WlVac1lXZHpMblZ6WlVOeVpXRjBaVVZzWlcxbGJuUXBJSHRjYmlBZ0lDQmpiMjUwWlhoMElEMGdZWE56YVdkdUtIdDlMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQnBaaUFvWTI5dWRHRnBibVZ5TG01dlpHVlVlWEJsSUQwOVBTQkVUME5mVGs5RVJWOVVXVkJGS1NCN1hHNGdJQ0FnSUNCamIyNTBaWGgwVzI5M2JtVnlSRzlqZFcxbGJuUkRiMjUwWlhoMFMyVjVYU0E5SUdOdmJuUmhhVzVsY2p0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMjl1ZEdWNGRGdHZkMjVsY2tSdlkzVnRaVzUwUTI5dWRHVjRkRXRsZVYwZ1BTQmpiMjUwWVdsdVpYSXViM2R1WlhKRWIyTjFiV1Z1ZER0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQnBaaUFvWTI5dWRHVjRkQ0E5UFQwZ1pXMXdkSGxQWW1wbFkzUXBJSHRjYmlBZ0lDQWdJR052Ym5SbGVIUWdQU0I3ZlR0Y2JpQWdJQ0I5WEc0Z0lDQWdkbUZ5SUhSaFp5QTlJR052Ym5SaGFXNWxjaTV1YjJSbFRtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUdOdmJuUmxlSFJiZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG1GdVkyVnpkRzl5U1c1bWIwTnZiblJsZUhSTFpYbGRJRDBnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG5Wd1pHRjBaV1JCYm1ObGMzUnZja2x1Wm04b2JuVnNiQ3dnZEdGbkxDQnVkV3hzS1R0Y2JpQWdmVnh1SUNCMllYSWdiV0Z5YTNWd0lEMGdVbVZoWTNSU1pXTnZibU5wYkdWeUxtMXZkVzUwUTI5dGNHOXVaVzUwS0dOdmJYQnZibVZ1ZEVsdWMzUmhibU5sTENCeWIyOTBTVVFzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtUdGNiaUFnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlV1WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTGw5MGIzQk1aWFpsYkZkeVlYQndaWElnUFNCamIyMXdiMjVsYm5SSmJuTjBZVzVqWlR0Y2JpQWdVbVZoWTNSTmIzVnVkQzVmYlc5MWJuUkpiV0ZuWlVsdWRHOU9iMlJsS0cxaGNtdDFjQ3dnWTI5dWRHRnBibVZ5TENCemFHOTFiR1JTWlhWelpVMWhjbXQxY0N3Z2RISmhibk5oWTNScGIyNHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFSmhkR05vWldRZ2JXOTFiblF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklHMXZkVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlISnZiM1JKUkNCRVQwMGdTVVFnYjJZZ2RHaGxJSEp2YjNRZ2JtOWtaUzVjYmlBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJRVJQVFNCbGJHVnRaVzUwSUhSdklHMXZkVzUwSUdsdWRHOHVYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUhOb2IzVnNaRkpsZFhObFRXRnlhM1Z3SUVsbUlIUnlkV1VzSUdSdklHNXZkQ0JwYm5ObGNuUWdiV0Z5YTNWd1hHNGdLaTljYm1aMWJtTjBhVzl1SUdKaGRHTm9aV1JOYjNWdWRFTnZiWEJ2Ym1WdWRFbHVkRzlPYjJSbEtHTnZiWEJ2Ym1WdWRFbHVjM1JoYm1ObExDQnliMjkwU1VRc0lHTnZiblJoYVc1bGNpd2djMmh2ZFd4a1VtVjFjMlZOWVhKcmRYQXNJR052Ym5SbGVIUXBJSHRjYmlBZ2RtRnlJSFJ5WVc1ellXTjBhVzl1SUQwZ1VtVmhZM1JWY0dSaGRHVnpMbEpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNHVaMlYwVUc5dmJHVmtLRnh1SUNBdktpQm1iM0pqWlVoVVRVd2dLaTl6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ2s3WEc0Z0lIUnlZVzV6WVdOMGFXOXVMbkJsY21admNtMG9iVzkxYm5SRGIyMXdiMjVsYm5SSmJuUnZUbTlrWlN3Z2JuVnNiQ3dnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVzSUhKdmIzUkpSQ3dnWTI5dWRHRnBibVZ5TENCMGNtRnVjMkZqZEdsdmJpd2djMmh2ZFd4a1VtVjFjMlZOWVhKcmRYQXNJR052Ym5SbGVIUXBPMXh1SUNCU1pXRmpkRlZ3WkdGMFpYTXVVbVZoWTNSU1pXTnZibU5wYkdWVWNtRnVjMkZqZEdsdmJpNXlaV3hsWVhObEtIUnlZVzV6WVdOMGFXOXVLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlZibTF2ZFc1MGN5QmhJR052YlhCdmJtVnVkQ0JoYm1RZ2NtVnRiM1psY3lCcGRDQm1jbTl0SUhSb1pTQkVUMDB1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdhVzV6ZEdGdVkyVWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObExseHVJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCamIyNTBZV2x1WlhJZ1JFOU5JR1ZzWlcxbGJuUWdkRzhnZFc1dGIzVnVkQ0JtY205dExseHVJQ29nUUdacGJtRnNYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFJRUJ6WldVZ2UxSmxZV04wVFc5MWJuUXVkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFRjBUbTlrWlgxY2JpQXFMMXh1Wm5WdVkzUnBiMjRnZFc1dGIzVnVkRU52YlhCdmJtVnVkRVp5YjIxT2IyUmxLR2x1YzNSaGJtTmxMQ0JqYjI1MFlXbHVaWElwSUh0Y2JpQWdVbVZoWTNSU1pXTnZibU5wYkdWeUxuVnViVzkxYm5SRGIyMXdiMjVsYm5Rb2FXNXpkR0Z1WTJVcE8xeHVYRzRnSUdsbUlDaGpiMjUwWVdsdVpYSXVibTlrWlZSNWNHVWdQVDA5SUVSUFExOU9UMFJGWDFSWlVFVXBJSHRjYmlBZ0lDQmpiMjUwWVdsdVpYSWdQU0JqYjI1MFlXbHVaWEl1Wkc5amRXMWxiblJGYkdWdFpXNTBPMXh1SUNCOVhHNWNiaUFnTHk4Z2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdlpXMXdkSGxwYm1jdFlTMXViMlJsWEc0Z0lIZG9hV3hsSUNoamIyNTBZV2x1WlhJdWJHRnpkRU5vYVd4a0tTQjdYRzRnSUNBZ1kyOXVkR0ZwYm1WeUxuSmxiVzkyWlVOb2FXeGtLR052Ym5SaGFXNWxjaTVzWVhOMFEyaHBiR1FwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZISjFaU0JwWmlCMGFHVWdjM1Z3Y0d4cFpXUWdSRTlOSUc1dlpHVWdhR0Z6SUdFZ1pHbHlaV04wSUZKbFlXTjBMWEpsYm1SbGNtVmtJR05vYVd4a0lIUm9ZWFFnYVhOY2JpQXFJRzV2ZENCaElGSmxZV04wSUhKdmIzUWdaV3hsYldWdWRDNGdWWE5sWm5Wc0lHWnZjaUIzWVhKdWFXNW5JR2x1SUdCeVpXNWtaWEpnTEZ4dUlDb2dZSFZ1Ylc5MWJuUkRiMjF3YjI1bGJuUkJkRTV2WkdWZ0xDQmxkR011WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHMvUkU5TlJXeGxiV1Z1ZEgwZ2JtOWtaU0JVYUdVZ1kyRnVaR2xrWVhSbElFUlBUU0J1YjJSbExseHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUIwYUdVZ1JFOU5JR1ZzWlcxbGJuUWdZMjl1ZEdGcGJuTWdZU0JrYVhKbFkzUWdZMmhwYkdRZ2RHaGhkQ0IzWVhOY2JpQXFJSEpsYm1SbGNtVmtJR0o1SUZKbFlXTjBJR0oxZENCcGN5QnViM1FnWVNCeWIyOTBJR1ZzWlcxbGJuUXVYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYUdGelRtOXVVbTl2ZEZKbFlXTjBRMmhwYkdRb2JtOWtaU2tnZTF4dUlDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQm5aWFJTWldGamRGSnZiM1JKUkNodWIyUmxLVHRjYmlBZ2NtVjBkWEp1SUhKbFlXTjBVbTl2ZEVsRUlEOGdjbVZoWTNSU2IyOTBTVVFnSVQwOUlGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMbWRsZEZKbFlXTjBVbTl2ZEVsRVJuSnZiVTV2WkdWSlJDaHlaV0ZqZEZKdmIzUkpSQ2tnT2lCbVlXeHpaVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklIUm9aU0JtYVhKemRDQW9aR1ZsY0dWemRDa2dZVzVqWlhOMGIzSWdiMllnWVNCdWIyUmxJSGRvYVdOb0lHbHpJSEpsYm1SbGNtVmtJR0o1SUhSb2FYTWdZMjl3ZVZ4dUlDb2diMllnVW1WaFkzUXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHWnBibVJHYVhKemRGSmxZV04wUkU5TlNXMXdiQ2h1YjJSbEtTQjdYRzRnSUM4dklGUm9hWE1nYm05a1pTQnRhV2RvZENCaVpTQm1jbTl0SUdGdWIzUm9aWElnVW1WaFkzUWdhVzV6ZEdGdVkyVXNJSE52SUhkbElHMWhhMlVnYzNWeVpTQnViM1FnZEc5Y2JpQWdMeThnWlhoaGJXbHVaU0IwYUdVZ2JtOWtaU0JqWVdOb1pTQm9aWEpsWEc0Z0lHWnZjaUFvT3lCdWIyUmxJQ1ltSUc1dlpHVXVjR0Z5Wlc1MFRtOWtaU0FoUFQwZ2JtOWtaVHNnYm05a1pTQTlJRzV2WkdVdWNHRnlaVzUwVG05a1pTa2dlMXh1SUNBZ0lHbG1JQ2h1YjJSbExtNXZaR1ZVZVhCbElDRTlQU0F4S1NCN1hHNGdJQ0FnSUNBdkx5Qk9iM1FnWVNCRVQwMUZiR1Z0Wlc1MExDQjBhR1Z5WldadmNtVWdibTkwSUdFZ1VtVmhZM1FnWTI5dGNHOXVaVzUwWEc0Z0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2RtRnlJRzV2WkdWSlJDQTlJR2x1ZEdWeWJtRnNSMlYwU1VRb2JtOWtaU2s3WEc0Z0lDQWdhV1lnS0NGdWIyUmxTVVFwSUh0Y2JpQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJSDFjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVuWlhSU1pXRmpkRkp2YjNSSlJFWnliMjFPYjJSbFNVUW9ibTlrWlVsRUtUdGNibHh1SUNBZ0lDOHZJRWxtSUdOdmJuUmhhVzVsY25OQ2VWSmxZV04wVW05dmRFbEVJR052Ym5SaGFXNXpJSFJvWlNCamIyNTBZV2x1WlhJZ2QyVWdabWx1WkNCaWVTQmpjbUYzYkdsdVp5QjFjRnh1SUNBZ0lDOHZJSFJvWlNCMGNtVmxMQ0IzWlNCcmJtOTNJSFJvWVhRZ2RHaHBjeUJwYm5OMFlXNWpaU0J2WmlCU1pXRmpkQ0J5Wlc1a1pYSmxaQ0IwYUdVZ2JtOWtaUzVjYmlBZ0lDQXZMeUJ1WWk0Z2FYTldZV3hwWkNkeklITjBjbUYwWldkNUlDaDNhWFJvSUdOdmJuUmhhVzV6VG05a1pTa2daRzlsY3lCdWIzUWdkMjl5YXlCaVpXTmhkWE5sSUhKbGJtUmxjbHh1SUNBZ0lDOHZJSFJ5WldWeklHMWhlU0JpWlNCdVpYTjBaV1FnWVc1a0lIZGxJR1J2YmlkMElIZGhiblFnWVNCbVlXeHpaU0J3YjNOcGRHbDJaU0JwYmlCMGFHRjBJR05oYzJVdVhHNGdJQ0FnZG1GeUlHTjFjbkpsYm5RZ1BTQnViMlJsTzF4dUlDQWdJSFpoY2lCc1lYTjBTVVE3WEc0Z0lDQWdaRzhnZTF4dUlDQWdJQ0FnYkdGemRFbEVJRDBnYVc1MFpYSnVZV3hIWlhSSlJDaGpkWEp5Wlc1MEtUdGNiaUFnSUNBZ0lHTjFjbkpsYm5RZ1BTQmpkWEp5Wlc1MExuQmhjbVZ1ZEU1dlpHVTdYRzRnSUNBZ0lDQnBaaUFvWTNWeWNtVnVkQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGUm9aU0J3WVhOelpXUXRhVzRnYm05a1pTQm9ZWE1nWW1WbGJpQmtaWFJoWTJobFpDQm1jbTl0SUhSb1pTQmpiMjUwWVdsdVpYSWdhWFFnZDJGelhHNGdJQ0FnSUNBZ0lDOHZJRzl5YVdkcGJtRnNiSGtnY21WdVpHVnlaV1FnYVc1MGJ5NWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0IzYUdsc1pTQW9iR0Z6ZEVsRUlDRTlQU0J5WldGamRGSnZiM1JKUkNrN1hHNWNiaUFnSUNCcFppQW9ZM1Z5Y21WdWRDQTlQVDBnWTI5dWRHRnBibVZ5YzBKNVVtVmhZM1JTYjI5MFNVUmJjbVZoWTNSU2IyOTBTVVJkS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm05a1pUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZHVnRjRzl5WVhKNUlDZy9LU0JvWVdOcklITnZJSFJvWVhRZ2QyVWdZMkZ1SUhOMGIzSmxJR0ZzYkNCMGIzQXRiR1YyWld3Z2NHVnVaR2x1WnlCMWNHUmhkR1Z6SUc5dVhHNGdLaUJqYjIxd2IzTnBkR1Z6SUdsdWMzUmxZV1FnYjJZZ2FHRjJhVzVuSUhSdklIZHZjbko1SUdGaWIzVjBJR1JwWm1abGNtVnVkQ0IwZVhCbGN5QnZaaUJqYjIxd2IyNWxiblJ6WEc0Z0tpQm9aWEpsTGx4dUlDb3ZYRzUyWVhJZ1ZHOXdUR1YyWld4WGNtRndjR1Z5SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMzA3WEc1VWIzQk1aWFpsYkZkeVlYQndaWEl1Y0hKdmRHOTBlWEJsTG1selVtVmhZM1JEYjIxd2IyNWxiblFnUFNCN2ZUdGNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUZSdmNFeGxkbVZzVjNKaGNIQmxjaTVrYVhOd2JHRjVUbUZ0WlNBOUlDZFViM0JNWlhabGJGZHlZWEJ3WlhJbk8xeHVmVnh1Vkc5d1RHVjJaV3hYY21Gd2NHVnlMbkJ5YjNSdmRIbHdaUzV5Wlc1a1pYSWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQzh2SUhSb2FYTXVjSEp2Y0hNZ2FYTWdZV04wZFdGc2JIa2dZU0JTWldGamRFVnNaVzFsYm5SY2JpQWdjbVYwZFhKdUlIUm9hWE11Y0hKdmNITTdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFMXZkVzUwYVc1bklHbHpJSFJvWlNCd2NtOWpaWE56SUc5bUlHbHVhWFJwWVd4cGVtbHVaeUJoSUZKbFlXTjBJR052YlhCdmJtVnVkQ0JpZVNCamNtVmhkR2x1WnlCcGRITmNiaUFxSUhKbGNISmxjMlZ1ZEdGMGFYWmxJRVJQVFNCbGJHVnRaVzUwY3lCaGJtUWdhVzV6WlhKMGFXNW5JSFJvWlcwZ2FXNTBieUJoSUhOMWNIQnNhV1ZrSUdCamIyNTBZV2x1WlhKZ0xseHVJQ29nUVc1NUlIQnlhVzl5SUdOdmJuUmxiblFnYVc1emFXUmxJR0JqYjI1MFlXbHVaWEpnSUdseklHUmxjM1J5YjNsbFpDQnBiaUIwYUdVZ2NISnZZMlZ6Y3k1Y2JpQXFYRzRnS2lBZ0lGSmxZV04wVFc5MWJuUXVjbVZ1WkdWeUtGeHVJQ29nSUNBZ0lHTnZiWEJ2Ym1WdWRDeGNiaUFxSUNBZ0lDQmtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnblkyOXVkR0ZwYm1WeUp5bGNiaUFxSUNBZ0tUdGNiaUFxWEc0Z0tpQWdJRHhrYVhZZ2FXUTlYQ0pqYjI1MFlXbHVaWEpjSWo0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDMHRJRk4xY0hCc2FXVmtJR0JqYjI1MFlXbHVaWEpnTGx4dUlDb2dJQ0FnSUR4a2FYWWdaR0YwWVMxeVpXRmpkR2xrUFZ3aUxqTmNJajRnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3RMU0JTWlc1a1pYSmxaQ0J5WldGamRGSnZiM1FnYjJZZ1VtVmhZM1JjYmlBcUlDQWdJQ0FnSUM4dklDNHVMaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiWEJ2Ym1WdWRDNWNiaUFxSUNBZ0lDQThMMlJwZGo1Y2JpQXFJQ0FnUEM5a2FYWStYRzRnS2x4dUlDb2dTVzV6YVdSbElHOW1JR0JqYjI1MFlXbHVaWEpnTENCMGFHVWdabWx5YzNRZ1pXeGxiV1Z1ZENCeVpXNWtaWEpsWkNCcGN5QjBhR1VnWENKeVpXRmpkRkp2YjNSY0lpNWNiaUFxTDF4dWRtRnlJRkpsWVdOMFRXOTFiblFnUFNCN1hHNWNiaUFnVkc5d1RHVjJaV3hYY21Gd2NHVnlPaUJVYjNCTVpYWmxiRmR5WVhCd1pYSXNYRzVjYmlBZ0x5b3FJRVY0Y0c5elpXUWdabTl5SUdSbFluVm5aMmx1WnlCd2RYSndiM05sY3lBcUtpOWNiaUFnWDJsdWMzUmhibU5sYzBKNVVtVmhZM1JTYjI5MFNVUTZJR2x1YzNSaGJtTmxjMEo1VW1WaFkzUlNiMjkwU1VRc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZSb2FYTWdhWE1nWVNCb2IyOXJJSEJ5YjNacFpHVmtJSFJ2SUhOMWNIQnZjblFnY21WdVpHVnlhVzVuSUZKbFlXTjBJR052YlhCdmJtVnVkSE1nZDJocGJHVmNiaUFnSUNvZ1pXNXpkWEpwYm1jZ2RHaGhkQ0IwYUdVZ1lYQndZWEpsYm5RZ2MyTnliMnhzSUhCdmMybDBhVzl1SUc5bUlHbDBjeUJnWTI5dWRHRnBibVZ5WUNCa2IyVnpJRzV2ZEZ4dUlDQWdLaUJqYUdGdVoyVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlGUm9aU0JnWTI5dWRHRnBibVZ5WUNCaVpXbHVaeUJ5Wlc1a1pYSmxaQ0JwYm5SdkxseHVJQ0FnS2lCQWNHRnlZVzBnZTJaMWJtTjBhVzl1ZlNCeVpXNWtaWEpEWVd4c1ltRmpheUJVYUdseklHMTFjM1FnWW1VZ1kyRnNiR1ZrSUc5dVkyVWdkRzhnWkc4Z2RHaGxJSEpsYm1SbGNpNWNiaUFnSUNvdlhHNGdJSE5qY205c2JFMXZibWwwYjNJNklHWjFibU4wYVc5dUlDaGpiMjUwWVdsdVpYSXNJSEpsYm1SbGNrTmhiR3hpWVdOcktTQjdYRzRnSUNBZ2NtVnVaR1Z5UTJGc2JHSmhZMnNvS1R0Y2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dWR0ZyWlNCaElHTnZiWEJ2Ym1WdWRDQjBhR0YwSjNNZ1lXeHlaV0ZrZVNCdGIzVnVkR1ZrSUdsdWRHOGdkR2hsSUVSUFRTQmhibVFnY21Wd2JHRmpaU0JwZEhNZ2NISnZjSE5jYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ2NISmxka052YlhCdmJtVnVkQ0JqYjIxd2IyNWxiblFnYVc1emRHRnVZMlVnWVd4eVpXRmtlU0JwYmlCMGFHVWdSRTlOWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCdVpYaDBSV3hsYldWdWRDQmpiMjF3YjI1bGJuUWdhVzV6ZEdGdVkyVWdkRzhnY21WdVpHVnlYRzRnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdZMjl1ZEdGcGJtVnlJR052Ym5SaGFXNWxjaUIwYnlCeVpXNWtaWElnYVc1MGIxeHVJQ0FnS2lCQWNHRnlZVzBnZXo5bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1puVnVZM1JwYjI0Z2RISnBaMmRsY21Wa0lHOXVJR052YlhCc1pYUnBiMjVjYmlBZ0lDb3ZYRzRnSUY5MWNHUmhkR1ZTYjI5MFEyOXRjRzl1Wlc1ME9pQm1kVzVqZEdsdmJpQW9jSEpsZGtOdmJYQnZibVZ1ZEN3Z2JtVjRkRVZzWlcxbGJuUXNJR052Ym5SaGFXNWxjaXdnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0JTWldGamRFMXZkVzUwTG5OamNtOXNiRTF2Ym1sMGIzSW9ZMjl1ZEdGcGJtVnlMQ0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsTG1WdWNYVmxkV1ZGYkdWdFpXNTBTVzUwWlhKdVlXd29jSEpsZGtOdmJYQnZibVZ1ZEN3Z2JtVjRkRVZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSUNBZ0lGSmxZV04wVlhCa1lYUmxVWFZsZFdVdVpXNXhkV1YxWlVOaGJHeGlZV05yU1c1MFpYSnVZV3dvY0hKbGRrTnZiWEJ2Ym1WdWRDd2dZMkZzYkdKaFkyc3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDOHZJRkpsWTI5eVpDQjBhR1VnY205dmRDQmxiR1Z0Wlc1MElHbHVJR05oYzJVZ2FYUWdiR0YwWlhJZ1oyVjBjeUIwY21GdWMzQnNZVzUwWldRdVhHNGdJQ0FnSUNCeWIyOTBSV3hsYldWdWRITkNlVkpsWVdOMFVtOXZkRWxFVzJkbGRGSmxZV04wVW05dmRFbEVLR052Ym5SaGFXNWxjaWxkSUQwZ1oyVjBVbVZoWTNSU2IyOTBSV3hsYldWdWRFbHVRMjl1ZEdGcGJtVnlLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIQnlaWFpEYjIxd2IyNWxiblE3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxaMmx6ZEdWeUlHRWdZMjl0Y0c5dVpXNTBJR2x1ZEc4Z2RHaGxJR2x1YzNSaGJtTmxJRzFoY0NCaGJtUWdjM1JoY25SeklITmpjbTlzYkNCMllXeDFaVnh1SUNBZ0tpQnRiMjVwZEc5eWFXNW5YRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUc1bGVIUkRiMjF3YjI1bGJuUWdZMjl0Y0c5dVpXNTBJR2x1YzNSaGJtTmxJSFJ2SUhKbGJtUmxjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJR052Ym5SaGFXNWxjaUJqYjI1MFlXbHVaWElnZEc4Z2NtVnVaR1Z5SUdsdWRHOWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCeVpXRmpkRkp2YjNRZ1NVUWdjSEpsWm1sNFhHNGdJQ0FxTDF4dUlDQmZjbVZuYVhOMFpYSkRiMjF3YjI1bGJuUTZJR1oxYm1OMGFXOXVJQ2h1WlhoMFEyOXRjRzl1Wlc1MExDQmpiMjUwWVdsdVpYSXBJSHRjYmlBZ0lDQWhLR052Ym5SaGFXNWxjaUFtSmlBb1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JGVEVWTlJVNVVYMDVQUkVWZlZGbFFSU0I4ZkNCamIyNTBZV2x1WlhJdWJtOWtaVlI1Y0dVZ1BUMDlJRVJQUTE5T1QwUkZYMVJaVUVVZ2ZId2dZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJRDA5UFNCRVQwTlZUVVZPVkY5R1VrRkhUVVZPVkY5T1QwUkZYMVJaVUVVcEtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkZmNtVm5hWE4wWlhKRGIyMXdiMjVsYm5Rb0xpNHVLVG9nVkdGeVoyVjBJR052Ym5SaGFXNWxjaUJwY3lCdWIzUWdZU0JFVDAwZ1pXeGxiV1Z1ZEM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JTWldGamRFSnliM2R6WlhKRmRtVnVkRVZ0YVhSMFpYSXVaVzV6ZFhKbFUyTnliMnhzVm1Gc2RXVk5iMjVwZEc5eWFXNW5LQ2s3WEc1Y2JpQWdJQ0IyWVhJZ2NtVmhZM1JTYjI5MFNVUWdQU0JTWldGamRFMXZkVzUwTG5KbFoybHpkR1Z5UTI5dWRHRnBibVZ5S0dOdmJuUmhhVzVsY2lrN1hHNGdJQ0FnYVc1emRHRnVZMlZ6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjBnUFNCdVpYaDBRMjl0Y0c5dVpXNTBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpXRmpkRkp2YjNSSlJEdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WdVpHVnlJR0VnYm1WM0lHTnZiWEJ2Ym1WdWRDQnBiblJ2SUhSb1pTQkVUMDB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRmJHVnRaVzUwZlNCdVpYaDBSV3hsYldWdWRDQmxiR1Z0Wlc1MElIUnZJSEpsYm1SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTBSUFRVVnNaVzFsYm5SOUlHTnZiblJoYVc1bGNpQmpiMjUwWVdsdVpYSWdkRzhnY21WdVpHVnlJR2x1ZEc5Y2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ0JwWmlCM1pTQnphRzkxYkdRZ2MydHBjQ0IwYUdVZ2JXRnlhM1Z3SUdsdWMyVnlkR2x2Ymx4dUlDQWdLaUJBY21WMGRYSnVJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdibVY0ZEVOdmJYQnZibVZ1ZEZ4dUlDQWdLaTljYmlBZ1gzSmxibVJsY2s1bGQxSnZiM1JEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNodVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0J6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ3dnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQzh2SUZaaGNtbHZkWE1nY0dGeWRITWdiMllnYjNWeUlHTnZaR1VnS0hOMVkyZ2dZWE1nVW1WaFkzUkRiMjF3YjNOcGRHVkRiMjF3YjI1bGJuUW5jMXh1SUNBZ0lDOHZJRjl5Wlc1a1pYSldZV3hwWkdGMFpXUkRiMjF3YjI1bGJuUXBJR0Z6YzNWdFpTQjBhR0YwSUdOaGJHeHpJSFJ2SUhKbGJtUmxjaUJoY21WdUozUWdibVZ6ZEdWa08xeHVJQ0FnSUM4dklIWmxjbWxtZVNCMGFHRjBJSFJvWVhRbmN5QjBhR1VnWTJGelpTNWNiaUFnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aFNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMDlJRzUxYkd3c0lDZGZjbVZ1WkdWeVRtVjNVbTl2ZEVOdmJYQnZibVZ1ZENncE9pQlNaVzVrWlhJZ2JXVjBhRzlrY3lCemFHOTFiR1FnWW1VZ1lTQndkWEpsSUdaMWJtTjBhVzl1SUNjZ0t5QW5iMllnY0hKdmNITWdZVzVrSUhOMFlYUmxPeUIwY21sbloyVnlhVzVuSUc1bGMzUmxaQ0JqYjIxd2IyNWxiblFnZFhCa1lYUmxjeUJtY205dElDY2dLeUFuY21WdVpHVnlJR2x6SUc1dmRDQmhiR3h2ZDJWa0xpQkpaaUJ1WldObGMzTmhjbmtzSUhSeWFXZG5aWElnYm1WemRHVmtJSFZ3WkdGMFpYTWdhVzRnSnlBcklDZGpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVXVJRU5vWldOcklIUm9aU0J5Wlc1a1pYSWdiV1YwYUc5a0lHOW1JQ1Z6TGljc0lGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RZ0ppWWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDNW5aWFJPWVcxbEtDa2dmSHdnSjFKbFlXTjBRMjl0Y0c5emFYUmxRMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCMllYSWdZMjl0Y0c5dVpXNTBTVzV6ZEdGdVkyVWdQU0JwYm5OMFlXNTBhV0YwWlZKbFlXTjBRMjl0Y0c5dVpXNTBLRzVsZUhSRmJHVnRaVzUwTENCdWRXeHNLVHRjYmlBZ0lDQjJZWElnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEUxdmRXNTBMbDl5WldkcGMzUmxja052YlhCdmJtVnVkQ2hqYjIxd2IyNWxiblJKYm5OMFlXNWpaU3dnWTI5dWRHRnBibVZ5S1R0Y2JseHVJQ0FnSUM4dklGUm9aU0JwYm1sMGFXRnNJSEpsYm1SbGNpQnBjeUJ6ZVc1amFISnZibTkxY3lCaWRYUWdZVzU1SUhWd1pHRjBaWE1nZEdoaGRDQm9ZWEJ3Wlc0Z1pIVnlhVzVuWEc0Z0lDQWdMeThnY21WdVpHVnlhVzVuTENCcGJpQmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUWdiM0lnWTI5dGNHOXVaVzUwUkdsa1RXOTFiblFzSUhkcGJHd2dZbVVnWW1GMFkyaGxaRnh1SUNBZ0lDOHZJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdZM1Z5Y21WdWRDQmlZWFJqYUdsdVp5QnpkSEpoZEdWbmVTNWNibHh1SUNBZ0lGSmxZV04wVlhCa1lYUmxjeTVpWVhSamFHVmtWWEJrWVhSbGN5aGlZWFJqYUdWa1RXOTFiblJEYjIxd2IyNWxiblJKYm5SdlRtOWtaU3dnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlVzSUhKbFlXTjBVbTl2ZEVsRUxDQmpiMjUwWVdsdVpYSXNJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndMQ0JqYjI1MFpYaDBLVHRjYmx4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJTWldOdmNtUWdkR2hsSUhKdmIzUWdaV3hsYldWdWRDQnBiaUJqWVhObElHbDBJR3hoZEdWeUlHZGxkSE1nZEhKaGJuTndiR0Z1ZEdWa0xseHVJQ0FnSUNBZ2NtOXZkRVZzWlcxbGJuUnpRbmxTWldGamRGSnZiM1JKUkZ0eVpXRmpkRkp2YjNSSlJGMGdQU0JuWlhSU1pXRmpkRkp2YjNSRmJHVnRaVzUwU1c1RGIyNTBZV2x1WlhJb1kyOXVkR0ZwYm1WeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnWTI5dGNHOXVaVzUwU1c1emRHRnVZMlU3WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxibVJsY25NZ1lTQlNaV0ZqZENCamIyMXdiMjVsYm5RZ2FXNTBieUIwYUdVZ1JFOU5JR2x1SUhSb1pTQnpkWEJ3YkdsbFpDQmdZMjl1ZEdGcGJtVnlZQzVjYmlBZ0lDcGNiaUFnSUNvZ1NXWWdkR2hsSUZKbFlXTjBJR052YlhCdmJtVnVkQ0IzWVhNZ2NISmxkbWx2ZFhOc2VTQnlaVzVrWlhKbFpDQnBiblJ2SUdCamIyNTBZV2x1WlhKZ0xDQjBhR2x6SUhkcGJHeGNiaUFnSUNvZ2NHVnlabTl5YlNCaGJpQjFjR1JoZEdVZ2IyNGdhWFFnWVc1a0lHOXViSGtnYlhWMFlYUmxJSFJvWlNCRVQwMGdZWE1nYm1WalpYTnpZWEo1SUhSdklISmxabXhsWTNRZ2RHaGxYRzRnSUNBcUlHeGhkR1Z6ZENCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUhCaGNtVnVkRU52YlhCdmJtVnVkQ0JVYUdVZ1kyOXVZMlZ3ZEhWaGJDQndZWEpsYm5RZ2IyWWdkR2hwY3lCeVpXNWtaWElnZEhKbFpTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRVZzWlcxbGJuUjlJRzVsZUhSRmJHVnRaVzUwSUVOdmJYQnZibVZ1ZENCbGJHVnRaVzUwSUhSdklISmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRFVDAxRmJHVnRaVzUwZlNCamIyNTBZV2x1WlhJZ1JFOU5JR1ZzWlcxbGJuUWdkRzhnY21WdVpHVnlJR2x1ZEc4dVhHNGdJQ0FxSUVCd1lYSmhiU0I3UDJaMWJtTjBhVzl1ZlNCallXeHNZbUZqYXlCbWRXNWpkR2x2YmlCMGNtbG5aMlZ5WldRZ2IyNGdZMjl0Y0d4bGRHbHZibHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1EyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObElISmxibVJsY21Wa0lHbHVJR0JqYjI1MFlXbHVaWEpnTGx4dUlDQWdLaTljYmlBZ2NtVnVaR1Z5VTNWaWRISmxaVWx1ZEc5RGIyNTBZV2x1WlhJNklHWjFibU4wYVc5dUlDaHdZWEpsYm5SRGIyMXdiMjVsYm5Rc0lHNWxlSFJGYkdWdFpXNTBMQ0JqYjI1MFlXbHVaWElzSUdOaGJHeGlZV05yS1NCN1hHNGdJQ0FnSVNod1lYSmxiblJEYjIxd2IyNWxiblFnSVQwZ2JuVnNiQ0FtSmlCd1lYSmxiblJEYjIxd2IyNWxiblF1WDNKbFlXTjBTVzUwWlhKdVlXeEpibk4wWVc1alpTQWhQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkd1lYSmxiblJEYjIxd2IyNWxiblFnYlhWemRDQmlaU0JoSUhaaGJHbGtJRkpsWVdOMElFTnZiWEJ2Ym1WdWRDY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0J5WlhSMWNtNGdVbVZoWTNSTmIzVnVkQzVmY21WdVpHVnlVM1ZpZEhKbFpVbHVkRzlEYjI1MFlXbHVaWElvY0dGeVpXNTBRMjl0Y0c5dVpXNTBMQ0J1WlhoMFJXeGxiV1Z1ZEN3Z1kyOXVkR0ZwYm1WeUxDQmpZV3hzWW1GamF5azdYRzRnSUgwc1hHNWNiaUFnWDNKbGJtUmxjbE4xWW5SeVpXVkpiblJ2UTI5dWRHRnBibVZ5T2lCbWRXNWpkR2x2YmlBb2NHRnlaVzUwUTI5dGNHOXVaVzUwTENCdVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJQ0ZTWldGamRFVnNaVzFsYm5RdWFYTldZV3hwWkVWc1pXMWxiblFvYm1WNGRFVnNaVzFsYm5RcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjFKbFlXTjBSRTlOTG5KbGJtUmxjaWdwT2lCSmJuWmhiR2xrSUdOdmJYQnZibVZ1ZENCbGJHVnRaVzUwTGlWekp5d2dkSGx3Wlc5bUlHNWxlSFJGYkdWdFpXNTBJRDA5UFNBbmMzUnlhVzVuSnlBL0lDY2dTVzV6ZEdWaFpDQnZaaUJ3WVhOemFXNW5JR0Z1SUdWc1pXMWxiblFnYzNSeWFXNW5MQ0J0WVd0bElITjFjbVVnZEc4Z2FXNXpkR0Z1ZEdsaGRHVWdKeUFySUNkcGRDQmllU0J3WVhOemFXNW5JR2wwSUhSdklGSmxZV04wTG1OeVpXRjBaVVZzWlcxbGJuUXVKeUE2SUhSNWNHVnZaaUJ1WlhoMFJXeGxiV1Z1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUEvSUNjZ1NXNXpkR1ZoWkNCdlppQndZWE56YVc1bklHRWdZMjl0Y0c5dVpXNTBJR05zWVhOekxDQnRZV3RsSUhOMWNtVWdkRzhnYVc1emRHRnVkR2xoZEdVZ0p5QXJJQ2RwZENCaWVTQndZWE56YVc1bklHbDBJSFJ2SUZKbFlXTjBMbU55WldGMFpVVnNaVzFsYm5RdUp5QTZYRzRnSUNBZ0x5OGdRMmhsWTJzZ2FXWWdhWFFnY1hWaFkydHpJR3hwYTJVZ1lXNGdaV3hsYldWdWRGeHVJQ0FnSUc1bGVIUkZiR1Z0Wlc1MElDRTlJRzUxYkd3Z0ppWWdibVY0ZEVWc1pXMWxiblF1Y0hKdmNITWdJVDA5SUhWdVpHVm1hVzVsWkNBL0lDY2dWR2hwY3lCdFlYa2dZbVVnWTJGMWMyVmtJR0o1SUhWdWFXNTBaVzUwYVc5dVlXeHNlU0JzYjJGa2FXNW5JSFIzYnlCcGJtUmxjR1Z1WkdWdWRDQW5JQ3NnSjJOdmNHbGxjeUJ2WmlCU1pXRmpkQzRuSURvZ0p5Y3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRmpiMjUwWVdsdVpYSWdmSHdnSVdOdmJuUmhhVzVsY2k1MFlXZE9ZVzFsSUh4OElHTnZiblJoYVc1bGNpNTBZV2RPWVcxbExuUnZWWEJ3WlhKRFlYTmxLQ2tnSVQwOUlDZENUMFJaSnl3Z0ozSmxibVJsY2lncE9pQlNaVzVrWlhKcGJtY2dZMjl0Y0c5dVpXNTBjeUJrYVhKbFkzUnNlU0JwYm5SdklHUnZZM1Z0Wlc1MExtSnZaSGtnYVhNZ0p5QXJJQ2RrYVhOamIzVnlZV2RsWkN3Z2MybHVZMlVnYVhSeklHTm9hV3hrY21WdUlHRnlaU0J2Wm5SbGJpQnRZVzVwY0hWc1lYUmxaQ0JpZVNCMGFHbHlaQzF3WVhKMGVTQW5JQ3NnSjNOamNtbHdkSE1nWVc1a0lHSnliM2R6WlhJZ1pYaDBaVzV6YVc5dWN5NGdWR2hwY3lCdFlYa2diR1ZoWkNCMGJ5QnpkV0owYkdVZ0p5QXJJQ2R5WldOdmJtTnBiR2xoZEdsdmJpQnBjM04xWlhNdUlGUnllU0J5Wlc1a1pYSnBibWNnYVc1MGJ5QmhJR052Ym5SaGFXNWxjaUJsYkdWdFpXNTBJR055WldGMFpXUWdKeUFySUNkbWIzSWdlVzkxY2lCaGNIQXVKeWtnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCMllYSWdibVY0ZEZkeVlYQndaV1JGYkdWdFpXNTBJRDBnYm1WM0lGSmxZV04wUld4bGJXVnVkQ2hVYjNCTVpYWmxiRmR5WVhCd1pYSXNJRzUxYkd3c0lHNTFiR3dzSUc1MWJHd3NJRzUxYkd3c0lHNTFiR3dzSUc1bGVIUkZiR1Z0Wlc1MEtUdGNibHh1SUNBZ0lIWmhjaUJ3Y21WMlEyOXRjRzl1Wlc1MElEMGdhVzV6ZEdGdVkyVnpRbmxTWldGamRGSnZiM1JKUkZ0blpYUlNaV0ZqZEZKdmIzUkpSQ2hqYjI1MFlXbHVaWElwWFR0Y2JseHVJQ0FnSUdsbUlDaHdjbVYyUTI5dGNHOXVaVzUwS1NCN1hHNGdJQ0FnSUNCMllYSWdjSEpsZGxkeVlYQndaV1JGYkdWdFpXNTBJRDBnY0hKbGRrTnZiWEJ2Ym1WdWRDNWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnSUNCMllYSWdjSEpsZGtWc1pXMWxiblFnUFNCd2NtVjJWM0poY0hCbFpFVnNaVzFsYm5RdWNISnZjSE03WEc0Z0lDQWdJQ0JwWmlBb2MyaHZkV3hrVlhCa1lYUmxVbVZoWTNSRGIyMXdiMjVsYm5Rb2NISmxka1ZzWlcxbGJuUXNJRzVsZUhSRmJHVnRaVzUwS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1VtVmhZM1JOYjNWdWRDNWZkWEJrWVhSbFVtOXZkRU52YlhCdmJtVnVkQ2h3Y21WMlEyOXRjRzl1Wlc1MExDQnVaWGgwVjNKaGNIQmxaRVZzWlcxbGJuUXNJR052Ym5SaGFXNWxjaXdnWTJGc2JHSmhZMnNwTGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZEM1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1VtVmhZM1JOYjNWdWRDNTFibTF2ZFc1MFEyOXRjRzl1Wlc1MFFYUk9iMlJsS0dOdmJuUmhhVzVsY2lrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlISmxZV04wVW05dmRFVnNaVzFsYm5RZ1BTQm5aWFJTWldGamRGSnZiM1JGYkdWdFpXNTBTVzVEYjI1MFlXbHVaWElvWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0IyWVhJZ1kyOXVkR0ZwYm1WeVNHRnpVbVZoWTNSTllYSnJkWEFnUFNCeVpXRmpkRkp2YjNSRmJHVnRaVzUwSUNZbUlDRWhhVzUwWlhKdVlXeEhaWFJKUkNoeVpXRmpkRkp2YjNSRmJHVnRaVzUwS1R0Y2JpQWdJQ0IyWVhJZ1kyOXVkR0ZwYm1WeVNHRnpUbTl1VW05dmRGSmxZV04wUTJocGJHUWdQU0JvWVhOT2IyNVNiMjkwVW1WaFkzUkRhR2xzWkNoamIyNTBZV2x1WlhJcE8xeHVYRzRnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktDRmpiMjUwWVdsdVpYSklZWE5PYjI1U2IyOTBVbVZoWTNSRGFHbHNaQ3dnSjNKbGJtUmxjaWd1TGk0cE9pQlNaWEJzWVdOcGJtY2dVbVZoWTNRdGNtVnVaR1Z5WldRZ1kyaHBiR1J5Wlc0Z2QybDBhQ0JoSUc1bGR5QnliMjkwSUNjZ0t5QW5ZMjl0Y0c5dVpXNTBMaUJKWmlCNWIzVWdhVzUwWlc1a1pXUWdkRzhnZFhCa1lYUmxJSFJvWlNCamFHbHNaSEpsYmlCdlppQjBhR2x6SUc1dlpHVXNJQ2NnS3lBbmVXOTFJSE5vYjNWc1pDQnBibk4wWldGa0lHaGhkbVVnZEdobElHVjRhWE4wYVc1bklHTm9hV3hrY21WdUlIVndaR0YwWlNCMGFHVnBjaUJ6ZEdGMFpTQW5JQ3NnSjJGdVpDQnlaVzVrWlhJZ2RHaGxJRzVsZHlCamIyMXdiMjVsYm5SeklHbHVjM1JsWVdRZ2IyWWdZMkZzYkdsdVp5QlNaV0ZqZEVSUFRTNXlaVzVrWlhJdUp5a2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0FnSUdsbUlDZ2hZMjl1ZEdGcGJtVnlTR0Z6VW1WaFkzUk5ZWEpyZFhBZ2ZId2djbVZoWTNSU2IyOTBSV3hsYldWdWRDNXVaWGgwVTJsaWJHbHVaeWtnZTF4dUlDQWdJQ0FnSUNCMllYSWdjbTl2ZEVWc1pXMWxiblJUYVdKc2FXNW5JRDBnY21WaFkzUlNiMjkwUld4bGJXVnVkRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLSEp2YjNSRmJHVnRaVzUwVTJsaWJHbHVaeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hwYm5SbGNtNWhiRWRsZEVsRUtISnZiM1JGYkdWdFpXNTBVMmxpYkdsdVp5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5jbVZ1WkdWeUtDazZJRlJoY21kbGRDQnViMlJsSUdoaGN5QnRZWEpyZFhBZ2NtVnVaR1Z5WldRZ1lua2dVbVZoWTNRc0lHSjFkQ0IwYUdWeVpTQW5JQ3NnSjJGeVpTQjFibkpsYkdGMFpXUWdibTlrWlhNZ1lYTWdkMlZzYkM0Z1ZHaHBjeUJwY3lCdGIzTjBJR052YlcxdmJteDVJR05oZFhObFpDQmllU0FuSUNzZ0ozZG9hWFJsTFhOd1lXTmxJR2x1YzJWeWRHVmtJR0Z5YjNWdVpDQnpaWEoyWlhJdGNtVnVaR1Z5WldRZ2JXRnlhM1Z3TGljcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEp2YjNSRmJHVnRaVzUwVTJsaWJHbHVaeUE5SUhKdmIzUkZiR1Z0Wlc1MFUybGliR2x1Wnk1dVpYaDBVMmxpYkdsdVp6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJ6YUc5MWJHUlNaWFZ6WlUxaGNtdDFjQ0E5SUdOdmJuUmhhVzVsY2toaGMxSmxZV04wVFdGeWEzVndJQ1ltSUNGd2NtVjJRMjl0Y0c5dVpXNTBJQ1ltSUNGamIyNTBZV2x1WlhKSVlYTk9iMjVTYjI5MFVtVmhZM1JEYUdsc1pEdGNiaUFnSUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnVW1WaFkzUk5iM1Z1ZEM1ZmNtVnVaR1Z5VG1WM1VtOXZkRU52YlhCdmJtVnVkQ2h1WlhoMFYzSmhjSEJsWkVWc1pXMWxiblFzSUdOdmJuUmhhVzVsY2l3Z2MyaHZkV3hrVW1WMWMyVk5ZWEpyZFhBc0lIQmhjbVZ1ZEVOdmJYQnZibVZ1ZENBaFBTQnVkV3hzSUQ4Z2NHRnlaVzUwUTI5dGNHOXVaVzUwTGw5eVpXRmpkRWx1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0J5YjJObGMzTkRhR2xzWkVOdmJuUmxlSFFvY0dGeVpXNTBRMjl0Y0c5dVpXNTBMbDl5WldGamRFbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVdVgyTnZiblJsZUhRcElEb2daVzF3ZEhsUFltcGxZM1FwTGw5eVpXNWtaWEpsWkVOdmJYQnZibVZ1ZEM1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncE8xeHVJQ0FnSUdsbUlDaGpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDQWdZMkZzYkdKaFkyc3VZMkZzYkNoamIyMXdiMjVsYm5RcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl0Y0c5dVpXNTBPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pXNWtaWEp6SUdFZ1VtVmhZM1FnWTI5dGNHOXVaVzUwSUdsdWRHOGdkR2hsSUVSUFRTQnBiaUIwYUdVZ2MzVndjR3hwWldRZ1lHTnZiblJoYVc1bGNtQXVYRzRnSUNBcVhHNGdJQ0FxSUVsbUlIUm9aU0JTWldGamRDQmpiMjF3YjI1bGJuUWdkMkZ6SUhCeVpYWnBiM1Z6YkhrZ2NtVnVaR1Z5WldRZ2FXNTBieUJnWTI5dWRHRnBibVZ5WUN3Z2RHaHBjeUIzYVd4c1hHNGdJQ0FxSUhCbGNtWnZjbTBnWVc0Z2RYQmtZWFJsSUc5dUlHbDBJR0Z1WkNCdmJteDVJRzExZEdGMFpTQjBhR1VnUkU5TklHRnpJRzVsWTJWemMyRnllU0IwYnlCeVpXWnNaV04wSUhSb1pWeHVJQ0FnS2lCc1lYUmxjM1FnVW1WaFkzUWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdibVY0ZEVWc1pXMWxiblFnUTI5dGNHOXVaVzUwSUdWc1pXMWxiblFnZEc4Z2NtVnVaR1Z5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUdOdmJuUmhhVzVsY2lCRVQwMGdaV3hsYldWdWRDQjBieUJ5Wlc1a1pYSWdhVzUwYnk1Y2JpQWdJQ29nUUhCaGNtRnRJSHMvWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUdaMWJtTjBhVzl1SUhSeWFXZG5aWEpsWkNCdmJpQmpiMjF3YkdWMGFXOXVYRzRnSUNBcUlFQnlaWFIxY200Z2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCRGIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJVZ2NtVnVaR1Z5WldRZ2FXNGdZR052Ym5SaGFXNWxjbUF1WEc0Z0lDQXFMMXh1SUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNodVpYaDBSV3hsYldWdWRDd2dZMjl1ZEdGcGJtVnlMQ0JqWVd4c1ltRmpheWtnZTF4dUlDQWdJSEpsZEhWeWJpQlNaV0ZqZEUxdmRXNTBMbDl5Wlc1a1pYSlRkV0owY21WbFNXNTBiME52Ym5SaGFXNWxjaWh1ZFd4c0xDQnVaWGgwUld4bGJXVnVkQ3dnWTI5dWRHRnBibVZ5TENCallXeHNZbUZqYXlrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWjJsemRHVnljeUJoSUdOdmJuUmhhVzVsY2lCdWIyUmxJR2x1ZEc4Z2QyaHBZMmdnVW1WaFkzUWdZMjl0Y0c5dVpXNTBjeUIzYVd4c0lHSmxJSEpsYm1SbGNtVmtMbHh1SUNBZ0tpQlVhR2x6SUdGc2MyOGdZM0psWVhSbGN5QjBhR1VnWENKeVpXRmpkRkp2YjNSY0lpQkpSQ0IwYUdGMElIZHBiR3dnWW1VZ1lYTnphV2R1WldRZ2RHOGdkR2hsSUdWc1pXMWxiblJjYmlBZ0lDb2djbVZ1WkdWeVpXUWdkMmwwYUdsdUxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJQVFVWc1pXMWxiblI5SUdOdmJuUmhhVzVsY2lCRVQwMGdaV3hsYldWdWRDQjBieUJ5WldkcGMzUmxjaUJoY3lCaElHTnZiblJoYVc1bGNpNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCVWFHVWdYQ0p5WldGamRGSnZiM1JjSWlCSlJDQnZaaUJsYkdWdFpXNTBjeUJ5Wlc1a1pYSmxaQ0IzYVhSb2FXNHVYRzRnSUNBcUwxeHVJQ0J5WldkcGMzUmxja052Ym5SaGFXNWxjam9nWm5WdVkzUnBiMjRnS0dOdmJuUmhhVzVsY2lrZ2UxeHVJQ0FnSUhaaGNpQnlaV0ZqZEZKdmIzUkpSQ0E5SUdkbGRGSmxZV04wVW05dmRFbEVLR052Ym5SaGFXNWxjaWs3WEc0Z0lDQWdhV1lnS0hKbFlXTjBVbTl2ZEVsRUtTQjdYRzRnSUNBZ0lDQXZMeUJKWmlCdmJtVWdaWGhwYzNSekxDQnRZV3RsSUhOMWNtVWdhWFFnYVhNZ1lTQjJZV3hwWkNCY0luSmxZV04wVW05dmRGd2lJRWxFTGx4dUlDQWdJQ0FnY21WaFkzUlNiMjkwU1VRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVuWlhSU1pXRmpkRkp2YjNSSlJFWnliMjFPYjJSbFNVUW9jbVZoWTNSU2IyOTBTVVFwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvSVhKbFlXTjBVbTl2ZEVsRUtTQjdYRzRnSUNBZ0lDQXZMeUJPYnlCMllXeHBaQ0JjSW5KbFlXTjBVbTl2ZEZ3aUlFbEVJR1p2ZFc1a0xDQmpjbVZoZEdVZ2IyNWxMbHh1SUNBZ0lDQWdjbVZoWTNSU2IyOTBTVVFnUFNCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NWpjbVZoZEdWU1pXRmpkRkp2YjNSSlJDZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNTBZV2x1WlhKelFubFNaV0ZqZEZKdmIzUkpSRnR5WldGamRGSnZiM1JKUkYwZ1BTQmpiMjUwWVdsdVpYSTdYRzRnSUNBZ2NtVjBkWEp1SUhKbFlXTjBVbTl2ZEVsRU8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWYm0xdmRXNTBjeUJoYm1RZ1pHVnpkSEp2ZVhNZ2RHaGxJRkpsWVdOMElHTnZiWEJ2Ym1WdWRDQnlaVzVrWlhKbFpDQnBiaUIwYUdVZ1lHTnZiblJoYVc1bGNtQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkU5TlJXeGxiV1Z1ZEgwZ1kyOXVkR0ZwYm1WeUlFUlBUU0JsYkdWdFpXNTBJR052Ym5SaGFXNXBibWNnWVNCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWWdZU0JqYjIxd2IyNWxiblFnZDJGeklHWnZkVzVrSUdsdUlHRnVaQ0IxYm0xdmRXNTBaV1FnWm5KdmJWeHVJQ0FnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCZ1kyOXVkR0ZwYm1WeVlGeHVJQ0FnS2k5Y2JpQWdkVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFRjBUbTlrWlRvZ1puVnVZM1JwYjI0Z0tHTnZiblJoYVc1bGNpa2dlMXh1SUNBZ0lDOHZJRlpoY21sdmRYTWdjR0Z5ZEhNZ2IyWWdiM1Z5SUdOdlpHVWdLSE4xWTJnZ1lYTWdVbVZoWTNSRGIyMXdiM05wZEdWRGIyMXdiMjVsYm5RbmMxeHVJQ0FnSUM4dklGOXlaVzVrWlhKV1lXeHBaR0YwWldSRGIyMXdiMjVsYm5RcElHRnpjM1Z0WlNCMGFHRjBJR05oYkd4eklIUnZJSEpsYm1SbGNpQmhjbVZ1SjNRZ2JtVnpkR1ZrTzF4dUlDQWdJQzh2SUhabGNtbG1lU0IwYUdGMElIUm9ZWFFuY3lCMGFHVWdZMkZ6WlM0Z0tGTjBjbWxqZEd4NUlITndaV0ZyYVc1bkxDQjFibTF2ZFc1MGFXNW5JSGR2YmlkMElHTmhkWE5sSUdGY2JpQWdJQ0F2THlCeVpXNWtaWElnWW5WMElIZGxJSE4wYVd4c0lHUnZiaWQwSUdWNGNHVmpkQ0IwYnlCaVpTQnBiaUJoSUhKbGJtUmxjaUJqWVd4c0lHaGxjbVV1S1Z4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0ZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnUFQwZ2JuVnNiQ3dnSjNWdWJXOTFiblJEYjIxd2IyNWxiblJCZEU1dlpHVW9LVG9nVW1WdVpHVnlJRzFsZEdodlpITWdjMmh2ZFd4a0lHSmxJR0VnY0hWeVpTQm1kVzVqZEdsdmJpQW5JQ3NnSjI5bUlIQnliM0J6SUdGdVpDQnpkR0YwWlRzZ2RISnBaMmRsY21sdVp5QnVaWE4wWldRZ1kyOXRjRzl1Wlc1MElIVndaR0YwWlhNZ1puSnZiU0J5Wlc1a1pYSWdKeUFySUNkcGN5QnViM1FnWVd4c2IzZGxaQzRnU1dZZ2JtVmpaWE56WVhKNUxDQjBjbWxuWjJWeUlHNWxjM1JsWkNCMWNHUmhkR1Z6SUdsdUlDY2dLeUFuWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsTGlCRGFHVmpheUIwYUdVZ2NtVnVaR1Z5SUcxbGRHaHZaQ0J2WmlBbGN5NG5MQ0JTWldGamRFTjFjbkpsYm5SUGQyNWxjaTVqZFhKeVpXNTBJQ1ltSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblF1WjJWMFRtRnRaU2dwSUh4OElDZFNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdJU2hqYjI1MFlXbHVaWElnSmlZZ0tHTnZiblJoYVc1bGNpNXViMlJsVkhsd1pTQTlQVDBnUlV4RlRVVk9WRjlPVDBSRlgxUlpVRVVnZkh3Z1kyOXVkR0ZwYm1WeUxtNXZaR1ZVZVhCbElEMDlQU0JFVDBOZlRrOUVSVjlVV1ZCRklIeDhJR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ1JFOURWVTFGVGxSZlJsSkJSMDFGVGxSZlRrOUVSVjlVV1ZCRktTa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmRXNXRiM1Z1ZEVOdmJYQnZibVZ1ZEVGMFRtOWtaU2d1TGk0cE9pQlVZWEpuWlhRZ1kyOXVkR0ZwYm1WeUlHbHpJRzV2ZENCaElFUlBUU0JsYkdWdFpXNTBMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIWmhjaUJ5WldGamRGSnZiM1JKUkNBOUlHZGxkRkpsWVdOMFVtOXZkRWxFS0dOdmJuUmhhVzVsY2lrN1hHNGdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRDQTlJR2x1YzNSaGJtTmxjMEo1VW1WaFkzUlNiMjkwU1VSYmNtVmhZM1JTYjI5MFNVUmRPMXh1SUNBZ0lHbG1JQ2doWTI5dGNHOXVaVzUwS1NCN1hHNGdJQ0FnSUNBdkx5QkRhR1ZqYXlCcFppQjBhR1VnYm05a1pTQmlaV2x1WnlCMWJtMXZkVzUwWldRZ2QyRnpJSEpsYm1SbGNtVmtJR0o1SUZKbFlXTjBMQ0JpZFhRZ2FYTnVKM1FnWVZ4dUlDQWdJQ0FnTHk4Z2NtOXZkQ0J1YjJSbExseHVJQ0FnSUNBZ2RtRnlJR052Ym5SaGFXNWxja2hoYzA1dmJsSnZiM1JTWldGamRFTm9hV3hrSUQwZ2FHRnpUbTl1VW05dmRGSmxZV04wUTJocGJHUW9ZMjl1ZEdGcGJtVnlLVHRjYmx4dUlDQWdJQ0FnTHk4Z1EyaGxZMnNnYVdZZ2RHaGxJR052Ym5SaGFXNWxjaUJwZEhObGJHWWdhWE1nWVNCU1pXRmpkQ0J5YjI5MElHNXZaR1V1WEc0Z0lDQWdJQ0IyWVhJZ1kyOXVkR0ZwYm1WeVNVUWdQU0JwYm5SbGNtNWhiRWRsZEVsRUtHTnZiblJoYVc1bGNpazdYRzRnSUNBZ0lDQjJZWElnYVhORGIyNTBZV2x1WlhKU1pXRmpkRkp2YjNRZ1BTQmpiMjUwWVdsdVpYSkpSQ0FtSmlCamIyNTBZV2x1WlhKSlJDQTlQVDBnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNdVoyVjBVbVZoWTNSU2IyOTBTVVJHY205dFRtOWtaVWxFS0dOdmJuUmhhVzVsY2tsRUtUdGNibHh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvSVdOdmJuUmhhVzVsY2toaGMwNXZibEp2YjNSU1pXRmpkRU5vYVd4a0xDQW5kVzV0YjNWdWRFTnZiWEJ2Ym1WdWRFRjBUbTlrWlNncE9pQlVhR1VnYm05a1pTQjViM1ZjWENkeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUhWdWJXOTFiblFnSnlBcklDZDNZWE1nY21WdVpHVnlaV1FnWW5rZ1VtVmhZM1FnWVc1a0lHbHpJRzV2ZENCaElIUnZjQzFzWlhabGJDQmpiMjUwWVdsdVpYSXVJQ1Z6Snl3Z2FYTkRiMjUwWVdsdVpYSlNaV0ZqZEZKdmIzUWdQeUFuV1c5MUlHMWhlU0JvWVhabElHRmpZMmxrWlc1MFlXeHNlU0J3WVhOelpXUWdhVzRnWVNCU1pXRmpkQ0J5YjI5MElHNXZaR1VnYVc1emRHVmhaQ0FuSUNzZ0oyOW1JR2wwY3lCamIyNTBZV2x1WlhJdUp5QTZJQ2RKYm5OMFpXRmtMQ0JvWVhabElIUm9aU0J3WVhKbGJuUWdZMjl0Y0c5dVpXNTBJSFZ3WkdGMFpTQnBkSE1nYzNSaGRHVWdZVzVrSUNjZ0t5QW5jbVZ5Wlc1a1pYSWdhVzRnYjNKa1pYSWdkRzhnY21WdGIzWmxJSFJvYVhNZ1kyOXRjRzl1Wlc1MExpY3BJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVJQ0FnSUZKbFlXTjBWWEJrWVhSbGN5NWlZWFJqYUdWa1ZYQmtZWFJsY3loMWJtMXZkVzUwUTI5dGNHOXVaVzUwUm5KdmJVNXZaR1VzSUdOdmJYQnZibVZ1ZEN3Z1kyOXVkR0ZwYm1WeUtUdGNiaUFnSUNCa1pXeGxkR1VnYVc1emRHRnVZMlZ6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjA3WEc0Z0lDQWdaR1ZzWlhSbElHTnZiblJoYVc1bGNuTkNlVkpsWVdOMFVtOXZkRWxFVzNKbFlXTjBVbTl2ZEVsRVhUdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnWkdWc1pYUmxJSEp2YjNSRmJHVnRaVzUwYzBKNVVtVmhZM1JTYjI5MFNVUmJjbVZoWTNSU2IyOTBTVVJkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1JtbHVaSE1nZEdobElHTnZiblJoYVc1bGNpQkVUMDBnWld4bGJXVnVkQ0IwYUdGMElHTnZiblJoYVc1eklGSmxZV04wSUdOdmJYQnZibVZ1ZENCMGJ5QjNhR2xqYUNCMGFHVmNiaUFnSUNvZ2MzVndjR3hwWldRZ1JFOU5JR0JwWkdBZ1ltVnNiMjVuY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHbGtJRlJvWlNCSlJDQnZaaUJoYmlCbGJHVnRaVzUwSUhKbGJtUmxjbVZrSUdKNUlHRWdVbVZoWTNRZ1kyOXRjRzl1Wlc1MExseHVJQ0FnS2lCQWNtVjBkWEp1SUhzL1JFOU5SV3hsYldWdWRIMGdSRTlOSUdWc1pXMWxiblFnZEdoaGRDQmpiMjUwWVdsdWN5QjBhR1VnWUdsa1lDNWNiaUFnSUNvdlhHNGdJR1pwYm1SU1pXRmpkRU52Ym5SaGFXNWxja1p2Y2tsRU9pQm1kVzVqZEdsdmJpQW9hV1FwSUh0Y2JpQWdJQ0IyWVhJZ2NtVmhZM1JTYjI5MFNVUWdQU0JTWldGamRFbHVjM1JoYm1ObFNHRnVaR3hsY3k1blpYUlNaV0ZqZEZKdmIzUkpSRVp5YjIxT2IyUmxTVVFvYVdRcE8xeHVJQ0FnSUhaaGNpQmpiMjUwWVdsdVpYSWdQU0JqYjI1MFlXbHVaWEp6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjA3WEc1Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdkbUZ5SUhKdmIzUkZiR1Z0Wlc1MElEMGdjbTl2ZEVWc1pXMWxiblJ6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjA3WEc0Z0lDQWdJQ0JwWmlBb2NtOXZkRVZzWlcxbGJuUWdKaVlnY205dmRFVnNaVzFsYm5RdWNHRnlaVzUwVG05a1pTQWhQVDBnWTI5dWRHRnBibVZ5S1NCN1hHNGdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LRnh1SUNBZ0lDQWdJQ0F2THlCRFlXeHNJR2x1ZEdWeWJtRnNSMlYwU1VRZ2FHVnlaU0JpWldOaGRYTmxJR2RsZEVsRUlHTmhiR3h6SUdselZtRnNhV1FnZDJocFkyZ2dZMkZzYkhOY2JpQWdJQ0FnSUNBZ0x5OGdabWx1WkZKbFlXTjBRMjl1ZEdGcGJtVnlSbTl5U1VRZ0tIUm9hWE1nWm5WdVkzUnBiMjRwTGx4dUlDQWdJQ0FnSUNCcGJuUmxjbTVoYkVkbGRFbEVLSEp2YjNSRmJHVnRaVzUwS1NBOVBUMGdjbVZoWTNSU2IyOTBTVVFzSUNkU1pXRmpkRTF2ZFc1ME9pQlNiMjkwSUdWc1pXMWxiblFnU1VRZ1pHbG1abVZ5WldRZ1puSnZiU0J5WldGamRGSnZiM1JKUkM0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiblJoYVc1bGNrTm9hV3hrSUQwZ1kyOXVkR0ZwYm1WeUxtWnBjbk4wUTJocGJHUTdYRzRnSUNBZ0lDQWdJR2xtSUNoamIyNTBZV2x1WlhKRGFHbHNaQ0FtSmlCeVpXRmpkRkp2YjNSSlJDQTlQVDBnYVc1MFpYSnVZV3hIWlhSSlJDaGpiMjUwWVdsdVpYSkRhR2xzWkNrcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCSlppQjBhR1VnWTI5dWRHRnBibVZ5SUdoaGN5QmhJRzVsZHlCamFHbHNaQ0IzYVhSb0lIUm9aU0J6WVcxbElFbEVJR0Z6SUhSb1pTQnZiR1JjYmlBZ0lDQWdJQ0FnSUNBdkx5QnliMjkwSUdWc1pXMWxiblFzSUhSb1pXNGdjbTl2ZEVWc1pXMWxiblJ6UW5sU1pXRmpkRkp2YjNSSlJGdHlaV0ZqZEZKdmIzUkpSRjBnYVhOY2JpQWdJQ0FnSUNBZ0lDQXZMeUJxZFhOMElITjBZV3hsSUdGdVpDQnVaV1ZrY3lCMGJ5QmlaU0IxY0dSaGRHVmtMaUJVYUdVZ1kyRnpaU0IwYUdGMElHUmxjMlZ5ZG1WeklHRmNiaUFnSUNBZ0lDQWdJQ0F2THlCM1lYSnVhVzVuSUdseklIZG9aVzRnZEdobElHTnZiblJoYVc1bGNpQnBjeUJsYlhCMGVTNWNiaUFnSUNBZ0lDQWdJQ0J5YjI5MFJXeGxiV1Z1ZEhOQ2VWSmxZV04wVW05dmRFbEVXM0psWVdOMFVtOXZkRWxFWFNBOUlHTnZiblJoYVc1bGNrTm9hV3hrTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5VbVZoWTNSTmIzVnVkRG9nVW05dmRDQmxiR1Z0Wlc1MElHaGhjeUJpWldWdUlISmxiVzkyWldRZ1puSnZiU0JwZEhNZ2IzSnBaMmx1WVd3Z0p5QXJJQ2RqYjI1MFlXbHVaWEl1SUU1bGR5QmpiMjUwWVdsdVpYSTZJQ1Z6Snl3Z2NtOXZkRVZzWlcxbGJuUXVjR0Z5Wlc1MFRtOWtaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnWTI5dWRHRnBibVZ5TzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdhVzVrY3lCaGJpQmxiR1Z0Wlc1MElISmxibVJsY21Wa0lHSjVJRkpsWVdOMElIZHBkR2dnZEdobElITjFjSEJzYVdWa0lFbEVMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVdRZ1NVUWdiMllnWVNCRVQwMGdibTlrWlNCcGJpQjBhR1VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVUMDFGYkdWdFpXNTBmU0JTYjI5MElFUlBUU0J1YjJSbElHOW1JSFJvWlNCU1pXRmpkQ0JqYjIxd2IyNWxiblF1WEc0Z0lDQXFMMXh1SUNCbWFXNWtVbVZoWTNST2IyUmxRbmxKUkRvZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdkbUZ5SUhKbFlXTjBVbTl2ZENBOUlGSmxZV04wVFc5MWJuUXVabWx1WkZKbFlXTjBRMjl1ZEdGcGJtVnlSbTl5U1VRb2FXUXBPMXh1SUNBZ0lISmxkSFZ5YmlCU1pXRmpkRTF2ZFc1MExtWnBibVJEYjIxd2IyNWxiblJTYjI5MEtISmxZV04wVW05dmRDd2dhV1FwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlVjbUYyWlhKelpYTWdkWEFnZEdobElHRnVZMlZ6ZEc5eWN5QnZaaUIwYUdVZ2MzVndjR3hwWldRZ2JtOWtaU0IwYnlCbWFXNWtJR0VnYm05a1pTQjBhR0YwSUdseklHRmNiaUFnSUNvZ1JFOU5JSEpsY0hKbGMyVnVkR0YwYVc5dUlHOW1JR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJSEpsYm1SbGNtVmtJR0o1SUhSb2FYTWdZMjl3ZVNCdlppQlNaV0ZqZEM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIc3FmU0J1YjJSbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZXo5RVQwMUZkbVZ1ZEZSaGNtZGxkSDFjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JuWlhSR2FYSnpkRkpsWVdOMFJFOU5PaUJtZFc1amRHbHZiaUFvYm05a1pTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWFXNWtSbWx5YzNSU1pXRmpkRVJQVFVsdGNHd29ibTlrWlNrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVpwYm1SeklHRWdibTlrWlNCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCZ2RHRnlaMlYwU1VSZ0lHbHVjMmxrWlNCdlppQjBhR1VnYzNWd2NHeHBaV1JjYmlBZ0lDb2dZR0Z1WTJWemRHOXlUbTlrWldBdUlDQkZlSEJzYjJsMGN5QjBhR1VnU1VRZ2JtRnRhVzVuSUhOamFHVnRaU0IwYnlCd1pYSm1iM0p0SUhSb1pTQnpaV0Z5WTJoY2JpQWdJQ29nY1hWcFkydHNlUzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZkbVZ1ZEZSaGNtZGxkSDBnWVc1alpYTjBiM0pPYjJSbElGTmxZWEpqYUNCbWNtOXRJSFJvYVhNZ2NtOXZkQzVjYmlBZ0lDb2dRSEJoY21GeWJTQjdjM1J5YVc1bmZTQjBZWEpuWlhSSlJDQkpSQ0J2WmlCMGFHVWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUhSb1pTQmpiMjF3YjI1bGJuUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUlBUVVYyWlc1MFZHRnlaMlYwZlNCRVQwMGdibTlrWlNCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCZ2RHRnlaMlYwU1VSZ0xseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHWnBibVJEYjIxd2IyNWxiblJTYjI5ME9pQm1kVzVqZEdsdmJpQW9ZVzVqWlhOMGIzSk9iMlJsTENCMFlYSm5aWFJKUkNrZ2UxeHVJQ0FnSUhaaGNpQm1hWEp6ZEVOb2FXeGtjbVZ1SUQwZ1ptbHVaRU52YlhCdmJtVnVkRkp2YjNSU1pYVnpZV0pzWlVGeWNtRjVPMXh1SUNBZ0lIWmhjaUJqYUdsc1pFbHVaR1Y0SUQwZ01EdGNibHh1SUNBZ0lIWmhjaUJrWldWd1pYTjBRVzVqWlhOMGIzSWdQU0JtYVc1a1JHVmxjR1Z6ZEVOaFkyaGxaRUZ1WTJWemRHOXlLSFJoY21kbGRFbEVLU0I4ZkNCaGJtTmxjM1J2Y2s1dlpHVTdYRzVjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0x5OGdWR2hwY3lCM2FXeHNJSFJvY205M0lHOXVJSFJvWlNCdVpYaDBJR3hwYm1VN0lHZHBkbVVnWVc0Z1pXRnliSGtnZDJGeWJtbHVaMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWkdWbGNHVnpkRUZ1WTJWemRHOXlJQ0U5SUc1MWJHd3NJQ2RTWldGamRDQmpZVzVjWENkMElHWnBibVFnZEdobElISnZiM1FnWTI5dGNHOXVaVzUwSUc1dlpHVWdabTl5SUdSaGRHRXRjbVZoWTNScFpDQjJZV3gxWlNBbklDc2dKMkFsYzJBdUlFbG1JSGx2ZFZ4Y0ozSmxJSE5sWldsdVp5QjBhR2x6SUcxbGMzTmhaMlVzSUdsMElIQnliMkpoWW14NUlHMWxZVzV6SUhSb1lYUWdKeUFySUNkNWIzVmNYQ2QyWlNCc2IyRmtaV1FnZEhkdklHTnZjR2xsY3lCdlppQlNaV0ZqZENCdmJpQjBhR1VnY0dGblpTNGdRWFFnZEdocGN5QjBhVzFsTENCdmJteDVJQ2NnS3lBbllTQnphVzVuYkdVZ1kyOXdlU0J2WmlCU1pXRmpkQ0JqWVc0Z1ltVWdiRzloWkdWa0lHRjBJR0VnZEdsdFpTNG5MQ0IwWVhKblpYUkpSQ2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm1seWMzUkRhR2xzWkhKbGJsc3dYU0E5SUdSbFpYQmxjM1JCYm1ObGMzUnZjaTVtYVhKemRFTm9hV3hrTzF4dUlDQWdJR1pwY25OMFEyaHBiR1J5Wlc0dWJHVnVaM1JvSUQwZ01UdGNibHh1SUNBZ0lIZG9hV3hsSUNoamFHbHNaRWx1WkdWNElEd2dabWx5YzNSRGFHbHNaSEpsYmk1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUhaaGNpQmphR2xzWkNBOUlHWnBjbk4wUTJocGJHUnlaVzViWTJocGJHUkpibVJsZUNzclhUdGNiaUFnSUNBZ0lIWmhjaUIwWVhKblpYUkRhR2xzWkR0Y2JseHVJQ0FnSUNBZ2QyaHBiR1VnS0dOb2FXeGtLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQmphR2xzWkVsRUlEMGdVbVZoWTNSTmIzVnVkQzVuWlhSSlJDaGphR2xzWkNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUdsc1pFbEVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdSWFpsYmlCcFppQjNaU0JtYVc1a0lIUm9aU0J1YjJSbElIZGxKM0psSUd4dmIydHBibWNnWm05eUxDQjNaU0JtYVc1cGMyZ2diRzl2Y0dsdVoxeHVJQ0FnSUNBZ0lDQWdJQzh2SUhSb2NtOTFaMmdnYVhSeklITnBZbXhwYm1keklIUnZJR1Z1YzNWeVpTQjBhR1Y1SjNKbElHTmhZMmhsWkNCemJ5QjBhR0YwSUhkbElHUnZiaWQwSUdoaGRtVmNiaUFnSUNBZ0lDQWdJQ0F2THlCMGJ5QnlaWFpwYzJsMElIUm9hWE1nYm05a1pTQmhaMkZwYmk0Z1QzUm9aWEozYVhObExDQjNaU0J0WVd0bElHNWVNaUJqWVd4c2N5QjBieUJuWlhSSlJGeHVJQ0FnSUNBZ0lDQWdJQzh2SUhkb1pXNGdkbWx6YVhScGJtY2dkR2hsSUcxaGJua2dZMmhwYkdSeVpXNGdiMllnWVNCemFXNW5iR1VnYm05a1pTQnBiaUJ2Y21SbGNpNWNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDaDBZWEpuWlhSSlJDQTlQVDBnWTJocGJHUkpSQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMFEyaHBiR1FnUFNCamFHbHNaRHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tGSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpMbWx6UVc1alpYTjBiM0pKUkU5bUtHTm9hV3hrU1VRc0lIUmhjbWRsZEVsRUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdTV1lnZDJVZ1ptbHVaQ0JoSUdOb2FXeGtJSGRvYjNObElFbEVJR2x6SUdGdUlHRnVZMlZ6ZEc5eUlHOW1JSFJvWlNCbmFYWmxiaUJKUkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUhSb1pXNGdkMlVnWTJGdUlHSmxJSE4xY21VZ2RHaGhkQ0IzWlNCdmJteDVJSGRoYm5RZ2RHOGdjMlZoY21Ob0lIUm9aU0J6ZFdKMGNtVmxYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnliMjkwWldRZ1lYUWdkR2hwY3lCamFHbHNaQ3dnYzI4Z2QyVWdZMkZ1SUhSb2NtOTNJRzkxZENCMGFHVWdjbVZ6ZENCdlppQjBhR1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJSE5sWVhKamFDQnpkR0YwWlM1Y2JpQWdJQ0FnSUNBZ0lDQWdJR1pwY25OMFEyaHBiR1J5Wlc0dWJHVnVaM1JvSUQwZ1kyaHBiR1JKYm1SbGVDQTlJREE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1hWEp6ZEVOb2FXeGtjbVZ1TG5CMWMyZ29ZMmhwYkdRdVptbHljM1JEYUdsc1pDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRWxtSUhSb2FYTWdZMmhwYkdRZ2FHRmtJRzV2SUVsRUxDQjBhR1Z1SUhSb1pYSmxKM01nWVNCamFHRnVZMlVnZEdoaGRDQnBkQ0IzWVhOY2JpQWdJQ0FnSUNBZ0lDQXZMeUJwYm1wbFkzUmxaQ0JoZFhSdmJXRjBhV05oYkd4NUlHSjVJSFJvWlNCaWNtOTNjMlZ5TENCaGN5QjNhR1Z1SUdFZ1lEeDBZV0pzWlQ1Z1hHNGdJQ0FnSUNBZ0lDQWdMeThnWld4bGJXVnVkQ0J6Y0hKdmRYUnpJR0Z1SUdWNGRISmhJR0E4ZEdKdlpIaytZQ0JqYUdsc1pDQmhjeUJoSUhOcFpHVWdaV1ptWldOMElHOW1YRzRnSUNBZ0lDQWdJQ0FnTHk4Z1lDNXBibTVsY2toVVRVeGdJSEJoY25OcGJtY3VJRTl3ZEdsdGFYTjBhV05oYkd4NUlHTnZiblJwYm5WbElHUnZkMjRnZEdocGMxeHVJQ0FnSUNBZ0lDQWdJQzh2SUdKeVlXNWphQ3dnWW5WMElHNXZkQ0JpWldadmNtVWdaWGhoYldsdWFXNW5JSFJvWlNCdmRHaGxjaUJ6YVdKc2FXNW5jeTVjYmlBZ0lDQWdJQ0FnSUNCbWFYSnpkRU5vYVd4a2NtVnVMbkIxYzJnb1kyaHBiR1F1Wm1seWMzUkRhR2xzWkNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqYUdsc1pDQTlJR05vYVd4a0xtNWxlSFJUYVdKc2FXNW5PMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2RHRnlaMlYwUTJocGJHUXBJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1JXMXdkSGxwYm1jZ1ptbHljM1JEYUdsc1pISmxiaTltYVc1a1EyOXRjRzl1Wlc1MFVtOXZkRkpsZFhOaFlteGxRWEp5WVhrZ2FYTmNiaUFnSUNBZ0lDQWdMeThnYm05MElHNWxZMlZ6YzJGeWVTQm1iM0lnWTI5eWNtVmpkRzVsYzNNc0lHSjFkQ0JwZENCb1pXeHdjeUIwYUdVZ1IwTWdjbVZqYkdGcGJWeHVJQ0FnSUNBZ0lDQXZMeUJoYm5rZ2JtOWtaWE1nZEdoaGRDQjNaWEpsSUd4bFpuUWdZWFFnZEdobElHVnVaQ0J2WmlCMGFHVWdjMlZoY21Ob0xseHVJQ0FnSUNBZ0lDQm1hWEp6ZEVOb2FXeGtjbVZ1TG14bGJtZDBhQ0E5SURBN1hHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUmhjbWRsZEVOb2FXeGtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHWnBjbk4wUTJocGJHUnlaVzR1YkdWdVozUm9JRDBnTUR0Y2JseHVJQ0FnSUNGbVlXeHpaU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZG1hVzVrUTI5dGNHOXVaVzUwVW05dmRDZ3VMaTRzSUNWektUb2dWVzVoWW14bElIUnZJR1pwYm1RZ1pXeGxiV1Z1ZEM0Z1ZHaHBjeUJ3Y205aVlXSnNlU0FuSUNzZ0oyMWxZVzV6SUhSb1pTQkVUMDBnZDJGeklIVnVaWGh3WldOMFpXUnNlU0J0ZFhSaGRHVmtJQ2hsTG1jdUxDQmllU0IwYUdVZ1luSnZkM05sY2lrc0lDY2dLeUFuZFhOMVlXeHNlU0JrZFdVZ2RHOGdabTl5WjJWMGRHbHVaeUJoSUR4MFltOWtlVDRnZDJobGJpQjFjMmx1WnlCMFlXSnNaWE1zSUc1bGMzUnBibWNnZEdGbmN5QW5JQ3NnSjJ4cGEyVWdQR1p2Y20wK0xDQThjRDRzSUc5eUlEeGhQaXdnYjNJZ2RYTnBibWNnYm05dUxWTldSeUJsYkdWdFpXNTBjeUJwYmlCaGJpQThjM1puUGlBbklDc2dKM0JoY21WdWRDNGdKeUFySUNkVWNua2dhVzV6Y0dWamRHbHVaeUIwYUdVZ1kyaHBiR1FnYm05a1pYTWdiMllnZEdobElHVnNaVzFsYm5RZ2QybDBhQ0JTWldGamRDQkpSQ0JnSlhOZ0xpY3NJSFJoY21kbGRFbEVMQ0JTWldGamRFMXZkVzUwTG1kbGRFbEVLR0Z1WTJWemRHOXlUbTlrWlNrcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZTeGNibHh1SUNCZmJXOTFiblJKYldGblpVbHVkRzlPYjJSbE9pQm1kVzVqZEdsdmJpQW9iV0Z5YTNWd0xDQmpiMjUwWVdsdVpYSXNJSE5vYjNWc1pGSmxkWE5sVFdGeWEzVndMQ0IwY21GdWMyRmpkR2x2YmlrZ2UxeHVJQ0FnSUNFb1kyOXVkR0ZwYm1WeUlDWW1JQ2hqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnUFQwOUlFVk1SVTFGVGxSZlRrOUVSVjlVV1ZCRklIeDhJR052Ym5SaGFXNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ1JFOURYMDVQUkVWZlZGbFFSU0I4ZkNCamIyNTBZV2x1WlhJdWJtOWtaVlI1Y0dVZ1BUMDlJRVJQUTFWTlJVNVVYMFpTUVVkTlJVNVVYMDVQUkVWZlZGbFFSU2twSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMjF2ZFc1MFEyOXRjRzl1Wlc1MFNXNTBiMDV2WkdVb0xpNHVLVG9nVkdGeVoyVjBJR052Ym5SaGFXNWxjaUJwY3lCdWIzUWdkbUZzYVdRdUp5a2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnYVdZZ0tITm9iM1ZzWkZKbGRYTmxUV0Z5YTNWd0tTQjdYRzRnSUNBZ0lDQjJZWElnY205dmRFVnNaVzFsYm5RZ1BTQm5aWFJTWldGamRGSnZiM1JGYkdWdFpXNTBTVzVEYjI1MFlXbHVaWElvWTI5dWRHRnBibVZ5S1R0Y2JpQWdJQ0FnSUdsbUlDaFNaV0ZqZEUxaGNtdDFjRU5vWldOcmMzVnRMbU5oYmxKbGRYTmxUV0Z5YTNWd0tHMWhjbXQxY0N3Z2NtOXZkRVZzWlcxbGJuUXBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCamFHVmphM04xYlNBOUlISnZiM1JGYkdWdFpXNTBMbWRsZEVGMGRISnBZblYwWlNoU1pXRmpkRTFoY210MWNFTm9aV05yYzNWdExrTklSVU5MVTFWTlgwRlVWRkpmVGtGTlJTazdYRzRnSUNBZ0lDQWdJSEp2YjNSRmJHVnRaVzUwTG5KbGJXOTJaVUYwZEhKcFluVjBaU2hTWldGamRFMWhjbXQxY0VOb1pXTnJjM1Z0TGtOSVJVTkxVMVZOWDBGVVZGSmZUa0ZOUlNrN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUhKdmIzUk5ZWEpyZFhBZ1BTQnliMjkwUld4bGJXVnVkQzV2ZFhSbGNraFVUVXc3WEc0Z0lDQWdJQ0FnSUhKdmIzUkZiR1Z0Wlc1MExuTmxkRUYwZEhKcFluVjBaU2hTWldGamRFMWhjbXQxY0VOb1pXTnJjM1Z0TGtOSVJVTkxVMVZOWDBGVVZGSmZUa0ZOUlN3Z1kyaGxZMnR6ZFcwcE8xeHVYRzRnSUNBZ0lDQWdJSFpoY2lCdWIzSnRZV3hwZW1Wa1RXRnlhM1Z3SUQwZ2JXRnlhM1Z3TzF4dUlDQWdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJR0psWTJGMWMyVWdjbTl2ZEUxaGNtdDFjQ0JwY3lCeVpYUnlhV1YyWldRZ1puSnZiU0IwYUdVZ1JFOU5MQ0IyWVhKcGIzVnpJRzV2Y20xaGJHbDZZWFJwYjI1elhHNGdJQ0FnSUNBZ0lDQWdMeThnZDJsc2JDQm9ZWFpsSUc5alkzVnljbVZrSUhkb2FXTm9JSGRwYkd3Z2JtOTBJR0psSUhCeVpYTmxiblFnYVc0Z1lHMWhjbXQxY0dBdUlFaGxjbVVzWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdhVzV6WlhKMElHMWhjbXQxY0NCcGJuUnZJR0VnUEdScGRqNGdiM0lnUEdsbWNtRnRaVDRnWkdWd1pXNWthVzVuSUc5dUlIUm9aU0JqYjI1MFlXbHVaWEpjYmlBZ0lDQWdJQ0FnSUNBdkx5QjBlWEJsSUhSdklIQmxjbVp2Y20wZ2RHaGxJSE5oYldVZ2JtOXliV0ZzYVhwaGRHbHZibk1nWW1WbWIzSmxJR052YlhCaGNtbHVaeTVjYmlBZ0lDQWdJQ0FnSUNCMllYSWdibTl5YldGc2FYcGxjanRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9ZMjl1ZEdGcGJtVnlMbTV2WkdWVWVYQmxJRDA5UFNCRlRFVk5SVTVVWDA1UFJFVmZWRmxRUlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsY2lBOUlHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSjJScGRpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtOXliV0ZzYVhwbGNpNXBibTVsY2toVVRVd2dQU0J0WVhKcmRYQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIzSnRZV3hwZW1Wa1RXRnlhM1Z3SUQwZ2JtOXliV0ZzYVhwbGNpNXBibTVsY2toVVRVdzdYRzRnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHNXZjbTFoYkdsNlpYSWdQU0JrYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtDZHBabkpoYldVbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdSdlkzVnRaVzUwTG1KdlpIa3VZWEJ3Wlc1a1EyaHBiR1FvYm05eWJXRnNhWHBsY2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1YjNKdFlXeHBlbVZ5TG1OdmJuUmxiblJFYjJOMWJXVnVkQzUzY21sMFpTaHRZWEpyZFhBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsWkUxaGNtdDFjQ0E5SUc1dmNtMWhiR2w2WlhJdVkyOXVkR1Z1ZEVSdlkzVnRaVzUwTG1SdlkzVnRaVzUwUld4bGJXVnVkQzV2ZFhSbGNraFVUVXc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtiMk4xYldWdWRDNWliMlI1TG5KbGJXOTJaVU5vYVd4a0tHNXZjbTFoYkdsNlpYSXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSFpoY2lCa2FXWm1TVzVrWlhnZ1BTQm1hWEp6ZEVScFptWmxjbVZ1WTJWSmJtUmxlQ2h1YjNKdFlXeHBlbVZrVFdGeWEzVndMQ0J5YjI5MFRXRnlhM1Z3S1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJR1JwWm1abGNtVnVZMlVnUFNBbklDaGpiR2xsYm5RcElDY2dLeUJ1YjNKdFlXeHBlbVZrVFdGeWEzVndMbk4xWW5OMGNtbHVaeWhrYVdabVNXNWtaWGdnTFNBeU1Dd2daR2xtWmtsdVpHVjRJQ3NnTWpBcElDc2dKMXhjYmlBb2MyVnlkbVZ5S1NBbklDc2djbTl2ZEUxaGNtdDFjQzV6ZFdKemRISnBibWNvWkdsbVprbHVaR1Y0SUMwZ01qQXNJR1JwWm1aSmJtUmxlQ0FySURJd0tUdGNibHh1SUNBZ0lDQWdJQ0FoS0dOdmJuUmhhVzVsY2k1dWIyUmxWSGx3WlNBaFBUMGdSRTlEWDA1UFJFVmZWRmxRUlNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuV1c5MVhGd25jbVVnZEhKNWFXNW5JSFJ2SUhKbGJtUmxjaUJoSUdOdmJYQnZibVZ1ZENCMGJ5QjBhR1VnWkc5amRXMWxiblFnZFhOcGJtY2dKeUFySUNkelpYSjJaWElnY21WdVpHVnlhVzVuSUdKMWRDQjBhR1VnWTJobFkydHpkVzBnZDJGeklHbHVkbUZzYVdRdUlGUm9hWE1nZFhOMVlXeHNlU0FuSUNzZ0oyMWxZVzV6SUhsdmRTQnlaVzVrWlhKbFpDQmhJR1JwWm1abGNtVnVkQ0JqYjIxd2IyNWxiblFnZEhsd1pTQnZjaUJ3Y205d2N5QnZiaUFuSUNzZ0ozUm9aU0JqYkdsbGJuUWdabkp2YlNCMGFHVWdiMjVsSUc5dUlIUm9aU0J6WlhKMlpYSXNJRzl5SUhsdmRYSWdjbVZ1WkdWeUtDa2dKeUFySUNkdFpYUm9iMlJ6SUdGeVpTQnBiWEIxY21VdUlGSmxZV04wSUdOaGJtNXZkQ0JvWVc1a2JHVWdkR2hwY3lCallYTmxJR1IxWlNCMGJ5QW5JQ3NnSjJOeWIzTnpMV0p5YjNkelpYSWdjWFZwY210eklHSjVJSEpsYm1SbGNtbHVaeUJoZENCMGFHVWdaRzlqZFcxbGJuUWdjbTl2ZEM0Z1dXOTFJQ2NnS3lBbmMyaHZkV3hrSUd4dmIyc2dabTl5SUdWdWRtbHliMjV0Wlc1MElHUmxjR1Z1WkdWdWRDQmpiMlJsSUdsdUlIbHZkWElnWTI5dGNHOXVaVzUwY3lBbklDc2dKMkZ1WkNCbGJuTjFjbVVnZEdobElIQnliM0J6SUdGeVpTQjBhR1VnYzJGdFpTQmpiR2xsYm5RZ1lXNWtJSE5sY25abGNpQnphV1JsT2x4Y2JpVnpKeXdnWkdsbVptVnlaVzVqWlNrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDZFNaV0ZqZENCaGRIUmxiWEIwWldRZ2RHOGdjbVYxYzJVZ2JXRnlhM1Z3SUdsdUlHRWdZMjl1ZEdGcGJtVnlJR0oxZENCMGFHVWdKeUFySUNkamFHVmphM04xYlNCM1lYTWdhVzUyWVd4cFpDNGdWR2hwY3lCblpXNWxjbUZzYkhrZ2JXVmhibk1nZEdoaGRDQjViM1VnWVhKbElDY2dLeUFuZFhOcGJtY2djMlZ5ZG1WeUlISmxibVJsY21sdVp5QmhibVFnZEdobElHMWhjbXQxY0NCblpXNWxjbUYwWldRZ2IyNGdkR2hsSUNjZ0t5QW5jMlZ5ZG1WeUlIZGhjeUJ1YjNRZ2QyaGhkQ0IwYUdVZ1kyeHBaVzUwSUhkaGN5QmxlSEJsWTNScGJtY3VJRkpsWVdOMElHbHVhbVZqZEdWa0lDY2dLeUFuYm1WM0lHMWhjbXQxY0NCMGJ5QmpiMjF3Wlc1ellYUmxJSGRvYVdOb0lIZHZjbXR6SUdKMWRDQjViM1VnYUdGMlpTQnNiM04wSUcxaGJua2dKeUFySUNkdlppQjBhR1VnWW1WdVpXWnBkSE1nYjJZZ2MyVnlkbVZ5SUhKbGJtUmxjbWx1Wnk0Z1NXNXpkR1ZoWkN3Z1ptbG5kWEpsSUc5MWRDQW5JQ3NnSjNkb2VTQjBhR1VnYldGeWEzVndJR0psYVc1bklHZGxibVZ5WVhSbFpDQnBjeUJrYVdabVpYSmxiblFnYjI0Z2RHaGxJR05zYVdWdWRDQW5JQ3NnSjI5eUlITmxjblpsY2pwY1hHNGxjeWNzSUdScFptWmxjbVZ1WTJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdJU2hqYjI1MFlXbHVaWEl1Ym05a1pWUjVjR1VnSVQwOUlFUlBRMTlPVDBSRlgxUlpVRVVwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMWx2ZFZ4Y0ozSmxJSFJ5ZVdsdVp5QjBieUJ5Wlc1a1pYSWdZU0JqYjIxd2IyNWxiblFnZEc4Z2RHaGxJR1J2WTNWdFpXNTBJR0oxZENBbklDc2dKM2x2ZFNCa2FXUnVYRnduZENCMWMyVWdjMlZ5ZG1WeUlISmxibVJsY21sdVp5NGdWMlVnWTJGdVhGd25kQ0JrYnlCMGFHbHpJQ2NnS3lBbmQybDBhRzkxZENCMWMybHVaeUJ6WlhKMlpYSWdjbVZ1WkdWeWFXNW5JR1IxWlNCMGJ5QmpjbTl6Y3kxaWNtOTNjMlZ5SUhGMWFYSnJjeTRnSnlBcklDZFRaV1VnVW1WaFkzUkVUMDFUWlhKMlpYSXVjbVZ1WkdWeVZHOVRkSEpwYm1jb0tTQm1iM0lnYzJWeWRtVnlJSEpsYm1SbGNtbHVaeTRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQnBaaUFvZEhKaGJuTmhZM1JwYjI0dWRYTmxRM0psWVhSbFJXeGxiV1Z1ZENrZ2UxeHVJQ0FnSUNBZ2QyaHBiR1VnS0dOdmJuUmhhVzVsY2k1c1lYTjBRMmhwYkdRcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbkpsYlc5MlpVTm9hV3hrS0dOdmJuUmhhVzVsY2k1c1lYTjBRMmhwYkdRcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxtRndjR1Z1WkVOb2FXeGtLRzFoY210MWNDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhObGRFbHVibVZ5U0ZSTlRDaGpiMjUwWVdsdVpYSXNJRzFoY210MWNDazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJRzkzYm1WeVJHOWpkVzFsYm5SRGIyNTBaWGgwUzJWNU9pQnZkMjVsY2tSdlkzVnRaVzUwUTI5dWRHVjRkRXRsZVN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WaFkzUWdTVVFnZFhScGJHbDBhV1Z6TGx4dUlDQWdLaTljYmx4dUlDQm5aWFJTWldGamRGSnZiM1JKUkRvZ1oyVjBVbVZoWTNSU2IyOTBTVVFzWEc1Y2JpQWdaMlYwU1VRNklHZGxkRWxFTEZ4dVhHNGdJSE5sZEVsRU9pQnpaWFJKUkN4Y2JseHVJQ0JuWlhST2IyUmxPaUJuWlhST2IyUmxMRnh1WEc0Z0lHZGxkRTV2WkdWR2NtOXRTVzV6ZEdGdVkyVTZJR2RsZEU1dlpHVkdjbTl0U1c1emRHRnVZMlVzWEc1Y2JpQWdhWE5XWVd4cFpEb2dhWE5XWVd4cFpDeGNibHh1SUNCd2RYSm5aVWxFT2lCd2RYSm5aVWxFWEc1OU8xeHVYRzVTWldGamRGQmxjbVl1YldWaGMzVnlaVTFsZEdodlpITW9VbVZoWTNSTmIzVnVkQ3dnSjFKbFlXTjBUVzkxYm5RbkxDQjdYRzRnSUY5eVpXNWtaWEpPWlhkU2IyOTBRMjl0Y0c5dVpXNTBPaUFuWDNKbGJtUmxjazVsZDFKdmIzUkRiMjF3YjI1bGJuUW5MRnh1SUNCZmJXOTFiblJKYldGblpVbHVkRzlPYjJSbE9pQW5YMjF2ZFc1MFNXMWhaMlZKYm5SdlRtOWtaU2RjYm4wcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFRXOTFiblE3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RNdWx0aUNoaWxkXG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRSZWNvbmNpbGVyJyk7XG5cbnZhciBmbGF0dGVuQ2hpbGRyZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW5DaGlsZHJlbicpO1xuXG4vKipcbiAqIFVwZGF0aW5nIGNoaWxkcmVuIG9mIGEgY29tcG9uZW50IG1heSB0cmlnZ2VyIHJlY3Vyc2l2ZSB1cGRhdGVzLiBUaGUgZGVwdGggaXNcbiAqIHVzZWQgdG8gYmF0Y2ggcmVjdXJzaXZlIHVwZGF0ZXMgdG8gcmVuZGVyIG1hcmt1cCBtb3JlIGVmZmljaWVudGx5LlxuICpcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAcHJpdmF0ZVxuICovXG52YXIgdXBkYXRlRGVwdGggPSAwO1xuXG4vKipcbiAqIFF1ZXVlIG9mIHVwZGF0ZSBjb25maWd1cmF0aW9uIG9iamVjdHMuXG4gKlxuICogRWFjaCBvYmplY3QgaGFzIGEgYHR5cGVgIHByb3BlcnR5IHRoYXQgaXMgaW4gYFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzYC5cbiAqXG4gKiBAdHlwZSB7YXJyYXk8b2JqZWN0Pn1cbiAqIEBwcml2YXRlXG4gKi9cbnZhciB1cGRhdGVRdWV1ZSA9IFtdO1xuXG4vKipcbiAqIFF1ZXVlIG9mIG1hcmt1cCB0byBiZSByZW5kZXJlZC5cbiAqXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqIEBwcml2YXRlXG4gKi9cbnZhciBtYXJrdXBRdWV1ZSA9IFtdO1xuXG4vKipcbiAqIEVucXVldWVzIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0ZWQgYXQgYSBzdXBwbGllZCBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50SUQgSUQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXguXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlSW5zZXJ0TWFya3VwKHBhcmVudElELCBtYXJrdXAsIHRvSW5kZXgpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICB1cGRhdGVRdWV1ZS5wdXNoKHtcbiAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB0eXBlOiBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5JTlNFUlRfTUFSS1VQLFxuICAgIG1hcmt1cEluZGV4OiBtYXJrdXBRdWV1ZS5wdXNoKG1hcmt1cCkgLSAxLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAgIHRvSW5kZXg6IHRvSW5kZXhcbiAgfSk7XG59XG5cbi8qKlxuICogRW5xdWV1ZXMgbW92aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gYW5vdGhlciBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50SUQgSUQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBpbmRleCBvZiB0aGUgZXhpc3RpbmcgZWxlbWVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZU1vdmUocGFyZW50SUQsIGZyb21JbmRleCwgdG9JbmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLk1PVkVfRVhJU1RJTkcsXG4gICAgbWFya3VwSW5kZXg6IG51bGwsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBmcm9tSW5kZXg6IGZyb21JbmRleCxcbiAgICB0b0luZGV4OiB0b0luZGV4XG4gIH0pO1xufVxuXG4vKipcbiAqIEVucXVldWVzIHJlbW92aW5nIGFuIGVsZW1lbnQgYXQgYW4gaW5kZXguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudElEIElEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBJbmRleCBvZiB0aGUgZWxlbWVudCB0byByZW1vdmUuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBlbnF1ZXVlUmVtb3ZlKHBhcmVudElELCBmcm9tSW5kZXgpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICB1cGRhdGVRdWV1ZS5wdXNoKHtcbiAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB0eXBlOiBSZWFjdE11bHRpQ2hpbGRVcGRhdGVUeXBlcy5SRU1PVkVfTk9ERSxcbiAgICBtYXJrdXBJbmRleDogbnVsbCxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgIHRvSW5kZXg6IG51bGxcbiAgfSk7XG59XG5cbi8qKlxuICogRW5xdWV1ZXMgc2V0dGluZyB0aGUgbWFya3VwIG9mIGEgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50SUQgSUQgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZVNldE1hcmt1cChwYXJlbnRJRCwgbWFya3VwKSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgdXBkYXRlUXVldWUucHVzaCh7XG4gICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgdHlwZTogUmVhY3RNdWx0aUNoaWxkVXBkYXRlVHlwZXMuU0VUX01BUktVUCxcbiAgICBtYXJrdXBJbmRleDogbnVsbCxcbiAgICBjb250ZW50OiBtYXJrdXAsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAgIHRvSW5kZXg6IG51bGxcbiAgfSk7XG59XG5cbi8qKlxuICogRW5xdWV1ZXMgc2V0dGluZyB0aGUgdGV4dCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJRCBJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZVRleHRDb250ZW50KHBhcmVudElELCB0ZXh0Q29udGVudCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHVwZGF0ZVF1ZXVlLnB1c2goe1xuICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgIHR5cGU6IFJlYWN0TXVsdGlDaGlsZFVwZGF0ZVR5cGVzLlRFWFRfQ09OVEVOVCxcbiAgICBtYXJrdXBJbmRleDogbnVsbCxcbiAgICBjb250ZW50OiB0ZXh0Q29udGVudCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgdG9JbmRleDogbnVsbFxuICB9KTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKCkge1xuICBpZiAodXBkYXRlUXVldWUubGVuZ3RoKSB7XG4gICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKHVwZGF0ZVF1ZXVlLCBtYXJrdXBRdWV1ZSk7XG4gICAgY2xlYXJRdWV1ZSgpO1xuICB9XG59XG5cbi8qKlxuICogQ2xlYXJzIGFueSBlbnF1ZXVlZCB1cGRhdGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNsZWFyUXVldWUoKSB7XG4gIHVwZGF0ZVF1ZXVlLmxlbmd0aCA9IDA7XG4gIG1hcmt1cFF1ZXVlLmxlbmd0aCA9IDA7XG59XG5cbi8qKlxuICogUmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5nIG11bHRpcGxlIGNoaWxkcmVuLlxuICpcbiAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RNdWx0aUNoaWxkID0ge1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IG11c3QgcmVjb25jaWxlIG11bHRpcGxlXG4gICAqIGNoaWxkcmVuLiBUaGlzIGlzIHVzZWQgYnkgYFJlYWN0RE9NQ29tcG9uZW50YCB0byBtb3VudCwgdXBkYXRlLCBhbmRcbiAgICogdW5tb3VudCBjaGlsZCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAbGVuZHMge1JlYWN0TXVsdGlDaGlsZC5wcm90b3R5cGV9XG4gICAqL1xuICBNaXhpbjoge1xuXG4gICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9LFxuXG4gICAgX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICB2YXIgbmV4dENoaWxkcmVuO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICAgICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyk7XG4gICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNhc2VcbiAgICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuXG4gICAgICogQHJldHVybiB7YXJyYXl9IEFuIGFycmF5IG9mIG1vdW50ZWQgcmVwcmVzZW50YXRpb25zLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW25hbWVdO1xuICAgICAgICAgIC8vIElubGluZWQgZm9yIHBlcmZvcm1hbmNlLCBzZWUgYFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0SURgLlxuICAgICAgICAgIHZhciByb290SUQgPSB0aGlzLl9yb290Tm9kZUlEICsgbmFtZTtcbiAgICAgICAgICB2YXIgbW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgcm9vdElELCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrO1xuICAgICAgICAgIG1vdW50SW1hZ2VzLnB1c2gobW91bnRJbWFnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtb3VudEltYWdlcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSB0ZXh0IGNvbnRlbnQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5leHRDb250ZW50IFN0cmluZyBvZiBjb250ZW50LlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZVRleHRDb250ZW50OiBmdW5jdGlvbiAobmV4dENvbnRlbnQpIHtcbiAgICAgIHVwZGF0ZURlcHRoKys7XG4gICAgICB2YXIgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4pO1xuICAgICAgICAvLyBUT0RPOiBUaGUgc2V0VGV4dENvbnRlbnQgb3BlcmF0aW9uIHNob3VsZCBiZSBlbm91Z2hcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxkcmVuW25hbWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IG5ldyB0ZXh0IGNvbnRlbnQuXG4gICAgICAgIHRoaXMuc2V0VGV4dENvbnRlbnQobmV4dENvbnRlbnQpO1xuICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdXBkYXRlRGVwdGgtLTtcbiAgICAgICAgaWYgKCF1cGRhdGVEZXB0aCkge1xuICAgICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgICAgY2xlYXJRdWV1ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzUXVldWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSBtYXJrdXAgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5leHRNYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1cGRhdGVNYXJrdXA6IGZ1bmN0aW9uIChuZXh0TWFya3VwKSB7XG4gICAgICB1cGRhdGVEZXB0aCsrO1xuICAgICAgdmFyIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLlxuICAgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuKTtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLl91bm1vdW50Q2hpbGRCeU5hbWUocHJldkNoaWxkcmVuW25hbWVdLCBuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRNYXJrdXAobmV4dE1hcmt1cCk7XG4gICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB1cGRhdGVEZXB0aC0tO1xuICAgICAgICBpZiAoIXVwZGF0ZURlcHRoKSB7XG4gICAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICBjbGVhclF1ZXVlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIG5ldyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHVwZGF0ZURlcHRoKys7XG4gICAgICB2YXIgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHVwZGF0ZURlcHRoLS07XG4gICAgICAgIGlmICghdXBkYXRlRGVwdGgpIHtcbiAgICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgIGNsZWFyUXVldWUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEltcHJvdmUgcGVyZm9ybWFuY2UgYnkgaXNvbGF0aW5nIHRoaXMgaG90IGNvZGUgcGF0aCBmcm9tIHRoZSB0cnkvY2F0Y2hcbiAgICAgKiBibG9jayBpbiBgdXBkYXRlQ2hpbGRyZW5gLlxuICAgICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAZmluYWxcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG5leHRDaGlsZHJlbjtcbiAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5hbWU7XG4gICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBjaGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0XG4gICAgICAvLyBgbGFzdEluZGV4YCB3aWxsIGJlIHRoZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJlbmAuXG4gICAgICB2YXIgbGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBuZXh0SW5kZXggPSAwO1xuICAgICAgZm9yIChuYW1lIGluIG5leHRDaGlsZHJlbikge1xuICAgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuICAgICAgICB2YXIgbmV4dENoaWxkID0gbmV4dENoaWxkcmVuW25hbWVdO1xuICAgICAgICBpZiAocHJldkNoaWxkID09PSBuZXh0Q2hpbGQpIHtcbiAgICAgICAgICB0aGlzLm1vdmVDaGlsZChwcmV2Q2hpbGQsIG5leHRJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRleCk7XG4gICAgICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4dEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGQpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBgbGFzdEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4YCBnZXRzIHVuc2V0IGJ5IHVubW91bnRpbmcuXG4gICAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRleCk7XG4gICAgICAgICAgICB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG4gICAgICAgICAgdGhpcy5fbW91bnRDaGlsZEJ5TmFtZUF0SW5kZXgobmV4dENoaWxkLCBuYW1lLCBuZXh0SW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cbiAgICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpKSB7XG4gICAgICAgICAgdGhpcy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihyZW5kZXJlZENoaWxkcmVuKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBhIGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNoaWxkYC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIHRvSW5kZXgsIGxhc3RJbmRleCkge1xuICAgICAgLy8gSWYgdGhlIGluZGV4IG9mIGBjaGlsZGAgaXMgbGVzcyB0aGFuIGBsYXN0SW5kZXhgLCB0aGVuIGl0IG5lZWRzIHRvXG4gICAgICAvLyBiZSBtb3ZlZC4gT3RoZXJ3aXNlLCB3ZSBkbyBub3QgbmVlZCB0byBtb3ZlIGl0IGJlY2F1c2UgYSBjaGlsZCB3aWxsIGJlXG4gICAgICAvLyBpbnNlcnRlZCBvciBtb3ZlZCBiZWZvcmUgYGNoaWxkYC5cbiAgICAgIGlmIChjaGlsZC5fbW91bnRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICBlbnF1ZXVlTW92ZSh0aGlzLl9yb290Tm9kZUlELCBjaGlsZC5fbW91bnRJbmRleCwgdG9JbmRleCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gY3JlYXRlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb3VudEltYWdlIE1hcmt1cCB0byBpbnNlcnQuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGNyZWF0ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG1vdW50SW1hZ2UpIHtcbiAgICAgIGVucXVldWVJbnNlcnRNYXJrdXAodGhpcy5fcm9vdE5vZGVJRCwgbW91bnRJbWFnZSwgY2hpbGQuX21vdW50SW5kZXgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgY2hpbGQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ2hpbGQgdG8gcmVtb3ZlLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBlbnF1ZXVlUmVtb3ZlKHRoaXMuX3Jvb3ROb2RlSUQsIGNoaWxkLl9tb3VudEluZGV4KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGlzIHRleHQgY29udGVudCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgc2V0VGV4dENvbnRlbnQ6IGZ1bmN0aW9uICh0ZXh0Q29udGVudCkge1xuICAgICAgZW5xdWV1ZVRleHRDb250ZW50KHRoaXMuX3Jvb3ROb2RlSUQsIHRleHRDb250ZW50KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGlzIG1hcmt1cCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0byBzZXQuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHNldE1hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCkge1xuICAgICAgZW5xdWV1ZVNldE1hcmt1cCh0aGlzLl9yb290Tm9kZUlELCBtYXJrdXApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3VudHMgYSBjaGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdW50LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNoaWxkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF9tb3VudENoaWxkQnlOYW1lQXRJbmRleDogZnVuY3Rpb24gKGNoaWxkLCBuYW1lLCBpbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIC8vIElubGluZWQgZm9yIHBlcmZvcm1hbmNlLCBzZWUgYFJlYWN0SW5zdGFuY2VIYW5kbGVzLmNyZWF0ZVJlYWN0SURgLlxuICAgICAgdmFyIHJvb3RJRCA9IHRoaXMuX3Jvb3ROb2RlSUQgKyBuYW1lO1xuICAgICAgdmFyIG1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHJvb3RJRCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuY3JlYXRlQ2hpbGQoY2hpbGQsIG1vdW50SW1hZ2UpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxkLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHRoaXMucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBudWxsO1xuICAgIH1cblxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNdWx0aUNoaWxkO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JOZFd4MGFVTm9hV3hrTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFRYVnNkR2xEYUdsc1pGeHVJQ29nUUhSNWNHVmphR1ZqYTNNZ2MzUmhkR2xqTFc5dWJIbGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTnZiWEJ2Ym1WdWRFVnVkbWx5YjI1dFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkRVZ1ZG1seWIyNXRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUk5kV3gwYVVOb2FXeGtWWEJrWVhSbFZIbHdaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVFhWc2RHbERhR2xzWkZWd1pHRjBaVlI1Y0dWekp5azdYRzVjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JuWmhjaUJTWldGamRGSmxZMjl1WTJsc1pYSWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBVbVZqYjI1amFXeGxjaWNwTzF4dWRtRnlJRkpsWVdOMFEyaHBiR1JTWldOdmJtTnBiR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOb2FXeGtVbVZqYjI1amFXeGxjaWNwTzF4dVhHNTJZWElnWm14aGRIUmxia05vYVd4a2NtVnVJRDBnY21WeGRXbHlaU2duTGk5bWJHRjBkR1Z1UTJocGJHUnlaVzRuS1R0Y2JseHVMeW9xWEc0Z0tpQlZjR1JoZEdsdVp5QmphR2xzWkhKbGJpQnZaaUJoSUdOdmJYQnZibVZ1ZENCdFlYa2dkSEpwWjJkbGNpQnlaV04xY25OcGRtVWdkWEJrWVhSbGN5NGdWR2hsSUdSbGNIUm9JR2x6WEc0Z0tpQjFjMlZrSUhSdklHSmhkR05vSUhKbFkzVnljMmwyWlNCMWNHUmhkR1Z6SUhSdklISmxibVJsY2lCdFlYSnJkWEFnYlc5eVpTQmxabVpwWTJsbGJuUnNlUzVjYmlBcVhHNGdLaUJBZEhsd1pTQjdiblZ0WW1WeWZWeHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVkbUZ5SUhWd1pHRjBaVVJsY0hSb0lEMGdNRHRjYmx4dUx5b3FYRzRnS2lCUmRXVjFaU0J2WmlCMWNHUmhkR1VnWTI5dVptbG5kWEpoZEdsdmJpQnZZbXBsWTNSekxseHVJQ3BjYmlBcUlFVmhZMmdnYjJKcVpXTjBJR2hoY3lCaElHQjBlWEJsWUNCd2NtOXdaWEowZVNCMGFHRjBJR2x6SUdsdUlHQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGMyQXVYRzRnS2x4dUlDb2dRSFI1Y0dVZ2UyRnljbUY1UEc5aWFtVmpkRDU5WEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1MllYSWdkWEJrWVhSbFVYVmxkV1VnUFNCYlhUdGNibHh1THlvcVhHNGdLaUJSZFdWMVpTQnZaaUJ0WVhKcmRYQWdkRzhnWW1VZ2NtVnVaR1Z5WldRdVhHNGdLbHh1SUNvZ1FIUjVjR1VnZTJGeWNtRjVQSE4wY21sdVp6NTlYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzUyWVhJZ2JXRnlhM1Z3VVhWbGRXVWdQU0JiWFR0Y2JseHVMeW9xWEc0Z0tpQkZibkYxWlhWbGN5QnRZWEpyZFhBZ2RHOGdZbVVnY21WdVpHVnlaV1FnWVc1a0lHbHVjMlZ5ZEdWa0lHRjBJR0VnYzNWd2NHeHBaV1FnYVc1a1pYZ3VYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIQmhjbVZ1ZEVsRUlFbEVJRzltSUhSb1pTQndZWEpsYm5RZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzFoY210MWNDQk5ZWEpyZFhBZ2RHaGhkQ0J5Wlc1a1pYSnpJR2x1ZEc4Z1lXNGdaV3hsYldWdWRDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0IwYjBsdVpHVjRJRVJsYzNScGJtRjBhVzl1SUdsdVpHVjRMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWlc1eGRXVjFaVWx1YzJWeWRFMWhjbXQxY0Nod1lYSmxiblJKUkN3Z2JXRnlhM1Z3TENCMGIwbHVaR1Y0S1NCN1hHNGdJQzh2SUU1UFZFVTZJRTUxYkd3Z2RtRnNkV1Z6SUhKbFpIVmpaU0JvYVdSa1pXNGdZMnhoYzNObGN5NWNiaUFnZFhCa1lYUmxVWFZsZFdVdWNIVnphQ2g3WEc0Z0lDQWdjR0Z5Wlc1MFNVUTZJSEJoY21WdWRFbEVMRnh1SUNBZ0lIQmhjbVZ1ZEU1dlpHVTZJRzUxYkd3c1hHNGdJQ0FnZEhsd1pUb2dVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTXVTVTVUUlZKVVgwMUJVa3RWVUN4Y2JpQWdJQ0J0WVhKcmRYQkpibVJsZURvZ2JXRnlhM1Z3VVhWbGRXVXVjSFZ6YUNodFlYSnJkWEFwSUMwZ01TeGNiaUFnSUNCamIyNTBaVzUwT2lCdWRXeHNMRnh1SUNBZ0lHWnliMjFKYm1SbGVEb2diblZzYkN4Y2JpQWdJQ0IwYjBsdVpHVjRPaUIwYjBsdVpHVjRYRzRnSUgwcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWNYVmxkV1Z6SUcxdmRtbHVaeUJoYmlCbGVHbHpkR2x1WnlCbGJHVnRaVzUwSUhSdklHRnViM1JvWlhJZ2FXNWtaWGd1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSEJoY21WdWRFbEVJRWxFSUc5bUlIUm9aU0J3WVhKbGJuUWdZMjl0Y0c5dVpXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdaeWIyMUpibVJsZUNCVGIzVnlZMlVnYVc1a1pYZ2diMllnZEdobElHVjRhWE4wYVc1bklHVnNaVzFsYm5RdVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdkRzlKYm1SbGVDQkVaWE4wYVc1aGRHbHZiaUJwYm1SbGVDQnZaaUIwYUdVZ1pXeGxiV1Z1ZEM1Y2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHVnVjWFZsZFdWTmIzWmxLSEJoY21WdWRFbEVMQ0JtY205dFNXNWtaWGdzSUhSdlNXNWtaWGdwSUh0Y2JpQWdMeThnVGs5VVJUb2dUblZzYkNCMllXeDFaWE1nY21Wa2RXTmxJR2hwWkdSbGJpQmpiR0Z6YzJWekxseHVJQ0IxY0dSaGRHVlJkV1YxWlM1d2RYTm9LSHRjYmlBZ0lDQndZWEpsYm5SSlJEb2djR0Z5Wlc1MFNVUXNYRzRnSUNBZ2NHRnlaVzUwVG05a1pUb2diblZzYkN4Y2JpQWdJQ0IwZVhCbE9pQlNaV0ZqZEUxMWJIUnBRMmhwYkdSVmNHUmhkR1ZVZVhCbGN5NU5UMVpGWDBWWVNWTlVTVTVITEZ4dUlDQWdJRzFoY210MWNFbHVaR1Y0T2lCdWRXeHNMRnh1SUNBZ0lHTnZiblJsYm5RNklHNTFiR3dzWEc0Z0lDQWdabkp2YlVsdVpHVjRPaUJtY205dFNXNWtaWGdzWEc0Z0lDQWdkRzlKYm1SbGVEb2dkRzlKYm1SbGVGeHVJQ0I5S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJGYm5GMVpYVmxjeUJ5WlcxdmRtbHVaeUJoYmlCbGJHVnRaVzUwSUdGMElHRnVJR2x1WkdWNExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCd1lYSmxiblJKUkNCSlJDQnZaaUIwYUdVZ2NHRnlaVzUwSUdOdmJYQnZibVZ1ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQm1jbTl0U1c1a1pYZ2dTVzVrWlhnZ2IyWWdkR2hsSUdWc1pXMWxiblFnZEc4Z2NtVnRiM1psTGx4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pXNXhkV1YxWlZKbGJXOTJaU2h3WVhKbGJuUkpSQ3dnWm5KdmJVbHVaR1Y0S1NCN1hHNGdJQzh2SUU1UFZFVTZJRTUxYkd3Z2RtRnNkV1Z6SUhKbFpIVmpaU0JvYVdSa1pXNGdZMnhoYzNObGN5NWNiaUFnZFhCa1lYUmxVWFZsZFdVdWNIVnphQ2g3WEc0Z0lDQWdjR0Z5Wlc1MFNVUTZJSEJoY21WdWRFbEVMRnh1SUNBZ0lIQmhjbVZ1ZEU1dlpHVTZJRzUxYkd3c1hHNGdJQ0FnZEhsd1pUb2dVbVZoWTNSTmRXeDBhVU5vYVd4a1ZYQmtZWFJsVkhsd1pYTXVVa1ZOVDFaRlgwNVBSRVVzWEc0Z0lDQWdiV0Z5YTNWd1NXNWtaWGc2SUc1MWJHd3NYRzRnSUNBZ1kyOXVkR1Z1ZERvZ2JuVnNiQ3hjYmlBZ0lDQm1jbTl0U1c1a1pYZzZJR1p5YjIxSmJtUmxlQ3hjYmlBZ0lDQjBiMGx1WkdWNE9pQnVkV3hzWEc0Z0lIMHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnVjWFZsZFdWeklITmxkSFJwYm1jZ2RHaGxJRzFoY210MWNDQnZaaUJoSUc1dlpHVXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIQmhjbVZ1ZEVsRUlFbEVJRzltSUhSb1pTQndZWEpsYm5RZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzFoY210MWNDQk5ZWEpyZFhBZ2RHaGhkQ0J5Wlc1a1pYSnpJR2x1ZEc4Z1lXNGdaV3hsYldWdWRDNWNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR1Z1Y1hWbGRXVlRaWFJOWVhKcmRYQW9jR0Z5Wlc1MFNVUXNJRzFoY210MWNDa2dlMXh1SUNBdkx5Qk9UMVJGT2lCT2RXeHNJSFpoYkhWbGN5QnlaV1IxWTJVZ2FHbGtaR1Z1SUdOc1lYTnpaWE11WEc0Z0lIVndaR0YwWlZGMVpYVmxMbkIxYzJnb2UxeHVJQ0FnSUhCaGNtVnVkRWxFT2lCd1lYSmxiblJKUkN4Y2JpQWdJQ0J3WVhKbGJuUk9iMlJsT2lCdWRXeHNMRnh1SUNBZ0lIUjVjR1U2SUZKbFlXTjBUWFZzZEdsRGFHbHNaRlZ3WkdGMFpWUjVjR1Z6TGxORlZGOU5RVkpMVlZBc1hHNGdJQ0FnYldGeWEzVndTVzVrWlhnNklHNTFiR3dzWEc0Z0lDQWdZMjl1ZEdWdWREb2diV0Z5YTNWd0xGeHVJQ0FnSUdaeWIyMUpibVJsZURvZ2JuVnNiQ3hjYmlBZ0lDQjBiMGx1WkdWNE9pQnVkV3hzWEc0Z0lIMHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFVnVjWFZsZFdWeklITmxkSFJwYm1jZ2RHaGxJSFJsZUhRZ1kyOXVkR1Z1ZEM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0dGeVpXNTBTVVFnU1VRZ2IyWWdkR2hsSUhCaGNtVnVkQ0JqYjIxd2IyNWxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHVjRkRU52Ym5SbGJuUWdWR1Y0ZENCamIyNTBaVzUwSUhSdklITmxkQzVjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdWdWNYVmxkV1ZVWlhoMFEyOXVkR1Z1ZENod1lYSmxiblJKUkN3Z2RHVjRkRU52Ym5SbGJuUXBJSHRjYmlBZ0x5OGdUazlVUlRvZ1RuVnNiQ0IyWVd4MVpYTWdjbVZrZFdObElHaHBaR1JsYmlCamJHRnpjMlZ6TGx4dUlDQjFjR1JoZEdWUmRXVjFaUzV3ZFhOb0tIdGNiaUFnSUNCd1lYSmxiblJKUkRvZ2NHRnlaVzUwU1VRc1hHNGdJQ0FnY0dGeVpXNTBUbTlrWlRvZ2JuVnNiQ3hjYmlBZ0lDQjBlWEJsT2lCU1pXRmpkRTExYkhScFEyaHBiR1JWY0dSaGRHVlVlWEJsY3k1VVJWaFVYME5QVGxSRlRsUXNYRzRnSUNBZ2JXRnlhM1Z3U1c1a1pYZzZJRzUxYkd3c1hHNGdJQ0FnWTI5dWRHVnVkRG9nZEdWNGRFTnZiblJsYm5Rc1hHNGdJQ0FnWm5KdmJVbHVaR1Y0T2lCdWRXeHNMRnh1SUNBZ0lIUnZTVzVrWlhnNklHNTFiR3hjYmlBZ2ZTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VISnZZMlZ6YzJWeklHRnVlU0JsYm5GMVpYVmxaQ0IxY0dSaGRHVnpMbHh1SUNwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlIQnliMk5sYzNOUmRXVjFaU2dwSUh0Y2JpQWdhV1lnS0hWd1pHRjBaVkYxWlhWbExteGxibWQwYUNrZ2UxeHVJQ0FnSUZKbFlXTjBRMjl0Y0c5dVpXNTBSVzUyYVhKdmJtMWxiblF1Y0hKdlkyVnpjME5vYVd4a2NtVnVWWEJrWVhSbGN5aDFjR1JoZEdWUmRXVjFaU3dnYldGeWEzVndVWFZsZFdVcE8xeHVJQ0FnSUdOc1pXRnlVWFZsZFdVb0tUdGNiaUFnZlZ4dWZWeHVYRzR2S2lwY2JpQXFJRU5zWldGeWN5QmhibmtnWlc1eGRXVjFaV1FnZFhCa1lYUmxjeTVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQmpiR1ZoY2xGMVpYVmxLQ2tnZTF4dUlDQjFjR1JoZEdWUmRXVjFaUzVzWlc1bmRHZ2dQU0F3TzF4dUlDQnRZWEpyZFhCUmRXVjFaUzVzWlc1bmRHZ2dQU0F3TzF4dWZWeHVYRzR2S2lwY2JpQXFJRkpsWVdOMFRYVnNkR2xEYUdsc1pDQmhjbVVnWTJGd1lXSnNaU0J2WmlCeVpXTnZibU5wYkdsdVp5QnRkV3gwYVhCc1pTQmphR2xzWkhKbGJpNWNiaUFxWEc0Z0tpQkFZMnhoYzNNZ1VtVmhZM1JOZFd4MGFVTm9hV3hrWEc0Z0tpQkFhVzUwWlhKdVlXeGNiaUFxTDF4dWRtRnlJRkpsWVdOMFRYVnNkR2xEYUdsc1pDQTlJSHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVSEp2ZG1sa1pYTWdZMjl0Ylc5dUlHWjFibU4wYVc5dVlXeHBkSGtnWm05eUlHTnZiWEJ2Ym1WdWRITWdkR2hoZENCdGRYTjBJSEpsWTI5dVkybHNaU0J0ZFd4MGFYQnNaVnh1SUNBZ0tpQmphR2xzWkhKbGJpNGdWR2hwY3lCcGN5QjFjMlZrSUdKNUlHQlNaV0ZqZEVSUFRVTnZiWEJ2Ym1WdWRHQWdkRzhnYlc5MWJuUXNJSFZ3WkdGMFpTd2dZVzVrWEc0Z0lDQXFJSFZ1Ylc5MWJuUWdZMmhwYkdRZ1kyOXRjRzl1Wlc1MGN5NWNiaUFnSUNwY2JpQWdJQ29nUUd4bGJtUnpJSHRTWldGamRFMTFiSFJwUTJocGJHUXVjSEp2ZEc5MGVYQmxmVnh1SUNBZ0tpOWNiaUFnVFdsNGFXNDZJSHRjYmx4dUlDQWdJRjl5WldOdmJtTnBiR1Z5U1c1emRHRnVkR2xoZEdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tHNWxjM1JsWkVOb2FXeGtjbVZ1TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVYMk4xY25KbGJuUkZiR1Z0Wlc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1OMWNuSmxiblFnUFNCMGFHbHpMbDlqZFhKeVpXNTBSV3hsYldWdWRDNWZiM2R1WlhJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdVbVZoWTNSRGFHbHNaRkpsWTI5dVkybHNaWEl1YVc1emRHRnVkR2xoZEdWRGFHbHNaSEpsYmlodVpYTjBaV1JEYUdsc1pISmxiaXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQlNaV0ZqZEVOb2FXeGtVbVZqYjI1amFXeGxjaTVwYm5OMFlXNTBhV0YwWlVOb2FXeGtjbVZ1S0c1bGMzUmxaRU5vYVd4a2NtVnVMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUY5eVpXTnZibU5wYkdWeVZYQmtZWFJsUTJocGJHUnlaVzQ2SUdaMWJtTjBhVzl1SUNod2NtVjJRMmhwYkdSeVpXNHNJRzVsZUhST1pYTjBaV1JEYUdsc1pISmxia1ZzWlcxbGJuUnpMQ0IwY21GdWMyRmpkR2x2Yml3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzVsZUhSRGFHbHNaSEpsYmp0Y2JpQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TGw5amRYSnlaVzUwUld4bGJXVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpNWpkWEp5Wlc1MElEMGdkR2hwY3k1ZlkzVnljbVZ1ZEVWc1pXMWxiblF1WDI5M2JtVnlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjRkRU5vYVd4a2NtVnVJRDBnWm14aGRIUmxia05vYVd4a2NtVnVLRzVsZUhST1pYTjBaV1JEYUdsc1pISmxia1ZzWlcxbGJuUnpLVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCU1pXRmpkRU5vYVd4a1VtVmpiMjVqYVd4bGNpNTFjR1JoZEdWRGFHbHNaSEpsYmlod2NtVjJRMmhwYkdSeVpXNHNJRzVsZUhSRGFHbHNaSEpsYml3Z2RISmhibk5oWTNScGIyNHNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J1WlhoMFEyaHBiR1J5Wlc0Z1BTQm1iR0YwZEdWdVEyaHBiR1J5Wlc0b2JtVjRkRTVsYzNSbFpFTm9hV3hrY21WdVJXeGxiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUZKbFlXTjBRMmhwYkdSU1pXTnZibU5wYkdWeUxuVndaR0YwWlVOb2FXeGtjbVZ1S0hCeVpYWkRhR2xzWkhKbGJpd2dibVY0ZEVOb2FXeGtjbVZ1TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRWRsYm1WeVlYUmxjeUJoSUZ3aWJXOTFiblFnYVcxaFoyVmNJaUJtYjNJZ1pXRmphQ0J2WmlCMGFHVWdjM1Z3Y0d4cFpXUWdZMmhwYkdSeVpXNHVJRWx1SUhSb1pTQmpZWE5sWEc0Z0lDQWdJQ29nYjJZZ1lGSmxZV04wUkU5TlEyOXRjRzl1Wlc1MFlDd2dZU0J0YjNWdWRDQnBiV0ZuWlNCcGN5QmhJSE4wY21sdVp5QnZaaUJ0WVhKcmRYQXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHNWxjM1JsWkVOb2FXeGtjbVZ1SUU1bGMzUmxaQ0JqYUdsc1pDQnRZWEJ6TGx4dUlDQWdJQ0FxSUVCeVpYUjFjbTRnZTJGeWNtRjVmU0JCYmlCaGNuSmhlU0J2WmlCdGIzVnVkR1ZrSUhKbGNISmxjMlZ1ZEdGMGFXOXVjeTVjYmlBZ0lDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDQWdLaTljYmlBZ0lDQnRiM1Z1ZEVOb2FXeGtjbVZ1T2lCbWRXNWpkR2x2YmlBb2JtVnpkR1ZrUTJocGJHUnlaVzRzSUhSeVlXNXpZV04wYVc5dUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQjJZWElnWTJocGJHUnlaVzRnUFNCMGFHbHpMbDl5WldOdmJtTnBiR1Z5U1c1emRHRnVkR2xoZEdWRGFHbHNaSEpsYmlodVpYTjBaV1JEYUdsc1pISmxiaXdnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ2RHaHBjeTVmY21WdVpHVnlaV1JEYUdsc1pISmxiaUE5SUdOb2FXeGtjbVZ1TzF4dUlDQWdJQ0FnZG1GeUlHMXZkVzUwU1cxaFoyVnpJRDBnVzEwN1hHNGdJQ0FnSUNCMllYSWdhVzVrWlhnZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNoMllYSWdibUZ0WlNCcGJpQmphR2xzWkhKbGJpa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1kyaHBiR1J5Wlc0dWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCMllYSWdZMmhwYkdRZ1BTQmphR2xzWkhKbGJsdHVZVzFsWFR0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJKYm14cGJtVmtJR1p2Y2lCd1pYSm1iM0p0WVc1alpTd2djMlZsSUdCU1pXRmpkRWx1YzNSaGJtTmxTR0Z1Wkd4bGN5NWpjbVZoZEdWU1pXRmpkRWxFWUM1Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnY205dmRFbEVJRDBnZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ0FySUc1aGJXVTdYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlHMXZkVzUwU1cxaFoyVWdQU0JTWldGamRGSmxZMjl1WTJsc1pYSXViVzkxYm5SRGIyMXdiMjVsYm5Rb1kyaHBiR1FzSUhKdmIzUkpSQ3dnZEhKaGJuTmhZM1JwYjI0c0lHTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQWdJR05vYVd4a0xsOXRiM1Z1ZEVsdVpHVjRJRDBnYVc1a1pYZ3JLenRjYmlBZ0lDQWdJQ0FnSUNCdGIzVnVkRWx0WVdkbGN5NXdkWE5vS0cxdmRXNTBTVzFoWjJVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z2JXOTFiblJKYldGblpYTTdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRkpsY0d4aFkyVnpJR0Z1ZVNCeVpXNWtaWEpsWkNCamFHbHNaSEpsYmlCM2FYUm9JR0VnZEdWNGRDQmpiMjUwWlc1MElITjBjbWx1Wnk1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J1WlhoMFEyOXVkR1Z1ZENCVGRISnBibWNnYjJZZ1kyOXVkR1Z1ZEM1Y2JpQWdJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0IxY0dSaGRHVlVaWGgwUTI5dWRHVnVkRG9nWm5WdVkzUnBiMjRnS0c1bGVIUkRiMjUwWlc1MEtTQjdYRzRnSUNBZ0lDQjFjR1JoZEdWRVpYQjBhQ3NyTzF4dUlDQWdJQ0FnZG1GeUlHVnljbTl5VkdoeWIzZHVJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQndjbVYyUTJocGJHUnlaVzRnUFNCMGFHbHpMbDl5Wlc1a1pYSmxaRU5vYVd4a2NtVnVPMXh1SUNBZ0lDQWdJQ0F2THlCU1pXMXZkbVVnWVc1NUlISmxibVJsY21Wa0lHTm9hV3hrY21WdUxseHVJQ0FnSUNBZ0lDQlNaV0ZqZEVOb2FXeGtVbVZqYjI1amFXeGxjaTUxYm0xdmRXNTBRMmhwYkdSeVpXNG9jSEpsZGtOb2FXeGtjbVZ1S1R0Y2JpQWdJQ0FnSUNBZ0x5OGdWRTlFVHpvZ1ZHaGxJSE5sZEZSbGVIUkRiMjUwWlc1MElHOXdaWEpoZEdsdmJpQnphRzkxYkdRZ1ltVWdaVzV2ZFdkb1hHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHNWhiV1VnYVc0Z2NISmxka05vYVd4a2NtVnVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5WlhaRGFHbHNaSEpsYmk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZFc1dGIzVnVkRU5vYVd4a0tIQnlaWFpEYUdsc1pISmxibHR1WVcxbFhTazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDOHZJRk5sZENCdVpYY2dkR1Y0ZENCamIyNTBaVzUwTGx4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sZEZSbGVIUkRiMjUwWlc1MEtHNWxlSFJEYjI1MFpXNTBLVHRjYmlBZ0lDQWdJQ0FnWlhKeWIzSlVhSEp2ZDI0Z1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnSUNBZ0lIVndaR0YwWlVSbGNIUm9MUzA3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkWEJrWVhSbFJHVndkR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSlVhSEp2ZDI0cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOc1pXRnlVWFZsZFdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZZMlZ6YzFGMVpYVmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRkpsY0d4aFkyVnpJR0Z1ZVNCeVpXNWtaWEpsWkNCamFHbHNaSEpsYmlCM2FYUm9JR0VnYldGeWEzVndJSE4wY21sdVp5NWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVpYaDBUV0Z5YTNWd0lGTjBjbWx1WnlCdlppQnRZWEpyZFhBdVhHNGdJQ0FnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FnSUNvdlhHNGdJQ0FnZFhCa1lYUmxUV0Z5YTNWd09pQm1kVzVqZEdsdmJpQW9ibVY0ZEUxaGNtdDFjQ2tnZTF4dUlDQWdJQ0FnZFhCa1lYUmxSR1Z3ZEdnckt6dGNiaUFnSUNBZ0lIWmhjaUJsY25KdmNsUm9jbTkzYmlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY0hKbGRrTm9hV3hrY21WdUlEMGdkR2hwY3k1ZmNtVnVaR1Z5WldSRGFHbHNaSEpsYmp0Y2JpQWdJQ0FnSUNBZ0x5OGdVbVZ0YjNabElHRnVlU0J5Wlc1a1pYSmxaQ0JqYUdsc1pISmxiaTVjYmlBZ0lDQWdJQ0FnVW1WaFkzUkRhR2xzWkZKbFkyOXVZMmxzWlhJdWRXNXRiM1Z1ZEVOb2FXeGtjbVZ1S0hCeVpYWkRhR2xzWkhKbGJpazdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJRzVoYldVZ2FXNGdjSEpsZGtOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hCeVpYWkRhR2xzWkhKbGJpNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmRXNXRiM1Z1ZEVOb2FXeGtRbmxPWVcxbEtIQnlaWFpEYUdsc1pISmxibHR1WVcxbFhTd2dibUZ0WlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwVFdGeWEzVndLRzVsZUhSTllYSnJkWEFwTzF4dUlDQWdJQ0FnSUNCbGNuSnZjbFJvY205M2JpQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZTQm1hVzVoYkd4NUlIdGNiaUFnSUNBZ0lDQWdkWEJrWVhSbFJHVndkR2d0TFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YxY0dSaGRHVkVaWEIwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNobGNuSnZjbFJvY205M2Jpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyeGxZWEpSZFdWMVpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQndjbTlqWlhOelVYVmxkV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVlhCa1lYUmxjeUIwYUdVZ2NtVnVaR1Z5WldRZ1kyaHBiR1J5Wlc0Z2QybDBhQ0J1WlhjZ1kyaHBiR1J5Wlc0dVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZXo5dlltcGxZM1I5SUc1bGVIUk9aWE4wWldSRGFHbHNaSEpsYmtWc1pXMWxiblJ6SUU1bGMzUmxaQ0JqYUdsc1pDQmxiR1Z0Wlc1MElHMWhjSE11WEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHRTWldGamRGSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVmU0IwY21GdWMyRmpkR2x2Ymx4dUlDQWdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJSFZ3WkdGMFpVTm9hV3hrY21WdU9pQm1kVzVqZEdsdmJpQW9ibVY0ZEU1bGMzUmxaRU5vYVd4a2NtVnVSV3hsYldWdWRITXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCMWNHUmhkR1ZFWlhCMGFDc3JPMXh1SUNBZ0lDQWdkbUZ5SUdWeWNtOXlWR2h5YjNkdUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzVndaR0YwWlVOb2FXeGtjbVZ1S0c1bGVIUk9aWE4wWldSRGFHbHNaSEpsYmtWc1pXMWxiblJ6TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJR1Z5Y205eVZHaHliM2R1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJQ0FnSUNCMWNHUmhkR1ZFWlhCMGFDMHRPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYVndaR0YwWlVSbGNIUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1Z5Y205eVZHaHliM2R1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYkdWaGNsRjFaWFZsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhCeWIyTmxjM05SZFdWMVpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkpiWEJ5YjNabElIQmxjbVp2Y20xaGJtTmxJR0o1SUdsemIyeGhkR2x1WnlCMGFHbHpJR2h2ZENCamIyUmxJSEJoZEdnZ1puSnZiU0IwYUdVZ2RISjVMMk5oZEdOb1hHNGdJQ0FnSUNvZ1lteHZZMnNnYVc0Z1lIVndaR0YwWlVOb2FXeGtjbVZ1WUM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3UDI5aWFtVmpkSDBnYm1WNGRFNWxjM1JsWkVOb2FXeGtjbVZ1Uld4bGJXVnVkSE1nVG1WemRHVmtJR05vYVd4a0lHVnNaVzFsYm5RZ2JXRndjeTVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNTlJSFJ5WVc1ellXTjBhVzl1WEc0Z0lDQWdJQ29nUUdacGJtRnNYRzRnSUNBZ0lDb2dRSEJ5YjNSbFkzUmxaRnh1SUNBZ0lDQXFMMXh1SUNBZ0lGOTFjR1JoZEdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0Z0tHNWxlSFJPWlhOMFpXUkRhR2xzWkhKbGJrVnNaVzFsYm5SekxDQjBjbUZ1YzJGamRHbHZiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQ0FnZG1GeUlIQnlaWFpEYUdsc1pISmxiaUE5SUhSb2FYTXVYM0psYm1SbGNtVmtRMmhwYkdSeVpXNDdYRzRnSUNBZ0lDQjJZWElnYm1WNGRFTm9hV3hrY21WdUlEMGdkR2hwY3k1ZmNtVmpiMjVqYVd4bGNsVndaR0YwWlVOb2FXeGtjbVZ1S0hCeVpYWkRhR2xzWkhKbGJpd2dibVY0ZEU1bGMzUmxaRU5vYVd4a2NtVnVSV3hsYldWdWRITXNJSFJ5WVc1ellXTjBhVzl1TENCamIyNTBaWGgwS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYM0psYm1SbGNtVmtRMmhwYkdSeVpXNGdQU0J1WlhoMFEyaHBiR1J5Wlc0N1hHNGdJQ0FnSUNCcFppQW9JVzVsZUhSRGFHbHNaSEpsYmlBbUppQWhjSEpsZGtOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhaaGNpQnVZVzFsTzF4dUlDQWdJQ0FnTHk4Z1lHNWxlSFJKYm1SbGVHQWdkMmxzYkNCcGJtTnlaVzFsYm5RZ1ptOXlJR1ZoWTJnZ1kyaHBiR1FnYVc0Z1lHNWxlSFJEYUdsc1pISmxibUFzSUdKMWRGeHVJQ0FnSUNBZ0x5OGdZR3hoYzNSSmJtUmxlR0FnZDJsc2JDQmlaU0IwYUdVZ2JHRnpkQ0JwYm1SbGVDQjJhWE5wZEdWa0lHbHVJR0J3Y21WMlEyaHBiR1J5Wlc1Z0xseHVJQ0FnSUNBZ2RtRnlJR3hoYzNSSmJtUmxlQ0E5SURBN1hHNGdJQ0FnSUNCMllYSWdibVY0ZEVsdVpHVjRJRDBnTUR0Y2JpQWdJQ0FnSUdadmNpQW9ibUZ0WlNCcGJpQnVaWGgwUTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z1WlhoMFEyaHBiR1J5Wlc0dWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjJZWElnY0hKbGRrTm9hV3hrSUQwZ2NISmxka05vYVd4a2NtVnVJQ1ltSUhCeVpYWkRhR2xzWkhKbGJsdHVZVzFsWFR0Y2JpQWdJQ0FnSUNBZ2RtRnlJRzVsZUhSRGFHbHNaQ0E5SUc1bGVIUkRhR2xzWkhKbGJsdHVZVzFsWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5WlhaRGFHbHNaQ0E5UFQwZ2JtVjRkRU5vYVd4a0tTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NXRiM1psUTJocGJHUW9jSEpsZGtOb2FXeGtMQ0J1WlhoMFNXNWtaWGdzSUd4aGMzUkpibVJsZUNrN1hHNGdJQ0FnSUNBZ0lDQWdiR0Z6ZEVsdVpHVjRJRDBnVFdGMGFDNXRZWGdvY0hKbGRrTm9hV3hrTGw5dGIzVnVkRWx1WkdWNExDQnNZWE4wU1c1a1pYZ3BPMXh1SUNBZ0lDQWdJQ0FnSUhCeVpYWkRhR2xzWkM1ZmJXOTFiblJKYm1SbGVDQTlJRzVsZUhSSmJtUmxlRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9jSEpsZGtOb2FXeGtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJWY0dSaGRHVWdZR3hoYzNSSmJtUmxlR0FnWW1WbWIzSmxJR0JmYlc5MWJuUkpibVJsZUdBZ1oyVjBjeUIxYm5ObGRDQmllU0IxYm0xdmRXNTBhVzVuTGx4dUlDQWdJQ0FnSUNBZ0lDQWdiR0Z6ZEVsdVpHVjRJRDBnVFdGMGFDNXRZWGdvY0hKbGRrTm9hV3hrTGw5dGIzVnVkRWx1WkdWNExDQnNZWE4wU1c1a1pYZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZFc1dGIzVnVkRU5vYVd4a0tIQnlaWFpEYUdsc1pDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDOHZJRlJvWlNCamFHbHNaQ0J0ZFhOMElHSmxJR2x1YzNSaGJuUnBZWFJsWkNCaVpXWnZjbVVnYVhRbmN5QnRiM1Z1ZEdWa0xseHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgyMXZkVzUwUTJocGJHUkNlVTVoYldWQmRFbHVaR1Y0S0c1bGVIUkRhR2xzWkN3Z2JtRnRaU3dnYm1WNGRFbHVaR1Y0TENCMGNtRnVjMkZqZEdsdmJpd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYm1WNGRFbHVaR1Y0S3lzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNBdkx5QlNaVzF2ZG1VZ1kyaHBiR1J5Wlc0Z2RHaGhkQ0JoY21VZ2JtOGdiRzl1WjJWeUlIQnlaWE5sYm5RdVhHNGdJQ0FnSUNCbWIzSWdLRzVoYldVZ2FXNGdjSEpsZGtOb2FXeGtjbVZ1S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y21WMlEyaHBiR1J5Wlc0dWFHRnpUM2R1VUhKdmNHVnlkSGtvYm1GdFpTa2dKaVlnSVNodVpYaDBRMmhwYkdSeVpXNGdKaVlnYm1WNGRFTm9hV3hrY21WdUxtaGhjMDkzYmxCeWIzQmxjblI1S0c1aGJXVXBLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WDNWdWJXOTFiblJEYUdsc1pDaHdjbVYyUTJocGJHUnlaVzViYm1GdFpWMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZWdWJXOTFiblJ6SUdGc2JDQnlaVzVrWlhKbFpDQmphR2xzWkhKbGJpNGdWR2hwY3lCemFHOTFiR1FnWW1VZ2RYTmxaQ0IwYnlCamJHVmhiaUIxY0NCamFHbHNaSEpsYmx4dUlDQWdJQ0FxSUhkb1pXNGdkR2hwY3lCamIyMXdiMjVsYm5RZ2FYTWdkVzV0YjNWdWRHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RXNXRiM1Z1ZEVOb2FXeGtjbVZ1T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQjJZWElnY21WdVpHVnlaV1JEYUdsc1pISmxiaUE5SUhSb2FYTXVYM0psYm1SbGNtVmtRMmhwYkdSeVpXNDdYRzRnSUNBZ0lDQlNaV0ZqZEVOb2FXeGtVbVZqYjI1amFXeGxjaTUxYm0xdmRXNTBRMmhwYkdSeVpXNG9jbVZ1WkdWeVpXUkRhR2xzWkhKbGJpazdYRzRnSUNBZ0lDQjBhR2x6TGw5eVpXNWtaWEpsWkVOb2FXeGtjbVZ1SUQwZ2JuVnNiRHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVFc5MlpYTWdZU0JqYUdsc1pDQmpiMjF3YjI1bGJuUWdkRzhnZEdobElITjFjSEJzYVdWa0lHbHVaR1Y0TGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMmhwYkdRZ1EyOXRjRzl1Wlc1MElIUnZJRzF2ZG1VdVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhSdlNXNWtaWGdnUkdWemRHbHVZWFJwYjI0Z2FXNWtaWGdnYjJZZ2RHaGxJR1ZzWlcxbGJuUXVYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHeGhjM1JKYm1SbGVDQk1ZWE4wSUdsdVpHVjRJSFpwYzJsMFpXUWdiMllnZEdobElITnBZbXhwYm1keklHOW1JR0JqYUdsc1pHQXVYRzRnSUNBZ0lDb2dRSEJ5YjNSbFkzUmxaRnh1SUNBZ0lDQXFMMXh1SUNBZ0lHMXZkbVZEYUdsc1pEb2dablZ1WTNScGIyNGdLR05vYVd4a0xDQjBiMGx1WkdWNExDQnNZWE4wU1c1a1pYZ3BJSHRjYmlBZ0lDQWdJQzh2SUVsbUlIUm9aU0JwYm1SbGVDQnZaaUJnWTJocGJHUmdJR2x6SUd4bGMzTWdkR2hoYmlCZ2JHRnpkRWx1WkdWNFlDd2dkR2hsYmlCcGRDQnVaV1ZrY3lCMGIxeHVJQ0FnSUNBZ0x5OGdZbVVnYlc5MlpXUXVJRTkwYUdWeWQybHpaU3dnZDJVZ1pHOGdibTkwSUc1bFpXUWdkRzhnYlc5MlpTQnBkQ0JpWldOaGRYTmxJR0VnWTJocGJHUWdkMmxzYkNCaVpWeHVJQ0FnSUNBZ0x5OGdhVzV6WlhKMFpXUWdiM0lnYlc5MlpXUWdZbVZtYjNKbElHQmphR2xzWkdBdVhHNGdJQ0FnSUNCcFppQW9ZMmhwYkdRdVgyMXZkVzUwU1c1a1pYZ2dQQ0JzWVhOMFNXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ1pXNXhkV1YxWlUxdmRtVW9kR2hwY3k1ZmNtOXZkRTV2WkdWSlJDd2dZMmhwYkdRdVgyMXZkVzUwU1c1a1pYZ3NJSFJ2U1c1a1pYZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHNYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJEY21WaGRHVnpJR0VnWTJocGJHUWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyaHBiR1FnUTI5dGNHOXVaVzUwSUhSdklHTnlaV0YwWlM1Y2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYlc5MWJuUkpiV0ZuWlNCTllYSnJkWEFnZEc4Z2FXNXpaWEowTGx4dUlDQWdJQ0FxSUVCd2NtOTBaV04wWldSY2JpQWdJQ0FnS2k5Y2JpQWdJQ0JqY21WaGRHVkRhR2xzWkRvZ1puVnVZM1JwYjI0Z0tHTm9hV3hrTENCdGIzVnVkRWx0WVdkbEtTQjdYRzRnSUNBZ0lDQmxibkYxWlhWbFNXNXpaWEowVFdGeWEzVndLSFJvYVhNdVgzSnZiM1JPYjJSbFNVUXNJRzF2ZFc1MFNXMWhaMlVzSUdOb2FXeGtMbDl0YjNWdWRFbHVaR1Y0S1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1VtVnRiM1psY3lCaElHTm9hV3hrSUdOdmJYQnZibVZ1ZEM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJR05vYVd4a0lFTm9hV3hrSUhSdklISmxiVzkyWlM1Y2JpQWdJQ0FnS2lCQWNISnZkR1ZqZEdWa1hHNGdJQ0FnSUNvdlhHNGdJQ0FnY21WdGIzWmxRMmhwYkdRNklHWjFibU4wYVc5dUlDaGphR2xzWkNrZ2UxeHVJQ0FnSUNBZ1pXNXhkV1YxWlZKbGJXOTJaU2gwYUdsekxsOXliMjkwVG05a1pVbEVMQ0JqYUdsc1pDNWZiVzkxYm5SSmJtUmxlQ2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZObGRITWdkR2hwY3lCMFpYaDBJR052Ym5SbGJuUWdjM1J5YVc1bkxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSbGVIUkRiMjUwWlc1MElGUmxlSFFnWTI5dWRHVnVkQ0IwYnlCelpYUXVYRzRnSUNBZ0lDb2dRSEJ5YjNSbFkzUmxaRnh1SUNBZ0lDQXFMMXh1SUNBZ0lITmxkRlJsZUhSRGIyNTBaVzUwT2lCbWRXNWpkR2x2YmlBb2RHVjRkRU52Ym5SbGJuUXBJSHRjYmlBZ0lDQWdJR1Z1Y1hWbGRXVlVaWGgwUTI5dWRHVnVkQ2gwYUdsekxsOXliMjkwVG05a1pVbEVMQ0IwWlhoMFEyOXVkR1Z1ZENrN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGTmxkSE1nZEdocGN5QnRZWEpyZFhBZ2MzUnlhVzVuTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzFoY210MWNDQk5ZWEpyZFhBZ2RHOGdjMlYwTGx4dUlDQWdJQ0FxSUVCd2NtOTBaV04wWldSY2JpQWdJQ0FnS2k5Y2JpQWdJQ0J6WlhSTllYSnJkWEE2SUdaMWJtTjBhVzl1SUNodFlYSnJkWEFwSUh0Y2JpQWdJQ0FnSUdWdWNYVmxkV1ZUWlhSTllYSnJkWEFvZEdocGN5NWZjbTl2ZEU1dlpHVkpSQ3dnYldGeWEzVndLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVFc5MWJuUnpJR0VnWTJocGJHUWdkMmwwYUNCMGFHVWdjM1Z3Y0d4cFpXUWdibUZ0WlM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUU1UFZFVTZJRlJvYVhNZ2FYTWdjR0Z5ZENCdlppQmdkWEJrWVhSbFEyaHBiR1J5Wlc1Z0lHRnVaQ0JwY3lCb1pYSmxJR1p2Y2lCeVpXRmtZV0pwYkdsMGVTNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYjIxd2IyNWxiblI5SUdOb2FXeGtJRU52YlhCdmJtVnVkQ0IwYnlCdGIzVnVkQzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibUZ0WlNCT1lXMWxJRzltSUhSb1pTQmphR2xzWkM1Y2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYVc1a1pYZ2dTVzVrWlhnZ1lYUWdkMmhwWTJnZ2RHOGdhVzV6WlhKMElIUm9aU0JqYUdsc1pDNWNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBZ0lDb2dRSEJ5YVhaaGRHVmNiaUFnSUNBZ0tpOWNiaUFnSUNCZmJXOTFiblJEYUdsc1pFSjVUbUZ0WlVGMFNXNWtaWGc2SUdaMWJtTjBhVzl1SUNoamFHbHNaQ3dnYm1GdFpTd2dhVzVrWlhnc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0F2THlCSmJteHBibVZrSUdadmNpQndaWEptYjNKdFlXNWpaU3dnYzJWbElHQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVqY21WaGRHVlNaV0ZqZEVsRVlDNWNiaUFnSUNBZ0lIWmhjaUJ5YjI5MFNVUWdQU0IwYUdsekxsOXliMjkwVG05a1pVbEVJQ3NnYm1GdFpUdGNiaUFnSUNBZ0lIWmhjaUJ0YjNWdWRFbHRZV2RsSUQwZ1VtVmhZM1JTWldOdmJtTnBiR1Z5TG0xdmRXNTBRMjl0Y0c5dVpXNTBLR05vYVd4a0xDQnliMjkwU1VRc0lIUnlZVzV6WVdOMGFXOXVMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJR05vYVd4a0xsOXRiM1Z1ZEVsdVpHVjRJRDBnYVc1a1pYZzdYRzRnSUNBZ0lDQjBhR2x6TG1OeVpXRjBaVU5vYVd4a0tHTm9hV3hrTENCdGIzVnVkRWx0WVdkbEtUdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dWVzV0YjNWdWRITWdZU0J5Wlc1a1pYSmxaQ0JqYUdsc1pDNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFNVBWRVU2SUZSb2FYTWdhWE1nY0dGeWRDQnZaaUJnZFhCa1lYUmxRMmhwYkdSeVpXNWdJR0Z1WkNCcGN5Qm9aWEpsSUdadmNpQnlaV0ZrWVdKcGJHbDBlUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGIyMXdiMjVsYm5SOUlHTm9hV3hrSUVOdmJYQnZibVZ1ZENCMGJ5QjFibTF2ZFc1MExseHVJQ0FnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FnSUNvdlhHNGdJQ0FnWDNWdWJXOTFiblJEYUdsc1pEb2dablZ1WTNScGIyNGdLR05vYVd4a0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5KbGJXOTJaVU5vYVd4a0tHTm9hV3hrS1R0Y2JpQWdJQ0FnSUdOb2FXeGtMbDl0YjNWdWRFbHVaR1Y0SUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzVjYmlBZ2ZWeHVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVFhWc2RHbERhR2xzWkRzaVhYMD0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0TmF0aXZlQ29tcG9uZW50XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBhdXRvR2VuZXJhdGVXcmFwcGVyQ2xhc3MgPSBudWxsO1xudmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG4vLyBUaGlzIHJlZ2lzdHJ5IGtlZXBzIHRyYWNrIG9mIHdyYXBwZXIgY2xhc3NlcyBhcm91bmQgbmF0aXZlIHRhZ3MuXG52YXIgdGFnVG9Db21wb25lbnRDbGFzcyA9IHt9O1xudmFyIHRleHRDb21wb25lbnRDbGFzcyA9IG51bGw7XG5cbnZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudEluamVjdGlvbiA9IHtcbiAgLy8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNoIGFsbFxuICAvLyB0aGF0IGNhbiByZW5kZXIgYW55IGtpbmQgb2YgdGFnLlxuICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9LFxuICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZVxuICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cbiAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcbiAgfSxcbiAgLy8gVGhpcyBhY2NlcHRzIGEga2V5ZWQgb2JqZWN0IHdpdGggY2xhc3NlcyBhcyB2YWx1ZXMuIEVhY2gga2V5IHJlcHJlc2VudHMgYVxuICAvLyB0YWcuIFRoYXQgcGFydGljdWxhciB0YWcgd2lsbCB1c2UgdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZS5cbiAgaW5qZWN0Q29tcG9uZW50Q2xhc3NlczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzZXMpIHtcbiAgICBhc3NpZ24odGFnVG9Db21wb25lbnRDbGFzcywgY29tcG9uZW50Q2xhc3Nlcyk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IGEgY29tcG9zaXRlIGNvbXBvbmVudCB3cmFwcGVyIGNsYXNzIGZvciBhIHNwZWNpZmljIHRhZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgdGFnIGZvciB3aGljaCB0byBnZXQgdGhlIGNsYXNzLlxuICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBSZWFjdCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50Q2xhc3NGb3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZWxlbWVudC50eXBlO1xuICB9XG4gIHZhciB0YWcgPSBlbGVtZW50LnR5cGU7XG4gIHZhciBjb21wb25lbnRDbGFzcyA9IHRhZ1RvQ29tcG9uZW50Q2xhc3NbdGFnXTtcbiAgaWYgKGNvbXBvbmVudENsYXNzID09IG51bGwpIHtcbiAgICB0YWdUb0NvbXBvbmVudENsYXNzW3RhZ10gPSBjb21wb25lbnRDbGFzcyA9IGF1dG9HZW5lcmF0ZVdyYXBwZXJDbGFzcyh0YWcpO1xuICB9XG4gIHJldHVybiBjb21wb25lbnRDbGFzcztcbn1cblxuLyoqXG4gKiBHZXQgYSBuYXRpdmUgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmljIHRhZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjcmVhdGUuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KSB7XG4gICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlcmUgaXMgbm8gcmVnaXN0ZXJlZCBjb21wb25lbnQgZm9yIHRoZSB0YWcgJXMnLCBlbGVtZW50LnR5cGUpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG5ldyBnZW5lcmljQ29tcG9uZW50Q2xhc3MoZWxlbWVudC50eXBlLCBlbGVtZW50LnByb3BzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dFxuICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7XG4gIHJldHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkge1xuICByZXR1cm4gY29tcG9uZW50IGluc3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xufVxuXG52YXIgUmVhY3ROYXRpdmVDb21wb25lbnQgPSB7XG4gIGdldENvbXBvbmVudENsYXNzRm9yRWxlbWVudDogZ2V0Q29tcG9uZW50Q2xhc3NGb3JFbGVtZW50LFxuICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQsXG4gIGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LFxuICBpc1RleHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcbiAgaW5qZWN0aW9uOiBSZWFjdE5hdGl2ZUNvbXBvbmVudEluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5hdGl2ZUNvbXBvbmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVbVZoWTNST1lYUnBkbVZEYjIxd2IyNWxiblF1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQklpd2labWxzWlNJNkltZGxibVZ5WVhSbFpDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURFMExUSXdNVFVzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2lCQmJHd2djbWxuYUhSeklISmxjMlZ5ZG1Wa0xseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRUpUUkMxemRIbHNaU0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMaUJCYmlCaFpHUnBkR2x2Ym1Gc0lHZHlZVzUwWEc0Z0tpQnZaaUJ3WVhSbGJuUWdjbWxuYUhSeklHTmhiaUJpWlNCbWIzVnVaQ0JwYmlCMGFHVWdVRUZVUlU1VVV5Qm1hV3hsSUdsdUlIUm9aU0J6WVcxbElHUnBjbVZqZEc5eWVTNWNiaUFxWEc0Z0tpQkFjSEp2ZG1sa1pYTk5iMlIxYkdVZ1VtVmhZM1JPWVhScGRtVkRiMjF3YjI1bGJuUmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJoYzNOcFoyNGdQU0J5WlhGMWFYSmxLQ2N1TDA5aWFtVmpkQzVoYzNOcFoyNG5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JseHVkbUZ5SUdGMWRHOUhaVzVsY21GMFpWZHlZWEJ3WlhKRGJHRnpjeUE5SUc1MWJHdzdYRzUyWVhJZ1oyVnVaWEpwWTBOdmJYQnZibVZ1ZEVOc1lYTnpJRDBnYm5Wc2JEdGNiaTh2SUZSb2FYTWdjbVZuYVhOMGNua2dhMlZsY0hNZ2RISmhZMnNnYjJZZ2QzSmhjSEJsY2lCamJHRnpjMlZ6SUdGeWIzVnVaQ0J1WVhScGRtVWdkR0ZuY3k1Y2JuWmhjaUIwWVdkVWIwTnZiWEJ2Ym1WdWRFTnNZWE56SUQwZ2UzMDdYRzUyWVhJZ2RHVjRkRU52YlhCdmJtVnVkRU5zWVhOeklEMGdiblZzYkR0Y2JseHVkbUZ5SUZKbFlXTjBUbUYwYVhabFEyOXRjRzl1Wlc1MFNXNXFaV04wYVc5dUlEMGdlMXh1SUNBdkx5QlVhR2x6SUdGalkyVndkSE1nWVNCamJHRnpjeUIwYUdGMElISmxZMlZwZG1WeklIUm9aU0IwWVdjZ2MzUnlhVzVuTGlCVWFHbHpJR2x6SUdFZ1kyRjBZMmdnWVd4c1hHNGdJQzh2SUhSb1lYUWdZMkZ1SUhKbGJtUmxjaUJoYm5rZ2EybHVaQ0J2WmlCMFlXY3VYRzRnSUdsdWFtVmpkRWRsYm1WeWFXTkRiMjF3YjI1bGJuUkRiR0Z6Y3pvZ1puVnVZM1JwYjI0Z0tHTnZiWEJ2Ym1WdWRFTnNZWE56S1NCN1hHNGdJQ0FnWjJWdVpYSnBZME52YlhCdmJtVnVkRU5zWVhOeklEMGdZMjl0Y0c5dVpXNTBRMnhoYzNNN1hHNGdJSDBzWEc0Z0lDOHZJRlJvYVhNZ1lXTmpaWEIwY3lCaElIUmxlSFFnWTI5dGNHOXVaVzUwSUdOc1lYTnpJSFJvWVhRZ2RHRnJaWE1nZEdobElIUmxlSFFnYzNSeWFXNW5JSFJ2SUdKbFhHNGdJQzh2SUhKbGJtUmxjbVZrSUdGeklIQnliM0J6TGx4dUlDQnBibXBsWTNSVVpYaDBRMjl0Y0c5dVpXNTBRMnhoYzNNNklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUkRiR0Z6Y3lrZ2UxeHVJQ0FnSUhSbGVIUkRiMjF3YjI1bGJuUkRiR0Z6Y3lBOUlHTnZiWEJ2Ym1WdWRFTnNZWE56TzF4dUlDQjlMRnh1SUNBdkx5QlVhR2x6SUdGalkyVndkSE1nWVNCclpYbGxaQ0J2WW1wbFkzUWdkMmwwYUNCamJHRnpjMlZ6SUdGeklIWmhiSFZsY3k0Z1JXRmphQ0JyWlhrZ2NtVndjbVZ6Wlc1MGN5QmhYRzRnSUM4dklIUmhaeTRnVkdoaGRDQndZWEowYVdOMWJHRnlJSFJoWnlCM2FXeHNJSFZ6WlNCMGFHbHpJR05zWVhOeklHbHVjM1JsWVdRZ2IyWWdkR2hsSUdkbGJtVnlhV01nYjI1bExseHVJQ0JwYm1wbFkzUkRiMjF3YjI1bGJuUkRiR0Z6YzJWek9pQm1kVzVqZEdsdmJpQW9ZMjl0Y0c5dVpXNTBRMnhoYzNObGN5a2dlMXh1SUNBZ0lHRnpjMmxuYmloMFlXZFViME52YlhCdmJtVnVkRU5zWVhOekxDQmpiMjF3YjI1bGJuUkRiR0Z6YzJWektUdGNiaUFnZlZ4dWZUdGNibHh1THlvcVhHNGdLaUJIWlhRZ1lTQmpiMjF3YjNOcGRHVWdZMjl0Y0c5dVpXNTBJSGR5WVhCd1pYSWdZMnhoYzNNZ1ptOXlJR0VnYzNCbFkybG1hV01nZEdGbkxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0JsYkdWdFpXNTBJRlJvWlNCMFlXY2dabTl5SUhkb2FXTm9JSFJ2SUdkbGRDQjBhR1VnWTJ4aGMzTXVYRzRnS2lCQWNtVjBkWEp1SUh0bWRXNWpkR2x2Ym4wZ1ZHaGxJRkpsWVdOMElHTnNZWE56SUdOdmJuTjBjblZqZEc5eUlHWjFibU4wYVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCblpYUkRiMjF3YjI1bGJuUkRiR0Z6YzBadmNrVnNaVzFsYm5Rb1pXeGxiV1Z1ZENrZ2UxeHVJQ0JwWmlBb2RIbHdaVzltSUdWc1pXMWxiblF1ZEhsd1pTQTlQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJsYkdWdFpXNTBMblI1Y0dVN1hHNGdJSDFjYmlBZ2RtRnlJSFJoWnlBOUlHVnNaVzFsYm5RdWRIbHdaVHRjYmlBZ2RtRnlJR052YlhCdmJtVnVkRU5zWVhOeklEMGdkR0ZuVkc5RGIyMXdiMjVsYm5SRGJHRnpjMXQwWVdkZE8xeHVJQ0JwWmlBb1kyOXRjRzl1Wlc1MFEyeGhjM01nUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJSFJoWjFSdlEyOXRjRzl1Wlc1MFEyeGhjM05iZEdGblhTQTlJR052YlhCdmJtVnVkRU5zWVhOeklEMGdZWFYwYjBkbGJtVnlZWFJsVjNKaGNIQmxja05zWVhOektIUmhaeWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJR052YlhCdmJtVnVkRU5zWVhOek8xeHVmVnh1WEc0dktpcGNiaUFxSUVkbGRDQmhJRzVoZEdsMlpTQnBiblJsY201aGJDQmpiMjF3YjI1bGJuUWdZMnhoYzNNZ1ptOXlJR0VnYzNCbFkybG1hV01nZEdGbkxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1VtVmhZM1JGYkdWdFpXNTBmU0JsYkdWdFpXNTBJRlJvWlNCbGJHVnRaVzUwSUhSdklHTnlaV0YwWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMloxYm1OMGFXOXVmU0JVYUdVZ2FXNTBaWEp1WVd3Z1kyeGhjM01nWTI5dWMzUnlkV04wYjNJZ1puVnVZM1JwYjI0dVhHNGdLaTljYm1aMWJtTjBhVzl1SUdOeVpXRjBaVWx1ZEdWeWJtRnNRMjl0Y0c5dVpXNTBLR1ZzWlcxbGJuUXBJSHRjYmlBZ0lXZGxibVZ5YVdORGIyMXdiMjVsYm5SRGJHRnpjeUEvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFVhR1Z5WlNCcGN5QnVieUJ5WldkcGMzUmxjbVZrSUdOdmJYQnZibVZ1ZENCbWIzSWdkR2hsSUhSaFp5QWxjeWNzSUdWc1pXMWxiblF1ZEhsd1pTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQnlaWFIxY200Z2JtVjNJR2RsYm1WeWFXTkRiMjF3YjI1bGJuUkRiR0Z6Y3lobGJHVnRaVzUwTG5SNWNHVXNJR1ZzWlcxbGJuUXVjSEp2Y0hNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVCd1lYSmhiU0I3VW1WaFkzUlVaWGgwZlNCMFpYaDBYRzRnS2lCQWNtVjBkWEp1SUh0U1pXRmpkRU52YlhCdmJtVnVkSDFjYmlBcUwxeHVablZ1WTNScGIyNGdZM0psWVhSbFNXNXpkR0Z1WTJWR2IzSlVaWGgwS0hSbGVIUXBJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QjBaWGgwUTI5dGNHOXVaVzUwUTJ4aGMzTW9kR1Y0ZENrN1hHNTlYRzVjYmk4cUtseHVJQ29nUUhCaGNtRnRJSHRTWldGamRFTnZiWEJ2Ym1WdWRIMGdZMjl0Y0c5dVpXNTBYRzRnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJwYzFSbGVIUkRiMjF3YjI1bGJuUW9ZMjl0Y0c5dVpXNTBLU0I3WEc0Z0lISmxkSFZ5YmlCamIyMXdiMjVsYm5RZ2FXNXpkR0Z1WTJWdlppQjBaWGgwUTI5dGNHOXVaVzUwUTJ4aGMzTTdYRzU5WEc1Y2JuWmhjaUJTWldGamRFNWhkR2wyWlVOdmJYQnZibVZ1ZENBOUlIdGNiaUFnWjJWMFEyOXRjRzl1Wlc1MFEyeGhjM05HYjNKRmJHVnRaVzUwT2lCblpYUkRiMjF3YjI1bGJuUkRiR0Z6YzBadmNrVnNaVzFsYm5Rc1hHNGdJR055WldGMFpVbHVkR1Z5Ym1Gc1EyOXRjRzl1Wlc1ME9pQmpjbVZoZEdWSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZEN4Y2JpQWdZM0psWVhSbFNXNXpkR0Z1WTJWR2IzSlVaWGgwT2lCamNtVmhkR1ZKYm5OMFlXNWpaVVp2Y2xSbGVIUXNYRzRnSUdselZHVjRkRU52YlhCdmJtVnVkRG9nYVhOVVpYaDBRMjl0Y0c5dVpXNTBMRnh1SUNCcGJtcGxZM1JwYjI0NklGSmxZV04wVG1GMGFYWmxRMjl0Y0c5dVpXNTBTVzVxWldOMGFXOXVYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVG1GMGFYWmxRMjl0Y0c5dVpXNTBPeUpkZlE9PSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gd2FyblREWihwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yICYmIHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICcnKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIGFic3RyYWN0IEFQSSBmb3IgYW4gdXBkYXRlIHF1ZXVlLlxuICovXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSB7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2spIHt9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgd2FyblREWihwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcbiAgICB3YXJuVERaKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAqIGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgd2FyblREWihwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxQcm9wcyBTdWJzZXQgb2YgdGhlIG5leHQgcHJvcHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFByb3BzOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxQcm9wcykge1xuICAgIHdhcm5URFoocHVibGljSW5zdGFuY2UsICdzZXRQcm9wcycpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzIE5ldyBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVByb3BzOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHByb3BzKSB7XG4gICAgd2FyblREWihwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VQcm9wcycpO1xuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3ROb29wVXBkYXRlUXVldWU7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVG05dmNGVndaR0YwWlZGMVpYVmxYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVablZ1WTNScGIyNGdkMkZ5YmxSRVdpaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z1kyRnNiR1Z5VG1GdFpTa2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuSlhNb0xpNHVLVG9nUTJGdUlHOXViSGtnZFhCa1lYUmxJR0VnYlc5MWJuUmxaQ0J2Y2lCdGIzVnVkR2x1WnlCamIyMXdiMjVsYm5RdUlDY2dLeUFuVkdocGN5QjFjM1ZoYkd4NUlHMWxZVzV6SUhsdmRTQmpZV3hzWldRZ0pYTW9LU0J2YmlCaGJpQjFibTF2ZFc1MFpXUWdZMjl0Y0c5dVpXNTBMaUFuSUNzZ0oxUm9hWE1nYVhNZ1lTQnVieTF2Y0M0Z1VHeGxZWE5sSUdOb1pXTnJJSFJvWlNCamIyUmxJR1p2Y2lCMGFHVWdKWE1nWTI5dGNHOXVaVzUwTGljc0lHTmhiR3hsY2s1aGJXVXNJR05oYkd4bGNrNWhiV1VzSUhCMVlteHBZMGx1YzNSaGJtTmxMbU52Ym5OMGNuVmpkRzl5SUNZbUlIQjFZbXhwWTBsdWMzUmhibU5sTG1OdmJuTjBjblZqZEc5eUxtUnBjM0JzWVhsT1lXMWxJSHg4SUNjbktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUZSb2FYTWdhWE1nZEdobElHRmljM1J5WVdOMElFRlFTU0JtYjNJZ1lXNGdkWEJrWVhSbElIRjFaWFZsTGx4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JPYjI5d1ZYQmtZWFJsVVhWbGRXVWdQU0I3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU5vWldOcmN5QjNhR1YwYUdWeUlHOXlJRzV2ZENCMGFHbHpJR052YlhCdmMybDBaU0JqYjIxd2IyNWxiblFnYVhNZ2JXOTFiblJsWkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnNZWE56ZlNCd2RXSnNhV05KYm5OMFlXNWpaU0JVYUdVZ2FXNXpkR0Z1WTJVZ2QyVWdkMkZ1ZENCMGJ5QjBaWE4wTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmU0JVY25WbElHbG1JRzF2ZFc1MFpXUXNJR1poYkhObElHOTBhR1Z5ZDJselpTNWNiaUFnSUNvZ1FIQnliM1JsWTNSbFpGeHVJQ0FnS2lCQVptbHVZV3hjYmlBZ0lDb3ZYRzRnSUdselRXOTFiblJsWkRvZ1puVnVZM1JwYjI0Z0tIQjFZbXhwWTBsdWMzUmhibU5sS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYm5GMVpYVmxJR0VnWTJGc2JHSmhZMnNnZEdoaGRDQjNhV3hzSUdKbElHVjRaV04xZEdWa0lHRm1kR1Z5SUdGc2JDQjBhR1VnY0dWdVpHbHVaeUIxY0dSaGRHVnpYRzRnSUNBcUlHaGhkbVVnY0hKdlkyVnpjMlZrTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYnlCMWMyVWdZWE1nWUhSb2FYTmdJR052Ym5SbGVIUXVYRzRnSUNBcUlFQndZWEpoYlNCN1AyWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QkRZV3hzWldRZ1lXWjBaWElnYzNSaGRHVWdhWE1nZFhCa1lYUmxaQzVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxRMkZzYkdKaFkyczZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2dZMkZzYkdKaFkyc3BJSHQ5TEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJHYjNKalpYTWdZVzRnZFhCa1lYUmxMaUJVYUdseklITm9iM1ZzWkNCdmJteDVJR0psSUdsdWRtOXJaV1FnZDJobGJpQnBkQ0JwY3lCcmJtOTNiaUIzYVhSb1hHNGdJQ0FxSUdObGNuUmhhVzUwZVNCMGFHRjBJSGRsSUdGeVpTQXFLbTV2ZENvcUlHbHVJR0VnUkU5TklIUnlZVzV6WVdOMGFXOXVMbHh1SUNBZ0tseHVJQ0FnS2lCWmIzVWdiV0Y1SUhkaGJuUWdkRzhnWTJGc2JDQjBhR2x6SUhkb1pXNGdlVzkxSUd0dWIzY2dkR2hoZENCemIyMWxJR1JsWlhCbGNpQmhjM0JsWTNRZ2IyWWdkR2hsWEc0Z0lDQXFJR052YlhCdmJtVnVkQ2R6SUhOMFlYUmxJR2hoY3lCamFHRnVaMlZrSUdKMWRDQmdjMlYwVTNSaGRHVmdJSGRoY3lCdWIzUWdZMkZzYkdWa0xseHVJQ0FnS2x4dUlDQWdLaUJVYUdseklIZHBiR3dnYm05MElHbHVkbTlyWlNCZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxZQ3dnWW5WMElHbDBJSGRwYkd3Z2FXNTJiMnRsWEc0Z0lDQXFJR0JqYjIxd2IyNWxiblJYYVd4c1ZYQmtZWFJsWUNCaGJtUWdZR052YlhCdmJtVnVkRVJwWkZWd1pHRjBaV0F1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJvWVhRZ2MyaHZkV3hrSUhKbGNtVnVaR1Z5TGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZHYjNKalpWVndaR0YwWlRvZ1puVnVZM1JwYjI0Z0tIQjFZbXhwWTBsdWMzUmhibU5sS1NCN1hHNGdJQ0FnZDJGeWJsUkVXaWh3ZFdKc2FXTkpibk4wWVc1alpTd2dKMlp2Y21ObFZYQmtZWFJsSnlrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsY0d4aFkyVnpJR0ZzYkNCdlppQjBhR1VnYzNSaGRHVXVJRUZzZDJGNWN5QjFjMlVnZEdocGN5QnZjaUJnYzJWMFUzUmhkR1ZnSUhSdklHMTFkR0YwWlNCemRHRjBaUzVjYmlBZ0lDb2dXVzkxSUhOb2IzVnNaQ0IwY21WaGRDQmdkR2hwY3k1emRHRjBaV0FnWVhNZ2FXMXRkWFJoWW14bExseHVJQ0FnS2x4dUlDQWdLaUJVYUdWeVpTQnBjeUJ1YnlCbmRXRnlZVzUwWldVZ2RHaGhkQ0JnZEdocGN5NXpkR0YwWldBZ2QybHNiQ0JpWlNCcGJXMWxaR2xoZEdWc2VTQjFjR1JoZEdWa0xDQnpiMXh1SUNBZ0tpQmhZMk5sYzNOcGJtY2dZSFJvYVhNdWMzUmhkR1ZnSUdGbWRHVnlJR05oYkd4cGJtY2dkR2hwY3lCdFpYUm9iMlFnYldGNUlISmxkSFZ5YmlCMGFHVWdiMnhrSUhaaGJIVmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjBhR0YwSUhOb2IzVnNaQ0J5WlhKbGJtUmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlHTnZiWEJzWlhSbFUzUmhkR1VnVG1WNGRDQnpkR0YwWlM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsVW1Wd2JHRmpaVk4wWVhSbE9pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVc0lHTnZiWEJzWlhSbFUzUmhkR1VwSUh0Y2JpQWdJQ0IzWVhKdVZFUmFLSEIxWW14cFkwbHVjM1JoYm1ObExDQW5jbVZ3YkdGalpWTjBZWFJsSnlrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRk5sZEhNZ1lTQnpkV0p6WlhRZ2IyWWdkR2hsSUhOMFlYUmxMaUJVYUdseklHOXViSGtnWlhocGMzUnpJR0psWTJGMWMyVWdYM0JsYm1ScGJtZFRkR0YwWlNCcGMxeHVJQ0FnS2lCcGJuUmxjbTVoYkM0Z1ZHaHBjeUJ3Y205MmFXUmxjeUJoSUcxbGNtZHBibWNnYzNSeVlYUmxaM2tnZEdoaGRDQnBjeUJ1YjNRZ1lYWmhhV3hoWW14bElIUnZJR1JsWlhCY2JpQWdJQ29nY0hKdmNHVnlkR2xsY3lCM2FHbGphQ0JwY3lCamIyNW1kWE5wYm1jdUlGUlBSRTg2SUVWNGNHOXpaU0J3Wlc1a2FXNW5VM1JoZEdVZ2IzSWdaRzl1SjNRZ2RYTmxJR2wwWEc0Z0lDQXFJR1IxY21sdVp5QjBhR1VnYldWeVoyVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ2NHRnlkR2xoYkZOMFlYUmxJRTVsZUhRZ2NHRnlkR2xoYkNCemRHRjBaU0IwYnlCaVpTQnRaWEpuWldRZ2QybDBhQ0J6ZEdGMFpTNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFUyVjBVM1JoZEdVNklHWjFibU4wYVc5dUlDaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z2NHRnlkR2xoYkZOMFlYUmxLU0I3WEc0Z0lDQWdkMkZ5YmxSRVdpaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0ozTmxkRk4wWVhSbEp5azdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRITWdZU0J6ZFdKelpYUWdiMllnZEdobElIQnliM0J6TGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJoY25ScFlXeFFjbTl3Y3lCVGRXSnpaWFFnYjJZZ2RHaGxJRzVsZUhRZ2NISnZjSE11WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWlc1eGRXVjFaVk5sZEZCeWIzQnpPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJSEJoY25ScFlXeFFjbTl3Y3lrZ2UxeHVJQ0FnSUhkaGNtNVVSRm9vY0hWaWJHbGpTVzV6ZEdGdVkyVXNJQ2R6WlhSUWNtOXdjeWNwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWEJzWVdObGN5QmhiR3dnYjJZZ2RHaGxJSEJ5YjNCekxseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyeGhjM045SUhCMVlteHBZMGx1YzNSaGJtTmxJRlJvWlNCcGJuTjBZVzVqWlNCMGFHRjBJSE5vYjNWc1pDQnlaWEpsYm1SbGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCeWIzQnpJRTVsZHlCd2NtOXdjeTVjYmlBZ0lDb2dRR2x1ZEdWeWJtRnNYRzRnSUNBcUwxeHVJQ0JsYm5GMVpYVmxVbVZ3YkdGalpWQnliM0J6T2lCbWRXNWpkR2x2YmlBb2NIVmliR2xqU1c1emRHRnVZMlVzSUhCeWIzQnpLU0I3WEc0Z0lDQWdkMkZ5YmxSRVdpaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0ozSmxjR3hoWTJWUWNtOXdjeWNwTzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1U3SWwxOSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RPd25lclxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFJlYWN0T3duZXJzIGFyZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLlxuICpcbiAqIEFsbCBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5IG93bmVyIGNvbXBvbmVudHMsIGJ1dFxuICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVudHMuXG4gKiBUaGUgbmFtZWQgcmVmZXJlbmNlIGlzIGtub3duIGFzIGEgXCJyZWZcIi5cbiAqXG4gKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFuZCB1cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi5cbiAqXG4gKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICogICAgICAgcmV0dXJuIChcbiAqICAgICAgICAgPGRpdiBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrfT5cbiAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1cImN1c3RvbVwiIC8+XG4gKiAgICAgICAgIDwvZGl2PlxuICogICAgICAgKTtcbiAqICAgICB9LFxuICogICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHRoaXMucmVmcy5jdXN0b20uaGFuZGxlQ2xpY2soKTtcbiAqICAgICB9LFxuICogICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHRoaXMucmVmcy5jdXN0b20uaW5pdGlhbGl6ZSgpO1xuICogICAgIH1cbiAqICAgfSk7XG4gKlxuICogUmVmcyBzaG91bGQgcmFyZWx5IGJlIHVzZWQuIFdoZW4gcmVmcyBhcmUgdXNlZCwgdGhleSBzaG91bGQgb25seSBiZSBkb25lIHRvXG4gKiBjb250cm9sIGRhdGEgdGhhdCBpcyBub3QgaGFuZGxlZCBieSBSZWFjdCdzIGRhdGEgZmxvdy5cbiAqXG4gKiBAY2xhc3MgUmVhY3RPd25lclxuICovXG52YXIgUmVhY3RPd25lciA9IHtcblxuICAvKipcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLlxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzVmFsaWRPd25lcjogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHJldHVybiAhIShvYmplY3QgJiYgdHlwZW9mIG9iamVjdC5hdHRhY2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdC5kZXRhY2hSZWYgPT09ICdmdW5jdGlvbicpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJlZiB0byBhbiBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgYnkgd2hpY2ggdG8gcmVmZXIgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYuXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGFkZENvbXBvbmVudEFzUmVmVG86IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHtcbiAgICAhUmVhY3RPd25lci5pc1ZhbGlkT3duZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0ICcgKyAnYmUgYWRkaW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNvbXBvbmVudFxcJ3MgJyArICdgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgJyArICcoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIG93bmVyLmF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBjb21wb25lbnQgYnkgcmVmIGZyb20gYW4gb3duZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIGRlcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgb2YgdGhlIHJlZiB0byByZW1vdmUuXG4gICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNoIHRoZSByZWYgaXMgcmVjb3JkZWQuXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuICAgICFSZWFjdE93bmVyLmlzVmFsaWRPd25lcihvd25lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCAnICsgJ2JlIHJlbW92aW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNvbXBvbmVudFxcJ3MgJyArICdgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgJyArICcoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIC8vIENoZWNrIHRoYXQgYGNvbXBvbmVudGAgaXMgc3RpbGwgdGhlIGN1cnJlbnQgcmVmIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG9cbiAgICAvLyBkZXRhY2ggdGhlIHJlZiBpZiBhbm90aGVyIGNvbXBvbmVudCBzdG9sZSBpdC5cbiAgICBpZiAob3duZXIuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzW3JlZl0gPT09IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKSB7XG4gICAgICBvd25lci5kZXRhY2hSZWYocmVmKTtcbiAgICB9XG4gIH1cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE93bmVyO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JQZDI1bGNpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRTkzYm1WeVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdhVzUyWVhKcFlXNTBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2YVc1MllYSnBZVzUwSnlrN1hHNWNiaThxS2x4dUlDb2dVbVZoWTNSUGQyNWxjbk1nWVhKbElHTmhjR0ZpYkdVZ2IyWWdjM1J2Y21sdVp5QnlaV1psY21WdVkyVnpJSFJ2SUc5M2JtVmtJR052YlhCdmJtVnVkSE11WEc0Z0tseHVJQ29nUVd4c0lHTnZiWEJ2Ym1WdWRITWdZWEpsSUdOaGNHRmliR1VnYjJZZ0x5OWlaV2x1Wnk4dklISmxabVZ5Wlc1alpXUWdZbmtnYjNkdVpYSWdZMjl0Y0c5dVpXNTBjeXdnWW5WMFhHNGdLaUJ2Ym14NUlGSmxZV04wVDNkdVpYSWdZMjl0Y0c5dVpXNTBjeUJoY21VZ1kyRndZV0pzWlNCdlppQXZMM0psWm1WeVpXNWphVzVuTHk4Z2IzZHVaV1FnWTI5dGNHOXVaVzUwY3k1Y2JpQXFJRlJvWlNCdVlXMWxaQ0J5WldabGNtVnVZMlVnYVhNZ2EyNXZkMjRnWVhNZ1lTQmNJbkpsWmx3aUxseHVJQ3BjYmlBcUlGSmxabk1nWVhKbElHRjJZV2xzWVdKc1pTQjNhR1Z1SUcxdmRXNTBaV1FnWVc1a0lIVndaR0YwWldRZ1pIVnlhVzVuSUhKbFkyOXVZMmxzYVdGMGFXOXVMbHh1SUNwY2JpQXFJQ0FnZG1GeUlFMTVRMjl0Y0c5dVpXNTBJRDBnVW1WaFkzUXVZM0psWVhSbFEyeGhjM01vZTF4dUlDb2dJQ0FnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRvS1NCN1hHNGdLaUFnSUNBZ0lDQnlaWFIxY200Z0tGeHVJQ29nSUNBZ0lDQWdJQ0E4WkdsMklHOXVRMnhwWTJzOWUzUm9hWE11YUdGdVpHeGxRMnhwWTJ0OVBseHVJQ29nSUNBZ0lDQWdJQ0FnSUR4RGRYTjBiMjFEYjIxd2IyNWxiblFnY21WbVBWd2lZM1Z6ZEc5dFhDSWdMejVjYmlBcUlDQWdJQ0FnSUNBZ1BDOWthWFkrWEc0Z0tpQWdJQ0FnSUNBcE8xeHVJQ29nSUNBZ0lIMHNYRzRnS2lBZ0lDQWdhR0Z1Wkd4bFEyeHBZMnM2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ29nSUNBZ0lDQWdkR2hwY3k1eVpXWnpMbU4xYzNSdmJTNW9ZVzVrYkdWRGJHbGpheWdwTzF4dUlDb2dJQ0FnSUgwc1hHNGdLaUFnSUNBZ1kyOXRjRzl1Wlc1MFJHbGtUVzkxYm5RNklHWjFibU4wYVc5dUtDa2dlMXh1SUNvZ0lDQWdJQ0FnZEdocGN5NXlaV1p6TG1OMWMzUnZiUzVwYm1sMGFXRnNhWHBsS0NrN1hHNGdLaUFnSUNBZ2ZWeHVJQ29nSUNCOUtUdGNiaUFxWEc0Z0tpQlNaV1p6SUhOb2IzVnNaQ0J5WVhKbGJIa2dZbVVnZFhObFpDNGdWMmhsYmlCeVpXWnpJR0Z5WlNCMWMyVmtMQ0IwYUdWNUlITm9iM1ZzWkNCdmJteDVJR0psSUdSdmJtVWdkRzljYmlBcUlHTnZiblJ5YjJ3Z1pHRjBZU0IwYUdGMElHbHpJRzV2ZENCb1lXNWtiR1ZrSUdKNUlGSmxZV04wSjNNZ1pHRjBZU0JtYkc5M0xseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCU1pXRmpkRTkzYm1WeVhHNGdLaTljYm5aaGNpQlNaV0ZqZEU5M2JtVnlJRDBnZTF4dVhHNGdJQzhxS2x4dUlDQWdLaUJBY0dGeVlXMGdlejl2WW1wbFkzUjlJRzlpYW1WamRGeHVJQ0FnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlNCVWNuVmxJR2xtSUdCdlltcGxZM1JnSUdseklHRWdkbUZzYVdRZ2IzZHVaWEl1WEc0Z0lDQXFJRUJtYVc1aGJGeHVJQ0FnS2k5Y2JpQWdhWE5XWVd4cFpFOTNibVZ5T2lCbWRXNWpkR2x2YmlBb2IySnFaV04wS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ0VoS0c5aWFtVmpkQ0FtSmlCMGVYQmxiMllnYjJKcVpXTjBMbUYwZEdGamFGSmxaaUE5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUIwZVhCbGIyWWdiMkpxWldOMExtUmxkR0ZqYUZKbFppQTlQVDBnSjJaMWJtTjBhVzl1SnlrN1hHNGdJSDBzWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUZrWkhNZ1lTQmpiMjF3YjI1bGJuUWdZbmtnY21WbUlIUnZJR0Z1SUc5M2JtVnlJR052YlhCdmJtVnVkQzVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRU52YlhCdmJtVnVkSDBnWTI5dGNHOXVaVzUwSUVOdmJYQnZibVZ1ZENCMGJ5QnlaV1psY21WdVkyVXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCeVpXWWdUbUZ0WlNCaWVTQjNhR2xqYUNCMGJ5QnlaV1psY2lCMGJ5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFQzZHVaWEo5SUc5M2JtVnlJRU52YlhCdmJtVnVkQ0J2YmlCM2FHbGphQ0IwYnlCeVpXTnZjbVFnZEdobElISmxaaTVjYmlBZ0lDb2dRR1pwYm1Gc1hHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1lXUmtRMjl0Y0c5dVpXNTBRWE5TWldaVWJ6b2dablZ1WTNScGIyNGdLR052YlhCdmJtVnVkQ3dnY21WbUxDQnZkMjVsY2lrZ2UxeHVJQ0FnSUNGU1pXRmpkRTkzYm1WeUxtbHpWbUZzYVdSUGQyNWxjaWh2ZDI1bGNpa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbllXUmtRMjl0Y0c5dVpXNTBRWE5TWldaVWJ5Z3VMaTRwT2lCUGJteDVJR0VnVW1WaFkzUlBkMjVsY2lCallXNGdhR0YyWlNCeVpXWnpMaUJaYjNVZ2JXbG5hSFFnSnlBcklDZGlaU0JoWkdScGJtY2dZU0J5WldZZ2RHOGdZU0JqYjIxd2IyNWxiblFnZEdoaGRDQjNZWE1nYm05MElHTnlaV0YwWldRZ2FXNXphV1JsSUdFZ1kyOXRjRzl1Wlc1MFhGd25jeUFuSUNzZ0oyQnlaVzVrWlhKZ0lHMWxkR2h2WkN3Z2IzSWdlVzkxSUdoaGRtVWdiWFZzZEdsd2JHVWdZMjl3YVdWeklHOW1JRkpsWVdOMElHeHZZV1JsWkNBbklDc2dKeWhrWlhSaGFXeHpPaUJvZEhSd2N6b3ZMMlppTG0xbEwzSmxZV04wTFhKbFpuTXRiWFZ6ZEMxb1lYWmxMVzkzYm1WeUtTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnYjNkdVpYSXVZWFIwWVdOb1VtVm1LSEpsWml3Z1kyOXRjRzl1Wlc1MEtUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WdGIzWmxjeUJoSUdOdmJYQnZibVZ1ZENCaWVTQnlaV1lnWm5KdmJTQmhiaUJ2ZDI1bGNpQmpiMjF3YjI1bGJuUXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiMjF3YjI1bGJuUjlJR052YlhCdmJtVnVkQ0JEYjIxd2IyNWxiblFnZEc4Z1pHVnlaV1psY21WdVkyVXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCeVpXWWdUbUZ0WlNCdlppQjBhR1VnY21WbUlIUnZJSEpsYlc5MlpTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXRmpkRTkzYm1WeWZTQnZkMjVsY2lCRGIyMXdiMjVsYm5RZ2IyNGdkMmhwWTJnZ2RHaGxJSEpsWmlCcGN5QnlaV052Y21SbFpDNWNiaUFnSUNvZ1FHWnBibUZzWEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnY21WdGIzWmxRMjl0Y0c5dVpXNTBRWE5TWldaR2NtOXRPaUJtZFc1amRHbHZiaUFvWTI5dGNHOXVaVzUwTENCeVpXWXNJRzkzYm1WeUtTQjdYRzRnSUNBZ0lWSmxZV04wVDNkdVpYSXVhWE5XWVd4cFpFOTNibVZ5S0c5M2JtVnlLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHlaVzF2ZG1WRGIyMXdiMjVsYm5SQmMxSmxaa1p5YjIwb0xpNHVLVG9nVDI1c2VTQmhJRkpsWVdOMFQzZHVaWElnWTJGdUlHaGhkbVVnY21WbWN5NGdXVzkxSUcxcFoyaDBJQ2NnS3lBblltVWdjbVZ0YjNacGJtY2dZU0J5WldZZ2RHOGdZU0JqYjIxd2IyNWxiblFnZEdoaGRDQjNZWE1nYm05MElHTnlaV0YwWldRZ2FXNXphV1JsSUdFZ1kyOXRjRzl1Wlc1MFhGd25jeUFuSUNzZ0oyQnlaVzVrWlhKZ0lHMWxkR2h2WkN3Z2IzSWdlVzkxSUdoaGRtVWdiWFZzZEdsd2JHVWdZMjl3YVdWeklHOW1JRkpsWVdOMElHeHZZV1JsWkNBbklDc2dKeWhrWlhSaGFXeHpPaUJvZEhSd2N6b3ZMMlppTG0xbEwzSmxZV04wTFhKbFpuTXRiWFZ6ZEMxb1lYWmxMVzkzYm1WeUtTNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnTHk4Z1EyaGxZMnNnZEdoaGRDQmdZMjl0Y0c5dVpXNTBZQ0JwY3lCemRHbHNiQ0IwYUdVZ1kzVnljbVZ1ZENCeVpXWWdZbVZqWVhWelpTQjNaU0JrYnlCdWIzUWdkMkZ1ZENCMGIxeHVJQ0FnSUM4dklHUmxkR0ZqYUNCMGFHVWdjbVZtSUdsbUlHRnViM1JvWlhJZ1kyOXRjRzl1Wlc1MElITjBiMnhsSUdsMExseHVJQ0FnSUdsbUlDaHZkMjVsY2k1blpYUlFkV0pzYVdOSmJuTjBZVzVqWlNncExuSmxabk5iY21WbVhTQTlQVDBnWTI5dGNHOXVaVzUwTG1kbGRGQjFZbXhwWTBsdWMzUmhibU5sS0NrcElIdGNiaUFnSUNBZ0lHOTNibVZ5TG1SbGRHRmphRkpsWmloeVpXWXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBUM2R1WlhJN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFJlYWN0UGVyZlxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogUmVhY3RQZXJmIGlzIGEgZ2VuZXJhbCBBT1Agc3lzdGVtIGRlc2lnbmVkIHRvIG1lYXN1cmUgcGVyZm9ybWFuY2UuIFRoaXNcbiAqIG1vZHVsZSBvbmx5IGhhcyB0aGUgaG9va3M6IHNlZSBSZWFjdERlZmF1bHRQZXJmIGZvciB0aGUgYW5hbHlzaXMgdG9vbC5cbiAqL1xudmFyIFJlYWN0UGVyZiA9IHtcbiAgLyoqXG4gICAqIEJvb2xlYW4gdG8gZW5hYmxlL2Rpc2FibGUgbWVhc3VyZW1lbnQuIFNldCB0byBmYWxzZSBieSBkZWZhdWx0IHRvIHByZXZlbnRcbiAgICogYWNjaWRlbnRhbCBsb2dnaW5nIGFuZCBwZXJmIGxvc3MuXG4gICAqL1xuICBlbmFibGVNZWFzdXJlOiBmYWxzZSxcblxuICAvKipcbiAgICogSG9sZHMgb250byB0aGUgbWVhc3VyZSBmdW5jdGlvbiBpbiB1c2UuIEJ5IGRlZmF1bHQsIGRvbid0IG1lYXN1cmVcbiAgICogYW55dGhpbmcsIGJ1dCB3ZSdsbCBvdmVycmlkZSB0aGlzIGlmIHdlIGluamVjdCBhIG1lYXN1cmUgZnVuY3Rpb24uXG4gICAqL1xuICBzdG9yZWRNZWFzdXJlOiBfbm9NZWFzdXJlLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3ROYW1lXG4gICAqIEBwYXJhbSB7b2JqZWN0PHN0cmluZz59IG1ldGhvZE5hbWVzXG4gICAqL1xuICBtZWFzdXJlTWV0aG9kczogZnVuY3Rpb24gKG9iamVjdCwgb2JqZWN0TmFtZSwgbWV0aG9kTmFtZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZm9yICh2YXIga2V5IGluIG1ldGhvZE5hbWVzKSB7XG4gICAgICAgIGlmICghbWV0aG9kTmFtZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdFtrZXldID0gUmVhY3RQZXJmLm1lYXN1cmUob2JqZWN0TmFtZSwgbWV0aG9kTmFtZXNba2V5XSwgb2JqZWN0W2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gd3JhcCBtZXRob2RzIHlvdSB3YW50IHRvIG1lYXN1cmUuIFplcm8gb3ZlcmhlYWQgaW4gcHJvZHVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9iak5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZuTmFtZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmdW5jXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICAgKi9cbiAgbWVhc3VyZTogZnVuY3Rpb24gKG9iak5hbWUsIGZuTmFtZSwgZnVuYykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbWVhc3VyZWRGdW5jID0gbnVsbDtcbiAgICAgIHZhciB3cmFwcGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoUmVhY3RQZXJmLmVuYWJsZU1lYXN1cmUpIHtcbiAgICAgICAgICBpZiAoIW1lYXN1cmVkRnVuYykge1xuICAgICAgICAgICAgbWVhc3VyZWRGdW5jID0gUmVhY3RQZXJmLnN0b3JlZE1lYXN1cmUob2JqTmFtZSwgZm5OYW1lLCBmdW5jKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG1lYXN1cmVkRnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgd3JhcHBlci5kaXNwbGF5TmFtZSA9IG9iak5hbWUgKyAnXycgKyBmbk5hbWU7XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0sXG5cbiAgaW5qZWN0aW9uOiB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWVhc3VyZVxuICAgICAqL1xuICAgIGluamVjdE1lYXN1cmU6IGZ1bmN0aW9uIChtZWFzdXJlKSB7XG4gICAgICBSZWFjdFBlcmYuc3RvcmVkTWVhc3VyZSA9IG1lYXN1cmU7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFNpbXBseSBwYXNzZXMgdGhyb3VnaCB0aGUgbWVhc3VyZWQgZnVuY3Rpb24sIHdpdGhvdXQgbWVhc3VyaW5nIGl0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBvYmpOYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gZm5OYW1lXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmdW5jXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gX25vTWVhc3VyZShvYmpOYW1lLCBmbk5hbWUsIGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQZXJmO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JRWlhKbUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JTWldGamRGQmxjbVpjYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzR2S2lwY2JpQXFJRkpsWVdOMFVHVnlaaUJwY3lCaElHZGxibVZ5WVd3Z1FVOVFJSE41YzNSbGJTQmtaWE5wWjI1bFpDQjBieUJ0WldGemRYSmxJSEJsY21admNtMWhibU5sTGlCVWFHbHpYRzRnS2lCdGIyUjFiR1VnYjI1c2VTQm9ZWE1nZEdobElHaHZiMnR6T2lCelpXVWdVbVZoWTNSRVpXWmhkV3gwVUdWeVppQm1iM0lnZEdobElHRnVZV3g1YzJseklIUnZiMnd1WEc0Z0tpOWNiblpoY2lCU1pXRmpkRkJsY21ZZ1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCQ2IyOXNaV0Z1SUhSdklHVnVZV0pzWlM5a2FYTmhZbXhsSUcxbFlYTjFjbVZ0Wlc1MExpQlRaWFFnZEc4Z1ptRnNjMlVnWW5rZ1pHVm1ZWFZzZENCMGJ5QndjbVYyWlc1MFhHNGdJQ0FxSUdGalkybGtaVzUwWVd3Z2JHOW5aMmx1WnlCaGJtUWdjR1Z5WmlCc2IzTnpMbHh1SUNBZ0tpOWNiaUFnWlc1aFlteGxUV1ZoYzNWeVpUb2dabUZzYzJVc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVodmJHUnpJRzl1ZEc4Z2RHaGxJRzFsWVhOMWNtVWdablZ1WTNScGIyNGdhVzRnZFhObExpQkNlU0JrWldaaGRXeDBMQ0JrYjI0bmRDQnRaV0Z6ZFhKbFhHNGdJQ0FxSUdGdWVYUm9hVzVuTENCaWRYUWdkMlVuYkd3Z2IzWmxjbkpwWkdVZ2RHaHBjeUJwWmlCM1pTQnBibXBsWTNRZ1lTQnRaV0Z6ZFhKbElHWjFibU4wYVc5dUxseHVJQ0FnS2k5Y2JpQWdjM1J2Y21Wa1RXVmhjM1Z5WlRvZ1gyNXZUV1ZoYzNWeVpTeGNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc5aWFtVmpkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2IySnFaV04wVG1GdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkRHh6ZEhKcGJtYytmU0J0WlhSb2IyUk9ZVzFsYzF4dUlDQWdLaTljYmlBZ2JXVmhjM1Z5WlUxbGRHaHZaSE02SUdaMWJtTjBhVzl1SUNodlltcGxZM1FzSUc5aWFtVmpkRTVoYldVc0lHMWxkR2h2WkU1aGJXVnpLU0I3WEc0Z0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHdGxlU0JwYmlCdFpYUm9iMlJPWVcxbGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXMWxkR2h2WkU1aGJXVnpMbWhoYzA5M2JsQnliM0JsY25SNUtHdGxlU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J2WW1wbFkzUmJhMlY1WFNBOUlGSmxZV04wVUdWeVppNXRaV0Z6ZFhKbEtHOWlhbVZqZEU1aGJXVXNJRzFsZEdodlpFNWhiV1Z6VzJ0bGVWMHNJRzlpYW1WamRGdHJaWGxkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGVnpaU0IwYUdseklIUnZJSGR5WVhBZ2JXVjBhRzlrY3lCNWIzVWdkMkZ1ZENCMGJ5QnRaV0Z6ZFhKbExpQmFaWEp2SUc5MlpYSm9aV0ZrSUdsdUlIQnliMlIxWTNScGIyNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2WW1wT1lXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbWJrNWhiV1ZjYmlBZ0lDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdablZ1WTF4dUlDQWdLaUJBY21WMGRYSnVJSHRtZFc1amRHbHZibjFjYmlBZ0lDb3ZYRzRnSUcxbFlYTjFjbVU2SUdaMWJtTjBhVzl1SUNodlltcE9ZVzFsTENCbWJrNWhiV1VzSUdaMWJtTXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzFsWVhOMWNtVmtSblZ1WXlBOUlHNTFiR3c3WEc0Z0lDQWdJQ0IyWVhJZ2QzSmhjSEJsY2lBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tGSmxZV04wVUdWeVppNWxibUZpYkdWTlpXRnpkWEpsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NGdFpXRnpkWEpsWkVaMWJtTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWxZWE4xY21Wa1JuVnVZeUE5SUZKbFlXTjBVR1Z5Wmk1emRHOXlaV1JOWldGemRYSmxLRzlpYWs1aGJXVXNJR1p1VG1GdFpTd2dablZ1WXlrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ0WldGemRYSmxaRVoxYm1NdVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm5WdVl5NWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUhkeVlYQndaWEl1WkdsemNHeGhlVTVoYldVZ1BTQnZZbXBPWVcxbElDc2dKMThuSUNzZ1ptNU9ZVzFsTzF4dUlDQWdJQ0FnY21WMGRYSnVJSGR5WVhCd1pYSTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJtZFc1ak8xeHVJQ0I5TEZ4dVhHNGdJR2x1YW1WamRHbHZiam9nZTF4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUcxbFlYTjFjbVZjYmlBZ0lDQWdLaTljYmlBZ0lDQnBibXBsWTNSTlpXRnpkWEpsT2lCbWRXNWpkR2x2YmlBb2JXVmhjM1Z5WlNrZ2UxeHVJQ0FnSUNBZ1VtVmhZM1JRWlhKbUxuTjBiM0psWkUxbFlYTjFjbVVnUFNCdFpXRnpkWEpsTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCVGFXMXdiSGtnY0dGemMyVnpJSFJvY205MVoyZ2dkR2hsSUcxbFlYTjFjbVZrSUdaMWJtTjBhVzl1TENCM2FYUm9iM1YwSUcxbFlYTjFjbWx1WnlCcGRDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2IySnFUbUZ0WlZ4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHWnVUbUZ0WlZ4dUlDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdablZ1WTF4dUlDb2dRSEpsZEhWeWJpQjdablZ1WTNScGIyNTlYRzRnS2k5Y2JtWjFibU4wYVc5dUlGOXViMDFsWVhOMWNtVW9iMkpxVG1GdFpTd2dabTVPWVcxbExDQm1kVzVqS1NCN1hHNGdJSEpsZEhWeWJpQm1kVzVqTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFVHVnlaanNpWFgwPSIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHtcbiAgICBwcm9wOiAncHJvcCcsXG4gICAgY29udGV4dDogJ2NvbnRleHQnLFxuICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbVpwYkdVaU9pSm5aVzVsY21GMFpXUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBeE15MHlNREUxTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNvZ1FXeHNJSEpwWjJoMGN5QnlaWE5sY25abFpDNWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JDVTBRdGMzUjViR1VnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzRnUVc0Z1lXUmthWFJwYjI1aGJDQm5jbUZ1ZEZ4dUlDb2diMllnY0dGMFpXNTBJSEpwWjJoMGN5QmpZVzRnWW1VZ1ptOTFibVFnYVc0Z2RHaGxJRkJCVkVWT1ZGTWdabWxzWlNCcGJpQjBhR1VnYzJGdFpTQmthWEpsWTNSdmNua3VYRzRnS2x4dUlDb2dRSEJ5YjNacFpHVnpUVzlrZFd4bElGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWelhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTWdQU0I3ZlR0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE1nUFNCN1hHNGdJQ0FnY0hKdmNEb2dKM0J5YjNBbkxGeHVJQ0FnSUdOdmJuUmxlSFE2SUNkamIyNTBaWGgwSnl4Y2JpQWdJQ0JqYUdsc1pFTnZiblJsZUhRNklDZGphR2xzWkNCamIyNTBaWGgwSjF4dUlDQjlPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWek95SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdcbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneScpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RJbnN0YW5jZUhhbmRsZXMgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VIYW5kbGVzJyk7XG52YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IHJlcXVpcmUoJy4vUmVhY3RNYXJrdXBDaGVja3N1bScpO1xudmFyIFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneSA9IHJlcXVpcmUoJy4vUmVhY3RTZXJ2ZXJCYXRjaGluZ1N0cmF0ZWd5Jyk7XG52YXIgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbicpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBIVE1MIG1hcmt1cFxuICovXG5mdW5jdGlvbiByZW5kZXJUb1N0cmluZyhlbGVtZW50KSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncmVuZGVyVG9TdHJpbmcoKTogWW91IG11c3QgcGFzcyBhIHZhbGlkIFJlYWN0RWxlbWVudC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIHRyYW5zYWN0aW9uO1xuICB0cnkge1xuICAgIFJlYWN0VXBkYXRlcy5pbmplY3Rpb24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdFNlcnZlckJhdGNoaW5nU3RyYXRlZ3kpO1xuXG4gICAgdmFyIGlkID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuY3JlYXRlUmVhY3RSb290SUQoKTtcbiAgICB0cmFuc2FjdGlvbiA9IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKGZhbHNlKTtcblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZWxlbWVudCwgbnVsbCk7XG4gICAgICB2YXIgbWFya3VwID0gY29tcG9uZW50SW5zdGFuY2UubW91bnRDb21wb25lbnQoaWQsIHRyYW5zYWN0aW9uLCBlbXB0eU9iamVjdCk7XG4gICAgICByZXR1cm4gUmVhY3RNYXJrdXBDaGVja3N1bS5hZGRDaGVja3N1bVRvTWFya3VwKG1hcmt1cCk7XG4gICAgfSwgbnVsbCk7XG4gIH0gZmluYWxseSB7XG4gICAgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbiAgICAvLyBSZXZlcnQgdG8gdGhlIERPTSBiYXRjaGluZyBzdHJhdGVneSBzaW5jZSB0aGVzZSB0d28gcmVuZGVyZXJzXG4gICAgLy8gY3VycmVudGx5IHNoYXJlIHRoZXNlIHN0YXRlZnVsIG1vZHVsZXMuXG4gICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kpO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIEhUTUwgbWFya3VwLCB3aXRob3V0IHRoZSBleHRyYSBSZWFjdCBJRCBhbmQgY2hlY2tzdW1cbiAqIChmb3IgZ2VuZXJhdGluZyBzdGF0aWMgcGFnZXMpXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclRvU3RhdGljTWFya3VwKGVsZW1lbnQpIHtcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW5kZXJUb1N0YXRpY01hcmt1cCgpOiBZb3UgbXVzdCBwYXNzIGEgdmFsaWQgUmVhY3RFbGVtZW50LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICB2YXIgdHJhbnNhY3Rpb247XG4gIHRyeSB7XG4gICAgUmVhY3RVcGRhdGVzLmluamVjdGlvbi5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0U2VydmVyQmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgICB2YXIgaWQgPSBSZWFjdEluc3RhbmNlSGFuZGxlcy5jcmVhdGVSZWFjdFJvb3RJRCgpO1xuICAgIHRyYW5zYWN0aW9uID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5nZXRQb29sZWQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ucGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGVsZW1lbnQsIG51bGwpO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlLm1vdW50Q29tcG9uZW50KGlkLCB0cmFuc2FjdGlvbiwgZW1wdHlPYmplY3QpO1xuICAgIH0sIG51bGwpO1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG4gICAgLy8gUmV2ZXJ0IHRvIHRoZSBET00gYmF0Y2hpbmcgc3RyYXRlZ3kgc2luY2UgdGhlc2UgdHdvIHJlbmRlcmVyc1xuICAgIC8vIGN1cnJlbnRseSBzaGFyZSB0aGVzZSBzdGF0ZWZ1bCBtb2R1bGVzLlxuICAgIFJlYWN0VXBkYXRlcy5pbmplY3Rpb24uaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcmVuZGVyVG9TdHJpbmc6IHJlbmRlclRvU3RyaW5nLFxuICByZW5kZXJUb1N0YXRpY01hcmt1cDogcmVuZGVyVG9TdGF0aWNNYXJrdXBcbn07XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUlRaWEoyWlhKU1pXNWtaWEpwYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UTXRNakF4TlN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcUlFRnNiQ0J5YVdkb2RITWdjbVZ6WlhKMlpXUXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnUWxORUxYTjBlV3hsSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1SUVGdUlHRmtaR2wwYVc5dVlXd2daM0poYm5SY2JpQXFJRzltSUhCaGRHVnVkQ0J5YVdkb2RITWdZMkZ1SUdKbElHWnZkVzVrSUdsdUlIUm9aU0JRUVZSRlRsUlRJR1pwYkdVZ2FXNGdkR2hsSUhOaGJXVWdaR2x5WldOMGIzSjVMbHh1SUNwY2JpQXFJRUIwZVhCbFkyaGxZMnR6SUhOMFlYUnBZeTF2Ym14NVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdVbVZoWTNSVFpYSjJaWEpTWlc1a1pYSnBibWRjYmlBcUwxeHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkVaV1poZFd4MFFtRjBZMmhwYm1kVGRISmhkR1ZuZVNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRVpXWmhkV3gwUW1GMFkyaHBibWRUZEhKaGRHVm5lU2NwTzF4dWRtRnlJRkpsWVdOMFJXeGxiV1Z1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwSnlrN1hHNTJZWElnVW1WaFkzUkpibk4wWVc1alpVaGhibVJzWlhNZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFNXNXpkR0Z1WTJWSVlXNWtiR1Z6SnlrN1hHNTJZWElnVW1WaFkzUk5ZWEpyZFhCRGFHVmphM04xYlNBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSTllYSnJkWEJEYUdWamEzTjFiU2NwTzF4dWRtRnlJRkpsWVdOMFUyVnlkbVZ5UW1GMFkyaHBibWRUZEhKaGRHVm5lU0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JUWlhKMlpYSkNZWFJqYUdsdVoxTjBjbUYwWldkNUp5azdYRzUyWVhJZ1VtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZiaWNwTzF4dWRtRnlJRkpsWVdOMFZYQmtZWFJsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSVmNHUmhkR1Z6SnlrN1hHNWNiblpoY2lCbGJYQjBlVTlpYW1WamRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMlZ0Y0hSNVQySnFaV04wSnlrN1hHNTJZWElnYVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmFXNXpkR0Z1ZEdsaGRHVlNaV0ZqZEVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1WEc0dktpcGNiaUFxSUVCd1lYSmhiU0I3VW1WaFkzUkZiR1Z0Wlc1MGZTQmxiR1Z0Wlc1MFhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJSFJvWlNCSVZFMU1JRzFoY210MWNGeHVJQ292WEc1bWRXNWpkR2x2YmlCeVpXNWtaWEpVYjFOMGNtbHVaeWhsYkdWdFpXNTBLU0I3WEc0Z0lDRlNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUW9aV3hsYldWdWRDa2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBbmNtVnVaR1Z5Vkc5VGRISnBibWNvS1RvZ1dXOTFJRzExYzNRZ2NHRnpjeUJoSUhaaGJHbGtJRkpsWVdOMFJXeGxiV1Z1ZEM0bktTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdkbUZ5SUhSeVlXNXpZV04wYVc5dU8xeHVJQ0IwY25rZ2UxeHVJQ0FnSUZKbFlXTjBWWEJrWVhSbGN5NXBibXBsWTNScGIyNHVhVzVxWldOMFFtRjBZMmhwYm1kVGRISmhkR1ZuZVNoU1pXRmpkRk5sY25abGNrSmhkR05vYVc1blUzUnlZWFJsWjNrcE8xeHVYRzRnSUNBZ2RtRnlJR2xrSUQwZ1VtVmhZM1JKYm5OMFlXNWpaVWhoYm1Sc1pYTXVZM0psWVhSbFVtVmhZM1JTYjI5MFNVUW9LVHRjYmlBZ0lDQjBjbUZ1YzJGamRHbHZiaUE5SUZKbFlXTjBVMlZ5ZG1WeVVtVnVaR1Z5YVc1blZISmhibk5oWTNScGIyNHVaMlYwVUc5dmJHVmtLR1poYkhObEtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCMGNtRnVjMkZqZEdsdmJpNXdaWEptYjNKdEtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJSFpoY2lCamIyMXdiMjVsYm5SSmJuTjBZVzVqWlNBOUlHbHVjM1JoYm5ScFlYUmxVbVZoWTNSRGIyMXdiMjVsYm5Rb1pXeGxiV1Z1ZEN3Z2JuVnNiQ2s3WEc0Z0lDQWdJQ0IyWVhJZ2JXRnlhM1Z3SUQwZ1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVdWJXOTFiblJEYjIxd2IyNWxiblFvYVdRc0lIUnlZVzV6WVdOMGFXOXVMQ0JsYlhCMGVVOWlhbVZqZENrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnVW1WaFkzUk5ZWEpyZFhCRGFHVmphM04xYlM1aFpHUkRhR1ZqYTNOMWJWUnZUV0Z5YTNWd0tHMWhjbXQxY0NrN1hHNGdJQ0FnZlN3Z2JuVnNiQ2s3WEc0Z0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ1VtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZiaTV5Wld4bFlYTmxLSFJ5WVc1ellXTjBhVzl1S1R0Y2JpQWdJQ0F2THlCU1pYWmxjblFnZEc4Z2RHaGxJRVJQVFNCaVlYUmphR2x1WnlCemRISmhkR1ZuZVNCemFXNWpaU0IwYUdWelpTQjBkMjhnY21WdVpHVnlaWEp6WEc0Z0lDQWdMeThnWTNWeWNtVnVkR3g1SUhOb1lYSmxJSFJvWlhObElITjBZWFJsWm5Wc0lHMXZaSFZzWlhNdVhHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWekxtbHVhbVZqZEdsdmJpNXBibXBsWTNSQ1lYUmphR2x1WjFOMGNtRjBaV2Q1S0ZKbFlXTjBSR1ZtWVhWc2RFSmhkR05vYVc1blUzUnlZWFJsWjNrcE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dRSEJoY21GdElIdFNaV0ZqZEVWc1pXMWxiblI5SUdWc1pXMWxiblJjYmlBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ2RHaGxJRWhVVFV3Z2JXRnlhM1Z3TENCM2FYUm9iM1YwSUhSb1pTQmxlSFJ5WVNCU1pXRmpkQ0JKUkNCaGJtUWdZMmhsWTJ0emRXMWNiaUFxSUNobWIzSWdaMlZ1WlhKaGRHbHVaeUJ6ZEdGMGFXTWdjR0ZuWlhNcFhHNGdLaTljYm1aMWJtTjBhVzl1SUhKbGJtUmxjbFJ2VTNSaGRHbGpUV0Z5YTNWd0tHVnNaVzFsYm5RcElIdGNiaUFnSVZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZENobGJHVnRaVzUwS1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2R5Wlc1a1pYSlViMU4wWVhScFkwMWhjbXQxY0NncE9pQlpiM1VnYlhWemRDQndZWE56SUdFZ2RtRnNhV1FnVW1WaFkzUkZiR1Z0Wlc1MExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0IyWVhJZ2RISmhibk5oWTNScGIyNDdYRzRnSUhSeWVTQjdYRzRnSUNBZ1VtVmhZM1JWY0dSaGRHVnpMbWx1YW1WamRHbHZiaTVwYm1wbFkzUkNZWFJqYUdsdVoxTjBjbUYwWldkNUtGSmxZV04wVTJWeWRtVnlRbUYwWTJocGJtZFRkSEpoZEdWbmVTazdYRzVjYmlBZ0lDQjJZWElnYVdRZ1BTQlNaV0ZqZEVsdWMzUmhibU5sU0dGdVpHeGxjeTVqY21WaGRHVlNaV0ZqZEZKdmIzUkpSQ2dwTzF4dUlDQWdJSFJ5WVc1ellXTjBhVzl1SUQwZ1VtVmhZM1JUWlhKMlpYSlNaVzVrWlhKcGJtZFVjbUZ1YzJGamRHbHZiaTVuWlhSUWIyOXNaV1FvZEhKMVpTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RISmhibk5oWTNScGIyNHVjR1Z5Wm05eWJTaG1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MFNXNXpkR0Z1WTJVZ1BTQnBibk4wWVc1MGFXRjBaVkpsWVdOMFEyOXRjRzl1Wlc1MEtHVnNaVzFsYm5Rc0lHNTFiR3dwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR052YlhCdmJtVnVkRWx1YzNSaGJtTmxMbTF2ZFc1MFEyOXRjRzl1Wlc1MEtHbGtMQ0IwY21GdWMyRmpkR2x2Yml3Z1pXMXdkSGxQWW1wbFkzUXBPMXh1SUNBZ0lIMHNJRzUxYkd3cE8xeHVJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJRkpsWVdOMFUyVnlkbVZ5VW1WdVpHVnlhVzVuVkhKaGJuTmhZM1JwYjI0dWNtVnNaV0Z6WlNoMGNtRnVjMkZqZEdsdmJpazdYRzRnSUNBZ0x5OGdVbVYyWlhKMElIUnZJSFJvWlNCRVQwMGdZbUYwWTJocGJtY2djM1J5WVhSbFoza2djMmx1WTJVZ2RHaGxjMlVnZEhkdklISmxibVJsY21WeWMxeHVJQ0FnSUM4dklHTjFjbkpsYm5Sc2VTQnphR0Z5WlNCMGFHVnpaU0J6ZEdGMFpXWjFiQ0J0YjJSMWJHVnpMbHh1SUNBZ0lGSmxZV04wVlhCa1lYUmxjeTVwYm1wbFkzUnBiMjR1YVc1cVpXTjBRbUYwWTJocGJtZFRkSEpoZEdWbmVTaFNaV0ZqZEVSbFptRjFiSFJDWVhSamFHbHVaMU4wY21GMFpXZDVLVHRjYmlBZ2ZWeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUh0Y2JpQWdjbVZ1WkdWeVZHOVRkSEpwYm1jNklISmxibVJsY2xSdlUzUnlhVzVuTEZ4dUlDQnlaVzVrWlhKVWIxTjBZWFJwWTAxaGNtdDFjRG9nY21WdVpHVnlWRzlUZEdGMGFXTk5ZWEpyZFhCY2JuMDdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RVcGRhdGVRdWV1ZVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL09iamVjdC5hc3NpZ24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpIHtcbiAgUmVhY3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG59XG5cbmZ1bmN0aW9uIGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIE9ubHkgd2FybiB3aGVuIHdlIGhhdmUgYSBjYWxsZXJOYW1lLiBPdGhlcndpc2Ugd2Ugc2hvdWxkIGJlIHNpbGVudC5cbiAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxpbmcgZnJvbSBlbnF1ZXVlQ2FsbGJhY2suIFdlIGRvbid0IHdhbnQgdG8gd2FyblxuICAgICAgLy8gdGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IHdhcm5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgbGlmZWN5Y2xlIG1ldGhvZC5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjYWxsZXJOYW1lLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJyVzKC4uLik6IENhbm5vdCB1cGRhdGUgZHVyaW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRyYW5zaXRpb24gJyArICcoc3VjaCBhcyB3aXRoaW4gYHJlbmRlcmApLiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlLicsIGNhbGxlck5hbWUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7XG59XG5cbi8qKlxuICogUmVhY3RVcGRhdGVRdWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlclxuICogcmVjb25jaWxpYXRpb24gc3RlcC5cbiAqL1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgICBpZiAob3duZXIgIT09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlzTW91bnRlZCBpbnNpZGUgaXRzIHJlbmRlcigpIGZ1bmN0aW9uLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdW5kZWZpbmVkO1xuICAgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgLy8gRHVyaW5nIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyIHRoaXMgd2lsbCBzdGlsbCBiZSBudWxsIGJ1dCBhZnRlclxuICAgICAgLy8gdGhhdCB3aWxsIGFsd2F5cyByZW5kZXIgdG8gc29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBTbyB3ZSBjYW4gdXNlXG4gICAgICAvLyB0aGlzIGhhY2suXG4gICAgICByZXR1cm4gISFpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG4gICAgISh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2VucXVldWVDYWxsYmFjayguLi4pOiBZb3UgY2FsbGVkIGBzZXRQcm9wc2AsIGByZXBsYWNlUHJvcHNgLCAnICsgJ2BzZXRTdGF0ZWAsIGByZXBsYWNlU3RhdGVgLCBvciBgZm9yY2VVcGRhdGVgIHdpdGggYSBjYWxsYmFjayB0aGF0ICcgKyAnaXNuXFwndCBjYWxsYWJsZS4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuXG4gICAgLy8gUHJldmlvdXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5hbFxuICAgIC8vIGluc3RhbmNlLiBTaW5jZSB3ZSB3YW50IHRvIG1ha2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBtaXJyb3IgdGhlIHNhbWVcbiAgICAvLyBiZWhhdmlvciB3ZSBoYXZlIGluIG90aGVyIGVucXVldWUqIG1ldGhvZHMuXG4gICAgLy8gV2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50LiBTZWVcbiAgICAvLyBlbnF1ZXVlVXBkYXRlcy5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gICAgLy8gVE9ETzogVGhlIGNhbGxiYWNrIGhlcmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRlIGlzIGNhbGxlZCBmcm9tXG4gICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRvaW5nIHNvIGNvbXBsZXRlbHkgaW5cbiAgICAvLyBmYXZvciBvZiBnZXRJbml0aWFsU3RhdGUuIEFsdGVybmF0aXZlbHksIHdlIGNhbiBkaXNhbGxvd1xuICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBkdXJpbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBjYWxsYmFjaykge1xuICAgICEodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdlbnF1ZXVlQ2FsbGJhY2soLi4uKTogWW91IGNhbGxlZCBgc2V0UHJvcHNgLCBgcmVwbGFjZVByb3BzYCwgJyArICdgc2V0U3RhdGVgLCBgcmVwbGFjZVN0YXRlYCwgb3IgYGZvcmNlVXBkYXRlYCB3aXRoIGEgY2FsbGJhY2sgdGhhdCAnICsgJ2lzblxcJ3QgY2FsbGFibGUuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdO1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbXSk7XG4gICAgcXVldWUucHVzaChwYXJ0aWFsU3RhdGUpO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgcHJvcHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFByb3BzIFN1YnNldCBvZiB0aGUgbmV4dCBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0UHJvcHM6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFByb3BzKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRQcm9wcycpO1xuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRQcm9wc0ludGVybmFsKGludGVybmFsSW5zdGFuY2UsIHBhcnRpYWxQcm9wcyk7XG4gIH0sXG5cbiAgZW5xdWV1ZVNldFByb3BzSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBwYXJ0aWFsUHJvcHMpIHtcbiAgICB2YXIgdG9wTGV2ZWxXcmFwcGVyID0gaW50ZXJuYWxJbnN0YW5jZS5fdG9wTGV2ZWxXcmFwcGVyO1xuICAgICF0b3BMZXZlbFdyYXBwZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnc2V0UHJvcHMoLi4uKTogWW91IGNhbGxlZCBgc2V0UHJvcHNgIG9uIGEgJyArICdjb21wb25lbnQgd2l0aCBhIHBhcmVudC4gVGhpcyBpcyBhbiBhbnRpLXBhdHRlcm4gc2luY2UgcHJvcHMgd2lsbCAnICsgJ2dldCByZWFjdGl2ZWx5IHVwZGF0ZWQgd2hlbiByZW5kZXJlZC4gSW5zdGVhZCwgY2hhbmdlIHRoZSBvd25lclxcJ3MgJyArICdgcmVuZGVyYCBtZXRob2QgdG8gcGFzcyB0aGUgY29ycmVjdCB2YWx1ZSBhcyBwcm9wcyB0byB0aGUgY29tcG9uZW50ICcgKyAnd2hlcmUgaXQgaXMgY3JlYXRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBNZXJnZSB3aXRoIHRoZSBwZW5kaW5nIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2Ugd2l0aCBleGlzdGluZ1xuICAgIC8vIGVsZW1lbnQgcHJvcHMuXG4gICAgdmFyIHdyYXBFbGVtZW50ID0gdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCB8fCB0b3BMZXZlbFdyYXBwZXIuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBlbGVtZW50ID0gd3JhcEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIHByb3BzID0gYXNzaWduKHt9LCBlbGVtZW50LnByb3BzLCBwYXJ0aWFsUHJvcHMpO1xuICAgIHRvcExldmVsV3JhcHBlci5fcGVuZGluZ0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlUHJvcHMod3JhcEVsZW1lbnQsIFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VQcm9wcyhlbGVtZW50LCBwcm9wcykpO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZSh0b3BMZXZlbFdyYXBwZXIpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzIE5ldyBwcm9wcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVByb3BzOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHByb3BzKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlUHJvcHMnKTtcbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlUmVwbGFjZVByb3BzSW50ZXJuYWwoaW50ZXJuYWxJbnN0YW5jZSwgcHJvcHMpO1xuICB9LFxuXG4gIGVucXVldWVSZXBsYWNlUHJvcHNJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHByb3BzKSB7XG4gICAgdmFyIHRvcExldmVsV3JhcHBlciA9IGludGVybmFsSW5zdGFuY2UuX3RvcExldmVsV3JhcHBlcjtcbiAgICAhdG9wTGV2ZWxXcmFwcGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlcGxhY2VQcm9wcyguLi4pOiBZb3UgY2FsbGVkIGByZXBsYWNlUHJvcHNgIG9uIGEgJyArICdjb21wb25lbnQgd2l0aCBhIHBhcmVudC4gVGhpcyBpcyBhbiBhbnRpLXBhdHRlcm4gc2luY2UgcHJvcHMgd2lsbCAnICsgJ2dldCByZWFjdGl2ZWx5IHVwZGF0ZWQgd2hlbiByZW5kZXJlZC4gSW5zdGVhZCwgY2hhbmdlIHRoZSBvd25lclxcJ3MgJyArICdgcmVuZGVyYCBtZXRob2QgdG8gcGFzcyB0aGUgY29ycmVjdCB2YWx1ZSBhcyBwcm9wcyB0byB0aGUgY29tcG9uZW50ICcgKyAnd2hlcmUgaXQgaXMgY3JlYXRlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBNZXJnZSB3aXRoIHRoZSBwZW5kaW5nIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2Ugd2l0aCBleGlzdGluZ1xuICAgIC8vIGVsZW1lbnQgcHJvcHMuXG4gICAgdmFyIHdyYXBFbGVtZW50ID0gdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCB8fCB0b3BMZXZlbFdyYXBwZXIuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBlbGVtZW50ID0gd3JhcEVsZW1lbnQucHJvcHM7XG4gICAgdG9wTGV2ZWxXcmFwcGVyLl9wZW5kaW5nRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VQcm9wcyh3cmFwRWxlbWVudCwgUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZVByb3BzKGVsZW1lbnQsIHByb3BzKSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRlKHRvcExldmVsV3JhcHBlcik7XG4gIH0sXG5cbiAgZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5ld0VsZW1lbnQpIHtcbiAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxlbWVudCA9IG5ld0VsZW1lbnQ7XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlUXVldWU7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VW1WaFkzUlZjR1JoZEdWUmRXVjFaUzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCU1pXRmpkRlZ3WkdGMFpWRjFaWFZsWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlKeWs3WEc1MllYSWdVbVZoWTNSRmJHVnRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWc1pXMWxiblFuS1R0Y2JuWmhjaUJTWldGamRFbHVjM1JoYm1ObFRXRndJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRWx1YzNSaGJtTmxUV0Z3SnlrN1hHNTJZWElnVW1WaFkzUlZjR1JoZEdWeklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGVndaR0YwWlhNbktUdGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm1aMWJtTjBhVzl1SUdWdWNYVmxkV1ZWY0dSaGRHVW9hVzUwWlhKdVlXeEpibk4wWVc1alpTa2dlMXh1SUNCU1pXRmpkRlZ3WkdGMFpYTXVaVzV4ZFdWMVpWVndaR0YwWlNocGJuUmxjbTVoYkVsdWMzUmhibU5sS1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWjJWMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlZKbFlXUjVSbTl5VlhCa1lYUmxLSEIxWW14cFkwbHVjM1JoYm1ObExDQmpZV3hzWlhKT1lXMWxLU0I3WEc0Z0lIWmhjaUJwYm5SbGNtNWhiRWx1YzNSaGJtTmxJRDBnVW1WaFkzUkpibk4wWVc1alpVMWhjQzVuWlhRb2NIVmliR2xqU1c1emRHRnVZMlVwTzF4dUlDQnBaaUFvSVdsdWRHVnlibUZzU1c1emRHRnVZMlVwSUh0Y2JpQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdMeThnVDI1c2VTQjNZWEp1SUhkb1pXNGdkMlVnYUdGMlpTQmhJR05oYkd4bGNrNWhiV1V1SUU5MGFHVnlkMmx6WlNCM1pTQnphRzkxYkdRZ1ltVWdjMmxzWlc1MExseHVJQ0FnSUNBZ0x5OGdWMlVuY21VZ2NISnZZbUZpYkhrZ1kyRnNiR2x1WnlCbWNtOXRJR1Z1Y1hWbGRXVkRZV3hzWW1GamF5NGdWMlVnWkc5dUozUWdkMkZ1ZENCMGJ5QjNZWEp1WEc0Z0lDQWdJQ0F2THlCMGFHVnlaU0JpWldOaGRYTmxJSGRsSUdGc2NtVmhaSGtnZDJGeWJtVmtJR1p2Y2lCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCc2FXWmxZM2xqYkdVZ2JXVjBhRzlrTGx4dUlDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb0lXTmhiR3hsY2s1aGJXVXNJQ2NsY3lndUxpNHBPaUJEWVc0Z2IyNXNlU0IxY0dSaGRHVWdZU0J0YjNWdWRHVmtJRzl5SUcxdmRXNTBhVzVuSUdOdmJYQnZibVZ1ZEM0Z0p5QXJJQ2RVYUdseklIVnpkV0ZzYkhrZ2JXVmhibk1nZVc5MUlHTmhiR3hsWkNBbGN5Z3BJRzl1SUdGdUlIVnViVzkxYm5SbFpDQmpiMjF3YjI1bGJuUXVJQ2NnS3lBblZHaHBjeUJwY3lCaElHNXZMVzl3TGlCUWJHVmhjMlVnWTJobFkyc2dkR2hsSUdOdlpHVWdabTl5SUhSb1pTQWxjeUJqYjIxd2IyNWxiblF1Snl3Z1kyRnNiR1Z5VG1GdFpTd2dZMkZzYkdWeVRtRnRaU3dnY0hWaWJHbGpTVzV6ZEdGdVkyVXVZMjl1YzNSeWRXTjBiM0l1WkdsemNHeGhlVTVoYldVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlZ4dVhHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29VbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDQTlQU0J1ZFd4c0xDQW5KWE1vTGk0dUtUb2dRMkZ1Ym05MElIVndaR0YwWlNCa2RYSnBibWNnWVc0Z1pYaHBjM1JwYm1jZ2MzUmhkR1VnZEhKaGJuTnBkR2x2YmlBbklDc2dKeWh6ZFdOb0lHRnpJSGRwZEdocGJpQmdjbVZ1WkdWeVlDa3VJRkpsYm1SbGNpQnRaWFJvYjJSeklITm9iM1ZzWkNCaVpTQmhJSEIxY21VZ1puVnVZM1JwYjI0Z0p5QXJJQ2R2WmlCd2NtOXdjeUJoYm1RZ2MzUmhkR1V1Snl3Z1kyRnNiR1Z5VG1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnYVc1MFpYSnVZV3hKYm5OMFlXNWpaVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbElHRnNiRzkzY3lCbWIzSWdjM1JoZEdVZ2RYQmtZWFJsY3lCMGJ5QmlaU0J6WTJobFpIVnNaV1FnYVc1MGJ5QmhJR3hoZEdWeVhHNGdLaUJ5WldOdmJtTnBiR2xoZEdsdmJpQnpkR1Z3TGx4dUlDb3ZYRzUyWVhJZ1VtVmhZM1JWY0dSaGRHVlJkV1YxWlNBOUlIdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EyaGxZMnR6SUhkb1pYUm9aWElnYjNJZ2JtOTBJSFJvYVhNZ1kyOXRjRzl6YVhSbElHTnZiWEJ2Ym1WdWRDQnBjeUJ0YjNWdWRHVmtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IzWlNCM1lXNTBJSFJ2SUhSbGMzUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OUlGUnlkV1VnYVdZZ2JXOTFiblJsWkN3Z1ptRnNjMlVnYjNSb1pYSjNhWE5sTGx4dUlDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQXFJRUJtYVc1aGJGeHVJQ0FnS2k5Y2JpQWdhWE5OYjNWdWRHVmtPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJRzkzYm1WeUlEMGdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWREdGNiaUFnSUNBZ0lHbG1JQ2h2ZDI1bGNpQWhQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlodmQyNWxjaTVmZDJGeWJtVmtRV0p2ZFhSU1pXWnpTVzVTWlc1a1pYSXNJQ2NsY3lCcGN5QmhZMk5sYzNOcGJtY2dhWE5OYjNWdWRHVmtJR2x1YzJsa1pTQnBkSE1nY21WdVpHVnlLQ2tnWm5WdVkzUnBiMjR1SUNjZ0t5QW5jbVZ1WkdWeUtDa2djMmh2ZFd4a0lHSmxJR0VnY0hWeVpTQm1kVzVqZEdsdmJpQnZaaUJ3Y205d2N5QmhibVFnYzNSaGRHVXVJRWwwSUhOb2IzVnNaQ0FuSUNzZ0oyNWxkbVZ5SUdGalkyVnpjeUJ6YjIxbGRHaHBibWNnZEdoaGRDQnlaWEYxYVhKbGN5QnpkR0ZzWlNCa1lYUmhJR1p5YjIwZ2RHaGxJSEJ5WlhacGIzVnpJQ2NnS3lBbmNtVnVaR1Z5TENCemRXTm9JR0Z6SUhKbFpuTXVJRTF2ZG1VZ2RHaHBjeUJzYjJkcFl5QjBieUJqYjIxd2IyNWxiblJFYVdSTmIzVnVkQ0JoYm1RZ0p5QXJJQ2RqYjIxd2IyNWxiblJFYVdSVmNHUmhkR1VnYVc1emRHVmhaQzRuTENCdmQyNWxjaTVuWlhST1lXMWxLQ2tnZkh3Z0owRWdZMjl0Y0c5dVpXNTBKeWtnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lHOTNibVZ5TGw5M1lYSnVaV1JCWW05MWRGSmxabk5KYmxKbGJtUmxjaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnBiblJsY201aGJFbHVjM1JoYm1ObElEMGdVbVZoWTNSSmJuTjBZVzVqWlUxaGNDNW5aWFFvY0hWaWJHbGpTVzV6ZEdGdVkyVXBPMXh1SUNBZ0lHbG1JQ2hwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0F2THlCRWRYSnBibWNnWTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwSUdGdVpDQnlaVzVrWlhJZ2RHaHBjeUIzYVd4c0lITjBhV3hzSUdKbElHNTFiR3dnWW5WMElHRm1kR1Z5WEc0Z0lDQWdJQ0F2THlCMGFHRjBJSGRwYkd3Z1lXeDNZWGx6SUhKbGJtUmxjaUIwYnlCemIyMWxkR2hwYm1jdUlFRjBJR3hsWVhOMElHWnZjaUJ1YjNjdUlGTnZJSGRsSUdOaGJpQjFjMlZjYmlBZ0lDQWdJQzh2SUhSb2FYTWdhR0ZqYXk1Y2JpQWdJQ0FnSUhKbGRIVnliaUFoSVdsdWRHVnlibUZzU1c1emRHRnVZMlV1WDNKbGJtUmxjbVZrUTI5dGNHOXVaVzUwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmJuRjFaWFZsSUdFZ1kyRnNiR0poWTJzZ2RHaGhkQ0IzYVd4c0lHSmxJR1Y0WldOMWRHVmtJR0ZtZEdWeUlHRnNiQ0IwYUdVZ2NHVnVaR2x1WnlCMWNHUmhkR1Z6WEc0Z0lDQXFJR2hoZG1VZ2NISnZZMlZ6YzJWa0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyeGhjM045SUhCMVlteHBZMGx1YzNSaGJtTmxJRlJvWlNCcGJuTjBZVzVqWlNCMGJ5QjFjMlVnWVhNZ1lIUm9hWE5nSUdOdmJuUmxlSFF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJEWVd4c1pXUWdZV1owWlhJZ2MzUmhkR1VnYVhNZ2RYQmtZWFJsWkM1Y2JpQWdJQ29nUUdsdWRHVnlibUZzWEc0Z0lDQXFMMXh1SUNCbGJuRjFaWFZsUTJGc2JHSmhZMnM2SUdaMWJtTjBhVzl1SUNod2RXSnNhV05KYm5OMFlXNWpaU3dnWTJGc2JHSmhZMnNwSUh0Y2JpQWdJQ0FoS0hSNWNHVnZaaUJqWVd4c1ltRmpheUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblpXNXhkV1YxWlVOaGJHeGlZV05yS0M0dUxpazZJRmx2ZFNCallXeHNaV1FnWUhObGRGQnliM0J6WUN3Z1lISmxjR3hoWTJWUWNtOXdjMkFzSUNjZ0t5QW5ZSE5sZEZOMFlYUmxZQ3dnWUhKbGNHeGhZMlZUZEdGMFpXQXNJRzl5SUdCbWIzSmpaVlZ3WkdGMFpXQWdkMmwwYUNCaElHTmhiR3hpWVdOcklIUm9ZWFFnSnlBcklDZHBjMjVjWENkMElHTmhiR3hoWW14bExpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0IyWVhJZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlNBOUlHZGxkRWx1ZEdWeWJtRnNTVzV6ZEdGdVkyVlNaV0ZrZVVadmNsVndaR0YwWlNod2RXSnNhV05KYm5OMFlXNWpaU2s3WEc1Y2JpQWdJQ0F2THlCUWNtVjJhVzkxYzJ4NUlIZGxJSGR2ZFd4a0lIUm9jbTkzSUdGdUlHVnljbTl5SUdsbUlIZGxJR1JwWkc0bmRDQm9ZWFpsSUdGdUlHbHVkR1Z5Ym1Gc1hHNGdJQ0FnTHk4Z2FXNXpkR0Z1WTJVdUlGTnBibU5sSUhkbElIZGhiblFnZEc4Z2JXRnJaU0JwZENCaElHNXZMVzl3SUdsdWMzUmxZV1FzSUhkbElHMXBjbkp2Y2lCMGFHVWdjMkZ0WlZ4dUlDQWdJQzh2SUdKbGFHRjJhVzl5SUhkbElHaGhkbVVnYVc0Z2IzUm9aWElnWlc1eGRXVjFaU29nYldWMGFHOWtjeTVjYmlBZ0lDQXZMeUJYWlNCaGJITnZJRzVsWldRZ2RHOGdhV2R1YjNKbElHTmhiR3hpWVdOcmN5QnBiaUJqYjIxd2IyNWxiblJYYVd4c1RXOTFiblF1SUZObFpWeHVJQ0FnSUM4dklHVnVjWFZsZFdWVmNHUmhkR1Z6TGx4dUlDQWdJR2xtSUNnaGFXNTBaWEp1WVd4SmJuTjBZVzVqWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTXBJSHRjYmlBZ0lDQWdJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTXVjSFZ6YUNoallXeHNZbUZqYXlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTWdQU0JiWTJGc2JHSmhZMnRkTzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJVVDBSUE9pQlVhR1VnWTJGc2JHSmhZMnNnYUdWeVpTQnBjeUJwWjI1dmNtVmtJSGRvWlc0Z2MyVjBVM1JoZEdVZ2FYTWdZMkZzYkdWa0lHWnliMjFjYmlBZ0lDQXZMeUJqYjIxd2IyNWxiblJYYVd4c1RXOTFiblF1SUVWcGRHaGxjaUJtYVhnZ2FYUWdiM0lnWkdsellXeHNiM2NnWkc5cGJtY2djMjhnWTI5dGNHeGxkR1ZzZVNCcGJseHVJQ0FnSUM4dklHWmhkbTl5SUc5bUlHZGxkRWx1YVhScFlXeFRkR0YwWlM0Z1FXeDBaWEp1WVhScGRtVnNlU3dnZDJVZ1kyRnVJR1JwYzJGc2JHOTNYRzRnSUNBZ0x5OGdZMjl0Y0c5dVpXNTBWMmxzYkUxdmRXNTBJR1IxY21sdVp5QnpaWEoyWlhJdGMybGtaU0J5Wlc1a1pYSnBibWN1WEc0Z0lDQWdaVzV4ZFdWMVpWVndaR0YwWlNocGJuUmxjbTVoYkVsdWMzUmhibU5sS1R0Y2JpQWdmU3hjYmx4dUlDQmxibkYxWlhWbFEyRnNiR0poWTJ0SmJuUmxjbTVoYkRvZ1puVnVZM1JwYjI0Z0tHbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJVc0lHTmhiR3hpWVdOcktTQjdYRzRnSUNBZ0lTaDBlWEJsYjJZZ1kyRnNiR0poWTJzZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMlZ1Y1hWbGRXVkRZV3hzWW1GamF5Z3VMaTRwT2lCWmIzVWdZMkZzYkdWa0lHQnpaWFJRY205d2MyQXNJR0J5WlhCc1lXTmxVSEp2Y0hOZ0xDQW5JQ3NnSjJCelpYUlRkR0YwWldBc0lHQnlaWEJzWVdObFUzUmhkR1ZnTENCdmNpQmdabTl5WTJWVmNHUmhkR1ZnSUhkcGRHZ2dZU0JqWVd4c1ltRmpheUIwYUdGMElDY2dLeUFuYVhOdVhGd25kQ0JqWVd4c1lXSnNaUzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2FXWWdLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTXBJSHRjYmlBZ0lDQWdJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTXVjSFZ6YUNoallXeHNZbUZqYXlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZERZV3hzWW1GamEzTWdQU0JiWTJGc2JHSmhZMnRkTzF4dUlDQWdJSDFjYmlBZ0lDQmxibkYxWlhWbFZYQmtZWFJsS0dsdWRHVnlibUZzU1c1emRHRnVZMlVwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkdiM0pqWlhNZ1lXNGdkWEJrWVhSbExpQlVhR2x6SUhOb2IzVnNaQ0J2Ym14NUlHSmxJR2x1ZG05clpXUWdkMmhsYmlCcGRDQnBjeUJyYm05M2JpQjNhWFJvWEc0Z0lDQXFJR05sY25SaGFXNTBlU0IwYUdGMElIZGxJR0Z5WlNBcUttNXZkQ29xSUdsdUlHRWdSRTlOSUhSeVlXNXpZV04wYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJaYjNVZ2JXRjVJSGRoYm5RZ2RHOGdZMkZzYkNCMGFHbHpJSGRvWlc0Z2VXOTFJR3R1YjNjZ2RHaGhkQ0J6YjIxbElHUmxaWEJsY2lCaGMzQmxZM1FnYjJZZ2RHaGxYRzRnSUNBcUlHTnZiWEJ2Ym1WdWRDZHpJSE4wWVhSbElHaGhjeUJqYUdGdVoyVmtJR0oxZENCZ2MyVjBVM1JoZEdWZ0lIZGhjeUJ1YjNRZ1kyRnNiR1ZrTGx4dUlDQWdLbHh1SUNBZ0tpQlVhR2x6SUhkcGJHd2dibTkwSUdsdWRtOXJaU0JnYzJodmRXeGtRMjl0Y0c5dVpXNTBWWEJrWVhSbFlDd2dZblYwSUdsMElIZHBiR3dnYVc1MmIydGxYRzRnSUNBcUlHQmpiMjF3YjI1bGJuUlhhV3hzVlhCa1lYUmxZQ0JoYm1RZ1lHTnZiWEJ2Ym1WdWRFUnBaRlZ3WkdGMFpXQXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1WaFkzUkRiR0Z6YzMwZ2NIVmliR2xqU1c1emRHRnVZMlVnVkdobElHbHVjM1JoYm1ObElIUm9ZWFFnYzJodmRXeGtJSEpsY21WdVpHVnlMbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvdlhHNGdJR1Z1Y1hWbGRXVkdiM0pqWlZWd1pHRjBaVG9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdkbUZ5SUdsdWRHVnlibUZzU1c1emRHRnVZMlVnUFNCblpYUkpiblJsY201aGJFbHVjM1JoYm1ObFVtVmhaSGxHYjNKVmNHUmhkR1VvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJQ2RtYjNKalpWVndaR0YwWlNjcE8xeHVYRzRnSUNBZ2FXWWdLQ0ZwYm5SbGNtNWhiRWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXNTBaWEp1WVd4SmJuTjBZVzVqWlM1ZmNHVnVaR2x1WjBadmNtTmxWWEJrWVhSbElEMGdkSEoxWlR0Y2JseHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9hVzUwWlhKdVlXeEpibk4wWVc1alpTazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGNHeGhZMlZ6SUdGc2JDQnZaaUIwYUdVZ2MzUmhkR1V1SUVGc2QyRjVjeUIxYzJVZ2RHaHBjeUJ2Y2lCZ2MyVjBVM1JoZEdWZ0lIUnZJRzExZEdGMFpTQnpkR0YwWlM1Y2JpQWdJQ29nV1c5MUlITm9iM1ZzWkNCMGNtVmhkQ0JnZEdocGN5NXpkR0YwWldBZ1lYTWdhVzF0ZFhSaFlteGxMbHh1SUNBZ0tseHVJQ0FnS2lCVWFHVnlaU0JwY3lCdWJ5Qm5kV0Z5WVc1MFpXVWdkR2hoZENCZ2RHaHBjeTV6ZEdGMFpXQWdkMmxzYkNCaVpTQnBiVzFsWkdsaGRHVnNlU0IxY0dSaGRHVmtMQ0J6YjF4dUlDQWdLaUJoWTJObGMzTnBibWNnWUhSb2FYTXVjM1JoZEdWZ0lHRm1kR1Z5SUdOaGJHeHBibWNnZEdocGN5QnRaWFJvYjJRZ2JXRjVJSEpsZEhWeWJpQjBhR1VnYjJ4a0lIWmhiSFZsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052YlhCc1pYUmxVM1JoZEdVZ1RtVjRkQ0J6ZEdGMFpTNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFVtVndiR0ZqWlZOMFlYUmxPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJR052YlhCc1pYUmxVM1JoZEdVcElIdGNiaUFnSUNCMllYSWdhVzUwWlhKdVlXeEpibk4wWVc1alpTQTlJR2RsZEVsdWRHVnlibUZzU1c1emRHRnVZMlZTWldGa2VVWnZjbFZ3WkdGMFpTaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0ozSmxjR3hoWTJWVGRHRjBaU2NwTzF4dVhHNGdJQ0FnYVdZZ0tDRnBiblJsY201aGJFbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVc1MFpYSnVZV3hKYm5OMFlXNWpaUzVmY0dWdVpHbHVaMU4wWVhSbFVYVmxkV1VnUFNCYlkyOXRjR3hsZEdWVGRHRjBaVjA3WEc0Z0lDQWdhVzUwWlhKdVlXeEpibk4wWVc1alpTNWZjR1Z1WkdsdVoxSmxjR3hoWTJWVGRHRjBaU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQmxibkYxWlhWbFZYQmtZWFJsS0dsdWRHVnlibUZzU1c1emRHRnVZMlVwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRaWFJ6SUdFZ2MzVmljMlYwSUc5bUlIUm9aU0J6ZEdGMFpTNGdWR2hwY3lCdmJteDVJR1Y0YVhOMGN5QmlaV05oZFhObElGOXdaVzVrYVc1blUzUmhkR1VnYVhOY2JpQWdJQ29nYVc1MFpYSnVZV3d1SUZSb2FYTWdjSEp2ZG1sa1pYTWdZU0J0WlhKbmFXNW5JSE4wY21GMFpXZDVJSFJvWVhRZ2FYTWdibTkwSUdGMllXbHNZV0pzWlNCMGJ5QmtaV1Z3WEc0Z0lDQXFJSEJ5YjNCbGNuUnBaWE1nZDJocFkyZ2dhWE1nWTI5dVpuVnphVzVuTGlCVVQwUlBPaUJGZUhCdmMyVWdjR1Z1WkdsdVoxTjBZWFJsSUc5eUlHUnZiaWQwSUhWelpTQnBkRnh1SUNBZ0tpQmtkWEpwYm1jZ2RHaGxJRzFsY21kbExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyeGhjM045SUhCMVlteHBZMGx1YzNSaGJtTmxJRlJvWlNCcGJuTjBZVzVqWlNCMGFHRjBJSE5vYjNWc1pDQnlaWEpsYm1SbGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUhCaGNuUnBZV3hUZEdGMFpTQk9aWGgwSUhCaGNuUnBZV3dnYzNSaGRHVWdkRzhnWW1VZ2JXVnlaMlZrSUhkcGRHZ2djM1JoZEdVdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pXNXhkV1YxWlZObGRGTjBZWFJsT2lCbWRXNWpkR2x2YmlBb2NIVmliR2xqU1c1emRHRnVZMlVzSUhCaGNuUnBZV3hUZEdGMFpTa2dlMXh1SUNBZ0lIWmhjaUJwYm5SbGNtNWhiRWx1YzNSaGJtTmxJRDBnWjJWMFNXNTBaWEp1WVd4SmJuTjBZVzVqWlZKbFlXUjVSbTl5VlhCa1lYUmxLSEIxWW14cFkwbHVjM1JoYm1ObExDQW5jMlYwVTNSaGRHVW5LVHRjYmx4dUlDQWdJR2xtSUNnaGFXNTBaWEp1WVd4SmJuTjBZVzVqWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCeGRXVjFaU0E5SUdsdWRHVnlibUZzU1c1emRHRnVZMlV1WDNCbGJtUnBibWRUZEdGMFpWRjFaWFZsSUh4OElDaHBiblJsY201aGJFbHVjM1JoYm1ObExsOXdaVzVrYVc1blUzUmhkR1ZSZFdWMVpTQTlJRnRkS1R0Y2JpQWdJQ0J4ZFdWMVpTNXdkWE5vS0hCaGNuUnBZV3hUZEdGMFpTazdYRzVjYmlBZ0lDQmxibkYxWlhWbFZYQmtZWFJsS0dsdWRHVnlibUZzU1c1emRHRnVZMlVwTzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRaWFJ6SUdFZ2MzVmljMlYwSUc5bUlIUm9aU0J3Y205d2N5NWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRTWldGamRFTnNZWE56ZlNCd2RXSnNhV05KYm5OMFlXNWpaU0JVYUdVZ2FXNXpkR0Z1WTJVZ2RHaGhkQ0J6YUc5MWJHUWdjbVZ5Wlc1a1pYSXVYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCd1lYSjBhV0ZzVUhKdmNITWdVM1ZpYzJWMElHOW1JSFJvWlNCdVpYaDBJSEJ5YjNCekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWVFpYUlFjbTl3Y3pvZ1puVnVZM1JwYjI0Z0tIQjFZbXhwWTBsdWMzUmhibU5sTENCd1lYSjBhV0ZzVUhKdmNITXBJSHRjYmlBZ0lDQjJZWElnYVc1MFpYSnVZV3hKYm5OMFlXNWpaU0E5SUdkbGRFbHVkR1Z5Ym1Gc1NXNXpkR0Z1WTJWU1pXRmtlVVp2Y2xWd1pHRjBaU2h3ZFdKc2FXTkpibk4wWVc1alpTd2dKM05sZEZCeWIzQnpKeWs3WEc0Z0lDQWdhV1lnS0NGcGJuUmxjbTVoYkVsdWMzUmhibU5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNBZ0lGSmxZV04wVlhCa1lYUmxVWFZsZFdVdVpXNXhkV1YxWlZObGRGQnliM0J6U1c1MFpYSnVZV3dvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU3dnY0dGeWRHbGhiRkJ5YjNCektUdGNiaUFnZlN4Y2JseHVJQ0JsYm5GMVpYVmxVMlYwVUhKdmNITkpiblJsY201aGJEb2dablZ1WTNScGIyNGdLR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXNJSEJoY25ScFlXeFFjbTl3Y3lrZ2UxeHVJQ0FnSUhaaGNpQjBiM0JNWlhabGJGZHlZWEJ3WlhJZ1BTQnBiblJsY201aGJFbHVjM1JoYm1ObExsOTBiM0JNWlhabGJGZHlZWEJ3WlhJN1hHNGdJQ0FnSVhSdmNFeGxkbVZzVjNKaGNIQmxjaUEvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZHpaWFJRY205d2N5Z3VMaTRwT2lCWmIzVWdZMkZzYkdWa0lHQnpaWFJRY205d2MyQWdiMjRnWVNBbklDc2dKMk52YlhCdmJtVnVkQ0IzYVhSb0lHRWdjR0Z5Wlc1MExpQlVhR2x6SUdseklHRnVJR0Z1ZEdrdGNHRjBkR1Z5YmlCemFXNWpaU0J3Y205d2N5QjNhV3hzSUNjZ0t5QW5aMlYwSUhKbFlXTjBhWFpsYkhrZ2RYQmtZWFJsWkNCM2FHVnVJSEpsYm1SbGNtVmtMaUJKYm5OMFpXRmtMQ0JqYUdGdVoyVWdkR2hsSUc5M2JtVnlYRnduY3lBbklDc2dKMkJ5Wlc1a1pYSmdJRzFsZEdodlpDQjBieUJ3WVhOeklIUm9aU0JqYjNKeVpXTjBJSFpoYkhWbElHRnpJSEJ5YjNCeklIUnZJSFJvWlNCamIyMXdiMjVsYm5RZ0p5QXJJQ2QzYUdWeVpTQnBkQ0JwY3lCamNtVmhkR1ZrTGljcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUUxbGNtZGxJSGRwZEdnZ2RHaGxJSEJsYm1ScGJtY2daV3hsYldWdWRDQnBaaUJwZENCbGVHbHpkSE1zSUc5MGFHVnlkMmx6WlNCM2FYUm9JR1Y0YVhOMGFXNW5YRzRnSUNBZ0x5OGdaV3hsYldWdWRDQndjbTl3Y3k1Y2JpQWdJQ0IyWVhJZ2QzSmhjRVZzWlcxbGJuUWdQU0IwYjNCTVpYWmxiRmR5WVhCd1pYSXVYM0JsYm1ScGJtZEZiR1Z0Wlc1MElIeDhJSFJ2Y0V4bGRtVnNWM0poY0hCbGNpNWZZM1Z5Y21WdWRFVnNaVzFsYm5RN1hHNGdJQ0FnZG1GeUlHVnNaVzFsYm5RZ1BTQjNjbUZ3Uld4bGJXVnVkQzV3Y205d2N6dGNiaUFnSUNCMllYSWdjSEp2Y0hNZ1BTQmhjM05wWjI0b2UzMHNJR1ZzWlcxbGJuUXVjSEp2Y0hNc0lIQmhjblJwWVd4UWNtOXdjeWs3WEc0Z0lDQWdkRzl3VEdWMlpXeFhjbUZ3Y0dWeUxsOXdaVzVrYVc1blJXeGxiV1Z1ZENBOUlGSmxZV04wUld4bGJXVnVkQzVqYkc5dVpVRnVaRkpsY0d4aFkyVlFjbTl3Y3loM2NtRndSV3hsYldWdWRDd2dVbVZoWTNSRmJHVnRaVzUwTG1Oc2IyNWxRVzVrVW1Wd2JHRmpaVkJ5YjNCektHVnNaVzFsYm5Rc0lIQnliM0J6S1NrN1hHNWNiaUFnSUNCbGJuRjFaWFZsVlhCa1lYUmxLSFJ2Y0V4bGRtVnNWM0poY0hCbGNpazdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGNHeGhZMlZ6SUdGc2JDQnZaaUIwYUdVZ2NISnZjSE11WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1VtVmhZM1JEYkdGemMzMGdjSFZpYkdsalNXNXpkR0Z1WTJVZ1ZHaGxJR2x1YzNSaGJtTmxJSFJvWVhRZ2MyaHZkV3hrSUhKbGNtVnVaR1Z5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdjSEp2Y0hNZ1RtVjNJSEJ5YjNCekxseHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lHVnVjWFZsZFdWU1pYQnNZV05sVUhKdmNITTZJR1oxYm1OMGFXOXVJQ2h3ZFdKc2FXTkpibk4wWVc1alpTd2djSEp2Y0hNcElIdGNiaUFnSUNCMllYSWdhVzUwWlhKdVlXeEpibk4wWVc1alpTQTlJR2RsZEVsdWRHVnlibUZzU1c1emRHRnVZMlZTWldGa2VVWnZjbFZ3WkdGMFpTaHdkV0pzYVdOSmJuTjBZVzVqWlN3Z0ozSmxjR3hoWTJWUWNtOXdjeWNwTzF4dUlDQWdJR2xtSUNnaGFXNTBaWEp1WVd4SmJuTjBZVzVqWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmlBZ0lDQlNaV0ZqZEZWd1pHRjBaVkYxWlhWbExtVnVjWFZsZFdWU1pYQnNZV05sVUhKdmNITkpiblJsY201aGJDaHBiblJsY201aGJFbHVjM1JoYm1ObExDQndjbTl3Y3lrN1hHNGdJSDBzWEc1Y2JpQWdaVzV4ZFdWMVpWSmxjR3hoWTJWUWNtOXdjMGx1ZEdWeWJtRnNPaUJtZFc1amRHbHZiaUFvYVc1MFpYSnVZV3hKYm5OMFlXNWpaU3dnY0hKdmNITXBJSHRjYmlBZ0lDQjJZWElnZEc5d1RHVjJaV3hYY21Gd2NHVnlJRDBnYVc1MFpYSnVZV3hKYm5OMFlXNWpaUzVmZEc5d1RHVjJaV3hYY21Gd2NHVnlPMXh1SUNBZ0lDRjBiM0JNWlhabGJGZHlZWEJ3WlhJZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuY21Wd2JHRmpaVkJ5YjNCektDNHVMaWs2SUZsdmRTQmpZV3hzWldRZ1lISmxjR3hoWTJWUWNtOXdjMkFnYjI0Z1lTQW5JQ3NnSjJOdmJYQnZibVZ1ZENCM2FYUm9JR0VnY0dGeVpXNTBMaUJVYUdseklHbHpJR0Z1SUdGdWRHa3RjR0YwZEdWeWJpQnphVzVqWlNCd2NtOXdjeUIzYVd4c0lDY2dLeUFuWjJWMElISmxZV04wYVhabGJIa2dkWEJrWVhSbFpDQjNhR1Z1SUhKbGJtUmxjbVZrTGlCSmJuTjBaV0ZrTENCamFHRnVaMlVnZEdobElHOTNibVZ5WEZ3bmN5QW5JQ3NnSjJCeVpXNWtaWEpnSUcxbGRHaHZaQ0IwYnlCd1lYTnpJSFJvWlNCamIzSnlaV04wSUhaaGJIVmxJR0Z6SUhCeWIzQnpJSFJ2SUhSb1pTQmpiMjF3YjI1bGJuUWdKeUFySUNkM2FHVnlaU0JwZENCcGN5QmpjbVZoZEdWa0xpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUM4dklFMWxjbWRsSUhkcGRHZ2dkR2hsSUhCbGJtUnBibWNnWld4bGJXVnVkQ0JwWmlCcGRDQmxlR2x6ZEhNc0lHOTBhR1Z5ZDJselpTQjNhWFJvSUdWNGFYTjBhVzVuWEc0Z0lDQWdMeThnWld4bGJXVnVkQ0J3Y205d2N5NWNiaUFnSUNCMllYSWdkM0poY0VWc1pXMWxiblFnUFNCMGIzQk1aWFpsYkZkeVlYQndaWEl1WDNCbGJtUnBibWRGYkdWdFpXNTBJSHg4SUhSdmNFeGxkbVZzVjNKaGNIQmxjaTVmWTNWeWNtVnVkRVZzWlcxbGJuUTdYRzRnSUNBZ2RtRnlJR1ZzWlcxbGJuUWdQU0IzY21Gd1JXeGxiV1Z1ZEM1d2NtOXdjenRjYmlBZ0lDQjBiM0JNWlhabGJGZHlZWEJ3WlhJdVgzQmxibVJwYm1kRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU5zYjI1bFFXNWtVbVZ3YkdGalpWQnliM0J6S0hkeVlYQkZiR1Z0Wlc1MExDQlNaV0ZqZEVWc1pXMWxiblF1WTJ4dmJtVkJibVJTWlhCc1lXTmxVSEp2Y0hNb1pXeGxiV1Z1ZEN3Z2NISnZjSE1wS1R0Y2JseHVJQ0FnSUdWdWNYVmxkV1ZWY0dSaGRHVW9kRzl3VEdWMlpXeFhjbUZ3Y0dWeUtUdGNiaUFnZlN4Y2JseHVJQ0JsYm5GMVpYVmxSV3hsYldWdWRFbHVkR1Z5Ym1Gc09pQm1kVzVqZEdsdmJpQW9hVzUwWlhKdVlXeEpibk4wWVc1alpTd2dibVYzUld4bGJXVnVkQ2tnZTF4dUlDQWdJR2x1ZEdWeWJtRnNTVzV6ZEdGdVkyVXVYM0JsYm1ScGJtZEZiR1Z0Wlc1MElEMGdibVYzUld4bGJXVnVkRHRjYmlBZ0lDQmxibkYxWlhWbFZYQmtZWFJsS0dsdWRHVnlibUZzU1c1emRHRnVZMlVwTzF4dUlDQjlYRzVjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdVbVZoWTNSVmNHUmhkR1ZSZFdWMVpUc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBSZWFjdFVwZGF0ZXNcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RQZXJmID0gcmVxdWlyZSgnLi9SZWFjdFBlcmYnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBkaXJ0eUNvbXBvbmVudHMgPSBbXTtcbnZhciBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG52YXIgYXNhcEVucXVldWVkID0gZmFsc2U7XG5cbnZhciBiYXRjaGluZ1N0cmF0ZWd5ID0gbnVsbDtcblxuZnVuY3Rpb24gZW5zdXJlSW5qZWN0ZWQoKSB7XG4gICEoUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gJiYgYmF0Y2hpbmdTdHJhdGVneSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IGluamVjdCBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcyBhbmQgYmF0Y2hpbmcgJyArICdzdHJhdGVneScpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbn1cblxudmFyIE5FU1RFRF9VUERBVEVTID0ge1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoO1xuICB9LFxuICBjbG9zZTogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCAhPT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gQWRkaXRpb25hbCB1cGRhdGVzIHdlcmUgZW5xdWV1ZWQgYnkgY29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJzIG9yXG4gICAgICAvLyBzaW1pbGFyOyBiZWZvcmUgb3VyIG93biBVUERBVEVfUVVFVUVJTkcgd3JhcHBlciBjbG9zZXMsIHdlIHdhbnQgdG8gcnVuXG4gICAgICAvLyB0aGVzZSBuZXcgdXBkYXRlcyBzbyB0aGF0IGlmIEEncyBjb21wb25lbnREaWRVcGRhdGUgY2FsbHMgc2V0U3RhdGUgb25cbiAgICAgIC8vIEIsIEIgd2lsbCB1cGRhdGUgYmVmb3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRlciBwcm92aWRlZCB3aGVuIGNhbGxpbmdcbiAgICAgIC8vIHNldFN0YXRlLlxuICAgICAgZGlydHlDb21wb25lbnRzLnNwbGljZSgwLCB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCk7XG4gICAgICBmbHVzaEJhdGNoZWRVcGRhdGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpcnR5Q29tcG9uZW50cy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfVxufTtcblxudmFyIFVQREFURV9RVUVVRUlORyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpO1xuICB9LFxuICBjbG9zZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKTtcbiAgfVxufTtcblxudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW05FU1RFRF9VUERBVEVTLCBVUERBVEVfUVVFVUVJTkddO1xuXG5mdW5jdGlvbiBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gbnVsbDtcbiAgdGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbiAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCggLyogZm9yY2VIVE1MICovZmFsc2UpO1xufVxuXG5hc3NpZ24oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLk1peGluLCB7XG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gbnVsbDtcbiAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKTtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBudWxsO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IG51bGw7XG4gIH0sXG5cbiAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEpIHtcbiAgICAvLyBFc3NlbnRpYWxseSBjYWxscyBgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtKG1ldGhvZCwgc2NvcGUsIGEpYFxuICAgIC8vIHdpdGggdGhpcyB0cmFuc2FjdGlvbidzIHdyYXBwZXJzIGFyb3VuZCBpdC5cbiAgICByZXR1cm4gVHJhbnNhY3Rpb24uTWl4aW4ucGVyZm9ybS5jYWxsKHRoaXMsIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSwgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgbWV0aG9kLCBzY29wZSwgYSk7XG4gIH1cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbik7XG5cbmZ1bmN0aW9uIGJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG4gIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpO1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBtb3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS5cbiAqL1xuZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7XG4gIHJldHVybiBjMS5fbW91bnRPcmRlciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5mdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFuc2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3RoO1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cXCdzIHN0b3JlZCBkaXJ0eS1jb21wb25lbnRzIGxlbmd0aCAoJXMpIHRvICcgKyAnbWF0Y2ggZGlydHktY29tcG9uZW50cyBhcnJheSBsZW5ndGggKCVzKS4nLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3RcbiAgLy8gYWx3YXlzIC0tIHNlZSBzaG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29uY2lsZVxuICAvLyB0aGVtIGJlZm9yZSB0aGVpciBjaGlsZHJlbiBieSBzb3J0aW5nIHRoZSBhcnJheS5cbiAgZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBhcmF0b3IpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAvLyBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBseSwgaXQgd2lsbCBzdGlsbFxuICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUgdGhhdCBpdCBoYXMgY2xlYXJlZCBpdHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kXG4gICAgLy8gdGhhdCBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaXMgYSBub29wLlxuICAgIHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVudHNbaV07XG5cbiAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBlbnF1ZXVlIGFueSBuZXcgdXBkYXRlcywgd2VcbiAgICAvLyBzaG91bGRuJ3QgZXhlY3V0ZSB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBzb1xuICAgIC8vIHN0YXNoIHRoZSBjYWxsYmFja3MgZmlyc3RcbiAgICB2YXIgY2FsbGJhY2tzID0gY29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzO1xuICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cbiAgICBSZWFjdFJlY29uY2lsZXIucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KGNvbXBvbmVudCwgdHJhbnNhY3Rpb24ucmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuXG4gICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFja3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrc1tqXSwgY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgZmx1c2hCYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbidzIHdyYXBwZXJzIHdpbGwgY2xlYXIgdGhlIGRpcnR5Q29tcG9uZW50c1xuICAvLyBhcnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRlcyBlbnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLixcbiAgLy8gY29tcG9uZW50RGlkVXBkYXRlKSBidXQgd2UgbmVlZCB0byBjaGVjayBoZXJlIHRvbyBpbiBvcmRlciB0byBjYXRjaFxuICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgYXNhcCBjYWxscy5cbiAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7XG4gICAgaWYgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCk7XG4gICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFuc2FjdGlvbik7XG4gICAgICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuICAgIH1cblxuICAgIGlmIChhc2FwRW5xdWV1ZWQpIHtcbiAgICAgIGFzYXBFbnF1ZXVlZCA9IGZhbHNlO1xuICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVldWU7XG4gICAgICBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gICAgICBxdWV1ZS5ub3RpZnlBbGwoKTtcbiAgICAgIENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7XG4gICAgfVxuICB9XG59O1xuZmx1c2hCYXRjaGVkVXBkYXRlcyA9IFJlYWN0UGVyZi5tZWFzdXJlKCdSZWFjdFVwZGF0ZXMnLCAnZmx1c2hCYXRjaGVkVXBkYXRlcycsIGZsdXNoQmF0Y2hlZFVwZGF0ZXMpO1xuXG4vKipcbiAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRpbmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYVxuICogbGlzdCBvZiBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSByZXJlbmRlciBvY2N1cnMuXG4gKi9cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG5cbiAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRvcC1sZXZlbCB1cGRhdGVcbiAgLy8gZnVuY3Rpb24sIGxpa2Ugc2V0UHJvcHMsIHNldFN0YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG4gIC8vIGRlc3RydWN0aW9uIG9mIHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQgaW4gUmVhY3RNb3VudC4pXG5cbiAgaWYgKCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBjb21wb25lbnQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG59XG5cbi8qKlxuICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xlLiBUaHJvd3NcbiAqIGlmIG5vIHVwZGF0ZXMgYXJlIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuXG4gKi9cbmZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEgY29udGV4dCB3aGVyZScgKyAndXBkYXRlcyBhcmUgbm90IGJlaW5nIGJhdGNoZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrLCBjb250ZXh0KTtcbiAgYXNhcEVucXVldWVkID0gdHJ1ZTtcbn1cblxudmFyIFJlYWN0VXBkYXRlc0luamVjdGlvbiA9IHtcbiAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uIChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xuICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChfYmF0Y2hpbmdTdHJhdGVneSkge1xuICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgYmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0cmF0ZWd5O1xuICB9XG59O1xuXG52YXIgUmVhY3RVcGRhdGVzID0ge1xuICAvKipcbiAgICogUmVhY3QgcmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9wZXJ0eSBpbiBvcmRlclxuICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxsLFxuXG4gIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcyxcbiAgZW5xdWV1ZVVwZGF0ZTogZW5xdWV1ZVVwZGF0ZSxcbiAgZmx1c2hCYXRjaGVkVXBkYXRlczogZmx1c2hCYXRjaGVkVXBkYXRlcyxcbiAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sXG4gIGFzYXA6IGFzYXBcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVzO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdlVtVmhZM1JWY0dSaGRHVnpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRkpsWVdOMFZYQmtZWFJsYzF4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFTmhiR3hpWVdOclVYVmxkV1VnUFNCeVpYRjFhWEpsS0NjdUwwTmhiR3hpWVdOclVYVmxkV1VuS1R0Y2JuWmhjaUJRYjI5c1pXUkRiR0Z6Y3lBOUlISmxjWFZwY21Vb0p5NHZVRzl2YkdWa1EyeGhjM01uS1R0Y2JuWmhjaUJTWldGamRGQmxjbVlnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUdWeVppY3BPMXh1ZG1GeUlGSmxZV04wVW1WamIyNWphV3hsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSU1pXTnZibU5wYkdWeUp5azdYRzUyWVhJZ1ZISmhibk5oWTNScGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDFSeVlXNXpZV04wYVc5dUp5azdYRzVjYm5aaGNpQmhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDY3VMMDlpYW1WamRDNWhjM05wWjI0bktUdGNiblpoY2lCcGJuWmhjbWxoYm5RZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUW5LVHRjYmx4dWRtRnlJR1JwY25SNVEyOXRjRzl1Wlc1MGN5QTlJRnRkTzF4dWRtRnlJR0Z6WVhCRFlXeHNZbUZqYTFGMVpYVmxJRDBnUTJGc2JHSmhZMnRSZFdWMVpTNW5aWFJRYjI5c1pXUW9LVHRjYm5aaGNpQmhjMkZ3Ulc1eGRXVjFaV1FnUFNCbVlXeHpaVHRjYmx4dWRtRnlJR0poZEdOb2FXNW5VM1J5WVhSbFoza2dQU0J1ZFd4c08xeHVYRzVtZFc1amRHbHZiaUJsYm5OMWNtVkpibXBsWTNSbFpDZ3BJSHRjYmlBZ0lTaFNaV0ZqZEZWd1pHRjBaWE11VW1WaFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiaUFtSmlCaVlYUmphR2x1WjFOMGNtRjBaV2Q1S1NBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRGVndaR0YwWlhNNklHMTFjM1FnYVc1cVpXTjBJR0VnY21WamIyNWphV3hsSUhSeVlXNXpZV04wYVc5dUlHTnNZWE56SUdGdVpDQmlZWFJqYUdsdVp5QW5JQ3NnSjNOMGNtRjBaV2Q1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1ZlZ4dVhHNTJZWElnVGtWVFZFVkVYMVZRUkVGVVJWTWdQU0I3WEc0Z0lHbHVhWFJwWVd4cGVtVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxtUnBjblI1UTI5dGNHOXVaVzUwYzB4bGJtZDBhQ0E5SUdScGNuUjVRMjl0Y0c5dVpXNTBjeTVzWlc1bmRHZzdYRzRnSUgwc1hHNGdJR05zYjNObE9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVaR2x5ZEhsRGIyMXdiMjVsYm5SelRHVnVaM1JvSUNFOVBTQmthWEowZVVOdmJYQnZibVZ1ZEhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBdkx5QkJaR1JwZEdsdmJtRnNJSFZ3WkdGMFpYTWdkMlZ5WlNCbGJuRjFaWFZsWkNCaWVTQmpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVWdhR0Z1Wkd4bGNuTWdiM0pjYmlBZ0lDQWdJQzh2SUhOcGJXbHNZWEk3SUdKbFptOXlaU0J2ZFhJZ2IzZHVJRlZRUkVGVVJWOVJWVVZWUlVsT1J5QjNjbUZ3Y0dWeUlHTnNiM05sY3l3Z2QyVWdkMkZ1ZENCMGJ5QnlkVzVjYmlBZ0lDQWdJQzh2SUhSb1pYTmxJRzVsZHlCMWNHUmhkR1Z6SUhOdklIUm9ZWFFnYVdZZ1FTZHpJR052YlhCdmJtVnVkRVJwWkZWd1pHRjBaU0JqWVd4c2N5QnpaWFJUZEdGMFpTQnZibHh1SUNBZ0lDQWdMeThnUWl3Z1FpQjNhV3hzSUhWd1pHRjBaU0JpWldadmNtVWdkR2hsSUdOaGJHeGlZV05ySUVFbmN5QjFjR1JoZEdWeUlIQnliM1pwWkdWa0lIZG9aVzRnWTJGc2JHbHVaMXh1SUNBZ0lDQWdMeThnYzJWMFUzUmhkR1V1WEc0Z0lDQWdJQ0JrYVhKMGVVTnZiWEJ2Ym1WdWRITXVjM0JzYVdObEtEQXNJSFJvYVhNdVpHbHlkSGxEYjIxd2IyNWxiblJ6VEdWdVozUm9LVHRjYmlBZ0lDQWdJR1pzZFhOb1FtRjBZMmhsWkZWd1pHRjBaWE1vS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdaR2x5ZEhsRGIyMXdiMjVsYm5SekxteGxibWQwYUNBOUlEQTdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ1ZWQkVRVlJGWDFGVlJWVkZTVTVISUQwZ2UxeHVJQ0JwYm1sMGFXRnNhWHBsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTVqWVd4c1ltRmphMUYxWlhWbExuSmxjMlYwS0NrN1hHNGdJSDBzWEc0Z0lHTnNiM05sT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTVqWVd4c1ltRmphMUYxWlhWbExtNXZkR2xtZVVGc2JDZ3BPMXh1SUNCOVhHNTlPMXh1WEc1MllYSWdWRkpCVGxOQlExUkpUMDVmVjFKQlVGQkZVbE1nUFNCYlRrVlRWRVZFWDFWUVJFRlVSVk1zSUZWUVJFRlVSVjlSVlVWVlJVbE9SMTA3WEc1Y2JtWjFibU4wYVc5dUlGSmxZV04wVlhCa1lYUmxjMFpzZFhOb1ZISmhibk5oWTNScGIyNG9LU0I3WEc0Z0lIUm9hWE11Y21WcGJtbDBhV0ZzYVhwbFZISmhibk5oWTNScGIyNG9LVHRjYmlBZ2RHaHBjeTVrYVhKMGVVTnZiWEJ2Ym1WdWRITk1aVzVuZEdnZ1BTQnVkV3hzTzF4dUlDQjBhR2x6TG1OaGJHeGlZV05yVVhWbGRXVWdQU0JEWVd4c1ltRmphMUYxWlhWbExtZGxkRkJ2YjJ4bFpDZ3BPMXh1SUNCMGFHbHpMbkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1SUQwZ1VtVmhZM1JWY0dSaGRHVnpMbEpsWVdOMFVtVmpiMjVqYVd4bFZISmhibk5oWTNScGIyNHVaMlYwVUc5dmJHVmtLQ0F2S2lCbWIzSmpaVWhVVFV3Z0tpOW1ZV3h6WlNrN1hHNTlYRzVjYm1GemMybG5iaWhTWldGamRGVndaR0YwWlhOR2JIVnphRlJ5WVc1ellXTjBhVzl1TG5CeWIzUnZkSGx3WlN3Z1ZISmhibk5oWTNScGIyNHVUV2w0YVc0c0lIdGNiaUFnWjJWMFZISmhibk5oWTNScGIyNVhjbUZ3Y0dWeWN6b2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlVVa0ZPVTBGRFZFbFBUbDlYVWtGUVVFVlNVenRjYmlBZ2ZTeGNibHh1SUNCa1pYTjBjblZqZEc5eU9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdkR2hwY3k1a2FYSjBlVU52YlhCdmJtVnVkSE5NWlc1bmRHZ2dQU0J1ZFd4c08xeHVJQ0FnSUVOaGJHeGlZV05yVVhWbGRXVXVjbVZzWldGelpTaDBhR2x6TG1OaGJHeGlZV05yVVhWbGRXVXBPMXh1SUNBZ0lIUm9hWE11WTJGc2JHSmhZMnRSZFdWMVpTQTlJRzUxYkd3N1hHNGdJQ0FnVW1WaFkzUlZjR1JoZEdWekxsSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI0dWNtVnNaV0Z6WlNoMGFHbHpMbkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1S1R0Y2JpQWdJQ0IwYUdsekxuSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVJRDBnYm5Wc2JEdGNiaUFnZlN4Y2JseHVJQ0J3WlhKbWIzSnRPaUJtZFc1amRHbHZiaUFvYldWMGFHOWtMQ0J6WTI5d1pTd2dZU2tnZTF4dUlDQWdJQzh2SUVWemMyVnVkR2xoYkd4NUlHTmhiR3h6SUdCMGFHbHpMbkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1TG5CbGNtWnZjbTBvYldWMGFHOWtMQ0J6WTI5d1pTd2dZU2xnWEc0Z0lDQWdMeThnZDJsMGFDQjBhR2x6SUhSeVlXNXpZV04wYVc5dUozTWdkM0poY0hCbGNuTWdZWEp2ZFc1a0lHbDBMbHh1SUNBZ0lISmxkSFZ5YmlCVWNtRnVjMkZqZEdsdmJpNU5hWGhwYmk1d1pYSm1iM0p0TG1OaGJHd29kR2hwY3l3Z2RHaHBjeTV5WldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2Ymk1d1pYSm1iM0p0TENCMGFHbHpMbkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1TENCdFpYUm9iMlFzSUhOamIzQmxMQ0JoS1R0Y2JpQWdmVnh1ZlNrN1hHNWNibEJ2YjJ4bFpFTnNZWE56TG1Ga1pGQnZiMnhwYm1kVWJ5aFNaV0ZqZEZWd1pHRjBaWE5HYkhWemFGUnlZVzV6WVdOMGFXOXVLVHRjYmx4dVpuVnVZM1JwYjI0Z1ltRjBZMmhsWkZWd1pHRjBaWE1vWTJGc2JHSmhZMnNzSUdFc0lHSXNJR01zSUdRc0lHVXBJSHRjYmlBZ1pXNXpkWEpsU1c1cVpXTjBaV1FvS1R0Y2JpQWdZbUYwWTJocGJtZFRkSEpoZEdWbmVTNWlZWFJqYUdWa1ZYQmtZWFJsY3loallXeHNZbUZqYXl3Z1lTd2dZaXdnWXl3Z1pDd2daU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRWEp5WVhrZ1kyOXRjR0Z5WVhSdmNpQm1iM0lnVW1WaFkzUkRiMjF3YjI1bGJuUnpJR0o1SUcxdmRXNTBJRzl5WkdWeWFXNW5MbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGIyMXdiMjVsYm5SOUlHTXhJR1pwY25OMElHTnZiWEJ2Ym1WdWRDQjViM1VuY21VZ1kyOXRjR0Z5YVc1blhHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFEyOXRjRzl1Wlc1MGZTQmpNaUJ6WldOdmJtUWdZMjl0Y0c5dVpXNTBJSGx2ZFNkeVpTQmpiMjF3WVhKcGJtZGNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnVW1WMGRYSnVJSFpoYkhWbElIVnpZV0pzWlNCaWVTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyOXlkQ2dwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJ0YjNWdWRFOXlaR1Z5UTI5dGNHRnlZWFJ2Y2loak1Td2dZeklwSUh0Y2JpQWdjbVYwZFhKdUlHTXhMbDl0YjNWdWRFOXlaR1Z5SUMwZ1l6SXVYMjF2ZFc1MFQzSmtaWEk3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEoxYmtKaGRHTm9aV1JWY0dSaGRHVnpLSFJ5WVc1ellXTjBhVzl1S1NCN1hHNGdJSFpoY2lCc1pXNGdQU0IwY21GdWMyRmpkR2x2Ymk1a2FYSjBlVU52YlhCdmJtVnVkSE5NWlc1bmRHZzdYRzRnSUNFb2JHVnVJRDA5UFNCa2FYSjBlVU52YlhCdmJtVnVkSE11YkdWdVozUm9LU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZlSEJsWTNSbFpDQm1iSFZ6YUNCMGNtRnVjMkZqZEdsdmJseGNKM01nYzNSdmNtVmtJR1JwY25SNUxXTnZiWEJ2Ym1WdWRITWdiR1Z1WjNSb0lDZ2xjeWtnZEc4Z0p5QXJJQ2R0WVhSamFDQmthWEowZVMxamIyMXdiMjVsYm5SeklHRnljbUY1SUd4bGJtZDBhQ0FvSlhNcExpY3NJR3hsYml3Z1pHbHlkSGxEYjIxd2IyNWxiblJ6TG14bGJtZDBhQ2tnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUM4dklGTnBibU5sSUhKbFkyOXVZMmxzYVc1bklHRWdZMjl0Y0c5dVpXNTBJR2hwWjJobGNpQnBiaUIwYUdVZ2IzZHVaWElnYUdsbGNtRnlZMmg1SUhWemRXRnNiSGtnS0c1dmRGeHVJQ0F2THlCaGJIZGhlWE1nTFMwZ2MyVmxJSE5vYjNWc1pFTnZiWEJ2Ym1WdWRGVndaR0YwWlNncEtTQjNhV3hzSUhKbFkyOXVZMmxzWlNCamFHbHNaSEpsYml3Z2NtVmpiMjVqYVd4bFhHNGdJQzh2SUhSb1pXMGdZbVZtYjNKbElIUm9aV2x5SUdOb2FXeGtjbVZ1SUdKNUlITnZjblJwYm1jZ2RHaGxJR0Z5Y21GNUxseHVJQ0JrYVhKMGVVTnZiWEJ2Ym1WdWRITXVjMjl5ZENodGIzVnVkRTl5WkdWeVEyOXRjR0Z5WVhSdmNpazdYRzVjYmlBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnNaVzQ3SUdrckt5a2dlMXh1SUNBZ0lDOHZJRWxtSUdFZ1kyOXRjRzl1Wlc1MElHbHpJSFZ1Ylc5MWJuUmxaQ0JpWldadmNtVWdjR1Z1WkdsdVp5QmphR0Z1WjJWeklHRndjR3g1TENCcGRDQjNhV3hzSUhOMGFXeHNYRzRnSUNBZ0x5OGdZbVVnYUdWeVpTd2dZblYwSUhkbElHRnpjM1Z0WlNCMGFHRjBJR2wwSUdoaGN5QmpiR1ZoY21Wa0lHbDBjeUJmY0dWdVpHbHVaME5oYkd4aVlXTnJjeUJoYm1SY2JpQWdJQ0F2THlCMGFHRjBJSEJsY21admNtMVZjR1JoZEdWSlprNWxZMlZ6YzJGeWVTQnBjeUJoSUc1dmIzQXVYRzRnSUNBZ2RtRnlJR052YlhCdmJtVnVkQ0E5SUdScGNuUjVRMjl0Y0c5dVpXNTBjMXRwWFR0Y2JseHVJQ0FnSUM4dklFbG1JSEJsY21admNtMVZjR1JoZEdWSlprNWxZMlZ6YzJGeWVTQm9ZWEJ3Wlc1eklIUnZJR1Z1Y1hWbGRXVWdZVzU1SUc1bGR5QjFjR1JoZEdWekxDQjNaVnh1SUNBZ0lDOHZJSE5vYjNWc1pHNG5kQ0JsZUdWamRYUmxJSFJvWlNCallXeHNZbUZqYTNNZ2RXNTBhV3dnZEdobElHNWxlSFFnY21WdVpHVnlJR2hoY0hCbGJuTXNJSE52WEc0Z0lDQWdMeThnYzNSaGMyZ2dkR2hsSUdOaGJHeGlZV05yY3lCbWFYSnpkRnh1SUNBZ0lIWmhjaUJqWVd4c1ltRmphM01nUFNCamIyMXdiMjVsYm5RdVgzQmxibVJwYm1kRFlXeHNZbUZqYTNNN1hHNGdJQ0FnWTI5dGNHOXVaVzUwTGw5d1pXNWthVzVuUTJGc2JHSmhZMnR6SUQwZ2JuVnNiRHRjYmx4dUlDQWdJRkpsWVdOMFVtVmpiMjVqYVd4bGNpNXdaWEptYjNKdFZYQmtZWFJsU1daT1pXTmxjM05oY25rb1kyOXRjRzl1Wlc1MExDQjBjbUZ1YzJGamRHbHZiaTV5WldOdmJtTnBiR1ZVY21GdWMyRmpkR2x2YmlrN1hHNWNiaUFnSUNCcFppQW9ZMkZzYkdKaFkydHpLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tIWmhjaUJxSUQwZ01Ec2dhaUE4SUdOaGJHeGlZV05yY3k1c1pXNW5kR2c3SUdvckt5a2dlMXh1SUNBZ0lDQWdJQ0IwY21GdWMyRmpkR2x2Ymk1allXeHNZbUZqYTFGMVpYVmxMbVZ1Y1hWbGRXVW9ZMkZzYkdKaFkydHpXMnBkTENCamIyMXdiMjVsYm5RdVoyVjBVSFZpYkdsalNXNXpkR0Z1WTJVb0tTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNiblpoY2lCbWJIVnphRUpoZEdOb1pXUlZjR1JoZEdWeklEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQXZMeUJTWldGamRGVndaR0YwWlhOR2JIVnphRlJ5WVc1ellXTjBhVzl1SjNNZ2QzSmhjSEJsY25NZ2QybHNiQ0JqYkdWaGNpQjBhR1VnWkdseWRIbERiMjF3YjI1bGJuUnpYRzRnSUM4dklHRnljbUY1SUdGdVpDQndaWEptYjNKdElHRnVlU0IxY0dSaGRHVnpJR1Z1Y1hWbGRXVmtJR0o1SUcxdmRXNTBMWEpsWVdSNUlHaGhibVJzWlhKeklDaHBMbVV1TEZ4dUlDQXZMeUJqYjIxd2IyNWxiblJFYVdSVmNHUmhkR1VwSUdKMWRDQjNaU0J1WldWa0lIUnZJR05vWldOcklHaGxjbVVnZEc5dklHbHVJRzl5WkdWeUlIUnZJR05oZEdOb1hHNGdJQzh2SUhWd1pHRjBaWE1nWlc1eGRXVjFaV1FnWW5rZ2MyVjBVM1JoZEdVZ1kyRnNiR0poWTJ0eklHRnVaQ0JoYzJGd0lHTmhiR3h6TGx4dUlDQjNhR2xzWlNBb1pHbHlkSGxEYjIxd2IyNWxiblJ6TG14bGJtZDBhQ0I4ZkNCaGMyRndSVzV4ZFdWMVpXUXBJSHRjYmlBZ0lDQnBaaUFvWkdseWRIbERiMjF3YjI1bGJuUnpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhSeVlXNXpZV04wYVc5dUlEMGdVbVZoWTNSVmNHUmhkR1Z6Um14MWMyaFVjbUZ1YzJGamRHbHZiaTVuWlhSUWIyOXNaV1FvS1R0Y2JpQWdJQ0FnSUhSeVlXNXpZV04wYVc5dUxuQmxjbVp2Y20wb2NuVnVRbUYwWTJobFpGVndaR0YwWlhNc0lHNTFiR3dzSUhSeVlXNXpZV04wYVc5dUtUdGNiaUFnSUNBZ0lGSmxZV04wVlhCa1lYUmxjMFpzZFhOb1ZISmhibk5oWTNScGIyNHVjbVZzWldGelpTaDBjbUZ1YzJGamRHbHZiaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dGellYQkZibkYxWlhWbFpDa2dlMXh1SUNBZ0lDQWdZWE5oY0VWdWNYVmxkV1ZrSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0IyWVhJZ2NYVmxkV1VnUFNCaGMyRndRMkZzYkdKaFkydFJkV1YxWlR0Y2JpQWdJQ0FnSUdGellYQkRZV3hzWW1GamExRjFaWFZsSUQwZ1EyRnNiR0poWTJ0UmRXVjFaUzVuWlhSUWIyOXNaV1FvS1R0Y2JpQWdJQ0FnSUhGMVpYVmxMbTV2ZEdsbWVVRnNiQ2dwTzF4dUlDQWdJQ0FnUTJGc2JHSmhZMnRSZFdWMVpTNXlaV3hsWVhObEtIRjFaWFZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1bWJIVnphRUpoZEdOb1pXUlZjR1JoZEdWeklEMGdVbVZoWTNSUVpYSm1MbTFsWVhOMWNtVW9KMUpsWVdOMFZYQmtZWFJsY3ljc0lDZG1iSFZ6YUVKaGRHTm9aV1JWY0dSaGRHVnpKeXdnWm14MWMyaENZWFJqYUdWa1ZYQmtZWFJsY3lrN1hHNWNiaThxS2x4dUlDb2dUV0Z5YXlCaElHTnZiWEJ2Ym1WdWRDQmhjeUJ1WldWa2FXNW5JR0VnY21WeVpXNWtaWElzSUdGa1pHbHVaeUJoYmlCdmNIUnBiMjVoYkNCallXeHNZbUZqYXlCMGJ5QmhYRzRnS2lCc2FYTjBJRzltSUdaMWJtTjBhVzl1Y3lCM2FHbGphQ0IzYVd4c0lHSmxJR1Y0WldOMWRHVmtJRzl1WTJVZ2RHaGxJSEpsY21WdVpHVnlJRzlqWTNWeWN5NWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1pXNXhkV1YxWlZWd1pHRjBaU2hqYjIxd2IyNWxiblFwSUh0Y2JpQWdaVzV6ZFhKbFNXNXFaV04wWldRb0tUdGNibHh1SUNBdkx5QldZWEpwYjNWeklIQmhjblJ6SUc5bUlHOTFjaUJqYjJSbElDaHpkV05vSUdGeklGSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSjNOY2JpQWdMeThnWDNKbGJtUmxjbFpoYkdsa1lYUmxaRU52YlhCdmJtVnVkQ2tnWVhOemRXMWxJSFJvWVhRZ1kyRnNiSE1nZEc4Z2NtVnVaR1Z5SUdGeVpXNG5kQ0J1WlhOMFpXUTdYRzRnSUM4dklIWmxjbWxtZVNCMGFHRjBJSFJvWVhRbmN5QjBhR1VnWTJGelpTNGdLRlJvYVhNZ2FYTWdZMkZzYkdWa0lHSjVJR1ZoWTJnZ2RHOXdMV3hsZG1Wc0lIVndaR0YwWlZ4dUlDQXZMeUJtZFc1amRHbHZiaXdnYkdsclpTQnpaWFJRY205d2N5d2djMlYwVTNSaGRHVXNJR1p2Y21ObFZYQmtZWFJsTENCbGRHTXVPeUJqY21WaGRHbHZiaUJoYm1SY2JpQWdMeThnWkdWemRISjFZM1JwYjI0Z2IyWWdkRzl3TFd4bGRtVnNJR052YlhCdmJtVnVkSE1nYVhNZ1ozVmhjbVJsWkNCcGJpQlNaV0ZqZEUxdmRXNTBMaWxjYmx4dUlDQnBaaUFvSVdKaGRHTm9hVzVuVTNSeVlYUmxaM2t1YVhOQ1lYUmphR2x1WjFWd1pHRjBaWE1wSUh0Y2JpQWdJQ0JpWVhSamFHbHVaMU4wY21GMFpXZDVMbUpoZEdOb1pXUlZjR1JoZEdWektHVnVjWFZsZFdWVmNHUmhkR1VzSUdOdmJYQnZibVZ1ZENrN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNWNiaUFnWkdseWRIbERiMjF3YjI1bGJuUnpMbkIxYzJnb1kyOXRjRzl1Wlc1MEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCRmJuRjFaWFZsSUdFZ1kyRnNiR0poWTJzZ2RHOGdZbVVnY25WdUlHRjBJSFJvWlNCbGJtUWdiMllnZEdobElHTjFjbkpsYm5RZ1ltRjBZMmhwYm1jZ1kzbGpiR1V1SUZSb2NtOTNjMXh1SUNvZ2FXWWdibThnZFhCa1lYUmxjeUJoY21VZ1kzVnljbVZ1ZEd4NUlHSmxhVzVuSUhCbGNtWnZjbTFsWkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWVhOaGNDaGpZV3hzWW1GamF5d2dZMjl1ZEdWNGRDa2dlMXh1SUNBaFltRjBZMmhwYm1kVGRISmhkR1ZuZVM1cGMwSmhkR05vYVc1blZYQmtZWFJsY3lBL0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUJwYm5aaGNtbGhiblFvWm1Gc2MyVXNJQ2RTWldGamRGVndaR0YwWlhNdVlYTmhjRG9nUTJGdVhGd25kQ0JsYm5GMVpYVmxJR0Z1SUdGellYQWdZMkZzYkdKaFkyc2dhVzRnWVNCamIyNTBaWGgwSUhkb1pYSmxKeUFySUNkMWNHUmhkR1Z6SUdGeVpTQnViM1FnWW1WcGJtY2dZbUYwWTJobFpDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJR0Z6WVhCRFlXeHNZbUZqYTFGMVpYVmxMbVZ1Y1hWbGRXVW9ZMkZzYkdKaFkyc3NJR052Ym5SbGVIUXBPMXh1SUNCaGMyRndSVzV4ZFdWMVpXUWdQU0IwY25WbE8xeHVmVnh1WEc1MllYSWdVbVZoWTNSVmNHUmhkR1Z6U1c1cVpXTjBhVzl1SUQwZ2UxeHVJQ0JwYm1wbFkzUlNaV052Ym1OcGJHVlVjbUZ1YzJGamRHbHZiam9nWm5WdVkzUnBiMjRnS0ZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dUtTQjdYRzRnSUNBZ0lWSmxZMjl1WTJsc1pWUnlZVzV6WVdOMGFXOXVJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wVlhCa1lYUmxjem9nYlhWemRDQndjbTkyYVdSbElHRWdjbVZqYjI1amFXeGxJSFJ5WVc1ellXTjBhVzl1SUdOc1lYTnpKeWtnT2lCcGJuWmhjbWxoYm5Rb1ptRnNjMlVwSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUZKbFlXTjBWWEJrWVhSbGN5NVNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dUlEMGdVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjQ3WEc0Z0lIMHNYRzVjYmlBZ2FXNXFaV04wUW1GMFkyaHBibWRUZEhKaGRHVm5lVG9nWm5WdVkzUnBiMjRnS0Y5aVlYUmphR2x1WjFOMGNtRjBaV2Q1S1NCN1hHNGdJQ0FnSVY5aVlYUmphR2x1WjFOMGNtRjBaV2Q1SUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMUpsWVdOMFZYQmtZWFJsY3pvZ2JYVnpkQ0J3Y205MmFXUmxJR0VnWW1GMFkyaHBibWNnYzNSeVlYUmxaM2tuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lTaDBlWEJsYjJZZ1gySmhkR05vYVc1blUzUnlZWFJsWjNrdVltRjBZMmhsWkZWd1pHRjBaWE1nUFQwOUlDZG1kVzVqZEdsdmJpY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wVlhCa1lYUmxjem9nYlhWemRDQndjbTkyYVdSbElHRWdZbUYwWTJobFpGVndaR0YwWlhNb0tTQm1kVzVqZEdsdmJpY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FoS0hSNWNHVnZaaUJmWW1GMFkyaHBibWRUZEhKaGRHVm5lUzVwYzBKaGRHTm9hVzVuVlhCa1lYUmxjeUE5UFQwZ0oySnZiMnhsWVc0bktTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkU1pXRmpkRlZ3WkdGMFpYTTZJRzExYzNRZ2NISnZkbWxrWlNCaGJpQnBjMEpoZEdOb2FXNW5WWEJrWVhSbGN5QmliMjlzWldGdUlHRjBkSEpwWW5WMFpTY3BJRG9nYVc1MllYSnBZVzUwS0daaGJITmxLU0E2SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JpWVhSamFHbHVaMU4wY21GMFpXZDVJRDBnWDJKaGRHTm9hVzVuVTNSeVlYUmxaM2s3WEc0Z0lIMWNibjA3WEc1Y2JuWmhjaUJTWldGamRGVndaR0YwWlhNZ1BTQjdYRzRnSUM4cUtseHVJQ0FnS2lCU1pXRmpkQ0J5WldabGNtVnVZMlZ6SUdCU1pXRmpkRkpsWTI5dVkybHNaVlJ5WVc1ellXTjBhVzl1WUNCMWMybHVaeUIwYUdseklIQnliM0JsY25SNUlHbHVJRzl5WkdWeVhHNGdJQ0FxSUhSdklHRnNiRzkzSUdSbGNHVnVaR1Z1WTNrZ2FXNXFaV04wYVc5dUxseHVJQ0FnS2x4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUZKbFlXTjBVbVZqYjI1amFXeGxWSEpoYm5OaFkzUnBiMjQ2SUc1MWJHd3NYRzVjYmlBZ1ltRjBZMmhsWkZWd1pHRjBaWE02SUdKaGRHTm9aV1JWY0dSaGRHVnpMRnh1SUNCbGJuRjFaWFZsVlhCa1lYUmxPaUJsYm5GMVpYVmxWWEJrWVhSbExGeHVJQ0JtYkhWemFFSmhkR05vWldSVmNHUmhkR1Z6T2lCbWJIVnphRUpoZEdOb1pXUlZjR1JoZEdWekxGeHVJQ0JwYm1wbFkzUnBiMjQ2SUZKbFlXTjBWWEJrWVhSbGMwbHVhbVZqZEdsdmJpeGNiaUFnWVhOaGNEb2dZWE5oY0Z4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamRGVndaR0YwWlhNN0lsMTkiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgUmVhY3RWZXJzaW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICcwLjE0LjAnOyIsIihmdW5jdGlvbiAocHJvY2Vzcyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgU2ltcGxlRXZlbnRQbHVnaW5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudENvbnN0YW50cyA9IHJlcXVpcmUoJy4vRXZlbnRDb25zdGFudHMnKTtcbnZhciBFdmVudExpc3RlbmVyID0gcmVxdWlyZSgnZmJqcy9saWIvRXZlbnRMaXN0ZW5lcicpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgU3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0NsaXBib2FyZEV2ZW50Jyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG52YXIgU3ludGhldGljRm9jdXNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRm9jdXNFdmVudCcpO1xudmFyIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG52YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNEcmFnRXZlbnQnKTtcbnZhciBTeW50aGV0aWNUb3VjaEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNUb3VjaEV2ZW50Jyk7XG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xudmFyIFN5bnRoZXRpY1doZWVsRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1doZWVsRXZlbnQnKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZ2V0RXZlbnRDaGFyQ29kZSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRDaGFyQ29kZScpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIGtleU9mID0gcmVxdWlyZSgnZmJqcy9saWIva2V5T2YnKTtcblxudmFyIHRvcExldmVsVHlwZXMgPSBFdmVudENvbnN0YW50cy50b3BMZXZlbFR5cGVzO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgYWJvcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkFib3J0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25BYm9ydENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGJsdXI6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkJsdXI6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkJsdXJDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjYW5QbGF5OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DYW5QbGF5OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25DYW5QbGF5Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY2FuUGxheVRocm91Z2g6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkNhblBsYXlUaHJvdWdoOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25DYW5QbGF5VGhyb3VnaENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGNsaWNrOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25DbGljazogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ2xpY2tDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBjb250ZXh0TWVudToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ29udGV4dE1lbnU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkNvbnRleHRNZW51Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgY29weToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ29weTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uQ29weUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGN1dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uQ3V0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25DdXRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkb3VibGVDbGljazoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRG91YmxlQ2xpY2s6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRvdWJsZUNsaWNrQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZzoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZzogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdFbmQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdFbmQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdFbmRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnRW50ZXI6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdFbnRlcjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRHJhZ0VudGVyQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ0V4aXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyYWdFeGl0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnRXhpdENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyYWdMZWF2ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ0xlYXZlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25EcmFnTGVhdmVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkcmFnT3Zlcjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHJhZ092ZXI6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdPdmVyQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZHJhZ1N0YXJ0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25EcmFnU3RhcnQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyYWdTdGFydENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGRyb3A6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkRyb3A6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkRyb3BDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBkdXJhdGlvbkNoYW5nZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRHVyYXRpb25DaGFuZ2U6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkR1cmF0aW9uQ2hhbmdlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZW1wdGllZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRW1wdGllZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRW1wdGllZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGVuY3J5cHRlZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRW5jcnlwdGVkOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25FbmNyeXB0ZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBlbmRlZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uRW5kZWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkVuZGVkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgZXJyb3I6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkVycm9yOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25FcnJvckNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGZvY3VzOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Gb2N1czogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uRm9jdXNDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBpbnB1dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uSW5wdXQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbklucHV0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAga2V5RG93bjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uS2V5RG93bjogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uS2V5RG93bkNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGtleVByZXNzOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25LZXlQcmVzczogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uS2V5UHJlc3NDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBrZXlVcDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uS2V5VXA6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbktleVVwQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbG9hZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTG9hZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTG9hZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIGxvYWRlZERhdGE6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbkxvYWRlZERhdGE6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkxvYWRlZERhdGFDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBsb2FkZWRNZXRhZGF0YToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTG9hZGVkTWV0YWRhdGE6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkxvYWRlZE1ldGFkYXRhQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbG9hZFN0YXJ0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Mb2FkU3RhcnQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbkxvYWRTdGFydENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIC8vIE5vdGU6IFdlIGRvIG5vdCBhbGxvdyBsaXN0ZW5pbmcgdG8gbW91c2VPdmVyIGV2ZW50cy4gSW5zdGVhZCwgdXNlIHRoZVxuICAvLyBvbk1vdXNlRW50ZXIvb25Nb3VzZUxlYXZlIGNyZWF0ZWQgYnkgYEVudGVyTGVhdmVFdmVudFBsdWdpbmAuXG4gIG1vdXNlRG93bjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VEb3duOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Nb3VzZURvd25DYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBtb3VzZU1vdmU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbk1vdXNlTW92ZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uTW91c2VNb3ZlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgbW91c2VPdXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbk1vdXNlT3V0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Nb3VzZU91dENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIG1vdXNlT3Zlcjoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uTW91c2VPdmVyOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Nb3VzZU92ZXJDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBtb3VzZVVwOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Nb3VzZVVwOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Nb3VzZVVwQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcGFzdGU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblBhc3RlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25QYXN0ZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHBhdXNlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25QYXVzZTogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUGF1c2VDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBwbGF5OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25QbGF5OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25QbGF5Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcGxheWluZzoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uUGxheWluZzogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUGxheWluZ0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHByb2dyZXNzOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Qcm9ncmVzczogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uUHJvZ3Jlc3NDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICByYXRlQ2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25SYXRlQ2hhbmdlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25SYXRlQ2hhbmdlQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgcmVzZXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblJlc2V0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25SZXNldENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHNjcm9sbDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU2Nyb2xsOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25TY3JvbGxDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzZWVrZWQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblNlZWtlZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU2Vla2VkQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc2Vla2luZzoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU2Vla2luZzogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU2Vla2luZ0NhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHN0YWxsZWQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblN0YWxsZWQ6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblN0YWxsZWRDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICBzdWJtaXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblN1Ym1pdDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU3VibWl0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgc3VzcGVuZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uU3VzcGVuZDogdHJ1ZSB9KSxcbiAgICAgIGNhcHR1cmVkOiBrZXlPZih7IG9uU3VzcGVuZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRpbWVVcGRhdGU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblRpbWVVcGRhdGU6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRpbWVVcGRhdGVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB0b3VjaENhbmNlbDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVG91Y2hDYW5jZWw6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblRvdWNoQ2FuY2VsQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdG91Y2hFbmQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvblRvdWNoRW5kOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Ub3VjaEVuZENhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHRvdWNoTW92ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uVG91Y2hNb3ZlOiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Ub3VjaE1vdmVDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB0b3VjaFN0YXJ0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Ub3VjaFN0YXJ0OiB0cnVlIH0pLFxuICAgICAgY2FwdHVyZWQ6IGtleU9mKHsgb25Ub3VjaFN0YXJ0Q2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSxcbiAgdm9sdW1lQ2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6IGtleU9mKHsgb25Wb2x1bWVDaGFuZ2U6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvblZvbHVtZUNoYW5nZUNhcHR1cmU6IHRydWUgfSlcbiAgICB9XG4gIH0sXG4gIHdhaXRpbmc6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDoga2V5T2YoeyBvbldhaXRpbmc6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbldhaXRpbmdDYXB0dXJlOiB0cnVlIH0pXG4gICAgfVxuICB9LFxuICB3aGVlbDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBrZXlPZih7IG9uV2hlZWw6IHRydWUgfSksXG4gICAgICBjYXB0dXJlZDoga2V5T2YoeyBvbldoZWVsQ2FwdHVyZTogdHJ1ZSB9KVxuICAgIH1cbiAgfVxufTtcblxudmFyIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHtcbiAgdG9wQWJvcnQ6IGV2ZW50VHlwZXMuYWJvcnQsXG4gIHRvcEJsdXI6IGV2ZW50VHlwZXMuYmx1cixcbiAgdG9wQ2FuUGxheTogZXZlbnRUeXBlcy5jYW5QbGF5LFxuICB0b3BDYW5QbGF5VGhyb3VnaDogZXZlbnRUeXBlcy5jYW5QbGF5VGhyb3VnaCxcbiAgdG9wQ2xpY2s6IGV2ZW50VHlwZXMuY2xpY2ssXG4gIHRvcENvbnRleHRNZW51OiBldmVudFR5cGVzLmNvbnRleHRNZW51LFxuICB0b3BDb3B5OiBldmVudFR5cGVzLmNvcHksXG4gIHRvcEN1dDogZXZlbnRUeXBlcy5jdXQsXG4gIHRvcERvdWJsZUNsaWNrOiBldmVudFR5cGVzLmRvdWJsZUNsaWNrLFxuICB0b3BEcmFnOiBldmVudFR5cGVzLmRyYWcsXG4gIHRvcERyYWdFbmQ6IGV2ZW50VHlwZXMuZHJhZ0VuZCxcbiAgdG9wRHJhZ0VudGVyOiBldmVudFR5cGVzLmRyYWdFbnRlcixcbiAgdG9wRHJhZ0V4aXQ6IGV2ZW50VHlwZXMuZHJhZ0V4aXQsXG4gIHRvcERyYWdMZWF2ZTogZXZlbnRUeXBlcy5kcmFnTGVhdmUsXG4gIHRvcERyYWdPdmVyOiBldmVudFR5cGVzLmRyYWdPdmVyLFxuICB0b3BEcmFnU3RhcnQ6IGV2ZW50VHlwZXMuZHJhZ1N0YXJ0LFxuICB0b3BEcm9wOiBldmVudFR5cGVzLmRyb3AsXG4gIHRvcER1cmF0aW9uQ2hhbmdlOiBldmVudFR5cGVzLmR1cmF0aW9uQ2hhbmdlLFxuICB0b3BFbXB0aWVkOiBldmVudFR5cGVzLmVtcHRpZWQsXG4gIHRvcEVuY3J5cHRlZDogZXZlbnRUeXBlcy5lbmNyeXB0ZWQsXG4gIHRvcEVuZGVkOiBldmVudFR5cGVzLmVuZGVkLFxuICB0b3BFcnJvcjogZXZlbnRUeXBlcy5lcnJvcixcbiAgdG9wRm9jdXM6IGV2ZW50VHlwZXMuZm9jdXMsXG4gIHRvcElucHV0OiBldmVudFR5cGVzLmlucHV0LFxuICB0b3BLZXlEb3duOiBldmVudFR5cGVzLmtleURvd24sXG4gIHRvcEtleVByZXNzOiBldmVudFR5cGVzLmtleVByZXNzLFxuICB0b3BLZXlVcDogZXZlbnRUeXBlcy5rZXlVcCxcbiAgdG9wTG9hZDogZXZlbnRUeXBlcy5sb2FkLFxuICB0b3BMb2FkZWREYXRhOiBldmVudFR5cGVzLmxvYWRlZERhdGEsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiBldmVudFR5cGVzLmxvYWRlZE1ldGFkYXRhLFxuICB0b3BMb2FkU3RhcnQ6IGV2ZW50VHlwZXMubG9hZFN0YXJ0LFxuICB0b3BNb3VzZURvd246IGV2ZW50VHlwZXMubW91c2VEb3duLFxuICB0b3BNb3VzZU1vdmU6IGV2ZW50VHlwZXMubW91c2VNb3ZlLFxuICB0b3BNb3VzZU91dDogZXZlbnRUeXBlcy5tb3VzZU91dCxcbiAgdG9wTW91c2VPdmVyOiBldmVudFR5cGVzLm1vdXNlT3ZlcixcbiAgdG9wTW91c2VVcDogZXZlbnRUeXBlcy5tb3VzZVVwLFxuICB0b3BQYXN0ZTogZXZlbnRUeXBlcy5wYXN0ZSxcbiAgdG9wUGF1c2U6IGV2ZW50VHlwZXMucGF1c2UsXG4gIHRvcFBsYXk6IGV2ZW50VHlwZXMucGxheSxcbiAgdG9wUGxheWluZzogZXZlbnRUeXBlcy5wbGF5aW5nLFxuICB0b3BQcm9ncmVzczogZXZlbnRUeXBlcy5wcm9ncmVzcyxcbiAgdG9wUmF0ZUNoYW5nZTogZXZlbnRUeXBlcy5yYXRlQ2hhbmdlLFxuICB0b3BSZXNldDogZXZlbnRUeXBlcy5yZXNldCxcbiAgdG9wU2Nyb2xsOiBldmVudFR5cGVzLnNjcm9sbCxcbiAgdG9wU2Vla2VkOiBldmVudFR5cGVzLnNlZWtlZCxcbiAgdG9wU2Vla2luZzogZXZlbnRUeXBlcy5zZWVraW5nLFxuICB0b3BTdGFsbGVkOiBldmVudFR5cGVzLnN0YWxsZWQsXG4gIHRvcFN1Ym1pdDogZXZlbnRUeXBlcy5zdWJtaXQsXG4gIHRvcFN1c3BlbmQ6IGV2ZW50VHlwZXMuc3VzcGVuZCxcbiAgdG9wVGltZVVwZGF0ZTogZXZlbnRUeXBlcy50aW1lVXBkYXRlLFxuICB0b3BUb3VjaENhbmNlbDogZXZlbnRUeXBlcy50b3VjaENhbmNlbCxcbiAgdG9wVG91Y2hFbmQ6IGV2ZW50VHlwZXMudG91Y2hFbmQsXG4gIHRvcFRvdWNoTW92ZTogZXZlbnRUeXBlcy50b3VjaE1vdmUsXG4gIHRvcFRvdWNoU3RhcnQ6IGV2ZW50VHlwZXMudG91Y2hTdGFydCxcbiAgdG9wVm9sdW1lQ2hhbmdlOiBldmVudFR5cGVzLnZvbHVtZUNoYW5nZSxcbiAgdG9wV2FpdGluZzogZXZlbnRUeXBlcy53YWl0aW5nLFxuICB0b3BXaGVlbDogZXZlbnRUeXBlcy53aGVlbFxufTtcblxuZm9yICh2YXIgdHlwZSBpbiB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcpIHtcbiAgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3R5cGVdLmRlcGVuZGVuY2llcyA9IFt0eXBlXTtcbn1cblxudmFyIE9OX0NMSUNLX0tFWSA9IGtleU9mKHsgb25DbGljazogbnVsbCB9KTtcbnZhciBvbkNsaWNrTGlzdGVuZXJzID0ge307XG5cbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9IHtcblxuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRvcExldmVsVGFyZ2V0IFRoZSBsaXN0ZW5pbmcgY29tcG9uZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVGFyZ2V0SUQgSUQgb2YgYHRvcExldmVsVGFyZ2V0YC5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50c31cbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRvcExldmVsVGFyZ2V0LCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdG9wTGV2ZWxUeXBlXTtcbiAgICBpZiAoIWRpc3BhdGNoQ29uZmlnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIEV2ZW50Q29uc3RydWN0b3I7XG4gICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BBYm9ydDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDYW5QbGF5OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENhblBsYXlUaHJvdWdoOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcER1cmF0aW9uQ2hhbmdlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEVtcHRpZWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRW5jcnlwdGVkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEVuZGVkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEVycm9yOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcElucHV0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcExvYWQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTG9hZGVkRGF0YTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BMb2FkZWRNZXRhZGF0YTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BMb2FkU3RhcnQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUGF1c2U6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUGxheTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQbGF5aW5nOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFByb2dyZXNzOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFJhdGVDaGFuZ2U6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wUmVzZXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU2Vla2VkOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFNlZWtpbmc6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU3RhbGxlZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BTdWJtaXQ6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU3VzcGVuZDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BUaW1lVXBkYXRlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFZvbHVtZUNoYW5nZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BXYWl0aW5nOlxuICAgICAgICAvLyBIVE1MIEV2ZW50c1xuICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTBcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlQcmVzczpcbiAgICAgICAgLy8gRmlyZUZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZlbnQgZm9yIGZ1bmN0aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXNcbiAgICAgICAgLy8gdGhlIHVud2FudGVkIGtleXByZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50YWJsZSBhbmRcbiAgICAgICAgLy8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0IGl0IGlzbid0KS5cbiAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BLZXlEb3duOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEtleVVwOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wQmx1cjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BGb2N1czpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcENsaWNrOlxuICAgICAgICAvLyBGaXJlZm94IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3MuIFRoaXMgcmVtb3ZlcyB0aGVcbiAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLlxuICAgICAgICBpZiAobmF0aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDb250ZXh0TWVudTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEb3VibGVDbGljazpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZURvd246XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wTW91c2VNb3ZlOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3V0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcE1vdXNlT3ZlcjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BNb3VzZVVwOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljTW91c2VFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZzpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnRW5kOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyYWdFbnRlcjpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnRXhpdDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BEcmFnTGVhdmU6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ092ZXI6XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wRHJhZ1N0YXJ0OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcERyb3A6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoQ2FuY2VsOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoRW5kOlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcFRvdWNoTW92ZTpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BUb3VjaFN0YXJ0OlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVG91Y2hFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wU2Nyb2xsOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVUlFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRvcExldmVsVHlwZXMudG9wV2hlZWw6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNXaGVlbEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BDb3B5OlxuICAgICAgY2FzZSB0b3BMZXZlbFR5cGVzLnRvcEN1dDpcbiAgICAgIGNhc2UgdG9wTGV2ZWxUeXBlcy50b3BQYXN0ZTpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgIUV2ZW50Q29uc3RydWN0b3IgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0eXBlLCBgJXNgLicsIHRvcExldmVsVHlwZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciBldmVudCA9IEV2ZW50Q29uc3RydWN0b3IuZ2V0UG9vbGVkKGRpc3BhdGNoQ29uZmlnLCB0b3BMZXZlbFRhcmdldElELCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9LFxuXG4gIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgLy8gTW9iaWxlIFNhZmFyaSBkb2VzIG5vdCBmaXJlIHByb3Blcmx5IGJ1YmJsZSBjbGljayBldmVudHMgb25cbiAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNoIG1lYW5zIGRlbGVnYXRlZCBjbGljayBsaXN0ZW5lcnMgZG8gbm90XG4gICAgLy8gZmlyZS4gVGhlIHdvcmthcm91bmQgZm9yIHRoaXMgYnVnIGludm9sdmVzIGF0dGFjaGluZyBhbiBlbXB0eSBjbGlja1xuICAgIC8vIGxpc3RlbmVyIG9uIHRoZSB0YXJnZXQgbm9kZS5cbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gT05fQ0xJQ0tfS0VZKSB7XG4gICAgICB2YXIgbm9kZSA9IFJlYWN0TW91bnQuZ2V0Tm9kZShpZCk7XG4gICAgICBpZiAoIW9uQ2xpY2tMaXN0ZW5lcnNbaWRdKSB7XG4gICAgICAgIG9uQ2xpY2tMaXN0ZW5lcnNbaWRdID0gRXZlbnRMaXN0ZW5lci5saXN0ZW4obm9kZSwgJ2NsaWNrJywgZW1wdHlGdW5jdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHdpbGxEZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24gKGlkLCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09IE9OX0NMSUNLX0tFWSkge1xuICAgICAgb25DbGlja0xpc3RlbmVyc1tpZF0ucmVtb3ZlKCk7XG4gICAgICBkZWxldGUgb25DbGlja0xpc3RlbmVyc1tpZF07XG4gICAgfVxuICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2ltcGxlRXZlbnRQbHVnaW47XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VTJsdGNHeGxSWFpsYm5SUWJIVm5hVzR1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCVGFXMXdiR1ZGZG1WdWRGQnNkV2RwYmx4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlFVjJaVzUwUTI5dWMzUmhiblJ6SUQwZ2NtVnhkV2x5WlNnbkxpOUZkbVZ1ZEVOdmJuTjBZVzUwY3ljcE8xeHVkbUZ5SUVWMlpXNTBUR2x6ZEdWdVpYSWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlGZG1WdWRFeHBjM1JsYm1WeUp5azdYRzUyWVhJZ1JYWmxiblJRY205d1lXZGhkRzl5Y3lBOUlISmxjWFZwY21Vb0p5NHZSWFpsYm5SUWNtOXdZV2RoZEc5eWN5Y3BPMXh1ZG1GeUlGSmxZV04wVFc5MWJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFKbFlXTjBUVzkxYm5RbktUdGNiblpoY2lCVGVXNTBhR1YwYVdORGJHbHdZbTloY21SRmRtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlUzbHVkR2hsZEdsalEyeHBjR0p2WVhKa1JYWmxiblFuS1R0Y2JuWmhjaUJUZVc1MGFHVjBhV05GZG1WdWRDQTlJSEpsY1hWcGNtVW9KeTR2VTNsdWRHaGxkR2xqUlhabGJuUW5LVHRjYm5aaGNpQlRlVzUwYUdWMGFXTkdiMk4xYzBWMlpXNTBJRDBnY21WeGRXbHlaU2duTGk5VGVXNTBhR1YwYVdOR2IyTjFjMFYyWlc1MEp5azdYRzUyWVhJZ1UzbHVkR2hsZEdsalMyVjVZbTloY21SRmRtVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlUzbHVkR2hsZEdsalMyVjVZbTloY21SRmRtVnVkQ2NwTzF4dWRtRnlJRk41Ym5Sb1pYUnBZMDF2ZFhObFJYWmxiblFnUFNCeVpYRjFhWEpsS0NjdUwxTjViblJvWlhScFkwMXZkWE5sUlhabGJuUW5LVHRjYm5aaGNpQlRlVzUwYUdWMGFXTkVjbUZuUlhabGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDFONWJuUm9aWFJwWTBSeVlXZEZkbVZ1ZENjcE8xeHVkbUZ5SUZONWJuUm9aWFJwWTFSdmRXTm9SWFpsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMU41Ym5Sb1pYUnBZMVJ2ZFdOb1JYWmxiblFuS1R0Y2JuWmhjaUJUZVc1MGFHVjBhV05WU1VWMlpXNTBJRDBnY21WeGRXbHlaU2duTGk5VGVXNTBhR1YwYVdOVlNVVjJaVzUwSnlrN1hHNTJZWElnVTNsdWRHaGxkR2xqVjJobFpXeEZkbVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVM2x1ZEdobGRHbGpWMmhsWld4RmRtVnVkQ2NwTzF4dVhHNTJZWElnWlcxd2RIbEdkVzVqZEdsdmJpQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMlZ0Y0hSNVJuVnVZM1JwYjI0bktUdGNiblpoY2lCblpYUkZkbVZ1ZEVOb1lYSkRiMlJsSUQwZ2NtVnhkV2x5WlNnbkxpOW5aWFJGZG1WdWRFTm9ZWEpEYjJSbEp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdhMlY1VDJZZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOXJaWGxQWmljcE8xeHVYRzUyWVhJZ2RHOXdUR1YyWld4VWVYQmxjeUE5SUVWMlpXNTBRMjl1YzNSaGJuUnpMblJ2Y0V4bGRtVnNWSGx3WlhNN1hHNWNiblpoY2lCbGRtVnVkRlI1Y0dWeklEMGdlMXh1SUNCaFltOXlkRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVRV0p2Y25RNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrRmliM0owUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdZbXgxY2pvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1UW14MWNqb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVRbXgxY2tOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR05oYmxCc1lYazZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJrTmhibEJzWVhrNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrTmhibEJzWVhsRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JqWVc1UWJHRjVWR2h5YjNWbmFEb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVEyRnVVR3hoZVZSb2NtOTFaMmc2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtOaGJsQnNZWGxVYUhKdmRXZG9RMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1kyeHBZMnM2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia05zYVdOck9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNURiR2xqYTBOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR052Ym5SbGVIUk5aVzUxT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVEYjI1MFpYaDBUV1Z1ZFRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVEyOXVkR1Y0ZEUxbGJuVkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCamIzQjVPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNURiM0I1T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RGIzQjVRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1kzVjBPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNURkWFE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtOMWRFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdSdmRXSnNaVU5zYVdOck9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RWIzVmliR1ZEYkdsamF6b2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSRzkxWW14bFEyeHBZMnREWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmtjbUZuT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFY21Gbk9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUVjbUZuUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaSEpoWjBWdVpEb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJISmhaMFZ1WkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJISmhaMFZ1WkVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1J5WVdkRmJuUmxjam9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVSSEpoWjBWdWRHVnlPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVFY21GblJXNTBaWEpEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmtjbUZuUlhocGREb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJISmhaMFY0YVhRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJrUnlZV2RGZUdsMFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWkhKaFoweGxZWFpsT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVFY21GblRHVmhkbVU2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZE1aV0YyWlVOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR1J5WVdkUGRtVnlPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVjbUZuVDNabGNqb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSSEpoWjA5MlpYSkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCa2NtRm5VM1JoY25RNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmtSeVlXZFRkR0Z5ZERvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJISmhaMU4wWVhKMFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnWkhKdmNEb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJISnZjRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UkhKdmNFTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUdSMWNtRjBhVzl1UTJoaGJtZGxPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUVkWEpoZEdsdmJrTm9ZVzVuWlRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVJIVnlZWFJwYjI1RGFHRnVaMlZEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmxiWEIwYVdWa09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1RmJYQjBhV1ZrT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1RmJYQjBhV1ZrUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdaVzVqY25sd2RHVmtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNUZibU55ZVhCMFpXUTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZia1Z1WTNKNWNIUmxaRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHVnVaR1ZrT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVGYm1SbFpEb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVSVzVrWldSRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JsY25KdmNqb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVJYSnliM0k2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmtWeWNtOXlRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ1ptOWpkWE02SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia1p2WTNWek9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNUdiMk4xYzBOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR2x1Y0hWME9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1SmJuQjFkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1U1c1d2RYUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCclpYbEViM2R1T2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVMWlhsRWIzZHVPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVMWlhsRWIzZHVRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2EyVjVVSEpsYzNNNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2Ymt0bGVWQnlaWE56T2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TFpYbFFjbVZ6YzBOaGNIUjFjbVU2SUhSeWRXVWdmU2xjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR3RsZVZWd09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1TFpYbFZjRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1UzJWNVZYQkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCc2IyRmtPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU1iMkZrT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1TWIyRmtRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JHOWhaR1ZrUkdGMFlUb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVRHOWhaR1ZrUkdGMFlUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVURzloWkdWa1JHRjBZVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHeHZZV1JsWkUxbGRHRmtZWFJoT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVNYjJGa1pXUk5aWFJoWkdGMFlUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVURzloWkdWa1RXVjBZV1JoZEdGRFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0JzYjJGa1UzUmhjblE2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZia3h2WVdSVGRHRnlkRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VEc5aFpGTjBZWEowUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdMeThnVG05MFpUb2dWMlVnWkc4Z2JtOTBJR0ZzYkc5M0lHeHBjM1JsYm1sdVp5QjBieUJ0YjNWelpVOTJaWElnWlhabGJuUnpMaUJKYm5OMFpXRmtMQ0IxYzJVZ2RHaGxYRzRnSUM4dklHOXVUVzkxYzJWRmJuUmxjaTl2YmsxdmRYTmxUR1ZoZG1VZ1kzSmxZWFJsWkNCaWVTQmdSVzUwWlhKTVpXRjJaVVYyWlc1MFVHeDFaMmx1WUM1Y2JpQWdiVzkxYzJWRWIzZHVPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU5iM1Z6WlVSdmQyNDZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFJHOTNia05oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHMXZkWE5sVFc5MlpUb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVRXOTFjMlZOYjNabE9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNU5iM1Z6WlUxdmRtVkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCdGIzVnpaVTkxZERvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VFc5MWMyVlBkWFE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmsxdmRYTmxUM1YwUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdiVzkxYzJWUGRtVnlPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNU5iM1Z6WlU5MlpYSTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZiazF2ZFhObFQzWmxja05oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lHMXZkWE5sVlhBNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmsxdmRYTmxWWEE2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmsxdmRYTmxWWEJEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQndZWE4wWlRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VUdGemRHVTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZibEJoYzNSbFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnY0dGMWMyVTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsQmhkWE5sT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1UVlYVnpaVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lIQnNZWGs2SUh0Y2JpQWdJQ0J3YUdGelpXUlNaV2RwYzNSeVlYUnBiMjVPWVcxbGN6b2dlMXh1SUNBZ0lDQWdZblZpWW14bFpEb2dhMlY1VDJZb2V5QnZibEJzWVhrNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsQnNZWGxEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQndiR0Y1YVc1bk9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1UWJHRjVhVzVuT2lCMGNuVmxJSDBwTEZ4dUlDQWdJQ0FnWTJGd2RIVnlaV1E2SUd0bGVVOW1LSHNnYjI1UWJHRjVhVzVuUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjSEp2WjNKbGMzTTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsQnliMmR5WlhOek9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ1kyRndkSFZ5WldRNklHdGxlVTltS0hzZ2IyNVFjbTluY21WemMwTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhKaGRHVkRhR0Z1WjJVNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxKaGRHVkRhR0Z1WjJVNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsSmhkR1ZEYUdGdVoyVkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCeVpYTmxkRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVVbVZ6WlhRNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsSmxjMlYwUTJGd2RIVnlaVG9nZEhKMVpTQjlLVnh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdjMk55YjJ4c09pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VFkzSnZiR3c2SUhSeWRXVWdmU2tzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxaRG9nYTJWNVQyWW9leUJ2YmxOamNtOXNiRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lITmxaV3RsWkRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VTJWbGEyVmtPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVUWldWclpXUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCelpXVnJhVzVuT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVUWldWcmFXNW5PaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVUWldWcmFXNW5RMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2MzUmhiR3hsWkRvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VTNSaGJHeGxaRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1VTNSaGJHeGxaRU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lITjFZbTFwZERvZ2UxeHVJQ0FnSUhCb1lYTmxaRkpsWjJsemRISmhkR2x2Yms1aGJXVnpPaUI3WEc0Z0lDQWdJQ0JpZFdKaWJHVmtPaUJyWlhsUFppaDdJRzl1VTNWaWJXbDBPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVUZFdKdGFYUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCemRYTndaVzVrT2lCN1hHNGdJQ0FnY0doaGMyVmtVbVZuYVhOMGNtRjBhVzl1VG1GdFpYTTZJSHRjYmlBZ0lDQWdJR0oxWW1Kc1pXUTZJR3RsZVU5bUtIc2diMjVUZFhOd1pXNWtPaUIwY25WbElIMHBMRnh1SUNBZ0lDQWdZMkZ3ZEhWeVpXUTZJR3RsZVU5bUtIc2diMjVUZFhOd1pXNWtRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2RHbHRaVlZ3WkdGMFpUb2dlMXh1SUNBZ0lIQm9ZWE5sWkZKbFoybHpkSEpoZEdsdmJrNWhiV1Z6T2lCN1hHNGdJQ0FnSUNCaWRXSmliR1ZrT2lCclpYbFBaaWg3SUc5dVZHbHRaVlZ3WkdGMFpUb2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVWR2x0WlZWd1pHRjBaVU5oY0hSMWNtVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNCOVhHNGdJSDBzWEc0Z0lIUnZkV05vUTJGdVkyVnNPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVViM1ZqYUVOaGJtTmxiRG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1Vkc5MVkyaERZVzVqWld4RFlYQjBkWEpsT2lCMGNuVmxJSDBwWEc0Z0lDQWdmVnh1SUNCOUxGeHVJQ0IwYjNWamFFVnVaRG9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVWRzkxWTJoRmJtUTZJSFJ5ZFdVZ2ZTa3NYRzRnSUNBZ0lDQmpZWEIwZFhKbFpEb2dhMlY1VDJZb2V5QnZibFJ2ZFdOb1JXNWtRMkZ3ZEhWeVpUb2dkSEoxWlNCOUtWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2RHOTFZMmhOYjNabE9pQjdYRzRnSUNBZ2NHaGhjMlZrVW1WbmFYTjBjbUYwYVc5dVRtRnRaWE02SUh0Y2JpQWdJQ0FnSUdKMVltSnNaV1E2SUd0bGVVOW1LSHNnYjI1VWIzVmphRTF2ZG1VNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsUnZkV05vVFc5MlpVTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhSdmRXTm9VM1JoY25RNklIdGNiaUFnSUNCd2FHRnpaV1JTWldkcGMzUnlZWFJwYjI1T1lXMWxjem9nZTF4dUlDQWdJQ0FnWW5WaVlteGxaRG9nYTJWNVQyWW9leUJ2YmxSdmRXTm9VM1JoY25RNklIUnlkV1VnZlNrc1hHNGdJQ0FnSUNCallYQjBkWEpsWkRvZ2EyVjVUMllvZXlCdmJsUnZkV05vVTNSaGNuUkRZWEIwZFhKbE9pQjBjblZsSUgwcFhHNGdJQ0FnZlZ4dUlDQjlMRnh1SUNCMmIyeDFiV1ZEYUdGdVoyVTZJSHRjYmlBZ0lDQndhR0Z6WldSU1pXZHBjM1J5WVhScGIyNU9ZVzFsY3pvZ2UxeHVJQ0FnSUNBZ1luVmlZbXhsWkRvZ2EyVjVUMllvZXlCdmJsWnZiSFZ0WlVOb1lXNW5aVG9nZEhKMVpTQjlLU3hjYmlBZ0lDQWdJR05oY0hSMWNtVmtPaUJyWlhsUFppaDdJRzl1Vm05c2RXMWxRMmhoYm1kbFEyRndkSFZ5WlRvZ2RISjFaU0I5S1Z4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnZDJGcGRHbHVaem9nZTF4dUlDQWdJSEJvWVhObFpGSmxaMmx6ZEhKaGRHbHZiazVoYldWek9pQjdYRzRnSUNBZ0lDQmlkV0ppYkdWa09pQnJaWGxQWmloN0lHOXVWMkZwZEdsdVp6b2dkSEoxWlNCOUtTeGNiaUFnSUNBZ0lHTmhjSFIxY21Wa09pQnJaWGxQWmloN0lHOXVWMkZwZEdsdVowTmhjSFIxY21VNklIUnlkV1VnZlNsY2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUhkb1pXVnNPaUI3WEc0Z0lDQWdjR2hoYzJWa1VtVm5hWE4wY21GMGFXOXVUbUZ0WlhNNklIdGNiaUFnSUNBZ0lHSjFZbUpzWldRNklHdGxlVTltS0hzZ2IyNVhhR1ZsYkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZrT2lCclpYbFBaaWg3SUc5dVYyaGxaV3hEWVhCMGRYSmxPaUIwY25WbElIMHBYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ2RHOXdUR1YyWld4RmRtVnVkSE5VYjBScGMzQmhkR05vUTI5dVptbG5JRDBnZTF4dUlDQjBiM0JCWW05eWREb2daWFpsYm5SVWVYQmxjeTVoWW05eWRDeGNiaUFnZEc5d1FteDFjam9nWlhabGJuUlVlWEJsY3k1aWJIVnlMRnh1SUNCMGIzQkRZVzVRYkdGNU9pQmxkbVZ1ZEZSNWNHVnpMbU5oYmxCc1lYa3NYRzRnSUhSdmNFTmhibEJzWVhsVWFISnZkV2RvT2lCbGRtVnVkRlI1Y0dWekxtTmhibEJzWVhsVWFISnZkV2RvTEZ4dUlDQjBiM0JEYkdsamF6b2daWFpsYm5SVWVYQmxjeTVqYkdsamF5eGNiaUFnZEc5d1EyOXVkR1Y0ZEUxbGJuVTZJR1YyWlc1MFZIbHdaWE11WTI5dWRHVjRkRTFsYm5Vc1hHNGdJSFJ2Y0VOdmNIazZJR1YyWlc1MFZIbHdaWE11WTI5d2VTeGNiaUFnZEc5d1EzVjBPaUJsZG1WdWRGUjVjR1Z6TG1OMWRDeGNiaUFnZEc5d1JHOTFZbXhsUTJ4cFkyczZJR1YyWlc1MFZIbHdaWE11Wkc5MVlteGxRMnhwWTJzc1hHNGdJSFJ2Y0VSeVlXYzZJR1YyWlc1MFZIbHdaWE11WkhKaFp5eGNiaUFnZEc5d1JISmhaMFZ1WkRvZ1pYWmxiblJVZVhCbGN5NWtjbUZuUlc1a0xGeHVJQ0IwYjNCRWNtRm5SVzUwWlhJNklHVjJaVzUwVkhsd1pYTXVaSEpoWjBWdWRHVnlMRnh1SUNCMGIzQkVjbUZuUlhocGREb2daWFpsYm5SVWVYQmxjeTVrY21GblJYaHBkQ3hjYmlBZ2RHOXdSSEpoWjB4bFlYWmxPaUJsZG1WdWRGUjVjR1Z6TG1SeVlXZE1aV0YyWlN4Y2JpQWdkRzl3UkhKaFowOTJaWEk2SUdWMlpXNTBWSGx3WlhNdVpISmhaMDkyWlhJc1hHNGdJSFJ2Y0VSeVlXZFRkR0Z5ZERvZ1pYWmxiblJVZVhCbGN5NWtjbUZuVTNSaGNuUXNYRzRnSUhSdmNFUnliM0E2SUdWMlpXNTBWSGx3WlhNdVpISnZjQ3hjYmlBZ2RHOXdSSFZ5WVhScGIyNURhR0Z1WjJVNklHVjJaVzUwVkhsd1pYTXVaSFZ5WVhScGIyNURhR0Z1WjJVc1hHNGdJSFJ2Y0VWdGNIUnBaV1E2SUdWMlpXNTBWSGx3WlhNdVpXMXdkR2xsWkN4Y2JpQWdkRzl3Ulc1amNubHdkR1ZrT2lCbGRtVnVkRlI1Y0dWekxtVnVZM0o1Y0hSbFpDeGNiaUFnZEc5d1JXNWtaV1E2SUdWMlpXNTBWSGx3WlhNdVpXNWtaV1FzWEc0Z0lIUnZjRVZ5Y205eU9pQmxkbVZ1ZEZSNWNHVnpMbVZ5Y205eUxGeHVJQ0IwYjNCR2IyTjFjem9nWlhabGJuUlVlWEJsY3k1bWIyTjFjeXhjYmlBZ2RHOXdTVzV3ZFhRNklHVjJaVzUwVkhsd1pYTXVhVzV3ZFhRc1hHNGdJSFJ2Y0V0bGVVUnZkMjQ2SUdWMlpXNTBWSGx3WlhNdWEyVjVSRzkzYml4Y2JpQWdkRzl3UzJWNVVISmxjM002SUdWMlpXNTBWSGx3WlhNdWEyVjVVSEpsYzNNc1hHNGdJSFJ2Y0V0bGVWVndPaUJsZG1WdWRGUjVjR1Z6TG10bGVWVndMRnh1SUNCMGIzQk1iMkZrT2lCbGRtVnVkRlI1Y0dWekxteHZZV1FzWEc0Z0lIUnZjRXh2WVdSbFpFUmhkR0U2SUdWMlpXNTBWSGx3WlhNdWJHOWhaR1ZrUkdGMFlTeGNiaUFnZEc5d1RHOWhaR1ZrVFdWMFlXUmhkR0U2SUdWMlpXNTBWSGx3WlhNdWJHOWhaR1ZrVFdWMFlXUmhkR0VzWEc0Z0lIUnZjRXh2WVdSVGRHRnlkRG9nWlhabGJuUlVlWEJsY3k1c2IyRmtVM1JoY25Rc1hHNGdJSFJ2Y0UxdmRYTmxSRzkzYmpvZ1pYWmxiblJVZVhCbGN5NXRiM1Z6WlVSdmQyNHNYRzRnSUhSdmNFMXZkWE5sVFc5MlpUb2daWFpsYm5SVWVYQmxjeTV0YjNWelpVMXZkbVVzWEc0Z0lIUnZjRTF2ZFhObFQzVjBPaUJsZG1WdWRGUjVjR1Z6TG0xdmRYTmxUM1YwTEZ4dUlDQjBiM0JOYjNWelpVOTJaWEk2SUdWMlpXNTBWSGx3WlhNdWJXOTFjMlZQZG1WeUxGeHVJQ0IwYjNCTmIzVnpaVlZ3T2lCbGRtVnVkRlI1Y0dWekxtMXZkWE5sVlhBc1hHNGdJSFJ2Y0ZCaGMzUmxPaUJsZG1WdWRGUjVjR1Z6TG5CaGMzUmxMRnh1SUNCMGIzQlFZWFZ6WlRvZ1pYWmxiblJVZVhCbGN5NXdZWFZ6WlN4Y2JpQWdkRzl3VUd4aGVUb2daWFpsYm5SVWVYQmxjeTV3YkdGNUxGeHVJQ0IwYjNCUWJHRjVhVzVuT2lCbGRtVnVkRlI1Y0dWekxuQnNZWGxwYm1jc1hHNGdJSFJ2Y0ZCeWIyZHlaWE56T2lCbGRtVnVkRlI1Y0dWekxuQnliMmR5WlhOekxGeHVJQ0IwYjNCU1lYUmxRMmhoYm1kbE9pQmxkbVZ1ZEZSNWNHVnpMbkpoZEdWRGFHRnVaMlVzWEc0Z0lIUnZjRkpsYzJWME9pQmxkbVZ1ZEZSNWNHVnpMbkpsYzJWMExGeHVJQ0IwYjNCVFkzSnZiR3c2SUdWMlpXNTBWSGx3WlhNdWMyTnliMnhzTEZ4dUlDQjBiM0JUWldWclpXUTZJR1YyWlc1MFZIbHdaWE11YzJWbGEyVmtMRnh1SUNCMGIzQlRaV1ZyYVc1bk9pQmxkbVZ1ZEZSNWNHVnpMbk5sWld0cGJtY3NYRzRnSUhSdmNGTjBZV3hzWldRNklHVjJaVzUwVkhsd1pYTXVjM1JoYkd4bFpDeGNiaUFnZEc5d1UzVmliV2wwT2lCbGRtVnVkRlI1Y0dWekxuTjFZbTFwZEN4Y2JpQWdkRzl3VTNWemNHVnVaRG9nWlhabGJuUlVlWEJsY3k1emRYTndaVzVrTEZ4dUlDQjBiM0JVYVcxbFZYQmtZWFJsT2lCbGRtVnVkRlI1Y0dWekxuUnBiV1ZWY0dSaGRHVXNYRzRnSUhSdmNGUnZkV05vUTJGdVkyVnNPaUJsZG1WdWRGUjVjR1Z6TG5SdmRXTm9RMkZ1WTJWc0xGeHVJQ0IwYjNCVWIzVmphRVZ1WkRvZ1pYWmxiblJVZVhCbGN5NTBiM1ZqYUVWdVpDeGNiaUFnZEc5d1ZHOTFZMmhOYjNabE9pQmxkbVZ1ZEZSNWNHVnpMblJ2ZFdOb1RXOTJaU3hjYmlBZ2RHOXdWRzkxWTJoVGRHRnlkRG9nWlhabGJuUlVlWEJsY3k1MGIzVmphRk4wWVhKMExGeHVJQ0IwYjNCV2IyeDFiV1ZEYUdGdVoyVTZJR1YyWlc1MFZIbHdaWE11ZG05c2RXMWxRMmhoYm1kbExGeHVJQ0IwYjNCWFlXbDBhVzVuT2lCbGRtVnVkRlI1Y0dWekxuZGhhWFJwYm1jc1hHNGdJSFJ2Y0Zkb1pXVnNPaUJsZG1WdWRGUjVjR1Z6TG5kb1pXVnNYRzU5TzF4dVhHNW1iM0lnS0haaGNpQjBlWEJsSUdsdUlIUnZjRXhsZG1Wc1JYWmxiblJ6Vkc5RWFYTndZWFJqYUVOdmJtWnBaeWtnZTF4dUlDQjBiM0JNWlhabGJFVjJaVzUwYzFSdlJHbHpjR0YwWTJoRGIyNW1hV2RiZEhsd1pWMHVaR1Z3Wlc1a1pXNWphV1Z6SUQwZ1czUjVjR1ZkTzF4dWZWeHVYRzUyWVhJZ1QwNWZRMHhKUTB0ZlMwVlpJRDBnYTJWNVQyWW9leUJ2YmtOc2FXTnJPaUJ1ZFd4c0lIMHBPMXh1ZG1GeUlHOXVRMnhwWTJ0TWFYTjBaVzVsY25NZ1BTQjdmVHRjYmx4dWRtRnlJRk5wYlhCc1pVVjJaVzUwVUd4MVoybHVJRDBnZTF4dVhHNGdJR1YyWlc1MFZIbHdaWE02SUdWMlpXNTBWSGx3WlhNc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IwYjNCTVpYWmxiRlI1Y0dVZ1VtVmpiM0prSUdaeWIyMGdZRVYyWlc1MFEyOXVjM1JoYm5SellDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVQwMUZkbVZ1ZEZSaGNtZGxkSDBnZEc5d1RHVjJaV3hVWVhKblpYUWdWR2hsSUd4cGMzUmxibWx1WnlCamIyMXdiMjVsYm5RZ2NtOXZkQ0J1YjJSbExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEc5d1RHVjJaV3hVWVhKblpYUkpSQ0JKUkNCdlppQmdkRzl3VEdWMlpXeFVZWEpuWlhSZ0xseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnYm1GMGFYWmxSWFpsYm5RZ1RtRjBhWFpsSUdKeWIzZHpaWElnWlhabGJuUXVYRzRnSUNBcUlFQnlaWFIxY200Z2V5cDlJRUZ1SUdGalkzVnRkV3hoZEdsdmJpQnZaaUJ6ZVc1MGFHVjBhV01nWlhabGJuUnpMbHh1SUNBZ0tpQkFjMlZsSUh0RmRtVnVkRkJzZFdkcGJraDFZaTVsZUhSeVlXTjBSWFpsYm5SemZWeHVJQ0FnS2k5Y2JpQWdaWGgwY21GamRFVjJaVzUwY3pvZ1puVnVZM1JwYjI0Z0tIUnZjRXhsZG1Wc1ZIbHdaU3dnZEc5d1RHVjJaV3hVWVhKblpYUXNJSFJ2Y0V4bGRtVnNWR0Z5WjJWMFNVUXNJRzVoZEdsMlpVVjJaVzUwTENCdVlYUnBkbVZGZG1WdWRGUmhjbWRsZENrZ2UxeHVJQ0FnSUhaaGNpQmthWE53WVhSamFFTnZibVpwWnlBOUlIUnZjRXhsZG1Wc1JYWmxiblJ6Vkc5RWFYTndZWFJqYUVOdmJtWnBaMXQwYjNCTVpYWmxiRlI1Y0dWZE8xeHVJQ0FnSUdsbUlDZ2haR2x6Y0dGMFkyaERiMjVtYVdjcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdSWFpsYm5SRGIyNXpkSEoxWTNSdmNqdGNiaUFnSUNCemQybDBZMmdnS0hSdmNFeGxkbVZzVkhsd1pTa2dlMXh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VGaWIzSjBPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VOaGJsQnNZWGs2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1EyRnVVR3hoZVZSb2NtOTFaMmc2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1JIVnlZWFJwYjI1RGFHRnVaMlU2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1JXMXdkR2xsWkRwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkZibU55ZVhCMFpXUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Ulc1a1pXUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UlhKeWIzSTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3U1c1d2RYUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VEc5aFpEcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JNYjJGa1pXUkVZWFJoT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFeHZZV1JsWkUxbGRHRmtZWFJoT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFeHZZV1JUZEdGeWREcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JRWVhWelpUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JRYkdGNU9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRkJzWVhscGJtYzZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VUhKdlozSmxjM002WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1VtRjBaVU5vWVc1blpUcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JTWlhObGREcGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JUWldWclpXUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VTJWbGEybHVaenBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVGRHRnNiR1ZrT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGTjFZbTFwZERwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQlRkWE53Wlc1a09seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRlJwYldWVmNHUmhkR1U2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1ZtOXNkVzFsUTJoaGJtZGxPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZkaGFYUnBibWM2WEc0Z0lDQWdJQ0FnSUM4dklFaFVUVXdnUlhabGJuUnpYRzRnSUNBZ0lDQWdJQzh2SUVCelpXVWdhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2YUhSdGJEVXZhVzVrWlhndWFIUnRiQ05sZG1WdWRITXRNRnh1SUNBZ0lDQWdJQ0JGZG1WdWRFTnZibk4wY25WamRHOXlJRDBnVTNsdWRHaGxkR2xqUlhabGJuUTdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRXRsZVZCeVpYTnpPbHh1SUNBZ0lDQWdJQ0F2THlCR2FYSmxSbTk0SUdOeVpXRjBaWE1nWVNCclpYbHdjbVZ6Y3lCbGRtVnVkQ0JtYjNJZ1puVnVZM1JwYjI0Z2EyVjVjeUIwYjI4dUlGUm9hWE1nY21WdGIzWmxjMXh1SUNBZ0lDQWdJQ0F2THlCMGFHVWdkVzUzWVc1MFpXUWdhMlY1Y0hKbGMzTWdaWFpsYm5SekxpQkZiblJsY2lCcGN5Qm9iM2RsZG1WeUlHSnZkR2dnY0hKcGJuUmhZbXhsSUdGdVpGeHVJQ0FnSUNBZ0lDQXZMeUJ1YjI0dGNISnBiblJoWW14bExpQlBibVVnZDI5MWJHUWdaWGh3WldOMElGUmhZaUIwYnlCaVpTQmhjeUIzWld4c0lDaGlkWFFnYVhRZ2FYTnVKM1FwTGx4dUlDQWdJQ0FnSUNCcFppQW9aMlYwUlhabGJuUkRhR0Z5UTI5a1pTaHVZWFJwZG1WRmRtVnVkQ2tnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdMeW9nWm1Gc2JITWdkR2h5YjNWbmFDQXFMMXh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0V0bGVVUnZkMjQ2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1MyVjVWWEE2WEc0Z0lDQWdJQ0FnSUVWMlpXNTBRMjl1YzNSeWRXTjBiM0lnUFNCVGVXNTBhR1YwYVdOTFpYbGliMkZ5WkVWMlpXNTBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JDYkhWeU9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVp2WTNWek9seHVJQ0FnSUNBZ0lDQkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUlEMGdVM2x1ZEdobGRHbGpSbTlqZFhORmRtVnVkRHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UTJ4cFkyczZYRzRnSUNBZ0lDQWdJQzh2SUVacGNtVm1iM2dnWTNKbFlYUmxjeUJoSUdOc2FXTnJJR1YyWlc1MElHOXVJSEpwWjJoMElHMXZkWE5sSUdOc2FXTnJjeTRnVkdocGN5QnlaVzF2ZG1WeklIUm9aVnh1SUNBZ0lDQWdJQ0F2THlCMWJuZGhiblJsWkNCamJHbGpheUJsZG1WdWRITXVYRzRnSUNBZ0lDQWdJR2xtSUNodVlYUnBkbVZGZG1WdWRDNWlkWFIwYjI0Z1BUMDlJRElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnTHlvZ1ptRnNiSE1nZEdoeWIzVm5hQ0FxTDF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFTnZiblJsZUhSTlpXNTFPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0VSdmRXSnNaVU5zYVdOck9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRTF2ZFhObFJHOTNianBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCTmIzVnpaVTF2ZG1VNlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdUVzkxYzJWUGRYUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3VFc5MWMyVlBkbVZ5T2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFMXZkWE5sVlhBNlhHNGdJQ0FnSUNBZ0lFVjJaVzUwUTI5dWMzUnlkV04wYjNJZ1BTQlRlVzUwYUdWMGFXTk5iM1Z6WlVWMlpXNTBPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnZEc5d1RHVjJaV3hVZVhCbGN5NTBiM0JFY21Gbk9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVJ5WVdkRmJtUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UkhKaFowVnVkR1Z5T2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFUnlZV2RGZUdsME9seHVJQ0FnSUNBZ1kyRnpaU0IwYjNCTVpYWmxiRlI1Y0dWekxuUnZjRVJ5WVdkTVpXRjJaVHBjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCRWNtRm5UM1psY2pwY2JpQWdJQ0FnSUdOaGMyVWdkRzl3VEdWMlpXeFVlWEJsY3k1MGIzQkVjbUZuVTNSaGNuUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3UkhKdmNEcGNiaUFnSUNBZ0lDQWdSWFpsYm5SRGIyNXpkSEoxWTNSdmNpQTlJRk41Ym5Sb1pYUnBZMFJ5WVdkRmRtVnVkRHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vkc5MVkyaERZVzVqWld3NlhHNGdJQ0FnSUNCallYTmxJSFJ2Y0V4bGRtVnNWSGx3WlhNdWRHOXdWRzkxWTJoRmJtUTZYRzRnSUNBZ0lDQmpZWE5sSUhSdmNFeGxkbVZzVkhsd1pYTXVkRzl3Vkc5MVkyaE5iM1psT2x4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNGUnZkV05vVTNSaGNuUTZYRzRnSUNBZ0lDQWdJRVYyWlc1MFEyOXVjM1J5ZFdOMGIzSWdQU0JUZVc1MGFHVjBhV05VYjNWamFFVjJaVzUwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCVFkzSnZiR3c2WEc0Z0lDQWdJQ0FnSUVWMlpXNTBRMjl1YzNSeWRXTjBiM0lnUFNCVGVXNTBhR1YwYVdOVlNVVjJaVzUwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ2RHOXdUR1YyWld4VWVYQmxjeTUwYjNCWGFHVmxiRHBjYmlBZ0lDQWdJQ0FnUlhabGJuUkRiMjV6ZEhKMVkzUnZjaUE5SUZONWJuUm9aWFJwWTFkb1pXVnNSWFpsYm5RN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQjBiM0JNWlhabGJGUjVjR1Z6TG5SdmNFTnZjSGs2WEc0Z0lDQWdJQ0JqWVhObElIUnZjRXhsZG1Wc1ZIbHdaWE11ZEc5d1EzVjBPbHh1SUNBZ0lDQWdZMkZ6WlNCMGIzQk1aWFpsYkZSNWNHVnpMblJ2Y0ZCaGMzUmxPbHh1SUNBZ0lDQWdJQ0JGZG1WdWRFTnZibk4wY25WamRHOXlJRDBnVTNsdWRHaGxkR2xqUTJ4cGNHSnZZWEprUlhabGJuUTdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdJQ0FoUlhabGJuUkRiMjV6ZEhKMVkzUnZjaUEvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZFRhVzF3YkdWRmRtVnVkRkJzZFdkcGJqb2dWVzVvWVc1a2JHVmtJR1YyWlc1MElIUjVjR1VzSUdBbGMyQXVKeXdnZEc5d1RHVjJaV3hVZVhCbEtTQTZJR2x1ZG1GeWFXRnVkQ2htWVd4elpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdkbUZ5SUdWMlpXNTBJRDBnUlhabGJuUkRiMjV6ZEhKMVkzUnZjaTVuWlhSUWIyOXNaV1FvWkdsemNHRjBZMmhEYjI1bWFXY3NJSFJ2Y0V4bGRtVnNWR0Z5WjJWMFNVUXNJRzVoZEdsMlpVVjJaVzUwTENCdVlYUnBkbVZGZG1WdWRGUmhjbWRsZENrN1hHNGdJQ0FnUlhabGJuUlFjbTl3WVdkaGRHOXljeTVoWTJOMWJYVnNZWFJsVkhkdlVHaGhjMlZFYVhOd1lYUmphR1Z6S0dWMlpXNTBLVHRjYmlBZ0lDQnlaWFIxY200Z1pYWmxiblE3WEc0Z0lIMHNYRzVjYmlBZ1pHbGtVSFYwVEdsemRHVnVaWEk2SUdaMWJtTjBhVzl1SUNocFpDd2djbVZuYVhOMGNtRjBhVzl1VG1GdFpTd2diR2x6ZEdWdVpYSXBJSHRjYmlBZ0lDQXZMeUJOYjJKcGJHVWdVMkZtWVhKcElHUnZaWE1nYm05MElHWnBjbVVnY0hKdmNHVnliSGtnWW5WaVlteGxJR05zYVdOcklHVjJaVzUwY3lCdmJseHVJQ0FnSUM4dklHNXZiaTFwYm5SbGNtRmpkR2wyWlNCbGJHVnRaVzUwY3l3Z2QyaHBZMmdnYldWaGJuTWdaR1ZzWldkaGRHVmtJR05zYVdOcklHeHBjM1JsYm1WeWN5QmtieUJ1YjNSY2JpQWdJQ0F2THlCbWFYSmxMaUJVYUdVZ2QyOXlhMkZ5YjNWdVpDQm1iM0lnZEdocGN5QmlkV2NnYVc1MmIyeDJaWE1nWVhSMFlXTm9hVzVuSUdGdUlHVnRjSFI1SUdOc2FXTnJYRzRnSUNBZ0x5OGdiR2x6ZEdWdVpYSWdiMjRnZEdobElIUmhjbWRsZENCdWIyUmxMbHh1SUNBZ0lHbG1JQ2h5WldkcGMzUnlZWFJwYjI1T1lXMWxJRDA5UFNCUFRsOURURWxEUzE5TFJWa3BJSHRjYmlBZ0lDQWdJSFpoY2lCdWIyUmxJRDBnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsS0dsa0tUdGNiaUFnSUNBZ0lHbG1JQ2doYjI1RGJHbGphMHhwYzNSbGJtVnljMXRwWkYwcElIdGNiaUFnSUNBZ0lDQWdiMjVEYkdsamEweHBjM1JsYm1WeWMxdHBaRjBnUFNCRmRtVnVkRXhwYzNSbGJtVnlMbXhwYzNSbGJpaHViMlJsTENBblkyeHBZMnNuTENCbGJYQjBlVVoxYm1OMGFXOXVLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnZDJsc2JFUmxiR1YwWlV4cGMzUmxibVZ5T2lCbWRXNWpkR2x2YmlBb2FXUXNJSEpsWjJsemRISmhkR2x2Yms1aGJXVXBJSHRjYmlBZ0lDQnBaaUFvY21WbmFYTjBjbUYwYVc5dVRtRnRaU0E5UFQwZ1QwNWZRMHhKUTB0ZlMwVlpLU0I3WEc0Z0lDQWdJQ0J2YmtOc2FXTnJUR2x6ZEdWdVpYSnpXMmxrWFM1eVpXMXZkbVVvS1R0Y2JpQWdJQ0FnSUdSbGJHVjBaU0J2YmtOc2FXTnJUR2x6ZEdWdVpYSnpXMmxrWFR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlRhVzF3YkdWRmRtVnVkRkJzZFdkcGJqc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBTeW50aGV0aWNFdmVudFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuICB0eXBlOiBudWxsLFxuICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3aGVuIGRpc3BhdGNoaW5nOyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlXG4gIGN1cnJlbnRUYXJnZXQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsLFxuICBldmVudFBoYXNlOiBudWxsLFxuICBidWJibGVzOiBudWxsLFxuICBjYW5jZWxhYmxlOiBudWxsLFxuICB0aW1lU3RhbXA6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcbiAgfSxcbiAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCxcbiAgaXNUcnVzdGVkOiBudWxsXG59O1xuXG4vKipcbiAqIFN5bnRoZXRpYyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5IGluIHJlc3BvbnNlIHRvIGFcbiAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuXG4gKlxuICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJlZHVjZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2VcbiAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZVxuICogZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0Y2hlZC4gVXNlcnMgdGhhdFxuICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQgaW52b2tlIGBwZXJzaXN0YC5cbiAqXG4gKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1wbGVtZW50IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5XG4gKiBub3JtYWxpemluZyBicm93c2VyIHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbXBsZW1lbnQgYVxuICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmlnO1xuICB0aGlzLmRpc3BhdGNoTWFya2VyID0gZGlzcGF0Y2hNYXJrZXI7XG4gIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcbiAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcbiAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG5cbiAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcbiAgICBpZiAoIUludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YXIgbm9ybWFsaXplID0gSW50ZXJmYWNlW3Byb3BOYW1lXTtcbiAgICBpZiAobm9ybWFsaXplKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6ZShuYXRpdmVFdmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbcHJvcE5hbWVdID0gbmF0aXZlRXZlbnRbcHJvcE5hbWVdO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkZWZhdWx0UHJldmVudGVkID0gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCAhPSBudWxsID8gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCA6IG5hdGl2ZUV2ZW50LnJldHVyblZhbHVlID09PSBmYWxzZTtcbiAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlO1xuICB9XG4gIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG59XG5cbmFzc2lnbihTeW50aGV0aWNFdmVudC5wcm90b3R5cGUsIHtcblxuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7XG4gICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZXZlbnQsICdUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVxcJ3JlICcgKyAnc2VlaW5nIHRoaXMsIHlvdVxcJ3JlIGNhbGxpbmcgYHByZXZlbnREZWZhdWx0YCBvbiBhICcgKyAncmVsZWFzZWQvbnVsbGlmaWVkIHN5bnRoZXRpYyBldmVudC4gVGhpcyBpcyBhIG5vLW9wLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZXZlbnQsICdUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdVxcJ3JlICcgKyAnc2VlaW5nIHRoaXMsIHlvdVxcJ3JlIGNhbGxpbmcgYHN0b3BQcm9wYWdhdGlvbmAgb24gYSAnICsgJ3JlbGVhc2VkL251bGxpZmllZCBzeW50aGV0aWMgZXZlbnQuIFRoaXMgaXMgYSBuby1vcC4gU2VlICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFkZGluZ1xuICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcbiAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAgKi9cbiAgcGVyc2lzdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuICAgICAgdGhpc1twcm9wTmFtZV0gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoQ29uZmlnID0gbnVsbDtcbiAgICB0aGlzLmRpc3BhdGNoTWFya2VyID0gbnVsbDtcbiAgICB0aGlzLm5hdGl2ZUV2ZW50ID0gbnVsbDtcbiAgfVxuXG59KTtcblxuU3ludGhldGljRXZlbnQuSW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7XG5cbi8qKlxuICogSGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5nIHN1YmNsYXNzZXMuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3NcbiAqIEBwYXJhbSB7P29iamVjdH0gSW50ZXJmYWNlXG4gKi9cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyA9IGZ1bmN0aW9uIChDbGFzcywgSW50ZXJmYWNlKSB7XG4gIHZhciBTdXBlciA9IHRoaXM7XG5cbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgYXNzaWduKHByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTtcbiAgQ2xhc3MucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzcztcblxuICBDbGFzcy5JbnRlcmZhY2UgPSBhc3NpZ24oe30sIFN1cGVyLkludGVyZmFjZSwgSW50ZXJmYWNlKTtcbiAgQ2xhc3MuYXVnbWVudENsYXNzID0gU3VwZXIuYXVnbWVudENsYXNzO1xuXG4gIFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDbGFzcywgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcbn07XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhTeW50aGV0aWNFdmVudCwgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZVM2x1ZEdobGRHbGpSWFpsYm5RdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRk41Ym5Sb1pYUnBZMFYyWlc1MFhHNGdLaUJBZEhsd1pXTm9aV05yY3lCemRHRjBhV010YjI1c2VWeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRkJ2YjJ4bFpFTnNZWE56SUQwZ2NtVnhkV2x5WlNnbkxpOVFiMjlzWldSRGJHRnpjeWNwTzF4dVhHNTJZWElnWVhOemFXZHVJRDBnY21WeGRXbHlaU2duTGk5UFltcGxZM1F1WVhOemFXZHVKeWs3WEc1MllYSWdaVzF3ZEhsR2RXNWpkR2x2YmlBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwyVnRjSFI1Um5WdVkzUnBiMjRuS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNHZLaXBjYmlBcUlFQnBiblJsY21aaFkyVWdSWFpsYm5SY2JpQXFJRUJ6WldVZ2FIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlZGSXZSRTlOTFV4bGRtVnNMVE10UlhabGJuUnpMMXh1SUNvdlhHNTJZWElnUlhabGJuUkpiblJsY21aaFkyVWdQU0I3WEc0Z0lIUjVjR1U2SUc1MWJHd3NYRzRnSUM4dklHTjFjbkpsYm5SVVlYSm5aWFFnYVhNZ2MyVjBJSGRvWlc0Z1pHbHpjR0YwWTJocGJtYzdJRzV2SUhWelpTQnBiaUJqYjNCNWFXNW5JR2wwSUdobGNtVmNiaUFnWTNWeWNtVnVkRlJoY21kbGREb2daVzF3ZEhsR2RXNWpkR2x2Ymk1MGFHRjBVbVYwZFhKdWMwNTFiR3dzWEc0Z0lHVjJaVzUwVUdoaGMyVTZJRzUxYkd3c1hHNGdJR0oxWW1Kc1pYTTZJRzUxYkd3c1hHNGdJR05oYm1ObGJHRmliR1U2SUc1MWJHd3NYRzRnSUhScGJXVlRkR0Z0Y0RvZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1YyWlc1MExuUnBiV1ZUZEdGdGNDQjhmQ0JFWVhSbExtNXZkeWdwTzF4dUlDQjlMRnh1SUNCa1pXWmhkV3gwVUhKbGRtVnVkR1ZrT2lCdWRXeHNMRnh1SUNCcGMxUnlkWE4wWldRNklHNTFiR3hjYm4wN1hHNWNiaThxS2x4dUlDb2dVM2x1ZEdobGRHbGpJR1YyWlc1MGN5QmhjbVVnWkdsemNHRjBZMmhsWkNCaWVTQmxkbVZ1ZENCd2JIVm5hVzV6TENCMGVYQnBZMkZzYkhrZ2FXNGdjbVZ6Y0c5dWMyVWdkRzhnWVZ4dUlDb2dkRzl3TFd4bGRtVnNJR1YyWlc1MElHUmxiR1ZuWVhScGIyNGdhR0Z1Wkd4bGNpNWNiaUFxWEc0Z0tpQlVhR1Z6WlNCemVYTjBaVzF6SUhOb2IzVnNaQ0JuWlc1bGNtRnNiSGtnZFhObElIQnZiMnhwYm1jZ2RHOGdjbVZrZFdObElIUm9aU0JtY21WeGRXVnVZM2tnYjJZZ1oyRnlZbUZuWlZ4dUlDb2dZMjlzYkdWamRHbHZiaTRnVkdobElITjVjM1JsYlNCemFHOTFiR1FnWTJobFkyc2dZR2x6VUdWeWMybHpkR1Z1ZEdBZ2RHOGdaR1YwWlhKdGFXNWxJSGRvWlhSb1pYSWdkR2hsWEc0Z0tpQmxkbVZ1ZENCemFHOTFiR1FnWW1VZ2NtVnNaV0Z6WldRZ2FXNTBieUIwYUdVZ2NHOXZiQ0JoWm5SbGNpQmlaV2x1WnlCa2FYTndZWFJqYUdWa0xpQlZjMlZ5Y3lCMGFHRjBYRzRnS2lCdVpXVmtJR0VnY0dWeWMybHpkR1ZrSUdWMlpXNTBJSE5vYjNWc1pDQnBiblp2YTJVZ1lIQmxjbk5wYzNSZ0xseHVJQ3BjYmlBcUlGTjViblJvWlhScFl5QmxkbVZ1ZEhNZ0tHRnVaQ0J6ZFdKamJHRnpjMlZ6S1NCcGJYQnNaVzFsYm5RZ2RHaGxJRVJQVFNCTVpYWmxiQ0F6SUVWMlpXNTBjeUJCVUVrZ1lubGNiaUFxSUc1dmNtMWhiR2w2YVc1bklHSnliM2R6WlhJZ2NYVnBjbXR6TGlCVGRXSmpiR0Z6YzJWeklHUnZJRzV2ZENCdVpXTmxjM05oY21sc2VTQm9ZWFpsSUhSdklHbHRjR3hsYldWdWRDQmhYRzRnS2lCRVQwMGdhVzUwWlhKbVlXTmxPeUJqZFhOMGIyMGdZWEJ3YkdsallYUnBiMjR0YzNCbFkybG1hV01nWlhabGJuUnpJR05oYmlCaGJITnZJSE4xWW1Oc1lYTnpJSFJvYVhNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUdScGMzQmhkR05vUTI5dVptbG5JRU52Ym1acFozVnlZWFJwYjI0Z2RYTmxaQ0IwYnlCa2FYTndZWFJqYUNCMGFHbHpJR1YyWlc1MExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR1JwYzNCaGRHTm9UV0Z5YTJWeUlFMWhjbXRsY2lCcFpHVnVkR2xtZVdsdVp5QjBhR1VnWlhabGJuUWdkR0Z5WjJWMExseHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzVoZEdsMlpVVjJaVzUwSUU1aGRHbDJaU0JpY205M2MyVnlJR1YyWlc1MExseHVJQ292WEc1bWRXNWpkR2x2YmlCVGVXNTBhR1YwYVdORmRtVnVkQ2hrYVhOd1lYUmphRU52Ym1acFp5d2daR2x6Y0dGMFkyaE5ZWEpyWlhJc0lHNWhkR2wyWlVWMlpXNTBMQ0J1WVhScGRtVkZkbVZ1ZEZSaGNtZGxkQ2tnZTF4dUlDQjBhR2x6TG1ScGMzQmhkR05vUTI5dVptbG5JRDBnWkdsemNHRjBZMmhEYjI1bWFXYzdYRzRnSUhSb2FYTXVaR2x6Y0dGMFkyaE5ZWEpyWlhJZ1BTQmthWE53WVhSamFFMWhjbXRsY2p0Y2JpQWdkR2hwY3k1dVlYUnBkbVZGZG1WdWRDQTlJRzVoZEdsMlpVVjJaVzUwTzF4dUlDQjBhR2x6TG5SaGNtZGxkQ0E5SUc1aGRHbDJaVVYyWlc1MFZHRnlaMlYwTzF4dUlDQjBhR2x6TG1OMWNuSmxiblJVWVhKblpYUWdQU0J1WVhScGRtVkZkbVZ1ZEZSaGNtZGxkRHRjYmx4dUlDQjJZWElnU1c1MFpYSm1ZV05sSUQwZ2RHaHBjeTVqYjI1emRISjFZM1J2Y2k1SmJuUmxjbVpoWTJVN1hHNGdJR1p2Y2lBb2RtRnlJSEJ5YjNCT1lXMWxJR2x1SUVsdWRHVnlabUZqWlNrZ2UxeHVJQ0FnSUdsbUlDZ2hTVzUwWlhKbVlXTmxMbWhoYzA5M2JsQnliM0JsY25SNUtIQnliM0JPWVcxbEtTa2dlMXh1SUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnViM0p0WVd4cGVtVWdQU0JKYm5SbGNtWmhZMlZiY0hKdmNFNWhiV1ZkTzF4dUlDQWdJR2xtSUNodWIzSnRZV3hwZW1VcElIdGNiaUFnSUNBZ0lIUm9hWE5iY0hKdmNFNWhiV1ZkSUQwZ2JtOXliV0ZzYVhwbEtHNWhkR2wyWlVWMlpXNTBLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjMXR3Y205d1RtRnRaVjBnUFNCdVlYUnBkbVZGZG1WdWRGdHdjbTl3VG1GdFpWMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdkbUZ5SUdSbFptRjFiSFJRY21WMlpXNTBaV1FnUFNCdVlYUnBkbVZGZG1WdWRDNWtaV1poZFd4MFVISmxkbVZ1ZEdWa0lDRTlJRzUxYkd3Z1B5QnVZWFJwZG1WRmRtVnVkQzVrWldaaGRXeDBVSEpsZG1WdWRHVmtJRG9nYm1GMGFYWmxSWFpsYm5RdWNtVjBkWEp1Vm1Gc2RXVWdQVDA5SUdaaGJITmxPMXh1SUNCcFppQW9aR1ZtWVhWc2RGQnlaWFpsYm5SbFpDa2dlMXh1SUNBZ0lIUm9hWE11YVhORVpXWmhkV3gwVUhKbGRtVnVkR1ZrSUQwZ1pXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzFSeWRXVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdkR2hwY3k1cGMwUmxabUYxYkhSUWNtVjJaVzUwWldRZ1BTQmxiWEIwZVVaMWJtTjBhVzl1TG5Sb1lYUlNaWFIxY201elJtRnNjMlU3WEc0Z0lIMWNiaUFnZEdocGN5NXBjMUJ5YjNCaFoyRjBhVzl1VTNSdmNIQmxaQ0E5SUdWdGNIUjVSblZ1WTNScGIyNHVkR2hoZEZKbGRIVnlibk5HWVd4elpUdGNibjFjYmx4dVlYTnphV2R1S0ZONWJuUm9aWFJwWTBWMlpXNTBMbkJ5YjNSdmRIbHdaU3dnZTF4dVhHNGdJSEJ5WlhabGJuUkVaV1poZFd4ME9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdkR2hwY3k1a1pXWmhkV3gwVUhKbGRtVnVkR1ZrSUQwZ2RISjFaVHRjYmlBZ0lDQjJZWElnWlhabGJuUWdQU0IwYUdsekxtNWhkR2wyWlVWMlpXNTBPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aGxkbVZ1ZEN3Z0oxUm9hWE1nYzNsdWRHaGxkR2xqSUdWMlpXNTBJR2x6SUhKbGRYTmxaQ0JtYjNJZ2NHVnlabTl5YldGdVkyVWdjbVZoYzI5dWN5NGdTV1lnZVc5MVhGd25jbVVnSnlBcklDZHpaV1ZwYm1jZ2RHaHBjeXdnZVc5MVhGd25jbVVnWTJGc2JHbHVaeUJnY0hKbGRtVnVkRVJsWm1GMWJIUmdJRzl1SUdFZ0p5QXJJQ2R5Wld4bFlYTmxaQzl1ZFd4c2FXWnBaV1FnYzNsdWRHaGxkR2xqSUdWMlpXNTBMaUJVYUdseklHbHpJR0VnYm04dGIzQXVJRk5sWlNBbklDc2dKMmgwZEhCek9pOHZabUl1YldVdmNtVmhZM1F0WlhabGJuUXRjRzl2YkdsdVp5Qm1iM0lnYlc5eVpTQnBibVp2Y20xaGRHbHZiaTRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tDRmxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNobGRtVnVkQzV3Y21WMlpXNTBSR1ZtWVhWc2RDa2dlMXh1SUNBZ0lDQWdaWFpsYm5RdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdaWFpsYm5RdWNtVjBkWEp1Vm1Gc2RXVWdQU0JtWVd4elpUdGNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NXBjMFJsWm1GMWJIUlFjbVYyWlc1MFpXUWdQU0JsYlhCMGVVWjFibU4wYVc5dUxuUm9ZWFJTWlhSMWNtNXpWSEoxWlR0Y2JpQWdmU3hjYmx4dUlDQnpkRzl3VUhKdmNHRm5ZWFJwYjI0NklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjJZWElnWlhabGJuUWdQU0IwYUdsekxtNWhkR2wyWlVWMlpXNTBPMXh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aGxkbVZ1ZEN3Z0oxUm9hWE1nYzNsdWRHaGxkR2xqSUdWMlpXNTBJR2x6SUhKbGRYTmxaQ0JtYjNJZ2NHVnlabTl5YldGdVkyVWdjbVZoYzI5dWN5NGdTV1lnZVc5MVhGd25jbVVnSnlBcklDZHpaV1ZwYm1jZ2RHaHBjeXdnZVc5MVhGd25jbVVnWTJGc2JHbHVaeUJnYzNSdmNGQnliM0JoWjJGMGFXOXVZQ0J2YmlCaElDY2dLeUFuY21Wc1pXRnpaV1F2Ym5Wc2JHbG1hV1ZrSUhONWJuUm9aWFJwWXlCbGRtVnVkQzRnVkdocGN5QnBjeUJoSUc1dkxXOXdMaUJUWldVZ0p5QXJJQ2RvZEhSd2N6b3ZMMlppTG0xbEwzSmxZV04wTFdWMlpXNTBMWEJ2YjJ4cGJtY2dabTl5SUcxdmNtVWdhVzVtYjNKdFlYUnBiMjR1SnlrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDZ2haWFpsYm5RcElIdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1pYWmxiblF1YzNSdmNGQnliM0JoWjJGMGFXOXVLU0I3WEc0Z0lDQWdJQ0JsZG1WdWRDNXpkRzl3VUhKdmNHRm5ZWFJwYjI0b0tUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWlhabGJuUXVZMkZ1WTJWc1FuVmlZbXhsSUQwZ2RISjFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTVwYzFCeWIzQmhaMkYwYVc5dVUzUnZjSEJsWkNBOUlHVnRjSFI1Um5WdVkzUnBiMjR1ZEdoaGRGSmxkSFZ5Ym5OVWNuVmxPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCWFpTQnlaV3hsWVhObElHRnNiQ0JrYVhOd1lYUmphR1ZrSUdCVGVXNTBhR1YwYVdORmRtVnVkR0J6SUdGbWRHVnlJR1ZoWTJnZ1pYWmxiblFnYkc5dmNDd2dZV1JrYVc1blhHNGdJQ0FxSUhSb1pXMGdZbUZqYXlCcGJuUnZJSFJvWlNCd2IyOXNMaUJVYUdseklHRnNiRzkzY3lCaElIZGhlU0IwYnlCb2IyeGtJRzl1ZEc4Z1lTQnlaV1psY21WdVkyVWdkR2hoZEZ4dUlDQWdLaUIzYjI0bmRDQmlaU0JoWkdSbFpDQmlZV05ySUdsdWRHOGdkR2hsSUhCdmIyd3VYRzRnSUNBcUwxeHVJQ0J3WlhKemFYTjBPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZEdocGN5NXBjMUJsY25OcGMzUmxiblFnUFNCbGJYQjBlVVoxYm1OMGFXOXVMblJvWVhSU1pYUjFjbTV6VkhKMVpUdGNiaUFnZlN4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJobFkydHpJR2xtSUhSb2FYTWdaWFpsYm5RZ2MyaHZkV3hrSUdKbElISmxiR1ZoYzJWa0lHSmhZMnNnYVc1MGJ5QjBhR1VnY0c5dmJDNWNiaUFnSUNwY2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVkhKMVpTQnBaaUIwYUdseklITm9iM1ZzWkNCdWIzUWdZbVVnY21Wc1pXRnpaV1FzSUdaaGJITmxJRzkwYUdWeWQybHpaUzVjYmlBZ0lDb3ZYRzRnSUdselVHVnljMmx6ZEdWdWREb2daVzF3ZEhsR2RXNWpkR2x2Ymk1MGFHRjBVbVYwZFhKdWMwWmhiSE5sTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJnVUc5dmJHVmtRMnhoYzNOZ0lHeHZiMnR6SUdadmNpQmdaR1Z6ZEhKMVkzUnZjbUFnYjI0Z1pXRmphQ0JwYm5OMFlXNWpaU0JwZENCeVpXeGxZWE5sY3k1Y2JpQWdJQ292WEc0Z0lHUmxjM1J5ZFdOMGIzSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IyWVhJZ1NXNTBaWEptWVdObElEMGdkR2hwY3k1amIyNXpkSEoxWTNSdmNpNUpiblJsY21aaFkyVTdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NISnZjRTVoYldVZ2FXNGdTVzUwWlhKbVlXTmxLU0I3WEc0Z0lDQWdJQ0IwYUdselczQnliM0JPWVcxbFhTQTlJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJSFJvYVhNdVpHbHpjR0YwWTJoRGIyNW1hV2NnUFNCdWRXeHNPMXh1SUNBZ0lIUm9hWE11WkdsemNHRjBZMmhOWVhKclpYSWdQU0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVibUYwYVhabFJYWmxiblFnUFNCdWRXeHNPMXh1SUNCOVhHNWNibjBwTzF4dVhHNVRlVzUwYUdWMGFXTkZkbVZ1ZEM1SmJuUmxjbVpoWTJVZ1BTQkZkbVZ1ZEVsdWRHVnlabUZqWlR0Y2JseHVMeW9xWEc0Z0tpQklaV3h3WlhJZ2RHOGdjbVZrZFdObElHSnZhV3hsY25Cc1lYUmxJSGRvWlc0Z1kzSmxZWFJwYm1jZ2MzVmlZMnhoYzNObGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQkRiR0Z6YzF4dUlDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQkpiblJsY21aaFkyVmNiaUFxTDF4dVUzbHVkR2hsZEdsalJYWmxiblF1WVhWbmJXVnVkRU5zWVhOeklEMGdablZ1WTNScGIyNGdLRU5zWVhOekxDQkpiblJsY21aaFkyVXBJSHRjYmlBZ2RtRnlJRk4xY0dWeUlEMGdkR2hwY3p0Y2JseHVJQ0IyWVhJZ2NISnZkRzkwZVhCbElEMGdUMkpxWldOMExtTnlaV0YwWlNoVGRYQmxjaTV3Y205MGIzUjVjR1VwTzF4dUlDQmhjM05wWjI0b2NISnZkRzkwZVhCbExDQkRiR0Z6Y3k1d2NtOTBiM1I1Y0dVcE8xeHVJQ0JEYkdGemN5NXdjbTkwYjNSNWNHVWdQU0J3Y205MGIzUjVjR1U3WEc0Z0lFTnNZWE56TG5CeWIzUnZkSGx3WlM1amIyNXpkSEoxWTNSdmNpQTlJRU5zWVhOek8xeHVYRzRnSUVOc1lYTnpMa2x1ZEdWeVptRmpaU0E5SUdGemMybG5iaWg3ZlN3Z1UzVndaWEl1U1c1MFpYSm1ZV05sTENCSmJuUmxjbVpoWTJVcE8xeHVJQ0JEYkdGemN5NWhkV2R0Wlc1MFEyeGhjM01nUFNCVGRYQmxjaTVoZFdkdFpXNTBRMnhoYzNNN1hHNWNiaUFnVUc5dmJHVmtRMnhoYzNNdVlXUmtVRzl2YkdsdVoxUnZLRU5zWVhOekxDQlFiMjlzWldSRGJHRnpjeTVtYjNWeVFYSm5kVzFsYm5SUWIyOXNaWElwTzF4dWZUdGNibHh1VUc5dmJHVmtRMnhoYzNNdVlXUmtVRzl2YkdsdVoxUnZLRk41Ym5Sb1pYUnBZMFYyWlc1MExDQlFiMjlzWldSRGJHRnpjeTVtYjNWeVFYSm5kVzFsYm5SUWIyOXNaWElwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGTjViblJvWlhScFkwVjJaVzUwT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIFRyYW5zYWN0aW9uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogYFRyYW5zYWN0aW9uYCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3cmFwIGFueSBtZXRob2Qgc3VjaCB0aGF0XG4gKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWRcbiAqIChFdmVuIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gd2hpbGUgaW52b2tpbmcgdGhlIHdyYXBwZWQgbWV0aG9kKS4gV2hvZXZlclxuICogaW5zdGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5mb3JjZXJzIG9mIHRoZSBpbnZhcmlhbnRzIGF0XG4gKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBpdHNlbGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWxcbiAqIGF1dG9tYXRpYyBpbnZhcmlhbnQgZm9yIHlvdSAtIHRoZSBpbnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rpb24gaW5zdGFuY2VcbiAqIHNob3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVpbmcgcnVuLiBZb3Ugd291bGQgdHlwaWNhbGx5IGNyZWF0ZSBhXG4gKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rpb25gIGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseVxuICogaXMgdXNlZCB0byB3cmFwIHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBwZXJzIGFyZSBleHRyZW1lbHkgc2ltcGxlIC1cbiAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVudGluZyB0d28gbWV0aG9kcy5cbiAqXG4gKiA8cHJlPlxuICogICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJzIChpbmplY3RlZCBhdCBjcmVhdGlvbiB0aW1lKVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICtcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tK1xuICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgICstLXwgICAgd3JhcHBlcjEgICB8LS0tfC0tLS0rICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgIHYgICAgfCAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICstLS0tfCAgIHdyYXBwZXIyICB8LS0tLS0tLS0rICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICB2ICAgICB2ICAgfCB3cmFwcGVyXG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzXG4gKiBwZXJmb3JtKGFueU1ldGhvZCkgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfCBtYWludGFpbmVkXG4gKiArLS0tLS0tLS0tLS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8LS0tfC0tLXwtfC0tLXwtfC0tLS0tLS0tPlxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICBpbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBjbG9zZSAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICogPC9wcmU+XG4gKlxuICogVXNlIGNhc2VzOlxuICogLSBQcmVzZXJ2aW5nIHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlhdGlvbi5cbiAqICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBldmVudCBvZiBhbiB1bmV4cGVjdGVkIGVycm9yLlxuICogLSBEZWFjdGl2YXRpbmcgZXZlbnRzIHdoaWxlIHJlYXJyYW5naW5nIHRoZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcyxcbiAqICAgd2hpbGUgZ3VhcmFudGVlaW5nIHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2YXRlZC5cbiAqIC0gRmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0aW9ucyB0byB0aGUgbWFpbiBVSSB0aHJlYWQgYWZ0ZXIgYVxuICogICByZWNvbmNpbGlhdGlvbiB0YWtlcyBwbGFjZSBpbiBhIHdvcmtlciB0aHJlYWQuXG4gKiAtIEludm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXdcbiAqICAgY29udGVudC5cbiAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBwaW5nIHBhcnRpY3VsYXIgZmx1c2hlcyBvZiB0aGUgYFJlYWN0V29ya2VyYCBxdWV1ZVxuICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9sbFRvcGAgKGFuIGF1dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS5cbiAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IExheW91dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBkYXRlcy5cbiAqXG4gKiBUcmFuc2FjdGlvbmFsIHBsdWdpbiBBUEk6XG4gKiAtIEEgbW9kdWxlIHRoYXQgaGFzIGFuIGBpbml0aWFsaXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21wdXRhdGlvbi5cbiAqIC0gYW5kIGEgYGNsb3NlYCBtZXRob2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21wdXRhdGlvbi4gYGNsb3NlYCBpcyBpbnZva2VkXG4gKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9yIGhhcyBmYWlsZWQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxUcmFuc2FjdGlvbmFsV3JhcHBlcj59IHRyYW5zYWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXNcbiAqIHRoYXQgaW1wbGVtZW50IGBpbml0aWFsaXplYCBhbmQgYGNsb3NlYC5cbiAqIEByZXR1cm4ge1RyYW5zYWN0aW9ufSBTaW5nbGUgdHJhbnNhY3Rpb24gZm9yIHJldXNlIGluIHRocmVhZC5cbiAqXG4gKiBAY2xhc3MgVHJhbnNhY3Rpb25cbiAqL1xudmFyIE1peGluID0ge1xuICAvKipcbiAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuICAgKiBzbyBzdWNoIHRoYXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBhbHJlYWR5XG4gICAqIGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgdXBvbiByZXVzZS5cbiAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxuICAgKiBcIlBvb2xlZENsYXNzXCIuXG4gICAqL1xuICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygpO1xuICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuICAgICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cmFwcGVySW5pdERhdGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gIH0sXG5cbiAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBBcnJheSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IG51bGwsXG5cbiAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5faXNJblRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgZnVuY3Rpb24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0b3AgbGV2ZWxcbiAgICogbWV0aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNvbXB1dGF0aW9uL211dGF0aW9ucyB0aGF0IHdvdWxkXG4gICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuICAgKiB0byBiaW5kIGluIG1hbnkgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1iZXIgb2Ygc2NvcGUgdG8gY2FsbC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHNjb3BlIFNjb3BlIHRvIGludm9rZSBmcm9tLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFsdWUgZnJvbSBgbWV0aG9kYC5cbiAgICovXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gICAgISF0aGlzLmlzSW5UcmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRpYWxpemUgYSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJlICcgKyAnaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGVycm9yVGhyb3duO1xuICAgIHZhciByZXQ7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IHRydWU7XG4gICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG4gICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nXG4gICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxzIHRocmV3LlxuICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgdGhpcy5pbml0aWFsaXplQWxsKDApO1xuICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpO1xuICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgLy8gSWYgYG1ldGhvZGAgdGhyb3dzLCBwcmVmZXIgdG8gc2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93blxuICAgICAgICAgIC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0aHJvdywgd2UgZG9uJ3Qgd2FudCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb25cbiAgICAgICAgICAvLyBoZXJlLlxuICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIGluaXRpYWxpemVBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZVxuICAgICAgICAvLyBPQlNFUlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQgd2l0aCB0aGUgcmVhbCByZXR1cm4gdmFsdWVcbiAgICAgICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byBPQlNFUlZFRF9FUlJPUiBpbiB0aGUgZmluYWxseVxuICAgICAgICAvLyBibG9jaywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRocmV3LlxuICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IFRyYW5zYWN0aW9uLk9CU0VSVkVEX0VSUk9SO1xuICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IHdyYXBwZXIuaW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpIDogbnVsbDtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9PT0gVHJhbnNhY3Rpb24uT0JTRVJWRURfRVJST1IpIHtcbiAgICAgICAgICAvLyBUaGUgaW5pdGlhbGl6ZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGVcbiAgICAgICAgICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZVxuICAgICAgICAgIC8vIHRoYXQgdGhlIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVBbGwoaSArIDEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW52b2tlcyBlYWNoIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywgcGFzc2luZyBpbnRvXG4gICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmluaXRbaV1gXG4gICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNwb25kIHRvIGluaXRpYWxpemVycyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZVxuICAgKiBpbnZva2VkKS5cbiAgICovXG4gIGNsb3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgICF0aGlzLmlzSW5UcmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNsb3NlQWxsKCk6IENhbm5vdCBjbG9zZSB0cmFuc2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdmFyIGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07XG4gICAgICB2YXIgZXJyb3JUaHJvd247XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG4gICAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmdcbiAgICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJldy5cbiAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgICBpZiAoaW5pdERhdGEgIT09IFRyYW5zYWN0aW9uLk9CU0VSVkVEX0VSUk9SICYmIHdyYXBwZXIuY2xvc2UpIHtcbiAgICAgICAgICB3cmFwcGVyLmNsb3NlLmNhbGwodGhpcywgaW5pdERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAvLyBUaGUgY2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGNsb3NlIHRoZSByZW1haW5pbmdcbiAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlXG4gICAgICAgICAgLy8gZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoaSArIDEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgfVxufTtcblxudmFyIFRyYW5zYWN0aW9uID0ge1xuXG4gIE1peGluOiBNaXhpbixcblxuICAvKipcbiAgICogVG9rZW4gdG8gbG9vayBmb3IgdG8gZGV0ZXJtaW5lIGlmIGFuIGVycm9yIG9jY3VycmVkLlxuICAgKi9cbiAgT0JTRVJWRURfRVJST1I6IHt9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNhY3Rpb247XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2VkhKaGJuTmhZM1JwYjI0dWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW1acGJHVWlPaUpuWlc1bGNtRjBaV1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ01qQXhNeTB5TURFMUxDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDb2dRV3hzSUhKcFoyaDBjeUJ5WlhObGNuWmxaQzVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCQ1UwUXRjM1I1YkdVZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM0Z1FXNGdZV1JrYVhScGIyNWhiQ0JuY21GdWRGeHVJQ29nYjJZZ2NHRjBaVzUwSUhKcFoyaDBjeUJqWVc0Z1ltVWdabTkxYm1RZ2FXNGdkR2hsSUZCQlZFVk9WRk1nWm1sc1pTQnBiaUIwYUdVZ2MyRnRaU0JrYVhKbFkzUnZjbmt1WEc0Z0tseHVJQ29nUUhCeWIzWnBaR1Z6VFc5a2RXeGxJRlJ5WVc1ellXTjBhVzl1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1lGUnlZVzV6WVdOMGFXOXVZQ0JqY21WaGRHVnpJR0VnWW14aFkyc2dZbTk0SUhSb1lYUWdhWE1nWVdKc1pTQjBieUIzY21Gd0lHRnVlU0J0WlhSb2IyUWdjM1ZqYUNCMGFHRjBYRzRnS2lCalpYSjBZV2x1SUdsdWRtRnlhV0Z1ZEhNZ1lYSmxJRzFoYVc1MFlXbHVaV1FnWW1WbWIzSmxJR0Z1WkNCaFpuUmxjaUIwYUdVZ2JXVjBhRzlrSUdseklHbHVkbTlyWldSY2JpQXFJQ2hGZG1WdUlHbG1JR0Z1SUdWNFkyVndkR2x2YmlCcGN5QjBhSEp2ZDI0Z2QyaHBiR1VnYVc1MmIydHBibWNnZEdobElIZHlZWEJ3WldRZ2JXVjBhRzlrS1M0Z1YyaHZaWFpsY2x4dUlDb2dhVzV6ZEdGdWRHbGhkR1Z6SUdFZ2RISmhibk5oWTNScGIyNGdZMkZ1SUhCeWIzWnBaR1VnWlc1bWIzSmpaWEp6SUc5bUlIUm9aU0JwYm5aaGNtbGhiblJ6SUdGMFhHNGdLaUJqY21WaGRHbHZiaUIwYVcxbExpQlVhR1VnWUZSeVlXNXpZV04wYVc5dVlDQmpiR0Z6Y3lCcGRITmxiR1lnZDJsc2JDQnpkWEJ3YkhrZ2IyNWxJR0ZrWkdsMGFXOXVZV3hjYmlBcUlHRjFkRzl0WVhScFl5QnBiblpoY21saGJuUWdabTl5SUhsdmRTQXRJSFJvWlNCcGJuWmhjbWxoYm5RZ2RHaGhkQ0JoYm5rZ2RISmhibk5oWTNScGIyNGdhVzV6ZEdGdVkyVmNiaUFxSUhOb2IzVnNaQ0J1YjNRZ1ltVWdjblZ1SUhkb2FXeGxJR2wwSUdseklHRnNjbVZoWkhrZ1ltVnBibWNnY25WdUxpQlpiM1VnZDI5MWJHUWdkSGx3YVdOaGJHeDVJR055WldGMFpTQmhYRzRnS2lCemFXNW5iR1VnYVc1emRHRnVZMlVnYjJZZ1lTQmdWSEpoYm5OaFkzUnBiMjVnSUdadmNpQnlaWFZ6WlNCdGRXeDBhWEJzWlNCMGFXMWxjeXdnZEdoaGRDQndiM1JsYm5ScFlXeHNlVnh1SUNvZ2FYTWdkWE5sWkNCMGJ5QjNjbUZ3SUhObGRtVnlZV3dnWkdsbVptVnlaVzUwSUcxbGRHaHZaSE11SUZkeVlYQndaWEp6SUdGeVpTQmxlSFJ5WlcxbGJIa2djMmx0Y0d4bElDMWNiaUFxSUhSb1pYa2diMjVzZVNCeVpYRjFhWEpsSUdsdGNHeGxiV1Z1ZEdsdVp5QjBkMjhnYldWMGFHOWtjeTVjYmlBcVhHNGdLaUE4Y0hKbFBseHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIZHlZWEJ3WlhKeklDaHBibXBsWTNSbFpDQmhkQ0JqY21WaGRHbHZiaUIwYVcxbEtWeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNzZ0lDQWdJQ0FnSUN0Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNBZ0lDQWdJQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLeTB0TFMwdExTMHRMUzB0TFMwdExTMHRmQzB0TFMwdExTMHRmQzB0TFMwdExTMHRMUzB0TFMwdEsxeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhZZ0lDQWdJQ0FnSUh3Z0lDQWdJQ0FnSUNBZ0lDQWdJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0FnSUNBZ0t5MHRMUzB0TFMwdExTMHRMUzB0TFNzZ0lDQjhJQ0FnSUNBZ0lDQWdJQ0FnSUNCOFhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBZ0lDc3RMWHdnSUNBZ2QzSmhjSEJsY2pFZ0lDQjhMUzB0ZkMwdExTMHJJQ0FnSUNBZ0lDQWdmRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lId2dJQ0I4SUNBckxTMHRMUzB0TFMwdExTMHRMUzB0S3lBZ0lIWWdJQ0FnZkNBZ0lDQWdJQ0FnSUh4Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNBZ2ZDQWdJQ0FnSUNBZ0lDQXJMUzB0TFMwdExTMHRMUzB0TFNzZ0lId2dJQ0FnSUNBZ0lDQjhYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZDQWdJSHdnSUNBZ0lDc3RMUzB0ZkNBZ0lIZHlZWEJ3WlhJeUlDQjhMUzB0TFMwdExTMHJJQ0FnZkZ4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUNCOElDQWdJQ0I4SUNBZ0lDc3RMUzB0TFMwdExTMHRMUzB0S3lBZ2ZDQWdJQ0FnZkNBZ0lIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElDQWdmQ0FnSUNBZ2ZDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnSUNBZ0lId2dJQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FnSUhZZ0lDQWdJSFlnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMklDQWdJQ0IySUNBZ2ZDQjNjbUZ3Y0dWeVhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkNBckxTMHRLeUFyTFMwdEt5QWdJQ3N0TFMwdExTMHRMUzBySUNBZ0t5MHRMU3NnS3kwdExTc2dmQ0JwYm5aaGNtbGhiblJ6WEc0Z0tpQndaWEptYjNKdEtHRnVlVTFsZEdodlpDa2dmQ0I4SUNBZ2ZDQjhJQ0FnZkNBZ0lId2dJQ0FnSUNBZ0lDQjhJQ0FnZkNBZ0lId2dmQ0FnSUh3Z2ZDQnRZV2x1ZEdGcGJtVmtYRzRnS2lBckxTMHRMUzB0TFMwdExTMHRMUzB0TFMwK2ZDMThMUzB0ZkMxOExTMHRmQzB0UG54aGJubE5aWFJvYjJSOExTMHRmQzB0TFh3dGZDMHRMWHd0ZkMwdExTMHRMUzB0UGx4dUlDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHdnZkNBZ0lId2dmQ0FnSUh3Z0lDQjhJQ0FnSUNBZ0lDQWdmQ0FnSUh3Z0lDQjhJSHdnSUNCOElIeGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOElId2dJQ0I4SUh3Z0lDQjhJQ0FnZkNBZ0lDQWdJQ0FnSUh3Z0lDQjhJQ0FnZkNCOElDQWdmQ0I4WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0I4SUNBZ2ZDQjhJQ0FnZkNBZ0lId2dJQ0FnSUNBZ0lDQjhJQ0FnZkNBZ0lId2dmQ0FnSUh3Z2ZGeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh3Z0t5MHRMU3NnS3kwdExTc2dJQ0FyTFMwdExTMHRMUzB0S3lBZ0lDc3RMUzBySUNzdExTMHJJSHhjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjhJQ0JwYm1sMGFXRnNhWHBsSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamJHOXpaU0FnSUNCOFhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS3kwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRLMXh1SUNvZ1BDOXdjbVUrWEc0Z0tseHVJQ29nVlhObElHTmhjMlZ6T2x4dUlDb2dMU0JRY21WelpYSjJhVzVuSUhSb1pTQnBibkIxZENCelpXeGxZM1JwYjI0Z2NtRnVaMlZ6SUdKbFptOXlaUzloWm5SbGNpQnlaV052Ym1OcGJHbGhkR2x2Ymk1Y2JpQXFJQ0FnVW1WemRHOXlhVzVuSUhObGJHVmpkR2x2YmlCbGRtVnVJR2x1SUhSb1pTQmxkbVZ1ZENCdlppQmhiaUIxYm1WNGNHVmpkR1ZrSUdWeWNtOXlMbHh1SUNvZ0xTQkVaV0ZqZEdsMllYUnBibWNnWlhabGJuUnpJSGRvYVd4bElISmxZWEp5WVc1bmFXNW5JSFJvWlNCRVQwMHNJSEJ5WlhabGJuUnBibWNnWW14MWNuTXZabTlqZFhObGN5eGNiaUFxSUNBZ2QyaHBiR1VnWjNWaGNtRnVkR1ZsYVc1bklIUm9ZWFFnWVdaMFpYSjNZWEprY3l3Z2RHaGxJR1YyWlc1MElITjVjM1JsYlNCcGN5QnlaV0ZqZEdsMllYUmxaQzVjYmlBcUlDMGdSbXgxYzJocGJtY2dZU0J4ZFdWMVpTQnZaaUJqYjJ4c1pXTjBaV1FnUkU5TklHMTFkR0YwYVc5dWN5QjBieUIwYUdVZ2JXRnBiaUJWU1NCMGFISmxZV1FnWVdaMFpYSWdZVnh1SUNvZ0lDQnlaV052Ym1OcGJHbGhkR2x2YmlCMFlXdGxjeUJ3YkdGalpTQnBiaUJoSUhkdmNtdGxjaUIwYUhKbFlXUXVYRzRnS2lBdElFbHVkbTlyYVc1bklHRnVlU0JqYjJ4c1pXTjBaV1FnWUdOdmJYQnZibVZ1ZEVScFpGVndaR0YwWldBZ1kyRnNiR0poWTJ0eklHRm1kR1Z5SUhKbGJtUmxjbWx1WnlCdVpYZGNiaUFxSUNBZ1kyOXVkR1Z1ZEM1Y2JpQXFJQzBnS0VaMWRIVnlaU0IxYzJVZ1kyRnpaU2s2SUZkeVlYQndhVzVuSUhCaGNuUnBZM1ZzWVhJZ1pteDFjMmhsY3lCdlppQjBhR1VnWUZKbFlXTjBWMjl5YTJWeVlDQnhkV1YxWlZ4dUlDb2dJQ0IwYnlCd2NtVnpaWEoyWlNCMGFHVWdZSE5qY205c2JGUnZjR0FnS0dGdUlHRjFkRzl0WVhScFl5QnpZM0p2Ykd3Z1lYZGhjbVVnUkU5TktTNWNiaUFxSUMwZ0tFWjFkSFZ5WlNCMWMyVWdZMkZ6WlNrNklFeGhlVzkxZENCallXeGpkV3hoZEdsdmJuTWdZbVZtYjNKbElHRnVaQ0JoWm5SbGNpQkVUMDBnZFhCa1lYUmxjeTVjYmlBcVhHNGdLaUJVY21GdWMyRmpkR2x2Ym1Gc0lIQnNkV2RwYmlCQlVFazZYRzRnS2lBdElFRWdiVzlrZFd4bElIUm9ZWFFnYUdGeklHRnVJR0JwYm1sMGFXRnNhWHBsWUNCdFpYUm9iMlFnZEdoaGRDQnlaWFIxY201eklHRnVlU0J3Y21WamIyMXdkWFJoZEdsdmJpNWNiaUFxSUMwZ1lXNWtJR0VnWUdOc2IzTmxZQ0J0WlhSb2IyUWdkR2hoZENCaFkyTmxjSFJ6SUhSb1pTQndjbVZqYjIxd2RYUmhkR2x2Ymk0Z1lHTnNiM05sWUNCcGN5QnBiblp2YTJWa1hHNGdLaUFnSUhkb1pXNGdkR2hsSUhkeVlYQndaV1FnY0hKdlkyVnpjeUJwY3lCamIyMXdiR1YwWldRc0lHOXlJR2hoY3lCbVlXbHNaV1F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVUeFVjbUZ1YzJGamRHbHZibUZzVjNKaGNIQmxjajU5SUhSeVlXNXpZV04wYVc5dVYzSmhjSEJsY2lCWGNtRndjR1Z5SUcxdlpIVnNaWE5jYmlBcUlIUm9ZWFFnYVcxd2JHVnRaVzUwSUdCcGJtbDBhV0ZzYVhwbFlDQmhibVFnWUdOc2IzTmxZQzVjYmlBcUlFQnlaWFIxY200Z2UxUnlZVzV6WVdOMGFXOXVmU0JUYVc1bmJHVWdkSEpoYm5OaFkzUnBiMjRnWm05eUlISmxkWE5sSUdsdUlIUm9jbVZoWkM1Y2JpQXFYRzRnS2lCQVkyeGhjM01nVkhKaGJuTmhZM1JwYjI1Y2JpQXFMMXh1ZG1GeUlFMXBlR2x1SUQwZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nVTJWMGN5QjFjQ0IwYUdseklHbHVjM1JoYm1ObElITnZJSFJvWVhRZ2FYUWdhWE1nY0hKbGNHRnlaV1FnWm05eUlHTnZiR3hsWTNScGJtY2diV1YwY21samN5NGdSRzlsYzF4dUlDQWdLaUJ6YnlCemRXTm9JSFJvWVhRZ2RHaHBjeUJ6WlhSMWNDQnRaWFJvYjJRZ2JXRjVJR0psSUhWelpXUWdiMjRnWVc0Z2FXNXpkR0Z1WTJVZ2RHaGhkQ0JwY3lCaGJISmxZV1I1WEc0Z0lDQXFJR2x1YVhScFlXeHBlbVZrTENCcGJpQmhJSGRoZVNCMGFHRjBJR1J2WlhNZ2JtOTBJR052Ym5OMWJXVWdZV1JrYVhScGIyNWhiQ0J0WlcxdmNua2dkWEJ2YmlCeVpYVnpaUzVjYmlBZ0lDb2dWR2hoZENCallXNGdZbVVnZFhObFpuVnNJR2xtSUhsdmRTQmtaV05wWkdVZ2RHOGdiV0ZyWlNCNWIzVnlJSE4xWW1Oc1lYTnpJRzltSUhSb2FYTWdiV2w0YVc0Z1lWeHVJQ0FnS2lCY0lsQnZiMnhsWkVOc1lYTnpYQ0l1WEc0Z0lDQXFMMXh1SUNCeVpXbHVhWFJwWVd4cGVtVlVjbUZ1YzJGamRHbHZiam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhSb2FYTXVkSEpoYm5OaFkzUnBiMjVYY21Gd2NHVnljeUE5SUhSb2FYTXVaMlYwVkhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3lncE8xeHVJQ0FnSUdsbUlDaDBhR2x6TG5keVlYQndaWEpKYm1sMFJHRjBZU2tnZTF4dUlDQWdJQ0FnZEdocGN5NTNjbUZ3Y0dWeVNXNXBkRVJoZEdFdWJHVnVaM1JvSUQwZ01EdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdocGN5NTNjbUZ3Y0dWeVNXNXBkRVJoZEdFZ1BTQmJYVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTVmYVhOSmJsUnlZVzV6WVdOMGFXOXVJRDBnWm1Gc2MyVTdYRzRnSUgwc1hHNWNiaUFnWDJselNXNVVjbUZ1YzJGamRHbHZiam9nWm1Gc2MyVXNYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmhZbk4wY21GamRGeHVJQ0FnS2lCQWNtVjBkWEp1SUh0QmNuSmhlVHhVY21GdWMyRmpkR2x2YmxkeVlYQndaWEkrZlNCQmNuSmhlU0J2WmlCMGNtRnVjMkZqZEdsdmJpQjNjbUZ3Y0dWeWN5NWNiaUFnSUNvdlhHNGdJR2RsZEZSeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NNklHNTFiR3dzWEc1Y2JpQWdhWE5KYmxSeVlXNXpZV04wYVc5dU9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlDRWhkR2hwY3k1ZmFYTkpibFJ5WVc1ellXTjBhVzl1TzF4dUlDQjlMRnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZlR1ZqZFhSbGN5QjBhR1VnWm5WdVkzUnBiMjRnZDJsMGFHbHVJR0VnYzJGbVpYUjVJSGRwYm1SdmR5NGdWWE5sSUhSb2FYTWdabTl5SUhSb1pTQjBiM0FnYkdWMlpXeGNiaUFnSUNvZ2JXVjBhRzlrY3lCMGFHRjBJSEpsYzNWc2RDQnBiaUJzWVhKblpTQmhiVzkxYm5SeklHOW1JR052YlhCMWRHRjBhVzl1TDIxMWRHRjBhVzl1Y3lCMGFHRjBJSGR2ZFd4a1hHNGdJQ0FxSUc1bFpXUWdkRzhnWW1VZ2MyRm1aWFI1SUdOb1pXTnJaV1F1SUZSb1pTQnZjSFJwYjI1aGJDQmhjbWQxYldWdWRITWdhR1ZzY0hNZ2NISmxkbVZ1ZENCMGFHVWdibVZsWkZ4dUlDQWdLaUIwYnlCaWFXNWtJR2x1SUcxaGJua2dZMkZ6WlhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJRzFsZEdodlpDQk5aVzFpWlhJZ2IyWWdjMk52Y0dVZ2RHOGdZMkZzYkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJSE5qYjNCbElGTmpiM0JsSUhSdklHbHVkbTlyWlNCbWNtOXRMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEQ4OWZTQmhJRUZ5WjNWdFpXNTBJSFJ2SUhCaGMzTWdkRzhnZEdobElHMWxkR2h2WkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUS9QWDBnWWlCQmNtZDFiV1Z1ZENCMGJ5QndZWE56SUhSdklIUm9aU0J0WlhSb2IyUXVYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wUHoxOUlHTWdRWEpuZFcxbGJuUWdkRzhnY0dGemN5QjBieUIwYUdVZ2JXVjBhRzlrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamREODlmU0JrSUVGeVozVnRaVzUwSUhSdklIQmhjM01nZEc4Z2RHaGxJRzFsZEdodlpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1EvUFgwZ1pTQkJjbWQxYldWdWRDQjBieUJ3WVhOeklIUnZJSFJvWlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUMkpxWldOMFB6MTlJR1lnUVhKbmRXMWxiblFnZEc4Z2NHRnpjeUIwYnlCMGFHVWdiV1YwYUc5a0xseHVJQ0FnS2x4dUlDQWdLaUJBY21WMGRYSnVJSHNxZlNCU1pYUjFjbTRnZG1Gc2RXVWdabkp2YlNCZ2JXVjBhRzlrWUM1Y2JpQWdJQ292WEc0Z0lIQmxjbVp2Y20wNklHWjFibU4wYVc5dUlDaHRaWFJvYjJRc0lITmpiM0JsTENCaExDQmlMQ0JqTENCa0xDQmxMQ0JtS1NCN1hHNGdJQ0FnSVNGMGFHbHpMbWx6U1c1VWNtRnVjMkZqZEdsdmJpZ3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxUnlZVzV6WVdOMGFXOXVMbkJsY21admNtMG9MaTR1S1RvZ1EyRnVibTkwSUdsdWFYUnBZV3hwZW1VZ1lTQjBjbUZ1YzJGamRHbHZiaUIzYUdWdUlIUm9aWEpsSUNjZ0t5QW5hWE1nWVd4eVpXRmtlU0JoYmlCdmRYUnpkR0Z1WkdsdVp5QjBjbUZ1YzJGamRHbHZiaTRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RtRnlJR1Z5Y205eVZHaHliM2R1TzF4dUlDQWdJSFpoY2lCeVpYUTdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJSFJvYVhNdVgybHpTVzVVY21GdWMyRmpkR2x2YmlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0F2THlCRFlYUmphR2x1WnlCbGNuSnZjbk1nYldGclpYTWdaR1ZpZFdkbmFXNW5JRzF2Y21VZ1pHbG1abWxqZFd4MExDQnpieUIzWlNCemRHRnlkQ0IzYVhSb1hHNGdJQ0FnSUNBdkx5Qmxjbkp2Y2xSb2NtOTNiaUJ6WlhRZ2RHOGdkSEoxWlNCaVpXWnZjbVVnYzJWMGRHbHVaeUJwZENCMGJ5Qm1ZV3h6WlNCaFpuUmxjaUJqWVd4c2FXNW5YRzRnSUNBZ0lDQXZMeUJqYkc5elpTQXRMU0JwWmlCcGRDZHpJSE4wYVd4c0lITmxkQ0IwYnlCMGNuVmxJR2x1SUhSb1pTQm1hVzVoYkd4NUlHSnNiMk5yTENCcGRDQnRaV0Z1YzF4dUlDQWdJQ0FnTHk4Z2IyNWxJRzltSUhSb1pYTmxJR05oYkd4eklIUm9jbVYzTGx4dUlDQWdJQ0FnWlhKeWIzSlVhSEp2ZDI0Z1BTQjBjblZsTzF4dUlDQWdJQ0FnZEdocGN5NXBibWwwYVdGc2FYcGxRV3hzS0RBcE8xeHVJQ0FnSUNBZ2NtVjBJRDBnYldWMGFHOWtMbU5oYkd3b2MyTnZjR1VzSUdFc0lHSXNJR01zSUdRc0lHVXNJR1lwTzF4dUlDQWdJQ0FnWlhKeWIzSlVhSEp2ZDI0Z1BTQm1ZV3h6WlR0Y2JpQWdJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdhV1lnS0dWeWNtOXlWR2h5YjNkdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1NXWWdZRzFsZEdodlpHQWdkR2h5YjNkekxDQndjbVZtWlhJZ2RHOGdjMmh2ZHlCMGFHRjBJSE4wWVdOcklIUnlZV05sSUc5MlpYSWdZVzU1SUhSb2NtOTNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHSjVJR2x1ZG05cmFXNW5JR0JqYkc5elpVRnNiR0F1WEc0Z0lDQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WTJ4dmMyVkJiR3dvTUNrN1hHNGdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aWEp5S1NCN2ZWeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUZOcGJtTmxJR0J0WlhSb2IyUmdJR1JwWkc0bmRDQjBhSEp2ZHl3Z2QyVWdaRzl1SjNRZ2QyRnVkQ0IwYnlCemFXeGxibU5sSUhSb1pTQmxlR05sY0hScGIyNWNiaUFnSUNBZ0lDQWdJQ0F2THlCb1pYSmxMbHh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVZMnh2YzJWQmJHd29NQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1ptbHVZV3hzZVNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJselNXNVVjbUZ1YzJGamRHbHZiaUE5SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5TEZ4dVhHNGdJR2x1YVhScFlXeHBlbVZCYkd3NklHWjFibU4wYVc5dUlDaHpkR0Z5ZEVsdVpHVjRLU0I3WEc0Z0lDQWdkbUZ5SUhSeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NZ1BTQjBhR2x6TG5SeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlITjBZWEowU1c1a1pYZzdJR2tnUENCMGNtRnVjMkZqZEdsdmJsZHlZWEJ3WlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2QzSmhjSEJsY2lBOUlIUnlZVzV6WVdOMGFXOXVWM0poY0hCbGNuTmJhVjA3WEc0Z0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJEWVhSamFHbHVaeUJsY25KdmNuTWdiV0ZyWlhNZ1pHVmlkV2RuYVc1bklHMXZjbVVnWkdsbVptbGpkV3gwTENCemJ5QjNaU0J6ZEdGeWRDQjNhWFJvSUhSb1pWeHVJQ0FnSUNBZ0lDQXZMeUJQUWxORlVsWkZSRjlGVWxKUFVpQnpkR0YwWlNCaVpXWnZjbVVnYjNabGNuZHlhWFJwYm1jZ2FYUWdkMmwwYUNCMGFHVWdjbVZoYkNCeVpYUjFjbTRnZG1Gc2RXVmNiaUFnSUNBZ0lDQWdMeThnYjJZZ2FXNXBkR2xoYkdsNlpTQXRMU0JwWmlCcGRDZHpJSE4wYVd4c0lITmxkQ0IwYnlCUFFsTkZVbFpGUkY5RlVsSlBVaUJwYmlCMGFHVWdabWx1WVd4c2VWeHVJQ0FnSUNBZ0lDQXZMeUJpYkc5amF5d2dhWFFnYldWaGJuTWdkM0poY0hCbGNpNXBibWwwYVdGc2FYcGxJSFJvY21WM0xseHVJQ0FnSUNBZ0lDQjBhR2x6TG5keVlYQndaWEpKYm1sMFJHRjBZVnRwWFNBOUlGUnlZVzV6WVdOMGFXOXVMazlDVTBWU1ZrVkVYMFZTVWs5U08xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5keVlYQndaWEpKYm1sMFJHRjBZVnRwWFNBOUlIZHlZWEJ3WlhJdWFXNXBkR2xoYkdsNlpTQS9JSGR5WVhCd1pYSXVhVzVwZEdsaGJHbDZaUzVqWVd4c0tIUm9hWE1wSURvZ2JuVnNiRHRjYmlBZ0lDQWdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG5keVlYQndaWEpKYm1sMFJHRjBZVnRwWFNBOVBUMGdWSEpoYm5OaFkzUnBiMjR1VDBKVFJWSldSVVJmUlZKU1QxSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlVhR1VnYVc1cGRHbGhiR2w2WlhJZ1ptOXlJSGR5WVhCd1pYSWdhU0IwYUhKbGR5QmhiaUJsY25KdmNqc2dhVzVwZEdsaGJHbDZaU0IwYUdWY2JpQWdJQ0FnSUNBZ0lDQXZMeUJ5WlcxaGFXNXBibWNnZDNKaGNIQmxjbk1nWW5WMElITnBiR1Z1WTJVZ1lXNTVJR1Y0WTJWd2RHbHZibk1nWm5KdmJTQjBhR1Z0SUhSdklHVnVjM1Z5WlZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSFJvWVhRZ2RHaGxJR1pwY25OMElHVnljbTl5SUdseklIUm9aU0J2Ym1VZ2RHOGdZblZpWW14bElIVndMbHh1SUNBZ0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbWx1YVhScFlXeHBlbVZCYkd3b2FTQXJJREVwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVnljaWtnZTMxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZLaXBjYmlBZ0lDb2dTVzUyYjJ0bGN5QmxZV05vSUc5bUlHQjBhR2x6TG5SeVlXNXpZV04wYVc5dVYzSmhjSEJsY25NdVkyeHZjMlZiYVYxZ0lHWjFibU4wYVc5dWN5d2djR0Z6YzJsdVp5QnBiblJ2WEc0Z0lDQXFJSFJvWlcwZ2RHaGxJSEpsYzNCbFkzUnBkbVVnY21WMGRYSnVJSFpoYkhWbGN5QnZaaUJnZEdocGN5NTBjbUZ1YzJGamRHbHZibGR5WVhCd1pYSnpMbWx1YVhSYmFWMWdYRzRnSUNBcUlDaGdZMnh2YzJWZ2NuTWdkR2hoZENCamIzSnlaWE53YjI1a0lIUnZJR2x1YVhScFlXeHBlbVZ5Y3lCMGFHRjBJR1poYVd4bFpDQjNhV3hzSUc1dmRDQmlaVnh1SUNBZ0tpQnBiblp2YTJWa0tTNWNiaUFnSUNvdlhHNGdJR05zYjNObFFXeHNPaUJtZFc1amRHbHZiaUFvYzNSaGNuUkpibVJsZUNrZ2UxeHVJQ0FnSUNGMGFHbHpMbWx6U1c1VWNtRnVjMkZqZEdsdmJpZ3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxUnlZVzV6WVdOMGFXOXVMbU5zYjNObFFXeHNLQ2s2SUVOaGJtNXZkQ0JqYkc5elpTQjBjbUZ1YzJGamRHbHZiaUIzYUdWdUlHNXZibVVnWVhKbElHOXdaVzR1SnlrZ09pQnBiblpoY21saGJuUW9abUZzYzJVcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lIWmhjaUIwY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6SUQwZ2RHaHBjeTUwY21GdWMyRmpkR2x2YmxkeVlYQndaWEp6TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNCemRHRnlkRWx1WkdWNE95QnBJRHdnZEhKaGJuTmhZM1JwYjI1WGNtRndjR1Z5Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdkbUZ5SUhkeVlYQndaWElnUFNCMGNtRnVjMkZqZEdsdmJsZHlZWEJ3WlhKelcybGRPMXh1SUNBZ0lDQWdkbUZ5SUdsdWFYUkVZWFJoSUQwZ2RHaHBjeTUzY21Gd2NHVnlTVzVwZEVSaGRHRmJhVjA3WEc0Z0lDQWdJQ0IyWVhJZ1pYSnliM0pVYUhKdmQyNDdYRzRnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBdkx5QkRZWFJqYUdsdVp5Qmxjbkp2Y25NZ2JXRnJaWE1nWkdWaWRXZG5hVzVuSUcxdmNtVWdaR2xtWm1samRXeDBMQ0J6YnlCM1pTQnpkR0Z5ZENCM2FYUm9YRzRnSUNBZ0lDQWdJQzh2SUdWeWNtOXlWR2h5YjNkdUlITmxkQ0IwYnlCMGNuVmxJR0psWm05eVpTQnpaWFIwYVc1bklHbDBJSFJ2SUdaaGJITmxJR0ZtZEdWeUlHTmhiR3hwYm1kY2JpQWdJQ0FnSUNBZ0x5OGdZMnh2YzJVZ0xTMGdhV1lnYVhRbmN5QnpkR2xzYkNCelpYUWdkRzhnZEhKMVpTQnBiaUIwYUdVZ1ptbHVZV3hzZVNCaWJHOWpheXdnYVhRZ2JXVmhibk5jYmlBZ0lDQWdJQ0FnTHk4Z2QzSmhjSEJsY2k1amJHOXpaU0IwYUhKbGR5NWNiaUFnSUNBZ0lDQWdaWEp5YjNKVWFISnZkMjRnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FXNXBkRVJoZEdFZ0lUMDlJRlJ5WVc1ellXTjBhVzl1TGs5Q1UwVlNWa1ZFWDBWU1VrOVNJQ1ltSUhkeVlYQndaWEl1WTJ4dmMyVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCM2NtRndjR1Z5TG1Oc2IzTmxMbU5oYkd3b2RHaHBjeXdnYVc1cGRFUmhkR0VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnljbTl5VkdoeWIzZHVJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0pVYUhKdmQyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlVhR1VnWTJ4dmMyVnlJR1p2Y2lCM2NtRndjR1Z5SUdrZ2RHaHlaWGNnWVc0Z1pYSnliM0k3SUdOc2IzTmxJSFJvWlNCeVpXMWhhVzVwYm1kY2JpQWdJQ0FnSUNBZ0lDQXZMeUIzY21Gd2NHVnljeUJpZFhRZ2MybHNaVzVqWlNCaGJua2daWGhqWlhCMGFXOXVjeUJtY205dElIUm9aVzBnZEc4Z1pXNXpkWEpsSUhSb1lYUWdkR2hsWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdabWx5YzNRZ1pYSnliM0lnYVhNZ2RHaGxJRzl1WlNCMGJ5QmlkV0ppYkdVZ2RYQXVYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZMnh2YzJWQmJHd29hU0FySURFcE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0OVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NTNjbUZ3Y0dWeVNXNXBkRVJoZEdFdWJHVnVaM1JvSUQwZ01EdGNiaUFnZlZ4dWZUdGNibHh1ZG1GeUlGUnlZVzV6WVdOMGFXOXVJRDBnZTF4dVhHNGdJRTFwZUdsdU9pQk5hWGhwYml4Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkc5clpXNGdkRzhnYkc5dmF5Qm1iM0lnZEc4Z1pHVjBaWEp0YVc1bElHbG1JR0Z1SUdWeWNtOXlJRzlqWTNWeWNtVmtMbHh1SUNBZ0tpOWNiaUFnVDBKVFJWSldSVVJmUlZKU1QxSTZJSHQ5WEc1Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVkhKaGJuTmhZM1JwYjI0N0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGFjY3VtdWxhdGVJbnRvXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICpcbiAqIEFjY3VtdWxhdGVzIGl0ZW1zIHRoYXQgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQgaW50byB0aGUgZmlyc3Qgb25lLiBUaGlzXG4gKiBpcyB1c2VkIHRvIGNvbnNlcnZlIG1lbW9yeSBieSBhdm9pZGluZyBhcnJheSBhbGxvY2F0aW9ucywgYW5kIHRodXMgc2FjcmlmaWNlc1xuICogQVBJIGNsZWFubmVzcy4gU2luY2UgYGN1cnJlbnRgIGNhbiBiZSBudWxsIGJlZm9yZSBiZWluZyBwYXNzZWQgaW4gYW5kIG5vdFxuICogbnVsbCBhZnRlciB0aGlzIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gYXNzaWduIGl0IGJhY2sgdG8gYGN1cnJlbnRgOlxuICpcbiAqIGBhID0gYWNjdW11bGF0ZUludG8oYSwgYik7YFxuICpcbiAqIFRoaXMgQVBJIHNob3VsZCBiZSBzcGFyaW5nbHkgdXNlZC4gVHJ5IGBhY2N1bXVsYXRlYCBmb3Igc29tZXRoaW5nIGNsZWFuZXIuXG4gKlxuICogQHJldHVybiB7KnxhcnJheTwqPn0gQW4gYWNjdW11bGF0aW9uIG9mIGl0ZW1zLlxuICovXG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVJbnRvKGN1cnJlbnQsIG5leHQpIHtcbiAgIShuZXh0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2FjY3VtdWxhdGVJbnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBuZXh0O1xuICB9XG5cbiAgLy8gQm90aCBhcmUgbm90IGVtcHR5LiBXYXJuaW5nOiBOZXZlciBjYWxsIHguY29uY2F0KHkpIHdoZW4geW91IGFyZSBub3RcbiAgLy8gY2VydGFpbiB0aGF0IHggaXMgYW4gQXJyYXkgKHggY291bGQgYmUgYSBzdHJpbmcgd2l0aCBjb25jYXQgbWV0aG9kKS5cbiAgdmFyIGN1cnJlbnRJc0FycmF5ID0gQXJyYXkuaXNBcnJheShjdXJyZW50KTtcbiAgdmFyIG5leHRJc0FycmF5ID0gQXJyYXkuaXNBcnJheShuZXh0KTtcblxuICBpZiAoY3VycmVudElzQXJyYXkgJiYgbmV4dElzQXJyYXkpIHtcbiAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBpZiAoY3VycmVudElzQXJyYXkpIHtcbiAgICBjdXJyZW50LnB1c2gobmV4dCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBpZiAobmV4dElzQXJyYXkpIHtcbiAgICAvLyBBIGJpdCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4dGAuXG4gICAgcmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7XG4gIH1cblxuICByZXR1cm4gW2N1cnJlbnQsIG5leHRdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdllXTmpkVzExYkdGMFpVbHVkRzh1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWp0QlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVFF0TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0JoWTJOMWJYVnNZWFJsU1c1MGIxeHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzR2S2lwY2JpQXFYRzRnS2lCQlkyTjFiWFZzWVhSbGN5QnBkR1Z0Y3lCMGFHRjBJRzExYzNRZ2JtOTBJR0psSUc1MWJHd2diM0lnZFc1a1pXWnBibVZrSUdsdWRHOGdkR2hsSUdacGNuTjBJRzl1WlM0Z1ZHaHBjMXh1SUNvZ2FYTWdkWE5sWkNCMGJ5QmpiMjV6WlhKMlpTQnRaVzF2Y25rZ1lua2dZWFp2YVdScGJtY2dZWEp5WVhrZ1lXeHNiMk5oZEdsdmJuTXNJR0Z1WkNCMGFIVnpJSE5oWTNKcFptbGpaWE5jYmlBcUlFRlFTU0JqYkdWaGJtNWxjM011SUZOcGJtTmxJR0JqZFhKeVpXNTBZQ0JqWVc0Z1ltVWdiblZzYkNCaVpXWnZjbVVnWW1WcGJtY2djR0Z6YzJWa0lHbHVJR0Z1WkNCdWIzUmNiaUFxSUc1MWJHd2dZV1owWlhJZ2RHaHBjeUJtZFc1amRHbHZiaXdnYldGclpTQnpkWEpsSUhSdklHRnpjMmxuYmlCcGRDQmlZV05ySUhSdklHQmpkWEp5Wlc1MFlEcGNiaUFxWEc0Z0tpQmdZU0E5SUdGalkzVnRkV3hoZEdWSmJuUnZLR0VzSUdJcE8yQmNiaUFxWEc0Z0tpQlVhR2x6SUVGUVNTQnphRzkxYkdRZ1ltVWdjM0JoY21sdVoyeDVJSFZ6WldRdUlGUnllU0JnWVdOamRXMTFiR0YwWldBZ1ptOXlJSE52YldWMGFHbHVaeUJqYkdWaGJtVnlMbHh1SUNwY2JpQXFJRUJ5WlhSMWNtNGdleXA4WVhKeVlYazhLajU5SUVGdUlHRmpZM1Z0ZFd4aGRHbHZiaUJ2WmlCcGRHVnRjeTVjYmlBcUwxeHVYRzVtZFc1amRHbHZiaUJoWTJOMWJYVnNZWFJsU1c1MGJ5aGpkWEp5Wlc1MExDQnVaWGgwS1NCN1hHNGdJQ0VvYm1WNGRDQWhQU0J1ZFd4c0tTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkaFkyTjFiWFZzWVhSbFNXNTBieWd1TGk0cE9pQkJZMk4xYlhWc1lYUmxaQ0JwZEdWdGN5QnRkWE4wSUc1dmRDQmlaU0J1ZFd4c0lHOXlJSFZ1WkdWbWFXNWxaQzRuS1NBNklHbHVkbUZ5YVdGdWRDaG1ZV3h6WlNrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUdsbUlDaGpkWEp5Wlc1MElEMDlJRzUxYkd3cElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WNGREdGNiaUFnZlZ4dVhHNGdJQzh2SUVKdmRHZ2dZWEpsSUc1dmRDQmxiWEIwZVM0Z1YyRnlibWx1WnpvZ1RtVjJaWElnWTJGc2JDQjRMbU52Ym1OaGRDaDVLU0IzYUdWdUlIbHZkU0JoY21VZ2JtOTBYRzRnSUM4dklHTmxjblJoYVc0Z2RHaGhkQ0I0SUdseklHRnVJRUZ5Y21GNUlDaDRJR052ZFd4a0lHSmxJR0VnYzNSeWFXNW5JSGRwZEdnZ1kyOXVZMkYwSUcxbGRHaHZaQ2t1WEc0Z0lIWmhjaUJqZFhKeVpXNTBTWE5CY25KaGVTQTlJRUZ5Y21GNUxtbHpRWEp5WVhrb1kzVnljbVZ1ZENrN1hHNGdJSFpoY2lCdVpYaDBTWE5CY25KaGVTQTlJRUZ5Y21GNUxtbHpRWEp5WVhrb2JtVjRkQ2s3WEc1Y2JpQWdhV1lnS0dOMWNuSmxiblJKYzBGeWNtRjVJQ1ltSUc1bGVIUkpjMEZ5Y21GNUtTQjdYRzRnSUNBZ1kzVnljbVZ1ZEM1d2RYTm9MbUZ3Y0d4NUtHTjFjbkpsYm5Rc0lHNWxlSFFwTzF4dUlDQWdJSEpsZEhWeWJpQmpkWEp5Wlc1ME8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dOMWNuSmxiblJKYzBGeWNtRjVLU0I3WEc0Z0lDQWdZM1Z5Y21WdWRDNXdkWE5vS0c1bGVIUXBPMXh1SUNBZ0lISmxkSFZ5YmlCamRYSnlaVzUwTzF4dUlDQjlYRzVjYmlBZ2FXWWdLRzVsZUhSSmMwRnljbUY1S1NCN1hHNGdJQ0FnTHk4Z1FTQmlhWFFnZEc5dklHUmhibWRsY205MWN5QjBieUJ0ZFhSaGRHVWdZRzVsZUhSZ0xseHVJQ0FnSUhKbGRIVnliaUJiWTNWeWNtVnVkRjB1WTI5dVkyRjBLRzVsZUhRcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlGdGpkWEp5Wlc1MExDQnVaWGgwWFR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JoWTJOMWJYVnNZWFJsU1c1MGJ6c2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBkZXByZWNhdGVkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBUaGlzIHdpbGwgbG9nIGEgc2luZ2xlIGRlcHJlY2F0aW9uIG5vdGljZSBwZXIgZnVuY3Rpb24gYW5kIGZvcndhcmQgdGhlIGNhbGxcbiAqIG9uIHRvIHRoZSBuZXcgQVBJLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmbk5hbWUgVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3TW9kdWxlIFRoZSBtb2R1bGUgdGhhdCBmbiB3aWxsIGV4aXN0IGluXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3UGFja2FnZSBUaGUgbW9kdWxlIHRoYXQgZm4gd2lsbCBleGlzdCBpblxuICogQHBhcmFtIHsqfSBjdHggVGhlIGNvbnRleHQgdGhpcyBmb3J3YXJkZWQgY2FsbCBzaG91bGQgcnVuIGluXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gZm9yd2FyZCBvbiB0b1xuICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgd2FybiBvbmNlIGFuZCB0aGVuIGNhbGwgZm5cbiAqL1xuZnVuY3Rpb24gZGVwcmVjYXRlZChmbk5hbWUsIG5ld01vZHVsZSwgbmV3UGFja2FnZSwgY3R4LCBmbikge1xuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIG5ld0ZuID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcod2FybmVkLFxuICAgICAgLy8gUmVxdWlyZSBleGFtcGxlcyBpbiB0aGlzIHN0cmluZyBtdXN0IGJlIHNwbGl0IHRvIHByZXZlbnQgUmVhY3Qnc1xuICAgICAgLy8gYnVpbGQgdG9vbHMgZnJvbSBtaXN0YWtpbmcgdGhlbSBmb3IgcmVhbCByZXF1aXJlcy5cbiAgICAgIC8vIE90aGVyd2lzZSB0aGUgYnVpbGQgdG9vbHMgd2lsbCBhdHRlbXB0IHRvIGJ1aWxkIGEgJyVzJyBtb2R1bGUuXG4gICAgICAnUmVhY3QuJXMgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAlcy4lcyBmcm9tIHJlcXVpcmUnICsgJyhcXCclc1xcJykgJyArICdpbnN0ZWFkLicsIGZuTmFtZSwgbmV3TW9kdWxlLCBmbk5hbWUsIG5ld1BhY2thZ2UpIDogdW5kZWZpbmVkO1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmbi5hcHBseShjdHgsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgcHJvcGVydGllcyBvZiB0aGUgb3JpZ2luYWwgZm4gYXJlIGNvcGllZCBvdmVyLlxuICAgIC8vIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgUHJvcFR5cGVzXG4gICAgcmV0dXJuIGFzc2lnbihuZXdGbiwgZm4pO1xuICB9XG5cbiAgcmV0dXJuIGZuO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlcHJlY2F0ZWQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2WkdWd2NtVmpZWFJsWkM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU8wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aVptbHNaU0k2SW1kbGJtVnlZWFJsWkM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREV6TFRJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnWkdWd2NtVmpZWFJsWkZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHRnpjMmxuYmlBOUlISmxjWFZwY21Vb0p5NHZUMkpxWldOMExtRnpjMmxuYmljcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiaThxS2x4dUlDb2dWR2hwY3lCM2FXeHNJR3h2WnlCaElITnBibWRzWlNCa1pYQnlaV05oZEdsdmJpQnViM1JwWTJVZ2NHVnlJR1oxYm1OMGFXOXVJR0Z1WkNCbWIzSjNZWEprSUhSb1pTQmpZV3hzWEc0Z0tpQnZiaUIwYnlCMGFHVWdibVYzSUVGUVNTNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1ptNU9ZVzFsSUZSb1pTQnVZVzFsSUc5bUlIUm9aU0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1bGQwMXZaSFZzWlNCVWFHVWdiVzlrZFd4bElIUm9ZWFFnWm00Z2QybHNiQ0JsZUdsemRDQnBibHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1bGQxQmhZMnRoWjJVZ1ZHaGxJRzF2WkhWc1pTQjBhR0YwSUdadUlIZHBiR3dnWlhocGMzUWdhVzVjYmlBcUlFQndZWEpoYlNCN0tuMGdZM1I0SUZSb1pTQmpiMjUwWlhoMElIUm9hWE1nWm05eWQyRnlaR1ZrSUdOaGJHd2djMmh2ZFd4a0lISjFiaUJwYmx4dUlDb2dRSEJoY21GdElIdG1kVzVqZEdsdmJuMGdabTRnVkdobElHWjFibU4wYVc5dUlIUnZJR1p2Y25kaGNtUWdiMjRnZEc5Y2JpQXFJRUJ5WlhSMWNtNGdlMloxYm1OMGFXOXVmU0JVYUdVZ1puVnVZM1JwYjI0Z2RHaGhkQ0IzYVd4c0lIZGhjbTRnYjI1alpTQmhibVFnZEdobGJpQmpZV3hzSUdadVhHNGdLaTljYm1aMWJtTjBhVzl1SUdSbGNISmxZMkYwWldRb1ptNU9ZVzFsTENCdVpYZE5iMlIxYkdVc0lHNWxkMUJoWTJ0aFoyVXNJR04wZUN3Z1ptNHBJSHRjYmlBZ2RtRnlJSGRoY201bFpDQTlJR1poYkhObE8xeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIWmhjaUJ1WlhkR2JpQTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QjNZWEp1YVc1bktIZGhjbTVsWkN4Y2JpQWdJQ0FnSUM4dklGSmxjWFZwY21VZ1pYaGhiWEJzWlhNZ2FXNGdkR2hwY3lCemRISnBibWNnYlhWemRDQmlaU0J6Y0d4cGRDQjBieUJ3Y21WMlpXNTBJRkpsWVdOMEozTmNiaUFnSUNBZ0lDOHZJR0oxYVd4a0lIUnZiMnh6SUdaeWIyMGdiV2x6ZEdGcmFXNW5JSFJvWlcwZ1ptOXlJSEpsWVd3Z2NtVnhkV2x5WlhNdVhHNGdJQ0FnSUNBdkx5QlBkR2hsY25kcGMyVWdkR2hsSUdKMWFXeGtJSFJ2YjJ4eklIZHBiR3dnWVhSMFpXMXdkQ0IwYnlCaWRXbHNaQ0JoSUNjbGN5Y2diVzlrZFd4bExseHVJQ0FnSUNBZ0oxSmxZV04wTGlWeklHbHpJR1JsY0hKbFkyRjBaV1F1SUZCc1pXRnpaU0IxYzJVZ0pYTXVKWE1nWm5KdmJTQnlaWEYxYVhKbEp5QXJJQ2NvWEZ3bkpYTmNYQ2NwSUNjZ0t5QW5hVzV6ZEdWaFpDNG5MQ0JtYms1aGJXVXNJRzVsZDAxdlpIVnNaU3dnWm01T1lXMWxMQ0J1WlhkUVlXTnJZV2RsS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIZGhjbTVsWkNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabTR1WVhCd2JIa29ZM1I0TENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnTHk4Z1YyVWdibVZsWkNCMGJ5QnRZV3RsSUhOMWNtVWdZV3hzSUhCeWIzQmxjblJwWlhNZ2IyWWdkR2hsSUc5eWFXZHBibUZzSUdadUlHRnlaU0JqYjNCcFpXUWdiM1psY2k1Y2JpQWdJQ0F2THlCSmJpQndZWEowYVdOMWJHRnlMQ0IwYUdseklHbHpJRzVsWldSbFpDQjBieUJ6ZFhCd2IzSjBJRkJ5YjNCVWVYQmxjMXh1SUNBZ0lISmxkSFZ5YmlCaGMzTnBaMjRvYm1WM1JtNHNJR1p1S1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCbWJqdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCa1pYQnlaV05oZEdWa095SmRmUT09IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBmaW5kRE9NTm9kZVxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJlZCBieSB0aGlzIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudHxET01FbGVtZW50fSBjb21wb25lbnRPckVsZW1lbnRcbiAqIEByZXR1cm4gez9ET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gZmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICBpZiAob3duZXIgIT09IG51bGwpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBnZXRET01Ob2RlIG9yIGZpbmRET01Ob2RlIGluc2lkZSBpdHMgcmVuZGVyKCkuICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB1bmRlZmluZWQ7XG4gICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50T3JFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoY29tcG9uZW50T3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudDtcbiAgfVxuICBpZiAoUmVhY3RJbnN0YW5jZU1hcC5oYXMoY29tcG9uZW50T3JFbGVtZW50KSkge1xuICAgIHJldHVybiBSZWFjdE1vdW50LmdldE5vZGVGcm9tSW5zdGFuY2UoY29tcG9uZW50T3JFbGVtZW50KTtcbiAgfVxuICAhKGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT0gbnVsbCB8fCB0eXBlb2YgY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciAhPT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LicpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcbiAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBET01Ob2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2Wm1sdVpFUlBUVTV2WkdVdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqdEJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdabWx1WkVSUFRVNXZaR1ZjYmlBcUlFQjBlWEJsWTJobFkydHpJSE4wWVhScFl5MXZibXg1WEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlKeWs3WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlUxaGNDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkpibk4wWVc1alpVMWhjQ2NwTzF4dWRtRnlJRkpsWVdOMFRXOTFiblFnUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVFc5MWJuUW5LVHRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiaThxS2x4dUlDb2dVbVYwZFhKdWN5QjBhR1VnUkU5TklHNXZaR1VnY21WdVpHVnlaV1FnWW5rZ2RHaHBjeUJsYkdWdFpXNTBMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGIyMXdiMjVsYm5SOFJFOU5SV3hsYldWdWRIMGdZMjl0Y0c5dVpXNTBUM0pGYkdWdFpXNTBYRzRnS2lCQWNtVjBkWEp1SUhzL1JFOU5SV3hsYldWdWRIMGdWR2hsSUhKdmIzUWdibTlrWlNCdlppQjBhR2x6SUdWc1pXMWxiblF1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR1pwYm1SRVQwMU9iMlJsS0dOdmJYQnZibVZ1ZEU5eVJXeGxiV1Z1ZENrZ2UxeHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lIWmhjaUJ2ZDI1bGNpQTlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUTdYRzRnSUNBZ2FXWWdLRzkzYm1WeUlDRTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWh2ZDI1bGNpNWZkMkZ5Ym1Wa1FXSnZkWFJTWldaelNXNVNaVzVrWlhJc0lDY2xjeUJwY3lCaFkyTmxjM05wYm1jZ1oyVjBSRTlOVG05a1pTQnZjaUJtYVc1a1JFOU5UbTlrWlNCcGJuTnBaR1VnYVhSeklISmxibVJsY2lncExpQW5JQ3NnSjNKbGJtUmxjaWdwSUhOb2IzVnNaQ0JpWlNCaElIQjFjbVVnWm5WdVkzUnBiMjRnYjJZZ2NISnZjSE1nWVc1a0lITjBZWFJsTGlCSmRDQnphRzkxYkdRZ0p5QXJJQ2R1WlhabGNpQmhZMk5sYzNNZ2MyOXRaWFJvYVc1bklIUm9ZWFFnY21WeGRXbHlaWE1nYzNSaGJHVWdaR0YwWVNCbWNtOXRJSFJvWlNCd2NtVjJhVzkxY3lBbklDc2dKM0psYm1SbGNpd2djM1ZqYUNCaGN5QnlaV1p6TGlCTmIzWmxJSFJvYVhNZ2JHOW5hV01nZEc4Z1kyOXRjRzl1Wlc1MFJHbGtUVzkxYm5RZ1lXNWtJQ2NnS3lBblkyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbElHbHVjM1JsWVdRdUp5d2diM2R1WlhJdVoyVjBUbUZ0WlNncElIeDhJQ2RCSUdOdmJYQnZibVZ1ZENjcElEb2dkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdiM2R1WlhJdVgzZGhjbTVsWkVGaWIzVjBVbVZtYzBsdVVtVnVaR1Z5SUQwZ2RISjFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdhV1lnS0dOdmJYQnZibVZ1ZEU5eVJXeGxiV1Z1ZENBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmlBZ2FXWWdLR052YlhCdmJtVnVkRTl5Uld4bGJXVnVkQzV1YjJSbFZIbHdaU0E5UFQwZ01Ta2dlMXh1SUNBZ0lISmxkSFZ5YmlCamIyMXdiMjVsYm5SUGNrVnNaVzFsYm5RN1hHNGdJSDFjYmlBZ2FXWWdLRkpsWVdOMFNXNXpkR0Z1WTJWTllYQXVhR0Z6S0dOdmJYQnZibVZ1ZEU5eVJXeGxiV1Z1ZENrcElIdGNiaUFnSUNCeVpYUjFjbTRnVW1WaFkzUk5iM1Z1ZEM1blpYUk9iMlJsUm5KdmJVbHVjM1JoYm1ObEtHTnZiWEJ2Ym1WdWRFOXlSV3hsYldWdWRDazdYRzRnSUgxY2JpQWdJU2hqYjIxd2IyNWxiblJQY2tWc1pXMWxiblF1Y21WdVpHVnlJRDA5SUc1MWJHd2dmSHdnZEhsd1pXOW1JR052YlhCdmJtVnVkRTl5Uld4bGJXVnVkQzV5Wlc1a1pYSWdJVDA5SUNkbWRXNWpkR2x2YmljcElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjJacGJtUkVUMDFPYjJSbElIZGhjeUJqWVd4c1pXUWdiMjRnWVc0Z2RXNXRiM1Z1ZEdWa0lHTnZiWEJ2Ym1WdWRDNG5LU0E2SUdsdWRtRnlhV0Z1ZENobVlXeHpaU2tnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0ZtWVd4elpTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkRmJHVnRaVzUwSUdGd2NHVmhjbk1nZEc4Z1ltVWdibVZwZEdobGNpQlNaV0ZqZEVOdmJYQnZibVZ1ZENCdWIzSWdSRTlOVG05a1pTQW9hMlY1Y3pvZ0pYTXBKeXdnVDJKcVpXTjBMbXRsZVhNb1kyOXRjRzl1Wlc1MFQzSkZiR1Z0Wlc1MEtTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1pwYm1SRVQwMU9iMlJsT3lKZGZRPT0iLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGZsYXR0ZW5DaGlsZHJlblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZlcnNhbC5cbiAqIEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50fSBjaGlsZCBSZWFjdCBjaGlsZCBjb21wb25lbnQuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWUgU3RyaW5nIG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG4gIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG4gIHZhciBrZXlVbmlxdWUgPSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhrZXlVbmlxdWUsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4nLCBuYW1lKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoa2V5VW5pcXVlICYmIGNoaWxkICE9IG51bGwpIHtcbiAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDtcbiAgfVxufVxuXG4vKipcbiAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGxcbiAqIGNoaWxkcmVuIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LlxuICogQHJldHVybiB7IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5IG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgcmVzdWx0ID0ge307XG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5DaGlsZHJlbjtcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZabXhoZEhSbGJrTm9hV3hrY21WdUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCbWJHRjBkR1Z1UTJocGJHUnlaVzVjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUlEMGdjbVZ4ZFdseVpTZ25MaTkwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1SnlrN1hHNTJZWElnZDJGeWJtbHVaeUE5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDNkaGNtNXBibWNuS1R0Y2JseHVMeW9xWEc0Z0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQjBjbUYyWlhKelpVTnZiblJsZUhRZ1EyOXVkR1Y0ZENCd1lYTnpaV1FnZEdoeWIzVm5hQ0IwY21GMlpYSnpZV3d1WEc0Z0tpQkFjR0Z5WVcwZ2V6OVNaV0ZqZEVOdmJYQnZibVZ1ZEgwZ1kyaHBiR1FnVW1WaFkzUWdZMmhwYkdRZ1kyOXRjRzl1Wlc1MExseHVJQ29nUUhCaGNtRnRJSHNoYzNSeWFXNW5mU0J1WVcxbElGTjBjbWx1WnlCdVlXMWxJRzltSUd0bGVTQndZWFJvSUhSdklHTm9hV3hrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJtYkdGMGRHVnVVMmx1WjJ4bFEyaHBiR1JKYm5SdlEyOXVkR1Y0ZENoMGNtRjJaWEp6WlVOdmJuUmxlSFFzSUdOb2FXeGtMQ0J1WVcxbEtTQjdYRzRnSUM4dklGZGxJR1p2ZFc1a0lHRWdZMjl0Y0c5dVpXNTBJR2x1YzNSaGJtTmxMbHh1SUNCMllYSWdjbVZ6ZFd4MElEMGdkSEpoZG1WeWMyVkRiMjUwWlhoME8xeHVJQ0IyWVhJZ2EyVjVWVzVwY1hWbElEMGdjbVZ6ZFd4MFcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUTdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvYTJWNVZXNXBjWFZsTENBblpteGhkSFJsYmtOb2FXeGtjbVZ1S0M0dUxpazZJRVZ1WTI5MWJuUmxjbVZrSUhSM2J5QmphR2xzWkhKbGJpQjNhWFJvSUhSb1pTQnpZVzFsSUd0bGVTd2dKeUFySUNkZ0pYTmdMaUJEYUdsc1pDQnJaWGx6SUcxMWMzUWdZbVVnZFc1cGNYVmxPeUIzYUdWdUlIUjNieUJqYUdsc1pISmxiaUJ6YUdGeVpTQmhJR3RsZVN3Z2IyNXNlU0FuSUNzZ0ozUm9aU0JtYVhKemRDQmphR2xzWkNCM2FXeHNJR0psSUhWelpXUXVKeXdnYm1GdFpTa2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnYVdZZ0tHdGxlVlZ1YVhGMVpTQW1KaUJqYUdsc1pDQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ2NtVnpkV3gwVzI1aGJXVmRJRDBnWTJocGJHUTdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJHYkdGMGRHVnVjeUJqYUdsc1pISmxiaUIwYUdGMElHRnlaU0IwZVhCcFkyRnNiSGtnYzNCbFkybG1hV1ZrSUdGeklHQndjbTl3Y3k1amFHbHNaSEpsYm1BdUlFRnVlU0J1ZFd4c1hHNGdLaUJqYUdsc1pISmxiaUIzYVd4c0lHNXZkQ0JpWlNCcGJtTnNkV1JsWkNCcGJpQjBhR1VnY21WemRXeDBhVzVuSUc5aWFtVmpkQzVjYmlBcUlFQnlaWFIxY200Z2V5RnZZbXBsWTNSOUlHWnNZWFIwWlc1bFpDQmphR2xzWkhKbGJpQnJaWGxsWkNCaWVTQnVZVzFsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJtYkdGMGRHVnVRMmhwYkdSeVpXNG9ZMmhwYkdSeVpXNHBJSHRjYmlBZ2FXWWdLR05vYVd4a2NtVnVJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQnlaWFIxY200Z1kyaHBiR1J5Wlc0N1hHNGdJSDFjYmlBZ2RtRnlJSEpsYzNWc2RDQTlJSHQ5TzF4dUlDQjBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVLR05vYVd4a2NtVnVMQ0JtYkdGMGRHVnVVMmx1WjJ4bFEyaHBiR1JKYm5SdlEyOXVkR1Y0ZEN3Z2NtVnpkV3gwS1R0Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JtYkdGMGRHVnVRMmhwYkdSeVpXNDdJbDE5IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50XG4gKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFjdE5hdGl2ZUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3ROYXRpdmVDb21wb25lbnQnKTtcblxudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vT2JqZWN0LmFzc2lnbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8vIFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwgY2xhc3MgaW4gdGhpcyBtb2R1bGVcbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7fTtcbmFzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5NaXhpbiwge1xuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxufSk7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSB0eXBlIHJlZmVyZW5jZSBpcyBhIGtub3duIGludGVybmFsIHR5cGUuIEkuZS4gbm90IGEgdXNlclxuICogcHJvdmlkZWQgY29tcG9zaXRlIHR5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSB2YWxpZCBpbnRlcm5hbCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc0ludGVybmFsQ29tcG9uZW50VHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0Tm9kZSwgY3JlYXRlIGFuIGluc3RhbmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLlxuICpcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9IEEgbmV3IGluc3RhbmNlIG9mIHRoZSBlbGVtZW50J3MgY29uc3RydWN0b3IuXG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobm9kZSkge1xuICB2YXIgaW5zdGFuY2U7XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcbiAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdEVtcHR5Q29tcG9uZW50KGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBlbGVtZW50ID0gbm9kZTtcbiAgICAhKGVsZW1lbnQgJiYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSAnICsgJ29yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCBlbGVtZW50LnR5cGUgPT0gbnVsbCA/IGVsZW1lbnQudHlwZSA6IHR5cGVvZiBlbGVtZW50LnR5cGUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShlbGVtZW50Ll9vd25lcikpIDogaW52YXJpYW50KGZhbHNlKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0TmF0aXZlQ29tcG9uZW50LmNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5hbENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBlKSkge1xuICAgICAgLy8gVGhpcyBpcyB0ZW1wb3JhcmlseSBhdmFpbGFibGUgZm9yIGN1c3RvbSBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBzdHJpbmdcbiAgICAgIC8vIHJlcHJlc2VudGF0aW9ucy4gSS5lLiBBUlQuIE9uY2UgdGhvc2UgYXJlIHVwZGF0ZWQgdG8gdXNlIHRoZSBzdHJpbmdcbiAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB3ZSBjYW4gZHJvcCB0aGlzIGNvZGUgcGF0aC5cbiAgICAgIGluc3RhbmNlID0gbmV3IGVsZW1lbnQudHlwZShlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZSA9PT0gJ251bWJlcicpIHtcbiAgICBpbnN0YW5jZSA9IFJlYWN0TmF0aXZlQ29tcG9uZW50LmNyZWF0ZUluc3RhbmNlRm9yVGV4dChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRW5jb3VudGVyZWQgaW52YWxpZCBSZWFjdCBub2RlIG9mIHR5cGUgJXMnLCB0eXBlb2Ygbm9kZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdGFuY2UuY29uc3RydWN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4gYmUgbW91bnRlZC4nKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFNldHMgdXAgdGhlIGluc3RhbmNlLiBUaGlzIGNhbiBwcm9iYWJseSBqdXN0IG1vdmUgaW50byB0aGUgY29uc3RydWN0b3Igbm93LlxuICBpbnN0YW5jZS5jb25zdHJ1Y3Qobm9kZSk7XG5cbiAgLy8gVGhlc2UgdHdvIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgRE9NIGFuZCBBUlQgZGlmZmluZyBhbGdvcml0aG1zXG4gIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2luZyBleHBhbmRvcyBvbiBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmVcbiAgLy8gc3RvcmluZyB0aGUgc3RhdGUgbmVlZGVkIGJ5IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLlxuICBpbnN0YW5jZS5fbW91bnRJbmRleCA9IDA7XG4gIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGluc3RhbmNlLl9pc093bmVyTmVjZXNzYXJ5ID0gZmFsc2U7XG4gICAgaW5zdGFuY2UuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gZmFsc2U7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBpbnN0YW5jZXMgc2hvdWxkIGZ1bGx5IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXkgc2hvdWxkXG4gIC8vIG5vdCBnZXQgYW55IG5ldyBmaWVsZHMgYWRkZWQgdG8gdGhlbSBhdCB0aGlzIHBvaW50LlxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHtcbiAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhpbnN0YW5jZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7XG59KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSlcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0OnV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltNXZaR1ZmYlc5a2RXeGxjeTl5WldGamRDOXNhV0l2YVc1emRHRnVkR2xoZEdWU1pXRmpkRU52YlhCdmJtVnVkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pTzBGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSm1hV3hsSWpvaVoyVnVaWEpoZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJREl3TVRNdE1qQXhOU3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxSUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdRbE5FTFhOMGVXeGxJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVJRUZ1SUdGa1pHbDBhVzl1WVd3Z1ozSmhiblJjYmlBcUlHOW1JSEJoZEdWdWRDQnlhV2RvZEhNZ1kyRnVJR0psSUdadmRXNWtJR2x1SUhSb1pTQlFRVlJGVGxSVElHWnBiR1VnYVc0Z2RHaGxJSE5oYldVZ1pHbHlaV04wYjNKNUxseHVJQ3BjYmlBcUlFQndjbTkyYVdSbGMwMXZaSFZzWlNCcGJuTjBZVzUwYVdGMFpWSmxZV04wUTI5dGNHOXVaVzUwWEc0Z0tpQkFkSGx3WldOb1pXTnJjeUJ6ZEdGMGFXTXRiMjVzZVZ4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGSmxZV04wUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZENjcE8xeHVkbUZ5SUZKbFlXTjBSVzF3ZEhsRGIyMXdiMjVsYm5RZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJXMXdkSGxEYjIxd2IyNWxiblFuS1R0Y2JuWmhjaUJTWldGamRFNWhkR2wyWlVOdmJYQnZibVZ1ZENBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNST1lYUnBkbVZEYjIxd2IyNWxiblFuS1R0Y2JseHVkbUZ5SUdGemMybG5iaUE5SUhKbGNYVnBjbVVvSnk0dlQySnFaV04wTG1GemMybG5iaWNwTzF4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiaTh2SUZSdklHRjJiMmxrSUdFZ1kzbGpiR2xqSUdSbGNHVnVaR1Z1WTNrc0lIZGxJR055WldGMFpTQjBhR1VnWm1sdVlXd2dZMnhoYzNNZ2FXNGdkR2hwY3lCdGIyUjFiR1ZjYm5aaGNpQlNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEZkeVlYQndaWElnUFNCbWRXNWpkR2x2YmlBb0tTQjdmVHRjYm1GemMybG5iaWhTWldGamRFTnZiWEJ2YzJsMFpVTnZiWEJ2Ym1WdWRGZHlZWEJ3WlhJdWNISnZkRzkwZVhCbExDQlNaV0ZqZEVOdmJYQnZjMmwwWlVOdmJYQnZibVZ1ZEM1TmFYaHBiaXdnZTF4dUlDQmZhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWREb2dhVzV6ZEdGdWRHbGhkR1ZTWldGamRFTnZiWEJ2Ym1WdWRGeHVmU2s3WEc1Y2JtWjFibU4wYVc5dUlHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaHZkMjVsY2lrZ2UxeHVJQ0JwWmlBb2IzZHVaWElwSUh0Y2JpQWdJQ0IyWVhJZ2JtRnRaU0E5SUc5M2JtVnlMbWRsZEU1aGJXVW9LVHRjYmlBZ0lDQnBaaUFvYm1GdFpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY2dRMmhsWTJzZ2RHaGxJSEpsYm1SbGNpQnRaWFJvYjJRZ2IyWWdZQ2NnS3lCdVlXMWxJQ3NnSjJBdUp6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUNjbk8xeHVmVnh1WEc0dktpcGNiaUFxSUVOb1pXTnJJR2xtSUhSb1pTQjBlWEJsSUhKbFptVnlaVzVqWlNCcGN5QmhJR3R1YjNkdUlHbHVkR1Z5Ym1Gc0lIUjVjR1V1SUVrdVpTNGdibTkwSUdFZ2RYTmxjbHh1SUNvZ2NISnZkbWxrWldRZ1kyOXRjRzl6YVhSbElIUjVjR1V1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRtZFc1amRHbHZibjBnZEhsd1pWeHVJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjBnVW1WMGRYSnVjeUIwY25WbElHbG1JSFJvYVhNZ2FYTWdZU0IyWVd4cFpDQnBiblJsY201aGJDQjBlWEJsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwYzBsdWRHVnlibUZzUTI5dGNHOXVaVzUwVkhsd1pTaDBlWEJsS1NCN1hHNGdJSEpsZEhWeWJpQjBlWEJsYjJZZ2RIbHdaU0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUIwZVhCbGIyWWdkSGx3WlM1d2NtOTBiM1I1Y0dVZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlIUjVjR1Z2WmlCMGVYQmxMbkJ5YjNSdmRIbHdaUzV0YjNWdWRFTnZiWEJ2Ym1WdWRDQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUppQjBlWEJsYjJZZ2RIbHdaUzV3Y205MGIzUjVjR1V1Y21WalpXbDJaVU52YlhCdmJtVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp6dGNibjFjYmx4dUx5b3FYRzRnS2lCSGFYWmxiaUJoSUZKbFlXTjBUbTlrWlN3Z1kzSmxZWFJsSUdGdUlHbHVjM1JoYm1ObElIUm9ZWFFnZDJsc2JDQmhZM1IxWVd4c2VTQmlaU0J0YjNWdWRHVmtMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdVbVZoWTNST2IyUmxmU0J1YjJSbFhHNGdLaUJBY21WMGRYSnVJSHR2WW1wbFkzUjlJRUVnYm1WM0lHbHVjM1JoYm1ObElHOW1JSFJvWlNCbGJHVnRaVzUwSjNNZ1kyOXVjM1J5ZFdOMGIzSXVYRzRnS2lCQWNISnZkR1ZqZEdWa1hHNGdLaTljYm1aMWJtTjBhVzl1SUdsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFvYm05a1pTa2dlMXh1SUNCMllYSWdhVzV6ZEdGdVkyVTdYRzVjYmlBZ2FXWWdLRzV2WkdVZ1BUMDlJRzUxYkd3Z2ZId2dibTlrWlNBOVBUMGdabUZzYzJVcElIdGNiaUFnSUNCcGJuTjBZVzVqWlNBOUlHNWxkeUJTWldGamRFVnRjSFI1UTI5dGNHOXVaVzUwS0dsdWMzUmhiblJwWVhSbFVtVmhZM1JEYjIxd2IyNWxiblFwTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQnViMlJsSUQwOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lIWmhjaUJsYkdWdFpXNTBJRDBnYm05a1pUdGNiaUFnSUNBaEtHVnNaVzFsYm5RZ0ppWWdLSFI1Y0dWdlppQmxiR1Z0Wlc1MExuUjVjR1VnUFQwOUlDZG1kVzVqZEdsdmJpY2dmSHdnZEhsd1pXOW1JR1ZzWlcxbGJuUXVkSGx3WlNBOVBUMGdKM04wY21sdVp5Y3BLU0EvSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljZ1B5QnBiblpoY21saGJuUW9abUZzYzJVc0lDZEZiR1Z0Wlc1MElIUjVjR1VnYVhNZ2FXNTJZV3hwWkRvZ1pYaHdaV04wWldRZ1lTQnpkSEpwYm1jZ0tHWnZjaUJpZFdsc2RDMXBiaUJqYjIxd2IyNWxiblJ6S1NBbklDc2dKMjl5SUdFZ1kyeGhjM012Wm5WdVkzUnBiMjRnS0dadmNpQmpiMjF3YjNOcGRHVWdZMjl0Y0c5dVpXNTBjeWtnWW5WMElHZHZkRG9nSlhNdUpYTW5MQ0JsYkdWdFpXNTBMblI1Y0dVZ1BUMGdiblZzYkNBL0lHVnNaVzFsYm5RdWRIbHdaU0E2SUhSNWNHVnZaaUJsYkdWdFpXNTBMblI1Y0dVc0lHZGxkRVJsWTJ4aGNtRjBhVzl1UlhKeWIzSkJaR1JsYm1SMWJTaGxiR1Z0Wlc1MExsOXZkMjVsY2lrcElEb2dhVzUyWVhKcFlXNTBLR1poYkhObEtTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQzh2SUZOd1pXTnBZV3dnWTJGelpTQnpkSEpwYm1jZ2RtRnNkV1Z6WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJsYkdWdFpXNTBMblI1Y0dVZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0JwYm5OMFlXNWpaU0E5SUZKbFlXTjBUbUYwYVhabFEyOXRjRzl1Wlc1MExtTnlaV0YwWlVsdWRHVnlibUZzUTI5dGNHOXVaVzUwS0dWc1pXMWxiblFwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYVhOSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZEZSNWNHVW9aV3hsYldWdWRDNTBlWEJsS1NrZ2UxeHVJQ0FnSUNBZ0x5OGdWR2hwY3lCcGN5QjBaVzF3YjNKaGNtbHNlU0JoZG1GcGJHRmliR1VnWm05eUlHTjFjM1J2YlNCamIyMXdiMjVsYm5SeklIUm9ZWFFnWVhKbElHNXZkQ0J6ZEhKcGJtZGNiaUFnSUNBZ0lDOHZJSEpsY0hKbGMyVnVkR0YwYVc5dWN5NGdTUzVsTGlCQlVsUXVJRTl1WTJVZ2RHaHZjMlVnWVhKbElIVndaR0YwWldRZ2RHOGdkWE5sSUhSb1pTQnpkSEpwYm1kY2JpQWdJQ0FnSUM4dklISmxjSEpsYzJWdWRHRjBhVzl1TENCM1pTQmpZVzRnWkhKdmNDQjBhR2x6SUdOdlpHVWdjR0YwYUM1Y2JpQWdJQ0FnSUdsdWMzUmhibU5sSUQwZ2JtVjNJR1ZzWlcxbGJuUXVkSGx3WlNobGJHVnRaVzUwS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhVzV6ZEdGdVkyVWdQU0J1WlhjZ1VtVmhZM1JEYjIxd2IzTnBkR1ZEYjIxd2IyNWxiblJYY21Gd2NHVnlLQ2s3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCdWIyUmxJRDA5UFNBbmMzUnlhVzVuSnlCOGZDQjBlWEJsYjJZZ2JtOWtaU0E5UFQwZ0oyNTFiV0psY2ljcElIdGNiaUFnSUNCcGJuTjBZVzVqWlNBOUlGSmxZV04wVG1GMGFYWmxRMjl0Y0c5dVpXNTBMbU55WldGMFpVbHVjM1JoYm1ObFJtOXlWR1Y0ZENodWIyUmxLVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FoWm1Gc2MyVWdQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblJXNWpiM1Z1ZEdWeVpXUWdhVzUyWVd4cFpDQlNaV0ZqZENCdWIyUmxJRzltSUhSNWNHVWdKWE1uTENCMGVYQmxiMllnYm05a1pTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQjlYRzVjYmlBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnloMGVYQmxiMllnYVc1emRHRnVZMlV1WTI5dWMzUnlkV04wSUQwOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUhSNWNHVnZaaUJwYm5OMFlXNWpaUzV0YjNWdWRFTnZiWEJ2Ym1WdWRDQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUppQjBlWEJsYjJZZ2FXNXpkR0Z1WTJVdWNtVmpaV2wyWlVOdmJYQnZibVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCMGVYQmxiMllnYVc1emRHRnVZMlV1ZFc1dGIzVnVkRU52YlhCdmJtVnVkQ0E5UFQwZ0oyWjFibU4wYVc5dUp5d2dKMDl1YkhrZ1VtVmhZM1FnUTI5dGNHOXVaVzUwY3lCallXNGdZbVVnYlc5MWJuUmxaQzRuS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnZlZ4dVhHNGdJQzh2SUZObGRITWdkWEFnZEdobElHbHVjM1JoYm1ObExpQlVhR2x6SUdOaGJpQndjbTlpWVdKc2VTQnFkWE4wSUcxdmRtVWdhVzUwYnlCMGFHVWdZMjl1YzNSeWRXTjBiM0lnYm05M0xseHVJQ0JwYm5OMFlXNWpaUzVqYjI1emRISjFZM1FvYm05a1pTazdYRzVjYmlBZ0x5OGdWR2hsYzJVZ2RIZHZJR1pwWld4a2N5QmhjbVVnZFhObFpDQmllU0IwYUdVZ1JFOU5JR0Z1WkNCQlVsUWdaR2xtWm1sdVp5QmhiR2R2Y21sMGFHMXpYRzRnSUM4dklISmxjM0JsWTNScGRtVnNlUzRnU1c1emRHVmhaQ0J2WmlCMWMybHVaeUJsZUhCaGJtUnZjeUJ2YmlCamIyMXdiMjVsYm5SekxDQjNaU0J6YUc5MWJHUWdZbVZjYmlBZ0x5OGdjM1J2Y21sdVp5QjBhR1VnYzNSaGRHVWdibVZsWkdWa0lHSjVJSFJvWlNCa2FXWm1hVzVuSUdGc1oyOXlhWFJvYlhNZ1pXeHpaWGRvWlhKbExseHVJQ0JwYm5OMFlXNWpaUzVmYlc5MWJuUkpibVJsZUNBOUlEQTdYRzRnSUdsdWMzUmhibU5sTGw5dGIzVnVkRWx0WVdkbElEMGdiblZzYkR0Y2JseHVJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lHbHVjM1JoYm1ObExsOXBjMDkzYm1WeVRtVmpaWE56WVhKNUlEMGdabUZzYzJVN1hHNGdJQ0FnYVc1emRHRnVZMlV1WDNkaGNtNWxaRUZpYjNWMFVtVm1jMGx1VW1WdVpHVnlJRDBnWm1Gc2MyVTdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCcGJuTjBZVzVqWlhNZ2MyaHZkV3hrSUdaMWJHeDVJR052Ym5OMGNuVmpkR1ZrSUdGMElIUm9hWE1nY0c5cGJuUXNJSE52SUhSb1pYa2djMmh2ZFd4a1hHNGdJQzh2SUc1dmRDQm5aWFFnWVc1NUlHNWxkeUJtYVdWc1pITWdZV1JrWldRZ2RHOGdkR2hsYlNCaGRDQjBhR2x6SUhCdmFXNTBMbHh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJR2xtSUNoUFltcGxZM1F1Y0hKbGRtVnVkRVY0ZEdWdWMybHZibk1wSUh0Y2JpQWdJQ0FnSUU5aWFtVmpkQzV3Y21WMlpXNTBSWGgwWlc1emFXOXVjeWhwYm5OMFlXNWpaU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJR2x1YzNSaGJtTmxPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHbHVjM1JoYm5ScFlYUmxVbVZoWTNSRGIyMXdiMjVsYm5RN0lsMTkiLCIoZnVuY3Rpb24gKHByb2Nlc3Mpe1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIG9ubHlDaGlsZFxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlXG4gKiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpc1xuICogZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHMgcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlXG4gKiBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRvIGFic3RyYWN0IGF3YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlXG4gKiBvZiBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0dXJlLlxuICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RDb21wb25lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ29ubHlDaGlsZCBtdXN0IGJlIHBhc3NlZCBhIGNoaWxkcmVuIHdpdGggZXhhY3RseSBvbmUgY2hpbGQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb25seUNoaWxkO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdmIyNXNlVU5vYVd4a0xtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElESXdNVE10TWpBeE5Td2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1FsTkVMWE4wZVd4bElHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdUlFRnVJR0ZrWkdsMGFXOXVZV3dnWjNKaGJuUmNiaUFxSUc5bUlIQmhkR1Z1ZENCeWFXZG9kSE1nWTJGdUlHSmxJR1p2ZFc1a0lHbHVJSFJvWlNCUVFWUkZUbFJUSUdacGJHVWdhVzRnZEdobElITmhiV1VnWkdseVpXTjBiM0o1TGx4dUlDcGNiaUFxSUVCd2NtOTJhV1JsYzAxdlpIVnNaU0J2Ym14NVEyaHBiR1JjYmlBcUwxeHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVW1WaFkzUkZiR1Z0Wlc1MElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5RbktUdGNibHh1ZG1GeUlHbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMmx1ZG1GeWFXRnVkQ2NwTzF4dVhHNHZLaXBjYmlBcUlGSmxkSFZ5Ym5NZ2RHaGxJR1pwY25OMElHTm9hV3hrSUdsdUlHRWdZMjlzYkdWamRHbHZiaUJ2WmlCamFHbHNaSEpsYmlCaGJtUWdkbVZ5YVdacFpYTWdkR2hoZENCMGFHVnlaVnh1SUNvZ2FYTWdiMjVzZVNCdmJtVWdZMmhwYkdRZ2FXNGdkR2hsSUdOdmJHeGxZM1JwYjI0dUlGUm9aU0JqZFhKeVpXNTBJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHOW1JSFJvYVhOY2JpQXFJR1oxYm1OMGFXOXVJR0Z6YzNWdFpYTWdkR2hoZENCaElITnBibWRzWlNCamFHbHNaQ0JuWlhSeklIQmhjM05sWkNCM2FYUm9iM1YwSUdFZ2QzSmhjSEJsY2l3Z1luVjBJSFJvWlZ4dUlDb2djSFZ5Y0c5elpTQnZaaUIwYUdseklHaGxiSEJsY2lCbWRXNWpkR2x2YmlCcGN5QjBieUJoWW5OMGNtRmpkQ0JoZDJGNUlIUm9aU0J3WVhKMGFXTjFiR0Z5SUhOMGNuVmpkSFZ5WlZ4dUlDb2diMllnWTJocGJHUnlaVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHMvYjJKcVpXTjBmU0JqYUdsc1pISmxiaUJEYUdsc1pDQmpiMnhzWldOMGFXOXVJSE4wY25WamRIVnlaUzVjYmlBcUlFQnlaWFIxY200Z2UxSmxZV04wUTI5dGNHOXVaVzUwZlNCVWFHVWdabWx5YzNRZ1lXNWtJRzl1YkhrZ1lGSmxZV04wUTI5dGNHOXVaVzUwWUNCamIyNTBZV2x1WldRZ2FXNGdkR2hsWEc0Z0tpQnpkSEoxWTNSMWNtVXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHOXViSGxEYUdsc1pDaGphR2xzWkhKbGJpa2dlMXh1SUNBaFVtVmhZM1JGYkdWdFpXNTBMbWx6Vm1Gc2FXUkZiR1Z0Wlc1MEtHTm9hV3hrY21WdUtTQS9JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCcGJuWmhjbWxoYm5Rb1ptRnNjMlVzSUNkdmJteDVRMmhwYkdRZ2JYVnpkQ0JpWlNCd1lYTnpaV1FnWVNCamFHbHNaSEpsYmlCM2FYUm9JR1Y0WVdOMGJIa2diMjVsSUdOb2FXeGtMaWNwSURvZ2FXNTJZWEpwWVc1MEtHWmhiSE5sS1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnY21WMGRYSnVJR05vYVd4a2NtVnVPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHOXViSGxEYUdsc1pEc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSB0cmF2ZXJzZUFsbENoaWxkcmVuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlSGFuZGxlcyA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZUhhbmRsZXMnKTtcblxudmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgU0VQQVJBVE9SID0gUmVhY3RJbnN0YW5jZUhhbmRsZXMuU0VQQVJBVE9SO1xudmFyIFNVQlNFUEFSQVRPUiA9ICc6JztcblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZXJMb29rdXAgPSB7XG4gICc9JzogJz0wJyxcbiAgJy4nOiAnPTEnLFxuICAnOic6ICc9Midcbn07XG5cbnZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9IC9bPS46XS9nO1xuXG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xuXG5mdW5jdGlvbiB1c2VyUHJvdmlkZWRLZXlFc2NhcGVyKG1hdGNoKSB7XG4gIHJldHVybiB1c2VyUHJvdmlkZWRLZXlFc2NhcGVyTG9va3VwW21hdGNoXTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xuICAgIC8vIEV4cGxpY2l0IGtleVxuICAgIHJldHVybiB3cmFwVXNlclByb3ZpZGVkS2V5KGNvbXBvbmVudC5rZXkpO1xuICB9XG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogRXNjYXBlIGEgY29tcG9uZW50IGtleSBzbyB0aGF0IGl0IGlzIHNhZmUgdG8gdXNlIGluIGEgcmVhY3RpZC5cbiAqXG4gKiBAcGFyYW0geyp9IHRleHQgQ29tcG9uZW50IGtleSB0byBiZSBlc2NhcGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsIHVzZXJQcm92aWRlZEtleUVzY2FwZXIpO1xufVxuXG4vKipcbiAqIFdyYXAgYSBga2V5YCB2YWx1ZSBleHBsaWNpdGx5IHByb3ZpZGVkIGJ5IHRoZSB1c2VyIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb21cbiAqIGltcGxpY2l0bHktZ2VuZXJhdGVkIGtleXMgZ2VuZXJhdGVkIGJ5IGEgY29tcG9uZW50J3MgaW5kZXggaW4gaXRzIHBhcmVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFZhbHVlIG9mIGEgdXNlci1wcm92aWRlZCBga2V5YCBhdHRyaWJ1dGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gd3JhcFVzZXJQcm92aWRlZEtleShrZXkpIHtcbiAgcmV0dXJuICckJyArIGVzY2FwZVVzZXJQcm92aWRlZEtleShrZXkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwgUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0gMDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLicpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgd3JhcFVzZXJQcm92aWRlZEtleShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9ICcgSXQgbG9va3MgbGlrZSB5b3VcXCdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkgYSBkaWZmZXJlbnQgJyArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IGludmFyaWFudChmYWxzZSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xufSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbTV2WkdWZmJXOWtkV3hsY3k5eVpXRmpkQzlzYVdJdmRISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPMEZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbWRsYm1WeVlYUmxaQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBeU1ERXpMVEl3TVRVc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tpQkJiR3dnY21sbmFIUnpJSEpsYzJWeWRtVmtMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUVKVFJDMXpkSGxzWlNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGlCQmJpQmhaR1JwZEdsdmJtRnNJR2R5WVc1MFhHNGdLaUJ2WmlCd1lYUmxiblFnY21sbmFIUnpJR05oYmlCaVpTQm1iM1Z1WkNCcGJpQjBhR1VnVUVGVVJVNVVVeUJtYVd4bElHbHVJSFJvWlNCellXMWxJR1JwY21WamRHOXllUzVjYmlBcVhHNGdLaUJBY0hKdmRtbGtaWE5OYjJSMWJHVWdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxibHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpY3BPMXh1ZG1GeUlGSmxZV04wUld4bGJXVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JGYkdWdFpXNTBKeWs3WEc1MllYSWdVbVZoWTNSSmJuTjBZVzVqWlVoaGJtUnNaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wU1c1emRHRnVZMlZJWVc1a2JHVnpKeWs3WEc1Y2JuWmhjaUJuWlhSSmRHVnlZWFJ2Y2tadUlEMGdjbVZ4ZFdseVpTZ25MaTluWlhSSmRHVnlZWFJ2Y2tadUp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmx4dWRtRnlJRk5GVUVGU1FWUlBVaUE5SUZKbFlXTjBTVzV6ZEdGdVkyVklZVzVrYkdWekxsTkZVRUZTUVZSUFVqdGNiblpoY2lCVFZVSlRSVkJCVWtGVVQxSWdQU0FuT2ljN1hHNWNiaThxS2x4dUlDb2dWRTlFVHpvZ1ZHVnpkQ0IwYUdGMElHRWdjMmx1WjJ4bElHTm9hV3hrSUdGdVpDQmhiaUJoY25KaGVTQjNhWFJvSUc5dVpTQnBkR1Z0SUdoaGRtVWdkR2hsSUhOaGJXVWdhMlY1WEc0Z0tpQndZWFIwWlhKdUxseHVJQ292WEc1Y2JuWmhjaUIxYzJWeVVISnZkbWxrWldSTFpYbEZjMk5oY0dWeVRHOXZhM1Z3SUQwZ2UxeHVJQ0FuUFNjNklDYzlNQ2NzWEc0Z0lDY3VKem9nSnoweEp5eGNiaUFnSnpvbk9pQW5QVEluWEc1OU8xeHVYRzUyWVhJZ2RYTmxjbEJ5YjNacFpHVmtTMlY1UlhOallYQmxVbVZuWlhnZ1BTQXZXejB1T2wwdlp6dGNibHh1ZG1GeUlHUnBaRmRoY201QlltOTFkRTFoY0hNZ1BTQm1ZV3h6WlR0Y2JseHVablZ1WTNScGIyNGdkWE5sY2xCeWIzWnBaR1ZrUzJWNVJYTmpZWEJsY2lodFlYUmphQ2tnZTF4dUlDQnlaWFIxY200Z2RYTmxjbEJ5YjNacFpHVmtTMlY1UlhOallYQmxja3h2YjJ0MWNGdHRZWFJqYUYwN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWdVpYSmhkR1VnWVNCclpYa2djM1J5YVc1bklIUm9ZWFFnYVdSbGJuUnBabWxsY3lCaElHTnZiWEJ2Ym1WdWRDQjNhWFJvYVc0Z1lTQnpaWFF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHNxZlNCamIyMXdiMjVsYm5RZ1FTQmpiMjF3YjI1bGJuUWdkR2hoZENCamIzVnNaQ0JqYjI1MFlXbHVJR0VnYldGdWRXRnNJR3RsZVM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnBibVJsZUNCSmJtUmxlQ0IwYUdGMElHbHpJSFZ6WldRZ2FXWWdZU0J0WVc1MVlXd2dhMlY1SUdseklHNXZkQ0J3Y205MmFXUmxaQzVjYmlBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMxY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWjJWMFEyOXRjRzl1Wlc1MFMyVjVLR052YlhCdmJtVnVkQ3dnYVc1a1pYZ3BJSHRjYmlBZ2FXWWdLR052YlhCdmJtVnVkQ0FtSmlCamIyMXdiMjVsYm5RdWEyVjVJQ0U5SUc1MWJHd3BJSHRjYmlBZ0lDQXZMeUJGZUhCc2FXTnBkQ0JyWlhsY2JpQWdJQ0J5WlhSMWNtNGdkM0poY0ZWelpYSlFjbTkyYVdSbFpFdGxlU2hqYjIxd2IyNWxiblF1YTJWNUtUdGNiaUFnZlZ4dUlDQXZMeUJKYlhCc2FXTnBkQ0JyWlhrZ1pHVjBaWEp0YVc1bFpDQmllU0IwYUdVZ2FXNWtaWGdnYVc0Z2RHaGxJSE5sZEZ4dUlDQnlaWFIxY200Z2FXNWtaWGd1ZEc5VGRISnBibWNvTXpZcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVWelkyRndaU0JoSUdOdmJYQnZibVZ1ZENCclpYa2djMjhnZEdoaGRDQnBkQ0JwY3lCellXWmxJSFJ2SUhWelpTQnBiaUJoSUhKbFlXTjBhV1F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHNxZlNCMFpYaDBJRU52YlhCdmJtVnVkQ0JyWlhrZ2RHOGdZbVVnWlhOallYQmxaQzVjYmlBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ1FXNGdaWE5qWVhCbFpDQnpkSEpwYm1jdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdWelkyRndaVlZ6WlhKUWNtOTJhV1JsWkV0bGVTaDBaWGgwS1NCN1hHNGdJSEpsZEhWeWJpQW9KeWNnS3lCMFpYaDBLUzV5WlhCc1lXTmxLSFZ6WlhKUWNtOTJhV1JsWkV0bGVVVnpZMkZ3WlZKbFoyVjRMQ0IxYzJWeVVISnZkbWxrWldSTFpYbEZjMk5oY0dWeUtUdGNibjFjYmx4dUx5b3FYRzRnS2lCWGNtRndJR0VnWUd0bGVXQWdkbUZzZFdVZ1pYaHdiR2xqYVhSc2VTQndjbTkyYVdSbFpDQmllU0IwYUdVZ2RYTmxjaUIwYnlCa2FYTjBhVzVuZFdsemFDQnBkQ0JtY205dFhHNGdLaUJwYlhCc2FXTnBkR3g1TFdkbGJtVnlZWFJsWkNCclpYbHpJR2RsYm1WeVlYUmxaQ0JpZVNCaElHTnZiWEJ2Ym1WdWRDZHpJR2x1WkdWNElHbHVJR2wwY3lCd1lYSmxiblF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR3RsZVNCV1lXeDFaU0J2WmlCaElIVnpaWEl0Y0hKdmRtbGtaV1FnWUd0bGVXQWdZWFIwY21saWRYUmxYRzRnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5WEc0Z0tpOWNibVoxYm1OMGFXOXVJSGR5WVhCVmMyVnlVSEp2ZG1sa1pXUkxaWGtvYTJWNUtTQjdYRzRnSUhKbGRIVnliaUFuSkNjZ0t5QmxjMk5oY0dWVmMyVnlVSEp2ZG1sa1pXUkxaWGtvYTJWNUtUdGNibjFjYmx4dUx5b3FYRzRnS2lCQWNHRnlZVzBnZXo4cWZTQmphR2xzWkhKbGJpQkRhR2xzWkhKbGJpQjBjbVZsSUdOdmJuUmhhVzVsY2k1Y2JpQXFJRUJ3WVhKaGJTQjdJWE4wY21sdVozMGdibUZ0WlZOdlJtRnlJRTVoYldVZ2IyWWdkR2hsSUd0bGVTQndZWFJvSUhOdklHWmhjaTVjYmlBcUlFQndZWEpoYlNCN0lXWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QkRZV3hzWW1GamF5QjBieUJwYm5admEyVWdkMmwwYUNCbFlXTm9JR05vYVd4a0lHWnZkVzVrTGx4dUlDb2dRSEJoY21GdElIcy9LbjBnZEhKaGRtVnljMlZEYjI1MFpYaDBJRlZ6WldRZ2RHOGdjR0Z6Y3lCcGJtWnZjbTFoZEdsdmJpQjBhSEp2ZFdkb2IzVjBJSFJvWlNCMGNtRjJaWEp6WVd4Y2JpQXFJSEJ5YjJObGMzTXVYRzRnS2lCQWNtVjBkWEp1SUhzaGJuVnRZbVZ5ZlNCVWFHVWdiblZ0WW1WeUlHOW1JR05vYVd4a2NtVnVJR2x1SUhSb2FYTWdjM1ZpZEhKbFpTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJrbHRjR3dvWTJocGJHUnlaVzRzSUc1aGJXVlRiMFpoY2l3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrZ2UxeHVJQ0IyWVhJZ2RIbHdaU0E5SUhSNWNHVnZaaUJqYUdsc1pISmxianRjYmx4dUlDQnBaaUFvZEhsd1pTQTlQVDBnSjNWdVpHVm1hVzVsWkNjZ2ZId2dkSGx3WlNBOVBUMGdKMkp2YjJ4bFlXNG5LU0I3WEc0Z0lDQWdMeThnUVd4c0lHOW1JSFJvWlNCaFltOTJaU0JoY21VZ2NHVnlZMlZwZG1Wa0lHRnpJRzUxYkd3dVhHNGdJQ0FnWTJocGJHUnlaVzRnUFNCdWRXeHNPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHTm9hV3hrY21WdUlEMDlQU0J1ZFd4c0lIeDhJSFI1Y0dVZ1BUMDlJQ2R6ZEhKcGJtY25JSHg4SUhSNWNHVWdQVDA5SUNkdWRXMWlaWEluSUh4OElGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaGphR2xzWkhKbGJpa3BJSHRjYmlBZ0lDQmpZV3hzWW1GamF5aDBjbUYyWlhKelpVTnZiblJsZUhRc0lHTm9hV3hrY21WdUxGeHVJQ0FnSUM4dklFbG1JR2wwSjNNZ2RHaGxJRzl1YkhrZ1kyaHBiR1FzSUhSeVpXRjBJSFJvWlNCdVlXMWxJR0Z6SUdsbUlHbDBJSGRoY3lCM2NtRndjR1ZrSUdsdUlHRnVJR0Z5Y21GNVhHNGdJQ0FnTHk4Z2MyOGdkR2hoZENCcGRDZHpJR052Ym5OcGMzUmxiblFnYVdZZ2RHaGxJRzUxYldKbGNpQnZaaUJqYUdsc1pISmxiaUJuY205M2N5NWNiaUFnSUNCdVlXMWxVMjlHWVhJZ1BUMDlJQ2NuSUQ4Z1UwVlFRVkpCVkU5U0lDc2daMlYwUTI5dGNHOXVaVzUwUzJWNUtHTm9hV3hrY21WdUxDQXdLU0E2SUc1aGJXVlRiMFpoY2lrN1hHNGdJQ0FnY21WMGRYSnVJREU3WEc0Z0lIMWNibHh1SUNCMllYSWdZMmhwYkdRN1hHNGdJSFpoY2lCdVpYaDBUbUZ0WlR0Y2JpQWdkbUZ5SUhOMVluUnlaV1ZEYjNWdWRDQTlJREE3SUM4dklFTnZkVzUwSUc5bUlHTm9hV3hrY21WdUlHWnZkVzVrSUdsdUlIUm9aU0JqZFhKeVpXNTBJSE4xWW5SeVpXVXVYRzRnSUhaaGNpQnVaWGgwVG1GdFpWQnlaV1pwZUNBOUlHNWhiV1ZUYjBaaGNpQTlQVDBnSnljZ1B5QlRSVkJCVWtGVVQxSWdPaUJ1WVcxbFUyOUdZWElnS3lCVFZVSlRSVkJCVWtGVVQxSTdYRzVjYmlBZ2FXWWdLRUZ5Y21GNUxtbHpRWEp5WVhrb1kyaHBiR1J5Wlc0cEtTQjdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQmphR2xzWkhKbGJpNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTJocGJHUWdQU0JqYUdsc1pISmxibHRwWFR0Y2JpQWdJQ0FnSUc1bGVIUk9ZVzFsSUQwZ2JtVjRkRTVoYldWUWNtVm1hWGdnS3lCblpYUkRiMjF3YjI1bGJuUkxaWGtvWTJocGJHUXNJR2twTzF4dUlDQWdJQ0FnYzNWaWRISmxaVU52ZFc1MElDczlJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzVKYlhCc0tHTm9hV3hrTENCdVpYaDBUbUZ0WlN3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhaaGNpQnBkR1Z5WVhSdmNrWnVJRDBnWjJWMFNYUmxjbUYwYjNKR2JpaGphR2xzWkhKbGJpazdYRzRnSUNBZ2FXWWdLR2wwWlhKaGRHOXlSbTRwSUh0Y2JpQWdJQ0FnSUhaaGNpQnBkR1Z5WVhSdmNpQTlJR2wwWlhKaGRHOXlSbTR1WTJGc2JDaGphR2xzWkhKbGJpazdYRzRnSUNBZ0lDQjJZWElnYzNSbGNEdGNiaUFnSUNBZ0lHbG1JQ2hwZEdWeVlYUnZja1p1SUNFOVBTQmphR2xzWkhKbGJpNWxiblJ5YVdWektTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCcGFTQTlJREE3WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2doS0hOMFpYQWdQU0JwZEdWeVlYUnZjaTV1WlhoMEtDa3BMbVJ2Ym1VcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYUdsc1pDQTlJSE4wWlhBdWRtRnNkV1U3WEc0Z0lDQWdJQ0FnSUNBZ2JtVjRkRTVoYldVZ1BTQnVaWGgwVG1GdFpWQnlaV1pwZUNBcklHZGxkRU52YlhCdmJtVnVkRXRsZVNoamFHbHNaQ3dnYVdrckt5azdYRzRnSUNBZ0lDQWdJQ0FnYzNWaWRISmxaVU52ZFc1MElDczlJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzVKYlhCc0tHTm9hV3hrTENCdVpYaDBUbUZ0WlN3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWkdsa1YyRnlia0ZpYjNWMFRXRndjeXdnSjFWemFXNW5JRTFoY0hNZ1lYTWdZMmhwYkdSeVpXNGdhWE1nYm05MElIbGxkQ0JtZFd4c2VTQnpkWEJ3YjNKMFpXUXVJRWwwSUdseklHRnVJQ2NnS3lBblpYaHdaWEpwYldWdWRHRnNJR1psWVhSMWNtVWdkR2hoZENCdGFXZG9kQ0JpWlNCeVpXMXZkbVZrTGlCRGIyNTJaWEowSUdsMElIUnZJR0VnSnlBcklDZHpaWEYxWlc1alpTQXZJR2wwWlhKaFlteGxJRzltSUd0bGVXVmtJRkpsWVdOMFJXeGxiV1Z1ZEhNZ2FXNXpkR1ZoWkM0bktTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnSUNCa2FXUlhZWEp1UVdKdmRYUk5ZWEJ6SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBdkx5QkpkR1Z5WVhSdmNpQjNhV3hzSUhCeWIzWnBaR1VnWlc1MGNua2dXMnNzZGwwZ2RIVndiR1Z6SUhKaGRHaGxjaUIwYUdGdUlIWmhiSFZsY3k1Y2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0NFb2MzUmxjQ0E5SUdsMFpYSmhkRzl5TG01bGVIUW9LU2t1Wkc5dVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQmxiblJ5ZVNBOUlITjBaWEF1ZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHVnVkSEo1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYUdsc1pDQTlJR1Z1ZEhKNVd6RmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjRkRTVoYldVZ1BTQnVaWGgwVG1GdFpWQnlaV1pwZUNBcklIZHlZWEJWYzJWeVVISnZkbWxrWldSTFpYa29aVzUwY25sYk1GMHBJQ3NnVTFWQ1UwVlFRVkpCVkU5U0lDc2daMlYwUTI5dGNHOXVaVzUwUzJWNUtHTm9hV3hrTENBd0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMVluUnlaV1ZEYjNWdWRDQXJQU0IwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1U1cxd2JDaGphR2xzWkN3Z2JtVjRkRTVoYldVc0lHTmhiR3hpWVdOckxDQjBjbUYyWlhKelpVTnZiblJsZUhRcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0FnSUhaaGNpQmhaR1JsYm1SMWJTQTlJQ2NuTzF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnWVdSa1pXNWtkVzBnUFNBbklFbG1JSGx2ZFNCdFpXRnVkQ0IwYnlCeVpXNWtaWElnWVNCamIyeHNaV04wYVc5dUlHOW1JR05vYVd4a2NtVnVMQ0IxYzJVZ1lXNGdZWEp5WVhrZ0p5QXJJQ2RwYm5OMFpXRmtJRzl5SUhkeVlYQWdkR2hsSUc5aWFtVmpkQ0IxYzJsdVp5QmpjbVZoZEdWR2NtRm5iV1Z1ZENodlltcGxZM1FwSUdaeWIyMGdkR2hsSUNjZ0t5QW5VbVZoWTNRZ1lXUmtMVzl1Y3k0bk8xeHVJQ0FnSUNBZ0lDQnBaaUFvWTJocGJHUnlaVzR1WDJselVtVmhZM1JGYkdWdFpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1lXUmtaVzVrZFcwZ1BTQW5JRWwwSUd4dmIydHpJR3hwYTJVZ2VXOTFYRnduY21VZ2RYTnBibWNnWVc0Z1pXeGxiV1Z1ZENCamNtVmhkR1ZrSUdKNUlHRWdaR2xtWm1WeVpXNTBJQ2NnS3lBbmRtVnljMmx2YmlCdlppQlNaV0ZqZEM0Z1RXRnJaU0J6ZFhKbElIUnZJSFZ6WlNCdmJteDVJRzl1WlNCamIzQjVJRzltSUZKbFlXTjBMaWM3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMllYSWdibUZ0WlNBOUlGSmxZV04wUTNWeWNtVnVkRTkzYm1WeUxtTjFjbkpsYm5RdVoyVjBUbUZ0WlNncE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmhaR1JsYm1SMWJTQXJQU0FuSUVOb1pXTnJJSFJvWlNCeVpXNWtaWElnYldWMGFHOWtJRzltSUdBbklDc2dibUZ0WlNBcklDZGdMaWM3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjJZWElnWTJocGJHUnlaVzVUZEhKcGJtY2dQU0JUZEhKcGJtY29ZMmhwYkdSeVpXNHBPMXh1SUNBZ0lDQWdJV1poYkhObElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjA5aWFtVmpkSE1nWVhKbElHNXZkQ0IyWVd4cFpDQmhjeUJoSUZKbFlXTjBJR05vYVd4a0lDaG1iM1Z1WkRvZ0pYTXBMaVZ6Snl3Z1kyaHBiR1J5Wlc1VGRISnBibWNnUFQwOUlDZGJiMkpxWldOMElFOWlhbVZqZEYwbklEOGdKMjlpYW1WamRDQjNhWFJvSUd0bGVYTWdleWNnS3lCUFltcGxZM1F1YTJWNWN5aGphR2xzWkhKbGJpa3VhbTlwYmlnbkxDQW5LU0FySUNkOUp5QTZJR05vYVd4a2NtVnVVM1J5YVc1bkxDQmhaR1JsYm1SMWJTa2dPaUJwYm5aaGNtbGhiblFvWm1Gc2MyVXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ6ZFdKMGNtVmxRMjkxYm5RN1hHNTlYRzVjYmk4cUtseHVJQ29nVkhKaGRtVnljMlZ6SUdOb2FXeGtjbVZ1SUhSb1lYUWdZWEpsSUhSNWNHbGpZV3hzZVNCemNHVmphV1pwWldRZ1lYTWdZSEJ5YjNCekxtTm9hV3hrY21WdVlDd2dZblYwWEc0Z0tpQnRhV2RvZENCaGJITnZJR0psSUhOd1pXTnBabWxsWkNCMGFISnZkV2RvSUdGMGRISnBZblYwWlhNNlhHNGdLbHh1SUNvZ0xTQmdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxiaWgwYUdsekxuQnliM0J6TG1Ob2FXeGtjbVZ1TENBdUxpNHBZRnh1SUNvZ0xTQmdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxiaWgwYUdsekxuQnliM0J6TG14bFpuUlFZVzVsYkVOb2FXeGtjbVZ1TENBdUxpNHBZRnh1SUNwY2JpQXFJRlJvWlNCZ2RISmhkbVZ5YzJWRGIyNTBaWGgwWUNCcGN5QmhiaUJ2Y0hScGIyNWhiQ0JoY21kMWJXVnVkQ0IwYUdGMElHbHpJSEJoYzNObFpDQjBhSEp2ZFdkb0lIUm9aVnh1SUNvZ1pXNTBhWEpsSUhSeVlYWmxjbk5oYkM0Z1NYUWdZMkZ1SUdKbElIVnpaV1FnZEc4Z2MzUnZjbVVnWVdOamRXMTFiR0YwYVc5dWN5QnZjaUJoYm5sMGFHbHVaeUJsYkhObElIUm9ZWFJjYmlBcUlIUm9aU0JqWVd4c1ltRmpheUJ0YVdkb2RDQm1hVzVrSUhKbGJHVjJZVzUwTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3UHlwOUlHTm9hV3hrY21WdUlFTm9hV3hrY21WdUlIUnlaV1VnYjJKcVpXTjBMbHh1SUNvZ1FIQmhjbUZ0SUhzaFpuVnVZM1JwYjI1OUlHTmhiR3hpWVdOcklGUnZJR2x1ZG05clpTQjFjRzl1SUhSeVlYWmxjbk5wYm1jZ1pXRmphQ0JqYUdsc1pDNWNiaUFxSUVCd1lYSmhiU0I3UHlwOUlIUnlZWFpsY25ObFEyOXVkR1Y0ZENCRGIyNTBaWGgwSUdadmNpQjBjbUYyWlhKellXd3VYRzRnS2lCQWNtVjBkWEp1SUhzaGJuVnRZbVZ5ZlNCVWFHVWdiblZ0WW1WeUlHOW1JR05vYVd4a2NtVnVJR2x1SUhSb2FYTWdjM1ZpZEhKbFpTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpaGphR2xzWkhKbGJpd2dZMkZzYkdKaFkyc3NJSFJ5WVhabGNuTmxRMjl1ZEdWNGRDa2dlMXh1SUNCcFppQW9ZMmhwYkdSeVpXNGdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lISmxkSFZ5YmlBd08xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNUpiWEJzS0dOb2FXeGtjbVZ1TENBbkp5d2dZMkZzYkdKaFkyc3NJSFJ5WVhabGNuTmxRMjl1ZEdWNGRDazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJqc2lYWDA9IiwiKGZ1bmN0aW9uIChwcm9jZXNzKXtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgdmFsaWRhdGVET01OZXN0aW5nXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9PYmplY3QuYXNzaWduJyk7XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gZW1wdHlGdW5jdGlvbjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gVGhpcyB2YWxpZGF0aW9uIGNvZGUgd2FzIHdyaXR0ZW4gYmFzZWQgb24gdGhlIEhUTUw1IHBhcnNpbmcgc3BlYzpcbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBkb2VzIG5vdCBjYXRjaCBhbGwgaW52YWxpZCBuZXN0aW5nLCBub3IgZG9lcyBpdCB0cnkgdG8gKGFzIGl0J3NcbiAgLy8gbm90IGNsZWFyIHdoYXQgcHJhY3RpY2FsIGJlbmVmaXQgZG9pbmcgc28gcHJvdmlkZXMpOyBpbnN0ZWFkLCB3ZSB3YXJuIG9ubHlcbiAgLy8gZm9yIGNhc2VzIHdoZXJlIHRoZSBwYXJzZXIgd2lsbCBnaXZlIGEgcGFyc2UgdHJlZSBkaWZmZXJpbmcgZnJvbSB3aGF0IFJlYWN0XG4gIC8vIGludGVuZGVkLiBGb3IgZXhhbXBsZSwgPGI+PGRpdj48L2Rpdj48L2I+IGlzIGludmFsaWQgYnV0IHdlIGRvbid0IHdhcm5cbiAgLy8gYmVjYXVzZSBpdCBzdGlsbCBwYXJzZXMgY29ycmVjdGx5OyB3ZSBkbyB3YXJuIGZvciBvdGhlciBjYXNlcyBsaWtlIG5lc3RlZFxuICAvLyA8cD4gdGFncyB3aGVyZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWNvbmQgZWxlbWVudCBpbXBsaWNpdGx5IGNsb3NlcyB0aGVcbiAgLy8gZmlyc3QsIGNhdXNpbmcgYSBjb25mdXNpbmcgbWVzcy5cblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNzcGVjaWFsXG4gIHZhciBzcGVjaWFsVGFncyA9IFsnYWRkcmVzcycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYmdzb3VuZCcsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnY2VudGVyJywgJ2NvbCcsICdjb2xncm91cCcsICdkZCcsICdkZXRhaWxzJywgJ2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1iZWQnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsICdmaWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLCAnaWZyYW1lJywgJ2ltZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpJywgJ2xpbmsnLCAnbGlzdGluZycsICdtYWluJywgJ21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScsICdtZXRhJywgJ25hdicsICdub2VtYmVkJywgJ25vZnJhbWVzJywgJ25vc2NyaXB0JywgJ29iamVjdCcsICdvbCcsICdwJywgJ3BhcmFtJywgJ3BsYWludGV4dCcsICdwcmUnLCAnc2NyaXB0JywgJ3NlY3Rpb24nLCAnc2VsZWN0JywgJ3NvdXJjZScsICdzdHlsZScsICdzdW1tYXJ5JywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RlbXBsYXRlJywgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNrJywgJ3VsJywgJ3dicicsICd4bXAnXTtcblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICB2YXIgaW5TY29wZVRhZ3MgPSBbJ2FwcGxldCcsICdjYXB0aW9uJywgJ2h0bWwnLCAndGFibGUnLCAndGQnLCAndGgnLCAnbWFycXVlZScsICdvYmplY3QnLCAndGVtcGxhdGUnLFxuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbiAgLy8gVE9ETzogRGlzdGluZ3Vpc2ggYnkgbmFtZXNwYWNlIGhlcmUgLS0gZm9yIDx0aXRsZT4sIGluY2x1ZGluZyBpdCBoZXJlXG4gIC8vIGVycnMgb24gdGhlIHNpZGUgb2YgZmV3ZXIgd2FybmluZ3NcbiAgJ2ZvcmVpZ25PYmplY3QnLCAnZGVzYycsICd0aXRsZSddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLWJ1dHRvbi1zY29wZVxuICB2YXIgYnV0dG9uU2NvcGVUYWdzID0gaW5TY29wZVRhZ3MuY29uY2F0KFsnYnV0dG9uJ10pO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2dlbmVyYXRlLWltcGxpZWQtZW5kLXRhZ3NcbiAgdmFyIGltcGxpZWRFbmRUYWdzID0gWydkZCcsICdkdCcsICdsaScsICdvcHRpb24nLCAnb3B0Z3JvdXAnLCAncCcsICdycCcsICdydCddO1xuXG4gIHZhciBlbXB0eUFuY2VzdG9ySW5mbyA9IHtcbiAgICBwYXJlbnRUYWc6IG51bGwsXG5cbiAgICBmb3JtVGFnOiBudWxsLFxuICAgIGFUYWdJblNjb3BlOiBudWxsLFxuICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsXG4gICAgbm9iclRhZ0luU2NvcGU6IG51bGwsXG4gICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsXG5cbiAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsLFxuICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsXG4gIH07XG5cbiAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFnLCBpbnN0YW5jZSkge1xuICAgIHZhciBhbmNlc3RvckluZm8gPSBhc3NpZ24oe30sIG9sZEluZm8gfHwgZW1wdHlBbmNlc3RvckluZm8pO1xuICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6IGluc3RhbmNlIH07XG5cbiAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQgdGFncyBpblxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcbiAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAhPT0gJ3AnKSB7XG4gICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsO1xuICAgIH1cblxuICAgIGFuY2VzdG9ySW5mby5wYXJlbnRUYWcgPSBpbmZvO1xuXG4gICAgaWYgKHRhZyA9PT0gJ2Zvcm0nKSB7XG4gICAgICBhbmNlc3RvckluZm8uZm9ybVRhZyA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdhJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ25vYnInKSB7XG4gICAgICBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdsaScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2RkJyB8fCB0YWcgPT09ICdkdCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9ySW5mbztcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgaXNUYWdWYWxpZFdpdGhQYXJlbnQgPSBmdW5jdGlvbiAodGFnLCBwYXJlbnRUYWcpIHtcbiAgICAvLyBGaXJzdCwgbGV0J3MgY2hlY2sgaWYgd2UncmUgaW4gYW4gdW51c3VhbCBwYXJzaW5nIG1vZGUuLi5cbiAgICBzd2l0Y2ggKHBhcmVudFRhZykge1xuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluc2VsZWN0XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdvcHRncm91cCcgfHwgdGFnID09PSAnI3RleHQnO1xuICAgICAgY2FzZSAnb3B0Z3JvdXAnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICAvLyBTdHJpY3RseSBzcGVha2luZywgc2VlaW5nIGFuIDxvcHRpb24+IGRvZXNuJ3QgbWVhbiB3ZSdyZSBpbiBhIDxzZWxlY3Q+XG4gICAgICAvLyBidXRcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICcjdGV4dCc7XG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRkXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jYXB0aW9uXG4gICAgICAvLyBObyBzcGVjaWFsIGJlaGF2aW9yIHNpbmNlIHRoZXNlIHJ1bGVzIGZhbGwgYmFjayB0byBcImluIGJvZHlcIiBtb2RlIGZvclxuICAgICAgLy8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5nIGJlaGF2aW9yIGFueXdheS5cblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHJcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50Ym9keVxuICAgICAgY2FzZSAndGJvZHknOlxuICAgICAgY2FzZSAndGhlYWQnOlxuICAgICAgY2FzZSAndGZvb3QnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAndHInIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXBcbiAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50YWJsZVxuICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluaGVhZFxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3VuZCcgfHwgdGFnID09PSAnbGluaycgfHwgdGFnID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUnIHx8IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtaHRtbC1lbGVtZW50XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknO1xuICAgIH1cblxuICAgIC8vIFByb2JhYmx5IGluIHRoZSBcImluIGJvZHlcIiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3NcbiAgICAvLyB3aGVyZSB0aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBjbG9zZXMgdG8gYmUgYWRkZWQuXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBjYXNlICdoMSc6XG4gICAgICBjYXNlICdoMic6XG4gICAgICBjYXNlICdoMyc6XG4gICAgICBjYXNlICdoNCc6XG4gICAgICBjYXNlICdoNSc6XG4gICAgICBjYXNlICdoNic6XG4gICAgICAgIHJldHVybiBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYmIHBhcmVudFRhZyAhPT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9PSAnaDUnICYmIHBhcmVudFRhZyAhPT0gJ2g2JztcblxuICAgICAgY2FzZSAncnAnOlxuICAgICAgY2FzZSAncnQnOlxuICAgICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5kZXhPZihwYXJlbnRUYWcpID09PSAtMTtcblxuICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICBjYXNlICdjb2wnOlxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgY2FzZSAnZnJhbWUnOlxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICBjYXNlICd0ZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICBjYXNlICd0aCc6XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIC8vIFRoZXNlIHRhZ3MgYXJlIG9ubHkgdmFsaWQgd2l0aCBhIGZldyBwYXJlbnRzIHRoYXQgaGF2ZSBzcGVjaWFsIGNoaWxkXG4gICAgICAgIC8vIHBhcnNpbmcgcnVsZXMgLS0gaWYgd2UncmUgZG93biBoZXJlLCB0aGVuIG5vbmUgb2YgdGhvc2UgbWF0Y2hlZCBhbmRcbiAgICAgICAgLy8gc28gd2UgYWxsb3cgaXQgb25seSBpZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90aGVyXG4gICAgICAgIC8vIGNhc2VzIGFyZSBpbnZhbGlkLlxuICAgICAgICByZXR1cm4gcGFyZW50VGFnID09IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlclxuICAgKi9cbiAgdmFyIGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICBjYXNlICdhcnRpY2xlJzpcbiAgICAgIGNhc2UgJ2FzaWRlJzpcbiAgICAgIGNhc2UgJ2Jsb2NrcXVvdGUnOlxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIGNhc2UgJ2RldGFpbHMnOlxuICAgICAgY2FzZSAnZGlhbG9nJzpcbiAgICAgIGNhc2UgJ2Rpcic6XG4gICAgICBjYXNlICdkaXYnOlxuICAgICAgY2FzZSAnZGwnOlxuICAgICAgY2FzZSAnZmllbGRzZXQnOlxuICAgICAgY2FzZSAnZmlnY2FwdGlvbic6XG4gICAgICBjYXNlICdmaWd1cmUnOlxuICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICBjYXNlICdoZ3JvdXAnOlxuICAgICAgY2FzZSAnbWFpbic6XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgIGNhc2UgJ25hdic6XG4gICAgICBjYXNlICdvbCc6XG4gICAgICBjYXNlICdwJzpcbiAgICAgIGNhc2UgJ3NlY3Rpb24nOlxuICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICBjYXNlICd1bCc6XG5cbiAgICAgIGNhc2UgJ3ByZSc6XG4gICAgICBjYXNlICdsaXN0aW5nJzpcblxuICAgICAgY2FzZSAndGFibGUnOlxuXG4gICAgICBjYXNlICdocic6XG5cbiAgICAgIGNhc2UgJ3htcCc6XG5cbiAgICAgIGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZm9ybVRhZyB8fCBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7XG5cbiAgICAgIGNhc2UgJ2xpJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nO1xuXG4gICAgICBjYXNlICdkZCc6XG4gICAgICBjYXNlICdkdCc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uYnV0dG9uVGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIC8vIFNwZWMgc2F5cyBzb21ldGhpbmcgYWJvdXQgc3RvcmluZyBhIGxpc3Qgb2YgbWFya2VycywgYnV0IGl0IHNvdW5kc1xuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoaXMgY2hlY2suXG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGU7XG5cbiAgICAgIGNhc2UgJ25vYnInOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHaXZlbiBhIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IGluc3RhbmNlLCByZXR1cm4gYSBsaXN0IG9mIGl0cyByZWN1cnNpdmVcbiAgICogb3duZXJzLCBzdGFydGluZyBhdCB0aGUgcm9vdCBhbmQgZW5kaW5nIHdpdGggdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIHZhciBmaW5kT3duZXJTdGFjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICAvKmVzbGludC1kaXNhYmxlIHNwYWNlLWFmdGVyLWtleXdvcmRzICovXG4gICAgZG8ge1xuICAgICAgLyplc2xpbnQtZW5hYmxlIHNwYWNlLWFmdGVyLWtleXdvcmRzICovXG4gICAgICBzdGFjay5wdXNoKGluc3RhbmNlKTtcbiAgICB9IHdoaWxlIChpbnN0YW5jZSA9IGluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuICAgIHN0YWNrLnJldmVyc2UoKTtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH07XG5cbiAgdmFyIGRpZFdhcm4gPSB7fTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcgPSBmdW5jdGlvbiAoY2hpbGRUYWcsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5wYXJlbnRUYWc7XG4gICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG5cbiAgICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFnLCBwYXJlbnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87XG4gICAgdmFyIGludmFsaWRBbmNlc3RvciA9IGludmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFsaWRBbmNlc3RvckZvclRhZyhjaGlsZFRhZywgYW5jZXN0b3JJbmZvKTtcbiAgICB2YXIgcHJvYmxlbWF0aWMgPSBpbnZhbGlkUGFyZW50IHx8IGludmFsaWRBbmNlc3RvcjtcblxuICAgIGlmIChwcm9ibGVtYXRpYykge1xuICAgICAgdmFyIGFuY2VzdG9yVGFnID0gcHJvYmxlbWF0aWMudGFnO1xuICAgICAgdmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBwcm9ibGVtYXRpYy5pbnN0YW5jZTtcblxuICAgICAgdmFyIGNoaWxkT3duZXIgPSBjaGlsZEluc3RhbmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBhbmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cbiAgICAgIHZhciBjaGlsZE93bmVycyA9IGZpbmRPd25lclN0YWNrKGNoaWxkT3duZXIpO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93bmVyU3RhY2soYW5jZXN0b3JPd25lcik7XG5cbiAgICAgIHZhciBtaW5TdGFja0xlbiA9IE1hdGgubWluKGNoaWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMubGVuZ3RoKTtcbiAgICAgIHZhciBpO1xuXG4gICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG1pblN0YWNrTGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGNoaWxkT3duZXJzW2ldID09PSBhbmNlc3Rvck93bmVyc1tpXSkge1xuICAgICAgICAgIGRlZXBlc3RDb21tb24gPSBpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBVTktOT1dOID0gJyh1bmtub3duKSc7XG4gICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0gY2hpbGRPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtcbiAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG4gICAgICB9KTtcbiAgICAgIHZhciBvd25lckluZm8gPSBbXS5jb25jYXQoXG4gICAgICAvLyBJZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBhIGNvbW1vbiBvd25lciBhbmNlc3Rvciwgc3RhcnRcbiAgICAgIC8vIHdpdGggdGhhdCAtLSBvdGhlcndpc2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQncyBvd25lcnMuXG4gICAgICBkZWVwZXN0Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUoKSB8fCBVTktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsXG4gICAgICAvLyBJZiB3ZSdyZSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgKG5vbi1wYXJlbnQpIGFuY2VzdHJ5LCBhZGQgJy4uLidcbiAgICAgIGludmFsaWRBbmNlc3RvciA/IFsnLi4uJ10gOiBbXSwgY2hpbGRPd25lck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7XG5cbiAgICAgIHZhciB3YXJuS2V5ID0gISFpbnZhbGlkUGFyZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAnfCcgKyBhbmNlc3RvclRhZyArICd8JyArIG93bmVySW5mbztcbiAgICAgIGlmIChkaWRXYXJuW3dhcm5LZXldKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRpZFdhcm5bd2FybktleV0gPSB0cnVlO1xuXG4gICAgICBpZiAoaW52YWxpZFBhcmVudCkge1xuICAgICAgICB2YXIgaW5mbyA9ICcnO1xuICAgICAgICBpZiAoYW5jZXN0b3JUYWcgPT09ICd0YWJsZScgJiYgY2hpbGRUYWcgPT09ICd0cicpIHtcbiAgICAgICAgICBpbmZvICs9ICcgQWRkIGEgPHRib2R5PiB0byB5b3VyIGNvZGUgdG8gbWF0Y2ggdGhlIERPTSB0cmVlIGdlbmVyYXRlZCBieSAnICsgJ3RoZSBicm93c2VyLic7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogPCVzPiBjYW5ub3QgYXBwZWFyIGFzIGEgY2hpbGQgb2YgPCVzPi4gJyArICdTZWUgJXMuJXMnLCBjaGlsZFRhZywgYW5jZXN0b3JUYWcsIG93bmVySW5mbywgaW5mbykgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiA8JXM+IGNhbm5vdCBhcHBlYXIgYXMgYSBkZXNjZW5kYW50IG9mICcgKyAnPCVzPi4gU2VlICVzLicsIGNoaWxkVGFnLCBhbmNlc3RvclRhZywgb3duZXJJbmZvKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFsaWRhdGVET01OZXN0aW5nLmFuY2VzdG9ySW5mb0NvbnRleHRLZXkgPSAnX192YWxpZGF0ZURPTU5lc3RpbmdfYW5jZXN0b3JJbmZvJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyA9IHVwZGF0ZWRBbmNlc3RvckluZm87XG5cbiAgLy8gRm9yIHRlc3RpbmdcbiAgdmFsaWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG4gICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8ucGFyZW50VGFnO1xuICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnO1xuICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcsIHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3RvckluZm8pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZztcbn0pLmNhbGwodGhpcyxyZXF1aXJlKCdfcHJvY2VzcycpKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OXlaV0ZqZEM5c2FXSXZkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSURJd01UVXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLaUJCYkd3Z2NtbG5hSFJ6SUhKbGMyVnlkbVZrTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFSlRSQzF6ZEhsc1pTQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExpQkJiaUJoWkdScGRHbHZibUZzSUdkeVlXNTBYRzRnS2lCdlppQndZWFJsYm5RZ2NtbG5hSFJ6SUdOaGJpQmlaU0JtYjNWdVpDQnBiaUIwYUdVZ1VFRlVSVTVVVXlCbWFXeGxJR2x1SUhSb1pTQnpZVzFsSUdScGNtVmpkRzl5ZVM1Y2JpQXFYRzRnS2lCQWNISnZkbWxrWlhOTmIyUjFiR1VnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1lYTnphV2R1SUQwZ2NtVnhkV2x5WlNnbkxpOVBZbXBsWTNRdVlYTnphV2R1SnlrN1hHNTJZWElnWlcxd2RIbEdkVzVqZEdsdmJpQTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMMlZ0Y0hSNVJuVnVZM1JwYjI0bktUdGNiblpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVYRzUyWVhJZ2RtRnNhV1JoZEdWRVQwMU9aWE4wYVc1bklEMGdaVzF3ZEhsR2RXNWpkR2x2Ymp0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnTHk4Z1ZHaHBjeUIyWVd4cFpHRjBhVzl1SUdOdlpHVWdkMkZ6SUhkeWFYUjBaVzRnWW1GelpXUWdiMjRnZEdobElFaFVUVXcxSUhCaGNuTnBibWNnYzNCbFl6cGNiaUFnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqYUdGekxXRnVMV1ZzWlcxbGJuUXRhVzR0YzJOdmNHVmNiaUFnTHk5Y2JpQWdMeThnVG05MFpUb2dkR2hwY3lCa2IyVnpJRzV2ZENCallYUmphQ0JoYkd3Z2FXNTJZV3hwWkNCdVpYTjBhVzVuTENCdWIzSWdaRzlsY3lCcGRDQjBjbmtnZEc4Z0tHRnpJR2wwSjNOY2JpQWdMeThnYm05MElHTnNaV0Z5SUhkb1lYUWdjSEpoWTNScFkyRnNJR0psYm1WbWFYUWdaRzlwYm1jZ2MyOGdjSEp2ZG1sa1pYTXBPeUJwYm5OMFpXRmtMQ0IzWlNCM1lYSnVJRzl1YkhsY2JpQWdMeThnWm05eUlHTmhjMlZ6SUhkb1pYSmxJSFJvWlNCd1lYSnpaWElnZDJsc2JDQm5hWFpsSUdFZ2NHRnljMlVnZEhKbFpTQmthV1ptWlhKcGJtY2dabkp2YlNCM2FHRjBJRkpsWVdOMFhHNGdJQzh2SUdsdWRHVnVaR1ZrTGlCR2IzSWdaWGhoYlhCc1pTd2dQR0krUEdScGRqNDhMMlJwZGo0OEwySStJR2x6SUdsdWRtRnNhV1FnWW5WMElIZGxJR1J2YmlkMElIZGhjbTVjYmlBZ0x5OGdZbVZqWVhWelpTQnBkQ0J6ZEdsc2JDQndZWEp6WlhNZ1kyOXljbVZqZEd4NU95QjNaU0JrYnlCM1lYSnVJR1p2Y2lCdmRHaGxjaUJqWVhObGN5QnNhV3RsSUc1bGMzUmxaRnh1SUNBdkx5QThjRDRnZEdGbmN5QjNhR1Z5WlNCMGFHVWdZbVZuYVc1dWFXNW5JRzltSUhSb1pTQnpaV052Ym1RZ1pXeGxiV1Z1ZENCcGJYQnNhV05wZEd4NUlHTnNiM05sY3lCMGFHVmNiaUFnTHk4Z1ptbHljM1FzSUdOaGRYTnBibWNnWVNCamIyNW1kWE5wYm1jZ2JXVnpjeTVjYmx4dUlDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTnpjR1ZqYVdGc1hHNGdJSFpoY2lCemNHVmphV0ZzVkdGbmN5QTlJRnNuWVdSa2NtVnpjeWNzSUNkaGNIQnNaWFFuTENBbllYSmxZU2NzSUNkaGNuUnBZMnhsSnl3Z0oyRnphV1JsSnl3Z0oySmhjMlVuTENBblltRnpaV1p2Ym5RbkxDQW5ZbWR6YjNWdVpDY3NJQ2RpYkc5amEzRjFiM1JsSnl3Z0oySnZaSGtuTENBblluSW5MQ0FuWW5WMGRHOXVKeXdnSjJOaGNIUnBiMjRuTENBblkyVnVkR1Z5Snl3Z0oyTnZiQ2NzSUNkamIyeG5jbTkxY0Njc0lDZGtaQ2NzSUNka1pYUmhhV3h6Snl3Z0oyUnBjaWNzSUNka2FYWW5MQ0FuWkd3bkxDQW5aSFFuTENBblpXMWlaV1FuTENBblptbGxiR1J6WlhRbkxDQW5abWxuWTJGd2RHbHZiaWNzSUNkbWFXZDFjbVVuTENBblptOXZkR1Z5Snl3Z0oyWnZjbTBuTENBblpuSmhiV1VuTENBblpuSmhiV1Z6WlhRbkxDQW5hREVuTENBbmFESW5MQ0FuYURNbkxDQW5hRFFuTENBbmFEVW5MQ0FuYURZbkxDQW5hR1ZoWkNjc0lDZG9aV0ZrWlhJbkxDQW5hR2R5YjNWd0p5d2dKMmh5Snl3Z0oyaDBiV3duTENBbmFXWnlZVzFsSnl3Z0oybHRaeWNzSUNkcGJuQjFkQ2NzSUNkcGMybHVaR1Y0Snl3Z0oyeHBKeXdnSjJ4cGJtc25MQ0FuYkdsemRHbHVaeWNzSUNkdFlXbHVKeXdnSjIxaGNuRjFaV1VuTENBbmJXVnVkU2NzSUNkdFpXNTFhWFJsYlNjc0lDZHRaWFJoSnl3Z0oyNWhkaWNzSUNkdWIyVnRZbVZrSnl3Z0oyNXZabkpoYldWekp5d2dKMjV2YzJOeWFYQjBKeXdnSjI5aWFtVmpkQ2NzSUNkdmJDY3NJQ2R3Snl3Z0ozQmhjbUZ0Snl3Z0ozQnNZV2x1ZEdWNGRDY3NJQ2R3Y21VbkxDQW5jMk55YVhCMEp5d2dKM05sWTNScGIyNG5MQ0FuYzJWc1pXTjBKeXdnSjNOdmRYSmpaU2NzSUNkemRIbHNaU2NzSUNkemRXMXRZWEo1Snl3Z0ozUmhZbXhsSnl3Z0ozUmliMlI1Snl3Z0ozUmtKeXdnSjNSbGJYQnNZWFJsSnl3Z0ozUmxlSFJoY21WaEp5d2dKM1JtYjI5MEp5d2dKM1JvSnl3Z0ozUm9aV0ZrSnl3Z0ozUnBkR3hsSnl3Z0ozUnlKeXdnSjNSeVlXTnJKeXdnSjNWc0p5d2dKM2RpY2ljc0lDZDRiWEFuWFR0Y2JseHVJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ05vWVhNdFlXNHRaV3hsYldWdWRDMXBiaTF6WTI5d1pWeHVJQ0IyWVhJZ2FXNVRZMjl3WlZSaFozTWdQU0JiSjJGd2NHeGxkQ2NzSUNkallYQjBhVzl1Snl3Z0oyaDBiV3duTENBbmRHRmliR1VuTENBbmRHUW5MQ0FuZEdnbkxDQW5iV0Z5Y1hWbFpTY3NJQ2R2WW1wbFkzUW5MQ0FuZEdWdGNHeGhkR1VuTEZ4dVhHNGdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJMmgwYld3dGFXNTBaV2R5WVhScGIyNHRjRzlwYm5SY2JpQWdMeThnVkU5RVR6b2dSR2x6ZEdsdVozVnBjMmdnWW5rZ2JtRnRaWE53WVdObElHaGxjbVVnTFMwZ1ptOXlJRHgwYVhSc1pUNHNJR2x1WTJ4MVpHbHVaeUJwZENCb1pYSmxYRzRnSUM4dklHVnljbk1nYjI0Z2RHaGxJSE5wWkdVZ2IyWWdabVYzWlhJZ2QyRnlibWx1WjNOY2JpQWdKMlp2Y21WcFoyNVBZbXBsWTNRbkxDQW5aR1Z6WXljc0lDZDBhWFJzWlNkZE8xeHVYRzRnSUM4dklHaDBkSEJ6T2k4dmFIUnRiQzV6Y0dWakxuZG9ZWFIzWnk1dmNtY3ZiWFZzZEdsd1lXZGxMM041Ym5SaGVDNW9kRzFzSTJoaGN5MWhiaTFsYkdWdFpXNTBMV2x1TFdKMWRIUnZiaTF6WTI5d1pWeHVJQ0IyWVhJZ1luVjBkRzl1VTJOdmNHVlVZV2R6SUQwZ2FXNVRZMjl3WlZSaFozTXVZMjl1WTJGMEtGc25ZblYwZEc5dUoxMHBPMXh1WEc0Z0lDOHZJR2gwZEhCek9pOHZhSFJ0YkM1emNHVmpMbmRvWVhSM1p5NXZjbWN2YlhWc2RHbHdZV2RsTDNONWJuUmhlQzVvZEcxc0kyZGxibVZ5WVhSbExXbHRjR3hwWldRdFpXNWtMWFJoWjNOY2JpQWdkbUZ5SUdsdGNHeHBaV1JGYm1SVVlXZHpJRDBnV3lka1pDY3NJQ2RrZENjc0lDZHNhU2NzSUNkdmNIUnBiMjRuTENBbmIzQjBaM0p2ZFhBbkxDQW5jQ2NzSUNkeWNDY3NJQ2R5ZENkZE8xeHVYRzRnSUhaaGNpQmxiWEIwZVVGdVkyVnpkRzl5U1c1bWJ5QTlJSHRjYmlBZ0lDQndZWEpsYm5SVVlXYzZJRzUxYkd3c1hHNWNiaUFnSUNCbWIzSnRWR0ZuT2lCdWRXeHNMRnh1SUNBZ0lHRlVZV2RKYmxOamIzQmxPaUJ1ZFd4c0xGeHVJQ0FnSUdKMWRIUnZibFJoWjBsdVUyTnZjR1U2SUc1MWJHd3NYRzRnSUNBZ2JtOWljbFJoWjBsdVUyTnZjR1U2SUc1MWJHd3NYRzRnSUNBZ2NGUmhaMGx1UW5WMGRHOXVVMk52Y0dVNklHNTFiR3dzWEc1Y2JpQWdJQ0JzYVhOMFNYUmxiVlJoWjBGMWRHOWpiRzl6YVc1bk9pQnVkV3hzTEZ4dUlDQWdJR1JzU1hSbGJWUmhaMEYxZEc5amJHOXphVzVuT2lCdWRXeHNYRzRnSUgwN1hHNWNiaUFnZG1GeUlIVndaR0YwWldSQmJtTmxjM1J2Y2tsdVptOGdQU0JtZFc1amRHbHZiaUFvYjJ4a1NXNW1ieXdnZEdGbkxDQnBibk4wWVc1alpTa2dlMXh1SUNBZ0lIWmhjaUJoYm1ObGMzUnZja2x1Wm04Z1BTQmhjM05wWjI0b2UzMHNJRzlzWkVsdVptOGdmSHdnWlcxd2RIbEJibU5sYzNSdmNrbHVabThwTzF4dUlDQWdJSFpoY2lCcGJtWnZJRDBnZXlCMFlXYzZJSFJoWnl3Z2FXNXpkR0Z1WTJVNklHbHVjM1JoYm1ObElIMDdYRzVjYmlBZ0lDQnBaaUFvYVc1VFkyOXdaVlJoWjNNdWFXNWtaWGhQWmloMFlXY3BJQ0U5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdZVzVqWlhOMGIzSkpibVp2TG1GVVlXZEpibE5qYjNCbElEMGdiblZzYkR0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NWlkWFIwYjI1VVlXZEpibE5qYjNCbElEMGdiblZzYkR0Y2JpQWdJQ0FnSUdGdVkyVnpkRzl5U1c1bWJ5NXViMkp5VkdGblNXNVRZMjl3WlNBOUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hpZFhSMGIyNVRZMjl3WlZSaFozTXVhVzVrWlhoUFppaDBZV2NwSUNFOVBTQXRNU2tnZTF4dUlDQWdJQ0FnWVc1alpYTjBiM0pKYm1adkxuQlVZV2RKYmtKMWRIUnZibE5qYjNCbElEMGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCVFpXVWdjblZzWlhNZ1ptOXlJQ2RzYVNjc0lDZGtaQ2NzSUNka2RDY2djM1JoY25RZ2RHRm5jeUJwYmx4dUlDQWdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJM0JoY25OcGJtY3RiV0ZwYmkxcGJtSnZaSGxjYmlBZ0lDQnBaaUFvYzNCbFkybGhiRlJoWjNNdWFXNWtaWGhQWmloMFlXY3BJQ0U5UFNBdE1TQW1KaUIwWVdjZ0lUMDlJQ2RoWkdSeVpYTnpKeUFtSmlCMFlXY2dJVDA5SUNka2FYWW5JQ1ltSUhSaFp5QWhQVDBnSjNBbktTQjdYRzRnSUNBZ0lDQmhibU5sYzNSdmNrbHVabTh1YkdsemRFbDBaVzFVWVdkQmRYUnZZMnh2YzJsdVp5QTlJRzUxYkd3N1hHNGdJQ0FnSUNCaGJtTmxjM1J2Y2tsdVptOHVaR3hKZEdWdFZHRm5RWFYwYjJOc2IzTnBibWNnUFNCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTV3WVhKbGJuUlVZV2NnUFNCcGJtWnZPMXh1WEc0Z0lDQWdhV1lnS0hSaFp5QTlQVDBnSjJadmNtMG5LU0I3WEc0Z0lDQWdJQ0JoYm1ObGMzUnZja2x1Wm04dVptOXliVlJoWnlBOUlHbHVabTg3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwWVdjZ1BUMDlJQ2RoSnlrZ2UxeHVJQ0FnSUNBZ1lXNWpaWE4wYjNKSmJtWnZMbUZVWVdkSmJsTmpiM0JsSUQwZ2FXNW1ienRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJoWnlBOVBUMGdKMkoxZEhSdmJpY3BJSHRjYmlBZ0lDQWdJR0Z1WTJWemRHOXlTVzVtYnk1aWRYUjBiMjVVWVdkSmJsTmpiM0JsSUQwZ2FXNW1ienRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJoWnlBOVBUMGdKMjV2WW5JbktTQjdYRzRnSUNBZ0lDQmhibU5sYzNSdmNrbHVabTh1Ym05aWNsUmhaMGx1VTJOdmNHVWdQU0JwYm1adk8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHRm5JRDA5UFNBbmNDY3BJSHRjYmlBZ0lDQWdJR0Z1WTJWemRHOXlTVzVtYnk1d1ZHRm5TVzVDZFhSMGIyNVRZMjl3WlNBOUlHbHVabTg3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwWVdjZ1BUMDlJQ2RzYVNjcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTVzYVhOMFNYUmxiVlJoWjBGMWRHOWpiRzl6YVc1bklEMGdhVzVtYnp0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSaFp5QTlQVDBnSjJSa0p5QjhmQ0IwWVdjZ1BUMDlJQ2RrZENjcElIdGNiaUFnSUNBZ0lHRnVZMlZ6ZEc5eVNXNW1ieTVrYkVsMFpXMVVZV2RCZFhSdlkyeHZjMmx1WnlBOUlHbHVabTg3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHRnVZMlZ6ZEc5eVNXNW1ienRjYmlBZ2ZUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCM2FHVjBhR1Z5WEc0Z0lDQXFMMXh1SUNCMllYSWdhWE5VWVdkV1lXeHBaRmRwZEdoUVlYSmxiblFnUFNCbWRXNWpkR2x2YmlBb2RHRm5MQ0J3WVhKbGJuUlVZV2NwSUh0Y2JpQWdJQ0F2THlCR2FYSnpkQ3dnYkdWMEozTWdZMmhsWTJzZ2FXWWdkMlVuY21VZ2FXNGdZVzRnZFc1MWMzVmhiQ0J3WVhKemFXNW5JRzF2WkdVdUxpNWNiaUFnSUNCemQybDBZMmdnS0hCaGNtVnVkRlJoWnlrZ2UxeHVJQ0FnSUNBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amNHRnljMmx1WnkxdFlXbHVMV2x1YzJWc1pXTjBYRzRnSUNBZ0lDQmpZWE5sSUNkelpXeGxZM1FuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGbklEMDlQU0FuYjNCMGFXOXVKeUI4ZkNCMFlXY2dQVDA5SUNkdmNIUm5jbTkxY0NjZ2ZId2dkR0ZuSUQwOVBTQW5JM1JsZUhRbk8xeHVJQ0FnSUNBZ1kyRnpaU0FuYjNCMFozSnZkWEFuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGbklEMDlQU0FuYjNCMGFXOXVKeUI4ZkNCMFlXY2dQVDA5SUNjamRHVjRkQ2M3WEc0Z0lDQWdJQ0F2THlCVGRISnBZM1JzZVNCemNHVmhhMmx1Wnl3Z2MyVmxhVzVuSUdGdUlEeHZjSFJwYjI0K0lHUnZaWE51SjNRZ2JXVmhiaUIzWlNkeVpTQnBiaUJoSUR4elpXeGxZM1ErWEc0Z0lDQWdJQ0F2THlCaWRYUmNiaUFnSUNBZ0lHTmhjMlVnSjI5d2RHbHZiaWM2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjZ1BUMDlJQ2NqZEdWNGRDYzdYRzVjYmlBZ0lDQWdJQzh2SUdoMGRIQnpPaTh2YUhSdGJDNXpjR1ZqTG5kb1lYUjNaeTV2Y21jdmJYVnNkR2x3WVdkbEwzTjViblJoZUM1b2RHMXNJM0JoY25OcGJtY3RiV0ZwYmkxcGJuUmtYRzRnSUNBZ0lDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5emVXNTBZWGd1YUhSdGJDTndZWEp6YVc1bkxXMWhhVzR0YVc1allYQjBhVzl1WEc0Z0lDQWdJQ0F2THlCT2J5QnpjR1ZqYVdGc0lHSmxhR0YyYVc5eUlITnBibU5sSUhSb1pYTmxJSEoxYkdWeklHWmhiR3dnWW1GamF5QjBieUJjSW1sdUlHSnZaSGxjSWlCdGIyUmxJR1p2Y2x4dUlDQWdJQ0FnTHk4Z1lXeHNJR1Y0WTJWd2RDQnpjR1ZqYVdGc0lIUmhZbXhsSUc1dlpHVnpJSGRvYVdOb0lHTmhkWE5sSUdKaFpDQndZWEp6YVc1bklHSmxhR0YyYVc5eUlHRnVlWGRoZVM1Y2JseHVJQ0FnSUNBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amNHRnljMmx1WnkxdFlXbHVMV2x1ZEhKY2JpQWdJQ0FnSUdOaGMyVWdKM1J5SnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaFp5QTlQVDBnSjNSb0p5QjhmQ0IwWVdjZ1BUMDlJQ2QwWkNjZ2ZId2dkR0ZuSUQwOVBTQW5jM1I1YkdVbklIeDhJSFJoWnlBOVBUMGdKM05qY21sd2RDY2dmSHdnZEdGbklEMDlQU0FuZEdWdGNHeGhkR1VuTzF4dVhHNGdJQ0FnSUNBdkx5Qm9kSFJ3Y3pvdkwyaDBiV3d1YzNCbFl5NTNhR0YwZDJjdWIzSm5MMjExYkhScGNHRm5aUzl6ZVc1MFlYZ3VhSFJ0YkNOd1lYSnphVzVuTFcxaGFXNHRhVzUwWW05a2VWeHVJQ0FnSUNBZ1kyRnpaU0FuZEdKdlpIa25PbHh1SUNBZ0lDQWdZMkZ6WlNBbmRHaGxZV1FuT2x4dUlDQWdJQ0FnWTJGelpTQW5kR1p2YjNRbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHRm5JRDA5UFNBbmRISW5JSHg4SUhSaFp5QTlQVDBnSjNOMGVXeGxKeUI4ZkNCMFlXY2dQVDA5SUNkelkzSnBjSFFuSUh4OElIUmhaeUE5UFQwZ0ozUmxiWEJzWVhSbEp6dGNibHh1SUNBZ0lDQWdMeThnYUhSMGNITTZMeTlvZEcxc0xuTndaV011ZDJoaGRIZG5MbTl5Wnk5dGRXeDBhWEJoWjJVdmMzbHVkR0Y0TG1oMGJXd2pjR0Z5YzJsdVp5MXRZV2x1TFdsdVkyOXNaM0p2ZFhCY2JpQWdJQ0FnSUdOaGMyVWdKMk52YkdkeWIzVndKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJoWnlBOVBUMGdKMk52YkNjZ2ZId2dkR0ZuSUQwOVBTQW5kR1Z0Y0d4aGRHVW5PMXh1WEc0Z0lDQWdJQ0F2THlCb2RIUndjem92TDJoMGJXd3VjM0JsWXk1M2FHRjBkMmN1YjNKbkwyMTFiSFJwY0dGblpTOXplVzUwWVhndWFIUnRiQ053WVhKemFXNW5MVzFoYVc0dGFXNTBZV0pzWlZ4dUlDQWdJQ0FnWTJGelpTQW5kR0ZpYkdVbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHRm5JRDA5UFNBblkyRndkR2x2YmljZ2ZId2dkR0ZuSUQwOVBTQW5ZMjlzWjNKdmRYQW5JSHg4SUhSaFp5QTlQVDBnSjNSaWIyUjVKeUI4ZkNCMFlXY2dQVDA5SUNkMFptOXZkQ2NnZkh3Z2RHRm5JRDA5UFNBbmRHaGxZV1FuSUh4OElIUmhaeUE5UFQwZ0ozTjBlV3hsSnlCOGZDQjBZV2NnUFQwOUlDZHpZM0pwY0hRbklIeDhJSFJoWnlBOVBUMGdKM1JsYlhCc1lYUmxKenRjYmx4dUlDQWdJQ0FnTHk4Z2FIUjBjSE02THk5b2RHMXNMbk53WldNdWQyaGhkSGRuTG05eVp5OXRkV3gwYVhCaFoyVXZjM2x1ZEdGNExtaDBiV3dqY0dGeWMybHVaeTF0WVdsdUxXbHVhR1ZoWkZ4dUlDQWdJQ0FnWTJGelpTQW5hR1ZoWkNjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMFlXY2dQVDA5SUNkaVlYTmxKeUI4ZkNCMFlXY2dQVDA5SUNkaVlYTmxabTl1ZENjZ2ZId2dkR0ZuSUQwOVBTQW5ZbWR6YjNWdVpDY2dmSHdnZEdGbklEMDlQU0FuYkdsdWF5Y2dmSHdnZEdGbklEMDlQU0FuYldWMFlTY2dmSHdnZEdGbklEMDlQU0FuZEdsMGJHVW5JSHg4SUhSaFp5QTlQVDBnSjI1dmMyTnlhWEIwSnlCOGZDQjBZV2NnUFQwOUlDZHViMlp5WVcxbGN5Y2dmSHdnZEdGbklEMDlQU0FuYzNSNWJHVW5JSHg4SUhSaFp5QTlQVDBnSjNOamNtbHdkQ2NnZkh3Z2RHRm5JRDA5UFNBbmRHVnRjR3hoZEdVbk8xeHVYRzRnSUNBZ0lDQXZMeUJvZEhSd2N6b3ZMMmgwYld3dWMzQmxZeTUzYUdGMGQyY3ViM0puTDIxMWJIUnBjR0ZuWlM5elpXMWhiblJwWTNNdWFIUnRiQ04wYUdVdGFIUnRiQzFsYkdWdFpXNTBYRzRnSUNBZ0lDQmpZWE5sSUNkb2RHMXNKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJoWnlBOVBUMGdKMmhsWVdRbklIeDhJSFJoWnlBOVBUMGdKMkp2Wkhrbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklGQnliMkpoWW14NUlHbHVJSFJvWlNCY0ltbHVJR0p2WkhsY0lpQndZWEp6YVc1bklHMXZaR1VzSUhOdklIZGxJRzkxZEd4aGR5QnZibXg1SUhSaFp5QmpiMjFpYjNOY2JpQWdJQ0F2THlCM2FHVnlaU0IwYUdVZ2NHRnljMmx1WnlCeWRXeGxjeUJqWVhWelpTQnBiWEJzYVdOcGRDQnZjR1Z1Y3lCdmNpQmpiRzl6WlhNZ2RHOGdZbVVnWVdSa1pXUXVYRzRnSUNBZ0x5OGdhSFIwY0hNNkx5OW9kRzFzTG5Od1pXTXVkMmhoZEhkbkxtOXlaeTl0ZFd4MGFYQmhaMlV2YzNsdWRHRjRMbWgwYld3amNHRnljMmx1WnkxdFlXbHVMV2x1WW05a2VWeHVJQ0FnSUhOM2FYUmphQ0FvZEdGbktTQjdYRzRnSUNBZ0lDQmpZWE5sSUNkb01TYzZYRzRnSUNBZ0lDQmpZWE5sSUNkb01pYzZYRzRnSUNBZ0lDQmpZWE5sSUNkb015YzZYRzRnSUNBZ0lDQmpZWE5sSUNkb05DYzZYRzRnSUNBZ0lDQmpZWE5sSUNkb05TYzZYRzRnSUNBZ0lDQmpZWE5sSUNkb05pYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQndZWEpsYm5SVVlXY2dJVDA5SUNkb01TY2dKaVlnY0dGeVpXNTBWR0ZuSUNFOVBTQW5hREluSUNZbUlIQmhjbVZ1ZEZSaFp5QWhQVDBnSjJnekp5QW1KaUJ3WVhKbGJuUlVZV2NnSVQwOUlDZG9OQ2NnSmlZZ2NHRnlaVzUwVkdGbklDRTlQU0FuYURVbklDWW1JSEJoY21WdWRGUmhaeUFoUFQwZ0oyZzJKenRjYmx4dUlDQWdJQ0FnWTJGelpTQW5jbkFuT2x4dUlDQWdJQ0FnWTJGelpTQW5jblFuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYVcxd2JHbGxaRVZ1WkZSaFozTXVhVzVrWlhoUFppaHdZWEpsYm5SVVlXY3BJRDA5UFNBdE1UdGNibHh1SUNBZ0lDQWdZMkZ6WlNBblkyRndkR2x2YmljNlhHNGdJQ0FnSUNCallYTmxJQ2RqYjJ3bk9seHVJQ0FnSUNBZ1kyRnpaU0FuWTI5c1ozSnZkWEFuT2x4dUlDQWdJQ0FnWTJGelpTQW5abkpoYldVbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYUdWaFpDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMFltOWtlU2M2WEc0Z0lDQWdJQ0JqWVhObElDZDBaQ2M2WEc0Z0lDQWdJQ0JqWVhObElDZDBabTl2ZENjNlhHNGdJQ0FnSUNCallYTmxJQ2QwYUNjNlhHNGdJQ0FnSUNCallYTmxJQ2QwYUdWaFpDYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMGNpYzZYRzRnSUNBZ0lDQWdJQzh2SUZSb1pYTmxJSFJoWjNNZ1lYSmxJRzl1YkhrZ2RtRnNhV1FnZDJsMGFDQmhJR1psZHlCd1lYSmxiblJ6SUhSb1lYUWdhR0YyWlNCemNHVmphV0ZzSUdOb2FXeGtYRzRnSUNBZ0lDQWdJQzh2SUhCaGNuTnBibWNnY25Wc1pYTWdMUzBnYVdZZ2QyVW5jbVVnWkc5M2JpQm9aWEpsTENCMGFHVnVJRzV2Ym1VZ2IyWWdkR2h2YzJVZ2JXRjBZMmhsWkNCaGJtUmNiaUFnSUNBZ0lDQWdMeThnYzI4Z2QyVWdZV3hzYjNjZ2FYUWdiMjVzZVNCcFppQjNaU0JrYjI0bmRDQnJibTkzSUhkb1lYUWdkR2hsSUhCaGNtVnVkQ0JwY3l3Z1lYTWdZV3hzSUc5MGFHVnlYRzRnSUNBZ0lDQWdJQzh2SUdOaGMyVnpJR0Z5WlNCcGJuWmhiR2xrTGx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY0dGeVpXNTBWR0ZuSUQwOUlHNTFiR3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2QyaGxkR2hsY2x4dUlDQWdLaTljYmlBZ2RtRnlJR1pwYm1SSmJuWmhiR2xrUVc1alpYTjBiM0pHYjNKVVlXY2dQU0JtZFc1amRHbHZiaUFvZEdGbkxDQmhibU5sYzNSdmNrbHVabThwSUh0Y2JpQWdJQ0J6ZDJsMFkyZ2dLSFJoWnlrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0FuWVdSa2NtVnpjeWM2WEc0Z0lDQWdJQ0JqWVhObElDZGhjblJwWTJ4bEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJGemFXUmxKenBjYmlBZ0lDQWdJR05oYzJVZ0oySnNiMk5yY1hWdmRHVW5PbHh1SUNBZ0lDQWdZMkZ6WlNBblkyVnVkR1Z5SnpwY2JpQWdJQ0FnSUdOaGMyVWdKMlJsZEdGcGJITW5PbHh1SUNBZ0lDQWdZMkZ6WlNBblpHbGhiRzluSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMlJwY2ljNlhHNGdJQ0FnSUNCallYTmxJQ2RrYVhZbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWkd3bk9seHVJQ0FnSUNBZ1kyRnpaU0FuWm1sbGJHUnpaWFFuT2x4dUlDQWdJQ0FnWTJGelpTQW5abWxuWTJGd2RHbHZiaWM2WEc0Z0lDQWdJQ0JqWVhObElDZG1hV2QxY21Vbk9seHVJQ0FnSUNBZ1kyRnpaU0FuWm05dmRHVnlKenBjYmlBZ0lDQWdJR05oYzJVZ0oyaGxZV1JsY2ljNlhHNGdJQ0FnSUNCallYTmxJQ2RvWjNKdmRYQW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmJXRnBiaWM2WEc0Z0lDQWdJQ0JqWVhObElDZHRaVzUxSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMjVoZGljNlhHNGdJQ0FnSUNCallYTmxJQ2R2YkNjNlhHNGdJQ0FnSUNCallYTmxJQ2R3SnpwY2JpQWdJQ0FnSUdOaGMyVWdKM05sWTNScGIyNG5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmMzVnRiV0Z5ZVNjNlhHNGdJQ0FnSUNCallYTmxJQ2QxYkNjNlhHNWNiaUFnSUNBZ0lHTmhjMlVnSjNCeVpTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkc2FYTjBhVzVuSnpwY2JseHVJQ0FnSUNBZ1kyRnpaU0FuZEdGaWJHVW5PbHh1WEc0Z0lDQWdJQ0JqWVhObElDZG9jaWM2WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKM2h0Y0NjNlhHNWNiaUFnSUNBZ0lHTmhjMlVnSjJneEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJneUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnekp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnMEp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnMUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjJnMkp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnVZMlZ6ZEc5eVNXNW1ieTV3VkdGblNXNUNkWFIwYjI1VFkyOXdaVHRjYmx4dUlDQWdJQ0FnWTJGelpTQW5abTl5YlNjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJtTmxjM1J2Y2tsdVptOHVabTl5YlZSaFp5QjhmQ0JoYm1ObGMzUnZja2x1Wm04dWNGUmhaMGx1UW5WMGRHOXVVMk52Y0dVN1hHNWNiaUFnSUNBZ0lHTmhjMlVnSjJ4cEp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnVZMlZ6ZEc5eVNXNW1ieTVzYVhOMFNYUmxiVlJoWjBGMWRHOWpiRzl6YVc1bk8xeHVYRzRnSUNBZ0lDQmpZWE5sSUNka1pDYzZYRzRnSUNBZ0lDQmpZWE5sSUNka2RDYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhibU5sYzNSdmNrbHVabTh1Wkd4SmRHVnRWR0ZuUVhWMGIyTnNiM05wYm1jN1hHNWNiaUFnSUNBZ0lHTmhjMlVnSjJKMWRIUnZiaWM2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYm1ObGMzUnZja2x1Wm04dVluVjBkRzl1VkdGblNXNVRZMjl3WlR0Y2JseHVJQ0FnSUNBZ1kyRnpaU0FuWVNjNlhHNGdJQ0FnSUNBZ0lDOHZJRk53WldNZ2MyRjVjeUJ6YjIxbGRHaHBibWNnWVdKdmRYUWdjM1J2Y21sdVp5QmhJR3hwYzNRZ2IyWWdiV0Z5YTJWeWN5d2dZblYwSUdsMElITnZkVzVrYzF4dUlDQWdJQ0FnSUNBdkx5QmxjWFZwZG1Gc1pXNTBJSFJ2SUhSb2FYTWdZMmhsWTJzdVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJtTmxjM1J2Y2tsdVptOHVZVlJoWjBsdVUyTnZjR1U3WEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMjV2WW5Jbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXNWpaWE4wYjNKSmJtWnZMbTV2WW5KVVlXZEpibE5qYjNCbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5TzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJIYVhabGJpQmhJRkpsWVdOMFEyOXRjRzl6YVhSbFEyOXRjRzl1Wlc1MElHbHVjM1JoYm1ObExDQnlaWFIxY200Z1lTQnNhWE4wSUc5bUlHbDBjeUJ5WldOMWNuTnBkbVZjYmlBZ0lDb2diM2R1WlhKekxDQnpkR0Z5ZEdsdVp5QmhkQ0IwYUdVZ2NtOXZkQ0JoYm1RZ1pXNWthVzVuSUhkcGRHZ2dkR2hsSUdsdWMzUmhibU5sSUdsMGMyVnNaaTVjYmlBZ0lDb3ZYRzRnSUhaaGNpQm1hVzVrVDNkdVpYSlRkR0ZqYXlBOUlHWjFibU4wYVc5dUlDaHBibk4wWVc1alpTa2dlMXh1SUNBZ0lHbG1JQ2doYVc1emRHRnVZMlVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJiWFR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2MzUmhZMnNnUFNCYlhUdGNiaUFnSUNBdkttVnpiR2x1ZEMxa2FYTmhZbXhsSUhOd1lXTmxMV0ZtZEdWeUxXdGxlWGR2Y21SeklDb3ZYRzRnSUNBZ1pHOGdlMXh1SUNBZ0lDQWdMeXBsYzJ4cGJuUXRaVzVoWW14bElITndZV05sTFdGbWRHVnlMV3RsZVhkdmNtUnpJQ292WEc0Z0lDQWdJQ0J6ZEdGamF5NXdkWE5vS0dsdWMzUmhibU5sS1R0Y2JpQWdJQ0I5SUhkb2FXeGxJQ2hwYm5OMFlXNWpaU0E5SUdsdWMzUmhibU5sTGw5amRYSnlaVzUwUld4bGJXVnVkQzVmYjNkdVpYSXBPMXh1SUNBZ0lITjBZV05yTG5KbGRtVnljMlVvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdjM1JoWTJzN1hHNGdJSDA3WEc1Y2JpQWdkbUZ5SUdScFpGZGhjbTRnUFNCN2ZUdGNibHh1SUNCMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jZ1BTQm1kVzVqZEdsdmJpQW9ZMmhwYkdSVVlXY3NJR05vYVd4a1NXNXpkR0Z1WTJVc0lHRnVZMlZ6ZEc5eVNXNW1ieWtnZTF4dUlDQWdJR0Z1WTJWemRHOXlTVzVtYnlBOUlHRnVZMlZ6ZEc5eVNXNW1ieUI4ZkNCbGJYQjBlVUZ1WTJWemRHOXlTVzVtYnp0Y2JpQWdJQ0IyWVhJZ2NHRnlaVzUwU1c1bWJ5QTlJR0Z1WTJWemRHOXlTVzVtYnk1d1lYSmxiblJVWVdjN1hHNGdJQ0FnZG1GeUlIQmhjbVZ1ZEZSaFp5QTlJSEJoY21WdWRFbHVabThnSmlZZ2NHRnlaVzUwU1c1bWJ5NTBZV2M3WEc1Y2JpQWdJQ0IyWVhJZ2FXNTJZV3hwWkZCaGNtVnVkQ0E5SUdselZHRm5WbUZzYVdSWGFYUm9VR0Z5Wlc1MEtHTm9hV3hrVkdGbkxDQndZWEpsYm5SVVlXY3BJRDhnYm5Wc2JDQTZJSEJoY21WdWRFbHVabTg3WEc0Z0lDQWdkbUZ5SUdsdWRtRnNhV1JCYm1ObGMzUnZjaUE5SUdsdWRtRnNhV1JRWVhKbGJuUWdQeUJ1ZFd4c0lEb2dabWx1WkVsdWRtRnNhV1JCYm1ObGMzUnZja1p2Y2xSaFp5aGphR2xzWkZSaFp5d2dZVzVqWlhOMGIzSkpibVp2S1R0Y2JpQWdJQ0IyWVhJZ2NISnZZbXhsYldGMGFXTWdQU0JwYm5aaGJHbGtVR0Z5Wlc1MElIeDhJR2x1ZG1Gc2FXUkJibU5sYzNSdmNqdGNibHh1SUNBZ0lHbG1JQ2h3Y205aWJHVnRZWFJwWXlrZ2UxeHVJQ0FnSUNBZ2RtRnlJR0Z1WTJWemRHOXlWR0ZuSUQwZ2NISnZZbXhsYldGMGFXTXVkR0ZuTzF4dUlDQWdJQ0FnZG1GeUlHRnVZMlZ6ZEc5eVNXNXpkR0Z1WTJVZ1BTQndjbTlpYkdWdFlYUnBZeTVwYm5OMFlXNWpaVHRjYmx4dUlDQWdJQ0FnZG1GeUlHTm9hV3hrVDNkdVpYSWdQU0JqYUdsc1pFbHVjM1JoYm1ObElDWW1JR05vYVd4a1NXNXpkR0Z1WTJVdVgyTjFjbkpsYm5SRmJHVnRaVzUwTGw5dmQyNWxjanRjYmlBZ0lDQWdJSFpoY2lCaGJtTmxjM1J2Y2s5M2JtVnlJRDBnWVc1alpYTjBiM0pKYm5OMFlXNWpaU0FtSmlCaGJtTmxjM1J2Y2tsdWMzUmhibU5sTGw5amRYSnlaVzUwUld4bGJXVnVkQzVmYjNkdVpYSTdYRzVjYmlBZ0lDQWdJSFpoY2lCamFHbHNaRTkzYm1WeWN5QTlJR1pwYm1SUGQyNWxjbE4wWVdOcktHTm9hV3hrVDNkdVpYSXBPMXh1SUNBZ0lDQWdkbUZ5SUdGdVkyVnpkRzl5VDNkdVpYSnpJRDBnWm1sdVpFOTNibVZ5VTNSaFkyc29ZVzVqWlhOMGIzSlBkMjVsY2lrN1hHNWNiaUFnSUNBZ0lIWmhjaUJ0YVc1VGRHRmphMHhsYmlBOUlFMWhkR2d1YldsdUtHTm9hV3hrVDNkdVpYSnpMbXhsYm1kMGFDd2dZVzVqWlhOMGIzSlBkMjVsY25NdWJHVnVaM1JvS1R0Y2JpQWdJQ0FnSUhaaGNpQnBPMXh1WEc0Z0lDQWdJQ0IyWVhJZ1pHVmxjR1Z6ZEVOdmJXMXZiaUE5SUMweE8xeHVJQ0FnSUNBZ1ptOXlJQ2hwSUQwZ01Ec2dhU0E4SUcxcGJsTjBZV05yVEdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR05vYVd4a1QzZHVaWEp6VzJsZElEMDlQU0JoYm1ObGMzUnZjazkzYm1WeWMxdHBYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHUmxaWEJsYzNSRGIyMXRiMjRnUFNCcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFpoY2lCVlRrdE9UMWRPSUQwZ0p5aDFibXR1YjNkdUtTYzdYRzRnSUNBZ0lDQjJZWElnWTJocGJHUlBkMjVsY2s1aGJXVnpJRDBnWTJocGJHUlBkMjVsY25NdWMyeHBZMlVvWkdWbGNHVnpkRU52YlcxdmJpQXJJREVwTG0xaGNDaG1kVzVqZEdsdmJpQW9hVzV6ZENrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNXpkQzVuWlhST1lXMWxLQ2tnZkh3Z1ZVNUxUazlYVGp0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2RtRnlJR0Z1WTJWemRHOXlUM2R1WlhKT1lXMWxjeUE5SUdGdVkyVnpkRzl5VDNkdVpYSnpMbk5zYVdObEtHUmxaWEJsYzNSRGIyMXRiMjRnS3lBeEtTNXRZWEFvWm5WdVkzUnBiMjRnS0dsdWMzUXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1YzNRdVoyVjBUbUZ0WlNncElIeDhJRlZPUzA1UFYwNDdYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSFpoY2lCdmQyNWxja2x1Wm04Z1BTQmJYUzVqYjI1allYUW9YRzRnSUNBZ0lDQXZMeUJKWmlCMGFHVWdjR0Z5Wlc1MElHRnVaQ0JqYUdsc1pDQnBibk4wWVc1alpYTWdhR0YyWlNCaElHTnZiVzF2YmlCdmQyNWxjaUJoYm1ObGMzUnZjaXdnYzNSaGNuUmNiaUFnSUNBZ0lDOHZJSGRwZEdnZ2RHaGhkQ0F0TFNCdmRHaGxjbmRwYzJVZ2QyVWdhblZ6ZENCemRHRnlkQ0IzYVhSb0lIUm9aU0J3WVhKbGJuUW5jeUJ2ZDI1bGNuTXVYRzRnSUNBZ0lDQmtaV1Z3WlhOMFEyOXRiVzl1SUNFOVBTQXRNU0EvSUdOb2FXeGtUM2R1WlhKelcyUmxaWEJsYzNSRGIyMXRiMjVkTG1kbGRFNWhiV1VvS1NCOGZDQlZUa3RPVDFkT0lEb2dXMTBzSUdGdVkyVnpkRzl5VDNkdVpYSk9ZVzFsY3l3Z1lXNWpaWE4wYjNKVVlXY3NYRzRnSUNBZ0lDQXZMeUJKWmlCM1pTZHlaU0IzWVhKdWFXNW5JR0ZpYjNWMElHRnVJR2x1ZG1Gc2FXUWdLRzV2Ymkxd1lYSmxiblFwSUdGdVkyVnpkSEo1TENCaFpHUWdKeTR1TGlkY2JpQWdJQ0FnSUdsdWRtRnNhV1JCYm1ObGMzUnZjaUEvSUZzbkxpNHVKMTBnT2lCYlhTd2dZMmhwYkdSUGQyNWxjazVoYldWekxDQmphR2xzWkZSaFp5a3VhbTlwYmlnbklENGdKeWs3WEc1Y2JpQWdJQ0FnSUhaaGNpQjNZWEp1UzJWNUlEMGdJU0ZwYm5aaGJHbGtVR0Z5Wlc1MElDc2dKM3duSUNzZ1kyaHBiR1JVWVdjZ0t5QW5mQ2NnS3lCaGJtTmxjM1J2Y2xSaFp5QXJJQ2Q4SnlBcklHOTNibVZ5U1c1bWJ6dGNiaUFnSUNBZ0lHbG1JQ2hrYVdSWFlYSnVXM2RoY201TFpYbGRLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR1JwWkZkaGNtNWJkMkZ5Ymt0bGVWMGdQU0IwY25WbE8xeHVYRzRnSUNBZ0lDQnBaaUFvYVc1MllXeHBaRkJoY21WdWRDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2FXNW1ieUE5SUNjbk8xeHVJQ0FnSUNBZ0lDQnBaaUFvWVc1alpYTjBiM0pVWVdjZ1BUMDlJQ2QwWVdKc1pTY2dKaVlnWTJocGJHUlVZV2NnUFQwOUlDZDBjaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBibVp2SUNzOUlDY2dRV1JrSUdFZ1BIUmliMlI1UGlCMGJ5QjViM1Z5SUdOdlpHVWdkRzhnYldGMFkyZ2dkR2hsSUVSUFRTQjBjbVZsSUdkbGJtVnlZWFJsWkNCaWVTQW5JQ3NnSjNSb1pTQmljbTkzYzJWeUxpYzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1ptRnNjMlVzSUNkMllXeHBaR0YwWlVSUFRVNWxjM1JwYm1jb0xpNHVLVG9nUENWelBpQmpZVzV1YjNRZ1lYQndaV0Z5SUdGeklHRWdZMmhwYkdRZ2IyWWdQQ1Z6UGk0Z0p5QXJJQ2RUWldVZ0pYTXVKWE1uTENCamFHbHNaRlJoWnl3Z1lXNWpaWE4wYjNKVVlXY3NJRzkzYm1WeVNXNW1ieXdnYVc1bWJ5a2dPaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2QyRnlibWx1WnlobVlXeHpaU3dnSjNaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnlndUxpNHBPaUE4SlhNK0lHTmhibTV2ZENCaGNIQmxZWElnWVhNZ1lTQmtaWE5qWlc1a1lXNTBJRzltSUNjZ0t5QW5QQ1Z6UGk0Z1UyVmxJQ1Z6TGljc0lHTm9hV3hrVkdGbkxDQmhibU5sYzNSdmNsUmhaeXdnYjNkdVpYSkpibVp2S1NBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDA3WEc1Y2JpQWdkbUZzYVdSaGRHVkVUMDFPWlhOMGFXNW5MbUZ1WTJWemRHOXlTVzVtYjBOdmJuUmxlSFJMWlhrZ1BTQW5YMTkyWVd4cFpHRjBaVVJQVFU1bGMzUnBibWRmWVc1alpYTjBiM0pKYm1adkpDY2dLeUJOWVhSb0xuSmhibVJ2YlNncExuUnZVM1J5YVc1bktETTJLUzV6YkdsalpTZ3lLVHRjYmx4dUlDQjJZV3hwWkdGMFpVUlBUVTVsYzNScGJtY3VkWEJrWVhSbFpFRnVZMlZ6ZEc5eVNXNW1ieUE5SUhWd1pHRjBaV1JCYm1ObGMzUnZja2x1Wm04N1hHNWNiaUFnTHk4Z1JtOXlJSFJsYzNScGJtZGNiaUFnZG1Gc2FXUmhkR1ZFVDAxT1pYTjBhVzVuTG1selZHRm5WbUZzYVdSSmJrTnZiblJsZUhRZ1BTQm1kVzVqZEdsdmJpQW9kR0ZuTENCaGJtTmxjM1J2Y2tsdVptOHBJSHRjYmlBZ0lDQmhibU5sYzNSdmNrbHVabThnUFNCaGJtTmxjM1J2Y2tsdVptOGdmSHdnWlcxd2RIbEJibU5sYzNSdmNrbHVabTg3WEc0Z0lDQWdkbUZ5SUhCaGNtVnVkRWx1Wm04Z1BTQmhibU5sYzNSdmNrbHVabTh1Y0dGeVpXNTBWR0ZuTzF4dUlDQWdJSFpoY2lCd1lYSmxiblJVWVdjZ1BTQndZWEpsYm5SSmJtWnZJQ1ltSUhCaGNtVnVkRWx1Wm04dWRHRm5PMXh1SUNBZ0lISmxkSFZ5YmlCcGMxUmhaMVpoYkdsa1YybDBhRkJoY21WdWRDaDBZV2NzSUhCaGNtVnVkRlJoWnlrZ0ppWWdJV1pwYm1SSmJuWmhiR2xrUVc1alpYTjBiM0pHYjNKVVlXY29kR0ZuTENCaGJtTmxjM1J2Y2tsdVptOHBPMXh1SUNCOU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUhaaGJHbGtZWFJsUkU5TlRtVnpkR2x1WnpzaVhYMD0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFRhYmxlSGVhZGVyIGZyb20gJy4vVGFibGVIZWFkZXInO1xuaW1wb3J0IFRhYmxlQm9keSBmcm9tICcuL1RhYmxlQm9keSc7XG5pbXBvcnQgUGFnaW5hdGlvbkxpc3QgZnJvbSAnLi9wYWdpbmF0aW9uL1BhZ2luYXRpb25MaXN0JztcbmltcG9ydCBUb29sQmFyIGZyb20gJy4vdG9vbGJhci9Ub29sQmFyJztcbmltcG9ydCBUYWJsZUZpbHRlciBmcm9tICcuL1RhYmxlRmlsdGVyJztcbmltcG9ydCB7VGFibGVEYXRhU3RvcmV9IGZyb20gJy4vc3RvcmUvVGFibGVEYXRhU3RvcmUnO1xuaW1wb3J0IGV4cG9ydENTViBmcm9tICcuL2Nzdl9leHBvcnRfdXRpbCc7XG5cbmNsYXNzIEJvb3RzdHJhcFRhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuX2F0dGFjaENlbGxFZGl0RnVuYygpO1xuICAgIGxldCB7a2V5RmllbGR9ID0gcHJvcHM7XG4gICAgbGV0IGN1c3RvbVNvcnRGdW5jTWFwID0ge307XG5cbiAgICBpZiAoISh0eXBlb2Yga2V5RmllbGQgPT09ICdzdHJpbmcnICYmIGtleUZpZWxkLmxlbmd0aCkpIHtcbiAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2godGhpcy5wcm9wcy5jaGlsZHJlbiwgY29sdW1uPT4ge1xuICAgICAgICBpZiAoY29sdW1uLnByb3BzLmlzS2V5KSB7XG4gICAgICAgICAgaWYgKGtleUZpZWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IFwiRXJyb3IuIE11bHRpcGxlIGtleSBjb2x1bW4gYmUgZGV0ZWN0ZWQgaW4gVGFibGVIZWFkZXJDb2x1bW4uXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGtleUZpZWxkID0gY29sdW1uLnByb3BzLmRhdGFGaWVsZDtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcyk7XG4gICAgfVxuXG4gICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaCh0aGlzLnByb3BzLmNoaWxkcmVuLCBjb2x1bW49PiB7XG4gICAgICBpZiAoY29sdW1uLnByb3BzLnNvcnRGdW5jKSB7XG4gICAgICAgIGN1c3RvbVNvcnRGdW5jTWFwW2NvbHVtbi5wcm9wcy5kYXRhRmllbGRdID0gY29sdW1uLnByb3BzLnNvcnRGdW5jO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuXG4gICAgaWYgKGtleUZpZWxkID09IG51bGwpXG4gICAgICB0aHJvdyBcIkVycm9yLiBObyBhbnkga2V5IGNvbHVtbiBkZWZpbmVkIGluIFRhYmxlSGVhZGVyQ29sdW1uLiBVc2UgJ2lzS2V5PXt0cnVlfScgdG8gc3BlY2lmeSBhbiB1bmlxdWUgY29sdW1uIGFmdGVyIHZlcnNpb24gMC41LjQuXCI7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy5kYXRhKSkge1xuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBUYWJsZURhdGFTdG9yZSh0aGlzLnByb3BzLmRhdGEuZ2V0RGF0YSgpKTtcbiAgICAgIHRoaXMucHJvcHMuZGF0YS5jbGVhcigpO1xuICAgICAgdGhpcy5wcm9wcy5kYXRhLm9uKCdjaGFuZ2UnLCAoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLnNldERhdGEoZGF0YSk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0VGFibGVEYXRhKClcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFRhYmxlRGF0YVN0b3JlKHRoaXMucHJvcHMuZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZS5zZXRQcm9wcyh0aGlzLnByb3BzLnBhZ2luYXRpb24sIGtleUZpZWxkLCBjdXN0b21Tb3J0RnVuY01hcCwgdGhpcy5pc1JlbW90ZURhdGFTb3VyY2UoKSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RSb3cgJiYgdGhpcy5wcm9wcy5zZWxlY3RSb3cuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc3RvcmUuc2V0U2VsZWN0ZWRSb3dLZXkodGhpcy5wcm9wcy5zZWxlY3RSb3cuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBkYXRhOiB0aGlzLmdldFRhYmxlRGF0YSgpLFxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0b3JlLmdldFNlbGVjdGVkUm93S2V5cygpXG4gICAgfTtcbiAgfVxuXG4gIGdldFRhYmxlRGF0YSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgbGV0IHBhZ2UsIHNpemVQZXJQYWdlO1xuICAgICAgaWYgKHRoaXMuc3RvcmUuaXNDaGFuZ2VkUGFnZSgpKSB7XG4gICAgICAgIHNpemVQZXJQYWdlID0gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0U2l6ZVBlclBhZ2UoKTtcbiAgICAgICAgcGFnZSA9IHRoaXMucmVmcy5wYWdpbmF0aW9uLmdldEN1cnJlbnRQYWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplUGVyUGFnZSA9IHRoaXMucHJvcHMub3B0aW9ucy5zaXplUGVyUGFnZSB8fCBDb25zdC5TSVpFX1BFUl9QQUdFX0xJU1RbMF07XG4gICAgICAgIHBhZ2UgPSB0aGlzLnByb3BzLm9wdGlvbnMucGFnZSB8fCAxO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gdGhpcy5zdG9yZS5wYWdlKHBhZ2UsIHNpemVQZXJQYWdlKS5nZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5zdG9yZS5nZXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dFByb3BzLmRhdGEpKSB7XG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEobmV4dFByb3BzLmRhdGEpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRhdGE6IHRoaXMuZ2V0VGFibGVEYXRhKClcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAobmV4dFByb3BzLnNlbGVjdFJvdyAmJiBuZXh0UHJvcHMuc2VsZWN0Um93LnNlbGVjdGVkKSB7XG4gICAgICAvL3NldCBkZWZhdWx0IHNlbGVjdCByb3dzIHRvIHN0b3JlLlxuICAgICAgdGhpcy5zdG9yZS5zZXRTZWxlY3RlZFJvd0tleShuZXh0UHJvcHMuc2VsZWN0Um93LnNlbGVjdGVkKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzZWxlY3RlZFJvd0tleXM6IG5leHRQcm9wcy5zZWxlY3RSb3cuc2VsZWN0ZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuX2FkanVzdEhlYWRlcldpZHRoKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX2FkanVzdEhlYWRlcldpZHRoLmJpbmQodGhpcykpO1xuICAgIHRoaXMucmVmcy5ib2R5LnJlZnMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEhlYWRlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9hZGp1c3RIZWFkZXJXaWR0aC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlZnMuYm9keS5yZWZzLmNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxIZWFkZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgdGhpcy5fYWRqdXN0SGVhZGVyV2lkdGgoKTtcbiAgICB0aGlzLl9hdHRhY2hDZWxsRWRpdEZ1bmMoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLmFmdGVyVGFibGVDb21wbGV0ZSlcbiAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5hZnRlclRhYmxlQ29tcGxldGUoKTtcbiAgfVxuXG4gIF9hdHRhY2hDZWxsRWRpdEZ1bmMoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuY2VsbEVkaXQpIHtcbiAgICAgIHRoaXMucHJvcHMuY2VsbEVkaXQuX19vbkNvbXBsZXRlRWRpdF9fID0gdGhpcy5oYW5kbGVFZGl0Q2VsbC5iaW5kKHRoaXMpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuY2VsbEVkaXQubW9kZSAhPT0gQ29uc3QuQ0VMTF9FRElUX05PTkUpXG4gICAgICAgIHRoaXMucHJvcHMuc2VsZWN0Um93LmNsaWNrVG9TZWxlY3QgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sXG4gICAqIHRoZSBkYXRhZ3JpZCBzaG91bGQgbG9hZCBpdHMgZGF0YSByZW1vdGVseS5cbiAgICpcbiAgICogQHBhcmFtICB7T2JqZWN0fSAgW3Byb3BzXSBPcHRpb25hbC4gSWYgbm90IGdpdmVuLCB0aGlzLnByb3BzIHdpbGwgYmUgdXNlZFxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgaXNSZW1vdGVEYXRhU291cmNlKHByb3BzKSB7XG4gICAgcmV0dXJuIChwcm9wcyB8fCB0aGlzLnByb3BzKS5yZW1vdGU7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgdmFyIHRhYmxlQ2xhc3MgPSBjbGFzc1NldChcInJlYWN0LWJzLXRhYmxlXCIpO1xuICAgIHZhciBjaGlsZHJlbnMgPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIHZhciBzdHlsZSA9IHtcbiAgICAgIGhlaWdodDogdGhpcy5wcm9wcy5oZWlnaHRcbiAgICB9O1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKSkge1xuICAgICAgY2hpbGRyZW5zID0gW3RoaXMucHJvcHMuY2hpbGRyZW5dO1xuICAgIH1cbiAgICB2YXIgY29sdW1ucyA9IGNoaWxkcmVucy5tYXAoZnVuY3Rpb24gKGNvbHVtbiwgaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogY29sdW1uLnByb3BzLmRhdGFGaWVsZCxcbiAgICAgICAgYWxpZ246IGNvbHVtbi5wcm9wcy5kYXRhQWxpZ24sXG4gICAgICAgIHNvcnQ6IGNvbHVtbi5wcm9wcy5kYXRhU29ydCxcbiAgICAgICAgZm9ybWF0OiBjb2x1bW4ucHJvcHMuZGF0YUZvcm1hdCxcbiAgICAgICAgZWRpdGFibGU6IGNvbHVtbi5wcm9wcy5lZGl0YWJsZSxcbiAgICAgICAgaGlkZGVuOiBjb2x1bW4ucHJvcHMuaGlkZGVuLFxuICAgICAgICBjbGFzc05hbWU6IGNvbHVtbi5wcm9wcy5jb2x1bW5DbGFzc05hbWUsXG4gICAgICAgIHdpZHRoOiBjb2x1bW4ucHJvcHMud2lkdGgsXG4gICAgICAgIHRleHQ6IGNvbHVtbi5wcm9wcy5jaGlsZHJlbixcbiAgICAgICAgaW5kZXg6IGlcbiAgICAgIH07XG4gICAgfSwgdGhpcyk7XG5cbiAgICB2YXIgcGFnaW5hdGlvbiA9IHRoaXMucmVuZGVyUGFnaW5hdGlvbigpO1xuICAgIHZhciB0b29sQmFyID0gdGhpcy5yZW5kZXJUb29sQmFyKCk7XG4gICAgdmFyIHRhYmxlRmlsdGVyID0gdGhpcy5yZW5kZXJUYWJsZUZpbHRlcihjb2x1bW5zKTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFjdC1icy1jb250YWluZXJcIiByZWY9XCJ0YWJsZVwiPlxuICAgICAgICB7dG9vbEJhcn1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFjdC1icy10YWJsZS1jb250YWluZXJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAgICAgIDxUYWJsZUhlYWRlclxuICAgICAgICAgICAgcmVmPVwiaGVhZGVyXCJcbiAgICAgICAgICAgIHJvd1NlbGVjdFR5cGU9e3RoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGV9XG4gICAgICAgICAgICBoaWRlU2VsZWN0Q29sdW1uPXt0aGlzLnByb3BzLnNlbGVjdFJvdy5oaWRlU2VsZWN0Q29sdW1ufVxuICAgICAgICAgICAgc29ydE5hbWU9e3RoaXMucHJvcHMub3B0aW9ucy5zb3J0TmFtZX1cbiAgICAgICAgICAgIHNvcnRPcmRlcj17dGhpcy5wcm9wcy5vcHRpb25zLnNvcnRPcmRlcn1cbiAgICAgICAgICAgIG9uU29ydD17dGhpcy5oYW5kbGVTb3J0LmJpbmQodGhpcyl9XG4gICAgICAgICAgICBvblNlbGVjdEFsbFJvdz17dGhpcy5oYW5kbGVTZWxlY3RBbGxSb3cuYmluZCh0aGlzKX1cbiAgICAgICAgICAgIGJvcmRlcmVkPXt0aGlzLnByb3BzLmJvcmRlcmVkfVxuICAgICAgICAgICAgY29uZGVuc2VkPXt0aGlzLnByb3BzLmNvbmRlbnNlZH0+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgIDxUYWJsZUJvZHlcbiAgICAgICAgICAgIGhlaWdodD17dGhpcy5wcm9wcy5oZWlnaHR9XG4gICAgICAgICAgICByZWY9XCJib2R5XCJcbiAgICAgICAgICAgIGRhdGE9e3RoaXMuc3RhdGUuZGF0YX1cbiAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICAgICAgICB0ckNsYXNzTmFtZT17dGhpcy5wcm9wcy50ckNsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0cmlwZWQ9e3RoaXMucHJvcHMuc3RyaXBlZH1cbiAgICAgICAgICAgIGJvcmRlcmVkPXt0aGlzLnByb3BzLmJvcmRlcmVkfVxuICAgICAgICAgICAgaG92ZXI9e3RoaXMucHJvcHMuaG92ZXJ9XG4gICAgICAgICAgICBrZXlGaWVsZD17dGhpcy5zdG9yZS5nZXRLZXlGaWVsZCgpfVxuICAgICAgICAgICAgY29uZGVuc2VkPXt0aGlzLnByb3BzLmNvbmRlbnNlZH1cbiAgICAgICAgICAgIHNlbGVjdFJvdz17dGhpcy5wcm9wcy5zZWxlY3RSb3d9XG4gICAgICAgICAgICBjZWxsRWRpdD17dGhpcy5wcm9wcy5jZWxsRWRpdH1cbiAgICAgICAgICAgIHNlbGVjdGVkUm93S2V5cz17dGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXN9XG4gICAgICAgICAgICBvblJvd0NsaWNrPXt0aGlzLmhhbmRsZVJvd0NsaWNrLmJpbmQodGhpcyl9XG4gICAgICAgICAgICBvblNlbGVjdFJvdz17dGhpcy5oYW5kbGVTZWxlY3RSb3cuYmluZCh0aGlzKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3RhYmxlRmlsdGVyfVxuICAgICAgICB7cGFnaW5hdGlvbn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIGhhbmRsZVNvcnQob3JkZXIsIHNvcnRGaWVsZCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMub25Tb3J0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnByb3BzLm9wdGlvbnMub25Tb3J0Q2hhbmdlKHNvcnRGaWVsZCwgb3JkZXIsIHRoaXMucHJvcHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmVtb3RlRGF0YVNvdXJjZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuc3RvcmUuc29ydChvcmRlciwgc29ydEZpZWxkKS5nZXQoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUGFnaW5hdGlvbkRhdGEocGFnZSwgc2l6ZVBlclBhZ2UpIHtcbiAgICBjb25zdCB7b25QYWdlQ2hhbmdlfSA9IHRoaXMucHJvcHMub3B0aW9ucztcbiAgICBpZiAob25QYWdlQ2hhbmdlKSB7XG4gICAgICBvblBhZ2VDaGFuZ2UocGFnZSwgc2l6ZVBlclBhZ2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmVtb3RlRGF0YVNvdXJjZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuc3RvcmUucGFnZShwYWdlLCBzaXplUGVyUGFnZSkuZ2V0KCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVJvd0NsaWNrKHJvdykge1xuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMub25Sb3dDbGljaykge1xuICAgICAgdGhpcy5wcm9wcy5vcHRpb25zLm9uUm93Q2xpY2socm93KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWxlY3RBbGxSb3coZSkge1xuICAgIHZhciBpc1NlbGVjdGVkID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7XG4gICAgbGV0IHNlbGVjdGVkUm93S2V5cyA9IFtdO1xuICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnN0b3JlLmdldEFsbFJvd2tleSgpO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUuc2V0U2VsZWN0ZWRSb3dLZXkoc2VsZWN0ZWRSb3dLZXlzKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUm93S2V5czogc2VsZWN0ZWRSb3dLZXlzXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RSb3cub25TZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMucHJvcHMuc2VsZWN0Um93Lm9uU2VsZWN0QWxsKGlzU2VsZWN0ZWQsXG4gICAgICAgIGlzU2VsZWN0ZWQgPyB0aGlzLnN0b3JlLmdldCgpIDogW10pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFJvdyhyb3csIGlzU2VsZWN0ZWQpIHtcbiAgICBsZXQgY3VyclNlbGVjdGVkID0gdGhpcy5zdG9yZS5nZXRTZWxlY3RlZFJvd0tleXMoKTtcbiAgICBsZXQgcm93S2V5ID0gcm93W3RoaXMuc3RvcmUuZ2V0S2V5RmllbGQoKV07XG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGUgPT09IENvbnN0LlJPV19TRUxFQ1RfU0lOR0xFKSB7XG4gICAgICBjdXJyU2VsZWN0ZWQgPSBpc1NlbGVjdGVkID8gW3Jvd0tleV0gOiBbXVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICBjdXJyU2VsZWN0ZWQucHVzaChyb3dLZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VyclNlbGVjdGVkID0gY3VyclNlbGVjdGVkLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIHJvd0tleSAhPT0ga2V5O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0b3JlLnNldFNlbGVjdGVkUm93S2V5KGN1cnJTZWxlY3RlZCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGN1cnJTZWxlY3RlZFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0Um93Lm9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnByb3BzLnNlbGVjdFJvdy5vblNlbGVjdChyb3csIGlzU2VsZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUVkaXRDZWxsKG5ld1ZhbCwgcm93SW5kZXgsIGNvbEluZGV4KSB7XG4gICAgbGV0IGZpZWxkTmFtZTtcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKHRoaXMucHJvcHMuY2hpbGRyZW4sIGZ1bmN0aW9uIChjb2x1bW4sIGkpIHtcbiAgICAgIGlmIChpID09IGNvbEluZGV4KSB7XG4gICAgICAgIGZpZWxkTmFtZSA9IGNvbHVtbi5wcm9wcy5kYXRhRmllbGQ7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCByZXN1bHQgPSB0aGlzLnN0b3JlLmVkaXQobmV3VmFsLCByb3dJbmRleCwgZmllbGROYW1lKS5nZXQoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2VsbEVkaXQuYWZ0ZXJTYXZlQ2VsbCkge1xuICAgICAgdGhpcy5wcm9wcy5jZWxsRWRpdC5hZnRlclNhdmVDZWxsKHRoaXMuc3RhdGUuZGF0YVtyb3dJbmRleF0sIGZpZWxkTmFtZSwgbmV3VmFsKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVBZGRSb3dCZWdpbigpIHtcbiAgICBpZiAodGhpcy5yZWZzLmJvZHkpIHtcbiAgICAgIC8vIHRoaXMucmVmcy5ib2R5LmNhbmNlbEVkaXQoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVBZGRSb3cobmV3T2JqKSB7XG4gICAgbGV0IG1zZyA9IG51bGwsIHJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdG9yZS5hZGQobmV3T2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICAvL2lmIHBhZ2luYXRpb24gaXMgZW5hYmxlZCBhbmQgaW5zZXJ0IHJvdyBiZSB0cmlnZ2VyLCBjaGFuZ2UgdG8gbGFzdCBwYWdlXG4gICAgICBsZXQgc2l6ZVBlclBhZ2UgPSB0aGlzLnJlZnMucGFnaW5hdGlvbi5nZXRTaXplUGVyUGFnZSgpO1xuICAgICAgbGV0IGN1cnJMYXN0UGFnZSA9IE1hdGguY2VpbCh0aGlzLnN0b3JlLmdldERhdGFOdW0oKSAvIHNpemVQZXJQYWdlKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuc3RvcmUucGFnZShjdXJyTGFzdFBhZ2UsIHNpemVQZXJQYWdlKS5nZXQoKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkYXRhOiByZXN1bHRcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZWZzLnBhZ2luYXRpb24uY2hhbmdlUGFnZShjdXJyTGFzdFBhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRhdGE6IHJlc3VsdFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy5hZnRlckluc2VydFJvdykge1xuICAgICAgdGhpcy5wcm9wcy5vcHRpb25zLmFmdGVySW5zZXJ0Um93KG5ld09iaik7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2l6ZVBlclBhZ2UoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcy5wYWdpbmF0aW9uLmdldFNpemVQZXJQYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q3VycmVudFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcy5wYWdpbmF0aW9uLmdldEN1cnJlbnRQYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJvcFJvdygpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBkcm9wUm93S2V5cyA9IHRoaXMuc3RvcmUuZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XG4gICAgLy9hZGQgY29uZmlybSBiZWZvciB0aGUgZGVsZXRlIGFjdGlvblxuICAgIGlmIChkcm9wUm93S2V5cyAmJiBkcm9wUm93S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIWNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB3YW50IGRlbGV0ZT8nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zdG9yZS5yZW1vdmUoZHJvcFJvd0tleXMpOyAgLy9yZW1vdmUgc2VsZWN0ZWQgUm93XG4gICAgdGhpcy5zdG9yZS5zZXRTZWxlY3RlZFJvd0tleShbXSk7ICAvL2NsZWFyIHNlbGVjdGVkIHJvdyBrZXlcblxuICAgIGlmICh0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGxldCBzaXplUGVyUGFnZSA9IHRoaXMucmVmcy5wYWdpbmF0aW9uLmdldFNpemVQZXJQYWdlKCk7XG4gICAgICBsZXQgY3Vyckxhc3RQYWdlID0gTWF0aC5jZWlsKHRoaXMuc3RvcmUuZ2V0RGF0YU51bSgpIC8gc2l6ZVBlclBhZ2UpO1xuICAgICAgbGV0IGN1cnJlbnRQYWdlID0gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0Q3VycmVudFBhZ2UoKTtcbiAgICAgIGlmIChjdXJyZW50UGFnZSA+IGN1cnJMYXN0UGFnZSlcbiAgICAgICAgY3VycmVudFBhZ2UgPSBjdXJyTGFzdFBhZ2U7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLnBhZ2UoY3VycmVudFBhZ2UsIHNpemVQZXJQYWdlKS5nZXQoKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgIHNlbGVjdGVkUm93S2V5czogdGhpcy5zdG9yZS5nZXRTZWxlY3RlZFJvd0tleXMoKVxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZnMucGFnaW5hdGlvbi5jaGFuZ2VQYWdlKGN1cnJlbnRQYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5zdG9yZS5nZXQoKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgIHNlbGVjdGVkUm93S2V5czogdGhpcy5zdG9yZS5nZXRTZWxlY3RlZFJvd0tleXMoKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJEZWxldGVSb3cpIHtcbiAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5hZnRlckRlbGV0ZVJvdyhkcm9wUm93S2V5cyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRmlsdGVyRGF0YShmaWx0ZXJPYmopIHtcbiAgICB0aGlzLnN0b3JlLmZpbHRlcihmaWx0ZXJPYmopO1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgbGV0IHNpemVQZXJQYWdlID0gdGhpcy5yZWZzLnBhZ2luYXRpb24uZ2V0U2l6ZVBlclBhZ2UoKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuc3RvcmUucGFnZSgxLCBzaXplUGVyUGFnZSkuZ2V0KCk7XG4gICAgICB0aGlzLnJlZnMucGFnaW5hdGlvbi5jaGFuZ2VQYWdlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgIH1cbiAgICBpZih0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJDb2x1bW5GaWx0ZXIpXG4gICAgICB0aGlzLnByb3BzLm9wdGlvbnMuYWZ0ZXJDb2x1bW5GaWx0ZXIoZmlsdGVyT2JqLFxuICAgICAgICB0aGlzLnN0b3JlLmdldERhdGFJZ25vcmluZ1BhZ2luYXRpb24oKSk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUV4cG9ydENTVigpIHtcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5zdG9yZS5nZXQoKTtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIHRoaXMucHJvcHMuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGNvbHVtbikge1xuICAgICAga2V5cy5wdXNoKGNvbHVtbi5wcm9wcy5kYXRhRmllbGQpO1xuICAgIH0pO1xuICAgIGV4cG9ydENTVihyZXN1bHQsIGtleXMsIHRoaXMucHJvcHMuY3N2RmlsZU5hbWUpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKHNlYXJjaFRleHQpIHtcbiAgICB0aGlzLnN0b3JlLnNlYXJjaChzZWFyY2hUZXh0LCB0aGlzLnByb3BzLm11bHRpQ29sdW1uU2VhcmNoKTtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmICh0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGxldCBzaXplUGVyUGFnZSA9IHRoaXMucmVmcy5wYWdpbmF0aW9uLmdldFNpemVQZXJQYWdlKCk7XG4gICAgICByZXN1bHQgPSB0aGlzLnN0b3JlLnBhZ2UoMSwgc2l6ZVBlclBhZ2UpLmdldCgpO1xuICAgICAgdGhpcy5yZWZzLnBhZ2luYXRpb24uY2hhbmdlUGFnZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5zdG9yZS5nZXQoKTtcbiAgICB9XG4gICAgaWYodGhpcy5wcm9wcy5vcHRpb25zLmFmdGVyU2VhcmNoKVxuICAgICAgdGhpcy5wcm9wcy5vcHRpb25zLmFmdGVyU2VhcmNoKHNlYXJjaFRleHQsIHRoaXMuc3RvcmUuZ2V0RGF0YUlnbm9yaW5nUGFnaW5hdGlvbigpKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVyUGFnaW5hdGlvbigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICBsZXQgZGF0YVNpemU7XG4gICAgICBpZiAodGhpcy5pc1JlbW90ZURhdGFTb3VyY2UoKSkge1xuICAgICAgICBkYXRhU2l6ZSA9IHRoaXMucHJvcHMuZmV0Y2hJbmZvLmRhdGFUb3RhbFNpemU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhU2l6ZSA9IHRoaXMuc3RvcmUuZ2V0RGF0YU51bSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8UGFnaW5hdGlvbkxpc3RcbiAgICAgICAgICAgIHJlZj1cInBhZ2luYXRpb25cIlxuICAgICAgICAgICAgY3VyclBhZ2U9e3RoaXMucHJvcHMub3B0aW9ucy5wYWdlIHx8IDF9XG4gICAgICAgICAgICBjaGFuZ2VQYWdlPXt0aGlzLmhhbmRsZVBhZ2luYXRpb25EYXRhLmJpbmQodGhpcyl9XG4gICAgICAgICAgICBzaXplUGVyUGFnZT17dGhpcy5wcm9wcy5vcHRpb25zLnNpemVQZXJQYWdlIHx8IENvbnN0LlNJWkVfUEVSX1BBR0VfTElTVFswXX1cbiAgICAgICAgICAgIHNpemVQZXJQYWdlTGlzdD17dGhpcy5wcm9wcy5vcHRpb25zLnNpemVQZXJQYWdlTGlzdCB8fCBDb25zdC5TSVpFX1BFUl9QQUdFX0xJU1R9XG4gICAgICAgICAgICBwYWdpbmF0aW9uU2l6ZT17dGhpcy5wcm9wcy5vcHRpb25zLnBhZ2luYXRpb25TaXplIHx8IENvbnN0LlBBR0lOQVRJT05fU0laRX1cbiAgICAgICAgICAgIHJlbW90ZT17dGhpcy5pc1JlbW90ZURhdGFTb3VyY2UoKX1cbiAgICAgICAgICAgIGRhdGFTaXplPXtkYXRhU2l6ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVuZGVyVG9vbEJhcigpIHtcbiAgICBsZXQgY29sdW1ucztcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKSkge1xuICAgICAgY29sdW1ucyA9IHRoaXMucHJvcHMuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgdmFyIHByb3BzID0gY29sdW1uLnByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGZpZWxkOiBwcm9wcy5kYXRhRmllbGQsXG4gICAgICAgICAgLy93aGVuIHlvdSB3YW50IHNhbWUgYXV0byBnZW5lcmF0ZSB2YWx1ZSBhbmQgbm90IGFsbG93IGVkaXQsIGV4YW1wbGUgSUQgZmllbGRcbiAgICAgICAgICBhdXRvVmFsdWU6IHByb3BzLmF1dG9WYWx1ZSB8fCBmYWxzZSxcbiAgICAgICAgICAvL2ZvciBjcmVhdGUgZWlkdG9yLCBubyBwYXJhbXMgZm9yIGNvbHVtbi5lZGl0YWJsZSgpIGluZGljYXRlIHRoYXQgZWRpdG9yIGZvciBuZXcgcm93XG4gICAgICAgICAgZWRpdGFibGU6IHByb3BzLmVkaXRhYmxlICYmICh0eXBlb2YgcHJvcHMuZWRpdGFibGUgPT09IFwiZnVuY3Rpb25cIikgPyBwcm9wcy5lZGl0YWJsZSgpIDogcHJvcHMuZWRpdGFibGUsXG4gICAgICAgICAgZm9ybWF0OiBwcm9wcy5mb3JtYXQgPyBmb3JtYXQgOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbHVtbnMgPSBbe1xuICAgICAgICBuYW1lOiB0aGlzLnByb3BzLmNoaWxkcmVuLnByb3BzLmNoaWxkcmVuLFxuICAgICAgICBmaWVsZDogdGhpcy5wcm9wcy5jaGlsZHJlbi5wcm9wcy5kYXRhRmllbGQsXG4gICAgICAgIGVkaXRhYmxlOiB0aGlzLnByb3BzLmNoaWxkcmVuLnByb3BzLmVkaXRhYmxlXG4gICAgICB9XTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuaW5zZXJ0Um93IHx8IHRoaXMucHJvcHMuZGVsZXRlUm93IHx8IHRoaXMucHJvcHMuc2VhcmNoIHx8IHRoaXMucHJvcHMuZXhwb3J0Q1NWKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2wtYmFyXCI+XG4gICAgICAgICAgPFRvb2xCYXJcbiAgICAgICAgICAgIGVuYWJsZUluc2VydD17dGhpcy5wcm9wcy5pbnNlcnRSb3d9XG4gICAgICAgICAgICBlbmFibGVEZWxldGU9e3RoaXMucHJvcHMuZGVsZXRlUm93fVxuICAgICAgICAgICAgZW5hYmxlU2VhcmNoPXt0aGlzLnByb3BzLnNlYXJjaH1cbiAgICAgICAgICAgIGVuYWJsZUV4cG9ydENTVj17dGhpcy5wcm9wcy5leHBvcnRDU1Z9XG4gICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e3RoaXMucHJvcHMuc2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICBvbkFkZFJvdz17dGhpcy5oYW5kbGVBZGRSb3cuYmluZCh0aGlzKX1cbiAgICAgICAgICAgIG9uQWRkUm93QmVnaW49e3RoaXMuaGFuZGxlQWRkUm93QmVnaW4uYmluZCh0aGlzKX1cbiAgICAgICAgICAgIG9uRHJvcFJvdz17dGhpcy5oYW5kbGVEcm9wUm93LmJpbmQodGhpcyl9XG4gICAgICAgICAgICBvblNlYXJjaD17dGhpcy5oYW5kbGVTZWFyY2guYmluZCh0aGlzKX1cbiAgICAgICAgICAgIG9uRXhwb3J0Q1NWPXt0aGlzLmhhbmRsZUV4cG9ydENTVi5iaW5kKHRoaXMpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUYWJsZUZpbHRlcihjb2x1bW5zKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29sdW1uRmlsdGVyKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGFibGVGaWx0ZXIgY29sdW1ucz17Y29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgIHJvd1NlbGVjdFR5cGU9e3RoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGV9XG4gICAgICAgICAgICAgICAgICAgICBvbkZpbHRlcj17dGhpcy5oYW5kbGVGaWx0ZXJEYXRhLmJpbmQodGhpcyl9Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9zY3JvbGxIZWFkZXIoZSl7XG4gICAgdGhpcy5yZWZzLmhlYWRlci5yZWZzLmNvbnRhaW5lci5zY3JvbGxMZWZ0ID0gZS5jdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQ7XG4gIH1cblxuICBfYWRqdXN0SGVhZGVyV2lkdGgoKSB7XG4gICAgdmFyIHRhYmxlSGVhZGVyRG9tID0gdGhpcy5yZWZzLmhlYWRlci5yZWZzLmNvbnRhaW5lci5jaGlsZE5vZGVzWzBdO1xuICAgIHZhciB0YWJsZUJvZHlEb20gPSB0aGlzLnJlZnMuYm9keS5yZWZzLmNvbnRhaW5lci5jaGlsZE5vZGVzWzBdO1xuICAgIGlmKHRhYmxlSGVhZGVyRG9tLm9mZnNldFdpZHRoICE9PSB0YWJsZUJvZHlEb20ub2Zmc2V0V2lkdGgpe1xuICAgICAgdGFibGVIZWFkZXJEb20uc3R5bGUud2lkdGggPSB0YWJsZUJvZHlEb20ub2Zmc2V0V2lkdGggKyBcInB4XCI7XG4gICAgfVxuICAgIGNvbnN0IGhlYWRlclByb3BzID0gdGhpcy5yZWZzLmJvZHkuZ2V0Qm9keUhlYWRlckRvbVByb3AoKTtcbiAgICB0aGlzLnJlZnMuaGVhZGVyLmZpdEhlYWRlcihoZWFkZXJQcm9wcyxcbiAgICAgIHRoaXMucmVmcy5ib2R5LnJlZnMuY29udGFpbmVyLnNjcm9sbEhlaWdodCA+IHRoaXMucmVmcy5ib2R5LnJlZnMuY29udGFpbmVyLmNsaWVudEhlaWdodCk7XG4gIH1cbn1cblxuQm9vdHN0cmFwVGFibGUucHJvcFR5cGVzID0ge1xuICBrZXlGaWVsZDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgaGVpZ2h0OiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBkYXRhOiBSZWFjdC5Qcm9wVHlwZXMub25lT2ZUeXBlKFtSZWFjdC5Qcm9wVHlwZXMuYXJyYXksIFJlYWN0LlByb3BUeXBlcy5vYmplY3RdKSxcbiAgcmVtb3RlOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCwgLy8gcmVtb3RlIGRhdGEsIGRlZmF1bHQgaXMgZmFsc2VcbiAgc3RyaXBlZDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGJvcmRlcmVkOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgaG92ZXI6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjb25kZW5zZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBwYWdpbmF0aW9uOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIHNlbGVjdFJvdzogUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtb2RlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgIGJnQ29sb3I6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0ZWQ6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgICBvblNlbGVjdDogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25TZWxlY3RBbGw6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgIGNsaWNrVG9TZWxlY3Q6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICAgIGhpZGVTZWxlY3RDb2x1bW46IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICAgIGNsaWNrVG9TZWxlY3RBbmRFZGl0Q2VsbDogUmVhY3QuUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGNlbGxFZGl0OiBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1vZGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgYmx1clRvU2F2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gICAgYWZ0ZXJTYXZlQ2VsbDogUmVhY3QuUHJvcFR5cGVzLmZ1bmNcbiAgfSksXG4gIGluc2VydFJvdzogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGRlbGV0ZVJvdzogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIHNlYXJjaDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGNvbHVtbkZpbHRlcjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIHRyQ2xhc3NOYW1lOiBSZWFjdC5Qcm9wVHlwZXMuYW55LFxuICBvcHRpb25zOiBSZWFjdC5Qcm9wVHlwZXMuc2hhcGUoe1xuICAgIHNvcnROYW1lOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNvcnRPcmRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICBhZnRlclRhYmxlQ29tcGxldGU6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgIGFmdGVyRGVsZXRlUm93OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgICBhZnRlckluc2VydFJvdzogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gICAgYWZ0ZXJTZWFyY2g6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgIGFmdGVyQ29sdW1uRmlsdGVyOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgICBvblJvd0NsaWNrOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdlOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgIHNpemVQZXJQYWdlTGlzdDogUmVhY3QuUHJvcFR5cGVzLmFycmF5LFxuICAgIHNpemVQZXJQYWdlOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgIHBhZ2luYXRpb25TaXplOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgIG9uU29ydENoYW5nZTogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25QYWdlQ2hhbmdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgfSksXG4gIGZldGNoSW5mbzogUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBkYXRhVG90YWxTaXplOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICB9KSxcbiAgZXhwb3J0Q1NWOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgY3N2RmlsZU5hbWU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmdcbn07XG5Cb290c3RyYXBUYWJsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHN0cmlwZWQ6IGZhbHNlLFxuICBib3JkZXJlZDogdHJ1ZSxcbiAgaG92ZXI6IGZhbHNlLFxuICBjb25kZW5zZWQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHVuZGVmaW5lZCxcbiAgc2VsZWN0Um93OiB7XG4gICAgbW9kZTogQ29uc3QuUk9XX1NFTEVDVF9OT05FLFxuICAgIGJnQ29sb3I6IENvbnN0LlJPV19TRUxFQ1RfQkdfQ09MT1IsXG4gICAgc2VsZWN0ZWQ6IFtdLFxuICAgIG9uU2VsZWN0OiB1bmRlZmluZWQsXG4gICAgb25TZWxlY3RBbGw6IHVuZGVmaW5lZCxcbiAgICBjbGlja1RvU2VsZWN0OiBmYWxzZSxcbiAgICBoaWRlU2VsZWN0Q29sdW1uOiBmYWxzZSxcbiAgICBjbGlja1RvU2VsZWN0QW5kRWRpdENlbGw6IGZhbHNlXG4gIH0sXG4gIGNlbGxFZGl0OiB7XG4gICAgbW9kZTogQ29uc3QuQ0VMTF9FRElUX05PTkUsXG4gICAgYmx1clRvU2F2ZTogZmFsc2UsXG4gICAgYWZ0ZXJTYXZlQ2VsbDogdW5kZWZpbmVkXG4gIH0sXG4gIGluc2VydFJvdzogZmFsc2UsXG4gIGRlbGV0ZVJvdzogZmFsc2UsXG4gIHNlYXJjaDogZmFsc2UsXG4gIG11bHRpQ29sdW1uU2VhcmNoOiBmYWxzZSxcbiAgY29sdW1uRmlsdGVyOiBmYWxzZSxcbiAgdHJDbGFzc05hbWU6ICcnLFxuICBvcHRpb25zOiB7XG4gICAgc29ydE5hbWU6IHVuZGVmaW5lZCxcbiAgICBzb3J0T3JkZXI6IENvbnN0LlNPUlRfREVTQyxcbiAgICBhZnRlclRhYmxlQ29tcGxldGU6IHVuZGVmaW5lZCxcbiAgICBhZnRlckRlbGV0ZVJvdzogdW5kZWZpbmVkLFxuICAgIGFmdGVySW5zZXJ0Um93OiB1bmRlZmluZWQsXG4gICAgYWZ0ZXJTZWFyY2g6IHVuZGVmaW5lZCxcbiAgICBhZnRlckNvbHVtbkZpbHRlcjogdW5kZWZpbmVkLFxuICAgIG9uUm93Q2xpY2s6IHVuZGVmaW5lZCxcbiAgICBwYWdlOiAxLFxuICAgIHNpemVQZXJQYWdlTGlzdDogQ29uc3QuU0laRV9QRVJfUEFHRV9MSVNULFxuICAgIHNpemVQZXJQYWdlOiBDb25zdC5TSVpFX1BFUl9QQUdFX0xJU1RbMF0sXG4gICAgcGFnaW5hdGlvblNpemU6IENvbnN0LlBBR0lOQVRJT05fU0laRVxuICB9LFxuICBmZXRjaEluZm86IHtcbiAgICBkYXRhVG90YWxTaXplOiAwLFxuICB9LFxuICBleHBvcnRDU1Y6IGZhbHNlLFxuICBjc3ZGaWxlTmFtZTogdW5kZWZpbmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCb290c3RyYXBUYWJsZTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgU09SVF9ERVNDOiBcImRlc2NcIixcbiAgU09SVF9BU0M6IFwiYXNjXCIsXG4gIFNJWkVfUEVSX1BBR0U6IDEwLFxuICBORVhUX1BBR0U6IFwiPlwiLFxuICBMQVNUX1BBR0U6IFwiPj5cIixcbiAgUFJFX1BBR0U6IFwiPFwiLFxuICBGSVJTVF9QQUdFOiBcIjw8XCIsXG4gIFJPV19TRUxFQ1RfQkdfQ09MT1I6IFwiXCIsXG4gIFJPV19TRUxFQ1RfTk9ORTogXCJub25lXCIsXG4gIFJPV19TRUxFQ1RfU0lOR0xFOiBcInJhZGlvXCIsXG4gIFJPV19TRUxFQ1RfTVVMVEk6IFwiY2hlY2tib3hcIixcbiAgQ0VMTF9FRElUX05PTkU6IFwibm9uZVwiLFxuICBDRUxMX0VESVRfQ0xJQ0s6IFwiY2xpY2tcIixcbiAgQ0VMTF9FRElUX0RCQ0xJQ0s6IFwiZGJjbGlja1wiLFxuICBTSVpFX1BFUl9QQUdFX0xJU1Q6IFsxMCwgMjUsIDMwLCA1MF0sXG4gIFBBR0lOQVRJT05fU0laRTogNVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBFZGl0b3I9ZnVuY3Rpb24oZWRpdGFibGUsIGF0dHIsIGZvcm1hdCwgZWRpdG9yQ2xhc3MsIGRlZmF1bHRWYWx1ZSl7XG5cblxuICAgIGlmKGVkaXRhYmxlPT09dHJ1ZXx8dHlwZW9mIGVkaXRhYmxlPT09XCJzdHJpbmdcIil7Ly9zaW1wbGUgZGVjbGFyZVxuICAgICAgICB2YXIgdHlwZT1lZGl0YWJsZT09PXRydWU/J3RleHQnOmVkaXRhYmxlO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGlucHV0IHsuLi5hdHRyfSB0eXBlPXt0eXBlfSBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhlZGl0b3JDbGFzc3x8XCJcIikrXCIgZm9ybS1jb250cm9sIGVkaXRvciBlZGl0LXRleHRcIn0gLz5cbiAgICAgICAgKVxuICAgIH0gZWxzZSBpZighZWRpdGFibGUpe1xuICAgICAgdmFyIHR5cGU9ZWRpdGFibGU9PT10cnVlPyd0ZXh0JzplZGl0YWJsZTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGlucHV0IHsuLi5hdHRyfSB0eXBlPXt0eXBlfSBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX0gZGlzYWJsZWQ9J2Rpc2FibGVkJ1xuICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhlZGl0b3JDbGFzc3x8XCJcIikrXCIgZm9ybS1jb250cm9sIGVkaXRvciBlZGl0LXRleHRcIn0gLz5cbiAgICAgIClcbiAgICB9IGVsc2UgaWYoZWRpdGFibGUudHlwZSl7Ly9zdGFuZGFyZCBkZWNsYXJlXG4gICAgICAgIC8vcHV0IHN0eWxlIGlmIGV4aXN0XG4gICAgICAgIGVkaXRhYmxlLnN0eWxlJiYoYXR0ci5zdHlsZT1lZGl0YWJsZS5zdHlsZSk7XG5cbiAgICAgICAgLy9wdXQgY2xhc3MgaWYgZXhpc3RcbiAgICAgICAgYXR0ci5jbGFzc05hbWUgPSAoZWRpdG9yQ2xhc3N8fFwiXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIiBmb3JtLWNvbnRyb2wgZWRpdG9yIGVkaXQtXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlLnR5cGUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIChlZGl0YWJsZS5jbGFzc05hbWU/KFwiIFwiK2VkaXRhYmxlLmNsYXNzTmFtZSk6XCJcIik7XG5cbiAgICAgICAgaWYoZWRpdGFibGUudHlwZSA9PT0gJ3NlbGVjdCcpey8vcHJvY2VzcyBzZWxlY3QgaW5wdXRcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gW10sIHZhbHVlcz1lZGl0YWJsZS5vcHRpb25zLnZhbHVlcztcbiAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkodmFsdWVzKSl7Ly9vbmx5IGNhbiB1c2UgYXJycmF5IGRhdGEgZm9yIG9wdGlvbnNcbiAgICAgICAgICAgICAgICB2YXIgcm93VmFsdWU7XG4gICAgICAgICAgICAgICAgb3B0aW9ucz12YWx1ZXMubWFwKGZ1bmN0aW9uKGQsaSl7XG4gICAgICAgICAgICAgICAgICAgIHJvd1ZhbHVlPWZvcm1hdD9mb3JtYXQoZCk6ZDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9eydvcHRpb24nK2l9IHZhbHVlPXtkfT57cm93VmFsdWV9PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgICA8c2VsZWN0IHsuLi5hdHRyfSBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX0+e29wdGlvbnN9PC9zZWxlY3Q+XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYoZWRpdGFibGUudHlwZSA9PT0gJ3RleHRhcmVhJyl7Ly9wcm9jZXNzIHRleHRhcmVhIGlucHV0XG4gICAgICAgICAgICAvL3B1dCAgb3RoZXIgaWYgZXhpc3RcbiAgICAgICAgICAgIGVkaXRhYmxlLmNvbHMmJihhdHRyLmNvbHM9ZWRpdGFibGUuY29scyk7XG4gICAgICAgICAgICBlZGl0YWJsZS5yb3dzJiYoYXR0ci5yb3dzPWVkaXRhYmxlLnJvd3MpO1xuICAgICAgICAgICAgdmFyIGtleVVwSGFuZGxlcj1hdHRyLm9uS2V5RG93bixzYXZlQnRuPW51bGw7XG4gICAgICAgICAgICBpZihrZXlVcEhhbmRsZXIpe1xuICAgICAgICAgICAgICAgIGF0dHIub25LZXlEb3duPWZ1bmN0aW9uKGUpe1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXlDb2RlICE9IDEzKSB7IC8vbm90IFByZXNzZWQgRU5URVJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleVVwSGFuZGxlcihlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2F2ZUJ0bj08YnV0dG8gY2xhc3NOYW1lPVwiYnRuIGJ0bi1pbmZvIGJ0bi14cyB0ZXh0YXJlYS1zYXZlLWJ0blwiIG9uQ2xpY2s9e2tleVVwSGFuZGxlcn0+c2F2ZTwvYnV0dG8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgey4uLmF0dHJ9IGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfT48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICB7c2F2ZUJ0bn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmKGVkaXRhYmxlLnR5cGUgPT09ICdjaGVja2JveCcpe1xuICAgICAgICAgIGxldCB2YWx1ZXMgPSAndHJ1ZTpmYWxzZSc7XG4gICAgICAgICAgaWYoZWRpdGFibGUub3B0aW9ucyAmJiBlZGl0YWJsZS5vcHRpb25zLnZhbHVlcyl7XG4gICAgICAgICAgICAvLyB2YWx1ZXMgPSBlZGl0YWJsZS5vcHRpb25zLnZhbHVlcy5zcGxpdCgnOicpO1xuICAgICAgICAgICAgdmFsdWVzID0gZWRpdGFibGUub3B0aW9ucy52YWx1ZXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF0dHIuY2xhc3NOYW1lID0gYXR0ci5jbGFzc05hbWUucmVwbGFjZSgnZm9ybS1jb250cm9sJywnJyk7XG4gICAgICAgICAgYXR0ci5jbGFzc05hbWUgKz0gJyBjaGVja2JveCBwdWxsLXJpZ2h0JztcblxuICAgICAgICAgIGxldCBjaGVja2VkID0gZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS50b1N0cmluZygpID09IHZhbHVlcy5zcGxpdCgnOicpWzBdP3RydWU6ZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGlucHV0IHsuLi5hdHRyfSB0eXBlPSdjaGVja2JveCcgdmFsdWU9e3ZhbHVlc30gZGVmYXVsdENoZWNrZWQ9e2NoZWNrZWR9Lz5cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2V7Ly9wcm9jZXNzIG90aGVyIGlucHV0IHR5cGUuIGFzIHBhc3N3b3JkLHVybCxlbWFpbC4uLlxuICAgICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICAgIDxpbnB1dCB7Li4uYXR0cn0gdHlwZT17dHlwZX0gZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9Lz5cbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL2RlZmF1bHQgcmV0dXJuIGZvciBvdGhlciBjYXNlIG9mIGVkaXRhYmxlXG4gICAgcmV0dXJuKFxuICAgICAgICA8aW5wdXQgey4uLmF0dHJ9IHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPXsoZWRpdG9yQ2xhc3N8fFwiXCIpK1wiIGZvcm0tY29udHJvbCBlZGl0b3IgZWRpdC10ZXh0XCJ9Lz5cbiAgICApXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0b3I7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFRvYXN0ciBmcm9tICdyZWFjdC10b2FzdHInO1xuXG52YXIgVG9hc3RyQ29udGFpbmVyPVRvYXN0ci5Ub2FzdENvbnRhaW5lcjtcbnZhciBUb2FzdHJNZXNzYWdlRmFjdG9yeT1SZWFjdC5jcmVhdGVGYWN0b3J5KFRvYXN0ci5Ub2FzdE1lc3NhZ2UuYW5pbWF0aW9uKTtcblxuY2xhc3MgTm90aWZpY2F0aW9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuICAvLyBhbGxvdyB0eXBlIGlzIHN1Y2Nlc3MsaW5mbyx3YXJuaW5nLGVycm9yXG4gIG5vdGljZSh0eXBlLG1zZyx0aXRsZSl7XG4gICAgdGhpcy5yZWZzLnRvYXN0clt0eXBlXShcbiAgICAgICAgbXNnLHRpdGxlLCB7XG4gICAgICAgICAgbW9kZTonc2luZ2xlJyxcbiAgICAgICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgICAgIGV4dGVuZGVkVGltZU91dDogMTAwMCxcbiAgICAgICAgICBzaG93QW5pbWF0aW9uOiBcImFuaW1hdGVkICBib3VuY2VJblwiLFxuICAgICAgICAgIGhpZGVBbmltYXRpb246IFwiYW5pbWF0ZWQgYm91bmNlT3V0XCJcbiAgICAgICAgfSk7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxUb2FzdHJDb250YWluZXIgcmVmPVwidG9hc3RyXCIgdG9hc3RNZXNzYWdlRmFjdG9yeT17VG9hc3RyTWVzc2FnZUZhY3Rvcnl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0b2FzdC1jb250YWluZXJcIiAgY2xhc3NOYW1lPVwidG9hc3QtdG9wLXJpZ2h0XCI+PC9Ub2FzdHJDb250YWluZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQ29uc3QgZnJvbSAnLi9Db25zdCc7XG5cbmNsYXNzIFNlbGVjdFJvd0hlYWRlckNvbHVtbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICByZW5kZXIoKXtcbiAgICB2YXIgdGhTdHlsZSA9IHtcbiAgICAgIHdpZHRoOiAzNVxuICAgIH07XG5cbiAgICByZXR1cm4oXG4gICAgICA8dGggc3R5bGU9e3RoU3R5bGV9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRoLWlubmVyIHRhYmxlLWhlYWRlci1jb2x1bW5cIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RoPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3RSb3dIZWFkZXJDb2x1bW47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJztcbmltcG9ydCBUYWJsZVJvdyBmcm9tICcuL1RhYmxlUm93JztcbmltcG9ydCBUYWJsZUNvbHVtbiBmcm9tICcuL1RhYmxlQ29sdW1uJztcbmltcG9ydCBUYWJsZUVkaXRDb2x1bW4gZnJvbSAnLi9UYWJsZUVkaXRDb2x1bW4nO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuXG52YXIgaXNGdW49ZnVuY3Rpb24ob2JqKXtcbiAgcmV0dXJuIG9iaiYmKHR5cGVvZiBvYmo9PT1cImZ1bmN0aW9uXCIpO1xuXG59O1xuY2xhc3MgVGFibGVCb2R5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG5cdFx0c3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjdXJyRWRpdENlbGw6IG51bGxcbiAgICB9O1xuICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKXtcbiAgICB0aGlzLmhhcmRGaXhIZWFkZXJXaWR0aCgpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCl7XG4gICAgdGhpcy5oYXJkRml4SGVhZGVyV2lkdGgoKTtcbiAgfVxuXG4gIHJlbmRlcigpe1xuICAgIHZhciBjb250YWluZXJDbGFzc2VzID0gY2xhc3NTZXQoXCJ0YWJsZS1jb250YWluZXJcIik7XG5cbiAgICB2YXIgdGFibGVDbGFzc2VzID0gY2xhc3NTZXQoXCJ0YWJsZVwiLCB7XG4gICAgICAndGFibGUtc3RyaXBlZCc6IHRoaXMucHJvcHMuc3RyaXBlZCxcbiAgICAgICd0YWJsZS1ib3JkZXJlZCc6IHRoaXMucHJvcHMuYm9yZGVyZWQsXG4gICAgICAndGFibGUtaG92ZXInOiB0aGlzLnByb3BzLmhvdmVyLFxuICAgICAgJ3RhYmxlLWNvbmRlbnNlZCc6IHRoaXMucHJvcHMuY29uZGVuc2VkXG4gICAgfSk7XG5cbiAgICB2YXIgaXNTZWxlY3RSb3dEZWZpbmVkID0gdGhpcy5faXNTZWxlY3RSb3dEZWZpbmVkKCk7XG4gICAgdmFyIHRhYmxlSGVhZGVyID0gdGhpcy5yZW5kZXJUYWJsZUhlYWRlcihpc1NlbGVjdFJvd0RlZmluZWQpO1xuXG4gICAgdmFyIHRhYmxlUm93cyA9IHRoaXMucHJvcHMuZGF0YS5tYXAoZnVuY3Rpb24oZGF0YSwgcil7XG4gICAgICB2YXIgdGFibGVDb2x1bW5zID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcChmdW5jdGlvbihjb2x1bW4sIGkpe1xuICAgICAgICB2YXIgZmllbGRWYWx1ZSA9IGRhdGFbY29sdW1uLm5hbWVdO1xuICAgICAgICBpZih0aGlzLmVkaXRpbmcgJiZcbiAgICAgICAgICBjb2x1bW4ubmFtZSAhPT0gdGhpcy5wcm9wcy5rZXlGaWVsZCAmJiAvLyBLZXkgZmllbGQgY2FuJ3QgYmUgZWRpdFxuICAgICAgICAgIGNvbHVtbi5lZGl0YWJsZSAmJiAvLyBjb2x1bW4gaXMgZWRpdGFibGU/IGRlZmF1bHQgaXMgdHJ1ZSwgdXNlciBjYW4gc2V0IGl0IGZhbHNlXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyRWRpdENlbGwgIT0gbnVsbCAmJlxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VyckVkaXRDZWxsLnJpZCA9PSByICYmXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyRWRpdENlbGwuY2lkID09IGkpe1xuICAgICAgICAgICAgdmFyIGZvcm1hdD1jb2x1bW4uZm9ybWF0P2Z1bmN0aW9uKHZhbHVlKXtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5mb3JtYXQodmFsdWUsZGF0YSkucmVwbGFjZSgvPC4qPz4vZywnJyk7XG4gICAgICAgICAgICB9OmZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICA8VGFibGVFZGl0Q29sdW1uIGNvbXBsZXRlRWRpdD17dGhpcy5oYW5kbGVDb21wbGV0ZUVkaXRDZWxsLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9hZGQgYnkgYmx1ZXNwcmluZyBmb3IgY29sdW1uIGVkaXRvciBjdXN0b21pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZT17aXNGdW4oY29sdW1uLmVkaXRhYmxlKT9jb2x1bW4uZWRpdGFibGUoZmllbGRWYWx1ZSxkYXRhLHIsaSk6Y29sdW1uLmVkaXRhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD17Y29sdW1uLmZvcm1hdD9mb3JtYXQ6ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdXJUb1NhdmU9e3RoaXMucHJvcHMuY2VsbEVkaXQuYmx1clRvU2F2ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleD17cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleD17aX0+XG4gICAgICAgICAgICAgICAge2ZpZWxkVmFsdWV9XG4gICAgICAgICAgICAgIDwvVGFibGVFZGl0Q29sdW1uPlxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgLy9hZGQgYnkgYmx1ZXNwcmluZyBmb3IgY2xhc3NOYW1lIGN1c3RvbWl6ZVxuICAgICAgICAgIHZhciB0ZENsYXNzTmFtZT1pc0Z1bihjb2x1bW4uY2xhc3NOYW1lKT9jb2x1bW4uY2xhc3NOYW1lKGZpZWxkVmFsdWUsZGF0YSxyLGkpOmNvbHVtbi5jbGFzc05hbWU7XG5cbiAgICAgICAgICBpZih0eXBlb2YgY29sdW1uLmZvcm1hdCAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgICAgICAgICB2YXIgZm9ybWF0dGVkVmFsdWUgPSBjb2x1bW4uZm9ybWF0KGZpZWxkVmFsdWUsIGRhdGEpO1xuICAgICAgICAgICAgaWYgKCFSZWFjdC5pc1ZhbGlkRWxlbWVudChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSA8ZGl2IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiBmb3JtYXR0ZWRWYWx1ZX19PjwvZGl2PjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgPFRhYmxlQ29sdW1uIGRhdGFBbGlnbj17Y29sdW1uLmFsaWdufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0ZENsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxFZGl0PXt0aGlzLnByb3BzLmNlbGxFZGl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FZGl0PXt0aGlzLmhhbmRsZUVkaXRDZWxsLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17Y29sdW1uLndpZHRofT5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0dGVkVmFsdWV9XG4gICAgICAgICAgICAgIDwvVGFibGVDb2x1bW4+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSBlbHNle1xuICAgICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICA8VGFibGVDb2x1bW4gZGF0YUFsaWduPXtjb2x1bW4uYWxpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3RkQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbEVkaXQ9e3RoaXMucHJvcHMuY2VsbEVkaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49e2NvbHVtbi5oaWRkZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvbkVkaXQ9e3RoaXMuaGFuZGxlRWRpdENlbGwuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtjb2x1bW4ud2lkdGh9PlxuICAgICAgICAgICAgICAgIHtmaWVsZFZhbHVlfVxuICAgICAgICAgICAgICA8L1RhYmxlQ29sdW1uPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgdGhpcyk7XG4gICAgICB2YXIgc2VsZWN0ZWQgPSB0aGlzLnByb3BzLnNlbGVjdGVkUm93S2V5cy5pbmRleE9mKGRhdGFbdGhpcy5wcm9wcy5rZXlGaWVsZF0pICE9IC0xO1xuICAgICAgdmFyIHNlbGVjdFJvd0NvbHVtbiA9IGlzU2VsZWN0Um93RGVmaW5lZCAmJiAhdGhpcy5wcm9wcy5zZWxlY3RSb3cuaGlkZVNlbGVjdENvbHVtbj9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyU2VsZWN0Um93Q29sdW1uKHNlbGVjdGVkKTpudWxsO1xuICAgICAgLy9hZGQgYnkgYmx1ZXNwcmluZyBmb3IgY2xhc3NOYW1lIGN1c3RvbWl6ZVxuICAgICAgdmFyIHRyQ2xhc3NOYW1lPWlzRnVuKHRoaXMucHJvcHMudHJDbGFzc05hbWUpP3RoaXMucHJvcHMudHJDbGFzc05hbWUoZGF0YSxyKTp0aGlzLnByb3BzLnRyQ2xhc3NOYW1lO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRhYmxlUm93IGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfSBrZXk9e3J9IGNsYXNzTmFtZT17dHJDbGFzc05hbWV9XG4gICAgICAgICAgc2VsZWN0Um93PXtpc1NlbGVjdFJvd0RlZmluZWQ/dGhpcy5wcm9wcy5zZWxlY3RSb3c6dW5kZWZpbmVkfVxuICAgICAgICAgIGVuYWJsZUNlbGxFZGl0PXt0aGlzLnByb3BzLmNlbGxFZGl0Lm1vZGUgIT09IENvbnN0LkNFTExfRURJVF9OT05FfVxuICAgICAgICAgIG9uUm93Q2xpY2s9e3RoaXMuaGFuZGxlUm93Q2xpY2suYmluZCh0aGlzKX1cbiAgICAgICAgICBvblNlbGVjdFJvdz17dGhpcy5oYW5kbGVTZWxlY3RSb3cuYmluZCh0aGlzKX0+XG4gICAgICAgICAge3NlbGVjdFJvd0NvbHVtbn1cbiAgICAgICAgICB7dGFibGVDb2x1bW5zfVxuICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgKVxuICAgIH0sIHRoaXMpO1xuXG4gICAgaWYodGFibGVSb3dzLmxlbmd0aCA9PT0gMCl7XG4gICAgICB0YWJsZVJvd3MucHVzaChcbiAgICAgIDxUYWJsZVJvdyBrZXk9XCIjI3RhYmxlLWVtcHR5IyNcIj5cbiAgICAgICAgPHRkIGNvbFNwYW49e3RoaXMucHJvcHMuY29sdW1ucy5sZW5ndGgrKGlzU2VsZWN0Um93RGVmaW5lZD8xOjApfVxuICAgICAgICAgICAgc3R5bGU9e3sgdGV4dEFsaWduOiBcImNlbnRlclwiIH19PlxuICAgICAgICAgICAgVGhlcmUgaXMgbm8gZGF0YSB0byBkaXNwbGF5XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L1RhYmxlUm93Pik7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG5cbiAgICB2YXIgaGVpZ2h0ID0gdGhpcy5jYWxjdWxhdGVDb250YWluZXJIZWlnaHQoKS50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuKFxuICAgICAgPGRpdiByZWY9XCJjb250YWluZXJcIiBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9IHN0eWxlPXt7aGVpZ2h0OiBoZWlnaHR9fT5cbiAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT17dGFibGVDbGFzc2VzfT5cbiAgICAgICAgICB7dGFibGVIZWFkZXJ9XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAge3RhYmxlUm93c31cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyVGFibGVIZWFkZXIoaXNTZWxlY3RSb3dEZWZpbmVkKXtcbiAgICB2YXIgc2VsZWN0Um93SGVhZGVyID0gbnVsbDtcblxuICAgIGlmKGlzU2VsZWN0Um93RGVmaW5lZCl7XG4gICAgICBsZXQgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOjM1LFxuICAgICAgICBtaW5XaWR0aDozNVxuICAgICAgfVxuICAgICAgc2VsZWN0Um93SGVhZGVyID0gdGhpcy5wcm9wcy5zZWxlY3RSb3cuaGlkZVNlbGVjdENvbHVtbj9udWxsOig8dGggc3R5bGU9e3N0eWxlfSBrZXk9ey0xfT48L3RoPik7XG4gICAgfVxuICAgIHZhciB0aGVhZGVyID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcChmdW5jdGlvbihjb2x1bW4sIGkpe1xuICAgICAgbGV0IHN0eWxlPXtcbiAgICAgICAgZGlzcGxheTogY29sdW1uLmhpZGRlbj9cIm5vbmVcIjpudWxsLFxuICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxuICAgICAgICBtaW5XaWR0aDogY29sdW1uLndpZHRoXG4gICAgICAgIC8qKiBhZGQgbWluLXdkdGggdG8gZml4IHVzZXIgYXNzaWduIGNvbHVtbiB3aWR0aCBub3QgZXEgb2Zmc2V0V2lkdGggaW4gbGFyZ2UgY29sdW1uIHRhYmxlICoqL1xuICAgICAgfTtcbiAgICAgIGxldCBzb3J0Q2FlcnQgPSBjb2x1bW4uc29ydD8oVXRpbC5yZW5kZXJSZWFjdFNvcnRDYXJldChDb25zdC5TT1JUX0RFU0MpKTpudWxsO1xuICAgICAgcmV0dXJuICg8dGggc3R5bGU9e3N0eWxlfSBrZXk9e2l9IGNsYXNzTmFtZT17Y29sdW1uLmNsYXNzTmFtZX0+e2NvbHVtbi50ZXh0fXtzb3J0Q2FlcnR9PC90aD4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuKFxuICAgICAgPHRoZWFkIHJlZj1cImhlYWRlclwiPlxuICAgICAgICA8dHI+e3NlbGVjdFJvd0hlYWRlcn17dGhlYWRlcn08L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICApXG4gIH1cblxuICBoYW5kbGVSb3dDbGljayhyb3dJbmRleCl7XG4gICAgdmFyIGtleSwgc2VsZWN0ZWRSb3c7XG4gICAgdGhpcy5wcm9wcy5kYXRhLmZvckVhY2goZnVuY3Rpb24ocm93LCBpKXtcbiAgICAgIGlmKGkgPT0gcm93SW5kZXgtMSl7XG4gICAgICAgIGtleSA9IHJvd1t0aGlzLnByb3BzLmtleUZpZWxkXTtcbiAgICAgICAgc2VsZWN0ZWRSb3cgPSByb3c7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5wcm9wcy5vblJvd0NsaWNrKHNlbGVjdGVkUm93KTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFJvdyhyb3dJbmRleCwgaXNTZWxlY3RlZCl7XG4gICAgdmFyIGtleSwgc2VsZWN0ZWRSb3c7XG4gICAgdGhpcy5wcm9wcy5kYXRhLmZvckVhY2goZnVuY3Rpb24ocm93LCBpKXtcbiAgICAgIGlmKGkgPT0gcm93SW5kZXgtMSl7XG4gICAgICAgIGtleSA9IHJvd1t0aGlzLnByb3BzLmtleUZpZWxkXTtcbiAgICAgICAgc2VsZWN0ZWRSb3cgPSByb3c7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5wcm9wcy5vblNlbGVjdFJvdyhzZWxlY3RlZFJvdywgaXNTZWxlY3RlZCk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3RSb3dDb2x1bUNoYW5nZShlKXtcbiAgICBpZighdGhpcy5wcm9wcy5zZWxlY3RSb3cuY2xpY2tUb1NlbGVjdCB8fCAhdGhpcy5wcm9wcy5zZWxlY3RSb3cuY2xpY2tUb1NlbGVjdEFuZEVkaXRDZWxsKXtcbiAgICAgIHRoaXMuaGFuZGxlU2VsZWN0Um93KFxuICAgICAgICBlLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnJvd0luZGV4LCBlLmN1cnJlbnRUYXJnZXQuY2hlY2tlZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRWRpdENlbGwocm93SW5kZXgsIGNvbHVtbkluZGV4KXtcbiAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xuICAgIGlmKHRoaXMuX2lzU2VsZWN0Um93RGVmaW5lZCgpKXtcbiAgICAgIGNvbHVtbkluZGV4LS07XG4gICAgICBpZih0aGlzLnByb3BzLnNlbGVjdFJvdy5oaWRlU2VsZWN0Q29sdW1uKVxuICAgICAgICBjb2x1bW5JbmRleCsrO1xuICAgIH1cbiAgICByb3dJbmRleC0tO1xuICAgIHZhciBzdGF0ZU9iaiA9IHtcbiAgICAgIGN1cnJFZGl0Q2VsbDoge1xuICAgICAgICByaWQ6IHJvd0luZGV4LFxuICAgICAgICBjaWQ6IGNvbHVtbkluZGV4XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmKHRoaXMucHJvcHMuc2VsZWN0Um93LmNsaWNrVG9TZWxlY3RBbmRFZGl0Q2VsbCl7XG4gICAgICAvL2lmIGVkaXQgY2VsbCwgdHJpZ2dlciByb3cgc2VsZWN0aW9ucyBhbHNvXG4gICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLnByb3BzLnNlbGVjdGVkUm93S2V5cy5pbmRleE9mKHRoaXMucHJvcHMuZGF0YVtyb3dJbmRleF1bdGhpcy5wcm9wcy5rZXlGaWVsZF0pICE9IC0xO1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3RSb3cocm93SW5kZXgrMSwgIXNlbGVjdGVkKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZU9iaik7XG4gIH1cblxuICBjYW5jZWxFZGl0KCl7XG4gICAgdmFyIGN1cnJFZGl0Q2VsbD10aGlzLnN0YXRlLmN1cnJFZGl0Q2VsbDtcbiAgICBpZihjdXJyRWRpdENlbGwpe1xuICAgICAgdGhpcy5oYW5kbGVDb21wbGV0ZUVkaXRDZWxsKG51bGwsY3VyckVkaXRDZWxsLnJpZCxjdXJyRWRpdENlbGwuY2lkKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDb21wbGV0ZUVkaXRDZWxsKG5ld1ZhbCwgcm93SW5kZXgsIGNvbHVtbkluZGV4KXtcbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyRWRpdENlbGw6IG51bGx9KTtcbiAgICBpZihudWxsICE9IG5ld1ZhbClcbiAgICAgIHRoaXMucHJvcHMuY2VsbEVkaXQuX19vbkNvbXBsZXRlRWRpdF9fKG5ld1ZhbCwgcm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIHJlbmRlclNlbGVjdFJvd0NvbHVtbihzZWxlY3RlZCl7XG4gICAgaWYodGhpcy5wcm9wcy5zZWxlY3RSb3cubW9kZSA9PSBDb25zdC5ST1dfU0VMRUNUX1NJTkdMRSkge1xuICAgICAgcmV0dXJuICg8VGFibGVDb2x1bW4+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzZWxlY3Rpb25cIiBjaGVja2VkPXtzZWxlY3RlZH0gb25DaGFuZ2U9e3RoaXMuaGFuZGxlU2VsZWN0Um93Q29sdW1DaGFuZ2UuYmluZCh0aGlzKX0vPjwvVGFibGVDb2x1bW4+KTtcbiAgICB9ZWxzZSB7XG4gICAgICByZXR1cm4gKDxUYWJsZUNvbHVtbiA+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNoZWNrZWQ9e3NlbGVjdGVkfSBvbkNoYW5nZT17dGhpcy5oYW5kbGVTZWxlY3RSb3dDb2x1bUNoYW5nZS5iaW5kKHRoaXMpfS8+PC9UYWJsZUNvbHVtbj4pO1xuICAgIH1cbiAgfVxuXG4gIGdldEJvZHlIZWFkZXJEb21Qcm9wKCl7XG4gICAgdmFyIGhlYWRlcnMgPSB0aGlzLnJlZnMuaGVhZGVyLmNoaWxkTm9kZXNbMF0uY2hpbGROb2RlcztcbiAgICB2YXIgaGVhZGVyRG9tUHJvcHMgPSBbXTtcbiAgICBmb3IobGV0IGk9MDtpPGhlYWRlcnMubGVuZ3RoO2krKyl7XG4gICAgICBoZWFkZXJEb21Qcm9wcy5wdXNoKHtcbiAgICAgICAgd2lkdGg6aGVhZGVyc1tpXS5vZmZzZXRXaWR0aFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJEb21Qcm9wcztcbiAgfVxuXG4gIGhhcmRGaXhIZWFkZXJXaWR0aCgpe1xuICAgIHZhciBoZWFkZXJzID0gdGhpcy5yZWZzLmhlYWRlci5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXM7XG4gICAgZm9yKGxldCBpPTA7aTxoZWFkZXJzLmxlbmd0aDtpKyspe1xuICAgICAgaGVhZGVyc1tpXS5zdHlsZS53aWR0aCA9IGhlYWRlcnNbaV0ub2Zmc2V0V2lkdGggKyBcInB4XCI7XG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KCl7XG4gICAgaWYodGhpcy5wcm9wcy5oZWlnaHQgPT0gXCIxMDAlXCIpIHJldHVybiB0aGlzLnByb3BzLmhlaWdodDtcbiAgICBlbHNle1xuICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMucHJvcHMuaGVpZ2h0KSAtIDQyO1xuICAgIH1cbiAgfVxuXG4gIF9pc1NlbGVjdFJvd0RlZmluZWQoKXtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWxlY3RSb3cubW9kZSA9PSBDb25zdC5ST1dfU0VMRUNUX1NJTkdMRSB8fFxuICAgICAgICAgIHRoaXMucHJvcHMuc2VsZWN0Um93Lm1vZGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9NVUxUSTtcbiAgfVxufVxuVGFibGVCb2R5LnByb3BUeXBlcyA9IHtcbiAgaGVpZ2h0OiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBkYXRhOiBSZWFjdC5Qcm9wVHlwZXMuYXJyYXksXG4gIGNvbHVtbnM6IFJlYWN0LlByb3BUeXBlcy5hcnJheSxcbiAgc3RyaXBlZDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGJvcmRlcmVkOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgaG92ZXI6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjb25kZW5zZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBrZXlGaWVsZDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgc2VsZWN0ZWRSb3dLZXlzOiBSZWFjdC5Qcm9wVHlwZXMuYXJyYXksXG4gIG9uUm93Q2xpY2s6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFJvdzogUmVhY3QuUHJvcFR5cGVzLmZ1bmNcbn07XG5leHBvcnQgZGVmYXVsdCBUYWJsZUJvZHk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuXG5jbGFzcyBUYWJsZUNvbHVtbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudHtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuXHRcdHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZUNlbGxFZGl0KGUpe1xuICAgIGlmKHRoaXMucHJvcHMuY2VsbEVkaXQubW9kZSA9PSBDb25zdC5DRUxMX0VESVRfREJDTElDSyl7XG4gICAgICBpZihkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KSB7XG4gICAgICAgIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpO1xuICAgICAgfSBlbHNlIGlmKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcm9wcy5vbkVkaXQoXG4gICAgICBlLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5yb3dJbmRleCxcbiAgICAgIGUuY3VycmVudFRhcmdldC5jZWxsSW5kZXgpO1xuICB9XG5cbiAgcmVuZGVyKCl7XG4gICAgdmFyIHRkU3R5bGUgPSB7XG4gICAgICB0ZXh0QWxpZ246IHRoaXMucHJvcHMuZGF0YUFsaWduLFxuICAgICAgZGlzcGxheTogdGhpcy5wcm9wcy5oaWRkZW4/XCJub25lXCI6bnVsbFxuICAgIH07XG5cbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIGlmKHRoaXMucHJvcHMuY2VsbEVkaXQpe1xuICAgICAgaWYodGhpcy5wcm9wcy5jZWxsRWRpdC5tb2RlID09IENvbnN0LkNFTExfRURJVF9DTElDSyl7XG4gICAgICAgIG9wdHMub25DbGljayA9IHRoaXMuaGFuZGxlQ2VsbEVkaXQuYmluZCh0aGlzKTtcbiAgICAgIH1lbHNlIGlmKHRoaXMucHJvcHMuY2VsbEVkaXQubW9kZSA9PSBDb25zdC5DRUxMX0VESVRfREJDTElDSyl7XG4gICAgICAgIG9wdHMub25Eb3VibGVDbGljayA9IHRoaXMuaGFuZGxlQ2VsbEVkaXQuYmluZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDx0ZCBzdHlsZT17dGRTdHlsZX0gY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZX0gey4uLm9wdHN9PlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvdGQ+XG4gICAgKVxuICB9XG59XG5UYWJsZUNvbHVtbi5wcm9wVHlwZXMgPSB7XG4gIGRhdGFBbGlnbjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZGVuOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgY2xhc3NOYW1lOlJlYWN0LlByb3BUeXBlcy5zdHJpbmdcbn07XG5cblRhYmxlQ29sdW1uLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGF0YUFsaWduOiBcImxlZnRcIixcbiAgaGlkZGVuOiBmYWxzZSxcbiAgY2xhc3NOYW1lOlwiXCJcbn1cbmV4cG9ydCBkZWZhdWx0IFRhYmxlQ29sdW1uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb25zdCBmcm9tICcuL0NvbnN0JztcbmltcG9ydCBFZGl0b3IgZnJvbSAnLi9FZGl0b3InXG5pbXBvcnQgTm90aWZpZXIgZnJvbSAnLi9Ob3RpZmljYXRpb24uanMnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5jbGFzcyBUYWJsZUVkaXRDb2x1bW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnR7XG4gICAgY29uc3RydWN0b3IocHJvcHMpe1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMudGltZW91dGVDbGVhcj0wO1xuICAgICAgICB0aGlzLnN0YXRlPXtcbiAgICAgICAgICAgIHNoYWtlRWRpdG9yOmZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gIGhhbmRsZUtleVByZXNzKGUpe1xuICAgIGlmIChlLmtleUNvZGUgPT0gMTMpIHsgLy9QcmVzc2VkIEVOVEVSXG4gICAgICBsZXQgdmFsdWUgPSBlLmN1cnJlbnRUYXJnZXQudHlwZSA9PSAnY2hlY2tib3gnP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRDaGVja0JveFZhbHVlKGUpOmUuY3VycmVudFRhcmdldC52YWx1ZTtcblxuICAgICAgaWYoIXRoaXMudmFsaWRhdG9yKHZhbHVlKSl7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5jb21wbGV0ZUVkaXQoXG4gICAgICAgIHZhbHVlLCB0aGlzLnByb3BzLnJvd0luZGV4LCB0aGlzLnByb3BzLmNvbEluZGV4KTtcbiAgICB9ZWxzZSBpZihlLmtleUNvZGUgPT0gMjcpe1xuICAgICAgdGhpcy5wcm9wcy5jb21wbGV0ZUVkaXQoXG4gICAgICAgIG51bGwsIHRoaXMucHJvcHMucm93SW5kZXgsIHRoaXMucHJvcHMuY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUJsdXIoZSl7XG4gICAgaWYodGhpcy5wcm9wcy5ibHVyVG9TYXZlKXtcbiAgICAgIGxldCB2YWx1ZSA9IGUuY3VycmVudFRhcmdldC50eXBlID09ICdjaGVja2JveCc/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldENoZWNrQm94VmFsdWUoZSk6ZS5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgaWYoIXRoaXMudmFsaWRhdG9yKHZhbHVlKSl7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5jb21wbGV0ZUVkaXQoXG4gICAgICAgICAgdmFsdWUsIHRoaXMucHJvcHMucm93SW5kZXgsIHRoaXMucHJvcHMuY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuICB2YWxpZGF0b3IodmFsdWUpe1xuICAgICAgdmFyIHRzPXRoaXM7XG4gICAgICBpZih0cy5wcm9wcy5lZGl0YWJsZS52YWxpZGF0b3Ipe1xuICAgICAgICAgIHZhciB2YWxpZD10cy5wcm9wcy5lZGl0YWJsZS52YWxpZGF0b3IodmFsdWUpO1xuICAgICAgICAgIGlmKHZhbGlkIT09dHJ1ZSl7XG4gICAgICAgICAgICAgIHRzLnJlZnMubm90aWZpZXIubm90aWNlKCdlcnJvcicsdmFsaWQsXCJQcmVzc2VkIEVTQyBjYW4gY2FuY2VsXCIpO1xuICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0cy5yZWZzLmlucHV0UmVmO1xuICAgICAgICAgICAgICAvL2FuaW1hdGUgaW5wdXRcbiAgICAgICAgICAgICAgdHMuY2xlYXJUaW1lb3V0KCk7XG4gICAgICAgICAgICAgIHRzLnNldFN0YXRlKHtzaGFrZUVkaXRvcjp0cnVlfSk7XG4gICAgICAgICAgICAgIHRzLnRpbWVvdXRlQ2xlYXI9c2V0VGltZW91dChmdW5jdGlvbigpe3RzLnNldFN0YXRlKHtzaGFrZUVkaXRvcjpmYWxzZX0pO30sMzAwKTtcbiAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gIH1cbiAgY2xlYXJUaW1lb3V0KCl7XG4gICAgICBpZih0aGlzLnRpbWVvdXRlQ2xlYXIhPTApe1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRlQ2xlYXIpO1xuICAgICAgICAgIHRoaXMudGltZW91dGVDbGVhcj0wO1xuICAgICAgfVxuICB9XG4gIGNvbXBvbmVudERpZE1vdW50KCl7XG4gICAgICB2YXIgaW5wdXQgPSB0aGlzLnJlZnMuaW5wdXRSZWY7XG4gICAgICAvLyBpbnB1dC52YWx1ZSA9IHRoaXMucHJvcHMuY2hpbGRyZW58fCcnO1xuICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgZWRpdGFibGU9dGhpcy5wcm9wcy5lZGl0YWJsZSxcbiAgICAgICAgZm9ybWF0PXRoaXMucHJvcHMuZm9ybWF0LFxuICAgICAgICBhdHRyPXtcbiAgICAgICAgICAgIHJlZjpcImlucHV0UmVmXCIsXG4gICAgICAgICAgICBvbktleURvd246dGhpcy5oYW5kbGVLZXlQcmVzcy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgb25CbHVyOnRoaXMuaGFuZGxlQmx1ci5iaW5kKHRoaXMpXG4gICAgICAgIH07XG4gICAgICAgIC8vcHV0IHBsYWNlaG9sZGVyIGlmIGV4aXN0XG4gICAgICAgIGVkaXRhYmxlLnBsYWNlaG9sZGVyJiYoYXR0ci5wbGFjZWhvbGRlcj1lZGl0YWJsZS5wbGFjZWhvbGRlcik7XG5cbiAgICB2YXIgZWRpdG9yQ2xhc3M9Y2xhc3NTZXQoeydhbmltYXRlZCc6dGhpcy5zdGF0ZS5zaGFrZUVkaXRvciwnc2hha2UnOnRoaXMuc3RhdGUuc2hha2VFZGl0b3J9KTtcbiAgICByZXR1cm4oXG4gICAgICAgIDx0ZCByZWY9XCJ0ZFwiIHN0eWxlPXt7cG9zaXRpb246J3JlbGF0aXZlJ319PlxuICAgICAgICAgICAge0VkaXRvcihlZGl0YWJsZSxhdHRyLGZvcm1hdCxlZGl0b3JDbGFzcyx0aGlzLnByb3BzLmNoaWxkcmVufHwnJyl9XG4gICAgICAgICAgICA8Tm90aWZpZXIgcmVmPVwibm90aWZpZXJcIj48L05vdGlmaWVyPlxuICAgICAgICA8L3RkPlxuICAgIClcbiAgfVxuXG4gIF9nZXRDaGVja0JveFZhbHVlKGUpe1xuICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgIGxldCB2YWx1ZXMgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWUuc3BsaXQoJzonKTtcbiAgICB2YWx1ZSA9IGUuY3VycmVudFRhcmdldC5jaGVja2VkP3ZhbHVlc1swXTp2YWx1ZXNbMV07XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbn1cblRhYmxlRWRpdENvbHVtbi5wcm9wVHlwZXMgPSB7XG4gIGNvbXBsZXRlRWRpdDogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIHJvd0luZGV4OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICBjb2xJbmRleDogUmVhY3QuUHJvcFR5cGVzLm51bWJlcixcbiAgYmx1clRvU2F2ZTogUmVhY3QuUHJvcFR5cGVzLmJvb2xcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVFZGl0Q29sdW1uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb25zdCBmcm9tICcuL0NvbnN0JztcbmltcG9ydCBjbGFzc1NldCBmcm9tICdjbGFzc25hbWVzJztcblxuY2xhc3MgVGFibGVGaWx0ZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnR7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5maWx0ZXJPYmogPSB7fTtcbiAgfVxuXG4gIGhhbmRsZUtleVVwKGUpe1xuICAgIGlmKGUuY3VycmVudFRhcmdldC52YWx1ZS50cmltKCkgPT09IFwiXCIpXG4gICAgICBkZWxldGUgdGhpcy5maWx0ZXJPYmpbZS5jdXJyZW50VGFyZ2V0Lm5hbWVdO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZmlsdGVyT2JqW2UuY3VycmVudFRhcmdldC5uYW1lXSA9IGUuY3VycmVudFRhcmdldC52YWx1ZTtcblxuICAgIHRoaXMucHJvcHMub25GaWx0ZXIodGhpcy5maWx0ZXJPYmopO1xuICB9XG5cbiAgcmVuZGVyKCl7XG4gICAgdmFyIHRhYmxlQ2xhc3NlcyA9IGNsYXNzU2V0KFwidGFibGVcIiwge1xuICAgICAgJ3RhYmxlLXN0cmlwZWQnOiB0aGlzLnByb3BzLnN0cmlwZWQsXG4gICAgICAndGFibGUtY29uZGVuc2VkJzogdGhpcy5wcm9wcy5jb25kZW5zZWRcbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0Um93SGVhZGVyID0gbnVsbDtcblxuICAgIGlmKHRoaXMucHJvcHMucm93U2VsZWN0VHlwZSA9PSBDb25zdC5ST1dfU0VMRUNUX1NJTkdMRSB8fFxuICAgICAgICB0aGlzLnByb3BzLnJvd1NlbGVjdFR5cGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9NVUxUSSl7XG4gICAgICBsZXQgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOjM1LFxuICAgICAgICBwYWRkaW5nTGVmdDogMCxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiAwXG4gICAgICB9XG4gICAgICBzZWxlY3RSb3dIZWFkZXIgPSAoPHRoIHN0eWxlPXtzdHlsZX0ga2V5PXstMX0+RmlsdGVyPC90aD4pO1xuICAgIH1cbiAgICB2YXIgZmlsdGVyRmllbGQgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKGZ1bmN0aW9uKGNvbHVtbil7XG4gICAgICB2YXIgdGhTdHlsZSA9IHtcbiAgICAgICAgZGlzcGxheTogY29sdW1uLmhpZGRlbj9cIm5vbmVcIjpudWxsLFxuICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoXG4gICAgICB9O1xuICAgICAgcmV0dXJuKFxuICAgICAgICA8dGgga2V5PXtjb2x1bW4ubmFtZX0gc3R5bGU9e3RoU3R5bGV9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGgtaW5uZXIgdGFibGUtaGVhZGVyLWNvbHVtblwiPlxuICAgICAgICAgICAgPGlucHV0IHNpemU9XCIxMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9e2NvbHVtbi5uYW1lfSBuYW1lPXtjb2x1bW4ubmFtZX0gb25LZXlVcD17dGhpcy5oYW5kbGVLZXlVcC5iaW5kKHRoaXMpfS8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG4gICAgICApXG4gICAgfSwgdGhpcyk7XG4gICAgcmV0dXJuKFxuICAgICAgPHRhYmxlIGNsYXNzTmFtZT17dGFibGVDbGFzc2VzfSBzdHlsZT17e21hcmdpblRvcDo1fX0+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHIgc3R5bGU9e3tib3JkZXJCb3R0b21TdHlsZTogJ2hpZGRlbid9fT5cbiAgICAgICAgICAgIHtzZWxlY3RSb3dIZWFkZXJ9e2ZpbHRlckZpZWxkfVxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICA8L3RhYmxlPlxuICAgIClcbiAgfVxufVxuVGFibGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBjb2x1bW5zOiBSZWFjdC5Qcm9wVHlwZXMuYXJyYXksXG4gIHJvd1NlbGVjdFR5cGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIG9uRmlsdGVyOiBSZWFjdC5Qcm9wVHlwZXMuZnVuY1xufTtcbmV4cG9ydCBkZWZhdWx0IFRhYmxlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb25zdCBmcm9tICcuL0NvbnN0JztcbmltcG9ydCBVdGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VsZWN0Um93SGVhZGVyQ29sdW1uIGZyb20gJy4vU2VsZWN0Um93SGVhZGVyQ29sdW1uJztcblxuY2xhc3MgVGFibGVIZWFkZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnR7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBjbGVhclNvcnRDYXJldChvcmRlciwgc29ydEZpZWxkKXtcbiAgICB2YXIgcm93ID0gdGhpcy5yZWZzLmhlYWRlcjtcbiAgICBmb3IodmFyIGk9MDtpPHJvdy5jaGlsZEVsZW1lbnRDb3VudDtpKyspe1xuICAgICAgdmFyIGNvbHVtbiA9IHJvdy5jaGlsZE5vZGVzW2ldLmNoaWxkTm9kZXNbMF07XG4gICAgICBpZihjb2x1bW4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm9yZGVyXCIpLmxlbmd0aCA+IDApe1xuICAgICAgICBjb2x1bW4ucmVtb3ZlQ2hpbGQoY29sdW1uLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJvcmRlclwiKVswXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvcHMub25Tb3J0KG9yZGVyLCBzb3J0RmllbGQpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKXtcbiAgICAvL2RlZmF1bHQgc29ydGluZ1xuICAgIGlmKHRoaXMucHJvcHMuc29ydE5hbWUpe1xuICAgICAgdGhpcy5jbGVhclNvcnRDYXJldCh0aGlzLnByb3BzLnNvcnRPcmRlciwgdGhpcy5wcm9wcy5zb3J0TmFtZSk7XG4gICAgICB2YXIgcm93ID0gdGhpcy5yZWZzLmhlYWRlcjtcbiAgICAgIGZvcih2YXIgaT0wO2k8cm93LmNoaWxkRWxlbWVudENvdW50O2krKyl7XG4gICAgICAgIHZhciBjb2x1bW4gPSByb3cuY2hpbGROb2Rlc1tpXS5jaGlsZE5vZGVzWzBdO1xuICAgICAgICBpZihjb2x1bW4uZ2V0QXR0cmlidXRlKCdkYXRhLWZpZWxkJykgPT09IHRoaXMucHJvcHMuc29ydE5hbWUpe1xuICAgICAgICAgIGNvbHVtbi5hcHBlbmRDaGlsZChVdGlsLnJlbmRlclNvcnRDYXJldCh0aGlzLnByb3BzLnNvcnRPcmRlcikpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCl7XG4gICAgdmFyIGNvbnRhaW5lckNsYXNzZXMgPSBjbGFzc1NldChcInRhYmxlLWhlYWRlclwiKTtcbiAgICB2YXIgdGFibGVDbGFzc2VzID0gY2xhc3NTZXQoXCJ0YWJsZVwiLCBcInRhYmxlLWhvdmVyXCIsIHtcbiAgICAgICAgXCJ0YWJsZS1ib3JkZXJlZFwiOiB0aGlzLnByb3BzLmJvcmRlcmVkLFxuICAgICAgICBcInRhYmxlLWNvbmRlbnNlZFwiOiB0aGlzLnByb3BzLmNvbmRlbnNlZFxuICAgIH0pO1xuICAgIHZhciBzZWxlY3RSb3dIZWFkZXJDb2wgPSB0aGlzLnByb3BzLmhpZGVTZWxlY3RDb2x1bW4/bnVsbDp0aGlzLnJlbmRlclNlbGVjdFJvd0hlYWRlcigpO1xuICAgIHRoaXMuX2F0dGFjaENsZWFyU29ydENhcmV0RnVuYygpO1xuXG4gICAgcmV0dXJuKFxuICAgICAgPGRpdiByZWY9XCJjb250YWluZXJcIiBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgICA8dGFibGUgY2xhc3NOYW1lPXt0YWJsZUNsYXNzZXN9PlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0ciByZWY9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAge3NlbGVjdFJvd0hlYWRlckNvbH1cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZW5kZXJTZWxlY3RSb3dIZWFkZXIoKXtcbiAgICBpZih0aGlzLnByb3BzLnJvd1NlbGVjdFR5cGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9TSU5HTEUpIHtcbiAgICAgIHJldHVybiAoPFNlbGVjdFJvd0hlYWRlckNvbHVtbj48L1NlbGVjdFJvd0hlYWRlckNvbHVtbj4pO1xuICAgIH1lbHNlIGlmKHRoaXMucHJvcHMucm93U2VsZWN0VHlwZSA9PSBDb25zdC5ST1dfU0VMRUNUX01VTFRJKXtcbiAgICAgIHJldHVybiAoPFNlbGVjdFJvd0hlYWRlckNvbHVtbj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgb25DaGFuZ2U9e3RoaXMucHJvcHMub25TZWxlY3RBbGxSb3d9Lz48L1NlbGVjdFJvd0hlYWRlckNvbHVtbj4pO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgX2F0dGFjaENsZWFyU29ydENhcmV0RnVuYygpe1xuICAgIGlmKEFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbikpe1xuICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnByb3BzLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xuICAgICAgICB0aGlzLnByb3BzLmNoaWxkcmVuW2ldID1cbiAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQodGhpcy5wcm9wcy5jaGlsZHJlbltpXSwge2tleTogaSwgY2xlYXJTb3J0Q2FyZXQ6IHRoaXMuY2xlYXJTb3J0Q2FyZXQuYmluZCh0aGlzKX0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3BzLmNoaWxkcmVuID1cbiAgICAgICAgUmVhY3QuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMuY2hpbGRyZW4sIHtrZXk6IDAsIGNsZWFyU29ydENhcmV0OiB0aGlzLmNsZWFyU29ydENhcmV0LmJpbmQodGhpcyl9KTtcbiAgICB9XG4gIH1cblxuICBmaXRIZWFkZXIoaGVhZGVyUHJvcHMsIGlzVmVydGljYWxTY3JvbGxCYXIpe1xuICAgIGlmKEFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbikpe1xuICAgICAgbGV0IHN0YXJ0UG9zaXRpb24gPSAodGhpcy5wcm9wcy5yb3dTZWxlY3RUeXBlID09IENvbnN0LlJPV19TRUxFQ1RfU0lOR0xFIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJvd1NlbGVjdFR5cGUgPT0gQ29uc3QuUk9XX1NFTEVDVF9NVUxUSSkgJiYgIXRoaXMucHJvcHMuaGlkZVNlbGVjdENvbHVtbiA/IDE6MDtcbiAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcbiAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlbltpXSA9XG4gICAgICAgICAgUmVhY3QuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMuY2hpbGRyZW5baV0sIHt3aWR0aDogaGVhZGVyUHJvcHNbaStzdGFydFBvc2l0aW9uXS53aWR0aCtcInB4XCJ9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlbiA9XG4gICAgICAgIFJlYWN0LmNsb25lRWxlbWVudCh0aGlzLnByb3BzLmNoaWxkcmVuLCB7d2lkdGg6IGhlYWRlclByb3BzWzBdLndpZHRoK1wicHhcIn0pO1xuICAgIH1cbiAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgaWYoaXNWZXJ0aWNhbFNjcm9sbEJhcilcbiAgICAgIHRoaXMucmVmcy5jb250YWluZXIuc3R5bGUubWFyZ2luUmlnaHQgPSBVdGlsLmdldFNjcm9sbEJhcldpZHRoKCkgKyBcInB4XCI7XG4gIH1cbn1cblRhYmxlSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgcm93U2VsZWN0VHlwZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Tb3J0OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RBbGxSb3c6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICBzb3J0TmFtZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgc29ydE9yZGVyOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlU2VsZWN0Q29sdW1uOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgYm9yZGVyZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjb25kZW5zZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sXG59O1xuXG5UYWJsZUhlYWRlci5kZWZhdWx0UHJvcHMgPSB7XG59O1xuZXhwb3J0IGRlZmF1bHQgVGFibGVIZWFkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJztcblxuY2xhc3MgVGFibGVIZWFkZXJDb2x1bW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnR7XG5cbiAgb3JkZXI6IENvbnN0LlNPUlRfREVTQ1xuXG4gIGhhbmRsZUNvbHVtbkNsaWNrKGUpe1xuICAgIGlmKCF0aGlzLnByb3BzLmRhdGFTb3J0KXJldHVybjtcbiAgICB2YXIgZG9tID0gdGhpcy5yZWZzLmlubmVyRGl2O1xuICAgIHRoaXMub3JkZXIgPSB0aGlzLm9yZGVyID09IENvbnN0LlNPUlRfREVTQz9Db25zdC5TT1JUX0FTQzpDb25zdC5TT1JUX0RFU0M7XG4gICAgdGhpcy5wcm9wcy5jbGVhclNvcnRDYXJldCh0aGlzLm9yZGVyLCB0aGlzLnByb3BzLmRhdGFGaWVsZCk7XG4gICAgZG9tLmFwcGVuZENoaWxkKFV0aWwucmVuZGVyU29ydENhcmV0KHRoaXMub3JkZXIpKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCl7XG4gICAgdGhpcy5yZWZzLmlubmVyRGl2LnNldEF0dHJpYnV0ZShcImRhdGEtZmllbGRcIiwgdGhpcy5wcm9wcy5kYXRhRmllbGQpO1xuICB9XG5cbiAgcmVuZGVyKCl7XG4gICAgdmFyIHRoU3R5bGUgPSB7XG4gICAgICB0ZXh0QWxpZ246IHRoaXMucHJvcHMuZGF0YUFsaWduLFxuICAgICAgZGlzcGxheTogdGhpcy5wcm9wcy5oaWRkZW4/XCJub25lXCI6bnVsbCxcbiAgICAgIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoXG4gICAgfTtcblxuICAgIHZhciBjbGFzc2VzID0gdGhpcy5wcm9wcy5jbGFzc05hbWUrXCIgXCIrKHRoaXMucHJvcHMuZGF0YVNvcnQ/XCJzb3J0LWNvbHVtblwiOlwiXCIpO1xuICAgIHJldHVybihcbiAgICAgIDx0aCBjbGFzc05hbWU9e2NsYXNzZXN9IHN0eWxlPXt0aFN0eWxlfT5cbiAgICAgICAgPGRpdiByZWY9XCJpbm5lckRpdlwiIGNsYXNzTmFtZT1cInRoLWlubmVyIHRhYmxlLWhlYWRlci1jb2x1bW5cIlxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ29sdW1uQ2xpY2suYmluZCh0aGlzKX0+e3RoaXMucHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gICAgICA8L3RoPlxuICAgIClcbiAgfVxufVxuVGFibGVIZWFkZXJDb2x1bW4ucHJvcFR5cGVzID0ge1xuICBkYXRhRmllbGQ6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIGRhdGFBbGlnbjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgZGF0YVNvcnQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjbGVhclNvcnRDYXJldDogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIGRhdGFGb3JtYXQ6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICBpc0tleTogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIGVkaXRhYmxlOiBSZWFjdC5Qcm9wVHlwZXMuYW55LFxuICBoaWRkZW46IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBjbGFzc05hbWU6UmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgd2lkdGg6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gIHNvcnRGdW5jOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgY29sdW1uQ2xhc3NOYW1lOiBSZWFjdC5Qcm9wVHlwZXMuYW55XG59O1xuXG5UYWJsZUhlYWRlckNvbHVtbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGRhdGFBbGlnbjogXCJsZWZ0XCIsXG4gIGRhdGFTb3J0OiBmYWxzZSxcbiAgZGF0YUZvcm1hdDogdW5kZWZpbmVkLFxuICBpc0tleTogZmFsc2UsXG4gIGVkaXRhYmxlOiB0cnVlLFxuICBjbGVhclNvcnRDYXJldDogdW5kZWZpbmVkLFxuICBoaWRkZW46IGZhbHNlLFxuICBjbGFzc05hbWU6IFwiXCIsXG4gIHdpZHRoOiBudWxsLFxuICBzb3J0RnVuYzogdW5kZWZpbmVkLFxuICBjb2x1bW5DbGFzc05hbWU6ICcnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZUhlYWRlckNvbHVtbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc3QgZnJvbSAnLi9Db25zdCc7XG5cbmNsYXNzIFRhYmxlUm93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXG4gIHJvd0NsaWNrKGUpe1xuICAgIGlmKGUudGFyZ2V0LnRhZ05hbWUgIT09IFwiSU5QVVRcIilcbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdFJvdyAmJlxuICAgICAgICB0aGlzLnByb3BzLnNlbGVjdFJvdy5jbGlja1RvU2VsZWN0KSB0aGlzLnByb3BzLm9uU2VsZWN0Um93KGUuY3VycmVudFRhcmdldC5yb3dJbmRleCwgIXRoaXMucHJvcHMuaXNTZWxlY3RlZCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vblJvd0NsaWNrKSB0aGlzLnByb3BzLm9uUm93Q2xpY2soZS5jdXJyZW50VGFyZ2V0LnJvd0luZGV4KTtcbiAgfVxuXG4gIHJlbmRlcigpe1xuXG4gICAgdmFyIHRyQ3NzPXtcbiAgICAgIHN0eWxlOntcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnByb3BzLmlzU2VsZWN0ZWQ/dGhpcy5wcm9wcy5zZWxlY3RSb3cuYmdDb2xvcjpudWxsXG4gICAgICB9LFxuICAgICAgY2xhc3NOYW1lOnRoaXMucHJvcHMuY2xhc3NOYW1lfHwnJ1xuICAgIH07XG5cbiAgICBpZih0aGlzLnByb3BzLnNlbGVjdFJvdyAmJiAhdGhpcy5wcm9wcy5lbmFibGVDZWxsRWRpdCAmJlxuICAgICAgKHRoaXMucHJvcHMuc2VsZWN0Um93LmNsaWNrVG9TZWxlY3QgfHwgdGhpcy5wcm9wcy5zZWxlY3RSb3cuY2xpY2tUb1NlbGVjdEFuZEVkaXRDZWxsKSB8fCB0aGlzLnByb3BzLm9uUm93Q2xpY2spe1xuICAgICAgcmV0dXJuKFxuICAgICAgICA8dHIgey4uLnRyQ3NzfSBvbkNsaWNrPXt0aGlzLnJvd0NsaWNrLmJpbmQodGhpcyl9Pnt0aGlzLnByb3BzLmNoaWxkcmVufTwvdHI+XG4gICAgICApXG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4oXG4gICAgICAgIDx0ciB7Li4udHJDc3N9Pnt0aGlzLnByb3BzLmNoaWxkcmVufTwvdHI+XG4gICAgICApXG4gICAgfVxuICB9XG59XG5UYWJsZVJvdy5wcm9wVHlwZXMgPSB7XG4gIGlzU2VsZWN0ZWQ6IFJlYWN0LlByb3BUeXBlcy5ib29sLFxuICBlbmFibGVDZWxsRWRpdDogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gIG9uUm93Q2xpY2s6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFJvdzogUmVhY3QuUHJvcFR5cGVzLmZ1bmNcbn07XG5UYWJsZVJvdy5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uUm93Q2xpY2s6IHVuZGVmaW5lZFxufVxuZXhwb3J0IGRlZmF1bHQgVGFibGVSb3c7XG4iLCJpbXBvcnQgZmlsZXNhdmVyIGZyb20gJy4vZmlsZXNhdmVyJztcbnZhciBzYXZlQXMgPSBmaWxlc2F2ZXIuc2F2ZUFzO1xuXG5mdW5jdGlvbiB0b1N0cmluZyhkYXRhLCBrZXlzKSB7XG4gIHZhciBkYXRhU3RyaW5nID0gXCJcIjtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZGF0YVN0cmluZztcbiAgXG4gIGRhdGFTdHJpbmcgKz0ga2V5cy5qb2luKCdcXHQnKSArICdcXG4nXG5cbiAgZGF0YS5tYXAoZnVuY3Rpb24ocm93KSB7XG4gICAga2V5cy5tYXAoZnVuY3Rpb24oY29sKSB7XG4gICAgICB2YXIgY2VsbCA9IHJvd1tjb2xdID8gcm93W2NvbF0gOiBcIlwiO1xuICAgICAgZGF0YVN0cmluZyArPSByb3dbY29sXSArICdcXHQnO1xuICAgIH0pO1xuXG4gICAgZGF0YVN0cmluZyArPSAnXFxuJztcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGFTdHJpbmc7XG59O1xuXG52YXIgZXhwb3J0Q1NWID0gZnVuY3Rpb24oZGF0YSwga2V5cywgZmlsZW5hbWUpIHtcbiAgdmFyIGRhdGFTdHJpbmcgPSB0b1N0cmluZyhkYXRhLCBrZXlzKTtcbiAgc2F2ZUFzKCBuZXcgQmxvYihbZGF0YVN0cmluZ10sIHt0eXBlOiBcInRleHQvcGxhaW47Y2hhcnNldD11dGYtOFwifSksIGZpbGVuYW1lIHx8ICdzcHJlYWRzaGVldC5jc3YnICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHBvcnRDU1Y7XG4iLCIvKiBGaWxlU2F2ZXIuanNcbiAqIEEgc2F2ZUFzKCkgRmlsZVNhdmVyIGltcGxlbWVudGF0aW9uLlxuICogMS4xLjIwMTUxMDAzXG4gKlxuICogQnkgRWxpIEdyZXksIGh0dHA6Ly9lbGlncmV5LmNvbVxuICogTGljZW5zZTogTUlUXG4gKiAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZWxpZ3JleS9GaWxlU2F2ZXIuanMvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZFxuICovXG5cbi8qZ2xvYmFsIHNlbGYgKi9cbi8qanNsaW50IGJpdHdpc2U6IHRydWUsIGluZGVudDogNCwgbGF4YnJlYWs6IHRydWUsIGxheGNvbW1hOiB0cnVlLCBzbWFydHRhYnM6IHRydWUsIHBsdXNwbHVzOiB0cnVlICovXG5cbi8qISBAc291cmNlIGh0dHA6Ly9wdXJsLmVsaWdyZXkuY29tL2dpdGh1Yi9GaWxlU2F2ZXIuanMvYmxvYi9tYXN0ZXIvRmlsZVNhdmVyLmpzICovXG5cbnZhciBzYXZlQXMgPSBzYXZlQXMgfHwgKGZ1bmN0aW9uKHZpZXcpIHtcblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdC8vIElFIDwxMCBpcyBleHBsaWNpdGx5IHVuc3VwcG9ydGVkXG5cdGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiICYmIC9NU0lFIFsxLTldXFwuLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhclxuXHRcdCAgZG9jID0gdmlldy5kb2N1bWVudFxuXHRcdCAgLy8gb25seSBnZXQgVVJMIHdoZW4gbmVjZXNzYXJ5IGluIGNhc2UgQmxvYi5qcyBoYXNuJ3Qgb3ZlcnJpZGRlbiBpdCB5ZXRcblx0XHQsIGdldF9VUkwgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTCB8fCB2aWV3O1xuXHRcdH1cblx0XHQsIHNhdmVfbGluayA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIsIFwiYVwiKVxuXHRcdCwgY2FuX3VzZV9zYXZlX2xpbmsgPSBcImRvd25sb2FkXCIgaW4gc2F2ZV9saW5rXG5cdFx0LCBjbGljayA9IGZ1bmN0aW9uKG5vZGUpIHtcblx0XHRcdHZhciBldmVudCA9IG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIik7XG5cdFx0XHRub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuXHRcdH1cblx0XHQsIGlzX3NhZmFyaSA9IC9WZXJzaW9uXFwvW1xcZFxcLl0rLipTYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcblx0XHQsIHdlYmtpdF9yZXFfZnMgPSB2aWV3LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtXG5cdFx0LCByZXFfZnMgPSB2aWV3LnJlcXVlc3RGaWxlU3lzdGVtIHx8IHdlYmtpdF9yZXFfZnMgfHwgdmlldy5tb3pSZXF1ZXN0RmlsZVN5c3RlbVxuXHRcdCwgdGhyb3dfb3V0c2lkZSA9IGZ1bmN0aW9uKGV4KSB7XG5cdFx0XHQodmlldy5zZXRJbW1lZGlhdGUgfHwgdmlldy5zZXRUaW1lb3V0KShmdW5jdGlvbigpIHtcblx0XHRcdFx0dGhyb3cgZXg7XG5cdFx0XHR9LCAwKTtcblx0XHR9XG5cdFx0LCBmb3JjZV9zYXZlYWJsZV90eXBlID0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxuXHRcdCwgZnNfbWluX3NpemUgPSAwXG5cdFx0Ly8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzUyOTcjYzcgYW5kXG5cdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzL2NvbW1pdC80ODU5MzBhI2NvbW1pdGNvbW1lbnQtODc2ODA0N1xuXHRcdC8vIGZvciB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGUgdGltZW91dCBhbmQgcmV2b2NhdGlvbiBmbG93XG5cdFx0LCBhcmJpdHJhcnlfcmV2b2tlX3RpbWVvdXQgPSA1MDAgLy8gaW4gbXNcblx0XHQsIHJldm9rZSA9IGZ1bmN0aW9uKGZpbGUpIHtcblx0XHRcdHZhciByZXZva2VyID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZmlsZSA9PT0gXCJzdHJpbmdcIikgeyAvLyBmaWxlIGlzIGFuIG9iamVjdCBVUkxcblx0XHRcdFx0XHRnZXRfVVJMKCkucmV2b2tlT2JqZWN0VVJMKGZpbGUpO1xuXHRcdFx0XHR9IGVsc2UgeyAvLyBmaWxlIGlzIGEgRmlsZVxuXHRcdFx0XHRcdGZpbGUucmVtb3ZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRpZiAodmlldy5jaHJvbWUpIHtcblx0XHRcdFx0cmV2b2tlcigpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2V0VGltZW91dChyZXZva2VyLCBhcmJpdHJhcnlfcmV2b2tlX3RpbWVvdXQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQsIGRpc3BhdGNoID0gZnVuY3Rpb24oZmlsZXNhdmVyLCBldmVudF90eXBlcywgZXZlbnQpIHtcblx0XHRcdGV2ZW50X3R5cGVzID0gW10uY29uY2F0KGV2ZW50X3R5cGVzKTtcblx0XHRcdHZhciBpID0gZXZlbnRfdHlwZXMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKGktLSkge1xuXHRcdFx0XHR2YXIgbGlzdGVuZXIgPSBmaWxlc2F2ZXJbXCJvblwiICsgZXZlbnRfdHlwZXNbaV1dO1xuXHRcdFx0XHRpZiAodHlwZW9mIGxpc3RlbmVyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0bGlzdGVuZXIuY2FsbChmaWxlc2F2ZXIsIGV2ZW50IHx8IGZpbGVzYXZlcik7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXgpIHtcblx0XHRcdFx0XHRcdHRocm93X291dHNpZGUoZXgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHQsIGF1dG9fYm9tID0gZnVuY3Rpb24oYmxvYikge1xuXHRcdFx0Ly8gcHJlcGVuZCBCT00gZm9yIFVURi04IFhNTCBhbmQgdGV4dC8qIHR5cGVzIChpbmNsdWRpbmcgSFRNTClcblx0XHRcdGlmICgvXlxccyooPzp0ZXh0XFwvXFxTKnxhcHBsaWNhdGlvblxcL3htbHxcXFMqXFwvXFxTKlxcK3htbClcXHMqOy4qY2hhcnNldFxccyo9XFxzKnV0Zi04L2kudGVzdChibG9iLnR5cGUpKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgQmxvYihbXCJcXHVmZWZmXCIsIGJsb2JdLCB7dHlwZTogYmxvYi50eXBlfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYmxvYjtcblx0XHR9XG5cdFx0LCBGaWxlU2F2ZXIgPSBmdW5jdGlvbihibG9iLCBuYW1lLCBub19hdXRvX2JvbSkge1xuXHRcdFx0aWYgKCFub19hdXRvX2JvbSkge1xuXHRcdFx0XHRibG9iID0gYXV0b19ib20oYmxvYik7XG5cdFx0XHR9XG5cdFx0XHQvLyBGaXJzdCB0cnkgYS5kb3dubG9hZCwgdGhlbiB3ZWIgZmlsZXN5c3RlbSwgdGhlbiBvYmplY3QgVVJMc1xuXHRcdFx0dmFyXG5cdFx0XHRcdCAgZmlsZXNhdmVyID0gdGhpc1xuXHRcdFx0XHQsIHR5cGUgPSBibG9iLnR5cGVcblx0XHRcdFx0LCBibG9iX2NoYW5nZWQgPSBmYWxzZVxuXHRcdFx0XHQsIG9iamVjdF91cmxcblx0XHRcdFx0LCB0YXJnZXRfdmlld1xuXHRcdFx0XHQsIGRpc3BhdGNoX2FsbCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRpc3BhdGNoKGZpbGVzYXZlciwgXCJ3cml0ZXN0YXJ0IHByb2dyZXNzIHdyaXRlIHdyaXRlZW5kXCIuc3BsaXQoXCIgXCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBvbiBhbnkgZmlsZXN5cyBlcnJvcnMgcmV2ZXJ0IHRvIHNhdmluZyB3aXRoIG9iamVjdCBVUkxzXG5cdFx0XHRcdCwgZnNfZXJyb3IgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAodGFyZ2V0X3ZpZXcgJiYgaXNfc2FmYXJpICYmIHR5cGVvZiBGaWxlUmVhZGVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHRcdFx0XHQvLyBTYWZhcmkgZG9lc24ndCBhbGxvdyBkb3dubG9hZGluZyBvZiBibG9iIHVybHNcblx0XHRcdFx0XHRcdHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXHRcdFx0XHRcdFx0cmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgYmFzZTY0RGF0YSA9IHJlYWRlci5yZXN1bHQ7XG5cdFx0XHRcdFx0XHRcdHRhcmdldF92aWV3LmxvY2F0aW9uLmhyZWYgPSBcImRhdGE6YXR0YWNobWVudC9maWxlXCIgKyBiYXNlNjREYXRhLnNsaWNlKGJhc2U2NERhdGEuc2VhcmNoKC9bLDtdLykpO1xuXHRcdFx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FO1xuXHRcdFx0XHRcdFx0XHRkaXNwYXRjaF9hbGwoKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcblx0XHRcdFx0XHRcdGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRvbid0IGNyZWF0ZSBtb3JlIG9iamVjdCBVUkxzIHRoYW4gbmVlZGVkXG5cdFx0XHRcdFx0aWYgKGJsb2JfY2hhbmdlZCB8fCAhb2JqZWN0X3VybCkge1xuXHRcdFx0XHRcdFx0b2JqZWN0X3VybCA9IGdldF9VUkwoKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0YXJnZXRfdmlldykge1xuXHRcdFx0XHRcdFx0dGFyZ2V0X3ZpZXcubG9jYXRpb24uaHJlZiA9IG9iamVjdF91cmw7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHZhciBuZXdfdGFiID0gdmlldy5vcGVuKG9iamVjdF91cmwsIFwiX2JsYW5rXCIpO1xuXHRcdFx0XHRcdFx0aWYgKG5ld190YWIgPT0gdW5kZWZpbmVkICYmIGlzX3NhZmFyaSkge1xuXHRcdFx0XHRcdFx0XHQvL0FwcGxlIGRvIG5vdCBhbGxvdyB3aW5kb3cub3Blbiwgc2VlIGh0dHA6Ly9iaXQubHkvMWtaZmZSSVxuXHRcdFx0XHRcdFx0XHR2aWV3LmxvY2F0aW9uLmhyZWYgPSBvYmplY3RfdXJsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7XG5cdFx0XHRcdFx0ZGlzcGF0Y2hfYWxsKCk7XG5cdFx0XHRcdFx0cmV2b2tlKG9iamVjdF91cmwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCwgYWJvcnRhYmxlID0gZnVuY3Rpb24oZnVuYykge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmIChmaWxlc2F2ZXIucmVhZHlTdGF0ZSAhPT0gZmlsZXNhdmVyLkRPTkUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdCwgY3JlYXRlX2lmX25vdF9mb3VuZCA9IHtjcmVhdGU6IHRydWUsIGV4Y2x1c2l2ZTogZmFsc2V9XG5cdFx0XHRcdCwgc2xpY2Vcblx0XHRcdDtcblx0XHRcdGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7XG5cdFx0XHRpZiAoIW5hbWUpIHtcblx0XHRcdFx0bmFtZSA9IFwiZG93bmxvYWRcIjtcblx0XHRcdH1cblx0XHRcdGlmIChjYW5fdXNlX3NhdmVfbGluaykge1xuXHRcdFx0XHRvYmplY3RfdXJsID0gZ2V0X1VSTCgpLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblx0XHRcdFx0c2F2ZV9saW5rLmhyZWYgPSBvYmplY3RfdXJsO1xuXHRcdFx0XHRzYXZlX2xpbmsuZG93bmxvYWQgPSBuYW1lO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGNsaWNrKHNhdmVfbGluayk7XG5cdFx0XHRcdFx0ZGlzcGF0Y2hfYWxsKCk7XG5cdFx0XHRcdFx0cmV2b2tlKG9iamVjdF91cmwpO1xuXHRcdFx0XHRcdGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBPYmplY3QgYW5kIHdlYiBmaWxlc3lzdGVtIFVSTHMgaGF2ZSBhIHByb2JsZW0gc2F2aW5nIGluIEdvb2dsZSBDaHJvbWUgd2hlblxuXHRcdFx0Ly8gdmlld2VkIGluIGEgdGFiLCBzbyBJIGZvcmNlIHNhdmUgd2l0aCBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cblx0XHRcdC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTkxMTU4XG5cdFx0XHQvLyBVcGRhdGU6IEdvb2dsZSBlcnJhbnRseSBjbG9zZWQgOTExNTgsIEkgc3VibWl0dGVkIGl0IGFnYWluOlxuXHRcdFx0Ly8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM4OTY0MlxuXHRcdFx0aWYgKHZpZXcuY2hyb21lICYmIHR5cGUgJiYgdHlwZSAhPT0gZm9yY2Vfc2F2ZWFibGVfdHlwZSkge1xuXHRcdFx0XHRzbGljZSA9IGJsb2Iuc2xpY2UgfHwgYmxvYi53ZWJraXRTbGljZTtcblx0XHRcdFx0YmxvYiA9IHNsaWNlLmNhbGwoYmxvYiwgMCwgYmxvYi5zaXplLCBmb3JjZV9zYXZlYWJsZV90eXBlKTtcblx0XHRcdFx0YmxvYl9jaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdC8vIFNpbmNlIEkgY2FuJ3QgYmUgc3VyZSB0aGF0IHRoZSBndWVzc2VkIG1lZGlhIHR5cGUgd2lsbCB0cmlnZ2VyIGEgZG93bmxvYWRcblx0XHRcdC8vIGluIFdlYktpdCwgSSBhcHBlbmQgLmRvd25sb2FkIHRvIHRoZSBmaWxlbmFtZS5cblx0XHRcdC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQ0MFxuXHRcdFx0aWYgKHdlYmtpdF9yZXFfZnMgJiYgbmFtZSAhPT0gXCJkb3dubG9hZFwiKSB7XG5cdFx0XHRcdG5hbWUgKz0gXCIuZG93bmxvYWRcIjtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlID09PSBmb3JjZV9zYXZlYWJsZV90eXBlIHx8IHdlYmtpdF9yZXFfZnMpIHtcblx0XHRcdFx0dGFyZ2V0X3ZpZXcgPSB2aWV3O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFyZXFfZnMpIHtcblx0XHRcdFx0ZnNfZXJyb3IoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0ZnNfbWluX3NpemUgKz0gYmxvYi5zaXplO1xuXHRcdFx0cmVxX2ZzKHZpZXcuVEVNUE9SQVJZLCBmc19taW5fc2l6ZSwgYWJvcnRhYmxlKGZ1bmN0aW9uKGZzKSB7XG5cdFx0XHRcdGZzLnJvb3QuZ2V0RGlyZWN0b3J5KFwic2F2ZWRcIiwgY3JlYXRlX2lmX25vdF9mb3VuZCwgYWJvcnRhYmxlKGZ1bmN0aW9uKGRpcikge1xuXHRcdFx0XHRcdHZhciBzYXZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRkaXIuZ2V0RmlsZShuYW1lLCBjcmVhdGVfaWZfbm90X2ZvdW5kLCBhYm9ydGFibGUoZnVuY3Rpb24oZmlsZSkge1xuXHRcdFx0XHRcdFx0XHRmaWxlLmNyZWF0ZVdyaXRlcihhYm9ydGFibGUoZnVuY3Rpb24od3JpdGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0d3JpdGVyLm9ud3JpdGVlbmQgPSBmdW5jdGlvbihldmVudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0X3ZpZXcubG9jYXRpb24uaHJlZiA9IGZpbGUudG9VUkwoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7XG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwYXRjaChmaWxlc2F2ZXIsIFwid3JpdGVlbmRcIiwgZXZlbnQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV2b2tlKGZpbGUpO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0d3JpdGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlcnJvciA9IHdyaXRlci5lcnJvcjtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChlcnJvci5jb2RlICE9PSBlcnJvci5BQk9SVF9FUlIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnNfZXJyb3IoKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFwid3JpdGVzdGFydCBwcm9ncmVzcyB3cml0ZSBhYm9ydFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR3cml0ZXJbXCJvblwiICsgZXZlbnRdID0gZmlsZXNhdmVyW1wib25cIiArIGV2ZW50XTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR3cml0ZXIud3JpdGUoYmxvYik7XG5cdFx0XHRcdFx0XHRcdFx0ZmlsZXNhdmVyLmFib3J0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR3cml0ZXIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5XUklUSU5HO1xuXHRcdFx0XHRcdFx0XHR9KSwgZnNfZXJyb3IpO1xuXHRcdFx0XHRcdFx0fSksIGZzX2Vycm9yKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGRpci5nZXRGaWxlKG5hbWUsIHtjcmVhdGU6IGZhbHNlfSwgYWJvcnRhYmxlKGZ1bmN0aW9uKGZpbGUpIHtcblx0XHRcdFx0XHRcdC8vIGRlbGV0ZSBmaWxlIGlmIGl0IGFscmVhZHkgZXhpc3RzXG5cdFx0XHRcdFx0XHRmaWxlLnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0c2F2ZSgpO1xuXHRcdFx0XHRcdH0pLCBhYm9ydGFibGUoZnVuY3Rpb24oZXgpIHtcblx0XHRcdFx0XHRcdGlmIChleC5jb2RlID09PSBleC5OT1RfRk9VTkRfRVJSKSB7XG5cdFx0XHRcdFx0XHRcdHNhdmUoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGZzX2Vycm9yKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkpO1xuXHRcdFx0XHR9KSwgZnNfZXJyb3IpO1xuXHRcdFx0fSksIGZzX2Vycm9yKTtcblx0XHR9XG5cdFx0LCBGU19wcm90byA9IEZpbGVTYXZlci5wcm90b3R5cGVcblx0XHQsIHNhdmVBcyA9IGZ1bmN0aW9uKGJsb2IsIG5hbWUsIG5vX2F1dG9fYm9tKSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbGVTYXZlcihibG9iLCBuYW1lLCBub19hdXRvX2JvbSk7XG5cdFx0fVxuXHQ7XG5cdC8vIElFIDEwKyAobmF0aXZlIHNhdmVBcylcblx0aWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09IFwidW5kZWZpbmVkXCIgJiYgbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oYmxvYiwgbmFtZSwgbm9fYXV0b19ib20pIHtcblx0XHRcdGlmICghbm9fYXV0b19ib20pIHtcblx0XHRcdFx0YmxvYiA9IGF1dG9fYm9tKGJsb2IpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGJsb2IsIG5hbWUgfHwgXCJkb3dubG9hZFwiKTtcblx0XHR9O1xuXHR9XG5cblx0RlNfcHJvdG8uYWJvcnQgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgZmlsZXNhdmVyID0gdGhpcztcblx0XHRmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FO1xuXHRcdGRpc3BhdGNoKGZpbGVzYXZlciwgXCJhYm9ydFwiKTtcblx0fTtcblx0RlNfcHJvdG8ucmVhZHlTdGF0ZSA9IEZTX3Byb3RvLklOSVQgPSAwO1xuXHRGU19wcm90by5XUklUSU5HID0gMTtcblx0RlNfcHJvdG8uRE9ORSA9IDI7XG5cblx0RlNfcHJvdG8uZXJyb3IgPVxuXHRGU19wcm90by5vbndyaXRlc3RhcnQgPVxuXHRGU19wcm90by5vbnByb2dyZXNzID1cblx0RlNfcHJvdG8ub253cml0ZSA9XG5cdEZTX3Byb3RvLm9uYWJvcnQgPVxuXHRGU19wcm90by5vbmVycm9yID1cblx0RlNfcHJvdG8ub253cml0ZWVuZCA9XG5cdFx0bnVsbDtcblxuXHRyZXR1cm4gc2F2ZUFzO1xufShcblx0ICAgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZlxuXHR8fCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvd1xuXHR8fCB0aGlzLmNvbnRlbnRcbikpO1xuLy8gYHNlbGZgIGlzIHVuZGVmaW5lZCBpbiBGaXJlZm94IGZvciBBbmRyb2lkIGNvbnRlbnQgc2NyaXB0IGNvbnRleHRcbi8vIHdoaWxlIGB0aGlzYCBpcyBuc0lDb250ZW50RnJhbWVNZXNzYWdlTWFuYWdlclxuLy8gd2l0aCBhbiBhdHRyaWJ1dGUgYGNvbnRlbnRgIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHdpbmRvd1xuXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBtb2R1bGUuZXhwb3J0cykge1xuICBtb2R1bGUuZXhwb3J0cy5zYXZlQXMgPSBzYXZlQXM7XG59IGVsc2UgaWYgKCh0eXBlb2YgZGVmaW5lICE9PSBcInVuZGVmaW5lZFwiICYmIGRlZmluZSAhPT0gbnVsbCkgJiYgKGRlZmluZS5hbWQgIT0gbnVsbCkpIHtcbiAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gc2F2ZUFzO1xuICB9KTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NTZXQgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmNsYXNzIFBhZ2VCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnR7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcblx0XHRzdXBlcihwcm9wcyk7XG5cdH1cblxuICBwYWdlQnRuQ2xpY2soZSl7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJvcHMuY2hhbmdlUGFnZShlLmN1cnJlbnRUYXJnZXQudGV4dCk7XG4gIH1cblxuICByZW5kZXIoKXtcbiAgICB2YXIgY2xhc3NlcyA9IHRoaXMucHJvcHMuYWN0aXZlP2NsYXNzU2V0KFwiYWN0aXZlXCIpOm51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGxpIGNsYXNzTmFtZT17Y2xhc3Nlc30+PGEgaHJlZj1cIiNcIiBvbkNsaWNrPXt0aGlzLnBhZ2VCdG5DbGljay5iaW5kKHRoaXMpfT57dGhpcy5wcm9wcy5jaGlsZHJlbn08L2E+PC9saT5cbiAgICApXG4gIH1cbn1cblBhZ2VCdXR0b24ucHJvcFR5cGVzID0ge1xuICBjaGFuZ2VQYWdlOiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgYWN0aXZlOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUGFnZUJ1dHRvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUGFnZUJ1dHRvbiBmcm9tICcuL1BhZ2VCdXR0b24uanMnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4uL0NvbnN0JztcblxuY2xhc3MgUGFnaW5hdGlvbkxpc3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjdXJyZW50UGFnZTogdGhpcy5wcm9wcy5jdXJyUGFnZSxcbiAgICAgIHNpemVQZXJQYWdlOiB0aGlzLnByb3BzLnNpemVQZXJQYWdlXG4gICAgfTtcbiAgfVxuXG4gIGNoYW5nZVBhZ2UocGFnZSkge1xuICAgIGlmIChwYWdlID09IENvbnN0LlBSRV9QQUdFKSB7XG4gICAgICBwYWdlID0gdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAtIDEgPCAxID8gMSA6IHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgLSAxO1xuICAgIH0gZWxzZSBpZiAocGFnZSA9PSBDb25zdC5ORVhUX1BBR0UpIHtcbiAgICAgIHBhZ2UgPSB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICsgMSA+IHRoaXMudG90YWxQYWdlcyA/IHRoaXMudG90YWxQYWdlcyA6IHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgKyAxO1xuICAgIH0gZWxzZSBpZiAocGFnZSA9PSBDb25zdC5MQVNUX1BBR0UpIHtcbiAgICAgIHBhZ2UgPSB0aGlzLnRvdGFsUGFnZXM7XG4gICAgfSBlbHNlIGlmIChwYWdlID09IENvbnN0LkZJUlNUX1BBR0UpIHtcbiAgICAgIHBhZ2UgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYWdlID0gcGFyc2VJbnQocGFnZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UgIT0gdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFBhZ2U6IHBhZ2V9KTtcbiAgICAgIHRoaXMucHJvcHMuY2hhbmdlUGFnZShwYWdlLCB0aGlzLnN0YXRlLnNpemVQZXJQYWdlKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGlmICh0aGlzLnByb3BzLnJlbW90ZSkge1xuICAgICAgaWYgKG5leHRQcm9wcy5jdXJyUGFnZSB8fCBuZXh0UHJvcHMuc2l6ZVBlclBhZ2UpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY3VycmVudFBhZ2U6IG5leHRQcm9wcy5jdXJyUGFnZSxcbiAgICAgICAgICBzaXplUGVyUGFnZTogbmV4dFByb3BzLnNpemVQZXJQYWdlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGNoYW5nZVNpemVQZXJQYWdlKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB2YXIgc2VsZWN0U2l6ZSA9IHBhcnNlSW50KGUuY3VycmVudFRhcmdldC50ZXh0KTtcbiAgICBpZiAoc2VsZWN0U2l6ZSAhPSB0aGlzLnN0YXRlLnNpemVQZXJQYWdlKSB7XG4gICAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy5wcm9wcy5kYXRhU2l6ZSAvIHNlbGVjdFNpemUpO1xuICAgICAgaWYgKHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpXG4gICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgPSB0aGlzLnRvdGFsUGFnZXM7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzaXplUGVyUGFnZTogc2VsZWN0U2l6ZSxcbiAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuc3RhdGUuY3VycmVudFBhZ2VcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9wcy5jaGFuZ2VQYWdlKHRoaXMuc3RhdGUuY3VycmVudFBhZ2UsIHNlbGVjdFNpemUpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy5wcm9wcy5kYXRhU2l6ZSAvIHRoaXMuc3RhdGUuc2l6ZVBlclBhZ2UpO1xuICAgIHZhciBwYWdlQnRucyA9IHRoaXMubWFrZVBhZ2UoKTtcbiAgICB2YXIgcGFnZUxpc3RTdHlsZSA9IHtcbiAgICAgIG1hcmdpblRvcDogXCIwcHhcIiAgLy9vdmVycmlkZSB0aGUgbWFyZ2luLXRvcCBkZWZpbmVkIGluIC5wYWdpbmF0aW9uIGNsYXNzIGluIGJvb3RzdHJhcC5cbiAgICB9XG5cbiAgICB2YXIgc2l6ZVBlclBhZ2VMaXN0ID0gdGhpcy5wcm9wcy5zaXplUGVyUGFnZUxpc3QubWFwKChzaXplUGVyUGFnZSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGxpIGtleT17c2l6ZVBlclBhZ2V9IHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICA8YSByb2xlPVwibWVudWl0ZW1cIiB0YWJJbmRleD1cIi0xXCIgaHJlZj1cIiNcIiBvbkNsaWNrPXt0aGlzLmNoYW5nZVNpemVQZXJQYWdlLmJpbmQodGhpcyl9PntzaXplUGVyUGFnZX08L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW1kLTFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJwYWdlRHJvcERvd25cIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIj5cbiAgICAgICAgICAgICAge3RoaXMuc3RhdGUuc2l6ZVBlclBhZ2V9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNhcmV0XCIvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwicGFnZURyb3BEb3duXCI+XG4gICAgICAgICAgICAgIHtzaXplUGVyUGFnZUxpc3R9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJwYWdpbmF0aW9uXCIgc3R5bGU9e3BhZ2VMaXN0U3R5bGV9PlxuICAgICAgICAgICAge3BhZ2VCdG5zfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgbWFrZVBhZ2UoKSB7XG4gICAgdmFyIHBhZ2VzID0gdGhpcy5nZXRQYWdlcygpO1xuICAgIHJldHVybiBwYWdlcy5tYXAoZnVuY3Rpb24gKHBhZ2UpIHtcbiAgICAgIHZhciBpc0FjdGl2ZSA9IHBhZ2UgPT09IHRoaXMuc3RhdGUuY3VycmVudFBhZ2U7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8UGFnZUJ1dHRvbiBjaGFuZ2VQYWdlPXt0aGlzLmNoYW5nZVBhZ2UuYmluZCh0aGlzKX0gYWN0aXZlPXtpc0FjdGl2ZX0ga2V5PXtwYWdlfT57cGFnZX08L1BhZ2VCdXR0b24+XG4gICAgICApXG4gICAgfSwgdGhpcyk7XG4gIH1cblxuICBnZXRQYWdlcygpIHtcbiAgICB2YXIgc3RhcnRQYWdlID0gMSwgZW5kUGFnZSA9IHRoaXMudG90YWxQYWdlcztcblxuICAgIHN0YXJ0UGFnZSA9IE1hdGgubWF4KHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgLSBNYXRoLmZsb29yKHRoaXMucHJvcHMucGFnaW5hdGlvblNpemUgLyAyKSwgMSk7XG4gICAgZW5kUGFnZSA9IHN0YXJ0UGFnZSArIHRoaXMucHJvcHMucGFnaW5hdGlvblNpemUgLSAxO1xuXG4gICAgaWYgKGVuZFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgIGVuZFBhZ2UgPSB0aGlzLnRvdGFsUGFnZXM7XG4gICAgICBzdGFydFBhZ2UgPSBlbmRQYWdlIC0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uU2l6ZSArIDE7XG4gICAgfVxuICAgIHZhciBwYWdlcyA9IFtDb25zdC5GSVJTVF9QQUdFLCBDb25zdC5QUkVfUEFHRV07XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0UGFnZTsgaSA8PSBlbmRQYWdlOyBpKyspIHtcbiAgICAgIGlmIChpID4gMClwYWdlcy5wdXNoKGkpO1xuICAgIH1cbiAgICBwYWdlcy5wdXNoKENvbnN0Lk5FWFRfUEFHRSk7XG4gICAgcGFnZXMucHVzaChDb25zdC5MQVNUX1BBR0UpO1xuICAgIHJldHVybiBwYWdlcztcbiAgfVxuXG4gIGdldEN1cnJlbnRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlO1xuICB9XG5cbiAgZ2V0U2l6ZVBlclBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2l6ZVBlclBhZ2U7XG4gIH1cbn1cblBhZ2luYXRpb25MaXN0LnByb3BUeXBlcyA9IHtcbiAgY3VyclBhZ2U6IFJlYWN0LlByb3BUeXBlcy5udW1iZXIsXG4gIHNpemVQZXJQYWdlOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICBkYXRhU2l6ZTogUmVhY3QuUHJvcFR5cGVzLm51bWJlcixcbiAgY2hhbmdlUGFnZTogUmVhY3QuUHJvcFR5cGVzLmZ1bmMsXG4gIHNpemVQZXJQYWdlTGlzdDogUmVhY3QuUHJvcFR5cGVzLmFycmF5LFxuICBwYWdpbmF0aW9uU2l6ZTogUmVhY3QuUHJvcFR5cGVzLm51bWJlcixcbiAgcmVtb3RlOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbn07XG5cblBhZ2luYXRpb25MaXN0LmRlZmF1bHRQcm9wcyA9IHtcbiAgc2l6ZVBlclBhZ2U6IENvbnN0LlNJWkVfUEVSX1BBR0Vcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRpb25MaXN0O1xuIiwiaW1wb3J0IENvbnN0IGZyb20gXCIuLi9Db25zdFwiO1xudmFyIEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxuZnVuY3Rpb24gX3NvcnQoYXJyLCBzb3J0RmllbGQsIG9yZGVyLCBzb3J0RnVuYykge1xuICBvcmRlciA9IG9yZGVyLnRvTG93ZXJDYXNlKCk7XG4gIGFyci5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKHNvcnRGdW5jKSB7XG4gICAgICByZXR1cm4gc29ydEZ1bmMoYSwgYiwgb3JkZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3JkZXIgPT0gQ29uc3QuU09SVF9ERVNDKSB7XG4gICAgICAgIHJldHVybiBhW3NvcnRGaWVsZF0gPiBiW3NvcnRGaWVsZF0gPyAtMSA6ICgoYVtzb3J0RmllbGRdIDwgYltzb3J0RmllbGRdKSA/IDEgOiAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhW3NvcnRGaWVsZF0gPCBiW3NvcnRGaWVsZF0gPyAtMSA6ICgoYVtzb3J0RmllbGRdID4gYltzb3J0RmllbGRdKSA/IDEgOiAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhcnI7XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFTZXQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihkYXRhKSB7XG4gICAgc3VwZXIoZGF0YSk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIHNldERhdGEoZGF0YSkge1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJywgZGF0YSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICB9XG5cbiAgZ2V0RGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFTdG9yZSB7XG5cbiAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5jdXN0b21Tb3J0RnVuY01hcCA9IG51bGw7XG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBudWxsO1xuICAgIHRoaXMuaXNPbkZpbHRlciA9IGZhbHNlO1xuICAgIHRoaXMuZmlsdGVyT2JqID0gbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xuICAgIHRoaXMuc29ydE9iaiA9IG51bGw7XG4gICAgdGhpcy5wYWdlT2JqID0ge307XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMucmVtb3RlID0gZmFsc2U7IC8vIHJlbW90ZSBkYXRhXG4gIH1cblxuICBzZXRQcm9wcyhpc1BhZ2luYXRpb24sIGtleUZpZWxkLCBjdXN0b21Tb3J0RnVuY01hcCwgcmVtb3RlKSB7XG4gICAgdGhpcy5rZXlGaWVsZCA9IGtleUZpZWxkO1xuICAgIHRoaXMuZW5hYmxlUGFnaW5hdGlvbiA9IGlzUGFnaW5hdGlvbjtcbiAgICB0aGlzLmN1c3RvbVNvcnRGdW5jTWFwID0gY3VzdG9tU29ydEZ1bmNNYXA7XG4gICAgdGhpcy5yZW1vdGUgPSByZW1vdGU7XG4gIH1cblxuICBzZXREYXRhKGRhdGEpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIGlmICh0aGlzLmlzT25GaWx0ZXIpIHtcbiAgICAgIGlmIChudWxsICE9PSB0aGlzLmZpbHRlck9iaikgdGhpcy5maWx0ZXIodGhpcy5maWx0ZXJPYmopO1xuICAgICAgaWYgKG51bGwgIT09IHRoaXMuc2VhcmNoVGV4dCkgdGhpcy5zZWFyY2godGhpcy5zZWFyY2hUZXh0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc29ydE9iaikge1xuICAgICAgdGhpcy5zb3J0KHRoaXMuc29ydE9iai5vcmRlciwgdGhpcy5zb3J0T2JqLnNvcnRGaWVsZCk7XG4gICAgfVxuICB9XG5cbiAgc2V0U2VsZWN0ZWRSb3dLZXkoc2VsZWN0ZWRSb3dLZXlzKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkUm93S2V5cztcbiAgfVxuXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZDtcbiAgfVxuXG4gIGdldEN1cnJlbnREaXNwbGF5RGF0YSgpIHtcbiAgICBpZiAodGhpcy5pc09uRmlsdGVyKSByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGE7XG4gICAgZWxzZSByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgc29ydChvcmRlciwgc29ydEZpZWxkKSB7XG4gICAgdGhpcy5zb3J0T2JqID0ge1xuICAgICAgb3JkZXI6IG9yZGVyLFxuICAgICAgc29ydEZpZWxkOiBzb3J0RmllbGRcbiAgICB9O1xuXG4gICAgbGV0IGN1cnJlbnREaXNwbGF5RGF0YSA9IHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCk7XG4gICAgbGV0IHNvcnRGdW5jID0gdGhpcy5jdXN0b21Tb3J0RnVuY01hcFtzb3J0RmllbGRdO1xuICAgIGN1cnJlbnREaXNwbGF5RGF0YSA9IF9zb3J0KGN1cnJlbnREaXNwbGF5RGF0YSwgc29ydEZpZWxkLCBvcmRlciwgc29ydEZ1bmMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwYWdlKHBhZ2UsIHNpemVQZXJQYWdlKSB7XG4gICAgdGhpcy5wYWdlT2JqLmVuZCA9IHBhZ2UgKiBzaXplUGVyUGFnZSAtIDE7XG4gICAgdGhpcy5wYWdlT2JqLnN0YXJ0ID0gdGhpcy5wYWdlT2JqLmVuZCAtIChzaXplUGVyUGFnZSAtIDEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZWRpdChuZXdWYWwsIHJvd0luZGV4LCBmaWVsZE5hbWUpIHtcbiAgICBsZXQgY3VycmVudERpc3BsYXlEYXRhID0gdGhpcy5nZXRDdXJyZW50RGlzcGxheURhdGEoKTtcbiAgICBsZXQgcm93S2V5Q2FjaGU7XG4gICAgaWYgKCF0aGlzLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgIGN1cnJlbnREaXNwbGF5RGF0YVtyb3dJbmRleF1bZmllbGROYW1lXSA9IG5ld1ZhbDtcbiAgICAgIHJvd0tleUNhY2hlID0gY3VycmVudERpc3BsYXlEYXRhW3Jvd0luZGV4XVt0aGlzLmtleUZpZWxkXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudERpc3BsYXlEYXRhW3RoaXMucGFnZU9iai5zdGFydCArIHJvd0luZGV4XVtmaWVsZE5hbWVdID0gbmV3VmFsO1xuICAgICAgcm93S2V5Q2FjaGUgPSBjdXJyZW50RGlzcGxheURhdGFbdGhpcy5wYWdlT2JqLnN0YXJ0ICsgcm93SW5kZXhdW3RoaXMua2V5RmllbGRdO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09uRmlsdGVyKSB7XG4gICAgICB0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIGlmIChyb3dbdGhpcy5rZXlGaWVsZF0gPT09IHJvd0tleUNhY2hlKSB7XG4gICAgICAgICAgcm93W3RoaXMua2V5RmllbGRdW2ZpZWxkTmFtZV0gPSBuZXdWYWw7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZChuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqW3RoaXMua2V5RmllbGRdLnRyaW0oKSA9PT0gXCJcIikge1xuICAgICAgdGhyb3cgdGhpcy5rZXlGaWVsZCArIFwiIGNhbid0IGJlIGVtcHR5IHZhbHVlLlwiO1xuICAgIH1cbiAgICBsZXQgY3VycmVudERpc3BsYXlEYXRhID0gdGhpcy5nZXRDdXJyZW50RGlzcGxheURhdGEoKTtcbiAgICBjdXJyZW50RGlzcGxheURhdGEuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICBpZiAocm93W3RoaXMua2V5RmllbGRdLnRvU3RyaW5nKCkgPT09IG5ld09ialt0aGlzLmtleUZpZWxkXSkge1xuICAgICAgICB0aHJvdyB0aGlzLmtleUZpZWxkICsgXCIgXCIgKyBuZXdPYmpbdGhpcy5rZXlGaWVsZF0gKyBcIiBhbHJlYWR5IGV4aXN0c1wiO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuXG4gICAgY3VycmVudERpc3BsYXlEYXRhLnB1c2gobmV3T2JqKTtcbiAgICBpZiAodGhpcy5pc09uRmlsdGVyKSB7XG4gICAgICB0aGlzLmRhdGEucHVzaChuZXdPYmopO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShyb3dLZXkpIHtcbiAgICBsZXQgY3VycmVudERpc3BsYXlEYXRhID0gdGhpcy5nZXRDdXJyZW50RGlzcGxheURhdGEoKTtcbiAgICBsZXQgcmVzdWx0ID0gY3VycmVudERpc3BsYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAocm93KSB7XG4gICAgICByZXR1cm4gcm93S2V5LmluZGV4T2Yocm93W3RoaXMua2V5RmllbGRdKSA9PSAtMTtcbiAgICB9LCB0aGlzKTtcblxuICAgIGlmICh0aGlzLmlzT25GaWx0ZXIpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoZnVuY3Rpb24gKHJvdykge1xuICAgICAgICByZXR1cm4gcm93S2V5LmluZGV4T2Yocm93W3RoaXMua2V5RmllbGRdKSA9PSAtMTtcbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXIoZmlsdGVyT2JqKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlck9iaikubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gbnVsbDtcbiAgICAgIHRoaXMuaXNPbkZpbHRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5maWx0ZXJPYmogPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlck9iaiA9IGZpbHRlck9iajtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcihmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBmaWx0ZXJPYmopIHtcbiAgICAgICAgICBpZiAocm93W2tleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyT2JqW2tleV0udG9Mb3dlckNhc2UoKSkgPT0gLTEpIHtcbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmlzT25GaWx0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaChzZWFyY2hUZXh0LCBtdWx0aUNvbHVtblNlYXJjaCkge1xuICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKSA9PT0gXCJcIikge1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBudWxsO1xuICAgICAgdGhpcy5pc09uRmlsdGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xuICAgICAgdmFyIHNlYXJjaFRleHRBcnJheSA9IFtdO1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKG11bHRpQ29sdW1uU2VhcmNoKSB7XG4gICAgICAgICAgc2VhcmNoVGV4dEFycmF5ID0gc2VhcmNoVGV4dC5zcGxpdCgnICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlYXJjaFRleHRBcnJheS5wdXNoKHNlYXJjaFRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHJvdykge1xuICAgICAgICAgIGlmIChyb3dba2V5XSkge1xuICAgICAgICAgICAgc2VhcmNoVGV4dEFycmF5LmZvckVhY2goZnVuY3Rpb24odGV4dCkge1xuICAgICAgICAgICAgICBpZiAocm93W2tleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGV4dC50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHZhbGlkKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmlzT25GaWx0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGFJZ25vcmluZ1BhZ2luYXRpb24oKSB7XG4gICAgbGV0IF9kYXRhID0gdGhpcy5nZXRDdXJyZW50RGlzcGxheURhdGEoKTtcbiAgICByZXR1cm4gX2RhdGE7XG4gIH1cblxuICBnZXQoKSB7XG4gICAgbGV0IF9kYXRhID0gdGhpcy5nZXRDdXJyZW50RGlzcGxheURhdGEoKTtcblxuICAgIGlmIChfZGF0YS5sZW5ndGggPT0gMCkgcmV0dXJuIF9kYXRhO1xuXG4gICAgaWYgKHRoaXMucmVtb3RlIHx8ICF0aGlzLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiBfZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMucGFnZU9iai5zdGFydDsgaSA8PSB0aGlzLnBhZ2VPYmouZW5kOyBpKyspIHtcbiAgICAgICAgcmVzdWx0LnB1c2goX2RhdGFbaV0pO1xuICAgICAgICBpZiAoaSArIDEgPT0gX2RhdGEubGVuZ3RoKWJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBnZXRLZXlGaWVsZCgpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlGaWVsZDtcbiAgfVxuXG4gIGdldERhdGFOdW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudERpc3BsYXlEYXRhKCkubGVuZ3RoO1xuICB9XG5cbiAgaXNDaGFuZ2VkUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlT2JqLnN0YXJ0ICYmIHRoaXMucGFnZU9iai5lbmQgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBnZXRBbGxSb3drZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5tYXAoZnVuY3Rpb24gKHJvdykge1xuICAgICAgcmV0dXJuIHJvd1t0aGlzLmtleUZpZWxkXTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuXG59XG47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4uL0NvbnN0JztcbmltcG9ydCBFZGl0b3IgZnJvbSAnLi4vRWRpdG9yJztcbmltcG9ydCBOb3RpZmllciBmcm9tICcuLi9Ob3RpZmljYXRpb24uanMnO1xuXG5jbGFzcyBUb29sQmFyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG5cdFx0c3VwZXIocHJvcHMpO1xuICAgIHRoaXMudGltZW91dGVDbGVhcj0wO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc0luc2VydFJvd1RyaWdnZXI6IHRydWUsXG4gICAgICB2YWxpZGF0ZVN0YXRlOm51bGwsXG4gICAgICBzaGFrZUVkaXRvcjpmYWxzZVxuICAgIH07XG4gIH1cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKXtcbiAgICB0aGlzLmNsZWFyVGltZW91dCgpO1xuICB9XG4gIGNsZWFyVGltZW91dCgpIHtcbiAgICBpZih0aGlzLnRpbWVvdXRlQ2xlYXIpe1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dGVDbGVhcik7XG4gICAgICB0aGlzLnRpbWVvdXRlQ2xlYXI9MDtcbiAgICB9XG4gIH1cblxuICBjaGVja0FuZFBhcnNlRm9ybSgpe1xuICAgIHZhciB0cz10aGlzLG5ld09iaiA9IHt9LGlzVmFsaWQ9dHJ1ZSx0ZW1wVmFsdWUsdGVtcE1zZyx2YWxpZGF0ZVN0YXRlPXt9O1xuICAgIHRoaXMucHJvcHMuY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uKGNvbHVtbiwgaSl7XG4gICAgICBpZihjb2x1bW4uYXV0b1ZhbHVlKXsvL3doZW4geW91IHdhbnQgc2FtZSBhdXRvIGdlbmVyYXRlIHZhbHVlIGFuZCBub3QgYWxsb3cgZWRpdCwgZXhhbXBsZSBJRCBmaWVsZFxuICAgICAgICB0ZW1wVmFsdWU9dHlwZW9mIGNvbHVtbi5hdXRvVmFsdWU9PSdmdW5jdGlvbic/Y29sdW1uLmF1dG9WYWx1ZSgpOignYXV0b3ZhbHVlLScrbmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGxldCBkb20gPSB0aGlzLnJlZnNbY29sdW1uLmZpZWxkK2ldO1xuICAgICAgICB0ZW1wVmFsdWUgPSBkb20udmFsdWU7XG5cbiAgICAgICAgaWYoY29sdW1uLmVkaXRhYmxlICYmIGNvbHVtbi5lZGl0YWJsZS50eXBlID09ICdjaGVja2JveCcpe1xuICAgICAgICAgIGxldCB2YWx1ZXMgPSBkb20udmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgICB0ZW1wVmFsdWUgPSBkb20uY2hlY2tlZD8gdmFsdWVzWzBdOnZhbHVlc1sxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGNvbHVtbi5lZGl0YWJsZSYmY29sdW1uLmVkaXRhYmxlLnZhbGlkYXRvcil7Ly9wcm9jZXNzIHZhbGlkYXRlXG4gICAgICAgICAgdGVtcE1zZz0gY29sdW1uLmVkaXRhYmxlLnZhbGlkYXRvcih0ZW1wVmFsdWUpXG4gICAgICAgICAgaWYodGVtcE1zZyE9PXRydWUpe1xuICAgICAgICAgICAgaXNWYWxpZD1mYWxzZTtcbiAgICAgICAgICAgIHZhbGlkYXRlU3RhdGVbY29sdW1uLmZpZWxkXT10ZW1wTXNnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXdPYmpbY29sdW1uLmZpZWxkXSA9dGVtcFZhbHVlO1xuICAgIH0sIHRoaXMpO1xuXG4gICAgaWYoaXNWYWxpZCl7XG4gICAgICByZXR1cm4gbmV3T2JqO1xuICAgIH1lbHNle1xuICAgICAgdHMuY2xlYXJUaW1lb3V0KCk7XG4gICAgICAvL3Nob3cgZXJyb3IgaW4gZm9ybSBhbmQgc2hha2UgaXRcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3ZhbGlkYXRlU3RhdGU6dmFsaWRhdGVTdGF0ZSxzaGFrZUVkaXRvcjp0cnVlfSk7XG4gICAgICAvL25vdGlmaWVyIGVycm9yXG4gICAgICB0cy5yZWZzLm5vdGlmaWVyLm5vdGljZSgnZXJyb3InLFwiRm9ybSB2YWxpZGF0ZSBlcnJvcnMsIHBsZWFzZSBjaGVja2luZyFcIixcIlByZXNzZWQgRVNDIGNhbiBjYW5jZWxcIik7XG4gICAgICAvL2NsZWFyIGFuaW1hdGUgY2xhc3NcbiAgICAgIHRzLnRpbWVvdXRlQ2xlYXI9c2V0VGltZW91dChmdW5jdGlvbigpe3RzLnNldFN0YXRlKHtzaGFrZUVkaXRvcjpmYWxzZX0pO30sMzAwKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNhdmVCdG5DbGljayhlKXtcbiAgICB2YXIgbmV3T2JqID0gdGhpcy5jaGVja0FuZFBhcnNlRm9ybSgpO1xuICAgIGlmKCFuZXdPYmopey8vdmFsaWRhdGUgZXJyb3JzXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBtc2cgPSB0aGlzLnByb3BzLm9uQWRkUm93KG5ld09iaik7XG4gICAgaWYobXNnKSB7XG4gICAgICB2YXIgdHM9dGhpcztcbiAgICAgIHRzLnJlZnMubm90aWZpZXIubm90aWNlKCdlcnJvcicsbXNnLFwiUHJlc3NlZCBFU0MgY2FuIGNhbmNlbFwiKTtcbiAgICAgIHRzLmNsZWFyVGltZW91dCgpO1xuICAgICAgLy9zaGFrZSBmb3JtIGFuZCBoYWNrIHByZXZlbnQgbW9kYWwgaGlkZVxuICAgICAgdHMuc2V0U3RhdGUoe3NoYWtlRWRpdG9yOnRydWUsdmFsaWRhdGVTdGF0ZTpcInRoaXMgaXMgaGFjayBmb3IgcHJldmVudCBib290c3RyYXAgbW9kYWwgaGlkZVwifSk7XG4gICAgICAvL2NsZWFyIGFuaW1hdGUgY2xhc3NcbiAgICAgIHRzLnRpbWVvdXRlQ2xlYXI9c2V0VGltZW91dChmdW5jdGlvbigpe3RzLnNldFN0YXRlKHtzaGFrZUVkaXRvcjpmYWxzZX0pO30sMzAwKTtcbiAgICB9IGVsc2V7XG4gICAgICAvL3Jlc2V0IHN0YXRlIGFuZCBoaWRlIG1vZGFsIGhpZGVcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB2YWxpZGF0ZVN0YXRlOm51bGwsXG4gICAgICAgIHNoYWtlRWRpdG9yOmZhbHNlXG4gICAgICB9KTtcbiAgICAgIC8vcmVzZXQgZm9ybVxuICAgICAgdGhpcy5yZWZzLmZvcm0ucmVzZXQoKTtcblxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURyb3BSb3dCdG5DbGljayhlKXtcbiAgICB0aGlzLnByb3BzLm9uRHJvcFJvdygpO1xuICB9XG5cbiAgaGFuZGxlQ2xvc2VCdG4oZSl7XG4gICAgdGhpcy5yZWZzLndhcm5pbmcuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICB9XG5cbiAgaGFuZGxlS2V5VXAoZSl7XG4gICAgdGhpcy5wcm9wcy5vblNlYXJjaChlLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlRXhwb3J0Q1NWKCkge1xuICAgIHRoaXMucHJvcHMub25FeHBvcnRDU1YoKTtcbiAgfVxuXG4gIHJlbmRlcigpe1xuICAgIHZhciBtb2RhbENsYXNzTmFtZSA9IFwiYnMtdGFibGUtbW9kYWwtc21cIituZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB2YXIgaW5zZXJ0QnRuID0gdGhpcy5wcm9wcy5lbmFibGVJbnNlcnQ/XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17dGhpcy5wcm9wcy5vbkFkZFJvd0JlZ2lufSBjbGFzc05hbWU9XCJidG4gYnRuLWluZm9cIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9eycuJyttb2RhbENsYXNzTmFtZX0+XG4gICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJnbHlwaGljb24gZ2x5cGhpY29uLXBsdXNcIj48L2k+IE5ldzwvYnV0dG9uPjpudWxsO1xuXG4gICAgdmFyIGRlbGV0ZUJ0biA9IHRoaXMucHJvcHMuZW5hYmxlRGVsZXRlP1xuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4td2FybmluZ1wiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwicmlnaHRcIiB0aXRsZT1cIkRyb3Agc2VsZWN0ZWQgcm93XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlRHJvcFJvd0J0bkNsaWNrLmJpbmQodGhpcyl9PlxuICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZ2x5cGhpY29uIGdseXBoaWNvbi10cmFzaFwiPjwvaT4gRGVsZXRlXG4gICAgICAgICAgPC9idXR0b24+Om51bGw7XG4gICAgdmFyIHNlYXJjaFRleHRJbnB1dCA9IHRoaXMucHJvcHMuZW5hYmxlU2VhcmNoP1xuICAgICAgPGlucHV0IHR5cGU9J3RleHQnIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnNlYXJjaFBsYWNlaG9sZGVyP3RoaXMucHJvcHMuc2VhcmNoUGxhY2Vob2xkZXI6J1NlYXJjaCd9IG9uS2V5VXA9e3RoaXMuaGFuZGxlS2V5VXAuYmluZCh0aGlzKX0vPjpudWxsO1xuICAgIHZhciBtb2RhbCA9IHRoaXMucHJvcHMuZW5hYmxlSW5zZXJ0P3RoaXMucmVuZGVySW5zZXJ0Um93TW9kYWwobW9kYWxDbGFzc05hbWUpOm51bGw7XG4gICAgdmFyIHdhcm5pbmdTdHlsZSA9IHtcbiAgICAgIGRpc3BsYXk6IFwibm9uZVwiLFxuICAgICAgbWFyZ2luQm90dG9tOiAwXG4gICAgfTtcblxuICAgIHZhciBleHBvcnRDU1YgPSB0aGlzLnByb3BzLmVuYWJsZUV4cG9ydENTViA/XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zdWNjZXNzXCIgb25DbGljaz17dGhpcy5oYW5kbGVFeHBvcnRDU1YuYmluZCh0aGlzKX0+XG4gICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImdseXBoaWNvbiBnbHlwaGljb24tZXhwb3J0XCI+PC9pPiBFeHBvcnQgdG8gQ1NWPC9idXR0b24+IDogbnVsbDtcblxuICAgIHJldHVybihcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC14c1wiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCIuLi5cIj5cbiAgICAgICAgICB7ZXhwb3J0Q1NWfVxuICAgICAgICAgIHtpbnNlcnRCdG59XG4gICAgICAgICAge2RlbGV0ZUJ0bn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtzZWFyY2hUZXh0SW5wdXR9XG4gICAgICAgIDxOb3RpZmllciByZWY9XCJub3RpZmllclwiPjwvTm90aWZpZXI+XG4gICAgICAgIHttb2RhbH1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJlbmRlckluc2VydFJvd01vZGFsKG1vZGFsQ2xhc3NOYW1lKXtcbiAgICB2YXIgdmFsaWRhdGVTdGF0ZT10aGlzLnN0YXRlLnZhbGlkYXRlU3RhdGV8fHt9O1xuICAgIHZhciBpbnB1dEZpZWxkID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcChmdW5jdGlvbihjb2x1bW4sIGkpe1xuICAgICAgdmFyIGVkaXRhYmxlPWNvbHVtbi5lZGl0YWJsZSxcbiAgICAgICAgICBmb3JtYXQ9Y29sdW1uLmZvcm1hdCxcbiAgICAgICAgICBhdHRyPXtyZWY6Y29sdW1uLmZpZWxkK2kscGxhY2Vob2xkZXI6ZWRpdGFibGUucGxhY2Vob2xkZXI/ZWRpdGFibGUucGxhY2Vob2xkZXI6Y29sdW1uLm5hbWV9O1xuXG4gICAgICBpZihjb2x1bW4uYXV0b1ZhbHVlKXsvL3doZW4geW91IHdhbnQgc2FtZSBhdXRvIGdlbmVyYXRlIHZhbHVlIGFuZCBub3QgYWxsb3cgZWRpdCwgZXhhbXBsZSBJRCBmaWVsZFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBlcnJvcj12YWxpZGF0ZVN0YXRlW2NvbHVtbi5maWVsZF0/KDxzcGFuIGNsYXNzTmFtZT1cImhlbHAtYmxvY2sgYmctZGFuZ2VyXCI+e3ZhbGlkYXRlU3RhdGVbY29sdW1uLmZpZWxkXX08L3NwYW4+KTpudWxsO1xuXG4gICAgICAvLyBsZXQgZWRpdG9yID0gRWRpdG9yKGVkaXRhYmxlLGF0dHIsZm9ybWF0KTtcbiAgICAgIC8vIGlmKGVkaXRvci5wcm9wcy50eXBlICYmIGVkaXRvci5wcm9wcy50eXBlID09ICdjaGVja2JveCcpe1xuICAgICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIiBrZXk9e2NvbHVtbi5maWVsZH0+XG4gICAgICAgICAgPGxhYmVsPntjb2x1bW4ubmFtZX08L2xhYmVsPlxuICAgICAgICAgIHtFZGl0b3IoZWRpdGFibGUsYXR0cixmb3JtYXQsJycpfVxuICAgICAgICAgIHtlcnJvcn1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH0pO1xuICAgIHZhciBtb2RhbENsYXNzID0gY2xhc3NTZXQoXCJtb2RhbFwiLCBcImZhZGVcIiAsIG1vZGFsQ2xhc3NOYW1lLHtcbiAgICAgICdpbic6dGhpcy5zdGF0ZS5zaGFrZUVkaXRvcnx8dGhpcy5zdGF0ZS52YWxpZGF0ZVN0YXRlLy9oYWNrIHByZXZlbnQgYm9vdHN0cmFwIG1vZGFsIGhpZGUgYnkgcmVSZW5kZXJcbiAgICB9KTtcbiAgICB2YXIgZGlhbG9nQ2xhc3M9Y2xhc3NTZXQoXCJtb2RhbC1kaWFsb2dcIixcIm1vZGFsLXNtXCIse1xuICAgICAgXCJhbmltYXRlZFwiOnRoaXMuc3RhdGUuc2hha2VFZGl0b3IsXG4gICAgICBcInNoYWtlXCI6dGhpcy5zdGF0ZS5zaGFrZUVkaXRvclxuICAgIH0pO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHJlZj1cIm1vZGFsXCIgIGNsYXNzTmFtZT17bW9kYWxDbGFzc30gdGFiSW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtkaWFsb2dDbGFzc30+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+TmV3IFJlY29yZDwvaDQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICA8Zm9ybSByZWY9XCJmb3JtXCI+XG4gICAgICAgICAgICAgIHtpbnB1dEZpZWxkfVxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1pbmZvXCIgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlU2F2ZUJ0bkNsaWNrLmJpbmQodGhpcyl9PlNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuVG9vbEJhci5wcm9wVHlwZXMgPSB7XG4gIG9uQWRkUm93OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgb25Ecm9wUm93OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYyxcbiAgZW5hYmxlSW5zZXJ0OiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgZW5hYmxlRGVsZXRlOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgZW5hYmxlU2VhcmNoOiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgY29sdW1uczogUmVhY3QuUHJvcFR5cGVzLmFycmF5LFxuICBzZWFyY2hQbGFjZWhvbGRlcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuVG9vbEJhci5kZWZhdWx0UHJvcHMgPSB7XG4gIGVuYWJsZUluc2VydDogZmFsc2UsXG4gIGVuYWJsZURlbGV0ZTogZmFsc2UsXG4gIGVuYWJsZVNlYXJjaDogZmFsc2Vcbn1cbmV4cG9ydCBkZWZhdWx0IFRvb2xCYXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnN0IGZyb20gJy4vQ29uc3QnO1xuaW1wb3J0IGNsYXNzU2V0IGZyb20gJ2NsYXNzbmFtZXMnO1xuZXhwb3J0IGRlZmF1bHQge1xuXG4gIHJlbmRlclNvcnRDYXJldChvcmRlcikge1xuICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgd3JhcC5jbGFzc05hbWUgPSBcIm9yZGVyXCI7XG4gICAgaWYob3JkZXIgPT0gQ29uc3QuU09SVF9BU0MpIHdyYXAuY2xhc3NOYW1lICs9IFwiIGRyb3B1cFwiO1xuICAgIHZhciBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIGlubmVyLmNsYXNzTmFtZSA9IFwiY2FyZXRcIjtcbiAgICBpbm5lci5zdHlsZS5tYXJnaW4gPSBcIjEwcHggNXB4XCI7XG4gICAgd3JhcC5hcHBlbmRDaGlsZChpbm5lcik7XG4gICAgcmV0dXJuIHdyYXA7XG4gIH0sXG5cbiAgcmVuZGVyUmVhY3RTb3J0Q2FyZXQob3JkZXIpe1xuICAgIHZhciBvcmRlckNsYXNzID0gY2xhc3NTZXQoXCJvcmRlclwiLCB7XG4gICAgICAnZHJvcHVwJzogb3JkZXIgPT0gQ29uc3QuU09SVF9BU0NcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtvcmRlckNsYXNzfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY2FyZXRcIiBzdHlsZT17e21hcmdpbjogJzEwcHggNXB4J319Pjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9LFxuXG4gIGdldFNjcm9sbEJhcldpZHRoKCl7XG4gICAgdmFyIGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIGlubmVyLnN0eWxlLndpZHRoID0gXCIxMDAlXCI7XG4gICAgaW5uZXIuc3R5bGUuaGVpZ2h0ID0gXCIyMDBweFwiO1xuXG4gICAgdmFyIG91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgb3V0ZXIuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgb3V0ZXIuc3R5bGUudG9wID0gXCIwcHhcIjtcbiAgICBvdXRlci5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICBvdXRlci5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICBvdXRlci5zdHlsZS53aWR0aCA9IFwiMjAwcHhcIjtcbiAgICBvdXRlci5zdHlsZS5oZWlnaHQgPSBcIjE1MHB4XCI7XG4gICAgb3V0ZXIuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgIG91dGVyLmFwcGVuZENoaWxkIChpbm5lcik7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkIChvdXRlcik7XG4gICAgdmFyIHcxID0gaW5uZXIub2Zmc2V0V2lkdGg7XG4gICAgb3V0ZXIuc3R5bGUub3ZlcmZsb3cgPSAnc2Nyb2xsJztcbiAgICB2YXIgdzIgPSBpbm5lci5vZmZzZXRXaWR0aDtcbiAgICBpZiAodzEgPT0gdzIpIHcyID0gb3V0ZXIuY2xpZW50V2lkdGg7XG5cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkIChvdXRlcik7XG5cbiAgICByZXR1cm4gKHcxIC0gdzIpO1xuICB9XG5cbn07XG4iLCJpbXBvcnQgQm9vdHN0cmFwVGFibGUgZnJvbSAnLi9Cb290c3RyYXBUYWJsZSc7XG5pbXBvcnQgVGFibGVIZWFkZXJDb2x1bW4gZnJvbSAnLi9UYWJsZUhlYWRlckNvbHVtbic7XG5pbXBvcnQge1RhYmxlRGF0YVNldH0gZnJvbSAnLi9zdG9yZS9UYWJsZURhdGFTdG9yZSc7XG5cbmlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKXtcbiAgd2luZG93LkJvb3RzdHJhcFRhYmxlID0gQm9vdHN0cmFwVGFibGU7XG4gIHdpbmRvdy5UYWJsZUhlYWRlckNvbHVtbiA9IFRhYmxlSGVhZGVyQ29sdW1uO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICBCb290c3RyYXBUYWJsZSxcbiAgVGFibGVIZWFkZXJDb2x1bW4sXG4gIFRhYmxlRGF0YVNldFxufTtcbiJdfQ== diff --git a/demo/js/demo.js b/demo/js/demo.js index 1f492f21e..9798dfbdf 100644 --- a/demo/js/demo.js +++ b/demo/js/demo.js @@ -10,7 +10,10 @@ function addProducts(quantity) { products.push({ id: id, name: "Item name " + id, - price: 100 + i + price: 100 + i, + supplierId: id+2, + discount: "10%", + categoryId: "catorage-"+id+6 }); } } @@ -85,8 +88,11 @@ React.render( Product ID - Product Name - Product Price + Product Name + Product Price + Supplier ID + Discount(Percentage) + Category ID , document.getElementById("basic") );